From 0dbb6f44c538490323268542dded3fd4d8fc426c Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Tue, 3 Mar 2026 13:39:00 +0100 Subject: [PATCH 001/244] Add specific error for failed posix_fallocate call. This clarifies failed header initialization on filesystems with not enough space. Fixes: #978. --- lib/utils_device.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/utils_device.c b/lib/utils_device.c index 1cdbcc653..c40818ead 100644 --- a/lib/utils_device.c +++ b/lib/utils_device.c @@ -676,7 +676,7 @@ int device_fallocate(struct device *device, uint64_t size) return -EINVAL; if (!fstat(devfd, &st) && S_ISREG(st.st_mode) && - ((uint64_t)st.st_size >= size || !posix_fallocate(devfd, 0, size))) { + ((uint64_t)st.st_size >= size || !(r = posix_fallocate(devfd, 0, size)))) { r = 0; if (device->file_path && crypt_loop_resize(device->path)) r = -EINVAL; @@ -690,6 +690,7 @@ int device_check_size(struct crypt_device *cd, struct device *device, uint64_t req_offset, int falloc) { + int r; uint64_t dev_size; if (device_size(device, &dev_size)) { @@ -701,8 +702,17 @@ int device_check_size(struct crypt_device *cd, if (req_offset > dev_size) { /* If it is header file, increase its size */ - if (falloc && !device_fallocate(device, req_offset)) - return 0; + if (falloc) { + if (!(r = device_fallocate(device, req_offset))) + return 0; + + /* posix_fallocate returns positive errno on error */ + if (r > 0) { + log_err(cd, _("Cannot grow %s to %" PRIu64 " bytes (%s)."), + device_path(device), req_offset, strerror(r)); + return -EINVAL; + } + } log_err(cd, _("Device %s is too small. Need at least %" PRIu64 " bytes."), device_path(device), req_offset); From f632a158b02e9002612ba570fa4dc3d446bf0a44 Mon Sep 17 00:00:00 2001 From: Kristina Hanicova Date: Thu, 12 Mar 2026 16:19:43 +0100 Subject: [PATCH 002/244] ci: Temporarily remove failing WD disk --- .gitlab/ci/fedora-opal.yml | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/.gitlab/ci/fedora-opal.yml b/.gitlab/ci/fedora-opal.yml index 16cfcf816..be5f78f2e 100644 --- a/.gitlab/ci/fedora-opal.yml +++ b/.gitlab/ci/fedora-opal.yml @@ -118,21 +118,21 @@ test-rawhide-samsung980pro: PCI_PASSTHROUGH_DEVICE_ID: "a80a" # WD PC SN740 SDDQMQD-256G-1001 (on trantor machine) -test-rawhide-wdSN740: - rules: - - if: $CI_PROJECT_PATH != "cryptsetup/cryptsetup" - when: never - - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_BRANCH =~ /v2\..\.x$/ - - if: $CI_PIPELINE_SOURCE == "merge_request_event" - extends: - - .opal-template-fedora - tags: - - trantor - resource_group: wdSN740-on-trantor - interruptible: false - variables: - PCI_PASSTHROUGH_VENDOR_ID: "15b7" - PCI_PASSTHROUGH_DEVICE_ID: "5016" +# test-rawhide-wdSN740: +# rules: +# - if: $CI_PROJECT_PATH != "cryptsetup/cryptsetup" +# when: never +# - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_BRANCH =~ /v2\..\.x$/ +# - if: $CI_PIPELINE_SOURCE == "merge_request_event" +# extends: +# - .opal-template-fedora +# tags: +# - trantor +# resource_group: wdSN740-on-trantor +# interruptible: false +# variables: +# PCI_PASSTHROUGH_VENDOR_ID: "15b7" +# PCI_PASSTHROUGH_DEVICE_ID: "5016" # # UMIS RPETJ256MGE2MDQ (on tiber machine) # test-commit-rawhide-umis: From ce0bb25bab1411ea03f2ceee70f1f55d4ae3e6a5 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Fri, 13 Mar 2026 13:30:59 +0100 Subject: [PATCH 003/244] Minor code cleanup in crypt_resume_by_keyslot_context. --- lib/setup.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lib/setup.c b/lib/setup.c index 93c7ef5f8..acdd80970 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -4544,12 +4544,9 @@ int crypt_resume_by_keyslot_context(struct crypt_device *cd, goto out; r = resume_by_volume_key(cd, vk, name); - - crypt_free_volume_key(vk); - return r < 0 ? r : unlocked_keyslot; out: crypt_free_volume_key(vk); - return r; + return r < 0 ? r : unlocked_keyslot; } int crypt_resume_by_passphrase(struct crypt_device *cd, From 593b806109f9c60f2dec217cb4f20536cb64381b Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Fri, 13 Mar 2026 13:25:59 +0100 Subject: [PATCH 004/244] Check UUID of resumed device matches UUID stored in metadata. Adds check for matching active device UUID. Otherwise it is possible to resume device with invalid context, eventually resulting in data corruption (different VK gets loaded). Fixes: #849. --- lib/setup.c | 14 ++++++++++++++ tests/api-test-2.c | 32 ++++++++++++++++++++++++++++++++ tests/api-test.c | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 78 insertions(+) diff --git a/lib/setup.c b/lib/setup.c index acdd80970..afc9d8c10 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -4504,6 +4504,7 @@ int crypt_resume_by_keyslot_context(struct crypt_device *cd, int r; struct volume_key *vk = NULL; int unlocked_keyslot = -EINVAL; + struct crypt_dm_active_device dmd = {}; if (!name) return -EINVAL; @@ -4522,6 +4523,17 @@ int crypt_resume_by_keyslot_context(struct crypt_device *cd, return -EINVAL; } + r = dm_query_device(cd, name, DM_ACTIVE_UUID, &dmd); + if (r < 0) + return r; + + r = dm_uuid_cmp(dmd.uuid, LUKS_UUID(cd)); + if (r < 0) { + log_dbg(cd, "LUKS device header uuid: %s mismatches DM returned uuid %s", + LUKS_UUID(cd), dmd.uuid); + goto out; + } + if (isLUKS1(cd->type) && kc->get_luks1_volume_key) r = kc->get_luks1_volume_key(cd, kc, keyslot, &vk); else if (isLUKS2(cd->type) && kc->get_luks2_volume_key) @@ -4546,6 +4558,8 @@ int crypt_resume_by_keyslot_context(struct crypt_device *cd, r = resume_by_volume_key(cd, vk, name); out: crypt_free_volume_key(vk); + free(CONST_CAST(void*)dmd.uuid); + return r < 0 ? r : unlocked_keyslot; } diff --git a/tests/api-test-2.c b/tests/api-test-2.c index b188e5f53..3cf28e187 100644 --- a/tests/api-test-2.c +++ b/tests/api-test-2.c @@ -32,6 +32,7 @@ typedef int32_t key_serial_t; #include "libcryptsetup.h" #define DEVICE_1_UUID "28632274-8c8a-493f-835b-da802e1c576b" +#define DEVICE_2_UUID "a8632274-8c8a-493f-835b-da802e1c576b" #define DEVICE_EMPTY_name "crypt_zero" #define DEVICE_EMPTY DMDIR DEVICE_EMPTY_name #define DEVICE_ERROR_name "crypt_error" @@ -829,6 +830,37 @@ static void SuspendDevice(void) OK_(crypt_deactivate(cd, CDEVICE_1)); CRYPT_FREE(cd); + OK_(crypt_init(&cd, DEVICE_1)); + OK_(crypt_load(cd, CRYPT_LUKS2, NULL)); + + /* Create identical device except the UUID and VK */ + OK_(crypt_init(&cd2, DMDIR L_DEVICE_OK)); + OK_(set_fast_pbkdf(cd2)); + key[0] = ~key[0]; + OK_(crypt_format(cd2, CRYPT_LUKS2, crypt_get_cipher(cd), crypt_get_cipher_mode(cd), DEVICE_2_UUID, key, key_size, NULL)); + EQ_(0, crypt_keyslot_add_by_volume_key(cd2, 0, NULL, key_size, PASSPHRASE, strlen(PASSPHRASE))); + + /* Activate and suspend both devices */ + OK_(crypt_activate_by_passphrase(cd, CDEVICE_1, CRYPT_ANY_SLOT, KEY1, strlen(KEY1), 0)); + OK_(crypt_suspend(cd, CDEVICE_1)); + OK_(crypt_activate_by_volume_key(cd2, CDEVICE_2, NULL, key_size, 0)); + OK_(crypt_suspend(cd2, CDEVICE_2)); + + /* Switch context for resume (mismatching UUIDs) */ + FAIL_(crypt_resume_by_passphrase(cd, CDEVICE_2, 0, KEY1, strlen(KEY1)), "Mismatching UUID."); + OK_(crypt_get_active_device(cd2, CDEVICE_2, &cad)); + EQ_(CRYPT_ACTIVATE_SUSPENDED, cad.flags & CRYPT_ACTIVATE_SUSPENDED); + FAIL_(crypt_resume_by_passphrase(cd2, CDEVICE_1, 0, PASSPHRASE, strlen(PASSPHRASE)), "Mismatching UUID."); + OK_(crypt_get_active_device(cd, CDEVICE_1, &cad)); + EQ_(CRYPT_ACTIVATE_SUSPENDED, cad.flags & CRYPT_ACTIVATE_SUSPENDED); + + OK_(crypt_resume_by_passphrase(cd, CDEVICE_1, 0, KEY1, strlen(KEY1))); + OK_(crypt_resume_by_passphrase(cd2, CDEVICE_2, 0, PASSPHRASE, strlen(PASSPHRASE))); + OK_(crypt_deactivate(cd, CDEVICE_1)); + OK_(crypt_deactivate(cd2, CDEVICE_2)); + CRYPT_FREE(cd); + CRYPT_FREE(cd2); + _remove_keyfiles(); _cleanup_dmdevices(); } diff --git a/tests/api-test.c b/tests/api-test.c index 5fd07aea4..9b31c286a 100644 --- a/tests/api-test.c +++ b/tests/api-test.c @@ -22,6 +22,7 @@ #include "libcryptsetup.h" #define DEVICE_1_UUID "28632274-8c8a-493f-835b-da802e1c576b" +#define DEVICE_2_UUID "a8632274-8c8a-493f-835b-da802e1c576b" #define DEVICE_EMPTY_name "crypt_zero" #define DEVICE_EMPTY DMDIR DEVICE_EMPTY_name #define DEVICE_ERROR_name "crypt_error" @@ -785,6 +786,37 @@ static void SuspendDevice(void) OK_(crypt_deactivate(cd, CDEVICE_1)); CRYPT_FREE(cd); + OK_(crypt_init(&cd, DEVICE_1)); + OK_(crypt_load(cd, CRYPT_LUKS1, NULL)); + + /* Create identical device except the UUID and VK */ + OK_(crypt_init(&cd2, DMDIR L_DEVICE_OK)); + OK_(crypt_set_pbkdf_type(cd2, &fast_pbkdf)); + key[0] = ~key[0]; + OK_(crypt_format(cd2, CRYPT_LUKS1, crypt_get_cipher(cd), crypt_get_cipher_mode(cd), DEVICE_2_UUID, key, key_size, NULL)); + EQ_(0, crypt_keyslot_add_by_volume_key(cd2, 0, NULL, key_size, PASSPHRASE, strlen(PASSPHRASE))); + + /* Activate and suspend both devices */ + OK_(crypt_activate_by_passphrase(cd, CDEVICE_1, CRYPT_ANY_SLOT, KEY1, strlen(KEY1), 0)); + OK_(crypt_suspend(cd, CDEVICE_1)); + OK_(crypt_activate_by_volume_key(cd2, CDEVICE_2, NULL, key_size, 0)); + OK_(crypt_suspend(cd2, CDEVICE_2)); + + /* Switch context for resume (mismatching UUIDs) */ + FAIL_(crypt_resume_by_passphrase(cd, CDEVICE_2, 0, KEY1, strlen(KEY1)), "Mismatching UUID."); + OK_(crypt_get_active_device(cd2, CDEVICE_2, &cad)); + EQ_(CRYPT_ACTIVATE_SUSPENDED, cad.flags & CRYPT_ACTIVATE_SUSPENDED); + FAIL_(crypt_resume_by_passphrase(cd2, CDEVICE_1, 0, PASSPHRASE, strlen(PASSPHRASE)), "Mismatching UUID."); + OK_(crypt_get_active_device(cd, CDEVICE_1, &cad)); + EQ_(CRYPT_ACTIVATE_SUSPENDED, cad.flags & CRYPT_ACTIVATE_SUSPENDED); + + OK_(crypt_resume_by_passphrase(cd, CDEVICE_1, 0, KEY1, strlen(KEY1))); + OK_(crypt_resume_by_passphrase(cd2, CDEVICE_2, 0, PASSPHRASE, strlen(PASSPHRASE))); + OK_(crypt_deactivate(cd, CDEVICE_1)); + OK_(crypt_deactivate(cd2, CDEVICE_2)); + CRYPT_FREE(cd); + CRYPT_FREE(cd2); + _remove_keyfiles(); _cleanup_dmdevices(); } From 30a8e463e6d6208b7343fee3a09e84a71b85fd3b Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Thu, 31 Jul 2025 13:59:26 +0200 Subject: [PATCH 005/244] opal: add support for SUM OPAL2 feature. For devices supporting SUM (Single User Mode) OPAL2 feature this patch enables the SUM feature by default on OPAL2 activation during luksFormat. SUM aims to improve isolation and tightens access to specific Locking Range user data (hw-opal data segment) by limiting access to Lock/Unlock and Enable/Disable permissions only to User authority associated with the locking range. For example Admin1 authority can no longer unlock/disable SUM locking range and access plaintext data stored in it. It can only erase it via Erase method. --- lib/libcryptsetup.h | 2 + lib/luks2/hw_opal/hw_opal.c | 579 +++++++++++++++++++++++++++++++++--- lib/luks2/hw_opal/hw_opal.h | 3 +- lib/setup.c | 3 +- man/common_options.adoc | 9 +- src/cryptsetup.c | 20 +- src/cryptsetup_arg_list.h | 2 + src/cryptsetup_args.h | 1 + src/utils_arg_names.h | 1 + 9 files changed, 573 insertions(+), 47 deletions(-) diff --git a/lib/libcryptsetup.h b/lib/libcryptsetup.h index e972acd9a..4040187b5 100644 --- a/lib/libcryptsetup.h +++ b/lib/libcryptsetup.h @@ -747,6 +747,8 @@ uint32_t crypt_get_compatibility(struct crypt_device *cd); #define CRYPT_COMPAT_LEGACY_INTEGRITY_HMAC (UINT32_C(1) << 1) /** dm-integrity allow recalculating of volumes with HMAC keys (old kernels) */ #define CRYPT_COMPAT_LEGACY_INTEGRITY_RECALC (UINT32_C(1) << 2) +/** disable SUM (Single User Mode) when formatting LUKS2 device w/ HW encryption (OPAL2) */ +#define CRYPT_COMPAT_DISABLE_HW_OPAL_SUM (UINT32_C(1) << 3) /** * Convert to new type for already existing device. diff --git a/lib/luks2/hw_opal/hw_opal.c b/lib/luks2/hw_opal/hw_opal.c index fd57b1647..f32c9cb7f 100644 --- a/lib/luks2/hw_opal/hw_opal.c +++ b/lib/luks2/hw_opal/hw_opal.c @@ -31,6 +31,44 @@ #include #include +#ifndef IOC_OPAL_REACTIVATE_LSP + +/* + * Use following ioctl parameters and ioctl numbers + * from kernel sed-opal interface where the SUM extensions + * are implemented. If the current kernel (headers) does not + * have these extensions we can detect it runtime and turn off + * the SUM support. See kernel_opal_sum_supported() below. + */ + +struct opal_lr_react { + struct opal_key key; + struct opal_key new_admin_key; /* Set new Admin1 PIN if key_len is > 0 */ + __u8 num_lrs; /* + * Configure selected ranges (from lr[]) in SUM. + * If num_lrs > 0 the 'entire_table' must be 0 + */ + __u8 lr[OPAL_MAX_LRS]; + __u8 range_policy; /* Set RangePolicy parameter */ + __u8 entire_table; /* Set all locking objects in SUM */ + __u8 align[4]; /* Align to 8 byte boundary */ +}; + +struct opal_sum_ranges { + struct opal_key key; + __u8 num_lrs; + __u8 lr[OPAL_MAX_LRS]; + __u8 range_policy; + __u8 align[5]; /* Align to 8 byte boundary */ +}; + +#define IOC_OPAL_REACTIVATE_LSP _IOW('p', 242, struct opal_lr_react) +#define IOC_OPAL_LR_SET_START_LEN _IOW('p', 243, struct opal_user_lr_setup) +#define IOC_OPAL_ENABLE_DISABLE_LR _IOW('p', 244, struct opal_user_lr_setup) +#define IOC_OPAL_GET_SUM_STATUS _IOW('p', 245, struct opal_sum_ranges) + +#endif + /* Error codes are defined in the specification: * TCG_Storage_Architecture_Core_Spec_v2.01_r1.00 * Section 5.1.5: Method Status Codes @@ -118,6 +156,10 @@ static const char *opal_ioctl_to_string(unsigned long rq) case IOC_OPAL_LOCK_UNLOCK: return "LOCK_UNLOCK"; case IOC_OPAL_SAVE: return "SAVE"; case IOC_OPAL_PSID_REVERT_TPR: return "PSID_REVERT_TPR"; + case IOC_OPAL_REACTIVATE_LSP: return "REACTIVATE_LSP"; + case IOC_OPAL_LR_SET_START_LEN: return "LR_SETUP_START_LENGTH"; + case IOC_OPAL_ENABLE_DISABLE_LR: return "LR_ENABLE_DISABLE"; + case IOC_OPAL_GET_SUM_STATUS: return "GET_SUM_STATUS"; } assert(false && "unknown OPAL ioctl"); @@ -157,6 +199,15 @@ static void opal_ioctl_debug(struct crypt_device *cd, lrs->range_start, lrs->range_length, lrs->RLE, lrs->WLE, lrs->l_state); }; break; + case IOC_OPAL_GET_SUM_STATUS: { /* OUT */ + struct opal_sum_ranges *sr = args; + log_dbg(cd, "OPAL %s: lr_plcy: %" PRIu8 ", num_lrs:%" PRIu8 ", lr:" + "%"PRIu8"|%"PRIu8"|%"PRIu8"|%"PRIu8"|%"PRIu8"|%"PRIu8"|%"PRIu8"|%"PRIu8"|%"PRIu8, + cmd, sr->range_policy, sr->num_lrs, + sr->lr[0], sr->lr[1], sr->lr[2], sr->lr[3], sr->lr[4], + sr->lr[5], sr->lr[6], sr->lr[7], sr->lr[8]); + }; + break; } else switch (rq) { case IOC_OPAL_TAKE_OWNERSHIP: { /* IN */ log_dbg(cd, "OPAL %s", cmd); @@ -233,6 +284,36 @@ static void opal_ioctl_debug(struct crypt_device *cd, cmd, key->lr); }; break; + case IOC_OPAL_REACTIVATE_LSP: { /* IN */ + struct opal_lr_react *act = args; + log_dbg(cd, "OPAL %s: new_admin_key:%" PRIu8 ", lck_table:%" PRIu8 ", lr_plcy:%" PRIu8 + ", num_lrs:%" PRIu8 ", lr:" + "%"PRIu8"|%"PRIu8"|%"PRIu8"|%"PRIu8"|%"PRIu8"|%"PRIu8"|%"PRIu8"|%"PRIu8"|%"PRIu8, + cmd, act->new_admin_key.key_len != 0, act->entire_table, act->range_policy, + act->num_lrs, act->lr[0], act->lr[1], act->lr[2], act->lr[3], act->lr[4], + act->lr[5], act->lr[6], act->lr[7], act->lr[8]); + }; + break; + case IOC_OPAL_LR_SET_START_LEN: { /* IN */ + struct opal_user_lr_setup *lrs = args; + log_dbg(cd, "OPAL %s: sum:%" PRIu32 ", who:%" PRIu32 ", lr:%" PRIu8 + ", start:%" PRIu64 ", length:%" PRIu64, + cmd, lrs->session.sum, lrs->session.who, lrs->session.opal_key.lr, + lrs->range_start, lrs->range_length); + }; + break; + case IOC_OPAL_ENABLE_DISABLE_LR: { /* IN */ + struct opal_user_lr_setup *lrs = args; + log_dbg(cd, "OPAL %s: sum:%" PRIu32 ", who:%" PRIu32 ", lr:%" PRIu8 + ", rle:%" PRIu32 ", rwe:%" PRIu32, + cmd, lrs->session.sum, lrs->session.who, lrs->session.opal_key.lr, + lrs->RLE, lrs->WLE); + }; + break; + case IOC_OPAL_GET_SUM_STATUS: { /* IN */ + log_dbg(cd, "OPAL %s", cmd); + }; + break; } } @@ -382,10 +463,17 @@ static int opal_range_check_attributes_fd(struct crypt_device *cd, return r; } -static int opal_query_status(struct crypt_device *cd, struct device *dev, unsigned expected) +static int opal_query_status_fd(struct crypt_device *cd, int fd, unsigned expected) { struct opal_status st = { }; - int fd, r; + int r = opal_ioctl(cd, fd, IOC_OPAL_GET_STATUS, &st); + + return r < 0 ? -EINVAL : (st.flags & expected) ? 1 : 0; +} + +static int opal_query_status(struct crypt_device *cd, struct device *dev, unsigned expected) +{ + int fd; assert(cd); assert(dev); @@ -394,9 +482,7 @@ static int opal_query_status(struct crypt_device *cd, struct device *dev, unsign if (fd < 0) return -EIO; - r = opal_ioctl(cd, fd, IOC_OPAL_GET_STATUS, &st); - - return r < 0 ? -EINVAL : (st.flags & expected) ? 1 : 0; + return opal_query_status_fd(cd, fd, expected); } static int opal_enabled(struct crypt_device *cd, struct device *dev) @@ -404,11 +490,275 @@ static int opal_enabled(struct crypt_device *cd, struct device *dev) return opal_query_status(cd, dev, OPAL_FL_LOCKING_ENABLED); } -static int opal_activate_lsp(struct crypt_device *cd, int fd, - const void *admin_key, size_t admin_key_len) +/* fd contains open descriptor for a device with SUM support advertised */ +static int kernel_opal_sum_supported(struct crypt_device *cd, int fd) +{ + static int kernel_sum_supported = 0; + static bool checked = false; + + int r; + struct opal_sum_ranges sum_ranges_anybody = {}; + + if (!checked) { + /* + * Check only if kernel recognizes IOC_OPAL_GET_SUM_STATUS ioctl number. + * Irrelevant what OPAL2 sub-system eventually returned. + */ + r = opal_ioctl(cd, fd, IOC_OPAL_GET_SUM_STATUS, &sum_ranges_anybody); + if (r >= 0) + kernel_sum_supported = 1; + + checked = true; + } + + return kernel_sum_supported; +} + +static int opal_sum_supported(struct crypt_device *cd, struct device *dev) +{ + int r, fd; + + fd = device_open(cd, dev, O_RDONLY); + if (fd < 0) + return -EIO; + + /* check if kernel recognizes the device as SUM capable */ + r = opal_query_status_fd(cd, fd, OPAL_FL_SUM_SUPPORTED); + if (r < 0) + return r; + + if (r) { + /* device declared SUM support, now check if kernel supports necessary + * ioctl numbers/structures added post original sed-opal interface */ + r = kernel_opal_sum_supported(cd, fd); + } + + return r; +} + +static int opal_get_sum_ranges_anybody(struct crypt_device *cd, int fd, struct opal_sum_ranges *r_sum_ranges) +{ + int r; + + assert(r_sum_ranges); + + r = opal_ioctl(cd, fd, IOC_OPAL_GET_SUM_STATUS, r_sum_ranges); + if (r < 0) + return -EINVAL; + if (r == OPAL_STATUS_NOT_AUTHORIZED) { + log_dbg(cd, "Can not read Locking table info as Anybody authority. Retry with Admin1"); + return -EPERM; + } + if (r != OPAL_STATUS_SUCCESS) { + log_dbg(cd, "Failed to get SUM ranges status on OPAL device '%s': %s", + crypt_get_device_name(cd), opal_status_to_string(r)); + return -EINVAL; + } + + return 0; +} + +static int opal_verify_sum_deactivated(struct crypt_device *cd, int fd) +{ + int r; + struct opal_sum_ranges sum_ranges = {}; + + r = opal_get_sum_ranges_anybody(cd, fd, &sum_ranges); + if (r) + return r; + + return sum_ranges.num_lrs != 0; +} + +static int opal_verify_sum_activated(struct crypt_device *cd, int fd, bool admin_range_policy) +{ + int i, j, r; + struct opal_sum_ranges sum_ranges = {}; + + r = opal_get_sum_ranges_anybody(cd, fd, &sum_ranges); + if (r) + return r; + + if (admin_range_policy != (sum_ranges.range_policy > 0)) { + log_dbg(cd, "OPAL device did not set range policy flag correctly."); + return 1; + } + + if (sum_ranges.num_lrs != 8) { + log_dbg(cd, "OPAL device reports unexpected SUM ranges count."); + return 1; + } + + for (i = 1; i < 9; i++) { + for (j = 0; j < sum_ranges.num_lrs; j++) { + if (i == sum_ranges.lr[j]) + break; + } + if (j >= sum_ranges.num_lrs) { + log_dbg(cd, "Locking range %u not set for SUM.", i); + return 1; + } + } + + return 0; +} + +/* Returns: + * - zero on success + * - negative errno on unrecoverable error + * - value > 0 if device did not conform with requested operation (i.e.: did not + * set range policy correctly) + */ +static int opal_sum_reactivate(struct crypt_device *cd, int fd, struct opal_lr_react *reactivate) +{ + int r; + + assert(reactivate); + + r = opal_ioctl(cd, fd, IOC_OPAL_REACTIVATE_LSP, reactivate); + if (r < 0) + return -EINVAL; + if (r == OPAL_STATUS_FAIL) + log_dbg(cd, "Failed to reactivate in SUM. There is at least one locking range enabled."); + if (r != OPAL_STATUS_SUCCESS) { + log_dbg(cd, "Failed to reactivate OPAL device '%s': %s", + crypt_get_device_name(cd), opal_status_to_string(r)); + return -EINVAL; + } + + if (reactivate->num_lrs) { + r = opal_verify_sum_activated(cd, fd, reactivate->range_policy > 0); + if (r < 0) { + /* + * GET_SUM_STATUS ioctl failed with unexpected error after successful + * REACTIVATE invocation. There nothing we can do about it. + */ + log_err(cd, _("The device declared support for OPAL Single User Mode (SUM) but behaved unexpectedly.")); + log_err(cd, _("Revert device to factory settings and try to format with --disable-sum option.")); + } + return r; + } + + return opal_verify_sum_deactivated(cd, fd); +} + +static int opal_sum_setup(struct crypt_device *cd, int fd, const void *admin_key, + size_t admin_key_len) +{ + int r; + struct opal_lr_react *reactivate = crypt_safe_alloc(sizeof(*reactivate)); + + if (!reactivate) + return -ENOMEM; + + *reactivate = (struct opal_lr_react) { + .key = { + .key_len = admin_key_len, + }, + .num_lrs = 8, + .lr = { 1, 2, 3, 4, 5, 6, 7, 8 }, + .range_policy = 1, + }; + crypt_safe_memcpy(reactivate->key.key, admin_key, admin_key_len); + + /* + * By default we Reactivate device with SUM enabled and RangeStartLengthPolicy + * flag set to 1. But some devices do not conform with SUM feature standard + * and do not set attributes in accord with the request... + */ + r = opal_sum_reactivate(cd, fd, reactivate); + if (r > 0) { + /* ... so, retry again with range RangeStartLengthPolicy disabled... */ + reactivate->range_policy = 0; + r = opal_sum_reactivate(cd, fd, reactivate); + } + if (r > 0) { + /* ... or disable SUM completely */ + reactivate->num_lrs = 0; + memset(reactivate->lr, 0, sizeof(reactivate->lr)); + r = opal_sum_reactivate(cd, fd, reactivate); + } + + crypt_safe_free(reactivate); + + return r > 0 ? -EINVAL : r; +} + +static int opal_get_sum_status_anybody(struct crypt_device *cd, int fd, uint32_t segment_number, + uint8_t *r_policy, uint8_t *r_segment_in_sum) +{ + int i, r; + struct opal_sum_ranges sum_ranges = {}; + + r = opal_get_sum_ranges_anybody(cd, fd, &sum_ranges); + if (r < 0) + return r; + + if (r_segment_in_sum) { + *r_segment_in_sum = 0; + for (i = 0; i < sum_ranges.num_lrs ; i++) { + if (sum_ranges.lr[i] == segment_number) { + *r_segment_in_sum = 1; + break; + } + } + } + + if (r_policy) + *r_policy = sum_ranges.range_policy; + + return 0; +} + +static int opal_sum_range_start_length(struct crypt_device *cd, int fd, + struct opal_user_lr_setup *setup) +{ + int r; + + assert(setup); + + r = opal_ioctl(cd, fd, IOC_OPAL_LR_SET_START_LEN, setup); + if (r < 0) + return -EINVAL; + if (r != OPAL_STATUS_SUCCESS) { + log_dbg(cd, "Failed to setup locking range of length %llu at offset %llu on OPAL device '%s': %s", + setup->range_length, setup->range_start, crypt_get_device_name(cd), + opal_status_to_string(r)); + r = -EINVAL; + } + + return r; +} + +static int opal_sum_range_enable(struct crypt_device *cd, int fd, + struct opal_user_lr_setup *setup) +{ + int r; + + assert(setup); + + r = opal_ioctl(cd, fd, IOC_OPAL_ENABLE_DISABLE_LR, setup); + if (r < 0) + return -EINVAL; + if (r != OPAL_STATUS_SUCCESS) { + log_dbg(cd, "Failed to enable locking range on OPAL device '%s': %s", + crypt_get_device_name(cd), opal_status_to_string(r)); + r = -EINVAL; + } + + return r; +} + +static int opal_activate_lsp(struct crypt_device *cd, int fd, uint32_t sum, + const void *admin_key, size_t admin_key_len, + uint8_t *r_range_policy, uint8_t *r_segment_in_sum) { int r; struct opal_lr_act *activate = crypt_safe_alloc(sizeof(*activate)); + uint8_t range_policy = 0, segment_in_sum = 0; + + assert(r_range_policy); + assert(r_segment_in_sum); if (!activate) return -ENOMEM; @@ -448,20 +798,48 @@ static int opal_activate_lsp(struct crypt_device *cd, int fd, log_dbg(cd, "Failed to activate OPAL device '%s': %s", crypt_get_device_name(cd), opal_status_to_string(r)); r = -EINVAL; + goto out; + } + + /* + * We can not activate LSP directly in SUM since kernel does + * not support setting range policy in 'Activate' directly + * in sed-opal iface. + * + * Some devices does not support SUM correctly. We have to + * check if the device has set SUM parameters accordingly. + * + * If not we drop the RangePolicy flag first. If it does not + * help we disable the SUM via Reactivate completely. + */ + if (sum) { + r = opal_sum_setup(cd, fd, admin_key, admin_key_len); + if (!r) /* check the actual SUM state */ + r = opal_get_sum_status_anybody(cd, fd, 1, &range_policy, &segment_in_sum); + if (r < 0) + goto out; } + + *r_range_policy = range_policy; + *r_segment_in_sum = segment_in_sum; out: crypt_safe_free(activate); return r; } -static int opal_reuse_active_lsp(struct crypt_device *cd, int fd, +static int opal_reuse_active_lsp(struct crypt_device *cd, int fd, uint32_t sum, uint32_t segment_number, - const void *admin_key, size_t admin_key_len) + const void *admin_key, size_t admin_key_len, + uint8_t *r_range_policy, uint8_t *r_segment_in_sum) { int r; + uint8_t range_policy = 0, segment_in_sum = 0; struct opal_session_info *user_session = crypt_safe_alloc(sizeof(*user_session)); + assert(r_range_policy); + assert(r_segment_in_sum); + if (!user_session) return -ENOMEM; @@ -473,26 +851,47 @@ static int opal_reuse_active_lsp(struct crypt_device *cd, int fd, }, }; + if (sum) { + /* If device supports SUM let's get list of SUM enabled LRs */ + r = opal_get_sum_status_anybody(cd, fd, segment_number, &range_policy, &segment_in_sum); + if (r < 0) + return r; + } + /* If it is already enabled, wipe the locking range first */ crypt_safe_memcpy(user_session->opal_key.key, admin_key, admin_key_len); - r = opal_ioctl(cd, fd, IOC_OPAL_SECURE_ERASE_LR, user_session); - if (r < 0) - goto out; + if (segment_in_sum) { + /* If segment is already in SUM we need to call Erase method */ + r = opal_ioctl(cd, fd, IOC_OPAL_ERASE_LR, user_session); + if (r > OPAL_STATUS_SUCCESS) + log_dbg(cd, "Failed to erase SUM OPAL locking range %u on device '%s': %s", + segment_number, crypt_get_device_name(cd), opal_status_to_string(r)); + } else { + r = opal_ioctl(cd, fd, IOC_OPAL_SECURE_ERASE_LR, user_session); + if (r > OPAL_STATUS_SUCCESS) + log_dbg(cd, "Failed to reset (secure erase) OPAL locking range %u on device '%s': %s", + segment_number, crypt_get_device_name(cd), opal_status_to_string(r)); + } + if (r != OPAL_STATUS_SUCCESS) { - log_dbg(cd, "Failed to reset (secure erase) OPAL locking range %u on device '%s': %s", - segment_number, crypt_get_device_name(cd), opal_status_to_string(r)); r = -EINVAL; + goto out; } + + *r_range_policy = range_policy; + *r_segment_in_sum = segment_in_sum; out: crypt_safe_free(user_session); return r; } -static int opal_setup_range(struct crypt_device *cd, int fd, uint32_t segment_number, +static int opal_setup_range(struct crypt_device *cd, int fd, uint32_t segment_in_sum, + uint32_t range_policy, uint32_t segment_number, uint64_t range_start_blocks, uint64_t range_length_blocks, - const void *admin_key, size_t admin_key_len) + const struct volume_key *user_vk, const void *admin_key, + size_t admin_key_len) { int r; struct opal_user_lr_setup *setup = crypt_safe_alloc(sizeof(*setup)); @@ -517,16 +916,58 @@ static int opal_setup_range(struct crypt_device *cd, int fd, uint32_t segment_nu }, }, }; + crypt_safe_memcpy(setup->session.opal_key.key, admin_key, admin_key_len); - r = opal_ioctl(cd, fd, IOC_OPAL_LR_SETUP, setup); - if (r < 0) - goto out; - if (r != OPAL_STATUS_SUCCESS) { - log_dbg(cd, "Failed to setup locking range of length %llu at offset %llu on OPAL device '%s': %s", - setup->range_length, setup->range_start, crypt_get_device_name(cd), - opal_status_to_string(r)); - r = -EINVAL; + /* + * In SUM if PolicyRange is set to 1, Admin1 authority remains + * in control of each individual locking range offset and length attributes. + * But the User authority associated with the locking range is still + * the sole owner of RLE, WLE and Lock/Unlock permissions. Therefore, + * the Admin1 credentials are used to setup Offset and Length + * only and User credentias are used for enabling RLE and WLE + * fields. + */ + if (segment_in_sum && range_policy) { + r = opal_sum_range_start_length(cd, fd, setup); + if (r < 0) { + /* + * Device advertises PolicyRange flag but does not allow Admin1 to + * setup SUM locking range offset and length. It's broken. + */ + log_err(cd, _("The device declared support for OPAL Single User Mode (SUM) but behaved unexpectedly.")); + log_err(cd, _("Revert device to factory settings and try to format with --disable-sum option.")); + goto out; + } + } + + if (segment_in_sum) { + /* Switch to User credentials for the remaining method calls*/ + setup->session = (struct opal_session_info) { + .sum = 1, + .opal_key = { + .key_len = crypt_volume_key_length(user_vk), + .lr = segment_number + } + }; + crypt_safe_memcpy(setup->session.opal_key.key, crypt_volume_key_get_key(user_vk), + crypt_volume_key_length(user_vk)); + } + + if (segment_in_sum && range_policy) { + /* Enable the Locking Range in SUM */ + r = opal_sum_range_enable(cd, fd, setup); + } else { + /* Set the LR in single step since the RangePolicy flag is not set */ + r = opal_ioctl(cd, fd, IOC_OPAL_LR_SETUP, setup); + if (r < 0) + goto out; + if (r != OPAL_STATUS_SUCCESS) { + log_dbg(cd, "Failed to setup locking range of length %llu at offset %llu on OPAL device '%s': %s", + setup->range_length, setup->range_start, crypt_get_device_name(cd), + opal_status_to_string(r)); + r = -EINVAL; + } } out: crypt_safe_free(setup); @@ -601,11 +1042,13 @@ int opal_setup_ranges(struct crypt_device *cd, uint32_t opal_block_bytes, uint32_t segment_number, const void *admin_key, - size_t admin_key_len) + size_t admin_key_len, + bool disable_sum) { struct opal_lock_unlock *lock = NULL; struct opal_new_pw *new_pw = NULL; int r, fd; + uint8_t sum_supported, range_policy = 0, segment_in_sum = 0; assert(cd); assert(dev); @@ -625,33 +1068,59 @@ int opal_setup_ranges(struct crypt_device *cd, if (fd < 0) return -EIO; + /* Not all drivers support Single User Mode, so query and adjust the setup accordingly */ + r = opal_sum_supported(cd, dev); + if (r < 0) + return r; + /* sum supported */ + sum_supported = !!r; + r = opal_enabled(cd, dev); if (r < 0) return r; + /* If device was already activated with SUM we do not plan to disable it */ + if (r && sum_supported && disable_sum) + log_err(cd, _("Device %s already activated for HW OPAL. Flag --disable-sum ignored."), + crypt_get_device_name(cd)); + /* If OPAL has never been enabled, we need to take ownership and do basic setup first */ if (r == 0) - r = opal_activate_lsp(cd, fd, admin_key, admin_key_len); + r = opal_activate_lsp(cd, fd, sum_supported && !disable_sum, admin_key, admin_key_len, + &range_policy, &segment_in_sum); else - r = opal_reuse_active_lsp(cd, fd, segment_number, admin_key, admin_key_len); + r = opal_reuse_active_lsp(cd, fd, sum_supported, segment_number, admin_key, + admin_key_len, &range_policy, &segment_in_sum); if (r < 0) goto out; - r = opal_setup_user(cd, fd, segment_number, admin_key, admin_key_len); - if (r < 0) - goto out; + /* In SUM, user is already active and properly assigned to LR */ + if (!segment_in_sum) { + r = opal_setup_user(cd, fd, segment_number, admin_key, admin_key_len); + if (r < 0) + goto out; + } new_pw = crypt_safe_alloc(sizeof(struct opal_new_pw)); if (!new_pw) { r = -ENOMEM; goto out; } + + /* + * In SUM we have to authenticate using the User authority (associated with the locking + * range) even though it was just created and it has empty passhrase (per OPAL2 SUM std.). + * + * Admin authority can not change User authority passphrase. It would defeat the purpose + * of the SUM extension. + */ *new_pw = (struct opal_new_pw) { .session = { - .who = OPAL_ADMIN1, + .sum = segment_in_sum, + .who = segment_in_sum ? segment_number + 1 : OPAL_ADMIN1, .opal_key = { .lr = segment_number, - .key_len = admin_key_len, + .key_len = segment_in_sum ? 0 : admin_key_len, }, }, .new_user_pw = { @@ -664,7 +1133,8 @@ int opal_setup_ranges(struct crypt_device *cd, }; crypt_safe_memcpy(new_pw->new_user_pw.opal_key.key, crypt_volume_key_get_key(vk), crypt_volume_key_length(vk)); - crypt_safe_memcpy(new_pw->session.opal_key.key, admin_key, admin_key_len); + if (!segment_in_sum) + crypt_safe_memcpy(new_pw->session.opal_key.key, admin_key, admin_key_len); r = opal_ioctl(cd, fd, IOC_OPAL_SET_PW, new_pw); if (r < 0) @@ -676,8 +1146,8 @@ int opal_setup_ranges(struct crypt_device *cd, goto out; } - r = opal_setup_range(cd, fd, segment_number, range_start_blocks, range_length_blocks, - admin_key, admin_key_len); + r = opal_setup_range(cd, fd, segment_in_sum, range_policy, segment_number, + range_start_blocks, range_length_blocks, vk, admin_key, admin_key_len); if (r < 0) goto out; @@ -885,9 +1355,11 @@ int opal_reset_segment(struct crypt_device *cd, const char *password, size_t password_len) { + int r, fd; struct opal_session_info *user_session = NULL; struct opal_user_lr_setup *setup = NULL; - int r, fd; + uint32_t sum_supported; + uint8_t segment_in_sum = 0; assert(cd); assert(dev); @@ -899,6 +1371,18 @@ int opal_reset_segment(struct crypt_device *cd, if (opal_enabled(cd, dev) <= 0) return -EINVAL; + /* Not all drivers support Single User Mode, so query and adjust the setup accordingly */ + r = opal_sum_supported(cd, dev); + if (r < 0) + return r; + sum_supported = !!r; + + fd = device_open(cd, dev, O_RDONLY); + if (fd < 0) { + r = -EIO; + goto out; + } + user_session = crypt_safe_alloc(sizeof(struct opal_session_info)); if (!user_session) return -ENOMEM; @@ -911,9 +1395,21 @@ int opal_reset_segment(struct crypt_device *cd, }; crypt_safe_memcpy(user_session->opal_key.key, password, password_len); - fd = device_open(cd, dev, O_RDONLY); - if (fd < 0) { - r = -EIO; + if (sum_supported) { + r = opal_get_sum_status_anybody(cd, fd, segment_number, NULL, &segment_in_sum); + if (r < 0) + goto out; + } + + if (segment_in_sum) { + r = opal_ioctl(cd, fd, IOC_OPAL_ERASE_LR, user_session); + if (r != OPAL_STATUS_SUCCESS) { + log_dbg(cd, "Failed to erase SUM OPAL locking range %u on device '%s': %s", + segment_number, crypt_get_device_name(cd), opal_status_to_string(r)); + r = -EINVAL; + } + + /* Locking range in SUM is properly disabled after 'Erase' method. Exit early. */ goto out; } @@ -934,8 +1430,6 @@ int opal_reset_segment(struct crypt_device *cd, goto out; } *setup = (struct opal_user_lr_setup) { - .range_start = 0, - .range_length = 0, .session = { .who = OPAL_ADMIN1, .opal_key = user_session->opal_key, @@ -1071,7 +1565,8 @@ int opal_setup_ranges(struct crypt_device *cd, uint32_t opal_block_bytes, uint32_t segment_number, const void *admin_key, - size_t admin_key_len) + size_t admin_key_len, + bool disable_sum) { return -ENOTSUP; } diff --git a/lib/luks2/hw_opal/hw_opal.h b/lib/luks2/hw_opal/hw_opal.h index f0058a597..135b5a3e5 100644 --- a/lib/luks2/hw_opal/hw_opal.h +++ b/lib/luks2/hw_opal/hw_opal.h @@ -22,7 +22,8 @@ int opal_setup_ranges(struct crypt_device *cd, uint32_t opal_block_bytes, uint32_t segment_number, const void *admin_key, - size_t admin_key_len); + size_t admin_key_len, + bool disable_sum); int opal_lock(struct crypt_device *cd, struct device *dev, uint32_t segment_number); int opal_unlock(struct crypt_device *cd, struct device *dev, diff --git a/lib/setup.c b/lib/setup.c index afc9d8c10..cfc78e500 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -2532,7 +2532,8 @@ int crypt_format_luks2_opal(struct crypt_device *cd, r = opal_setup_ranges(cd, crypt_data_device(cd), user_key ?: cd->volume_key, range_offset_blocks, range_size_bytes / opal_block_bytes, opal_block_bytes, opal_segment_number, - opal_params->admin_key, opal_params->admin_key_size); + opal_params->admin_key, opal_params->admin_key_size, + !!(cd->compatibility & CRYPT_COMPAT_DISABLE_HW_OPAL_SUM)); if (r < 0) { if (r == -EPERM) log_err(cd, _("Incorrect OPAL Admin key.")); diff --git a/man/common_options.adoc b/man/common_options.adoc index 31ca962af..0b00cb6e9 100644 --- a/man/common_options.adoc +++ b/man/common_options.adoc @@ -156,6 +156,14 @@ endif::[] *WARNING:* Do not use this option unless you run cryptsetup in a restricted environment where locking is impossible to perform (where /run directory cannot be used). endif::[] +ifdef::ACTION_LUKSFORMAT[] +*--disable-sum*:: +Disable SUM (Single User Mode) OPAL2 extension during luksFormat with HW encryption profile (OPAL2). +The option affects only devices not yet enabled for OPAL2 encryption (in factory settings). For devices +with already activated OPAL2 HW encryption profile the option is ignored. The option must be combined +with --hw-opal or --hw-opal-only options. +endif::[] + ifdef::ACTION_OPEN,ACTION_TCRYPTDUMP[] *--disable-veracrypt*:: This option can be used to disable VeraCrypt compatible mode (only TrueCrypt devices are recognized). @@ -335,7 +343,6 @@ LUKS2 format only manages the locking range unlock key. This option enables HW-based data encryption managed by the SED OPAL drive only. + Please note that with OPAL-only (--hw-opal-only) encryption, the configured OPAL administrator PIN (passphrase) allows unlocking all configured locking ranges without LUKS keyslot decryption (without knowledge of LUKS passphrase). -Because of many observed problems with compatibility, cryptsetup currently DOES NOT use OPAL single-user mode, which would allow such decoupling of OPAL admin PIN access. endif::[] ifdef::ACTION_REENCRYPT[] diff --git a/src/cryptsetup.c b/src/cryptsetup.c index b06cf1cd4..2aa24ec9a 100644 --- a/src/cryptsetup.c +++ b/src/cryptsetup.c @@ -12,6 +12,7 @@ #include "cryptsetup.h" #include "cryptsetup_args.h" +#include "libcryptsetup.h" #include "utils_luks.h" static char *keyfiles[MAX_KEYFILES]; @@ -1446,6 +1447,19 @@ static int strcmp_or_null(const char *str, const char *expected) return !str ? 0 : strcmp(str, expected); } +static void set_compatibility_flags(struct crypt_device *cd) +{ + uint32_t flags = 0; + + if (ARG_SET(OPT_INTEGRITY_LEGACY_PADDING_ID)) + flags = CRYPT_COMPAT_LEGACY_INTEGRITY_PADDING; + if (ARG_SET(OPT_DISABLE_SUM_ID)) + flags |= CRYPT_COMPAT_DISABLE_HW_OPAL_SUM; + + if (flags) + crypt_set_compatibility(cd, flags); +} + int luksFormat(struct crypt_device **r_cd, struct crypt_keyslot_context **r_kc) { bool wipe_signatures = false; @@ -1661,8 +1675,7 @@ int luksFormat(struct crypt_device **r_cd, struct crypt_keyslot_context **r_kc) ((r = tools_wipe_all_signatures(header_device, true, false)) < 0)) goto out; - if (ARG_SET(OPT_INTEGRITY_LEGACY_PADDING_ID)) - crypt_set_compatibility(cd, CRYPT_COMPAT_LEGACY_INTEGRITY_PADDING); + set_compatibility_flags(cd); if (ARG_SET(OPT_HW_OPAL_ID) || ARG_SET(OPT_HW_OPAL_ONLY_ID)) r = crypt_format_luks2_opal(cd, @@ -3418,6 +3431,9 @@ static const char *verify_format(void) if (ARG_SET(OPT_USE_RANDOM_ID) && ARG_SET(OPT_USE_URANDOM_ID)) return _("Only one of --use-[u]random options is allowed."); + if (ARG_SET(OPT_DISABLE_SUM_ID) && !ARG_SET(OPT_HW_OPAL_ID) && !ARG_SET(OPT_HW_OPAL_ONLY_ID)) + return _("Option --disable-sum must be used with --hw-opal or --hw-opal-only"); + return NULL; } diff --git a/src/cryptsetup_arg_list.h b/src/cryptsetup_arg_list.h index eebe749ee..674d37475 100644 --- a/src/cryptsetup_arg_list.h +++ b/src/cryptsetup_arg_list.h @@ -38,6 +38,8 @@ ARG(OPT_DISABLE_KEYRING, '\0', POPT_ARG_NONE, N_("Disable loading volume keys vi ARG(OPT_DISABLE_LOCKS, '\0', POPT_ARG_NONE, N_("Disable locking of on-disk metadata"), NULL, CRYPT_ARG_BOOL, {}, {}) +ARG(OPT_DISABLE_SUM, '\0', POPT_ARG_NONE, N_("Disable OPAL2 SUM (Single User Mode)"), NULL, CRYPT_ARG_BOOL, {}, OPT_DISABLE_SUM_ACTIONS) + ARG(OPT_DISABLE_VERACRYPT, '\0', POPT_ARG_NONE, N_("Do not scan for VeraCrypt compatible device"), NULL, CRYPT_ARG_BOOL, {}, OPT_DISABLE_VERACRYPT_ACTIONS) ARG(OPT_DUMP_JSON, '\0', POPT_ARG_NONE, N_("Dump info in JSON format (LUKS2 only)"), NULL, CRYPT_ARG_BOOL, {}, {}) diff --git a/src/cryptsetup_args.h b/src/cryptsetup_args.h index 43926f997..2009e24f3 100644 --- a/src/cryptsetup_args.h +++ b/src/cryptsetup_args.h @@ -46,6 +46,7 @@ #define OPT_DEFERRED_ACTIONS { CLOSE_ACTION } #define OPT_DEVICE_SIZE_ACTIONS { OPEN_ACTION, RESIZE_ACTION, REENCRYPT_ACTION } #define OPT_DISABLE_BLKID_ACTIONS { FORMAT_ACTION, REENCRYPT_ACTION } +#define OPT_DISABLE_SUM_ACTIONS { FORMAT_ACTION } #define OPT_DISABLE_VERACRYPT_ACTIONS { OPEN_ACTION, TCRYPTDUMP_ACTION } #define OPT_ERASE_ACTIONS { ERASE_ACTION } #define OPT_EXTERNAL_TOKENS_PATH_ACTIONS { RESIZE_ACTION, OPEN_ACTION, ADDKEY_ACTION, LUKSDUMP_ACTION, RESUME_ACTION, TOKEN_ACTION } diff --git a/src/utils_arg_names.h b/src/utils_arg_names.h index a01419d31..89d8b75df 100644 --- a/src/utils_arg_names.h +++ b/src/utils_arg_names.h @@ -32,6 +32,7 @@ #define OPT_DISABLE_EXTERNAL_TOKENS "disable-external-tokens" #define OPT_DISABLE_KEYRING "disable-keyring" #define OPT_DISABLE_LOCKS "disable-locks" +#define OPT_DISABLE_SUM "disable-sum" #define OPT_DISABLE_VERACRYPT "disable-veracrypt" #define OPT_DUMP_JSON "dump-json-metadata" #define OPT_DUMP_MASTER_KEY "dump-master-key" From d6a995ee22e2d369dc2f32d98286c1530c1cfa84 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Mon, 24 Nov 2025 13:36:12 +0100 Subject: [PATCH 006/244] opal: Add OPAL SUM specific requirement flag. Block older cryptsetup releases from managing LUKS2 devices configured for OPAL segments in SUM. --- lib/luks2/hw_opal/hw_opal.c | 14 ++++++++++++-- lib/luks2/hw_opal/hw_opal.h | 3 ++- lib/luks2/luks2_json_metadata.c | 1 + lib/setup.c | 15 +++++++++------ 4 files changed, 24 insertions(+), 9 deletions(-) diff --git a/lib/luks2/hw_opal/hw_opal.c b/lib/luks2/hw_opal/hw_opal.c index f32c9cb7f..e79e8481f 100644 --- a/lib/luks2/hw_opal/hw_opal.c +++ b/lib/luks2/hw_opal/hw_opal.c @@ -69,6 +69,10 @@ struct opal_sum_ranges { #endif +/* supported opal requirement versions */ +#define LUKS2_OPAL_BASE_REQ_VERSION UINT8_C(1) +#define LUKS2_OPAL_SUM_REQ_VERSION UINT8_C(2) /* Device is configured with SUM */ + /* Error codes are defined in the specification: * TCG_Storage_Architecture_Core_Spec_v2.01_r1.00 * Section 5.1.5: Method Status Codes @@ -1043,7 +1047,8 @@ int opal_setup_ranges(struct crypt_device *cd, uint32_t segment_number, const void *admin_key, size_t admin_key_len, - bool disable_sum) + bool disable_sum, + uint8_t *r_opal_req_version) { struct opal_lock_unlock *lock = NULL; struct opal_new_pw *new_pw = NULL; @@ -1056,6 +1061,7 @@ int opal_setup_ranges(struct crypt_device *cd, assert(admin_key); assert(crypt_volume_key_length(vk) <= OPAL_KEY_MAX); assert(opal_block_bytes >= SECTOR_SIZE); + assert(r_opal_req_version); if (admin_key_len > OPAL_KEY_MAX) return -EINVAL; @@ -1186,6 +1192,9 @@ int opal_setup_ranges(struct crypt_device *cd, &(uint64_t) {range_start_blocks * opal_block_bytes / SECTOR_SIZE}, &(uint64_t) {range_length_blocks * opal_block_bytes / SECTOR_SIZE}, &(bool) {true}, &(bool){true}, NULL, NULL); + + /* Only if SUM was configured successfully add explicit SUM LUKS2 requirement flag */ + *r_opal_req_version = segment_in_sum ? LUKS2_OPAL_SUM_REQ_VERSION : LUKS2_OPAL_BASE_REQ_VERSION; out: crypt_safe_free(new_pw); crypt_safe_free(lock); @@ -1566,7 +1575,8 @@ int opal_setup_ranges(struct crypt_device *cd, uint32_t segment_number, const void *admin_key, size_t admin_key_len, - bool disable_sum) + bool disable_sum, + uint8_t *r_opal_req_version) { return -ENOTSUP; } diff --git a/lib/luks2/hw_opal/hw_opal.h b/lib/luks2/hw_opal/hw_opal.h index 135b5a3e5..427c598c9 100644 --- a/lib/luks2/hw_opal/hw_opal.h +++ b/lib/luks2/hw_opal/hw_opal.h @@ -23,7 +23,8 @@ int opal_setup_ranges(struct crypt_device *cd, uint32_t segment_number, const void *admin_key, size_t admin_key_len, - bool disable_sum); + bool disable_sum, + uint8_t *r_opal_req_version); int opal_lock(struct crypt_device *cd, struct device *dev, uint32_t segment_number); int opal_unlock(struct crypt_device *cd, struct device *dev, diff --git a/lib/luks2/luks2_json_metadata.c b/lib/luks2/luks2_json_metadata.c index 66a49fd44..9e35a8d46 100644 --- a/lib/luks2/luks2_json_metadata.c +++ b/lib/luks2/luks2_json_metadata.c @@ -1647,6 +1647,7 @@ static const struct requirement_flag requirements_flags[] = { { CRYPT_REQUIREMENT_ONLINE_REENCRYPT, 3, "online-reencrypt-v3" }, { CRYPT_REQUIREMENT_ONLINE_REENCRYPT, 1, "online-reencrypt" }, { CRYPT_REQUIREMENT_INLINE_HW_TAGS, 1, "inline-hw-tags" }, + { CRYPT_REQUIREMENT_OPAL, 2, "opal-v2" }, { CRYPT_REQUIREMENT_OPAL, 1, "opal" }, { 0, 0, NULL } }; diff --git a/lib/setup.c b/lib/setup.c index cfc78e500..e3bd48a1c 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -2295,6 +2295,7 @@ int crypt_format_luks2_opal(struct crypt_device *cd, const char *integrity = params ? params->integrity : NULL; size_t integrity_key_size = 0; /* only for independent, separate key in HMAC */ struct volume_key *integrity_key = NULL; + uint8_t opal_requirement_version; uint32_t sector_size, opal_block_bytes, opal_segment_number = 1; /* We'll use the partition number if available later */ uint64_t alignment_offset_bytes, data_offset_bytes, device_size_bytes, opal_alignment_granularity_blocks, partition_offset_sectors, range_offset_blocks, range_size_bytes, @@ -2498,11 +2499,6 @@ int crypt_format_luks2_opal(struct crypt_device *cd, if (r < 0) goto out; - log_dbg(cd, "Adding LUKS2 OPAL requirement flag."); - r = LUKS2_config_set_requirement_version(cd, &cd->u.luks2.hdr, CRYPT_REQUIREMENT_OPAL, 1, false); - if (r < 0) - goto out; - if (params->label || params->subsystem) { r = LUKS2_hdr_labels(cd, &cd->u.luks2.hdr, params->label, params->subsystem, 0); @@ -2533,7 +2529,8 @@ int crypt_format_luks2_opal(struct crypt_device *cd, range_offset_blocks, range_size_bytes / opal_block_bytes, opal_block_bytes, opal_segment_number, opal_params->admin_key, opal_params->admin_key_size, - !!(cd->compatibility & CRYPT_COMPAT_DISABLE_HW_OPAL_SUM)); + !!(cd->compatibility & CRYPT_COMPAT_DISABLE_HW_OPAL_SUM), + &opal_requirement_version); if (r < 0) { if (r == -EPERM) log_err(cd, _("Incorrect OPAL Admin key.")); @@ -2544,6 +2541,12 @@ int crypt_format_luks2_opal(struct crypt_device *cd, opal_range_reset = true; + log_dbg(cd, "Adding LUKS2 OPAL requirement flag (version: %u).", opal_requirement_version); + r = LUKS2_config_set_requirement_version(cd, &cd->u.luks2.hdr, CRYPT_REQUIREMENT_OPAL, + opal_requirement_version, false); + if (r < 0) + goto out; + /* integrity metadata goes in unlocked OPAL locking range */ if (crypt_get_integrity_tag_size(cd)) { r = opal_unlock(cd, crypt_data_device(cd), opal_segment_number, user_key ?: cd->volume_key); From 648e0e0c77fd57184b1a3735e395c14ed20ec81a Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Fri, 28 Nov 2025 10:49:56 +0100 Subject: [PATCH 007/244] tests: print info about OPAL2 SUM support. --- tests/compat-test-opal | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tests/compat-test-opal b/tests/compat-test-opal index de44addbb..d410b7b09 100755 --- a/tests/compat-test-opal +++ b/tests/compat-test-opal @@ -215,7 +215,7 @@ load_key() } setup_luks2_env() { - echo $PWD1 | $CRYPTSETUP luksFormat --type luks2 $FAST_PBKDF_OPT $OPAL2_DEV || fail + echo -e "$PWD1\n$OPAL2_ADMIN_PIN" | $CRYPTSETUP luksFormat --type luks2 --hw-opal $FAST_PBKDF_OPT $OPAL2_DEV || fail $CRYPTSETUP luksDump $OPAL2_DEV >/dev/null || fail echo $PWD1 | $CRYPTSETUP open $OPAL2_DEV $DEV_NAME || fail HAVE_KEYRING=$($CRYPTSETUP status $DEV_NAME | grep "keyring") @@ -230,6 +230,12 @@ setup_luks2_env() { HAVE_BLKID=0 fi $CRYPTSETUP close $DEV_NAME || fail + HAVE_SUM=$($CRYPTSETUP luksDump $OPAL2_DEV | grep "opal-v2") + if [ -n "$HAVE_SUM" ]; then + HAVE_SUM=1 + else + HAVE_SUM=0 + fi } # $1 key name @@ -490,6 +496,8 @@ export LANG=C prepare "[0] Detect LUKS2 environment" reset setup_luks2_env +test $HAVE_SUM -eq 1 && echo "Device $OPAL2_DEV is SUM compatible in LUKS2" + [ -n "$VALG" ] && valgrind_setup && CRYPTSETUP=valgrind_run prepare "[1] Data offset" From 609bef4edb10f70fa75e012f6578f0d744742ec1 Mon Sep 17 00:00:00 2001 From: Liang Bo Date: Sun, 15 Mar 2026 21:49:17 +0800 Subject: [PATCH 008/244] openssl: Support sm4 SM4 is formed with -, different from aes, etc. which is --. See 'openssl list --cipher-algorithms' under new version 3.5.X e.g. --- lib/crypto_backend/crypto_openssl.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/crypto_backend/crypto_openssl.c b/lib/crypto_backend/crypto_openssl.c index 660a6225f..8272eec7b 100644 --- a/lib/crypto_backend/crypto_openssl.c +++ b/lib/crypto_backend/crypto_openssl.c @@ -694,7 +694,10 @@ static int _cipher_init(EVP_CIPHER_CTX **hd_enc, EVP_CIPHER_CTX **hd_dec, const if (!strcmp(mode, "xts")) key_bits /= 2; - r = snprintf(cipher_name, sizeof(cipher_name), "%s-%d-%s", name, key_bits, mode); + if ((!strcmp(name, "sm4")) && key_bits == 128) + r = snprintf(cipher_name, sizeof(cipher_name), "%s-%s", name, mode); + else + r = snprintf(cipher_name, sizeof(cipher_name), "%s-%d-%s", name, key_bits, mode); if (r < 0 || (size_t)r >= sizeof(cipher_name)) return -EINVAL; From 9976654fb9f63640879815996c25aba22bc9f8a0 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Fri, 20 Mar 2026 10:57:25 +0100 Subject: [PATCH 009/244] Fix reading from wrong image offset If two subsequent crypt_load() calls are done, the Filevault header scan can read data from wrong offset, as it does not reset the file pointer. Fix it by using lseek variant of read call. Also fix test read for similar issue so it always reads the first sector of device. --- lib/fvault2/fvault2.c | 4 ++-- lib/utils_device.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/fvault2/fvault2.c b/lib/fvault2/fvault2.c index 59f4570fe..f84db2949 100644 --- a/lib/fvault2/fvault2.c +++ b/lib/fvault2/fvault2.c @@ -524,9 +524,9 @@ static int _read_volume_header( } log_dbg(cd, "Reading FVAULT2 volume header of size %u bytes.", FVAULT2_VOL_HEADER_SIZE); - if (read_blockwise(devfd, device_block_size(cd, dev), + if (read_lseek_blockwise(devfd, device_block_size(cd, dev), device_alignment(dev), vol_header, - FVAULT2_VOL_HEADER_SIZE) != FVAULT2_VOL_HEADER_SIZE) { + FVAULT2_VOL_HEADER_SIZE, 0) != FVAULT2_VOL_HEADER_SIZE) { log_err(cd, _("Could not read %u bytes of volume header."), FVAULT2_VOL_HEADER_SIZE); r = -EIO; goto out; diff --git a/lib/utils_device.c b/lib/utils_device.c index c40818ead..9186c39b0 100644 --- a/lib/utils_device.c +++ b/lib/utils_device.c @@ -153,7 +153,7 @@ static int device_read_test(struct crypt_device *cd, int devfd) if (minsize > sizeof(buffer)) minsize = sizeof(buffer); - if (read_blockwise(devfd, blocksize, alignment, buffer, minsize) == (ssize_t)minsize) { + if (read_lseek_blockwise(devfd, blocksize, alignment, buffer, minsize, 0) == (ssize_t)minsize) { log_dbg(cd, "Direct-io read works."); r = 0; } else { From e3a008f13a9e1681e5aeb63474a130b555931d12 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Mon, 23 Mar 2026 13:38:58 +0100 Subject: [PATCH 010/244] fvault2: Fix offset check inside metadata block The size check for the fvault2 metadata block can overflow for crafted values, leading to code reading data outside the allocated buffer. This could cause a crash in the crypt_load() operation. Fix it by using a proper check to avoid integer overflow. Thanks to David Pokora (Trail of Bits, in collaboration with Anthropic) for reporting and proposing the patch. --- lib/fvault2/fvault2.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/fvault2/fvault2.c b/lib/fvault2/fvault2.c index f84db2949..11198e889 100644 --- a/lib/fvault2/fvault2.c +++ b/lib/fvault2/fvault2.c @@ -371,7 +371,8 @@ static int _parse_metadata_block_0x0019( uint32_t xml_off = le32_to_cpu(md_block->xml_off); uint32_t xml_size = le32_to_cpu(md_block->xml_size); - if (xml_off + xml_size > FVAULT2_MD_BLOCK_SIZE) + if (xml_off >= FVAULT2_MD_BLOCK_SIZE || + xml_size > FVAULT2_MD_BLOCK_SIZE - xml_off) return -EINVAL; xml = strndup((const char *)md_block + xml_off, xml_size); @@ -451,7 +452,8 @@ static int _parse_metadata_block_0x001a( uint32_t xml_off = le32_to_cpu(md_block->xml_off); uint32_t xml_size = le32_to_cpu(md_block->xml_size); - if (xml_off + xml_size > FVAULT2_MD_BLOCK_SIZE) + if (xml_off >= FVAULT2_MD_BLOCK_SIZE || + xml_size > FVAULT2_MD_BLOCK_SIZE - xml_off) return -EINVAL; xml = strndup((const char *)md_block + xml_off, xml_size); From e2f8767f95b4933a74c9da9fccf29893abbc1e50 Mon Sep 17 00:00:00 2001 From: Kristina Hanicova Date: Thu, 26 Mar 2026 13:49:43 +0100 Subject: [PATCH 011/244] meson: Fix mode variable to be a string This way we do not risk it being converted into decimal 448 or octal 700 without the leading zero. Fixes: #983. --- meson.build | 3 ++- meson_options.txt | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/meson.build b/meson.build index e2503072e..531309fc0 100644 --- a/meson.build +++ b/meson.build @@ -48,7 +48,6 @@ default_int_options = [ 'default-luks1-keybits', 'default-luks2-iter-time', 'default-luks2-keyslot-keybits', - 'default-luks2-lock-dir-perms', 'default-luks2-memory-kb', 'default-luks2-parallel-threads', 'default-passphrase-size-max', @@ -67,6 +66,8 @@ foreach default_option : (default_int_options) conf.set(default_option.underscorify().to_upper(), get_option(default_option)) endforeach +conf.set('DEFAULT_LUKS2_LOCK_DIR_PERMS', get_option('default-luks2-lock-dir-perms')) + sanitizer = get_option('b_sanitize') sanitizer_enabled = sanitizer != '' and sanitizer != 'none' diff --git a/meson_options.txt b/meson_options.txt index dba7f6ee3..0fb0622f9 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -15,7 +15,7 @@ option('default-luks1-mode', type : 'string', description : 'cipher mode for LUK option('default-luks2-iter-time', type : 'integer', description : 'Argon2 PBKDF iteration time for LUKS2 (in ms)', value : 2000) option('default-luks2-keyslot-cipher', type : 'string', description : 'fallback cipher for LUKS2 keyslot (if data encryption is incompatible)', value : 'aes-xts-plain64') option('default-luks2-keyslot-keybits', type : 'integer', description : 'fallback key size for LUKS2 keyslot (if data encryption is incompatible)', value : 512) -option('default-luks2-lock-dir-perms', type : 'integer', description : 'default luks2 locking directory permissions', value : 0o700) +option('default-luks2-lock-dir-perms', type : 'string', description : 'default LUKS2 locking directory permissions', value : '0700') option('default-luks2-lock-path', type : 'string', description : 'path to directory for LUKSv2 locks', value : '/run/cryptsetup') option('default-luks2-memory-kb', type : 'integer', description : 'Argon2 PBKDF memory cost for LUKS2 (in kB)', value : 1048576) option('default-luks2-parallel-threads', type : 'integer', description : 'Argon2 PBKDF max parallel cost for LUKS2 (if CPUs available)', value : 4) From 91154e15f16d809a36e34ec4ea1126c966f98e6e Mon Sep 17 00:00:00 2001 From: Kristina Hanicova Date: Thu, 26 Mar 2026 13:53:42 +0100 Subject: [PATCH 012/244] meson: introduce unquoted variable for path We need two different variables for the path, one quoted for config.h and the other unquoted for cryptsetup.conf. Fixes: #980. --- meson.build | 1 + scripts/cryptsetup.conf.in | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/meson.build b/meson.build index 531309fc0..ed314632e 100644 --- a/meson.build +++ b/meson.build @@ -67,6 +67,7 @@ foreach default_option : (default_int_options) endforeach conf.set('DEFAULT_LUKS2_LOCK_DIR_PERMS', get_option('default-luks2-lock-dir-perms')) +conf.set('DEFAULT_LUKS2_LOCK_PATH_UNQUOTED', get_option('default-luks2-lock-path')) sanitizer = get_option('b_sanitize') sanitizer_enabled = sanitizer != '' and sanitizer != 'none' diff --git a/scripts/cryptsetup.conf.in b/scripts/cryptsetup.conf.in index 8bbc5af9d..1348ccd15 100644 --- a/scripts/cryptsetup.conf.in +++ b/scripts/cryptsetup.conf.in @@ -1 +1 @@ -d @DEFAULT_LUKS2_LOCK_PATH@ @DEFAULT_LUKS2_LOCK_DIR_PERMS@ root root - +d @DEFAULT_LUKS2_LOCK_PATH_UNQUOTED@ @DEFAULT_LUKS2_LOCK_DIR_PERMS@ root root - From 5997f7efb3c8c2313ebc464da6f8226c8bf600d8 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Mon, 23 Mar 2026 21:10:00 +0100 Subject: [PATCH 013/244] Fix LUKS2_reencrypt_lock_by_dm_uuid Using LUKS2-reencryption-(null) resource name seems too quirky to me:-) --- lib/luks2/luks2_reencrypt.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/luks2/luks2_reencrypt.c b/lib/luks2/luks2_reencrypt.c index 5f7297521..5d999dde8 100644 --- a/lib/luks2/luks2_reencrypt.c +++ b/lib/luks2/luks2_reencrypt.c @@ -3370,6 +3370,8 @@ static int reencrypt_lock_internal(struct crypt_device *cd, const char *uuid, st int r; char *lock_resource; + assert(uuid); + if (!crypt_metadata_locking_enabled()) { *reencrypt_lock = NULL; return 0; @@ -3406,6 +3408,7 @@ int LUKS2_reencrypt_lock_by_dm_uuid(struct crypt_device *cd, const char *dm_uuid dm_uuid + 6, dm_uuid + 14, dm_uuid + 18, dm_uuid + 22, dm_uuid + 26); if (r < 0 || (size_t)r != (sizeof(hdr_uuid) - 1)) return -EINVAL; + uuid = hdr_uuid; } else if (dm_uuid_cmp(dm_uuid, uuid)) return -EINVAL; From 016d78824b04cf25fb30bc043e6f62927561cec1 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Mon, 23 Mar 2026 21:12:06 +0100 Subject: [PATCH 014/244] Fix negative return value in reencrypt_recover_segment() --- lib/luks2/luks2_reencrypt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/luks2/luks2_reencrypt.c b/lib/luks2/luks2_reencrypt.c index 5d999dde8..0931045f2 100644 --- a/lib/luks2/luks2_reencrypt.c +++ b/lib/luks2/luks2_reencrypt.c @@ -1635,12 +1635,12 @@ static int reencrypt_recover_segment(struct crypt_device *cd, for (s = 0; s < count; s++) { if (crypt_hash_write(rp->p.csum.ch, data_buffer + (s * rp->p.csum.block_size), rp->p.csum.block_size)) { log_dbg(cd, "Failed to write hash."); - r = EINVAL; + r = -EINVAL; goto out; } if (crypt_hash_final(rp->p.csum.ch, checksum_tmp, rp->p.csum.hash_size)) { log_dbg(cd, "Failed to finalize hash."); - r = EINVAL; + r = -EINVAL; goto out; } if (!memcmp(checksum_tmp, (char *)rp->p.csum.checksums + (s * rp->p.csum.hash_size), rp->p.csum.hash_size)) { From a973a413168b251e8f46770ff4a4e90a9fca35cd Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Mon, 23 Mar 2026 21:15:02 +0100 Subject: [PATCH 015/244] Fix LUKS2_reencrypt_data_offset() return value. Offset is always uin64_t. --- lib/luks2/luks2_internal.h | 2 +- lib/luks2/luks2_reencrypt.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/luks2/luks2_internal.h b/lib/luks2/luks2_internal.h index adaea91a2..1cdc1d236 100644 --- a/lib/luks2/luks2_internal.h +++ b/lib/luks2/luks2_internal.h @@ -367,7 +367,7 @@ int LUKS2_reencrypt_digest_new(struct luks2_hdr *hdr); int LUKS2_reencrypt_digest_old(struct luks2_hdr *hdr); int LUKS2_reencrypt_segment_new(struct luks2_hdr *hdr); int LUKS2_reencrypt_segment_old(struct luks2_hdr *hdr); -int LUKS2_reencrypt_data_offset(struct luks2_hdr *hdr, bool blockwise); +uint64_t LUKS2_reencrypt_data_offset(struct luks2_hdr *hdr, bool blockwise); int LUKS2_reencrypt_max_hotzone_size(struct crypt_device *cd, struct luks2_hdr *hdr, diff --git a/lib/luks2/luks2_reencrypt.c b/lib/luks2/luks2_reencrypt.c index 0931045f2..96749f7d3 100644 --- a/lib/luks2/luks2_reencrypt.c +++ b/lib/luks2/luks2_reencrypt.c @@ -4450,7 +4450,7 @@ int crypt_reencrypt( * use only for calculation of minimal data device size. * The real data offset is taken directly from segments! */ -int LUKS2_reencrypt_data_offset(struct luks2_hdr *hdr, bool blockwise) +uint64_t LUKS2_reencrypt_data_offset(struct luks2_hdr *hdr, bool blockwise) { crypt_reencrypt_info ri = LUKS2_reencrypt_status(hdr); uint64_t data_offset = LUKS2_get_data_offset(hdr); From e3a8ba028e03c6562fd0861b1d359730c7e3dffd Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Mon, 23 Mar 2026 21:18:46 +0100 Subject: [PATCH 016/244] Fix crypt_resize() to not leak data on error path --- lib/setup.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/setup.c b/lib/setup.c index e3bd48a1c..2ef58edd8 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -3831,7 +3831,7 @@ int crypt_resize(struct crypt_device *cd, const char *name, uint64_t new_size) r = INTEGRITY_data_sectors(cd, crypt_metadata_device(cd), crypt_get_data_offset(cd) * SECTOR_SIZE, &old_size); if (r < 0) - return r; + goto out; dmd.size = dmdq.size; dmd.flags = dmdq.flags | CRYPT_ACTIVATE_REFRESH | CRYPT_ACTIVATE_PRIVATE; @@ -3855,7 +3855,7 @@ int crypt_resize(struct crypt_device *cd, const char *name, uint64_t new_size) r = INTEGRITY_data_sectors(cd, crypt_metadata_device(cd), crypt_get_data_offset(cd) * SECTOR_SIZE, &new_size); if (r < 0) - return r; + goto out; log_dbg(cd, "Maximum integrity device size from kernel %" PRIu64, new_size); if (old_size == new_size && new_size == dmdq.size && From a012bc99092c9d471c6b3ef4b32730d973e19d19 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Mon, 23 Mar 2026 21:21:01 +0100 Subject: [PATCH 017/244] Fix wiping of larger Veracrypt password pool --- lib/tcrypt/tcrypt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/tcrypt/tcrypt.c b/lib/tcrypt/tcrypt.c index 8fbe65149..fdfa37e86 100644 --- a/lib/tcrypt/tcrypt.c +++ b/lib/tcrypt/tcrypt.c @@ -626,7 +626,7 @@ static int TCRYPT_init_hdr(struct crypt_device *cd, params->cipher, params->mode, params->key_size); } out: - crypt_safe_memzero(pwd, TCRYPT_KEY_POOL_LEN); + crypt_safe_memzero(pwd, VCRYPT_KEY_POOL_LEN); if (key) crypt_safe_memzero(key, TCRYPT_HDR_KEY_LEN); free(key); From 937373d6097494f8aafe60cdf44f6e620e5cde18 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Mon, 23 Mar 2026 21:22:44 +0100 Subject: [PATCH 018/244] Fix opal_reuse_active_lsp() to not leak data on error path --- lib/luks2/hw_opal/hw_opal.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/luks2/hw_opal/hw_opal.c b/lib/luks2/hw_opal/hw_opal.c index e79e8481f..b14601479 100644 --- a/lib/luks2/hw_opal/hw_opal.c +++ b/lib/luks2/hw_opal/hw_opal.c @@ -859,7 +859,7 @@ static int opal_reuse_active_lsp(struct crypt_device *cd, int fd, uint32_t sum, /* If device supports SUM let's get list of SUM enabled LRs */ r = opal_get_sum_status_anybody(cd, fd, segment_number, &range_policy, &segment_in_sum); if (r < 0) - return r; + goto out; } /* If it is already enabled, wipe the locking range first */ From 3e62ca72a3789b0998103a0706393f09f1e9fe8d Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Mon, 23 Mar 2026 21:24:45 +0100 Subject: [PATCH 019/244] Fix crypt_capi_to_cipher() to properly check "capi:" prefix --- lib/utils_crypt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/utils_crypt.c b/lib/utils_crypt.c index a5eca18a7..76bcfac2b 100644 --- a/lib/utils_crypt.c +++ b/lib/utils_crypt.c @@ -298,7 +298,7 @@ int crypt_capi_to_cipher(char **org_c, char **org_i, const char *c_dm, const cha return -EINVAL; /* legacy mode */ - if (strncmp(c_dm, "capi:", 4)) { + if (strncmp(c_dm, "capi:", 5)) { if (!(*org_c = strdup(c_dm))) return -ENOMEM; if (i_dm) { From 24e3f1646914f150f08b4677591024fcbf2e44c3 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Mon, 23 Mar 2026 21:26:46 +0100 Subject: [PATCH 020/244] Fix kernel crypto backend sa.salg_type snprintf check --- lib/crypto_backend/crypto_cipher_kernel.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/crypto_backend/crypto_cipher_kernel.c b/lib/crypto_backend/crypto_cipher_kernel.c index 72918eb35..fd4635a74 100644 --- a/lib/crypto_backend/crypto_cipher_kernel.c +++ b/lib/crypto_backend/crypto_cipher_kernel.c @@ -240,7 +240,7 @@ int crypt_cipher_check_kernel(const char *name, const char *mode, salg_type = aead ? "aead" : "skcipher"; r = snprintf((char *)sa.salg_type, sizeof(sa.salg_type), "%s", salg_type); - if (r < 0 || (size_t)r >= sizeof(sa.salg_name)) + if (r < 0 || (size_t)r >= sizeof(sa.salg_type)) return -EINVAL; memset(tmp_salg_name, 0, sizeof(tmp_salg_name)); From 2e0a45f6cfd5c05a88e56b637bf7198d236d9068 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Mon, 23 Mar 2026 21:31:05 +0100 Subject: [PATCH 021/244] OpenSSL crypto bakcend: check for possible CTX_dup failure --- lib/crypto_backend/crypto_openssl.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/crypto_backend/crypto_openssl.c b/lib/crypto_backend/crypto_openssl.c index 8272eec7b..f9ce25a0b 100644 --- a/lib/crypto_backend/crypto_openssl.c +++ b/lib/crypto_backend/crypto_openssl.c @@ -443,6 +443,12 @@ int crypt_hmac_init(struct crypt_hmac **ctx, const char *name, h->hash_len = EVP_MAC_CTX_get_mac_size(h->md); h->md_org = EVP_MAC_CTX_dup(h->md); + if (!h->md_org) { + EVP_MAC_CTX_free(h->md); + EVP_MAC_free(h->mac); + free(h); + return -EINVAL; + } #else h = malloc(sizeof(*h)); if (!h) From 0e0a9dc71676b905719f50f1a66585ef7e66e256 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Mon, 23 Mar 2026 21:34:35 +0100 Subject: [PATCH 022/244] Fix device_alignment for NULL device Return 0 if device is NULL, it makes no sense anyway. --- lib/utils_device.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/utils_device.c b/lib/utils_device.c index 9186c39b0..c24cf0a6c 100644 --- a/lib/utils_device.c +++ b/lib/utils_device.c @@ -1047,7 +1047,7 @@ size_t device_alignment(struct device *device) int devfd; if (!device) - return -EINVAL; + return 0; if (!device->alignment) { devfd = open(device_path(device), O_RDONLY); From 07b8dc497ce6f2cfea72da0a940a4563e9ffa6ba Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Mon, 23 Mar 2026 21:38:41 +0100 Subject: [PATCH 023/244] Fix wrong union access in _reload_device() if tgs is DM_INTEGRITY --- lib/setup.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/setup.c b/lib/setup.c index 2ef58edd8..5b14924c3 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -3564,7 +3564,7 @@ static int _reload_device(struct crypt_device *cd, const char *name, r = dm_reload_device(cd, name, &tdmd, dmflags, 1); out: /* otherwise dm_targets_free would free src key */ - if (src->u.crypt.vk == tgt->u.crypt.vk) + if (tgt->type == DM_CRYPT && src->u.crypt.vk == tgt->u.crypt.vk) tgt->u.crypt.vk = NULL; dm_targets_free(cd, &tdmd); From ed77657d4d6a4b180f7e2a6de712acde5102ff8d Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Mon, 23 Mar 2026 21:50:00 +0100 Subject: [PATCH 024/244] Define properly sized objects arrays in reencrypt helper --- lib/libcryptsetup_macros.h | 4 ++++ lib/luks2/luks2.h | 7 ++++--- src/utils_reencrypt.c | 6 +++--- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/libcryptsetup_macros.h b/lib/libcryptsetup_macros.h index 657c48f8f..4c1bc1bdd 100644 --- a/lib/libcryptsetup_macros.h +++ b/lib/libcryptsetup_macros.h @@ -62,4 +62,8 @@ # define LUKS_STRIPES 4000 #endif +#ifndef LUKS2_OBJECTS_MAX +# define LUKS2_OBJECTS_MAX 32 +#endif + #endif /* _LIBCRYPTSETUP_MACROS_H */ diff --git a/lib/luks2/luks2.h b/lib/luks2/luks2.h index 30568dbba..703185a41 100644 --- a/lib/luks2/luks2.h +++ b/lib/luks2/luks2.h @@ -24,9 +24,10 @@ #define LUKS2_CHECKSUM_ALG_L 32 #define LUKS2_CHECKSUM_L 64 -#define LUKS2_KEYSLOTS_MAX 32 -#define LUKS2_TOKENS_MAX 32 -#define LUKS2_SEGMENT_MAX 32 +#define LUKS2_OBJECTS_MAX 32 +#define LUKS2_KEYSLOTS_MAX LUKS2_OBJECTS_MAX +#define LUKS2_TOKENS_MAX LUKS2_OBJECTS_MAX +#define LUKS2_SEGMENT_MAX LUKS2_OBJECTS_MAX #define LUKS2_BUILTIN_TOKEN_PREFIX "luks2-" #define LUKS2_BUILTIN_TOKEN_PREFIX_LEN 6 diff --git a/src/utils_reencrypt.c b/src/utils_reencrypt.c index c80c27c58..b42a1d258 100644 --- a/src/utils_reencrypt.c +++ b/src/utils_reencrypt.c @@ -1082,11 +1082,11 @@ struct unlocked_keyslot { }; struct keyslot_contexts { - struct unlocked_keyslot ks[16]; - struct unlocked_token tkns[16]; + struct unlocked_keyslot ks[LUKS2_OBJECTS_MAX / 2]; + struct unlocked_token tkns[LUKS2_OBJECTS_MAX / 2]; /* available unlock methods linked in keyslot struct */ - struct crypt_keyslot_context *kc[16]; + struct crypt_keyslot_context *kc[LUKS2_OBJECTS_MAX / 2]; /* contains pointer to context unlocking existing volume key */ struct crypt_keyslot_context *p_old_kc; From 8e26a933a2a09e173f45bd74f69e313c7e837593 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Mon, 23 Mar 2026 21:57:10 +0100 Subject: [PATCH 025/244] Document non-standard behaviour of safe_realloc --- lib/libcryptsetup.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/libcryptsetup.h b/lib/libcryptsetup.h index 4040187b5..987fc45e6 100644 --- a/lib/libcryptsetup.h +++ b/lib/libcryptsetup.h @@ -3188,6 +3188,8 @@ void crypt_safe_free(void *data); * @param size new size of memory in bytes * * @return pointer to allocated memory or @e NULL. + * + * @note On memory failure, original memory safely wiped and deallocated. */ void *crypt_safe_realloc(void *data, size_t size); From 941c45ad8b3b0c64961591c1758fc62cc14fc775 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Mon, 23 Mar 2026 22:05:45 +0100 Subject: [PATCH 026/244] Increase buffer for keyring name in DM table and properly check its size --- lib/libdevmapper.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/libdevmapper.c b/lib/libdevmapper.c index 13ec03174..c2ac9f36a 100644 --- a/lib/libdevmapper.c +++ b/lib/libdevmapper.c @@ -2056,7 +2056,7 @@ static int _dm_target_query_crypt(struct crypt_device *cd, uint64_t get_flags, uint32_t *act_flags) { uint64_t val64; - char *rcipher, *rintegrity, *key_, *rdevice, *endp, buffer[3], *arg, *key_desc, keyring[16]; + char *rcipher, *rintegrity, *key_, *rdevice, *endp, buffer[3], *arg, *key_desc, keyring[64]; unsigned int i, val; int r; size_t key_size; @@ -2189,7 +2189,7 @@ static int _dm_target_query_crypt(struct crypt_device *cd, uint64_t get_flags, if (!endp) goto err; key_desc = strpbrk(endp + 1, ":"); - if (!key_desc) + if (!key_desc || (size_t)(key_desc - endp) > sizeof(keyring)) goto err; memcpy(keyring, endp + 1, key_desc - endp - 1); keyring[key_desc - endp - 1] = '\0'; From 476e5f8f1bac81409dbccdd37a0252e91129399a Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Mon, 23 Mar 2026 22:08:26 +0100 Subject: [PATCH 027/244] Fix flags initialization to not read unitialized value if dm_flags() fails --- lib/verity/verity.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/verity/verity.c b/lib/verity/verity.c index 65f5f4ed6..ce19dac05 100644 --- a/lib/verity/verity.c +++ b/lib/verity/verity.c @@ -301,7 +301,7 @@ int VERITY_activate(struct crypt_device *cd, struct crypt_params_verity *verity_hdr, uint32_t activation_flags) { - uint64_t dmv_flags; + uint64_t dmv_flags = 0; int r; key_serial_t kid = 0; char *description = NULL; From 93df8cb268c44fa15c1b5df534ce386edcf1445a Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Mon, 23 Mar 2026 22:16:03 +0100 Subject: [PATCH 028/244] Avoid integrity sector size overflow (read from disk) --- lib/integrity/integrity.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/integrity/integrity.c b/lib/integrity/integrity.c index a10050d17..d92d97976 100644 --- a/lib/integrity/integrity.c +++ b/lib/integrity/integrity.c @@ -51,6 +51,10 @@ static int INTEGRITY_read_superblock(struct crypt_device *cd, sb->version, device_path(device)); r = -EINVAL; } else { + if ((int)sb->log2_sectors_per_block + SECTOR_SHIFT >= 32) { + log_dbg(cd, "dm-integrity log2_sectors_per_block overflow"); + return -EINVAL; + } sb->integrity_tag_size = le16toh(sb->integrity_tag_size); sb->journal_sections = le32toh(sb->journal_sections); sb->provided_data_sectors = le64toh(sb->provided_data_sectors); From 2506c841162efdb055554ddf861953e3d57347e2 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Mon, 23 Mar 2026 22:31:00 +0100 Subject: [PATCH 029/244] Check for strtoll() failure --- lib/utils_blkid.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/utils_blkid.c b/lib/utils_blkid.c index 44e501b05..c65d51ffa 100644 --- a/lib/utils_blkid.c +++ b/lib/utils_blkid.c @@ -217,6 +217,7 @@ int blk_do_wipe(struct blkid_handle *h) return blkid_do_wipe(h->pr, 0); #else const char *offset; + char *end; off_t offset_val; void *buf; ssize_t ret; @@ -244,7 +245,11 @@ int blk_do_wipe(struct blkid_handle *h) return -EINVAL; memset(buf, 0, len); - offset_val = strtoll(offset, NULL, 10); + offset_val = strtoll(offset, &end, 10); + if (*end || !*offset || errno == ERANGE) { + free(buf); + return -EINVAL; + } /* TODO: missing crypt_wipe_fd() */ ret = write_lseek_blockwise(h->fd, bsize, alignment, buf, len, offset_val); From 6695c57225a9fa34c1c87fff7d0f56903640327b Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Mon, 23 Mar 2026 22:33:47 +0100 Subject: [PATCH 030/244] fvault2: Use safe_alloc for key unwrapping --- lib/fvault2/fvault2.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/fvault2/fvault2.c b/lib/fvault2/fvault2.c index 11198e889..4eff7b3c7 100644 --- a/lib/fvault2/fvault2.c +++ b/lib/fvault2/fvault2.c @@ -229,13 +229,13 @@ static int _unwrap_key( if (r < 0) goto out; - cipher_in = malloc(16); + cipher_in = crypt_safe_alloc(16); if (cipher_in == NULL) { r = -ENOMEM; goto out; } - cipher_out = malloc(16); + cipher_out = crypt_safe_alloc(16); if (cipher_out == NULL) { r = -ENOMEM; goto out; @@ -283,8 +283,8 @@ static int _unwrap_key( ((uint64_t *)key_buf)[0] = r2; ((uint64_t *)key_buf)[1] = r3; out: - free(cipher_in); - free(cipher_out); + crypt_safe_free(cipher_in); + crypt_safe_free(cipher_out); if (cipher != NULL) crypt_cipher_destroy(cipher); return r; From 961d74ebd4783d73335e4a2bfa878e4607036408 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Mon, 23 Mar 2026 22:43:51 +0100 Subject: [PATCH 031/244] OpenSSL crypto backend: check for maximal RAND_bytes buffer size --- lib/crypto_backend/crypto_openssl.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/crypto_backend/crypto_openssl.c b/lib/crypto_backend/crypto_openssl.c index f9ce25a0b..56273e64c 100644 --- a/lib/crypto_backend/crypto_openssl.c +++ b/lib/crypto_backend/crypto_openssl.c @@ -546,6 +546,9 @@ void crypt_hmac_destroy(struct crypt_hmac *ctx) int crypt_backend_rng(char *buffer, size_t length, int quality __attribute__((unused)), int fips __attribute__((unused))) { + if (length > INT_MAX) + return -EINVAL; + if (RAND_bytes((unsigned char *)buffer, length) != 1) return -EINVAL; From 99d3eddbc3bf181212b8831645374d3d477050e5 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Mon, 23 Mar 2026 22:53:36 +0100 Subject: [PATCH 032/244] Use parentheses for macros with multiplication --- lib/bitlk/bitlk.c | 4 ++-- lib/fvault2/fvault2.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/bitlk/bitlk.c b/lib/bitlk/bitlk.c index 3b4a40bfa..34ae0b554 100644 --- a/lib/bitlk/bitlk.c +++ b/lib/bitlk/bitlk.c @@ -29,7 +29,7 @@ #define BITLK_FVE_METADATA_HEADERS_LEN BITLK_FVE_METADATA_BLOCK_HEADER_LEN + BITLK_FVE_METADATA_HEADER_LEN /* total size of the FVE area (64 KiB) */ -#define BITLK_FVE_METADATA_SIZE 64 * 1024 +#define BITLK_FVE_METADATA_SIZE (64 * 1024) #define BITLK_ENTRY_HEADER_LEN 8 #define BITLK_VMK_HEADER_LEN 28 @@ -55,7 +55,7 @@ /* not available in older version of libuuid */ #ifndef UUID_STR_LEN -#define UUID_STR_LEN 37 +#define UUID_STR_LEN 37 #endif /* known types of GUIDs from the BITLK superblock */ diff --git a/lib/fvault2/fvault2.c b/lib/fvault2/fvault2.c index 4eff7b3c7..2e068e7eb 100644 --- a/lib/fvault2/fvault2.c +++ b/lib/fvault2/fvault2.c @@ -23,7 +23,7 @@ #define FVAULT2_MD_BLOCK_SIZE 8192 /* maximal offset to read metadata block */ -#define FVAULT2_MAX_OFF 1024*1024*1024 +#define FVAULT2_MAX_OFF (1024 * 1024 * 1024) /* encrypted metadata parsing progress flags (see _read_encrypted_metadata) */ #define FVAULT2_ENC_MD_PARSED_0x0019 0b001 From 2dfab55e4aa8a8eaaadb336f50ea6c0e9c5116aa Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Mon, 23 Mar 2026 23:07:21 +0100 Subject: [PATCH 033/244] Make offset in loop device helper uint64_t It is actually never used other than for 0, but it should be correct. --- lib/utils_loop.c | 2 +- lib/utils_loop.h | 4 +++- tests/api_test.h | 2 +- tests/test_utils.c | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/utils_loop.c b/lib/utils_loop.c index ec8567899..4e5d8e0f4 100644 --- a/lib/utils_loop.c +++ b/lib/utils_loop.c @@ -102,7 +102,7 @@ static char *crypt_loop_get_device(void) return strdup(dev); } -int crypt_loop_attach(char **loop, const char *file, int offset, +int crypt_loop_attach(char **loop, const char *file, uint64_t offset, int autoclear, int *readonly, size_t blocksize) { struct loop_config config = {0}; diff --git a/lib/utils_loop.h b/lib/utils_loop.h index 4edeff3ae..a966a02cd 100644 --- a/lib/utils_loop.h +++ b/lib/utils_loop.h @@ -9,11 +9,13 @@ #ifndef _UTILS_LOOP_H #define _UTILS_LOOP_H +#include + /* loopback device helpers */ char *crypt_loop_backing_file(const char *loop); int crypt_loop_device(const char *loop); -int crypt_loop_attach(char **loop, const char *file, int offset, +int crypt_loop_attach(char **loop, const char *file, uint64_t offset, int autoclear, int *readonly, size_t blocksize); int crypt_loop_detach(const char *loop); int crypt_loop_resize(const char *loop); diff --git a/tests/api_test.h b/tests/api_test.h index e317967df..afaae22e1 100644 --- a/tests/api_test.h +++ b/tests/api_test.h @@ -139,7 +139,7 @@ void xlog(const char *msg, const char *tst, const char *func, int line, const ch /* loop helpers */ int loop_device(const char *loop); -int loop_attach(char **loop, const char *file, int offset, +int loop_attach(char **loop, const char *file, uint64_t offset, int autoclear, int *readonly); int loop_detach(const char *loop); diff --git a/tests/test_utils.c b/tests/test_utils.c index 56aebb7e7..a9a730960 100644 --- a/tests/test_utils.c +++ b/tests/test_utils.c @@ -776,7 +776,7 @@ static char *crypt_loop_get_device(void) return strdup(dev); } -int loop_attach(char **loop, const char *file, int offset, +int loop_attach(char **loop, const char *file, uint64_t offset, int autoclear, int *readonly) { struct loop_config config = {0}; From 846d85c5e0a9143f5cc48bfe5ddd6f84dbedbc52 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Fri, 27 Mar 2026 09:31:19 +0100 Subject: [PATCH 034/244] integritysetup: remove superfluous return line --- src/integritysetup.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/integritysetup.c b/src/integritysetup.c index 4ce1de63d..037fe7116 100644 --- a/src/integritysetup.c +++ b/src/integritysetup.c @@ -522,7 +522,6 @@ static int action_status(void) if (r == -ENOTSUP) r = 0; return r; - return -EINVAL; } static int action_dump(void) From 45105319561e9a0fddeee179f2a688a7aaee41e0 Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Wed, 25 Feb 2026 02:06:52 +0000 Subject: [PATCH 035/244] meson: propagate crypto backend library dependency to all targets When building libcryptsetup as a static library, the crypto backend (e.g. LibreSSL's libcrypto) must be linked into every final executable. The crypto_backend_library dependency was only listed for libcrypto_backend (a static lib), but meson does not transitively propagate static library dependencies to consumers via link_with. Add crypto_backend_library to libcryptsetup_deps so it is propagated to all tools and tests that link against libcryptsetup. --- lib/meson.build | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/meson.build b/lib/meson.build index 9f503b6bf..39efd36eb 100644 --- a/lib/meson.build +++ b/lib/meson.build @@ -9,6 +9,7 @@ libutils_io = static_library('utils_io', libcryptsetup_sym_path = join_paths(meson.current_source_dir(), 'libcryptsetup.sym') libcryptsetup_deps = [ + crypto_backend_library, uuid, devmapper, libargon2_external, From 8dba475ef33585d7874e7e50c2152f470f609204 Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Wed, 25 Feb 2026 02:46:10 +0000 Subject: [PATCH 036/244] meson: allow external tokens without dlvsym (musl) dlvsym is a glibc extension that some libc implementations (notably musl) do not provide. The C code already handles this gracefully since commit 5f2c751d ("Use dlsym() for token load if dlvsym() is not available"), falling back to dlsym when HAVE_DLVSYM is not set. However, the meson build had an assert requiring HAVE_DLVSYM for external-tokens, making it impossible to build with external token support on musl. Remove the assert and always set HAVE_DLVSYM via conf.set10() so that config.h gets the correct value, matching the autotools behaviour. --- meson.build | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/meson.build b/meson.build index ed314632e..d460943e4 100644 --- a/meson.build +++ b/meson.build @@ -203,14 +203,14 @@ if not cc.has_function('dlsym', error('dlsym not found') endif endif -if cc.has_function('dlvsym', +have_dlvsym = cc.has_function('dlvsym', dependencies: dl) - conf.set10('HAVE_DLVSYM', true) +conf.set10('HAVE_DLVSYM', have_dlvsym) +if not have_dlvsym + warning('dlvsym not found, external token plugins will use dlsym as fallback.') endif if get_option('external-tokens') - assert(conf.has('HAVE_DLVSYM') and conf.get('HAVE_DLVSYM') == 1, - 'dl library has no dlvsym function') conf.set10('USE_EXTERNAL_TOKENS', true, description: 'Use external tokens') endif From af3357d570e03d3e019a6491ab3a29473bd041ae Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Wed, 25 Feb 2026 04:25:22 +0000 Subject: [PATCH 037/244] meson: fix argp detection with argp-standalone (static-only) argp-standalone only ships a static library (libargp.a). The find_library call passed 'static: enable_static', which when false caused meson to look exclusively for a shared library and fail. Drop the static: parameter so meson accepts whichever variant is available, matching the autotools AC_SEARCH_LIBS behaviour. --- meson.build | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/meson.build b/meson.build index d460943e4..7920a9955 100644 --- a/meson.build +++ b/meson.build @@ -425,8 +425,7 @@ if get_option('ssh-token') argp = [] if not cc.has_function('argp_parse', prefix: '#include ', dependencies: argp) - argp = cc.find_library('argp', - static: enable_static) + argp = cc.find_library('argp') endif libssh = dependency('libssh') From 7e27bedf121b9106c4c3ecb080afe1d57ea83119 Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Tue, 24 Feb 2026 22:26:14 +0000 Subject: [PATCH 038/244] meson: fix uuid header path in function check The has_function check for uuid_clear used '#include ' but all source files include ''. On macOS the header only exists at the uuid/uuid.h path, so the function check failed even though the uuid dependency was found. Use the correct header path. --- meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meson.build b/meson.build index 7920a9955..3707ba998 100644 --- a/meson.build +++ b/meson.build @@ -155,7 +155,7 @@ endif uuid = dependency('uuid', static: enable_static) assert(cc.has_function('uuid_clear', - prefix: '#include ', dependencies: uuid), + prefix: '#include ', dependencies: uuid), 'You need the uuid library.') # ========================================================================== From 86b9a3fc57dd20ba8a2db3fda29cb43564ce7f09 Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Tue, 24 Feb 2026 22:29:37 +0000 Subject: [PATCH 039/244] meson: use pkg-config to find popt library cc.find_library('popt') only searches default linker paths and misses libraries installed in non-standard locations such as Homebrew's /opt/homebrew prefix on macOS. Use dependency() which queries pkg-config first (where popt is properly registered), falling back to cc.find_library() if pkg-config is unavailable. [patch modified by Kristina Hanicova] --- meson.build | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/meson.build b/meson.build index 3707ba998..82d80cede 100644 --- a/meson.build +++ b/meson.build @@ -227,10 +227,16 @@ endif # ========================================================================== -popt = cc.find_library('popt', - static: enable_static) +popt = dependency('popt', + static: enable_static, + required: false) +if not popt.found() + popt = cc.find_library('popt', + static: enable_static, + required: true) +endif assert(cc.has_function('poptConfigFileToString', - dependencies: popt), + prefix: '#include ', dependencies: popt), 'You need popt 1.7 or newer to compile.') # ========================================================================== From c5e15b88a27feac7ccd85c0840cfe8b277447a4c Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Wed, 25 Feb 2026 02:02:41 +0000 Subject: [PATCH 040/244] lib: fix OpenSSL crypto backend build with LibreSSL LibreSSL defines OPENSSL_VERSION_MAJOR >= 3 for compatibility and provides openssl/core_names.h with OSSL_KDF_PARAM_ARGON2_VERSION, but does not implement the OpenSSL 3.x provider/KDF API (EVP_KDF, OSSL_PARAM, etc). Add an OPENSSL3_API compile-time guard that excludes LibreSSL via LIBRESSL_VERSION_NUMBER, and use it for all OpenSSL 3.x-specific code paths. Also strengthen the meson detection to check for EVP_KDF_fetch in addition to the header symbol, so HAVE_DECL_OSSL_KDF_PARAM_ARGON2_VERSION is correctly set to 0 on LibreSSL. --- lib/crypto_backend/crypto_openssl.c | 49 ++++++++++++++++++----------- meson.build | 9 ++++-- 2 files changed, 37 insertions(+), 21 deletions(-) diff --git a/lib/crypto_backend/crypto_openssl.c b/lib/crypto_backend/crypto_openssl.c index 56273e64c..d1a1422ad 100644 --- a/lib/crypto_backend/crypto_openssl.c +++ b/lib/crypto_backend/crypto_openssl.c @@ -15,7 +15,18 @@ #include #include #include "crypto_backend_internal.h" -#if OPENSSL_VERSION_MAJOR >= 3 + +/* + * LibreSSL defines OPENSSL_VERSION_MAJOR >= 3 for compatibility but does not + * implement the OpenSSL 3.x provider/KDF API. Use this macro instead. + */ +#if OPENSSL_VERSION_MAJOR >= 3 && !defined(LIBRESSL_VERSION_NUMBER) +#define OPENSSL3_API 1 +#else +#define OPENSSL3_API 0 +#endif + +#if OPENSSL3_API #include #include #include @@ -48,7 +59,7 @@ struct crypt_hash { }; struct crypt_hmac { -#if OPENSSL_VERSION_MAJOR >= 3 +#if OPENSSL3_API EVP_MAC *mac; EVP_MAC_CTX *md; EVP_MAC_CTX *md_org; @@ -132,7 +143,7 @@ static void HMAC_CTX_free(HMAC_CTX *md) #else static void openssl_backend_exit(void) { -#if OPENSSL_VERSION_MAJOR >= 3 +#if OPENSSL3_API if (ossl_legacy) OSSL_PROVIDER_unload(ossl_legacy); if (ossl_default) @@ -151,7 +162,7 @@ static int openssl_backend_init(bool fips) /* * OpenSSL >= 3.0.0 provides some algorithms in legacy provider */ -#if OPENSSL_VERSION_MAJOR >= 3 +#if OPENSSL3_API int r; bool ossl_threads = false; @@ -197,7 +208,7 @@ static int openssl_backend_init(bool fips) static const char *openssl_backend_version(void) { -#if OPENSSL_VERSION_MAJOR >= 3 +#if OPENSSL3_API return backend_version; #else return OpenSSL_version(OPENSSL_VERSION); @@ -233,10 +244,10 @@ void crypt_backend_destroy(void) uint32_t crypt_backend_flags(void) { uint32_t flags = 0; -#if OPENSSL_VERSION_MAJOR < 3 +#if !OPENSSL3_API flags |= CRYPT_BACKEND_PBKDF2_INT; #endif -#if HAVE_DECL_OSSL_KDF_PARAM_ARGON2_VERSION +#if OPENSSL3_API && HAVE_DECL_OSSL_KDF_PARAM_ARGON2_VERSION flags |= CRYPT_BACKEND_ARGON2; #endif return flags; @@ -273,7 +284,7 @@ static const char *crypt_hash_compat_name(const char *name) static const EVP_MD *hash_id_get(const char *name) { -#if OPENSSL_VERSION_MAJOR >= 3 +#if OPENSSL3_API return EVP_MD_fetch(ossl_ctx, crypt_hash_compat_name(name), NULL); #else return EVP_get_digestbyname(crypt_hash_compat_name(name)); @@ -282,7 +293,7 @@ static const EVP_MD *hash_id_get(const char *name) static void hash_id_free(const EVP_MD *hash_id) { -#if OPENSSL_VERSION_MAJOR >= 3 +#if OPENSSL3_API EVP_MD_free(CONST_CAST(EVP_MD*)hash_id); #else UNUSED(hash_id); @@ -291,7 +302,7 @@ static void hash_id_free(const EVP_MD *hash_id) static const EVP_CIPHER *cipher_type_get(const char *name) { -#if OPENSSL_VERSION_MAJOR >= 3 +#if OPENSSL3_API return EVP_CIPHER_fetch(ossl_ctx, name, NULL); #else return EVP_get_cipherbyname(name); @@ -300,7 +311,7 @@ static const EVP_CIPHER *cipher_type_get(const char *name) static void cipher_type_free(const EVP_CIPHER *cipher_type) { -#if OPENSSL_VERSION_MAJOR >= 3 +#if OPENSSL3_API EVP_CIPHER_free(CONST_CAST(EVP_CIPHER*)cipher_type); #else UNUSED(cipher_type); @@ -411,7 +422,7 @@ int crypt_hmac_init(struct crypt_hmac **ctx, const char *name, const void *key, size_t key_length) { struct crypt_hmac *h; -#if OPENSSL_VERSION_MAJOR >= 3 +#if OPENSSL3_API OSSL_PARAM params[] = { OSSL_PARAM_utf8_string(OSSL_MAC_PARAM_DIGEST, CONST_CAST(void*)name, 0), OSSL_PARAM_END @@ -477,7 +488,7 @@ int crypt_hmac_init(struct crypt_hmac **ctx, const char *name, static int crypt_hmac_restart(struct crypt_hmac *ctx) { -#if OPENSSL_VERSION_MAJOR >= 3 +#if OPENSSL3_API EVP_MAC_CTX_free(ctx->md); ctx->md = EVP_MAC_CTX_dup(ctx->md_org); if (!ctx->md) @@ -490,7 +501,7 @@ static int crypt_hmac_restart(struct crypt_hmac *ctx) int crypt_hmac_write(struct crypt_hmac *ctx, const char *buffer, size_t length) { -#if OPENSSL_VERSION_MAJOR >= 3 +#if OPENSSL3_API return EVP_MAC_update(ctx->md, (const unsigned char *)buffer, length) == 1 ? 0 : -EINVAL; #else HMAC_Update(ctx->md, (const unsigned char *)buffer, length); @@ -501,7 +512,7 @@ int crypt_hmac_write(struct crypt_hmac *ctx, const char *buffer, size_t length) int crypt_hmac_final(struct crypt_hmac *ctx, char *buffer, size_t length) { unsigned char tmp[EVP_MAX_MD_SIZE]; -#if OPENSSL_VERSION_MAJOR >= 3 +#if OPENSSL3_API size_t tmp_len = 0; if (length > (size_t)ctx->hash_len) @@ -531,7 +542,7 @@ int crypt_hmac_final(struct crypt_hmac *ctx, char *buffer, size_t length) void crypt_hmac_destroy(struct crypt_hmac *ctx) { -#if OPENSSL_VERSION_MAJOR >= 3 +#if OPENSSL3_API EVP_MAC_CTX_free(ctx->md); EVP_MAC_CTX_free(ctx->md_org); EVP_MAC_free(ctx->mac); @@ -560,7 +571,7 @@ static int openssl_pbkdf2(const char *password, size_t password_length, const char *hash, char *key, size_t key_length) { int r; -#if OPENSSL_VERSION_MAJOR >= 3 +#if OPENSSL3_API EVP_KDF_CTX *ctx; EVP_KDF *pbkdf2; OSSL_PARAM params[] = { @@ -607,7 +618,7 @@ static int openssl_argon2(const char *type, const char *password, size_t passwor const char *salt, size_t salt_length, char *key, size_t key_length, uint32_t iterations, uint32_t memory, uint32_t parallel) { -#if HAVE_DECL_OSSL_KDF_PARAM_ARGON2_VERSION +#if OPENSSL3_API && HAVE_DECL_OSSL_KDF_PARAM_ARGON2_VERSION EVP_KDF_CTX *ctx; EVP_KDF *argon2; unsigned int threads = parallel; @@ -893,7 +904,7 @@ bool crypt_fips_mode(void) { return false; } #else static bool openssl_fips_mode(void) { -#if OPENSSL_VERSION_MAJOR >= 3 +#if OPENSSL3_API return EVP_default_properties_is_fips_enabled(NULL); #else return FIPS_mode(); diff --git a/meson.build b/meson.build index 82d80cede..d7cd6ac3e 100644 --- a/meson.build +++ b/meson.build @@ -516,10 +516,15 @@ elif get_option('crypto-backend') == 'openssl' conf.set10('HAVE_DECL_OSSL_GET_MAX_THREADS', cc.has_header_symbol('openssl/thread.h', 'OSSL_get_max_threads', dependencies: crypto_backend_library)) - conf.set10('HAVE_DECL_OSSL_KDF_PARAM_ARGON2_VERSION', + # LibreSSL defines OSSL_KDF_PARAM_ARGON2_VERSION in core_names.h but does + # not implement the EVP_KDF API. Check for both the symbol and the function. + _have_ossl_argon2 = ( cc.has_header_symbol('openssl/core_names.h', 'OSSL_KDF_PARAM_ARGON2_VERSION', + dependencies: crypto_backend_library) and + cc.has_function('EVP_KDF_fetch', dependencies: crypto_backend_library)) - if conf.get('HAVE_DECL_OSSL_KDF_PARAM_ARGON2_VERSION') == 1 + conf.set10('HAVE_DECL_OSSL_KDF_PARAM_ARGON2_VERSION', _have_ossl_argon2) + if _have_ossl_argon2 use_internal_argon2 = false endif elif get_option('crypto-backend') == 'nss' From 902602defd27c8fa7dd6444c271c50cde2ee1328 Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Tue, 24 Feb 2026 16:26:03 +0000 Subject: [PATCH 041/244] lib: guard uname() behind HAVE_SYS_UTSNAME_H Add sys/utsname.h to header detection in both meson.build and configure.ac. Guard the include and uname() call in lib/setup.c so the library builds on systems without . --- configure.ac | 2 +- lib/setup.c | 6 ++++++ meson.build | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 2059dd4d0..01ac27b76 100644 --- a/configure.ac +++ b/configure.ac @@ -80,7 +80,7 @@ AC_C_RESTRICT AC_HEADER_DIRENT AC_CHECK_HEADERS(fcntl.h malloc.h inttypes.h uchar.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) + sys/sysmacros.h sys/statvfs.h sys/utsname.h ctype.h unistd.h locale.h byteswap.h endian.h stdint.h) AC_CHECK_DECLS([O_CLOEXEC],,[AC_DEFINE([O_CLOEXEC],[0], [Defined to 0 if not provided])], [[ #ifdef HAVE_FCNTL_H diff --git a/lib/setup.c b/lib/setup.c index 5b14924c3..f7d21c2d4 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -12,7 +12,9 @@ #include #include #include +#if HAVE_SYS_UTSNAME_H #include +#endif #include #include "libcryptsetup.h" @@ -258,7 +260,9 @@ int crypt_opal_supported(struct crypt_device *cd, struct device *opal_device) int init_crypto(struct crypt_device *ctx) { +#if HAVE_SYS_UTSNAME_H struct utsname uts; +#endif int r; r = crypt_random_init(ctx); @@ -275,9 +279,11 @@ int init_crypto(struct crypt_device *ctx) log_dbg(ctx, "Crypto backend (%s%s) initialized in cryptsetup library version %s.", crypt_backend_version(), crypt_argon2_version(), PACKAGE_VERSION); +#if HAVE_SYS_UTSNAME_H if (!uname(&uts)) log_dbg(ctx, "Detected kernel %s %s %s.", uts.sysname, uts.release, uts.machine); +#endif _crypto_logged = 1; } diff --git a/meson.build b/meson.build index d7cd6ac3e..66623e4f1 100644 --- a/meson.build +++ b/meson.build @@ -104,6 +104,7 @@ required_headers = [ 'sys/mman.h', 'sys/statvfs.h', 'sys/sysmacros.h', + 'sys/utsname.h', 'uchar.h', 'unistd.h', ] From e6dc638b4c99fe0ee32b5e63f1cf715f2f37a02c Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Tue, 24 Feb 2026 22:32:03 +0000 Subject: [PATCH 042/244] lib: use portable bitops.h instead of Linux endian.h in utf8.c utf8.c included directly, which does not exist on macOS. The project already has lib/bitops.h which portably handles endian detection (endian.h vs sys/endian.h) with full fallback definitions for htole16 and friends. Use that instead. --- lib/crypto_backend/utf8.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/crypto_backend/utf8.c b/lib/crypto_backend/utf8.c index c68d1b7db..1a4079afb 100644 --- a/lib/crypto_backend/utf8.c +++ b/lib/crypto_backend/utf8.c @@ -16,9 +16,9 @@ */ #include -#include #include "crypto_backend.h" +#include "bitops.h" static inline bool utf16_is_surrogate(char16_t c) { From ffbac162394272c192a6cbf0bcf837299c09a53c Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Tue, 24 Feb 2026 23:16:08 +0000 Subject: [PATCH 043/244] lib: flush hash file between verity tree levels On macOS (and other BSDs), writes to a FILE* are not immediately visible to a separate FILE* opened on the same path because each handle maintains its own userspace buffer and there is no unified page cache like Linux. The verity hash tree computation writes level N to hash_file, then opens hash_file_2 to read it back for computing level N+1. Without an explicit fflush() between the write and the re-open, hash_file_2 reads stale (zero) data on macOS, producing an incorrect root hash. Add fflush(hash_file) before opening hash_file_2 to ensure all buffered data is written to disk. This is a no-op on Linux where the page cache already provides coherent views. --- lib/verity/verity_hash.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/verity/verity_hash.c b/lib/verity/verity_hash.c index 02333def5..2949afdde 100644 --- a/lib/verity/verity_hash.c +++ b/lib/verity/verity_hash.c @@ -336,6 +336,15 @@ static int VERITY_create_or_verify_hash(struct crypt_device *cd, bool verify, if (r) goto out; } else { + /* + * Flush the write buffer before re-reading the hash + * device through a second file handle. On Linux the + * unified page cache makes this optional; on macOS + * and other BSDs, unflushed data is invisible to a + * separate FILE* opened on the same path. + */ + fflush(hash_file); + hash_file_2 = fopen(device_path(crypt_metadata_device(cd)), "r"); if (!hash_file_2) { log_err(cd, _("Cannot open device %s."), From 5061919478112671684568812a7c40d3d786898b Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Fri, 27 Mar 2026 10:48:19 +0100 Subject: [PATCH 044/244] ci: Update GitHub actions These will be soon deprecated, update versions. --- .github/workflows/cibuild.yml | 2 +- .github/workflows/codeql.yml | 4 ++-- .github/workflows/coverity.yml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/cibuild.yml b/.github/workflows/cibuild.yml index c805da154..7db6754ac 100644 --- a/.github/workflows/cibuild.yml +++ b/.github/workflows/cibuild.yml @@ -20,7 +20,7 @@ jobs: env: ${{ matrix.env }} steps: - name: Repository checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Ubuntu setup run: sudo -E .github/workflows/cibuild-setup-ubuntu.sh - name: Configure & Make diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index e8cb69957..eb0babd47 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -29,10 +29,10 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Initialize CodeQL - uses: github/codeql-action/init@v3 + uses: github/codeql-action/init@v4 with: languages: ${{ matrix.language }} queries: +security-extended,security-and-quality diff --git a/.github/workflows/coverity.yml b/.github/workflows/coverity.yml index 6b34dbef8..b7d872ed3 100644 --- a/.github/workflows/coverity.yml +++ b/.github/workflows/coverity.yml @@ -12,7 +12,7 @@ jobs: if: github.repository == 'mbroz/cryptsetup' steps: - name: Repository checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Ubuntu setup run: sudo -E .github/workflows/cibuild-setup-ubuntu.sh env: From e6ae22829bd3e2ee62b5f3fe373714a5edf90dae Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Fri, 27 Mar 2026 17:28:38 +0100 Subject: [PATCH 045/244] ci: Update CodeQL action versions --- .github/workflows/codeql.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index eb0babd47..901d791f8 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -47,7 +47,7 @@ jobs: env: { COMPILER: "gcc", COMPILER_VERSION: "14", RUN_SSH_PLUGIN_TEST: "1" } - name: Autobuild - uses: github/codeql-action/autobuild@v3 + uses: github/codeql-action/autobuild@v4 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 + uses: github/codeql-action/analyze@v4 From 2c7a99683fccbf1fe61b9adae08d455ed7b28d66 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Fri, 27 Mar 2026 17:35:31 +0100 Subject: [PATCH 046/244] ci: Do not install GOST crypto in GitHub CodeQL --- .github/workflows/cibuild-setup-ubuntu.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cibuild-setup-ubuntu.sh b/.github/workflows/cibuild-setup-ubuntu.sh index be3f5567f..7f7c03bdc 100755 --- a/.github/workflows/cibuild-setup-ubuntu.sh +++ b/.github/workflows/cibuild-setup-ubuntu.sh @@ -21,8 +21,8 @@ bash -c "echo 'deb-src http://archive.ubuntu.com/ubuntu/ $RELEASE main restricte add-apt-repository -y ppa:ubuntu-toolchain-r/test PACKAGES+=(gcc-$COMPILER_VERSION) -# scsi_debug, gost crypto -PACKAGES+=(dkms linux-headers-$(uname -r) linux-modules-extra-$(uname -r) gost-crypto-dkms) +# scsi_debug +PACKAGES+=(dkms linux-headers-$(uname -r) linux-modules-extra-$(uname -r)) apt-get -y update --fix-missing apt-get -y install "${PACKAGES[@]}" From 3912f140c93dc4bd94fe8f647f50b2030e785bf5 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 28 Mar 2026 10:13:00 +0100 Subject: [PATCH 047/244] ci: Add version info to valgrind test --- tests/Makefile.am | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/Makefile.am b/tests/Makefile.am index 861cfd0f4..9e4cd35a4 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -178,6 +178,7 @@ compatimage.img: @xz -k -d compatimage.img.xz valgrind-check: api-test api-test-2 differ + ./00modules-test @VALG=1 ./compat-args-test @VALG=1 ./compat-test @VALG=1 ./compat-test2 From 81240151b4174b5aed1cc690bfe2792396eec1e2 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Mon, 30 Mar 2026 13:12:04 +0200 Subject: [PATCH 048/244] OpenSSL backend: Increase number of allowed threads If there are multiple crypto contexts in use, the 8 threads limit could cause that systems running Argon2 KDF could wait otr even deadlock. While this is not a final fix, it increases limit for most common situations for now. The real fix is either fix OpenSSL Argon2 or use separate libarary contexts. See for example https://github.com/storaged-project/udisks/issues/1489 --- lib/crypto_backend/crypto_openssl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/crypto_backend/crypto_openssl.c b/lib/crypto_backend/crypto_openssl.c index d1a1422ad..229698997 100644 --- a/lib/crypto_backend/crypto_openssl.c +++ b/lib/crypto_backend/crypto_openssl.c @@ -36,7 +36,7 @@ static OSSL_PROVIDER *ossl_default = NULL; static OSSL_LIB_CTX *ossl_ctx = NULL; static char backend_version[256] = "OpenSSL"; -#define MAX_THREADS 8 +#define MAX_THREADS 64 #if !HAVE_DECL_OSSL_GET_MAX_THREADS static int OSSL_set_max_threads(OSSL_LIB_CTX *ctx __attribute__((unused)), uint64_t max_threads __attribute__((unused))) { return 0; } From bf3f5df4f9ad9a7a8291932e5c53f9ee720b85f2 Mon Sep 17 00:00:00 2001 From: Josef Andersson Date: Mon, 30 Mar 2026 14:23:14 +0200 Subject: [PATCH 049/244] po: update sv.po (from translationproject.org) --- po/sv.po | 2225 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 1230 insertions(+), 995 deletions(-) diff --git a/po/sv.po b/po/sv.po index 2d4861f0e..90d61f0dd 100644 --- a/po/sv.po +++ b/po/sv.po @@ -3,13 +3,13 @@ # This file is distributed under the same license as the cryptsetup package. # # Daniel Nylander , 2009. -# Josef Andersson , 2016-2025. +# Josef Andersson , 2016-2026. msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.7.3-rc0\n" +"Project-Id-Version: cryptsetup 2.8.2-rc0\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2024-06-06 22:11+0200\n" -"PO-Revision-Date: 2025-04-18 09:55+0200\n" +"POT-Creation-Date: 2025-12-12 18:51+0100\n" +"PO-Revision-Date: 2026-02-21 18:52+0100\n" "Last-Translator: Josef Andersson \n" "Language-Team: Swedish \n" "Language: sv\n" @@ -20,70 +20,78 @@ msgstr "" "X-Generator: Poedit 3.4.2\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -#: lib/libdevmapper.c:406 +#: lib/libdevmapper.c:419 msgid "Cannot initialize device-mapper, running as non-root user." msgstr "Det går inte att initiera device-mapper, kör som icke-root-användare." -#: lib/libdevmapper.c:409 +#: lib/libdevmapper.c:422 msgid "Cannot initialize device-mapper. Is dm_mod kernel module loaded?" msgstr "Det går inte att initiera device-mapper. Är kärnmodulen dm_mod inläst?" -#: lib/libdevmapper.c:1090 +#: lib/libdevmapper.c:1125 msgid "Requested deferred flag is not supported." msgstr "Begärd flagga deferred stöds inte." -#: lib/libdevmapper.c:1159 +#: lib/libdevmapper.c:1194 #, c-format msgid "DM-UUID for device %s was truncated." msgstr "DM-UUID för enheten %s förkortades." -#: lib/libdevmapper.c:1497 +#: lib/libdevmapper.c:1598 msgid "Unknown dm target type." msgstr "Okänd måltyp dm." -#: lib/libdevmapper.c:1616 lib/libdevmapper.c:1622 lib/libdevmapper.c:1725 -#: lib/libdevmapper.c:1728 +#: lib/libdevmapper.c:1725 lib/libdevmapper.c:1731 lib/libdevmapper.c:1850 +#: lib/libdevmapper.c:1853 msgid "Requested dm-crypt performance options are not supported." msgstr "Begärd flagga för dm-crypt-prestanda stöds inte." -#: lib/libdevmapper.c:1631 lib/libdevmapper.c:1643 +#: lib/libdevmapper.c:1740 lib/libdevmapper.c:1746 lib/libdevmapper.c:1758 msgid "Requested dm-verity data corruption handling options are not supported." msgstr "Begärd flagga för dm-verity-dataintegritet stöds inte." -#: lib/libdevmapper.c:1637 +#: lib/libdevmapper.c:1752 msgid "Requested dm-verity tasklets option is not supported." msgstr "Begärd flagga dm-verity tasklets stöds inte." -#: lib/libdevmapper.c:1649 +#: lib/libdevmapper.c:1764 msgid "Requested dm-verity FEC options are not supported." msgstr "Begärd flagga dm-verity FEC stöds inte." -#: lib/libdevmapper.c:1655 +#: lib/libdevmapper.c:1770 msgid "Requested data integrity options are not supported." msgstr "Begärd flagga för dataintegritet stöds inte." -#: lib/libdevmapper.c:1659 +#: lib/libdevmapper.c:1774 msgid "Requested sector_size option is not supported." msgstr "Begärd flagga sector_size stöds inte." -#: lib/libdevmapper.c:1664 +#: lib/libdevmapper.c:1779 msgid "The device size is not multiple of the requested sector size." msgstr "Storleken på enheten är inte en multipel av begärd sektorstorlek." -#: lib/libdevmapper.c:1671 lib/libdevmapper.c:1677 +#: lib/libdevmapper.c:1783 +msgid "Requested integrity_key_size option is not supported." +msgstr "Begärd flagga integrity_key_size stöds inte." + +#: lib/libdevmapper.c:1790 lib/libdevmapper.c:1796 msgid "Requested automatic recalculation of integrity tags is not supported." msgstr "Begärd automatisk beräkning av integritetstaggar stöds inte." -#: lib/libdevmapper.c:1683 lib/libdevmapper.c:1731 lib/libdevmapper.c:1734 -#: lib/luks2/luks2_json_metadata.c:2741 +#: lib/libdevmapper.c:1802 lib/libdevmapper.c:1856 lib/libdevmapper.c:1859 +#: lib/luks2/luks2_json_metadata.c:2781 msgid "Discard/TRIM is not supported." msgstr "Discard/TRIM stöds inte." -#: lib/libdevmapper.c:1689 +#: lib/libdevmapper.c:1808 msgid "Requested dm-integrity bitmap mode is not supported." msgstr "Begärt dm-integrity bitmap-läge stöds inte." -#: lib/libdevmapper.c:2725 +#: lib/libdevmapper.c:1814 +msgid "Requested dm-integrity inline mode is not supported." +msgstr "Begärt dm-integrity inline-läge stöds inte." + +#: lib/libdevmapper.c:2870 #, c-format msgid "Failed to query dm-%s segment." msgstr "Misslyckades med att läsa dm-%s-segment." @@ -99,7 +107,7 @@ msgstr "" #: lib/random.c:64 #, c-format msgid "Generating key (%d%% done).\n" -msgstr "Genererar nyckel (%d%% done).\n" +msgstr "Genererar nyckel (%d%% klart).\n" #: lib/random.c:150 msgid "Running in FIPS mode." @@ -117,747 +125,777 @@ msgstr "Okänd RNG-kvalitet begärd." msgid "Error reading from RNG." msgstr "Fel vid läsning från RNG." -#: lib/setup.c:249 +#: lib/setup.c:248 msgid "OPAL support is disabled in libcryptsetup." msgstr "OPAL-stöd är inaktiverat i libcryptsetup." -#: lib/setup.c:251 +#: lib/setup.c:250 #, c-format msgid "Device %s or kernel does not support OPAL encryption." msgstr "Kärnan eller enheten %s stöder inte OPAL-kryptering." -#: lib/setup.c:267 +#: lib/setup.c:266 msgid "Cannot initialize crypto RNG backend." msgstr "Det går inte att initiera RNG-krypteringsbakände." -#: lib/setup.c:273 +#: lib/setup.c:272 msgid "Cannot initialize crypto backend." msgstr "Det går inte att initiera krypteringsbakände." -#: lib/setup.c:305 lib/setup.c:2786 lib/verity/verity.c:109 +#: lib/setup.c:305 lib/setup.c:2766 lib/verity/verity.c:109 #, c-format msgid "Hash algorithm %s not supported." msgstr "Hashalgoritmen %s stöds inte." -#: lib/setup.c:308 lib/loopaes/loopaes.c:77 +#: lib/setup.c:308 lib/loopaes/loopaes.c:78 #, c-format msgid "Key processing error (using hash %s)." msgstr "Fel vid nyckelbearbetning (använder hash %s)." -#: lib/setup.c:379 lib/setup.c:416 +#: lib/setup.c:389 lib/setup.c:426 msgid "Cannot determine device type. Incompatible activation of device?" msgstr "Det går inte att avgöra enhetstyp. Inkompatibel aktivering av enhet?" -#: lib/setup.c:385 lib/setup.c:3981 +#: lib/setup.c:395 lib/setup.c:4160 msgid "This operation is supported only for LUKS device." msgstr "Denna åtgärd stöds endast av LUKS-enheter." -#: lib/setup.c:422 +#: lib/setup.c:432 msgid "This operation is supported only for LUKS2 device." msgstr "Denna åtgärd stöds endast av LUKS2-enheter." -#: lib/setup.c:479 lib/luks2/luks2_reencrypt.c:3058 +#: lib/setup.c:489 lib/luks2/luks2_reencrypt.c:3101 msgid "All key slots full." msgstr "Alla nyckelplatser är upptagna." -#: lib/setup.c:490 +#: lib/setup.c:500 #, c-format msgid "Key slot %d is invalid, please select between 0 and %d." msgstr "Nyckelplats %d är ogiltig. Välj mellan 0 och %d." -#: lib/setup.c:496 +#: lib/setup.c:506 #, c-format msgid "Key slot %d is full, please select another one." msgstr "Nyckelplats %d är full. Välj en annan." -#: lib/setup.c:607 lib/setup.c:3681 +#: lib/setup.c:531 lib/setup.c:3875 msgid "Device size is not aligned to device logical block size." msgstr "Storlek på enhet är inte justerad till enhetens logiska blockstorlek." -#: lib/setup.c:705 +#: lib/setup.c:628 #, c-format msgid "Header detected but device %s is too small." msgstr "Huvud identifierat men enheten %s är för liten." -#: lib/setup.c:746 lib/setup.c:3572 lib/setup.c:5360 lib/setup.c:5380 -#: lib/luks2/luks2_reencrypt.c:3850 lib/luks2/luks2_reencrypt.c:4307 +#: lib/setup.c:669 lib/setup.c:3760 lib/setup.c:5227 +#: lib/luks2/luks2_reencrypt.c:3945 lib/luks2/luks2_reencrypt.c:4434 msgid "This operation is not supported for this device type." msgstr "Denna åtgärd stöds inte för denna enhetstyp." -#: lib/setup.c:751 +#: lib/setup.c:674 msgid "Illegal operation with reencryption in-progress." msgstr "Ogiltig åtgärd under pågående omkryptering." -#: lib/setup.c:883 +#: lib/setup.c:806 msgid "Failed to rollback LUKS2 metadata in memory." msgstr "Misslyckades med att återställa LUKS2-metadata i minnet." -#: lib/setup.c:970 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 -#: lib/luks2/luks2_json_metadata.c:1361 src/cryptsetup.c:1874 -#: src/cryptsetup.c:2055 src/cryptsetup.c:2110 src/cryptsetup.c:2315 -#: src/cryptsetup.c:2485 src/cryptsetup.c:2766 src/cryptsetup.c:3073 -#: src/cryptsetup.c:3141 src/utils_reencrypt.c:1485 -#: src/utils_reencrypt_luks1.c:1139 tokens/ssh/cryptsetup-ssh.c:72 +#: lib/setup.c:893 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 +#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1782 +#: src/cryptsetup.c:1966 src/cryptsetup.c:2021 src/cryptsetup.c:2219 +#: src/cryptsetup.c:2364 src/cryptsetup.c:2642 src/cryptsetup.c:2955 +#: src/cryptsetup.c:3023 src/utils_reencrypt.c:2281 +#: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." msgstr "Enheten %s är inte en giltig LUKS-enhet." -#: lib/setup.c:973 lib/luks1/keymanage.c:517 +#: lib/setup.c:896 lib/luks1/keymanage.c:517 #, c-format msgid "Unsupported LUKS version %d." msgstr "LUKS-versionen %d stöds inte." -#: lib/setup.c:1346 +#: lib/setup.c:1270 #, c-format msgid "No known cipher specification pattern detected for active device %s." msgstr "Inget känt chifferspecifikationsmönster kunde identifieras för den aktiva enheten %s." -#: lib/setup.c:1592 lib/setup.c:3326 lib/setup.c:3408 lib/setup.c:3420 -#: lib/setup.c:3590 lib/setup.c:6004 +#: lib/setup.c:1515 lib/setup.c:3507 lib/setup.c:3599 lib/setup.c:3611 +#: lib/setup.c:3783 lib/setup.c:5805 #, c-format msgid "Device %s is not active." msgstr "Enheten %s är inte aktiv." -#: lib/setup.c:1609 +#: lib/setup.c:1532 #, c-format msgid "Underlying device for crypt device %s disappeared." msgstr "Underliggande enhet för krypteringsenhet %s försvann." -#: lib/setup.c:1691 +#: lib/setup.c:1614 msgid "Invalid plain crypt parameters." msgstr "Ogiltiga parametrar för plain-kryptering." -#: lib/setup.c:1696 lib/setup.c:2689 +#: lib/setup.c:1619 lib/setup.c:2669 msgid "Invalid key size." msgstr "Ogiltig nyckelstorlek." -#: lib/setup.c:1701 lib/setup.c:2694 lib/setup.c:2897 +#: lib/setup.c:1624 lib/setup.c:2674 lib/setup.c:2879 msgid "UUID is not supported for this crypt type." msgstr "UUID stöds inte för denna krypteringstyp." -#: lib/setup.c:1706 lib/setup.c:2699 +#: lib/setup.c:1629 lib/setup.c:2679 msgid "Detached metadata device is not supported for this crypt type." -msgstr "Frånkopplad metadataenhet stöds ej av denna crypt-typ." +msgstr "Frånkopplad metadataenhet stöds inte av denna crypt-typ." -#: lib/setup.c:1716 lib/setup.c:1957 lib/luks2/luks2_reencrypt.c:3014 -#: src/cryptsetup.c:1471 src/cryptsetup.c:3842 +#: lib/setup.c:1639 lib/setup.c:1887 lib/luks2/luks2_reencrypt.c:3034 +#: src/cryptsetup.c:1494 src/cryptsetup.c:3762 msgid "Unsupported encryption sector size." msgstr "Stöder inte sektorstorleken för kryptering." -#: lib/setup.c:1724 lib/setup.c:1986 lib/setup.c:3675 +#: lib/setup.c:1647 lib/setup.c:1916 lib/setup.c:3869 msgid "Device size is not aligned to requested sector size." msgstr "Storlek på enhet är inte justerad till begärd sektorstorlek." -#: lib/setup.c:1776 lib/setup.c:2019 lib/setup.c:2365 +#: lib/setup.c:1699 lib/setup.c:1951 lib/setup.c:2328 msgid "Can't format LUKS without device." msgstr "Det går inte att formatera LUKS utan enhet." -#: lib/setup.c:1781 lib/setup.c:2024 +#: lib/setup.c:1704 lib/setup.c:1956 #, c-format msgid "Zoned device %s cannot be used for LUKS header." -msgstr "Zoned-enheten %s kan inte användas för LUKS2-huvud." +msgstr "Det går inte att använda zoned-enheten %s för LUKS2-huvud." -#: lib/setup.c:1788 lib/setup.c:2031 lib/setup.c:2371 +#: lib/setup.c:1711 lib/setup.c:1963 lib/setup.c:2334 msgid "Requested data alignment is not compatible with data offset." -msgstr "Begärd datajustering är inte kompatibel med dataoffset." +msgstr "Begärd datajustering är inte kompatibel med dataförskjutningen." -#: lib/setup.c:1828 lib/setup.c:2049 +#: lib/setup.c:1751 lib/setup.c:1981 msgid "WARNING: DAX device can corrupt data as it does not guarantee atomic sector updates.\n" msgstr "VARNING: DAX-enheten kan korrumpera data eftersom den inte garanterar atomiska sektoruppdateringar.\n" -#: lib/setup.c:1866 lib/setup.c:2144 lib/setup.c:2165 lib/setup.c:2549 -#: lib/setup.c:2596 lib/setup.c:2909 +#: lib/setup.c:1789 lib/setup.c:2088 lib/setup.c:2109 lib/setup.c:2517 +#: lib/setup.c:2564 lib/setup.c:2896 #, c-format msgid "Cannot wipe header on device %s." msgstr "Det går inte att rensa huvudet på enheten %s." -#: lib/setup.c:1879 lib/setup.c:2204 +#: lib/setup.c:1802 lib/setup.c:2161 #, c-format msgid "Device %s is too small for activation, there is no remaining space for data.\n" msgstr "Enheten %s är för liten för aktivering, det finns inget utrymme kvar för data.\n" -#: lib/setup.c:1919 +#: lib/setup.c:1843 msgid "Volume key is too small for encryption with integrity extensions." msgstr "Volymnyckeln är för liten för kryptering med integritetstillägg." -#: lib/setup.c:1928 +#: lib/setup.c:1847 +msgid "Integrity key size is too small." +msgstr "Integritetsnyckelstorleken är för liten." + +#: lib/setup.c:1856 #, c-format msgid "Cipher %s-%s (key size %zd bits) is not available." msgstr "Chiffret %s-%s (nyckelstorlek %zd bitar) är inte tillgängligt." -#: lib/setup.c:1967 +#: lib/setup.c:1897 msgid "WARNING: The device activation will fail, dm-crypt is missing support for requested encryption sector size.\n" msgstr "VARNING: Enhetsaktiveringen kommer att misslyckas, dm-crypt saknar stöd för begärd krypteringsektorstorlek.\n" -#: lib/setup.c:2147 lib/setup.c:2492 lib/setup.c:2552 lib/utils_device.c:904 -#: lib/luks1/keyencryption.c:242 lib/luks2/luks2_reencrypt.c:3082 -#: lib/luks2/luks2_reencrypt.c:4367 +#: lib/setup.c:2091 lib/setup.c:2458 lib/setup.c:2520 lib/utils_device.c:896 +#: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3073 +#: lib/luks2/luks2_reencrypt.c:4494 #, c-format msgid "Device %s is too small." msgstr "Enheten %s är för liten." -#: lib/setup.c:2158 lib/setup.c:2184 lib/setup.c:2589 lib/setup.c:2635 +#: lib/setup.c:2102 lib/setup.c:2141 lib/setup.c:2557 lib/setup.c:2615 #, c-format msgid "Cannot format device %s in use." msgstr "Det går inte att formatera enheten %s då den används." -#: lib/setup.c:2161 lib/setup.c:2187 lib/setup.c:2592 lib/setup.c:2638 +#: lib/setup.c:2105 lib/setup.c:2144 lib/setup.c:2560 lib/setup.c:2618 #, c-format msgid "Cannot format device %s, permission denied." msgstr "Det går inte att formatera enheten %s, behörighet nekad." -#: lib/setup.c:2173 lib/setup.c:2609 lib/setup.c:2969 +#: lib/setup.c:2129 lib/setup.c:2587 lib/setup.c:2969 #, c-format msgid "Cannot format integrity for device %s." msgstr "Det går inte att formatera integritet för enheten %s." -#: lib/setup.c:2191 lib/setup.c:2646 +#: lib/setup.c:2148 lib/setup.c:2626 #, c-format msgid "Cannot format device %s." msgstr "Det går inte att formatera enheten %s." -#: lib/setup.c:2234 +#: lib/setup.c:2191 msgid "Cannot get OPAL alignment parameters." -msgstr "Kan inte hämta OPAL-inriktningsparametrar." +msgstr "Det går inte att hämta OPAL-inriktningsparametrar." -#: lib/setup.c:2246 +#: lib/setup.c:2203 msgid "Bogus OPAL logical block size." msgstr "Felaktig logisk blockstorlek i OPAL." -#: lib/setup.c:2251 lib/luks2/hw_opal/hw_opal.c:299 +#: lib/setup.c:2208 lib/luks2/hw_opal/hw_opal.c:305 msgid "Bogus OPAL logical block size differs from device block size." msgstr "Felaktig OPAL logisk blockstorlek skiljer sig från enhetens blockstorlek." -#: lib/setup.c:2257 +#: lib/setup.c:2214 msgid "Requested data offset is not compatible with OPAL block size." -msgstr "Begärd data-offset är inte kompatibel med OPAL-blockstorlek." +msgstr "Begärd dataförskjutning är inte kompatibel med OPAL-blockstorleken." -#: lib/setup.c:2264 +#: lib/setup.c:2221 msgid "Requested data alignment is not compatible with OPAL alignment." msgstr "Begärd datajustering är inte kompatibel med OPAL-justering." -#: lib/setup.c:2284 +#: lib/setup.c:2241 msgid "Data offset does not satisfy OPAL alignment requirements." msgstr "Dataförskjutningen uppfyller inte OPAL:s krav på anpassning." -#: lib/setup.c:2297 +#: lib/setup.c:2254 msgid "Requested data alignment does not satisfy locking range alignment requirements." -msgstr "Begärd datajustering är inte kompatibel med locking range-justeringskraven." +msgstr "Begärd datajustering uppfyller inte justeringskraven för låsområde." -#: lib/setup.c:2502 +#: lib/setup.c:2468 #, c-format msgid "Compensating device size by % sectors to align it with OPAL alignment granularity." msgstr "Kompenserar enhetens storlek med % sektorer för att anpassa den till OPAL:s anpassningsgranularitet." -#: lib/setup.c:2560 lib/setup.c:4078 lib/setup.c:4261 lib/utils_wipe.c:355 -#: lib/luks2/luks2_json_metadata.c:2690 lib/luks2/luks2_json_metadata.c:2942 +#: lib/setup.c:2528 lib/setup.c:4243 lib/setup.c:4432 lib/utils_wipe.c:356 +#: lib/luks2/luks2_json_metadata.c:2724 lib/luks2/luks2_json_metadata.c:2992 #, c-format msgid "Failed to acquire OPAL lock on device %s." msgstr "Misslyckades med att erhålla OPAL-lås på enheten %s." -#: lib/setup.c:2570 +#: lib/setup.c:2538 msgid "Incorrect OPAL Admin key." msgstr "Felaktig OPAL Admin-nyckel." -#: lib/setup.c:2572 +#: lib/setup.c:2540 msgid "Cannot setup OPAL segment." msgstr "Det går inte att konfigurera OPAL-segmentet." -#: lib/setup.c:2642 +#: lib/setup.c:2622 #, c-format msgid "Cannot format device %s, OPAL device seems to be fully write-protected now." msgstr "Det går inte att formatera enheten %s, OPAL-enheten verkar skrivskyddad nu." -#: lib/setup.c:2644 +#: lib/setup.c:2624 msgid "This is perhaps a bug in firmware. Run OPAL PSID reset and reconnect for recovery." msgstr "Detta är kanske en bugg i den fasta programvaran. Kör OPAL PSID reset och återanslut för återhämtning." -#: lib/setup.c:2664 +#: lib/setup.c:2644 #, c-format msgid "Locking range %d reset on device %s failed." msgstr "Misslyckades med återställning av locking range %d på enheten %s." -#: lib/setup.c:2684 +#: lib/setup.c:2664 msgid "Can't format LOOPAES without device." -msgstr "Kan inte formatera LOOPAES utan enhet." +msgstr "Det går inte att formatera LOOPAES utan enhet." -#: lib/setup.c:2729 +#: lib/setup.c:2709 msgid "Can't format VERITY without device." msgstr "Det går inte att formatera VERITY utan enhet." -#: lib/setup.c:2740 lib/verity/verity.c:88 +#: lib/setup.c:2720 lib/verity/verity.c:88 #, c-format msgid "Unsupported VERITY hash type %d." msgstr "VERITY-hashtyp %d stöds inte." -#: lib/setup.c:2746 lib/verity/verity.c:96 +#: lib/setup.c:2726 lib/verity/verity.c:96 msgid "Unsupported VERITY block size." msgstr "VERITY-blockstorlek som inte stöds." -#: lib/setup.c:2751 lib/verity/verity.c:61 +#: lib/setup.c:2731 lib/verity/verity.c:61 msgid "Unsupported VERITY hash offset." -msgstr "VERITY-hashoffset som inte stöds." +msgstr "VERITY-hashförskjutning som inte stöds." -#: lib/setup.c:2756 +#: lib/setup.c:2736 msgid "Unsupported VERITY FEC offset." -msgstr "VERITY-FEC-offset som inte stöds." +msgstr "VERITY-FEC-förskjutning som inte stöds." -#: lib/setup.c:2780 +#: lib/setup.c:2760 msgid "Data area overlaps with hash area." msgstr "Dataområde spiller över på hashområdet." -#: lib/setup.c:2805 +#: lib/setup.c:2785 msgid "Hash area overlaps with FEC area." -msgstr "Hashområde spiller över på FEC-mrådet." +msgstr "Hashområde spiller över på FEC-området." -#: lib/setup.c:2812 +#: lib/setup.c:2792 msgid "Data area overlaps with FEC area." -msgstr "Dataområde spiller över på FEC-mrådet." +msgstr "Dataområde spiller över på FEC-området." + +#: lib/setup.c:2884 +msgid "Integrity key size mismatch." +msgstr "Integritetsnyckelstorleken stämmer inte." -#: lib/setup.c:2948 +#: lib/setup.c:2935 #, c-format msgid "WARNING: Requested tag size %d bytes differs from %s size output (%d bytes).\n" msgstr "VARNING: Begärd taggstorlek på %d byte skiljer sig från %s utdatastorlek (%d byte).\n" -#: lib/setup.c:3027 +#: lib/setup.c:3048 lib/setup.c:3150 #, c-format -msgid "Unknown crypt device type %s requested." -msgstr "Okänd typ av krypteringsenhet %s begärd." +msgid "Unknown or unsupported device type %s requested." +msgstr "Okänd eller inte stödd typ av krypteringsenhet %s begärd." -#: lib/setup.c:3334 lib/setup.c:3413 lib/setup.c:3426 +#: lib/setup.c:3064 +#, c-format +msgid "Device %s does not provide inline integrity data fields." +msgstr "Enheten %s tillhandahåller inte inline-integritetsdatafält." + +#: lib/setup.c:3070 +#, c-format +msgid "Inline tag size % [bytes] is larger than % provided by device %s." +msgstr "Storleken på inline-taggen % [byte] är större än % som tillhandahålls av enheten %s." + +#: lib/setup.c:3085 +#, c-format +msgid "Sector must be the same as device hardware sector (%zu bytes)." +msgstr "Sektorn måste vara samma som enhetens hårdvarusektor (%zu byte)." + +#: lib/setup.c:3515 lib/setup.c:3604 lib/setup.c:3617 #, c-format msgid "Unsupported parameters on device %s." msgstr "Parametrar som inte stöds på enheten %s." -#: lib/setup.c:3340 lib/setup.c:3433 lib/luks2/luks2_reencrypt.c:2910 -#: lib/luks2/luks2_reencrypt.c:3147 lib/luks2/luks2_reencrypt.c:3542 +#: lib/setup.c:3521 lib/setup.c:3624 lib/luks2/luks2_reencrypt.c:2928 +#: lib/luks2/luks2_reencrypt.c:3197 lib/luks2/luks2_reencrypt.c:3591 #, c-format msgid "Mismatching parameters on device %s." -msgstr "Kan inte rensa huvudet på enheten %s." +msgstr "Parametrarna på enheten %s stämmer inte överens." -#: lib/setup.c:3457 +#: lib/setup.c:3647 msgid "Crypt devices mismatch." msgstr "Krypteringsenheter har matchningsfel." -#: lib/setup.c:3494 lib/setup.c:3499 lib/luks2/luks2_reencrypt.c:2392 -#: lib/luks2/luks2_reencrypt.c:2926 lib/luks2/luks2_reencrypt.c:4111 +#: lib/setup.c:3679 lib/setup.c:3684 lib/luks2/luks2_reencrypt.c:2412 +#: lib/luks2/luks2_reencrypt.c:2944 lib/luks2/luks2_reencrypt.c:4233 #, c-format msgid "Failed to reload device %s." msgstr "Misslyckades med att läsa om enhet %s." -#: lib/setup.c:3505 lib/setup.c:3511 lib/luks2/luks2_reencrypt.c:2363 -#: lib/luks2/luks2_reencrypt.c:2370 lib/luks2/luks2_reencrypt.c:2940 +#: lib/setup.c:3690 lib/setup.c:3696 lib/luks2/luks2_reencrypt.c:2382 +#: lib/luks2/luks2_reencrypt.c:2389 lib/luks2/luks2_reencrypt.c:2958 #, c-format msgid "Failed to suspend device %s." msgstr "Misslyckades med att försätta enhet %s i vänteläge." -#: lib/setup.c:3517 lib/luks2/luks2_reencrypt.c:2377 -#: lib/luks2/luks2_reencrypt.c:2961 lib/luks2/luks2_reencrypt.c:4024 -#: lib/luks2/luks2_reencrypt.c:4115 +#: lib/setup.c:3702 lib/luks2/luks2_reencrypt.c:2396 +#: lib/luks2/luks2_reencrypt.c:2979 lib/luks2/luks2_reencrypt.c:4146 +#: lib/luks2/luks2_reencrypt.c:4237 #, c-format msgid "Failed to resume device %s." msgstr "Misslyckades med att återuppta enhet %s." -#: lib/setup.c:3532 +#: lib/setup.c:3717 #, c-format msgid "Fatal error while reloading device %s (on top of device %s)." msgstr "Ödesdigert fel vid omläsning av enhet %s (ovanpå enhet %s)." -#: lib/setup.c:3535 lib/setup.c:3537 +#: lib/setup.c:3720 lib/setup.c:3722 #, c-format msgid "Failed to switch device %s to dm-error." msgstr "Misslyckades med att växla enhet %s till dm-error." -#: lib/setup.c:3577 +#: lib/setup.c:3765 msgid "Can not resize LUKS2 device with static size." msgstr "Det går inte att ändra storlek på LUKS2-enhet med statisk storlek." -#: lib/setup.c:3622 +#: lib/setup.c:3770 +msgid "Resize of LUKS2 device with integrity protection is not supported." +msgstr "Storleksändring av LUKS2-enhet med integritetsskydd stöds inte." + +#: lib/setup.c:3816 msgid "Cannot resize loop device." msgstr "Det går inte att ändra storlek på loop-enhet." -#: lib/setup.c:3666 +#: lib/setup.c:3860 msgid "WARNING: Maximum size already set or kernel doesn't support resize.\n" msgstr "VARNING: Maximal storlek redan satt eller så stöder inte kärnan storleksändring.\n" -#: lib/setup.c:3732 +#: lib/setup.c:3926 msgid "Resize failed, the kernel doesn't support it." msgstr "Misslyckades med storleksändring, kärnan stöder inte detta." -#: lib/setup.c:3764 +#: lib/setup.c:3958 msgid "Do you really want to change UUID of device?" msgstr "Vill du verkligen ändra UUID för en enhet?" -#: lib/setup.c:3856 +#: lib/setup.c:4050 msgid "Header backup file does not contain compatible LUKS header." msgstr "Säkerhetskopian för huvud innehåller inte något giltigt LUKS-huvud." -#: lib/setup.c:3966 +#: lib/setup.c:4143 #, c-format msgid "Volume %s is not active." msgstr "Volymen %s är inte aktiv." -#: lib/setup.c:4032 +#: lib/setup.c:4198 #, c-format msgid "Volume %s is already suspended." msgstr "Volymen %s är redan i vänteläge." -#: lib/setup.c:4060 +#: lib/setup.c:4224 #, c-format msgid "Suspend is not supported for device %s." msgstr "Vänteläge stöds inte för enhet %s." -#: lib/setup.c:4062 lib/setup.c:4070 +#: lib/setup.c:4226 lib/setup.c:4234 #, c-format msgid "Error during suspending device %s." msgstr "Fel då enheten %s försattes i vänteläge." -#: lib/setup.c:4084 +#: lib/setup.c:4249 #, c-format msgid "Device %s was suspended but hardware OPAL device cannot be locked." -msgstr "Enheten %s var suspenderad men hårdvaran OPAL-enheten kan inte låsas." +msgstr "Enheten %s var suspenderad men det går inte att låsa OPAL-hårdvaruenheten." -#: lib/setup.c:4116 lib/setup.c:4288 +#: lib/setup.c:4280 lib/setup.c:4457 #, c-format msgid "Resume is not supported for device %s." msgstr "Att återuppta stöds inte för enhet %s." -#: lib/setup.c:4118 lib/setup.c:4279 lib/setup.c:4290 +#: lib/setup.c:4282 lib/setup.c:4447 lib/setup.c:4459 #, c-format msgid "Error during resuming device %s." msgstr "Fel då enheten %s återupptogs." -#: lib/setup.c:4137 +#: lib/setup.c:4301 msgid "Failed to unlink volume key from user specified keyring." msgstr "Misslyckades med att avlänka volymnyckeln från användarspecificerad nyckelring." -#: lib/setup.c:4252 lib/setup.c:4974 lib/setup.c:5796 +#: lib/setup.c:4423 lib/setup.c:5592 msgid "Failed to link volume key in user defined keyring." msgstr "Misslyckades med att sammankoppla volymnyckeln i den användardefinierade nyckelringen." -#: lib/setup.c:4353 src/cryptsetup.c:2848 +#: lib/setup.c:4521 src/cryptsetup.c:2723 #, c-format msgid "Volume %s is not suspended." msgstr "Volymen %s är inte i vänteläge." -#: lib/setup.c:4454 lib/setup.c:5114 lib/setup.c:5532 lib/setup.c:5551 -#: lib/setup.c:7425 lib/setup.c:7447 lib/setup.c:7496 src/cryptsetup.c:2358 +#: lib/setup.c:4622 lib/setup.c:7265 lib/setup.c:7287 lib/setup.c:7341 +#: src/cryptsetup.c:1858 src/cryptsetup.c:2262 src/cryptsetup.c:2280 +#: src/utils_reencrypt.c:305 src/utils_reencrypt.c:1966 msgid "Volume key does not match the volume." msgstr "Volymnyckeln stämmer inte överens med volymen." -#: lib/setup.c:4608 +#: lib/setup.c:4776 msgid "Failed to swap new key slot." msgstr "Misslyckades med att byta ny nyckelplats." -#: lib/setup.c:4706 +#: lib/setup.c:4874 #, c-format msgid "Key slot %d is invalid." msgstr "Nyckelplats %d är ogiltig." -#: lib/setup.c:4712 src/cryptsetup.c:2068 src/cryptsetup.c:2560 -#: src/cryptsetup.c:3241 src/cryptsetup.c:3301 +#: lib/setup.c:4880 src/cryptsetup.c:1979 src/cryptsetup.c:2439 +#: src/cryptsetup.c:3123 src/cryptsetup.c:3183 #, c-format msgid "Keyslot %d is not active." msgstr "Nyckelplats %d är inte aktiv." -#: lib/setup.c:4731 +#: lib/setup.c:4899 msgid "Device header overlaps with data area." msgstr "Dataområde spiller över på hashområdet." -#: lib/setup.c:5084 lib/setup.c:5184 +#: lib/setup.c:5120 msgid "Reencryption in-progress. Cannot activate device." msgstr "Omkryptering pågår. Det går inte att aktivera enheten." -#: lib/setup.c:5086 lib/setup.c:5186 lib/luks2/luks2_json_metadata.c:2848 -#: lib/luks2/luks2_reencrypt.c:3648 +#: lib/setup.c:5122 lib/luks2/luks2_json_metadata.c:2888 +#: lib/luks2/luks2_reencrypt.c:3722 msgid "Failed to get reencryption lock." msgstr "Misslyckades med att erhålla omkrypteringslås." -#: lib/setup.c:5098 +#: lib/setup.c:5144 msgid "LUKS2 reencryption recovery using volume key(s) failed." msgstr "Misslyckades med återställning av LUKS2-omkryptering med volymnyckel/ar." -#: lib/setup.c:5150 lib/setup.c:5240 -msgid "Failed to link volume keys in user defined keyring." -msgstr "Misslyckades med att sammankoppla volymnycklar i den användardefinierade nyckelringen." - -#: lib/setup.c:5199 lib/luks2/luks2_reencrypt.c:3667 -msgid "LUKS2 reencryption recovery failed." -msgstr "Misslyckades med återhämtning av LUKS2-omkryptering." - -#: lib/setup.c:5448 lib/setup.c:5562 lib/setup.c:5619 -msgid "Device type is not properly initialized." -msgstr "Enhetstypen är inte korrekt initierad." - -#: lib/setup.c:5503 +#: lib/setup.c:5280 #, c-format msgid "Device %s already exists." msgstr "Enheten %s finns redan." -#: lib/setup.c:5510 +#: lib/setup.c:5287 #, c-format msgid "Cannot use device %s, name is invalid or still in use." msgstr "Det går inte att använda enheten %s som fortfarande används eller har ett ogiltigt namn." -#: lib/setup.c:5528 +#: lib/setup.c:5299 +msgid "Reencryption volume keys do not match the volume." +msgstr "Nycklarna för omkrypteringsvolymen stämmer inte överens med volymen." + +#: lib/setup.c:5316 msgid "Incorrect volume key specified for plain device." msgstr "Felaktig volymnyckel för plain-enhet." -#: lib/setup.c:5542 -msgid "Reencryption volume keys do not match the volume." -msgstr "Nycklarna för omkrypteringsvolymen stämmer inte överens med volymen." +#: lib/setup.c:5342 lib/setup.c:5403 +msgid "Device type is not properly initialized." +msgstr "Enhetstypen är ej korrekt initierad." -#: lib/setup.c:5655 +#: lib/setup.c:5441 msgid "Kernel keyring is not supported by the kernel." msgstr "Kärnans nyckelring stöds inte av kärnan." -#: lib/setup.c:5659 +#: lib/setup.c:5445 msgid "Kernel keyring missing: required for passing signature to kernel." msgstr "Kärnans nyckelring saknas: krävs för att skicka signatur till kärnan." -#: lib/setup.c:5917 +#: lib/setup.c:5500 +#, c-format +msgid "Cannot use keyring key %s." +msgstr "Det går inte att använda nyckelringens nyckel %s." + +#: lib/setup.c:5713 msgid "Incorrect root hash specified for verity device." msgstr "Felaktig rothash angiven för verity-enhet." -#: lib/setup.c:5960 +#: lib/setup.c:5754 lib/setup.c:5779 msgid "OPAL does not support deferred deactivation." msgstr "OPAL stöder inte fördröjd inaktivering." -#: lib/setup.c:5976 -#, c-format -msgid "Could not cancel deferred remove from device %s." -msgstr "Misslyckades med att avbryta fördröjd borttagning från enheten %s." - -#: lib/setup.c:5983 lib/setup.c:5999 lib/luks2/luks2_json_metadata.c:2902 -#: src/utils_reencrypt.c:103 +#: lib/setup.c:5769 lib/setup.c:5800 lib/luks2/luks2_json_metadata.c:2953 +#: src/utils_reencrypt.c:89 #, c-format msgid "Device %s is still in use." msgstr "Enheten %s används fortfarande." -#: lib/setup.c:6008 +#: lib/setup.c:5787 +#, c-format +msgid "Could not cancel deferred remove from device %s." +msgstr "Misslyckades med att avbryta fördröjd borttagning från enheten %s." + +#: lib/setup.c:5809 #, c-format msgid "Invalid device %s." msgstr "Ogiltig enhet %s." -#: lib/setup.c:6148 +#: lib/setup.c:5956 msgid "Volume key buffer too small." msgstr "Buffert för volymnyckelen är för liten." -#: lib/setup.c:6165 +#: lib/setup.c:5967 msgid "Cannot retrieve volume key for LUKS2 device." msgstr "Det går inte att hämta volymnyckel för LUKS2-enhet." -#: lib/setup.c:6174 +#: lib/setup.c:5976 msgid "Cannot retrieve volume key for LUKS1 device." msgstr "Det går inte att hämta volymnyckel för LUKS1-enhet." -#: lib/setup.c:6184 +#: lib/setup.c:5990 msgid "Cannot retrieve volume key for plain device." -msgstr "Kan inte hämta volymnyckel för plain-enhet." +msgstr "Det går inte att hämta volymnyckel för plain-enhet." -#: lib/setup.c:6192 +#: lib/setup.c:5998 msgid "Cannot retrieve root hash for verity device." msgstr "Det går inte att hämta root-hash för verity-enhet." -#: lib/setup.c:6199 +#: lib/setup.c:6007 msgid "Cannot retrieve volume key for BITLK device." -msgstr "Det går inte hämta volymnyckel för BITLK-enhet." +msgstr "Det går inte att hämta volymnyckel för BITLK-enhet." -#: lib/setup.c:6204 +#: lib/setup.c:6012 msgid "Cannot retrieve volume key for FVAULT2 device." msgstr "Det går inte att hämta volymnyckel för FVAULT2-enhet." -#: lib/setup.c:6206 +#: lib/setup.c:6014 #, c-format msgid "This operation is not supported for %s crypt device." msgstr "Denna åtgärd stöds inte för krypteringsenheter av typen %s." -#: lib/setup.c:6390 lib/setup.c:6401 +#: lib/setup.c:6199 lib/setup.c:6210 msgid "Dump operation is not supported for this device type." msgstr "Utskriftsåtgärden stöds inte för denna enhetstyp." -#: lib/setup.c:6760 +#: lib/setup.c:6590 #, c-format msgid "Data offset is not multiple of %u bytes." msgstr "Dataförskjutning är inte en multipel av %u byte." -#: lib/setup.c:7068 +#: lib/setup.c:6898 #, c-format msgid "Cannot convert device %s which is still in use." -msgstr "Det går inte konvertera enheten %s som fortfarande används." +msgstr "Det går inte att konvertera enheten %s som fortfarande används." -#: lib/setup.c:7366 lib/setup.c:7505 +#: lib/setup.c:7206 lib/setup.c:7350 #, c-format msgid "Failed to assign keyslot %u as the new volume key." msgstr "Misslyckades med att tilldela nyckelplats %u som ny volymnyckel." -#: lib/setup.c:7390 +#: lib/setup.c:7230 msgid "Failed to initialize default LUKS2 keyslot parameters." msgstr "Misslyckades med att initiera standardnyckelplats för LUKS2-parametrar." -#: lib/setup.c:7396 +#: lib/setup.c:7236 #, c-format msgid "Failed to assign keyslot %d to digest." msgstr "Misslyckades med att tilldela nyckelplats %d till kontrollsummor." -#: lib/setup.c:7621 +#: lib/setup.c:7467 msgid "Cannot add key slot, all slots disabled and no volume key provided." msgstr "Det går inte att lägga till nyckelplats. Alla platser är inaktiverade och ingen volymnyckel har angivits." -#: lib/setup.c:7690 lib/verity/verity.c:330 +#: lib/setup.c:7540 lib/verity/verity.c:333 msgid "Failed to load key in kernel keyring." msgstr "Misslyckades med att öppna nyckelringen för kärnan." -#: lib/setup.c:7808 -msgid "Failed to unlink volume key from thread keyring." -msgstr "Misslyckades med frånkoppla nyckelringen för trådnyckelringen." - -#: lib/setup.c:7852 +#: lib/setup.c:7731 #, c-format msgid "Could not find keyring described by \"%s\"." -msgstr "Kunde inte hitta nyckelringen som beskrivs av \"%s\"." +msgstr "Det gick inte att hitta nyckelringen som beskrivs av \"%s\"." -#: lib/setup.c:7917 +#: lib/setup.c:7796 msgid "Failed to acquire global memory-hard access serialization lock." msgstr "Misslyckades med att inhämta globalt minneshårt serialiseringslås." -#: lib/utils.c:202 lib/tcrypt/tcrypt.c:490 +#: lib/utils.c:204 lib/tcrypt/tcrypt.c:490 msgid "Failed to open key file." msgstr "Misslyckades med att öppna nyckelfilen." -#: lib/utils.c:207 +#: lib/utils.c:212 msgid "Cannot read keyfile from a terminal." -msgstr "Det går inte läsa nyckelfilen från en terminal." +msgstr "Det går inte att läsa nyckelfilen från en terminal." -#: lib/utils.c:223 +#: lib/utils.c:228 msgid "Failed to stat key file." msgstr "Misslyckades med att ta stat på nyckelfilen." -#: lib/utils.c:231 lib/utils.c:252 +#: lib/utils.c:236 lib/utils.c:257 msgid "Cannot seek to requested keyfile offset." -msgstr "Det går inte att söka till begärd nyckelfilsoffset." +msgstr "Det går inte att söka till begärd nyckelfilsförskjutning." -#: lib/utils.c:246 lib/utils.c:261 src/utils_password.c:216 -#: src/utils_password.c:228 +#: lib/utils.c:251 lib/utils.c:266 src/utils_password.c:219 +#: src/utils_password.c:231 msgid "Out of memory while reading passphrase." msgstr "Slut på minne vid läsning av lösenfras." -#: lib/utils.c:281 +#: lib/utils.c:286 msgid "Error reading passphrase." msgstr "Fel vid läsning av lösenfras." -#: lib/utils.c:298 +#: lib/utils.c:303 msgid "Nothing to read on input." msgstr "Ingenting att läsa vid inmating." -#: lib/utils.c:305 +#: lib/utils.c:310 msgid "Maximum keyfile size exceeded." msgstr "Högsta nyckelfilsstorlek överskriden." -#: lib/utils.c:310 +#: lib/utils.c:315 msgid "Cannot read requested amount of data." -msgstr "Det går inte läsa begärd mängd data." +msgstr "Det går inte att läsa begärd mängd data." -#: lib/utils_device.c:200 lib/utils_storage_wrappers.c:97 -#: lib/luks1/keyencryption.c:78 src/utils_reencrypt.c:1458 +#: lib/utils_device.c:207 lib/utils_storage_wrappers.c:99 +#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2254 #, c-format msgid "Device %s does not exist or access denied." msgstr "Enheten %s finns inte eller åtkomst nekas." -#: lib/utils_device.c:210 +#: lib/utils_device.c:217 #, c-format msgid "Device %s is not compatible." -msgstr "Enheten %s är inte aktiv." +msgstr "Enheten %s är inte kompatibel." -#: lib/utils_device.c:554 +#: lib/utils_device.c:546 #, c-format msgid "Ignoring bogus optimal-io size for data device (%u bytes)." msgstr "Ignorerar falsk optimal-io-storlek för dataenheten (%u byte)." -#: lib/utils_device.c:715 +#: lib/utils_device.c:707 #, c-format msgid "Device %s is too small. Need at least % bytes." msgstr "Enhet %s är för liten. Behöver minst % byte." -#: lib/utils_device.c:796 +#: lib/utils_device.c:788 #, c-format msgid "Cannot use device %s which is in use (already mapped or mounted)." msgstr "Det går inte att använda enheten %s som redan används (redan mappad eller monterad)." -#: lib/utils_device.c:800 +#: lib/utils_device.c:792 #, c-format msgid "Cannot use device %s, permission denied." msgstr "Det går inte att använda enhet %s, behörighet nekad." -#: lib/utils_device.c:803 +#: lib/utils_device.c:795 #, c-format msgid "Cannot get info about device %s." -msgstr "Kan inte hämta information om enheten %s." +msgstr "Det går inte att hämta information om enheten %s." -#: lib/utils_device.c:826 +#: lib/utils_device.c:818 msgid "Cannot use a loopback device, running as non-root user." -msgstr "Kan inte använda en loopback-enhet, kör som icke-root-användare." +msgstr "Det går inte att använda en loopback-enhet, kör som icke-root-användare." -#: lib/utils_device.c:837 +#: lib/utils_device.c:829 msgid "Attaching loopback device failed (loop device with autoclear flag is required)." msgstr "Misslyckades med att fästa loopback-enhet (kräver loop-enhet med flaggan autoclear)." -#: lib/utils_device.c:885 +#: lib/utils_device.c:877 #, c-format msgid "Requested offset is beyond real size of device %s." -msgstr "Begärd offset är bortom faktiska enhetsstorleken för %s." +msgstr "Begärd förskjutning är bortom faktiska enhetsstorleken för %s." -#: lib/utils_device.c:893 +#: lib/utils_device.c:885 #, c-format msgid "Device %s has zero size." msgstr "Enheten %s har noll storlek." -#: lib/utils_pbkdf.c:103 +#: lib/utils_pbkdf.c:105 msgid "Requested PBKDF target time cannot be zero." -msgstr "Begärd måltid för PBKDF kan inte vara noll." +msgstr "Det går inte att ha begärd måltid för PBKDF som noll." -#: lib/utils_pbkdf.c:109 +#: lib/utils_pbkdf.c:111 #, c-format msgid "Unknown PBKDF type %s." msgstr "Okänd PBKDF-typ %s." -#: lib/utils_pbkdf.c:114 +#: lib/utils_pbkdf.c:116 #, c-format msgid "Requested hash %s is not supported." msgstr "Begärd hash %s stöds inte." -#: lib/utils_pbkdf.c:125 +#: lib/utils_pbkdf.c:127 msgid "Requested PBKDF type is not supported for LUKS1." msgstr "Begärd PBKDF-typ stöds inte för LUKS1." -#: lib/utils_pbkdf.c:131 +#: lib/utils_pbkdf.c:133 msgid "PBKDF max memory or parallel threads must not be set with pbkdf2." msgstr "Högsta minne för PBKDF eller parallella trådar får inte sättas med pbkdf2." -#: lib/utils_pbkdf.c:136 lib/utils_pbkdf.c:146 +#: lib/utils_pbkdf.c:138 lib/utils_pbkdf.c:148 #, c-format msgid "Forced iteration count is too low for %s (minimum is %u)." msgstr "Tvingad iterationsuppräkning är för liten för %s (minsta är %u)." -#: lib/utils_pbkdf.c:151 +#: lib/utils_pbkdf.c:153 #, c-format msgid "Forced memory cost is too low for %s (minimum is %u kilobytes)." msgstr "Tvingad minneskostnad är för låg för %s (minimum är %u kilobyte)." -#: lib/utils_pbkdf.c:158 +#: lib/utils_pbkdf.c:160 #, c-format msgid "Requested maximum PBKDF memory cost is too high (maximum is %d kilobytes)." msgstr "Kostnaden för det begärda högsta minnet för PBKDF är för högt (maximum är %d kilobyte)." -#: lib/utils_pbkdf.c:163 +#: lib/utils_pbkdf.c:165 +msgid "Requested maximum PBKDF memory cost is too high (limited by the integer maximal size)." +msgstr "Kostnaden för det begärda högsta minnet för PBKDF är för högt (begränsas av heltalets maximala storlek)." + +#: lib/utils_pbkdf.c:169 msgid "Requested maximum PBKDF memory cannot be zero." -msgstr "Högst begärt minne för PBKDF kan inte vara noll." +msgstr "Det går inte att ha högst begärt minne för PBKDF som noll." + +#: lib/utils_pbkdf.c:173 +#, c-format +msgid "Requested maximum PBKDF parallel cost is too high (maximum is %d)." +msgstr "Begärd maximal PBKDF-parallellkostnad är för hög (max är %d)." -#: lib/utils_pbkdf.c:167 +#: lib/utils_pbkdf.c:178 msgid "Requested PBKDF parallel threads cannot be zero." -msgstr "Begärda parallella trådar för PBKDF kan inte vara noll." +msgstr "Det går inte att ha begärda parallella trådar för PBKDF som noll." -#: lib/utils_pbkdf.c:187 +#: lib/utils_pbkdf.c:198 msgid "Only PBKDF2 is supported in FIPS mode." msgstr "Stöder endast PBKDF2 i FIPS-läge." @@ -884,25 +922,25 @@ msgstr "Låsningen avbruten. Låsningsökvägen %s/%s oanvändbar (inte en katal msgid "Locking aborted. The locking path %s/%s is unusable (%s is not a directory)." msgstr "Låsningen avbruten. Låsningsökvägen %s/%s oanvändbar (%s är inte en katalog)." -#: lib/utils_wipe.c:143 lib/utils_wipe.c:214 src/utils_reencrypt_luks1.c:702 -#: src/utils_reencrypt_luks1.c:795 +#: lib/utils_wipe.c:143 lib/utils_wipe.c:218 src/utils_reencrypt_luks1.c:700 +#: src/utils_reencrypt_luks1.c:793 msgid "Cannot seek to device offset." -msgstr "Det går inte att söka till enhetsoffset." +msgstr "Det går inte att söka till enhetsförskjutning." -#: lib/utils_wipe.c:236 +#: lib/utils_wipe.c:240 #, c-format msgid "Device wipe error, offset %." msgstr "Fel vid radering av enhet, förskjutning %." -#: lib/utils_wipe.c:331 +#: lib/utils_wipe.c:332 msgid "Incorrect OPAL PSID." msgstr "Felaktig OPAL PSID." -#: lib/utils_wipe.c:333 +#: lib/utils_wipe.c:334 msgid "Cannot erase OPAL device." msgstr "Det går inte att radera OPAL-enhet." -#: lib/luks1/keyencryption.c:26 +#: lib/luks1/keyencryption.c:27 #, c-format msgid "" "Failed to setup dm-crypt key mapping for device %s.\n" @@ -911,47 +949,47 @@ msgstr "" "Misslyckades med att konfigurera nyckelmappning för dm-crypt för enheten %s. \n" "Kontrollera att kärnan har stöd för chiffret %s (kontrollera syslog för mer information)." -#: lib/luks1/keyencryption.c:31 +#: lib/luks1/keyencryption.c:32 msgid "Key size in XTS mode must be 256 or 512 bits." msgstr "Nyckelstorlek i XTS-läge måste vara en multipel av 256 eller 512 bitar." -#: lib/luks1/keyencryption.c:33 +#: lib/luks1/keyencryption.c:34 msgid "Cipher specification should be in [cipher]-[mode]-[iv] format." msgstr "Chifferspecifikation ska vara i formatet [chiffer] - [läge] - [iv]." -#: lib/luks1/keyencryption.c:84 lib/luks1/keymanage.c:353 -#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1119 -#: lib/luks2/luks2_json_metadata.c:1515 lib/luks2/luks2_keyslot.c:709 +#: lib/luks1/keyencryption.c:85 lib/luks1/keymanage.c:353 +#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1150 +#: lib/luks2/luks2_json_metadata.c:1518 lib/luks2/luks2_keyslot.c:711 #, c-format msgid "Cannot write to device %s, permission denied." -msgstr "Kan inte skriva till enhet %s, behörighet nekad." +msgstr "Det går inte att skriva till enhet %s, behörighet nekad." -#: lib/luks1/keyencryption.c:107 +#: lib/luks1/keyencryption.c:108 msgid "Failed to open temporary keystore device." msgstr "Misslyckades med att öppna temporär nyckellagringsenhet." -#: lib/luks1/keyencryption.c:114 +#: lib/luks1/keyencryption.c:115 msgid "Failed to access temporary keystore device." msgstr "Misslyckades med att komma åt temporär nyckellagringsenhet." -#: lib/luks1/keyencryption.c:187 lib/luks2/luks2_keyslot_luks2.c:49 +#: lib/luks1/keyencryption.c:189 lib/luks2/luks2_keyslot_luks2.c:49 #: lib/luks2/luks2_keyslot_luks2.c:67 lib/luks2/luks2_keyslot_reenc.c:184 msgid "IO error while encrypting keyslot." msgstr "In-/utfel vid kryptering av nyckelplats." -#: lib/luks1/keyencryption.c:233 lib/luks1/keymanage.c:356 +#: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:356 #: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:668 -#: lib/fvault2/fvault2.c:864 lib/verity/verity.c:67 lib/verity/verity.c:183 -#: lib/verity/verity_hash.c:307 lib/verity/verity_hash.c:316 -#: lib/verity/verity_hash.c:336 lib/verity/verity_fec.c:247 +#: lib/fvault2/fvault2.c:870 lib/verity/verity.c:67 lib/verity/verity.c:183 +#: lib/verity/verity_hash.c:312 lib/verity/verity_hash.c:321 +#: lib/verity/verity_hash.c:341 lib/verity/verity_fec.c:247 #: lib/verity/verity_fec.c:259 lib/verity/verity_fec.c:264 -#: lib/luks2/luks2_json_metadata.c:1518 src/utils_reencrypt_luks1.c:108 +#: lib/luks2/luks2_json_metadata.c:1521 src/utils_reencrypt_luks1.c:108 #: src/utils_reencrypt_luks1.c:120 #, c-format msgid "Cannot open device %s." msgstr "Det går inte att öppna enheten %s." -#: lib/luks1/keyencryption.c:244 lib/luks2/luks2_keyslot_luks2.c:126 +#: lib/luks1/keyencryption.c:247 lib/luks2/luks2_keyslot_luks2.c:128 msgid "IO error while decrypting keyslot." msgstr "In-/utfel vid dekryptering av nyckelplats." @@ -967,32 +1005,32 @@ msgstr "Enhet %s är för liten. (LUKS1 kräver minst % byte.)" msgid "LUKS keyslot %u is invalid." msgstr "LUKS-nyckelplats %u är ogiltig." -#: lib/luks1/keymanage.c:254 lib/luks2/luks2_json_metadata.c:1378 +#: lib/luks1/keymanage.c:254 lib/luks2/luks2_json_metadata.c:1382 #, c-format msgid "Requested header backup file %s already exists." msgstr "Begärd säkerhetskopia %s av huvud finns redan." -#: lib/luks1/keymanage.c:256 lib/luks2/luks2_json_metadata.c:1380 +#: lib/luks1/keymanage.c:256 lib/luks2/luks2_json_metadata.c:1384 #, c-format msgid "Cannot create header backup file %s." msgstr "Det går inte att skapa säkerhetskopia för huvud %s." -#: lib/luks1/keymanage.c:263 lib/luks2/luks2_json_metadata.c:1387 +#: lib/luks1/keymanage.c:263 lib/luks2/luks2_json_metadata.c:1391 #, c-format msgid "Cannot write header backup file %s." -msgstr "Det går inte skriva säkerhetskopia för huvud %s." +msgstr "Det går inte att skriva säkerhetskopia för huvud %s." -#: lib/luks1/keymanage.c:295 lib/luks2/luks2_json_metadata.c:1424 +#: lib/luks1/keymanage.c:295 lib/luks2/luks2_json_metadata.c:1428 msgid "Backup file does not contain valid LUKS header." msgstr "Säkerhetskopian innehåller inte något giltigt LUKS-huvud." #: lib/luks1/keymanage.c:308 lib/luks1/keymanage.c:580 -#: lib/luks2/luks2_json_metadata.c:1445 +#: lib/luks2/luks2_json_metadata.c:1450 #, c-format msgid "Cannot open header backup file %s." msgstr "Det går inte att öppna säkerhetskopia för huvud %s." -#: lib/luks1/keymanage.c:316 lib/luks2/luks2_json_metadata.c:1453 +#: lib/luks1/keymanage.c:316 lib/luks2/luks2_json_metadata.c:1458 #, c-format msgid "Cannot read header backup file %s." msgstr "Det går inte att läsa säkerhetskopia för huvud %s." @@ -1014,7 +1052,7 @@ msgstr "innehåller inget LUKS-huvud. Ersättning av huvud kan förstöra data p msgid "already contains LUKS header. Replacing header will destroy existing keyslots." msgstr "innehåller redan LUKS-huvud. Ersättningen av huvud kommer att förstöra befintliga nyckelplatser." -#: lib/luks1/keymanage.c:337 lib/luks2/luks2_json_metadata.c:1487 +#: lib/luks1/keymanage.c:337 lib/luks2/luks2_json_metadata.c:1490 msgid "" "\n" "WARNING: real device header has different UUID than backup!" @@ -1041,7 +1079,7 @@ msgid "Cipher hash repaired to lowercase (%s)." msgstr "Chifferhash reparerad till gemener (%s)." #: lib/luks1/keymanage.c:417 lib/luks1/keymanage.c:523 -#: lib/luks1/keymanage.c:779 +#: lib/luks1/keymanage.c:777 #, c-format msgid "Requested LUKS hash %s is not supported." msgstr "Begärd LUKS-hash %s stöds inte." @@ -1053,7 +1091,7 @@ msgstr "Reparerar nyckelplatser." #: lib/luks1/keymanage.c:450 #, c-format msgid "Keyslot %i: offset repaired (%u -> %u)." -msgstr "Nyckelplats %i: reparerad offset (%u -> %u)." +msgstr "Nyckelplats %i: reparerad förskjutning (%u -> %u)." #: lib/luks1/keymanage.c:458 #, c-format @@ -1088,7 +1126,7 @@ msgstr "LUKS-chifferläge %s är ogiltigt." msgid "LUKS hash %s is invalid." msgstr "LUKS-hash %s är ogiltig." -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1356 +#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1369 msgid "No known problems detected for LUKS header." msgstr "Inga kända problem identifierade för LUKS-huvud." @@ -1102,67 +1140,67 @@ msgstr "Fel vid uppdatering av LUKS-huvud på enheten %s." msgid "Error re-reading LUKS header after update on device %s." msgstr "Fel vid omläsning av LUKS-huvud efter uppdatering på enheten %s." -#: lib/luks1/keymanage.c:773 +#: lib/luks1/keymanage.c:771 msgid "Data offset for LUKS header must be either 0 or higher than header size." -msgstr "Data-offset för fristående LUKS-huvud måste vara antingen 0 eller större än huvudstorleken." +msgstr "Dataförskjutning för fristående LUKS-huvud måste vara antingen 0 eller större än huvudstorleken." -#: lib/luks1/keymanage.c:784 lib/luks1/keymanage.c:853 -#: lib/luks2/luks2_json_format.c:230 lib/luks2/luks2_json_metadata.c:1261 -#: src/utils_reencrypt.c:541 +#: lib/luks1/keymanage.c:782 lib/luks1/keymanage.c:853 +#: lib/luks2/luks2_json_format.c:231 lib/luks2/luks2_json_metadata.c:1261 +#: src/utils_reencrypt.c:701 msgid "Wrong LUKS UUID format provided." msgstr "Felaktigt LUKS-UUID-format angavs." -#: lib/luks1/keymanage.c:806 +#: lib/luks1/keymanage.c:804 msgid "Cannot create LUKS header: reading random salt failed." -msgstr "Kan inte skapa LUKS-huvud: läsning av slumpmässigt salt misslyckades." +msgstr "Det går inte att skapa LUKS-huvud: läsning av slumpmässigt salt misslyckades." #: lib/luks1/keymanage.c:832 #, c-format msgid "Cannot create LUKS header: header digest failed (using hash %s)." -msgstr "Kan inte skapa LUKS-huvud: kontrollsumma för huvud misslyckades (använder hashen %s)." +msgstr "Det går inte att skapa LUKS-huvud: kontrollsumma för huvud misslyckades (använder hashen %s)." -#: lib/luks1/keymanage.c:876 +#: lib/luks1/keymanage.c:877 #, c-format msgid "Key slot %d active, purge first." msgstr "Nyckelplats %d är aktiv, rensa först." -#: lib/luks1/keymanage.c:882 +#: lib/luks1/keymanage.c:883 #, c-format msgid "Key slot %d material includes too few stripes. Header manipulation?" msgstr "Nyckelplats %d material inkluderar för få remsor. Har huvudet manipulerats?" -#: lib/luks1/keymanage.c:918 lib/luks2/luks2_keyslot_luks2.c:257 +#: lib/luks1/keymanage.c:921 lib/luks2/luks2_keyslot_luks2.c:260 msgid "PBKDF2 iteration value overflow." msgstr "PBKDF2-iterationsvärde spillde över." -#: lib/luks1/keymanage.c:1027 +#: lib/luks1/keymanage.c:1040 #, c-format msgid "Cannot open keyslot (using hash %s)." -msgstr "Det går inte att öppna nyckeplats (använder hash %s)." +msgstr "Det går inte att öppna nyckelplats (använder hash %s)." -#: lib/luks1/keymanage.c:1105 +#: lib/luks1/keymanage.c:1136 #, c-format msgid "Key slot %d is invalid, please select keyslot between 0 and %d." msgstr "Nyckelplats %d är ogiltig. Välj en nyckelplats mellan 0 och %d." -#: lib/luks1/keymanage.c:1123 lib/luks2/luks2_keyslot.c:713 +#: lib/luks1/keymanage.c:1154 lib/luks2/luks2_keyslot.c:715 #, c-format msgid "Cannot wipe device %s." -msgstr "Kan inte rensa enheten %s." +msgstr "Det går inte att rensa enheten %s." -#: lib/loopaes/loopaes.c:133 +#: lib/loopaes/loopaes.c:140 msgid "Detected not yet supported GPG encrypted keyfile." msgstr "Identifierade en GPG-krypterad nyckelfil som ännu inte stöds." -#: lib/loopaes/loopaes.c:134 +#: lib/loopaes/loopaes.c:141 msgid "Please use gpg --decrypt | cryptsetup --keyfile=- ...\n" msgstr "Använd gpg --decrypt | cryptsetup --keyfile=- …\n" -#: lib/loopaes/loopaes.c:155 lib/loopaes/loopaes.c:175 +#: lib/loopaes/loopaes.c:162 lib/loopaes/loopaes.c:182 msgid "Incompatible loop-AES keyfile detected." msgstr "Identifierade inkompatibel loop-AES-nyckelfil." -#: lib/loopaes/loopaes.c:232 +#: lib/loopaes/loopaes.c:238 msgid "Kernel does not support loop-AES compatible mapping." msgstr "Kärnan stöder inte loop-AES-kompatibel mappning." @@ -1179,170 +1217,199 @@ msgstr "Högsta TCRYPT-lösenfraslängd (%zu) överskriden." #: lib/tcrypt/tcrypt.c:589 #, c-format msgid "PBKDF2 hash algorithm %s not available, skipping." -msgstr "PBKDF2-hashalgoritm %s ej tillgänglig, hoppar över." +msgstr "PBKDF2-hashalgoritm %s inte tillgänglig, hoppar över." -#: lib/tcrypt/tcrypt.c:608 src/cryptsetup.c:1231 +#: lib/tcrypt/tcrypt.c:608 src/cryptsetup.c:1242 msgid "Required kernel crypto interface not available." msgstr "Begärt kryptogränssnitt för kärnan inte tillgängligt." -#: lib/tcrypt/tcrypt.c:610 src/cryptsetup.c:1233 +#: lib/tcrypt/tcrypt.c:610 src/cryptsetup.c:1244 msgid "Ensure you have algif_skcipher kernel module loaded." msgstr "Försäkra dig om att kärnmodulen algif_skcipher är inläst." -#: lib/tcrypt/tcrypt.c:751 +#: lib/tcrypt/tcrypt.c:752 #, c-format msgid "Activation is not supported for %d sector size." msgstr "Aktivering stöds inte för sektorstorlek %d." -#: lib/tcrypt/tcrypt.c:757 +#: lib/tcrypt/tcrypt.c:758 msgid "Kernel does not support activation for this TCRYPT legacy mode." msgstr "Kärnan stöder inte aktivering för detta föråldrade TCRYPT-läge." -#: lib/tcrypt/tcrypt.c:788 +#: lib/tcrypt/tcrypt.c:813 #, c-format msgid "Activating TCRYPT system encryption for partition %s." msgstr "Aktiverar TCRYPT-systemkryptering för partition %s." -#: lib/tcrypt/tcrypt.c:871 +#: lib/tcrypt/tcrypt.c:828 +msgid "Cannot determine TCRYPT system partition offset, activating whole encrypted area." +msgstr "Det går inte att avgöra TCRYPT-systempartitionens förskjutning, aktiverar hela det krypterade området." + +#: lib/tcrypt/tcrypt.c:837 +msgid "Cannot determine TCRYPT system partition offset, activating device as a system partition." +msgstr "Det går inte att avgöra TCRYPT-systempartitionens förskjutning, aktiverar enheten som systempartition." + +#: lib/tcrypt/tcrypt.c:917 msgid "Kernel does not support TCRYPT compatible mapping." msgstr "Kärnan stöder inte TCRYPT-kompatibel mappning." -#: lib/tcrypt/tcrypt.c:1090 +#: lib/tcrypt/tcrypt.c:1146 msgid "This function is not supported without TCRYPT header load." msgstr "Denna funktion stöds inte utan inläsning av TCRYPT-huvud." -#: lib/bitlk/bitlk.c:265 +#: lib/bitlk/bitlk.c:293 #, c-format msgid "Unexpected metadata entry type '%u' found when parsing supported Volume Master Key." msgstr "Oväntad metadatapost av typ ”%u” funnen vid tolkning av volymhuvudnyckel." -#: lib/bitlk/bitlk.c:327 +#: lib/bitlk/bitlk.c:351 msgid "Invalid string found when parsing Volume Master Key." msgstr "Ogiltig sträng funnen vid tolkning av volymhuvudnyckel." -#: lib/bitlk/bitlk.c:331 +#: lib/bitlk/bitlk.c:355 #, c-format msgid "Unexpected string ('%s') found when parsing supported Volume Master Key." msgstr "Oväntad sträng (”%s”) funnen vid tolkning av volymhuvudnycklar som stöds." -#: lib/bitlk/bitlk.c:351 +#: lib/bitlk/bitlk.c:375 #, c-format msgid "Unexpected metadata entry value '%u' found when parsing supported Volume Master Key." msgstr "Oväntad metadatapostvärde av typ ”%u” funnen vid tolkning av volymhuvudnycklar som stöds." -#: lib/bitlk/bitlk.c:453 +#: lib/bitlk/bitlk.c:528 msgid "BITLK version 1 is currently not supported." -msgstr "BITLK version 1 stöds ej för närvarande." +msgstr "BITLK version 1 stöds inte för närvarande." -#: lib/bitlk/bitlk.c:459 +#: lib/bitlk/bitlk.c:534 msgid "Invalid or unknown boot signature for BITLK device." msgstr "Ogiltig eller okänd boot-signatur för BITLK-enhet." -#: lib/bitlk/bitlk.c:471 +#: lib/bitlk/bitlk.c:546 #, c-format msgid "Unsupported sector size %." msgstr "Stöder inte sektorstorleken %." -#: lib/bitlk/bitlk.c:479 +#: lib/bitlk/bitlk.c:554 #, c-format msgid "Failed to read BITLK header from %s." msgstr "Misslyckades med att läsa BITLK-huvud från %s." -#: lib/bitlk/bitlk.c:504 +#: lib/bitlk/bitlk.c:593 +#, c-format +msgid "Failed to read or validate BITLK FVE metadata copy #%d from %s." +msgstr "Misslyckades med att läsa eller validera BITLK FVE-metadata-kopia #%d från %s." + +#: lib/bitlk/bitlk.c:603 +#, c-format +msgid "Failed to read and validate BITLK FVE metadata from %s." +msgstr "Misslyckades med att läsa och validera BITLK FVE-metadata från %s." + +#: lib/bitlk/bitlk.c:610 +#, c-format +msgid "Failed to validate the location of BITLK FVE metadata from %s." +msgstr "Misslyckades med att validera platsen för BITLK FVE-metadata från %s." + +#: lib/bitlk/bitlk.c:621 +#, c-format +msgid "BITLK FVE metadata changed between reads from %s." +msgstr "BITLK FVE-metadata ändrades mellan läsningar från %s." + +#: lib/bitlk/bitlk.c:628 #, c-format -msgid "Failed to read BITLK FVE metadata from %s." -msgstr "Misslyckades med att läsa BITLK FVE-metadata från %s." +msgid "Failed to hash BITLK FVE metadata read from %s." +msgstr "Misslyckades med att hasha BITLK FVE-metadata som lästes från %s." -#: lib/bitlk/bitlk.c:555 +#: lib/bitlk/bitlk.c:644 +#, c-format +msgid "Failed to parse BITLK FVE validation metadata from %s." +msgstr "Misslyckades med att tolka BITLK FVE-valideringsmetadata från %s." + +#: lib/bitlk/bitlk.c:695 msgid "Unknown or unsupported encryption type." -msgstr "Krypteringstypen är okänd eller stöds ej." +msgstr "Krypteringstypen är okänd eller stöds inte." -#: lib/bitlk/bitlk.c:595 +#: lib/bitlk/bitlk.c:733 #, c-format -msgid "Failed to read BITLK metadata entries from %s." -msgstr "Misslyckades med att läsa BITLK -metadataposter från %s." +msgid "Failed to check BITLK metadata entries previously read from %s." +msgstr "Misslyckades med att kontrollera BITLK-metadataposter som tidigare lästes från %s." -#: lib/bitlk/bitlk.c:712 +#: lib/bitlk/bitlk.c:853 msgid "Failed to convert BITLK volume description" msgstr "Misslyckades med att konvertera BITLK-volymbeskrivning" -#: lib/bitlk/bitlk.c:877 +#: lib/bitlk/bitlk.c:1018 #, c-format msgid "Unexpected metadata entry type '%u' found when parsing external key." msgstr "Oväntad metadatapost av typ ”%u” funnen vid tolkning av extern nyckel." -#: lib/bitlk/bitlk.c:900 +#: lib/bitlk/bitlk.c:1041 #, c-format msgid "BEK file GUID '%s' does not match GUID of the volume." msgstr "BEK-filens GUID '%s' stämmer inte överens med GUID för volymen." -#: lib/bitlk/bitlk.c:904 +#: lib/bitlk/bitlk.c:1045 #, c-format msgid "Unexpected metadata entry value '%u' found when parsing external key." msgstr "Oväntad metadatapostvärde av typ ”%u” funnen vid tolkning av extern nyckel." -#: lib/bitlk/bitlk.c:943 +#: lib/bitlk/bitlk.c:1084 #, c-format msgid "Unsupported BEK metadata version %" msgstr "Inget stöd för BEK metadata-version %" -#: lib/bitlk/bitlk.c:948 +#: lib/bitlk/bitlk.c:1089 #, c-format msgid "Unexpected BEK metadata size % does not match BEK file length" msgstr "Oväntad BEK-metadatastorlek % matchar inte BEK-fillängd" -#: lib/bitlk/bitlk.c:974 +#: lib/bitlk/bitlk.c:1115 msgid "Unexpected metadata entry found when parsing startup key." msgstr "Oväntad metadatapost av typ ”%u” funnen vid tolkning av uppstartsnyckel." -#: lib/bitlk/bitlk.c:1069 +#: lib/bitlk/bitlk.c:1218 msgid "This operation is not supported." -msgstr "Denna åtgärd stöds ej." +msgstr "Denna åtgärd stöds inte." -#: lib/bitlk/bitlk.c:1077 +#: lib/bitlk/bitlk.c:1226 msgid "Unexpected key data size." msgstr "Oväntad nyckeldatastorlek." -#: lib/bitlk/bitlk.c:1203 +#: lib/bitlk/bitlk.c:1431 msgid "This BITLK device is in an unsupported state and cannot be activated." -msgstr "Denna BITLK-enhet är i tillstånd som inte stöds och kan inte aktiveras." +msgstr "Denna BITLK-enhet är i ett tillstånd som inte stöds och går inte att aktivera." -#: lib/bitlk/bitlk.c:1208 +#: lib/bitlk/bitlk.c:1436 #, c-format msgid "BITLK devices with type '%s' cannot be activated." msgstr "Det går inte att aktivera BITLK-enheter av typen ”%s”." -#: lib/bitlk/bitlk.c:1215 -msgid "Activation of partially decrypted BITLK device is not supported." -msgstr "Aktivering av delvis avkrypterade BITLK-enheter stöds ej." - -#: lib/bitlk/bitlk.c:1256 +#: lib/bitlk/bitlk.c:1475 #, c-format msgid "WARNING: BitLocker volume size % does not match the underlying device size %" msgstr "VARNING: BitLocker-volymstorlek % överensstämmer inte med underliggande enhetstorlek %" -#: lib/bitlk/bitlk.c:1383 +#: lib/bitlk/bitlk.c:1602 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK IV." msgstr "Det går inte att aktivera enheten, kärnan dm-crypt saknar stöd för BITLK IV." -#: lib/bitlk/bitlk.c:1387 +#: lib/bitlk/bitlk.c:1606 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK Elephant diffuser." msgstr "Det går inte att aktivera enheten, kärnan dm-crypt saknar stöd för BITLK Elephant diffuser." -#: lib/bitlk/bitlk.c:1391 +#: lib/bitlk/bitlk.c:1610 msgid "Cannot activate device, kernel dm-crypt is missing support for large sector size." msgstr "Det går inte att aktivera enheten, kärnan dm-crypt saknar stöd för stor sektorstorlek." -#: lib/bitlk/bitlk.c:1395 +#: lib/bitlk/bitlk.c:1614 msgid "Cannot activate device, kernel dm-zero module is missing." msgstr "Det går inte att aktivera enheten, kärnmodulen dm-zero saknas." -#: lib/fvault2/fvault2.c:529 +#: lib/fvault2/fvault2.c:530 #, c-format msgid "Could not read %u bytes of volume header." msgstr "Det går inte att läsa %u byte från volymhuvudet." -#: lib/fvault2/fvault2.c:541 +#: lib/fvault2/fvault2.c:542 #, c-format msgid "Unsupported FVAULT2 version %." msgstr "Stöder inte FVAULT2-version %." @@ -1379,26 +1446,26 @@ msgstr "Begärd hashsignaturverifiering %s stöds inte." msgid "Root hash signature required." msgstr "Root-hashsignatur krävs." -#: lib/verity/verity.c:281 +#: lib/verity/verity.c:282 msgid "Errors cannot be repaired with FEC device." -msgstr "Det går inte reparera fel med FEC-enhet." +msgstr "Det går inte att reparera fel med FEC-enhet." -#: lib/verity/verity.c:283 +#: lib/verity/verity.c:284 #, c-format msgid "Found %u repairable errors with FEC device." -msgstr "Fann %u reparerbara fel med FEC-enhet." +msgstr "Hittade %u reparerbara fel med FEC-enhet." -#: lib/verity/verity.c:364 +#: lib/verity/verity.c:368 msgid "Kernel does not support dm-verity mapping." msgstr "Kärnan stöder inte dm-verity-mappning." -#: lib/verity/verity.c:368 +#: lib/verity/verity.c:372 msgid "Kernel does not support dm-verity signature option." msgstr "Kärnan stöder inte flaggan för dm-verity-signatur." -#: lib/verity/verity.c:379 +#: lib/verity/verity.c:383 msgid "Verity device detected corruption after activation." -msgstr "Verity-enhet identifierades som skadad efter aktivering." +msgstr "Verity-enheten upptäckte korruption efter aktivering." #: lib/verity/verity_hash.c:53 #, c-format @@ -1408,7 +1475,7 @@ msgstr "Ledigt utrymme är inte nollställt vid position %." #: lib/verity/verity_hash.c:154 lib/verity/verity_hash.c:287 #: lib/verity/verity_hash.c:298 msgid "Device offset overflow." -msgstr "Enhets-offset spillde över." +msgstr "Enhetsförskjutning överskred gränsen." #: lib/verity/verity_hash.c:205 #, c-format @@ -1419,26 +1486,26 @@ msgstr "Verifiering misslyckades vid %." msgid "Hash area overflow." msgstr "Hash-området spillde över." -#: lib/verity/verity_hash.c:367 +#: lib/verity/verity_hash.c:372 msgid "Verification of data area failed." msgstr "Misslyckades med verifiering av dataområde." -#: lib/verity/verity_hash.c:372 +#: lib/verity/verity_hash.c:377 msgid "Verification of root hash failed." msgstr "Misslyckades med verifiering av rot-hash." -#: lib/verity/verity_hash.c:378 +#: lib/verity/verity_hash.c:383 msgid "Input/output error while creating hash area." -msgstr "In-/utdatafel vid skapandet av hashområde." +msgstr "In-/utdatafel vid skapandet av hashområdet." -#: lib/verity/verity_hash.c:380 +#: lib/verity/verity_hash.c:385 msgid "Creation of hash area failed." -msgstr "Misslyckades med skapandet av hashområde." +msgstr "Misslyckades med att skapa hashområdet." -#: lib/verity/verity_hash.c:415 +#: lib/verity/verity_hash.c:420 #, c-format msgid "WARNING: Kernel cannot activate device if data block size exceeds page size (%u)." -msgstr "VARNING: Kärnan kan inte aktivera enhet om datablockstorleken överskrider sidstorlek (%u)." +msgstr "VARNING: Det går inte att aktivera enheten om datablockstorleken överskrider sidstorleken (%u)." #: lib/verity/verity_fec.c:118 msgid "Failed to allocate RS context." @@ -1451,22 +1518,22 @@ msgstr "Misslyckades med att allokera buffert." #: lib/verity/verity_fec.c:146 #, c-format msgid "Failed to read RS block % byte %d." -msgstr "Misslyckades med att läsa RS block % byte %d." +msgstr "Misslyckades med att läsa RS-block % byte %d." #: lib/verity/verity_fec.c:159 #, c-format msgid "Failed to read parity for RS block %." -msgstr "Misslyckades med att skriva paritet för RS block %." +msgstr "Misslyckades med att läsa paritet för RS-block %." #: lib/verity/verity_fec.c:167 #, c-format msgid "Failed to repair parity for block %." -msgstr "Misslyckades med att skriva paritet för RS block %." +msgstr "Misslyckades med att reparera paritet för block %." #: lib/verity/verity_fec.c:179 #, c-format msgid "Failed to write parity for RS block %." -msgstr "Misslyckades med att skriva paritet för RS block %." +msgstr "Misslyckades med att skriva paritet för RS-block %." #: lib/verity/verity_fec.c:195 msgid "Block sizes must match for FEC." @@ -1485,34 +1552,38 @@ msgstr "Ogiltig FEC-segmentlängd." msgid "Failed to determine size for device %s." msgstr "Misslyckades med att bestämma storlek för enhet %s." -#: lib/integrity/integrity.c:44 +#: lib/integrity/integrity.c:50 #, c-format msgid "Incompatible kernel dm-integrity metadata (version %u) detected on %s." msgstr "Inkompatibel kärnmetadata dm-integrity (version %u) identifierad på %s." -#: lib/integrity/integrity.c:264 lib/integrity/integrity.c:441 +#: lib/integrity/integrity.c:304 lib/integrity/integrity.c:488 msgid "Kernel does not support dm-integrity mapping." msgstr "Kärnan stöder inte dm-integrity-mappning." -#: lib/integrity/integrity.c:270 +#: lib/integrity/integrity.c:310 msgid "Kernel does not support dm-integrity fixed metadata alignment." msgstr "Kärnan stöder inte fast metadataförskjutning för dm-integrity." -#: lib/integrity/integrity.c:279 +#: lib/integrity/integrity.c:319 msgid "Kernel refuses to activate insecure recalculate option (see legacy activation options to override)." msgstr "Kärnan tillåter inte att den osäkra flaggan recalculate aktiveras (se föråldrade aktiveringsflaggor för att åsidosätta)." -#: lib/luks2/luks2_disk_metadata.c:379 lib/luks2/luks2_json_metadata.c:1184 -#: lib/luks2/luks2_json_metadata.c:1507 +#: lib/integrity/integrity.c:325 +msgid "Kernel does not support dm-integrity inline mode." +msgstr "Kärnan stöder inte dm-integrity inline-läge." + +#: lib/luks2/luks2_disk_metadata.c:382 lib/luks2/luks2_json_metadata.c:1184 +#: lib/luks2/luks2_json_metadata.c:1510 #, c-format msgid "Failed to acquire write lock on device %s." msgstr "Misslyckades med att få skrivlås på enheten %s." -#: lib/luks2/luks2_disk_metadata.c:388 +#: lib/luks2/luks2_disk_metadata.c:391 msgid "Detected attempt for concurrent LUKS2 metadata update. Aborting operation." msgstr "Identifierade samtidiga försök att uppdatera LUKS2-metadata. Avbryter åtgärden." -#: lib/luks2/luks2_disk_metadata.c:697 lib/luks2/luks2_disk_metadata.c:718 +#: lib/luks2/luks2_disk_metadata.c:726 lib/luks2/luks2_disk_metadata.c:747 msgid "" "Device contains ambiguous signatures, cannot auto-recover LUKS2.\n" "Please run \"cryptsetup repair\" for recovery." @@ -1520,183 +1591,187 @@ msgstr "" "Enheten innehåller tvetydiga signaturer, det går inte att automatiskt återhämta LUKS2.\n" "Kör ”cryptsetup repair” för återhämtning." -#: lib/luks2/luks2_json_format.c:218 +#: lib/luks2/luks2_json_format.c:219 #, c-format msgid "WARNING: keyslots area (% bytes) is very small, available LUKS2 keyslot count is very limited.\n" msgstr "VARNING: nyckelplatsområdet (% byte) är väldigt liten, tillgängligt LUKS2-nyckelplatsantal är väldigt begränsat.\n" -#: lib/luks2/luks2_json_format.c:417 +#: lib/luks2/luks2_json_format.c:418 msgid "Requested data offset is too small." -msgstr "Begärd dataoff för liten." +msgstr "Begärd dataförskjutning är för liten." -#: lib/luks2/luks2_json_format.c:458 +#: lib/luks2/luks2_json_format.c:459 #, c-format msgid "WARNING: LUKS2 metadata size changed to % bytes.\n" msgstr "VARNING: storlek på LUKS2-metadata ändrades till % byte.\n" -#: lib/luks2/luks2_json_format.c:462 +#: lib/luks2/luks2_json_format.c:463 #, c-format msgid "WARNING: LUKS2 keyslots area size changed to % bytes.\n" msgstr "VARNING: storlek på LUKS2-nyckelplatsområde ändrades till % byte.\n" -#: lib/luks2/luks2_json_metadata.c:1171 lib/luks2/luks2_json_metadata.c:1353 -#: lib/luks2/luks2_json_metadata.c:1413 lib/luks2/luks2_keyslot_luks2.c:81 -#: lib/luks2/luks2_keyslot_luks2.c:103 +#: lib/luks2/luks2_json_metadata.c:1171 lib/luks2/luks2_json_metadata.c:1357 +#: lib/luks2/luks2_json_metadata.c:1417 lib/luks2/luks2_keyslot_luks2.c:81 +#: lib/luks2/luks2_keyslot_luks2.c:105 #, c-format msgid "Failed to acquire read lock on device %s." msgstr "Misslyckades med att erhålla läslås på enheten %s." -#: lib/luks2/luks2_json_metadata.c:1430 +#: lib/luks2/luks2_json_metadata.c:1277 +msgid "Label is too long." +msgstr "Etiketten är för lång." + +#: lib/luks2/luks2_json_metadata.c:1435 #, c-format msgid "Forbidden LUKS2 requirements detected in backup %s." msgstr "Förbjudna LUKS2-krav identifierade i säkerhetskopian %s." -#: lib/luks2/luks2_json_metadata.c:1471 +#: lib/luks2/luks2_json_metadata.c:1474 msgid "Data offset differ on device and backup, restore failed." msgstr "Dataoffset skiljer sig på enhet och säkerhetskopia. Återställningen misslyckades." -#: lib/luks2/luks2_json_metadata.c:1477 +#: lib/luks2/luks2_json_metadata.c:1480 msgid "Binary header with keyslot areas size differ on device and backup, restore failed." msgstr "Binärhuvud med nyckelstorlek skiljer sig på enhet och säkerhetskopia. Återställningen misslyckades." -#: lib/luks2/luks2_json_metadata.c:1484 +#: lib/luks2/luks2_json_metadata.c:1487 #, c-format msgid "Device %s %s%s%s%s" msgstr "Enhet %s %s%s%s%s" -#: lib/luks2/luks2_json_metadata.c:1485 +#: lib/luks2/luks2_json_metadata.c:1488 msgid "does not contain LUKS2 header. Replacing header can destroy data on that device." msgstr "innehåller inget LUKS2-huvud. Ersättning av huvud kan förstöra data på enheten." -#: lib/luks2/luks2_json_metadata.c:1486 +#: lib/luks2/luks2_json_metadata.c:1489 msgid "already contains LUKS2 header. Replacing header will destroy existing keyslots." msgstr "innehåller redan LUKS2-huvud. Ersättningen av huvud kommer att förstöra befintliga nyckelplatser." -#: lib/luks2/luks2_json_metadata.c:1488 +#: lib/luks2/luks2_json_metadata.c:1491 msgid "" "\n" "WARNING: unknown LUKS2 requirements detected in real device header!\n" "Replacing header with backup may corrupt the data on that device!" msgstr "" "\n" -"VARNING:okända LUKS2-krav identifierade i huvudet för riktig enhet!\n" +"VARNING: okända LUKS2-krav identifierade i huvudet för den riktiga enheten!\n" "Att ersätta huvudet med en säkerhetskopia kan göra data korrupt på enheten!" -#: lib/luks2/luks2_json_metadata.c:1490 +#: lib/luks2/luks2_json_metadata.c:1493 msgid "" "\n" "WARNING: Unfinished offline reencryption detected on the device!\n" "Replacing header with backup may corrupt data." msgstr "" "\n" -"VARNING:Oavslutad frånkopplade kryptering identifierad på enheten!\n" +"VARNING: oavslutad frånkopplad omkryptering identifierad på enheten!\n" "Att ersätta huvudet med en säkerhetskopia kan orsaka korrupt data." -#: lib/luks2/luks2_json_metadata.c:1587 +#: lib/luks2/luks2_json_metadata.c:1591 #, c-format msgid "Ignored unknown flag %s." msgstr "Ignorerade okänd flagga %s." -#: lib/luks2/luks2_json_metadata.c:2512 lib/luks2/luks2_reencrypt.c:2092 +#: lib/luks2/luks2_json_metadata.c:2545 lib/luks2/luks2_reencrypt.c:2109 #, c-format msgid "Missing key for dm-crypt segment %u" msgstr "Saknar nyckel för dm-crypt-segmentet %u" -#: lib/luks2/luks2_json_metadata.c:2524 lib/luks2/luks2_reencrypt.c:2106 +#: lib/luks2/luks2_json_metadata.c:2557 lib/luks2/luks2_reencrypt.c:2122 msgid "Failed to set dm-crypt segment." msgstr "Misslyckades med att läsa dm-crypt-segment." -#: lib/luks2/luks2_json_metadata.c:2530 lib/luks2/luks2_reencrypt.c:2112 +#: lib/luks2/luks2_json_metadata.c:2563 lib/luks2/luks2_reencrypt.c:2128 msgid "Failed to set dm-linear segment." msgstr "Misslyckades med att läsa dm-linear-segment." -#: lib/luks2/luks2_json_metadata.c:2649 src/utils_reencrypt.c:420 +#: lib/luks2/luks2_json_metadata.c:2683 src/utils_reencrypt.c:578 msgid "No known cipher specification pattern detected in LUKS2 header." msgstr "Inget känt chifferspecifikationsmönster kunde identifieras i LUKS2-huvudet." -#: lib/luks2/luks2_json_metadata.c:2657 +#: lib/luks2/luks2_json_metadata.c:2691 msgid "OPAL device must have static device size." msgstr "OPAL-enheten måste ha en statisk enhetsstorlek." -#: lib/luks2/luks2_json_metadata.c:2677 +#: lib/luks2/luks2_json_metadata.c:2711 msgid "Encrypted OPAL device with integrity must be smaller than locking range." msgstr "Krypterad OPAL-enhet med integritet måste vara mindre än låsområdet." -#: lib/luks2/luks2_json_metadata.c:2682 +#: lib/luks2/luks2_json_metadata.c:2716 msgid "OPAL device must have same size as locking range." msgstr "OPAL-enheten måste ha samma storlek som låsområdet." -#: lib/luks2/luks2_json_metadata.c:2702 +#: lib/luks2/luks2_json_metadata.c:2736 #, c-format msgid "OPAL device is %s already unlocked.\n" msgstr "OPAL-enheten %s är redan upplåst.\n" -#: lib/luks2/luks2_json_metadata.c:2735 +#: lib/luks2/luks2_json_metadata.c:2775 msgid "Unsupported device integrity configuration." -msgstr "Integritetskonfiguration som ej stöds på enheten." +msgstr "Integritetskonfiguration som inte stöds på enheten." -#: lib/luks2/luks2_json_metadata.c:2751 +#: lib/luks2/luks2_json_metadata.c:2791 msgid "Underlying dm-integrity device with unexpected provided data sectors." msgstr "Underliggande dm-integrity-enhet med oväntade tillhandahållna datasektorer." -#: lib/luks2/luks2_json_metadata.c:2846 +#: lib/luks2/luks2_json_metadata.c:2886 msgid "Reencryption in-progress. Cannot deactivate device." msgstr "Omkryptering pågår. Det går inte att inaktivera enhet." -#: lib/luks2/luks2_json_metadata.c:2857 lib/luks2/luks2_reencrypt.c:4161 +#: lib/luks2/luks2_json_metadata.c:2897 lib/luks2/luks2_reencrypt.c:4283 #, c-format msgid "Failed to replace suspended device %s with dm-error target." msgstr "Misslyckades med att ersätta inaktiverad enhet %s med målet dm-error." -#: lib/luks2/luks2_json_metadata.c:2926 lib/luks2/luks2_json_metadata.c:2948 +#: lib/luks2/luks2_json_metadata.c:2976 lib/luks2/luks2_json_metadata.c:2998 #, c-format msgid "Device %s was deactivated but hardware OPAL device cannot be locked." -msgstr "Enheten %s avaktiverades men hårdvaran OPAL-enheten kan inte låsas." - -#: lib/luks2/luks2_json_metadata.c:2967 -msgid "Failed to read LUKS2 requirements." -msgstr "Misslyckades med att läsa LUKS2-krav." +msgstr "Enheten %s avaktiverades men det går inte att låsa OPAL-hårdvaruenheten." -#: lib/luks2/luks2_json_metadata.c:2974 +#: lib/luks2/luks2_json_metadata.c:3020 msgid "Unmet LUKS2 requirements detected." msgstr "Ej uppfyllt LUKS2-krav identifierat." -#: lib/luks2/luks2_json_metadata.c:2982 +#: lib/luks2/luks2_json_metadata.c:3028 msgid "Operation incompatible with device marked for legacy reencryption. Aborting." msgstr "Åtgärden inkompatibel med enhet markerad för föråldrad omkryptering. Avbryter." -#: lib/luks2/luks2_json_metadata.c:2984 +#: lib/luks2/luks2_json_metadata.c:3030 msgid "Operation incompatible with device marked for LUKS2 reencryption. Aborting." msgstr "Åtgärden inkompatibel med enhet markerad för LUKS2-omkryptering. Avbryter." -#: lib/luks2/luks2_json_metadata.c:2986 +#: lib/luks2/luks2_json_metadata.c:3032 msgid "Operation incompatible with device using OPAL. Aborting." msgstr "Åtgärden inkompatibel med enhet som använder OPAL. Avbryter." -#: lib/luks2/luks2_keyslot.c:560 lib/luks2/luks2_keyslot.c:599 +#: lib/luks2/luks2_json_metadata.c:3034 +msgid "Operation incompatible with device using inline HW tags. Aborting." +msgstr "Åtgärden inkompatibel med enhet som använder inline-hårdvarutaggar. Avbryter." + +#: lib/luks2/luks2_keyslot.c:543 lib/luks2/luks2_keyslot.c:601 msgid "Not enough available memory to open a keyslot." msgstr "Inte nog med minne för att öppna en nyckelplats." -#: lib/luks2/luks2_keyslot.c:562 lib/luks2/luks2_keyslot.c:601 +#: lib/luks2/luks2_keyslot.c:545 lib/luks2/luks2_keyslot.c:603 msgid "Keyslot open failed." msgstr "Misslyckades med att öppna nyckelplats." -#: lib/luks2/luks2_keyslot_luks2.c:42 lib/luks2/luks2_keyslot_luks2.c:97 +#: lib/luks2/luks2_keyslot_luks2.c:42 lib/luks2/luks2_keyslot_luks2.c:99 #, c-format msgid "Cannot use %s-%s cipher for keyslot encryption." msgstr "Det går inte att använda %s-%s-chiffer för nyckelplatskryptering." -#: lib/luks2/luks2_keyslot_luks2.c:272 lib/luks2/luks2_keyslot_luks2.c:391 -#: lib/luks2/luks2_keyslot_reenc.c:434 lib/luks2/luks2_reencrypt.c:2716 +#: lib/luks2/luks2_keyslot_luks2.c:262 +msgid "Not enough memory for keyslot key derivation." +msgstr "Inte nog med minne för nyckelplatsens nyckelhärledning." + +#: lib/luks2/luks2_keyslot_luks2.c:276 lib/luks2/luks2_keyslot_luks2.c:405 +#: lib/luks2/luks2_keyslot_reenc.c:434 lib/luks2/luks2_reencrypt.c:2733 #, c-format msgid "Hash algorithm %s is not available." msgstr "Hashalgoritm %s är inte tillgänglig." -#: lib/luks2/luks2_keyslot_luks2.c:358 -msgid "Warning: keyslot operation could fail as it requires more than available memory.\n" -msgstr "Varning: keyslot-operationen kan misslyckas eftersom den kräver mer än tillgängligt minne.\n" - -#: lib/luks2/luks2_keyslot_luks2.c:507 +#: lib/luks2/luks2_keyslot_luks2.c:522 msgid "No space for new keyslot." msgstr "Inget utrymme för ny nyckelplats." @@ -1707,443 +1782,453 @@ msgstr "Begärde ogiltigt återhämtningsläge för omkryptering." #: lib/luks2/luks2_keyslot_reenc.c:704 #, c-format msgid "Can not update resilience type. New type only provides % bytes, required space is: % bytes." -msgstr "Det går inte att uppdatera återhämtningstup. Ny typ tillhandahåller % byte, begärt utrymme är: % byte." +msgstr "Det går inte att uppdatera återhämtningstypen. Ny typ tillhandahåller % byte, begärt utrymme är: % byte." #: lib/luks2/luks2_keyslot_reenc.c:714 msgid "Failed to refresh reencryption verification digest." -msgstr "Misslyckades med att sammandrag för omkrypteringsverifikation." +msgstr "Misslyckades med att uppdatera sammandraget för omkrypteringsverifikation." #: lib/luks2/luks2_luks1_convert.c:532 #, c-format msgid "Cannot check status of device with uuid: %s." -msgstr "Det går inte kontrollera status för enheten med uuid: %s." +msgstr "Det går inte att kontrollera status för enheten med uuid: %s." #: lib/luks2/luks2_luks1_convert.c:558 msgid "Unable to convert header with LUKSMETA additional metadata." msgstr "Det går inte att konvertera huvud med ytterligare metadata för LUKSMETA." -#: lib/luks2/luks2_luks1_convert.c:589 lib/luks2/luks2_reencrypt.c:3797 +#: lib/luks2/luks2_luks1_convert.c:590 lib/luks2/luks2_reencrypt.c:3890 #, c-format msgid "Unable to use cipher specification %s-%s for LUKS2." msgstr "Det går inte att använda chiffer-spefikationen %s-%s för LUKS2." -#: lib/luks2/luks2_luks1_convert.c:604 +#: lib/luks2/luks2_luks1_convert.c:599 +#, c-format +msgid "Unable to use cipher specification %s-%s for LUKS2 keyslot." +msgstr "Det går inte att använda chiffer-specifikationen %s-%s för LUKS2-nyckelplats." + +#: lib/luks2/luks2_luks1_convert.c:614 msgid "Unable to move keyslot area. Not enough space." -msgstr "Kunde inte flytta nyckelplatsområde. Inte nog med utrymme." +msgstr "Det gick inte att flytta nyckelplatsområde. Inte nog med utrymme." -#: lib/luks2/luks2_luks1_convert.c:643 +#: lib/luks2/luks2_luks1_convert.c:653 msgid "Cannot convert to LUKS2 format - invalid metadata." msgstr "Det går inte att konvertera till LUKS2-format - ogiltig metadata." -#: lib/luks2/luks2_luks1_convert.c:660 +#: lib/luks2/luks2_luks1_convert.c:670 msgid "Unable to move keyslot area. LUKS2 keyslots area too small." -msgstr "Kunde inte flytta nyckelplatsområde. Området för LUKS2-nyckelplatser är för litet." +msgstr "Det gick inte att flytta nyckelplatsområde. Området för LUKS2-nyckelplatser är för litet." -#: lib/luks2/luks2_luks1_convert.c:666 lib/luks2/luks2_luks1_convert.c:960 +#: lib/luks2/luks2_luks1_convert.c:676 lib/luks2/luks2_luks1_convert.c:1006 msgid "Unable to move keyslot area." -msgstr "Kunde inte flytta nyckelplatsområde." +msgstr "Det gick inte att flytta nyckelplatsområde." -#: lib/luks2/luks2_luks1_convert.c:756 +#: lib/luks2/luks2_luks1_convert.c:791 msgid "Cannot convert to LUKS1 format - default segment encryption sector size is not 512 bytes." msgstr "Det går inte att konvertera till LUKS1-format - standardkrypteringstorleken är inte 512 byte." -#: lib/luks2/luks2_luks1_convert.c:764 +#: lib/luks2/luks2_luks1_convert.c:799 msgid "Cannot convert to LUKS1 format - key slot digests are not LUKS1 compatible." msgstr "Det går inte att konvertera till LUKS1-format - kontrollsummor för nyckelplatser är inte LUKS1-kompatibla." -#: lib/luks2/luks2_luks1_convert.c:776 +#: lib/luks2/luks2_luks1_convert.c:813 #, c-format msgid "Cannot convert to LUKS1 format - device uses wrapped key cipher %s." msgstr "Det går inte att konvertera till LUKS1-format - enheterna använder inbäddat nyckelchiffer %s." -#: lib/luks2/luks2_luks1_convert.c:781 +#: lib/luks2/luks2_luks1_convert.c:818 msgid "Cannot convert to LUKS1 format - device uses more segments." msgstr "Det går inte att konvertera till LUKS1-format - enheten använder flera segment." -#: lib/luks2/luks2_luks1_convert.c:789 +#: lib/luks2/luks2_luks1_convert.c:826 #, c-format msgid "Cannot convert to LUKS1 format - LUKS2 header contains %u token(s)." msgstr "Det går inte att konvertera till LUKS1-format - LUKS2-huvud innehåller %u token." -#: lib/luks2/luks2_luks1_convert.c:803 +#: lib/luks2/luks2_luks1_convert.c:832 +msgid "Cannot convert to LUKS1 format - there are no active keyslots." +msgstr "Det går inte att konvertera till LUKS1-format - det finns inga aktiva nyckelplatser." + +#: lib/luks2/luks2_luks1_convert.c:844 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is in invalid state." msgstr "Det går inte att konvertera till LUKS1-format - nyckelplats %u är i ogiltigt tillstånd." -#: lib/luks2/luks2_luks1_convert.c:808 +#: lib/luks2/luks2_luks1_convert.c:849 +#, c-format +msgid "Cannot convert to LUKS1 format - keyslot %u is unbound." +msgstr "Det går inte att konvertera till LUKS1-format - nyckelplats %u är obunden." + +#: lib/luks2/luks2_luks1_convert.c:854 #, c-format msgid "Cannot convert to LUKS1 format - slot %u (over maximum slots) is still active." msgstr "Det går inte att konvertera till LUKS1-format - plats %u (av maximalt antal platser) är fortfarande aktiv." -#: lib/luks2/luks2_luks1_convert.c:813 +#: lib/luks2/luks2_luks1_convert.c:859 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is not LUKS1 compatible." msgstr "Det går inte att konvertera till LUKS1-format - nyckelplats %u är inte LUKS1-kompatibel." -#: lib/luks2/luks2_reencrypt.c:1183 +#: lib/luks2/luks2_reencrypt.c:1198 #, c-format msgid "Hotzone size must be multiple of calculated zone alignment (%zu bytes)." -msgstr "Hotzone-storleken måste vara en multipel av beräknad zonjustering (%zu-byte)." +msgstr "Varmzonens storlek måste vara en multipel av beräknad zonjustering (%zu byte)." -#: lib/luks2/luks2_reencrypt.c:1188 +#: lib/luks2/luks2_reencrypt.c:1203 #, c-format msgid "Device size must be multiple of calculated zone alignment (%zu bytes)." msgstr "Enhetsstorleken måste vara en multipel av beräknad zonstorlek (%zu byte)." -#: lib/luks2/luks2_reencrypt.c:1395 lib/luks2/luks2_reencrypt.c:1582 -#: lib/luks2/luks2_reencrypt.c:1665 lib/luks2/luks2_reencrypt.c:1707 -#: lib/luks2/luks2_reencrypt.c:3956 +#: lib/luks2/luks2_reencrypt.c:1410 lib/luks2/luks2_reencrypt.c:1596 +#: lib/luks2/luks2_reencrypt.c:1679 lib/luks2/luks2_reencrypt.c:1721 +#: lib/luks2/luks2_reencrypt.c:4077 msgid "Failed to initialize old segment storage wrapper." msgstr "Misslyckades med att initiera gammal segmentlagringsinbäddning." -#: lib/luks2/luks2_reencrypt.c:1409 lib/luks2/luks2_reencrypt.c:1560 +#: lib/luks2/luks2_reencrypt.c:1424 lib/luks2/luks2_reencrypt.c:1574 msgid "Failed to initialize new segment storage wrapper." msgstr "Misslyckades med att initiera ny segmentlagringsinbäddning." -#: lib/luks2/luks2_reencrypt.c:1536 lib/luks2/luks2_reencrypt.c:3968 +#: lib/luks2/luks2_reencrypt.c:1550 lib/luks2/luks2_reencrypt.c:4089 msgid "Failed to initialize hotzone protection." -msgstr "Misslyckades med att initiera skydd av hotzone." +msgstr "Misslyckades med att initiera skydd av varmzon." -#: lib/luks2/luks2_reencrypt.c:1609 +#: lib/luks2/luks2_reencrypt.c:1623 msgid "Failed to read checksums for current hotzone." -msgstr "Misslyckades med att läsa kontrollsummor från aktuell varm zon." +msgstr "Misslyckades med att läsa kontrollsummor från aktuell varmzon." -#: lib/luks2/luks2_reencrypt.c:1616 lib/luks2/luks2_reencrypt.c:3982 +#: lib/luks2/luks2_reencrypt.c:1630 lib/luks2/luks2_reencrypt.c:4104 #, c-format msgid "Failed to read hotzone area starting at %." -msgstr "Misslyckades med att läsa område för varm zon med början %." +msgstr "Misslyckades med att läsa område för varmzon med början %." -#: lib/luks2/luks2_reencrypt.c:1635 +#: lib/luks2/luks2_reencrypt.c:1649 #, c-format msgid "Failed to decrypt sector %zu." msgstr "Misslyckades med att dekryptera sektor %zu." -#: lib/luks2/luks2_reencrypt.c:1641 +#: lib/luks2/luks2_reencrypt.c:1655 #, c-format msgid "Failed to recover sector %zu." msgstr "Misslyckades med återhämta sektor %zu." -#: lib/luks2/luks2_reencrypt.c:2205 +#: lib/luks2/luks2_reencrypt.c:2208 #, c-format msgid "Source and target device sizes don't match. Source %, target: %." msgstr "Käll- och målenhetstorlekar stämmer inte överens. Källa %, mål: %." -#: lib/luks2/luks2_reencrypt.c:2303 +#: lib/luks2/luks2_reencrypt.c:2310 #, c-format msgid "Failed to activate hotzone device %s." -msgstr "Misslyckades med att aktivera varm zon-enhet %s." +msgstr "Misslyckades med att aktivera varmzon-enhet %s." -#: lib/luks2/luks2_reencrypt.c:2320 +#: lib/luks2/luks2_reencrypt.c:2322 +#, c-format +msgid "Failed to allocate hotzone device %s." +msgstr "Misslyckades med att allokera varmzon-enhet %s." + +#: lib/luks2/luks2_reencrypt.c:2339 #, c-format msgid "Failed to activate overlay device %s with actual origin table." msgstr "Misslyckades med att aktivera överlagringsenheten %s med aktuell ursprungstabell." -#: lib/luks2/luks2_reencrypt.c:2327 +#: lib/luks2/luks2_reencrypt.c:2346 #, c-format msgid "Failed to load new mapping for device %s." msgstr "Misslyckades med att läsa in ny mappning för enhet %s." -#: lib/luks2/luks2_reencrypt.c:2398 +#: lib/luks2/luks2_reencrypt.c:2418 msgid "Failed to refresh reencryption devices stack." msgstr "Misslyckades med att uppdatera listan över omkrypteringsenheter." -#: lib/luks2/luks2_reencrypt.c:2598 +#: lib/luks2/luks2_reencrypt.c:2615 msgid "Failed to set new keyslots area size." msgstr "Misslyckades med att sätta en ny storlek på nyckelplatsområdet." -#: lib/luks2/luks2_reencrypt.c:2734 +#: lib/luks2/luks2_reencrypt.c:2751 #, c-format msgid "Data shift value is not aligned to encryption sector size (% bytes)." msgstr "Dataskiftning är inte justerad till krypteringssektorstorlek (% byte)." -#: lib/luks2/luks2_reencrypt.c:2771 src/utils_reencrypt.c:176 +#: lib/luks2/luks2_reencrypt.c:2788 src/utils_reencrypt.c:162 #, c-format msgid "Unsupported resilience mode %s" msgstr "Stöder inte motståndsläge %s" -#: lib/luks2/luks2_reencrypt.c:2808 +#: lib/luks2/luks2_reencrypt.c:2824 msgid "Moved segment size can not be greater than data shift value." -msgstr "Flyttat segmentstorlek kan inte vara större än dataskift-värdet." +msgstr "Det går inte att ha en flyttad segmentstorlek som är större än dataskiftvärdet." -#: lib/luks2/luks2_reencrypt.c:2850 +#: lib/luks2/luks2_reencrypt.c:2866 msgid "Invalid reencryption resilience parameters." msgstr "Ogiltiga parametrar för omkrypteringsmotstånd." -#: lib/luks2/luks2_reencrypt.c:2872 +#: lib/luks2/luks2_reencrypt.c:2888 #, c-format msgid "Moved segment too large. Requested size %, available space for: %." msgstr "Flyttat segment för stor. Begärd storlek %, tillgänglig storlek för: %." -#: lib/luks2/luks2_reencrypt.c:2959 +#: lib/luks2/luks2_reencrypt.c:2977 msgid "Failed to clear table." msgstr "Misslyckades med att rensa tabellen." -#: lib/luks2/luks2_reencrypt.c:3045 +#: lib/luks2/luks2_reencrypt.c:3063 +#, c-format +msgid "Data shift (% sectors) is less than future data offset (% sectors)." +msgstr "Dataskiftning (% sektorer) är mindre än framtida dataförskjutning (% sektorer)." + +#: lib/luks2/luks2_reencrypt.c:3078 lib/luks2/luks2_reencrypt.c:3085 msgid "Reduced data size is larger than real device size." msgstr "Minskad datastorlek är större än den riktiga enhetsstorleken." -#: lib/luks2/luks2_reencrypt.c:3052 +#: lib/luks2/luks2_reencrypt.c:3095 #, c-format msgid "Data device is not aligned to encryption sector size (% bytes)." msgstr "Dataenhet är inte justerad till krypteringssektorstorlek (% byte)." -#: lib/luks2/luks2_reencrypt.c:3086 -#, c-format -msgid "Data shift (% sectors) is less than future data offset (% sectors)." -msgstr "Dataskiftning (% sektorer) är mindre än framtida dataförskjutning (% sektorer)." - -#: lib/luks2/luks2_reencrypt.c:3093 lib/luks2/luks2_reencrypt.c:3591 -#: lib/luks2/luks2_reencrypt.c:3612 +#: lib/luks2/luks2_reencrypt.c:3125 lib/luks2/luks2_reencrypt.c:3640 +#: lib/luks2/luks2_reencrypt.c:3661 #, c-format msgid "Failed to open %s in exclusive mode (already mapped or mounted)." msgstr "Misslyckades med att öppna %s i exklusivt läge (redan mappad eller monterad)." -#: lib/luks2/luks2_reencrypt.c:3282 +#: lib/luks2/luks2_reencrypt.c:3332 msgid "Device not marked for LUKS2 reencryption." msgstr "Enheten är inte markerad för LUKS2-omkryptering." -#: lib/luks2/luks2_reencrypt.c:3299 lib/luks2/luks2_reencrypt.c:4273 +#: lib/luks2/luks2_reencrypt.c:3349 lib/luks2/luks2_reencrypt.c:4400 msgid "Failed to load LUKS2 reencryption context." msgstr "Misslyckades med att läsa in LUKS2-omkrypteringskontext." -#: lib/luks2/luks2_reencrypt.c:3389 -msgid "Failed to get reencryption state." -msgstr "Misslyckades med att erhålla status för omkryptering." - -#: lib/luks2/luks2_reencrypt.c:3393 lib/luks2/luks2_reencrypt.c:3707 +#: lib/luks2/luks2_reencrypt.c:3441 lib/luks2/luks2_reencrypt.c:3781 msgid "Device is not in reencryption." msgstr "Enheten är inte i omkryptering." -#: lib/luks2/luks2_reencrypt.c:3400 lib/luks2/luks2_reencrypt.c:3714 +#: lib/luks2/luks2_reencrypt.c:3448 lib/luks2/luks2_reencrypt.c:3788 msgid "Reencryption process is already running." msgstr "Omkrypteringsprocessen pågår redan." -#: lib/luks2/luks2_reencrypt.c:3402 lib/luks2/luks2_reencrypt.c:3716 +#: lib/luks2/luks2_reencrypt.c:3450 lib/luks2/luks2_reencrypt.c:3790 msgid "Failed to acquire reencryption lock." msgstr "Misslyckades med att erhålla skrivlås för omkryptering." -#: lib/luks2/luks2_reencrypt.c:3420 +#: lib/luks2/luks2_reencrypt.c:3468 msgid "Cannot proceed with reencryption. Run reencryption recovery first." msgstr "Det går inte att fortsätta med omkryptering. Kör återställning av omkryptering först." -#: lib/luks2/luks2_reencrypt.c:3555 +#: lib/luks2/luks2_reencrypt.c:3604 msgid "Active device size and requested reencryption size don't match." msgstr "Aktiv enhetsstorlek och begärd omkrypteringsstorlek skiljer sig åt." -#: lib/luks2/luks2_reencrypt.c:3569 +#: lib/luks2/luks2_reencrypt.c:3618 msgid "Illegal device size requested in reencryption parameters." msgstr "Ogiltig enhetsstorlek begärd i omkrypteringsparametrarna." -#: lib/luks2/luks2_reencrypt.c:3646 +#: lib/luks2/luks2_reencrypt.c:3720 msgid "Reencryption in-progress. Cannot perform recovery." msgstr "Omkryptering pågår redan. Det går inte att utföra återhämtning." -#: lib/luks2/luks2_reencrypt.c:3814 +#: lib/luks2/luks2_reencrypt.c:3741 +msgid "LUKS2 reencryption recovery failed." +msgstr "Misslyckades med återhämtning av LUKS2-omkryptering." + +#: lib/luks2/luks2_reencrypt.c:3874 lib/luks2/luks2_reencrypt.c:4353 +msgid "Failed to initialize reencryption device stack." +msgstr "Misslyckades med att initiera listan för omkrypteringsenheter." + +#: lib/luks2/luks2_reencrypt.c:3907 msgid "LUKS2 reencryption already initialized in metadata." msgstr "LUKS2-omkryptering är redan initierad i metadata." -#: lib/luks2/luks2_reencrypt.c:3821 +#: lib/luks2/luks2_reencrypt.c:3915 msgid "Failed to initialize LUKS2 reencryption in metadata." msgstr "Misslyckades med att initiera LUKS2-omkryptering i metadata." -#: lib/luks2/luks2_reencrypt.c:3874 lib/luks2/luks2_reencrypt.c:3909 +#: lib/luks2/luks2_reencrypt.c:3968 lib/luks2/luks2_reencrypt.c:4000 +#: lib/luks2/luks2_reencrypt.c:4030 msgid "Reencryption is not supported for DAX (persistent memory) devices." msgstr "Omkryptering stöds inte för DAX-enheter (persistent minne)." -#: lib/luks2/luks2_reencrypt.c:3881 -msgid "Failed to read passphrase from keyring." -msgstr "Misslyckades med att läsa lösenfras från nyckelring." - -#: lib/luks2/luks2_reencrypt.c:3938 +#: lib/luks2/luks2_reencrypt.c:4059 msgid "Failed to set device segments for next reencryption hotzone." -msgstr "Misslyckades med sätta enhetssegment för nästa varm zon-omkryptering." +msgstr "Misslyckades med att sätta enhetssegment för nästa varmzon-omkryptering." -#: lib/luks2/luks2_reencrypt.c:3990 +#: lib/luks2/luks2_reencrypt.c:4112 msgid "Failed to write reencryption resilience metadata." msgstr "Misslyckades med att skriva motståndsmetadata för omkryptering." -#: lib/luks2/luks2_reencrypt.c:3997 +#: lib/luks2/luks2_reencrypt.c:4119 msgid "Decryption failed." msgstr "Avkryptering misslyckades." -#: lib/luks2/luks2_reencrypt.c:4002 +#: lib/luks2/luks2_reencrypt.c:4124 #, c-format msgid "Failed to write hotzone area starting at %." -msgstr "Misslyckades med att skriva område för varm zon med början vid %." +msgstr "Misslyckades med att skriva område för varmzon med början vid %." -#: lib/luks2/luks2_reencrypt.c:4007 +#: lib/luks2/luks2_reencrypt.c:4129 msgid "Failed to sync data." msgstr "Misslyckades med att synkronisera data." -#: lib/luks2/luks2_reencrypt.c:4015 +#: lib/luks2/luks2_reencrypt.c:4137 msgid "Failed to update metadata after current reencryption hotzone completed." -msgstr "Misslyckades med att uppdatera metadata efter aktuell varm zon för omkrypteringär färdigställd." +msgstr "Misslyckades med att uppdatera metadata efter att aktuell varmzon för omkryptering är färdigställd." -#: lib/luks2/luks2_reencrypt.c:4104 +#: lib/luks2/luks2_reencrypt.c:4226 msgid "Failed to write LUKS2 metadata." msgstr "Misslyckades med att skriva LUKS2-metadata." -#: lib/luks2/luks2_reencrypt.c:4127 +#: lib/luks2/luks2_reencrypt.c:4249 msgid "Failed to wipe unused data device area." msgstr "Misslyckades med att radera oanvänt område på dataenheten." -#: lib/luks2/luks2_reencrypt.c:4133 +#: lib/luks2/luks2_reencrypt.c:4255 #, c-format msgid "Failed to remove unused (unbound) keyslot %d." msgstr "Misslyckades med att ta bort oanvänd (obunden) nyckelplats %d." -#: lib/luks2/luks2_reencrypt.c:4143 +#: lib/luks2/luks2_reencrypt.c:4265 msgid "Failed to remove reencryption keyslot." msgstr "Misslyckades med att ta bort nyckelplats för omkryptering." -#: lib/luks2/luks2_reencrypt.c:4153 +#: lib/luks2/luks2_reencrypt.c:4275 #, c-format msgid "Fatal error while reencrypting chunk starting at %, % sectors long." msgstr "Ödesdigert fel vid omkrypteringschunk med start vid %, % sektorer lång." -#: lib/luks2/luks2_reencrypt.c:4157 +#: lib/luks2/luks2_reencrypt.c:4279 msgid "Online reencryption failed." msgstr "Misslyckades med omkryptering." -#: lib/luks2/luks2_reencrypt.c:4162 +#: lib/luks2/luks2_reencrypt.c:4284 msgid "Do not resume the device unless replaced with error target manually." msgstr "Återuppta inte enheten om inte den ersatts med felmål manuellt." -#: lib/luks2/luks2_reencrypt.c:4214 +#: lib/luks2/luks2_reencrypt.c:4336 msgid "Cannot proceed with reencryption. Unexpected reencryption status." msgstr "Det går inte att fortsätta med omkryptering. Oväntat omkrypteringsläge." -#: lib/luks2/luks2_reencrypt.c:4220 +#: lib/luks2/luks2_reencrypt.c:4342 msgid "Missing or invalid reencrypt context." msgstr "Saknat eller ogiltigt omkrypteringskontext." -#: lib/luks2/luks2_reencrypt.c:4227 -msgid "Failed to initialize reencryption device stack." -msgstr "Misslyckades med att initiera listan för omkrypteringsenheter." - -#: lib/luks2/luks2_reencrypt.c:4249 lib/luks2/luks2_reencrypt.c:4286 +#: lib/luks2/luks2_reencrypt.c:4376 lib/luks2/luks2_reencrypt.c:4413 msgid "Failed to update reencryption context." msgstr "Misslyckades med att uppdatera omkrypteringskontext." -#: lib/luks2/luks2_reencrypt_digest.c:408 +#: lib/luks2/luks2_reencrypt_digest.c:401 msgid "Reencryption metadata is invalid." msgstr "Omkryperingsmetadata är ogiltigt." -#: lib/luks2/hw_opal/hw_opal.c:328 +#: lib/luks2/hw_opal/hw_opal.c:335 #, c-format msgid "OPAL range %d offset % does not match expected values %." msgstr "OPAL-omfång %d förskjutning % överensstämmer inte förväntade värden %." -#: lib/luks2/hw_opal/hw_opal.c:335 +#: lib/luks2/hw_opal/hw_opal.c:342 #, c-format msgid "OPAL range %d length % does not match device length %." msgstr "OPAL-omfång %d längd % överensstämmer inte med underliggande enhetslängd %." -#: lib/luks2/hw_opal/hw_opal.c:341 +#: lib/luks2/hw_opal/hw_opal.c:348 #, c-format msgid "OPAL range %d locking is disabled." -msgstr "OPAL range %d låsning är inaktiverad." +msgstr "Låsning för OPAL-område %d är inaktiverad." -#: lib/luks2/hw_opal/hw_opal.c:351 lib/luks2/hw_opal/hw_opal.c:358 +#: lib/luks2/hw_opal/hw_opal.c:358 lib/luks2/hw_opal/hw_opal.c:365 #, c-format msgid "Unexpected OPAL range %d lock state." msgstr "Oväntat låsstatus för OPAL-område %d." -#: src/cryptsetup.c:80 +#: src/cryptsetup.c:87 msgid "Keyslot encryption parameters can be set only for LUKS2 device." msgstr "Krypteringsparametrar för nyckelplatser stöds endast av LUKS2-enheter." -#: src/cryptsetup.c:123 src/cryptsetup.c:2238 -#, c-format -msgid "Enter token PIN: " -msgstr "Ange token-PIN: " - -#: src/cryptsetup.c:125 src/cryptsetup.c:2240 -#, c-format -msgid "Enter token %d PIN: " -msgstr "Ange token-PIN %d : " +#: src/cryptsetup.c:93 +msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encryption." +msgstr "Krypteringsparametrar för nyckelplatser är inte kompatibla med LUKS2-nyckelplatskryptering." -#: src/cryptsetup.c:183 src/cryptsetup.c:1169 src/cryptsetup.c:1519 -#: src/utils_reencrypt.c:1133 src/utils_reencrypt_luks1.c:504 -#: src/utils_reencrypt_luks1.c:567 +#: src/cryptsetup.c:150 src/cryptsetup.c:1180 src/cryptsetup.c:1547 +#: src/utils_reencrypt.c:1887 src/utils_reencrypt_luks1.c:502 +#: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." msgstr "Inget känt chifferspecifikationsmönster kunde identifieras." -#: src/cryptsetup.c:193 +#: src/cryptsetup.c:160 #, c-format msgid "WARNING: Using default options for cipher (%s-%s, key size %u bits) that could be incompatible with older versions." msgstr "VARNING: Använder standardalternativ för chiffer (%s-%s, nyckelstorlek %u bitar) som kan vara inkompatibla med äldre versioner." -#: src/cryptsetup.c:198 +#: src/cryptsetup.c:165 #, c-format msgid "WARNING: Using default options for hash (%s) that could be incompatible with older versions." msgstr "VARNING: Använder standardalternativ för hash (%s) som kan vara inkompatibla med äldre versioner." -#: src/cryptsetup.c:202 -msgid "For plain mode, always use options --cipher, --key-size and if no keyfile is used, then also --hash." -msgstr "I vanligt läge ska du alltid använda alternativen --cipher, --key-size och om ingen nyckelfil används, även --hash." +#: src/cryptsetup.c:169 +msgid "For plain mode, always use options --cipher, --key-size and if no keyfile or keyring is used, then also --hash." +msgstr "I vanligt läge ska du alltid använda alternativen --cipher, --key-size och om ingen nyckelfil eller nyckelring används, även --hash." -#: src/cryptsetup.c:208 +#: src/cryptsetup.c:175 msgid "WARNING: The --hash parameter is being ignored in plain mode with keyfile specified.\n" msgstr "VARNING: parametern --hash ignoreras i plain-läge med specificerad nyckelfil.\n" -#: src/cryptsetup.c:216 +#: src/cryptsetup.c:189 msgid "WARNING: The --keyfile-size option is being ignored, the read size is the same as the encryption key size.\n" msgstr "VARNING: flaggan --keyfile-size ignoreras, lässtorleken är densamma som storleken för krypteringsnyckeln.\n" -#: src/cryptsetup.c:253 src/cryptsetup.c:1364 src/cryptsetup.c:1562 -#: src/integritysetup.c:184 src/utils_reencrypt.c:1342 +#: src/cryptsetup.c:226 src/cryptsetup.c:1377 src/cryptsetup.c:1600 +#: src/integritysetup.c:188 src/utils_reencrypt.c:2138 #, c-format msgid "Blkid scan failed for %s." msgstr "Blkid-sökning misslyckades för %s." -#: src/cryptsetup.c:259 +#: src/cryptsetup.c:232 #, c-format msgid "Detected device signature(s) on %s. Proceeding further may damage existing data." msgstr "Identfierar enhetssignatur(er) på %s. Att fortsätta kan skada befintlig data." -#: src/cryptsetup.c:265 src/cryptsetup.c:1252 src/cryptsetup.c:1300 -#: src/cryptsetup.c:1371 src/cryptsetup.c:1496 src/cryptsetup.c:1574 -#: src/cryptsetup.c:2618 src/cryptsetup.c:3044 src/integritysetup.c:174 -#: src/utils_reencrypt.c:125 src/utils_reencrypt.c:301 -#: src/utils_reencrypt.c:759 +#: src/cryptsetup.c:238 src/cryptsetup.c:1263 src/cryptsetup.c:1311 +#: src/cryptsetup.c:1384 src/cryptsetup.c:1524 src/cryptsetup.c:1612 +#: src/cryptsetup.c:2497 src/cryptsetup.c:2926 src/integritysetup.c:178 +#: src/utils_reencrypt.c:111 src/utils_reencrypt.c:457 +#: src/utils_reencrypt.c:925 msgid "Operation aborted.\n" msgstr "Åtgärd avbruten.\n" -#: src/cryptsetup.c:338 +#: src/cryptsetup.c:323 msgid "Option --key-file is required." msgstr "Flaggan --key-file krävs." -#: src/cryptsetup.c:389 +#: src/cryptsetup.c:377 msgid "Enter VeraCrypt PIM: " msgstr "Ange VeraCrypt PIM: " -#: src/cryptsetup.c:398 +#: src/cryptsetup.c:386 msgid "Invalid PIM value: parse error." msgstr "Ogiltigt PIM-värde:tolkningsfel." -#: src/cryptsetup.c:401 +#: src/cryptsetup.c:389 msgid "Invalid PIM value: 0." msgstr "Ogiltigt PIM-värde: 0." -#: src/cryptsetup.c:404 +#: src/cryptsetup.c:392 msgid "Invalid PIM value: outside of range." msgstr "Ogiltigt PIM-värde:utanför intervallet." -#: src/cryptsetup.c:427 +#: src/cryptsetup.c:415 msgid "No device header detected with this passphrase." msgstr "Inget enhetshuvud finns tillgängligt med denna lösenfras." -#: src/cryptsetup.c:500 src/cryptsetup.c:676 +#: src/cryptsetup.c:492 src/cryptsetup.c:677 #, c-format msgid "Device %s is not a valid BITLK device." msgstr "Enheten %s är inte en giltig BITLK-enhet." -#: src/cryptsetup.c:508 +#: src/cryptsetup.c:500 msgid "Cannot determine volume key size for BITLK, please use --key-size option." msgstr "Det går inte att avgöra volymens nyckelstorlek för BTLK, använd flaggan --key-size." -#: src/cryptsetup.c:550 +#: src/cryptsetup.c:546 msgid "" "Header dump with volume key is sensitive information\n" "which allows access to encrypted partition without passphrase.\n" @@ -2153,7 +2238,7 @@ msgstr "" "som tillåter åtkomst till krypterad partition utan lösenfras.\n" "Denna utskrift bör alltid lagras krypterad på ett säkert ställe." -#: src/cryptsetup.c:617 src/cryptsetup.c:698 src/cryptsetup.c:2643 +#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2522 msgid "" "The header dump with volume key is sensitive information\n" "that allows access to encrypted partition without a passphrase.\n" @@ -2163,112 +2248,112 @@ msgstr "" "som tillåter åtkomst till krypterad partition utan lösenfras.\n" "Denna utskrift bör alltid lagras krypterad på ett säkert ställe." -#: src/cryptsetup.c:753 src/cryptsetup.c:783 +#: src/cryptsetup.c:754 src/cryptsetup.c:786 #, c-format msgid "Device %s is not a valid FVAULT2 device." msgstr "Enheten %s är inte en giltig FVULT2-enhet." -#: src/cryptsetup.c:791 +#: src/cryptsetup.c:794 msgid "Cannot determine volume key size for FVAULT2, please use --key-size option." msgstr "Det går inte att avgöra volymens nyckelstorlek för FAVULT2, använd flaggan --key-size." -#: src/cryptsetup.c:845 src/veritysetup.c:310 src/integritysetup.c:396 +#: src/cryptsetup.c:848 src/veritysetup.c:317 src/integritysetup.c:410 #, c-format msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "Enheten %s är fortfarande aktiv och schemalagd för uppskjuten borttagning.\n" -#: src/cryptsetup.c:879 src/cryptsetup.c:1899 src/cryptsetup.c:2173 -#: src/cryptsetup.c:2327 src/cryptsetup.c:2774 src/cryptsetup.c:2856 -#: src/cryptsetup.c:3382 +#: src/cryptsetup.c:881 src/cryptsetup.c:1810 src/cryptsetup.c:2084 +#: src/cryptsetup.c:2231 src/cryptsetup.c:2650 src/cryptsetup.c:2731 +#: src/cryptsetup.c:3264 #, c-format msgid "Failed to set external tokens path %s." msgstr "Misslyckades med att sätta extern sökväg till tokens %s." -#: src/cryptsetup.c:888 +#: src/cryptsetup.c:890 msgid "Resize of active device requires volume key in keyring but --disable-keyring option is set." msgstr "Att ändra storlek på aktiv enhet kräver volymnyckel i nyckelringen, men -flaggan --disable-keyring är angiven." -#: src/cryptsetup.c:1048 +#: src/cryptsetup.c:1059 msgid "Benchmark interrupted." msgstr "Prestandamätning avbruten." -#: src/cryptsetup.c:1069 +#: src/cryptsetup.c:1080 #, c-format msgid "PBKDF2-%-9s N/A\n" msgstr "PBKDF2-%-9s N/A\n" -#: src/cryptsetup.c:1071 +#: src/cryptsetup.c:1082 #, c-format msgid "PBKDF2-%-9s %7u iterations per second for %zu-bit key\n" msgstr "PBKDF2-%-9s %7u iterationer per sekund för %zu-bitnyckel\n" -#: src/cryptsetup.c:1085 +#: src/cryptsetup.c:1096 #, c-format msgid "%-10s N/A\n" msgstr "%-10s N/A\n" -#: src/cryptsetup.c:1087 +#: src/cryptsetup.c:1098 #, c-format msgid "%-10s %4u iterations, %5u memory, %1u parallel threads (CPUs) for %zu-bit key (requested %u ms time)\n" msgstr "%-10s %4u iterationer, %5u minne, %1u parallella trådar (CPU:er) för %zu-bitnyckelplats (begärde %u ms)\n" -#: src/cryptsetup.c:1111 +#: src/cryptsetup.c:1122 msgid "Result of benchmark is not reliable." msgstr "Resultat från prestandamätningen är inte pålitligt." -#: src/cryptsetup.c:1161 +#: src/cryptsetup.c:1172 msgid "# Tests are approximate using memory only (no storage IO).\n" msgstr "# Tester är ungefärliga och använder endast minne (ingen lagrings-IO).\n" #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1186 +#: src/cryptsetup.c:1197 #, c-format msgid "#%*s Algorithm | Key | Encryption | Decryption\n" msgstr "#%*s Algoritm | Nyckel | Kryptering | Avkryptering\n" -#: src/cryptsetup.c:1194 +#: src/cryptsetup.c:1205 #, c-format msgid "Cipher %s (with %i bits key) is not available." msgstr "Chiffret %s (med nyckel av %i bitar) är inte tillgängligt." #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1213 +#: src/cryptsetup.c:1224 msgid "# Algorithm | Key | Encryption | Decryption\n" msgstr "# Algoritm | Nyckel | Kryptering | AVkryptering\n" -#: src/cryptsetup.c:1224 +#: src/cryptsetup.c:1235 msgid "N/A" msgstr "N/A" -#: src/cryptsetup.c:1249 +#: src/cryptsetup.c:1260 msgid "" "Unprotected LUKS2 reencryption metadata detected. Please verify the reencryption operation is desirable (see luksDump output)\n" "and continue (upgrade metadata) only if you acknowledge the operation as genuine." msgstr "" -"Oskyddad LUKS2-omkryperingsmetadata identiferad. Vänligen verifiera att omkryperingsåtgärden behövs (se luksDump-utdata)\n" -"och fortsätt (uppgradera metadata) endast om du anser åtgärden som behövd." +"Oskyddad LUKS2-omkrypteringsmetadata identifierad. Vänligen verifiera att omkrypteringsåtgärden behövs (se luksDump-utdata)\n" +"och fortsätt (uppgradera metadata) endast om du anser åtgärden behövd." -#: src/cryptsetup.c:1255 +#: src/cryptsetup.c:1266 msgid "Enter passphrase to protect and upgrade reencryption metadata: " msgstr "Ange lösenfras för att skydda och uppgradera omkrypteringmetadata: " -#: src/cryptsetup.c:1299 +#: src/cryptsetup.c:1310 msgid "Really proceed with LUKS2 reencryption recovery?" msgstr "Vill du verkligen fortsätta med LUKS2-omkrypteringsåterställning?" -#: src/cryptsetup.c:1308 +#: src/cryptsetup.c:1319 msgid "Enter passphrase to verify reencryption metadata digest: " msgstr "Ange lösenfras för att verifiera sammandrag för metadata-omkryp: " -#: src/cryptsetup.c:1310 +#: src/cryptsetup.c:1321 msgid "Enter passphrase for reencryption recovery: " msgstr "Ange lösenfras för omkrypteringsåterhämtning: " -#: src/cryptsetup.c:1370 +#: src/cryptsetup.c:1383 msgid "Really try to repair LUKS device header?" msgstr "Vill du verkligen försöka att reparera LUKS-enhetshuvud?" -#: src/cryptsetup.c:1394 src/integritysetup.c:76 src/integritysetup.c:234 +#: src/cryptsetup.c:1411 src/integritysetup.c:76 src/integritysetup.c:244 msgid "" "\n" "Wipe interrupted." @@ -2276,164 +2361,175 @@ msgstr "" "\n" "Skrivning avbruten." -#: src/cryptsetup.c:1399 src/integritysetup.c:81 src/integritysetup.c:271 +#: src/cryptsetup.c:1416 src/integritysetup.c:81 src/integritysetup.c:283 msgid "" "Wiping device to initialize integrity checksum.\n" "You can interrupt this by pressing CTRL+c (rest of not wiped device will contain invalid checksum).\n" msgstr "" "Rensar enheten för att initialisera kontrollsumma för integritet.\n" -"Du kan avbryta detta genom att trycka ned CTRL+c (resten av den ej rensade enheten kommer att innehålla en ogiltigt kontrollsumma).\n" +"Du kan avbryta detta genom att trycka ned CTRL+c (resten av den inte rensade enheten kommer att innehålla en ogiltigt kontrollsumma).\n" -#: src/cryptsetup.c:1421 src/integritysetup.c:103 +#: src/cryptsetup.c:1438 src/integritysetup.c:103 #, c-format msgid "Cannot deactivate temporary device %s." msgstr "Det går inte att inaktivera temporär enhet %s." -#: src/cryptsetup.c:1476 +#: src/cryptsetup.c:1486 +msgid "OPAL hw-only encryption does not support --cipher and --key-size, options ignored." +msgstr "OPAL hw-only-kryptering stöder inte --cipher och --key-size, flaggorna ignoreras." + +#: src/cryptsetup.c:1499 msgid "Integrity option can be used only for LUKS2 format." msgstr "Flaggan för integritet kan endast användas för formatet LUKS2." -#: src/cryptsetup.c:1481 src/cryptsetup.c:1546 +#: src/cryptsetup.c:1504 src/cryptsetup.c:1584 msgid "Unsupported LUKS2 metadata size options." msgstr "Flaggorna för storlekar på LUKS2-metadata stöds inte." -#: src/cryptsetup.c:1486 +#: src/cryptsetup.c:1509 msgid "OPAL is supported only for LUKS2 format." msgstr "OPAL stöds endast för formatet LUKS2." -#: src/cryptsetup.c:1495 +#: src/cryptsetup.c:1514 +msgid "Inline hw tags are supported only for LUKS2 format." +msgstr "Inline-hårdvarutaggar stöds endast för formatet LUKS2." + +#: src/cryptsetup.c:1523 msgid "Header file does not exist, do you want to create it?" -msgstr "Deklarationsfilen existerar inte, vill du skapa den?" +msgstr "Huvudfilen finns inte, vill du skapa den?" -#: src/cryptsetup.c:1503 +#: src/cryptsetup.c:1531 #, c-format msgid "Cannot create header file %s." msgstr "Det går inte att skapa huvudfil %s." -#: src/cryptsetup.c:1526 src/integritysetup.c:131 src/integritysetup.c:139 -#: src/integritysetup.c:148 src/integritysetup.c:311 src/integritysetup.c:319 -#: src/integritysetup.c:329 +#: src/cryptsetup.c:1557 src/integritysetup.c:126 src/integritysetup.c:141 +#: src/integritysetup.c:150 src/integritysetup.c:322 src/integritysetup.c:330 +#: src/integritysetup.c:340 msgid "No known integrity specification pattern detected." msgstr "Inga kända integritetspecifikationsmönster identifierat." -#: src/cryptsetup.c:1539 +#: src/cryptsetup.c:1559 +msgid "Cannot use specified integrity key size." +msgstr "Det går inte att använda angiven integritetsnyckelstorlek." + +#: src/cryptsetup.c:1577 #, c-format msgid "Cannot use %s as on-disk header." msgstr "Det går inte att använda %s som diskhuvud." -#: src/cryptsetup.c:1568 src/integritysetup.c:168 +#: src/cryptsetup.c:1606 src/integritysetup.c:172 #, c-format msgid "This will overwrite data on %s irrevocably." msgstr "Detta kommer att skriva över data på %s och går inte att ångra." -#: src/cryptsetup.c:1605 +#: src/cryptsetup.c:1643 msgid "OPAL Admin password cannot be empty." -msgstr "OPAL Admin-lösenordet kan inte vara tomt." +msgstr "Det går inte att ha ett tomt OPAL Admin-lösenord." -#: src/cryptsetup.c:1619 src/cryptsetup.c:2190 src/cryptsetup.c:2340 -#: src/cryptsetup.c:2500 src/cryptsetup.c:2566 src/utils_reencrypt_luks1.c:430 +#: src/cryptsetup.c:1657 src/cryptsetup.c:2101 src/cryptsetup.c:2244 +#: src/cryptsetup.c:2379 src/cryptsetup.c:2445 src/utils_reencrypt_luks1.c:428 msgid "Failed to set pbkdf parameters." msgstr "Misslyckades med att sätta pbkdf-parametrar." -#: src/cryptsetup.c:1751 -msgid "Type specification in --link-vk-to-keyring keyring specification is ignored." -msgstr "Typspecifikationen i --link-vk-to-keyring keyring-specifikationen ignoreras." - -#: src/cryptsetup.c:1816 -msgid "Key types have to be the same for both volume keys." -msgstr "Tangenttyperna måste vara desamma för båda volymknapparna." - -#: src/cryptsetup.c:1821 -msgid "Both volume keys have to be linked to the same keyring." -msgstr "Båda volymnycklarna måste vara kopplade till samma nyckelring." - -#: src/cryptsetup.c:1831 -msgid "You need to supply more key names." -msgstr "Du måste ange fler nyckelnamn." - -#: src/cryptsetup.c:1835 -msgid "Invalid --link-vk-to-keyring value." -msgstr "Ogiltigt värde för --link-vk-to-keyring." - -#: src/cryptsetup.c:1880 +#: src/cryptsetup.c:1788 msgid "Reduced data offset is allowed only for detached LUKS header." -msgstr "Förminskad dataoffset endast tillåtet för fristående LUKS-huvuden." +msgstr "Förminskad dataförskjutning är endast tillåten för fristående LUKS-huvuden." -#: src/cryptsetup.c:1887 +#: src/cryptsetup.c:1795 #, c-format msgid "LUKS file container %s is too small for activation, there is no remaining space for data." -msgstr "LUKS file container %s är för liten för att kunna aktiveras, det finns inget kvarvarande utrymme för data." +msgstr "LUKS-filcontainern %s är för liten för att kunna aktiveras, det finns inget kvarvarande utrymme för data." -#: src/cryptsetup.c:1914 src/cryptsetup.c:2346 +#: src/cryptsetup.c:1837 src/cryptsetup.c:2250 src/utils_reencrypt.c:277 +#: src/utils_reencrypt.c:369 src/utils_reencrypt.c:1907 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "Det går inte att avgöra volymens nyckelstorlek för LUKS utan nyckelplatser, använd flaggen --key-size." -#: src/cryptsetup.c:1981 +#: src/cryptsetup.c:1856 src/utils_reencrypt.c:303 +msgid "Device requires two volume keys." +msgstr "Enheten kräver två volymnycklar." + +#: src/cryptsetup.c:1891 +msgid "Some specified activation parameters were ignored with OPAL hw-only encryption." +msgstr "Vissa angivna aktiveringsparametrar ignorerades med OPAL hw-only-kryptering." + +#: src/cryptsetup.c:1896 msgid "Device activated but cannot make flags persistent." -msgstr "Enheten aktiverad men kan inte spara undan flaggorna." +msgstr "Enheten aktiverades men det går inte att spara undan flaggorna." -#: src/cryptsetup.c:2065 src/cryptsetup.c:2133 +#: src/cryptsetup.c:1976 src/cryptsetup.c:2044 #, c-format msgid "Keyslot %d is selected for deletion." msgstr "Nyckelplats %d markerad för borttagning." -#: src/cryptsetup.c:2077 src/cryptsetup.c:2137 +#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 msgid "This is the last keyslot. Device will become unusable after purging this key." msgstr "Detta är sista nyckelplatsen. Enheten kommer att bli oanvändbar efter att denna nyckel tagits bort." -#: src/cryptsetup.c:2078 +#: src/cryptsetup.c:1989 msgid "Enter any remaining passphrase: " msgstr "Ange eventuell återstående lösenfras: " -#: src/cryptsetup.c:2079 src/cryptsetup.c:2139 +#: src/cryptsetup.c:1990 src/cryptsetup.c:2050 msgid "Operation aborted, the keyslot was NOT wiped.\n" msgstr "Åtgärden avbröts, nyckelplatsen raderades INTE.\n" -#: src/cryptsetup.c:2115 +#: src/cryptsetup.c:2026 msgid "Enter passphrase to be deleted: " msgstr "Ange lösenfras att ta bort: " -#: src/cryptsetup.c:2165 src/cryptsetup.c:2549 src/cryptsetup.c:3206 -#: src/cryptsetup.c:3373 +#: src/cryptsetup.c:2076 src/cryptsetup.c:2428 src/cryptsetup.c:3088 +#: src/cryptsetup.c:3255 #, c-format msgid "Device %s is not a valid LUKS2 device." msgstr "Enheten %s är inte en giltig LUKS2-enhet." -#: src/cryptsetup.c:2204 src/cryptsetup.c:2423 +#: src/cryptsetup.c:2115 src/cryptsetup.c:2314 msgid "Enter new passphrase for key slot: " msgstr "Ange ny lösenfras för nyckelplats: " -#: src/cryptsetup.c:2306 +#: src/cryptsetup.c:2149 src/utils_luks.c:342 +#, c-format +msgid "Enter token PIN: " +msgstr "Ange token-PIN: " + +#: src/cryptsetup.c:2151 src/utils_luks.c:344 +#, c-format +msgid "Enter token %d PIN: " +msgstr "Ange token-PIN %d: " + +#: src/cryptsetup.c:2210 msgid "WARNING: The --key-slot parameter is used for new keyslot number.\n" -msgstr "VARNING: parametern --key-slot används för nytt nyckelplatstal.\n" +msgstr "VARNING: parametern --key-slot används för nytt nyckelplatsnummer.\n" -#: src/cryptsetup.c:2379 src/utils_reencrypt_luks1.c:1096 +#: src/cryptsetup.c:2287 src/utils_reencrypt_luks1.c:1094 #, c-format msgid "Enter any existing passphrase: " msgstr "Ange valfri existerande lösenfras: " -#: src/cryptsetup.c:2504 +#: src/cryptsetup.c:2383 msgid "Enter passphrase to be changed: " msgstr "Ange lösenfras att ändra: " -#: src/cryptsetup.c:2520 src/utils_reencrypt_luks1.c:1082 +#: src/cryptsetup.c:2399 src/utils_reencrypt_luks1.c:1080 msgid "Enter new passphrase: " msgstr "Ange ny lösenfras: " -#: src/cryptsetup.c:2570 +#: src/cryptsetup.c:2449 msgid "Enter passphrase for keyslot to be converted: " msgstr "Ange lösenfras för nyckelplats att konvertera: " -#: src/cryptsetup.c:2594 +#: src/cryptsetup.c:2473 msgid "Only one device argument for isLuks operation is supported." msgstr "Endast ett enhetsargument för operationen isLuks stöds." -#: src/cryptsetup.c:2702 +#: src/cryptsetup.c:2578 #, c-format msgid "Keyslot %d does not contain unbound key." msgstr "Nyckelplats %d innehåller inte obunden nyckel." -#: src/cryptsetup.c:2707 +#: src/cryptsetup.c:2583 msgid "" "The header dump with unbound key is sensitive information.\n" "This dump should be stored encrypted in a safe place." @@ -2441,52 +2537,52 @@ msgstr "" "Utskrift av huvudet med obunden nyckel är känslig information.\n" "Denna utskrift bör alltid lagras krypterad på ett säkert ställe." -#: src/cryptsetup.c:2802 src/cryptsetup.c:2839 +#: src/cryptsetup.c:2678 src/cryptsetup.c:2714 #, c-format msgid "%s is not active %s device name." msgstr "%s är inte ett aktivt %s-enhetsnamn." -#: src/cryptsetup.c:2834 +#: src/cryptsetup.c:2709 #, c-format msgid "%s is not active LUKS device name or header is missing." msgstr "%s är inte ett aktivt LUKS-enhetsnamn eller så saknas deklaration." -#: src/cryptsetup.c:2912 src/cryptsetup.c:2931 +#: src/cryptsetup.c:2786 src/cryptsetup.c:2805 msgid "Option --header-backup-file is required." msgstr "Flaggan --header-backup-file krävs." -#: src/cryptsetup.c:2962 +#: src/cryptsetup.c:2836 #, c-format msgid "%s is not cryptsetup managed device." msgstr "%s är inte en cryptsetup-hanterad enhet." -#: src/cryptsetup.c:2973 +#: src/cryptsetup.c:2847 #, c-format msgid "Refresh is not supported for device type %s" msgstr "Att uppdatera stöds inte för enhetstypen %s" -#: src/cryptsetup.c:3023 +#: src/cryptsetup.c:2897 #, c-format msgid "Unrecognized metadata device type %s." msgstr "Okänd metadata för enhetstypen %s." -#: src/cryptsetup.c:3025 +#: src/cryptsetup.c:2899 msgid "Command requires device and mapped name as arguments." msgstr "Kommandot kräver enhet och mappat namn som argument." -#: src/cryptsetup.c:3035 +#: src/cryptsetup.c:2917 msgid "Enter OPAL PSID: " msgstr "Ange OPAL PSID: " -#: src/cryptsetup.c:3035 +#: src/cryptsetup.c:2917 msgid "Enter OPAL Admin password: " msgstr "Ange lösenord för OPAL Admin: " -#: src/cryptsetup.c:3043 +#: src/cryptsetup.c:2925 msgid "WARNING: WHOLE disk will be factory reset and all data will be lost! Continue?" msgstr "VARNING: HELA disken kommer att fabriksåterställas och alla data kommer att gå förlorade! Fortsätta?" -#: src/cryptsetup.c:3086 +#: src/cryptsetup.c:2968 #, c-format msgid "" "This operation will erase all keyslots on device %s.\n" @@ -2495,351 +2591,363 @@ msgstr "" "Denna åtgärd kommer att ta bort alla nyckelplatser på enhet %s.\n" "Enheten kommer att bli oanvändbar efter denna åtgärd." -#: src/cryptsetup.c:3093 +#: src/cryptsetup.c:2975 msgid "Operation aborted, keyslots were NOT wiped.\n" msgstr "Åtgärden avbryten, nyckelplatser raderades EJ.\n" -#: src/cryptsetup.c:3132 +#: src/cryptsetup.c:3014 msgid "Invalid LUKS type, only luks1 and luks2 are supported." msgstr "Ogiltig LUKS-typ, endast luks1 och luks2 stöds." -#: src/cryptsetup.c:3148 +#: src/cryptsetup.c:3030 #, c-format msgid "Device is already %s type." msgstr "Enheten är redan av %s-typ." -#: src/cryptsetup.c:3155 +#: src/cryptsetup.c:3037 #, c-format msgid "This operation will convert %s to %s format.\n" msgstr "Denna åtgärd kommer att konvertera %s till %s-format.\n" -#: src/cryptsetup.c:3158 +#: src/cryptsetup.c:3040 msgid "Operation aborted, device was NOT converted.\n" msgstr "Åtgärden avbröts, enheten konverterades INTE.\n" -#: src/cryptsetup.c:3198 +#: src/cryptsetup.c:3080 msgid "Option --priority, --label or --subsystem is missing." msgstr "Saknar flaggan --priority, --label eller --subsystem." -#: src/cryptsetup.c:3232 src/cryptsetup.c:3272 src/cryptsetup.c:3292 +#: src/cryptsetup.c:3114 src/cryptsetup.c:3154 src/cryptsetup.c:3174 #, c-format msgid "Token %d is invalid." msgstr "Token %d är ogiltig." -#: src/cryptsetup.c:3235 src/cryptsetup.c:3295 +#: src/cryptsetup.c:3117 src/cryptsetup.c:3177 #, c-format msgid "Token %d in use." msgstr "Token %d används." -#: src/cryptsetup.c:3247 +#: src/cryptsetup.c:3129 #, c-format msgid "Failed to add luks2-keyring token %d." msgstr "Misslyckades med att lägga till luks2-nyckelringsstoken %d." -#: src/cryptsetup.c:3258 src/cryptsetup.c:3321 +#: src/cryptsetup.c:3140 src/cryptsetup.c:3203 #, c-format msgid "Failed to assign token %d to keyslot %d." msgstr "Misslyckades med att tilldela token %d till nyckelplats %d." -#: src/cryptsetup.c:3275 +#: src/cryptsetup.c:3157 #, c-format msgid "Token %d is not in use." -msgstr "Token %d används ej." +msgstr "Token %d används inte." -#: src/cryptsetup.c:3312 +#: src/cryptsetup.c:3194 msgid "Failed to import token from file." msgstr "Misslyckades med att importera token från fil." -#: src/cryptsetup.c:3337 +#: src/cryptsetup.c:3219 #, c-format msgid "Failed to get token %d for export." msgstr "Misslyckades med att hämta token %d för export." -#: src/cryptsetup.c:3350 +#: src/cryptsetup.c:3232 #, c-format msgid "Token %d is not assigned to keyslot %d." msgstr "Token %d är inte tilldelad till nyckelplats %d." -#: src/cryptsetup.c:3352 src/cryptsetup.c:3359 +#: src/cryptsetup.c:3234 src/cryptsetup.c:3241 #, c-format msgid "Failed to unassign token %d from keyslot %d." msgstr "Misslyckades med att ta bort tilldelningen av token %d från nyckelplats %d." -#: src/cryptsetup.c:3418 +#: src/cryptsetup.c:3300 msgid "Option --tcrypt-hidden, --tcrypt-system or --tcrypt-backup is supported only for TCRYPT device." msgstr "Flaggorna --tcrypt-hidden, --tcrypt-system eller --tcrypt-backup stöds endast på TCRYPT-enhet." -#: src/cryptsetup.c:3421 +#: src/cryptsetup.c:3303 msgid "Option --veracrypt or --disable-veracrypt is supported only for TCRYPT device type." msgstr "Flaggan --veracrypt eller --disable-veracrypt stöds endast för TCRYPT-enhetstyper." -#: src/cryptsetup.c:3424 +#: src/cryptsetup.c:3306 msgid "Option --veracrypt-pim is supported only for VeraCrypt compatible devices." msgstr "Flaggan --veracrypt-pim stöds endast för VeraCrypt-kompatibla enheter." -#: src/cryptsetup.c:3428 +#: src/cryptsetup.c:3310 msgid "Option --veracrypt-query-pim is supported only for VeraCrypt compatible devices." msgstr "Flaggan --veracrypt-query-pim stöds endast för VeraCrypt-kompatibla enheter." -#: src/cryptsetup.c:3430 +#: src/cryptsetup.c:3312 msgid "The options --veracrypt-pim and --veracrypt-query-pim are mutually exclusive." msgstr "Flaggorna --veracrypt-pim och --veracrypt-query-pim är ömsesidigt uteslutande." -#: src/cryptsetup.c:3439 +#: src/cryptsetup.c:3321 msgid "Option --persistent is not allowed with --test-passphrase." -msgstr "Flaggan --persistent är ej tillåtet med --test-passphrase." +msgstr "Flaggan --persistent är inte tillåtet med --test-passphrase." -#: src/cryptsetup.c:3442 +#: src/cryptsetup.c:3324 msgid "Options --refresh and --test-passphrase are mutually exclusive." msgstr "Flaggorna --refresh och --test-passphrase är ömsesidigt uteslutande." -#: src/cryptsetup.c:3445 +#: src/cryptsetup.c:3327 msgid "Option --shared is allowed only for open of plain device." msgstr "Flaggan --shared är endast tillåten för öppning av plain-enhet." -#: src/cryptsetup.c:3448 +#: src/cryptsetup.c:3330 msgid "Option --skip is supported only for open of plain and loopaes devices." msgstr "Flaggan --skip stöds endast för öppning av plain-enheter och loopaes-enheter." -#: src/cryptsetup.c:3451 +#: src/cryptsetup.c:3333 msgid "Option --offset with open action is only supported for plain and loopaes devices." msgstr "Flaggan --offset med åtgärden öppna stöds endast för öppning av plain-enheter och loopaes-enheter." -#: src/cryptsetup.c:3454 +#: src/cryptsetup.c:3336 msgid "Option --tcrypt-hidden cannot be combined with --allow-discards." -msgstr "Flaggan --tcrypt-hidden kan inte kombineras med --allow-discards." +msgstr "Flaggan --error-as-corruption måste användas med --panic-on-corruption eller --restart-on-corruption." -#: src/cryptsetup.c:3458 +#: src/cryptsetup.c:3340 msgid "Sector size option with open action is supported only for plain devices." msgstr "Flaggan för sektorstorlek med åtgärden öppna stöds endast för plain-enheter." -#: src/cryptsetup.c:3462 +#: src/cryptsetup.c:3344 msgid "Large IV sectors option is supported only for opening plain type device with sector size larger than 512 bytes." msgstr "Flaggan för stora IV-sektorer stöds endast för att öppna enheter av plain-typ med sektorstorlek större än 512 byte." -#: src/cryptsetup.c:3467 +#: src/cryptsetup.c:3349 msgid "Option --test-passphrase is allowed only for open of LUKS, TCRYPT, BITLK and FVAULT2 devices." msgstr "Flaggan --test-passphrase är endast tillåten för open för LUKS-, TCRYPT-, BITLK- och FVAULT2-enheter." -#: src/cryptsetup.c:3470 src/cryptsetup.c:3493 +#: src/cryptsetup.c:3352 src/cryptsetup.c:3382 msgid "Options --device-size and --size cannot be combined." -msgstr "Flaggan --device-size och --size kan inte kombineras." +msgstr "Det går inte att kombinera flaggorna --device-size och --size." -#: src/cryptsetup.c:3473 +#: src/cryptsetup.c:3355 msgid "Option --unbound is allowed only for open of luks device." msgstr "Flaggan --unbound är endast tillåten för öppning av luks-enhet." -#: src/cryptsetup.c:3476 +#: src/cryptsetup.c:3358 msgid "Option --unbound cannot be used without --test-passphrase." -msgstr "Flaggan --unbound kan inte användas utan --test-passphrase." +msgstr "Det går inte att använda flaggan --unbound utan --test-passphrase." + +#: src/cryptsetup.c:3362 +msgid "Option --volume-key-keyring cannot be combined with --hash or --volume-key-file." +msgstr "Det går inte att kombinera flaggan --volume-key-keyring med --hash eller --volume-key-file." + +#: src/cryptsetup.c:3365 +msgid "Both --volume-key-file options must be paired with respective --key-size options." +msgstr "Båda --volume-key-file-flaggorna måste paras med motsvarande --key-size-flaggor." -#: src/cryptsetup.c:3485 src/veritysetup.c:658 src/integritysetup.c:754 +#: src/cryptsetup.c:3374 src/veritysetup.c:673 src/integritysetup.c:784 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "Flaggorna --cancel-deferred och --deferred går inte att använda samtidigt." -#: src/cryptsetup.c:3501 -msgid "Options --reduce-device-size and --device-size cannot be combined." -msgstr "Flaggan --reduce-device-size och --data-size kan inte kombineras." - -#: src/cryptsetup.c:3504 +#: src/cryptsetup.c:3390 msgid "Option --active-name can be set only for LUKS2 device." msgstr "Flaggan --active-name kan endast anges för LUKS2-enheter." -#: src/cryptsetup.c:3507 +#: src/cryptsetup.c:3393 msgid "Options --active-name and --force-offline-reencrypt cannot be combined." -msgstr "Flaggan --active-name och --force-offline-reencrypt kan inte kombineras." +msgstr "Det går inte att kombinera flaggorna --active-name och --force-offline-reencrypt." -#: src/cryptsetup.c:3515 src/cryptsetup.c:3545 +#: src/cryptsetup.c:3396 +msgid "Options --new-volume-key-file and --keep-key cannot be combined." +msgstr "Det går inte att kombinera flaggorna --new-volume-key-file och --keep-key." + +#: src/cryptsetup.c:3399 +msgid "Options --new-volume-key-keyring and --keep-key cannot be combined." +msgstr "Det går inte att kombinera flaggorna --new-volume-key-keyring och --keep-key." + +#: src/cryptsetup.c:3407 src/cryptsetup.c:3437 msgid "Keyslot specification is required." msgstr "Specifikation för nyckelplats krävs." -#: src/cryptsetup.c:3523 +#: src/cryptsetup.c:3415 msgid "Options --align-payload and --offset cannot be combined." -msgstr "Flaggan --align-payload och --offset kan inte kombineras." +msgstr "Det går inte att kombinera flaggorna --align-payload och --offset." -#: src/cryptsetup.c:3526 +#: src/cryptsetup.c:3418 msgid "Option --integrity-no-wipe can be used only for format action with integrity extension." msgstr "Flaggan --integrity-no-wipe kan endast användas för åtgärden formatera med integritetsutökningar." -#: src/cryptsetup.c:3529 +#: src/cryptsetup.c:3421 msgid "Only one of --use-[u]random options is allowed." msgstr "Endast en av flaggorna --use-[u]random är tillåten." -#: src/cryptsetup.c:3537 +#: src/cryptsetup.c:3429 msgid "Key size is required with --unbound option." msgstr "Nyckelstorlek krävs med flaggan --unbound." -#: src/cryptsetup.c:3557 +#: src/cryptsetup.c:3449 msgid "Invalid token action." msgstr "Ogiltig tokenåtgärd." -#: src/cryptsetup.c:3560 +#: src/cryptsetup.c:3452 msgid "--key-description parameter is mandatory for token add action." msgstr "parametern --key-description krävs för åtgärden lägg till token." -#: src/cryptsetup.c:3564 src/cryptsetup.c:3577 +#: src/cryptsetup.c:3456 src/cryptsetup.c:3469 msgid "Action requires specific token. Use --token-id parameter." msgstr "Åtgärden kräver specifik token. Använd parametern --token-id." -#: src/cryptsetup.c:3568 +#: src/cryptsetup.c:3460 msgid "Option --unbound is valid only with token add action." msgstr "Flaggan --unbound kan endast användas tillsammans med åtgärden att lägga till token." -#: src/cryptsetup.c:3570 +#: src/cryptsetup.c:3462 msgid "Options --key-slot and --unbound cannot be combined." -msgstr "Flaggan --key-slot och --unbound kan inte kombineras." +msgstr "Det går inte att kombinera flaggorna --key-slot och --unbound." -#: src/cryptsetup.c:3575 +#: src/cryptsetup.c:3467 msgid "Action requires specific keyslot. Use --key-slot parameter." msgstr "Åtgärden kräver specifik nyckelplats. Använd parametern --key-slot." -#: src/cryptsetup.c:3591 +#: src/cryptsetup.c:3483 msgid " [--type ] []" msgstr " [--type ] []" -#: src/cryptsetup.c:3591 src/veritysetup.c:478 src/integritysetup.c:531 +#: src/cryptsetup.c:3483 src/veritysetup.c:487 src/integritysetup.c:551 msgid "open device as " msgstr "öppna enhet som " -#: src/cryptsetup.c:3592 src/cryptsetup.c:3593 src/cryptsetup.c:3594 -#: src/veritysetup.c:479 src/veritysetup.c:480 src/integritysetup.c:532 -#: src/integritysetup.c:533 src/integritysetup.c:535 +#: src/cryptsetup.c:3484 src/cryptsetup.c:3485 src/cryptsetup.c:3486 +#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:552 +#: src/integritysetup.c:553 src/integritysetup.c:555 msgid "" msgstr "" -#: src/cryptsetup.c:3592 src/veritysetup.c:479 src/integritysetup.c:532 +#: src/cryptsetup.c:3484 src/veritysetup.c:488 src/integritysetup.c:552 msgid "close device (remove mapping)" msgstr "stäng enhet (ta bort mappning)" -#: src/cryptsetup.c:3593 src/integritysetup.c:535 +#: src/cryptsetup.c:3485 src/integritysetup.c:555 msgid "resize active device" msgstr "ändra storlek på aktiv enhet" -#: src/cryptsetup.c:3594 +#: src/cryptsetup.c:3486 msgid "show device status" msgstr "visa enhetsstatus" -#: src/cryptsetup.c:3595 +#: src/cryptsetup.c:3487 msgid "[--cipher ]" msgstr "[--cipher ]" -#: src/cryptsetup.c:3595 +#: src/cryptsetup.c:3487 msgid "benchmark cipher" msgstr "prestandamät chiffer" -#: src/cryptsetup.c:3596 src/cryptsetup.c:3597 src/cryptsetup.c:3598 -#: src/cryptsetup.c:3599 src/cryptsetup.c:3600 src/cryptsetup.c:3607 -#: src/cryptsetup.c:3608 src/cryptsetup.c:3609 src/cryptsetup.c:3610 -#: src/cryptsetup.c:3611 src/cryptsetup.c:3612 src/cryptsetup.c:3613 -#: src/cryptsetup.c:3614 src/cryptsetup.c:3615 src/cryptsetup.c:3616 +#: src/cryptsetup.c:3488 src/cryptsetup.c:3489 src/cryptsetup.c:3490 +#: src/cryptsetup.c:3491 src/cryptsetup.c:3492 src/cryptsetup.c:3499 +#: src/cryptsetup.c:3500 src/cryptsetup.c:3501 src/cryptsetup.c:3502 +#: src/cryptsetup.c:3503 src/cryptsetup.c:3504 src/cryptsetup.c:3505 +#: src/cryptsetup.c:3506 src/cryptsetup.c:3507 src/cryptsetup.c:3508 msgid "" msgstr "" -#: src/cryptsetup.c:3596 +#: src/cryptsetup.c:3488 msgid "try to repair on-disk metadata" msgstr "försök att reparera metadata på disken" -#: src/cryptsetup.c:3597 +#: src/cryptsetup.c:3489 msgid "reencrypt LUKS2 device" msgstr "omkryptering av LUKS2-enhet" -#: src/cryptsetup.c:3598 +#: src/cryptsetup.c:3490 msgid "erase all keyslots (remove encryption key)" msgstr "ta bort alla nyckelplatser (ta bort krypteringsnyckeln)" -#: src/cryptsetup.c:3599 +#: src/cryptsetup.c:3491 msgid "convert LUKS from/to LUKS2 format" msgstr "konvertera LUKS från/till LUKS2-format" -#: src/cryptsetup.c:3600 +#: src/cryptsetup.c:3492 msgid "set permanent configuration options for LUKS2" msgstr "ange permanenta konfigurationsflaggor för LUKS2" -#: src/cryptsetup.c:3601 src/cryptsetup.c:3602 +#: src/cryptsetup.c:3493 src/cryptsetup.c:3494 msgid " []" msgstr " []" -#: src/cryptsetup.c:3601 +#: src/cryptsetup.c:3493 msgid "formats a LUKS device" msgstr "formaterar en LUKS-enhet" -#: src/cryptsetup.c:3602 +#: src/cryptsetup.c:3494 msgid "add key to LUKS device" msgstr "lägg till nyckel till LUKS-enhet" -#: src/cryptsetup.c:3603 src/cryptsetup.c:3604 src/cryptsetup.c:3605 +#: src/cryptsetup.c:3495 src/cryptsetup.c:3496 src/cryptsetup.c:3497 msgid " []" msgstr " []" -#: src/cryptsetup.c:3603 +#: src/cryptsetup.c:3495 msgid "removes supplied key or key file from LUKS device" msgstr "tar bort angiven nyckel eller nyckelfil från LUKS-enhet" -#: src/cryptsetup.c:3604 +#: src/cryptsetup.c:3496 msgid "changes supplied key or key file of LUKS device" msgstr "ändrar angiven nyckel eller nyckelfil för LUKS-enhet" -#: src/cryptsetup.c:3605 +#: src/cryptsetup.c:3497 msgid "converts a key to new pbkdf parameters" msgstr "konverterar en nyckel till nya pbkdf-parametrar" -#: src/cryptsetup.c:3606 +#: src/cryptsetup.c:3498 msgid " " msgstr " " -#: src/cryptsetup.c:3606 +#: src/cryptsetup.c:3498 msgid "wipes key with number from LUKS device" msgstr "rensar nyckeln med nummer från LUKS-enhet" -#: src/cryptsetup.c:3607 +#: src/cryptsetup.c:3499 msgid "print UUID of LUKS device" msgstr "skriv ut UUID för LUKS-enhet" -#: src/cryptsetup.c:3608 +#: src/cryptsetup.c:3500 msgid "tests for LUKS partition header" msgstr "testar för LUKS-partitionshuvud" -#: src/cryptsetup.c:3609 +#: src/cryptsetup.c:3501 msgid "dump LUKS partition information" msgstr "skriver ut information om LUKS-partition" -#: src/cryptsetup.c:3610 +#: src/cryptsetup.c:3502 msgid "dump TCRYPT device information" msgstr "skriver ut information om TCRYPT-partition" -#: src/cryptsetup.c:3611 +#: src/cryptsetup.c:3503 msgid "dump BITLK device information" msgstr "skriv ut BITLK-enhetsinformation" -#: src/cryptsetup.c:3612 +#: src/cryptsetup.c:3504 msgid "dump FVAULT2 device information" msgstr "skriv ut FVAULT2-enhetsinformation" -#: src/cryptsetup.c:3613 +#: src/cryptsetup.c:3505 msgid "Suspend LUKS device and wipe key (all IOs are frozen)" msgstr "Försätt LUKS-enhet i vänteläge och rensa nyckel (alla in-/ut-åtgärder är frusna)" -#: src/cryptsetup.c:3614 +#: src/cryptsetup.c:3506 msgid "Resume suspended LUKS device" msgstr "Återuppta LUKS-enhet i vänteläge" -#: src/cryptsetup.c:3615 +#: src/cryptsetup.c:3507 msgid "Backup LUKS device header and keyslots" msgstr "Säkerhetskopiera huvud och nyckelplatser från LUKS-enhet" -#: src/cryptsetup.c:3616 +#: src/cryptsetup.c:3508 msgid "Restore LUKS device header and keyslots" msgstr "Återställ huvud och nyckelplatser för LUKS-enhet" -#: src/cryptsetup.c:3617 +#: src/cryptsetup.c:3509 msgid " " msgstr " " -#: src/cryptsetup.c:3617 +#: src/cryptsetup.c:3509 msgid "Manipulate LUKS2 tokens" msgstr "Manipulera LUKS2-token" -#: src/cryptsetup.c:3636 src/veritysetup.c:496 src/integritysetup.c:550 +#: src/cryptsetup.c:3528 src/veritysetup.c:505 src/integritysetup.c:570 msgid "" "\n" " is one of:\n" @@ -2847,7 +2955,7 @@ msgstr "" "\n" "<åtgärd> är en av:\n" -#: src/cryptsetup.c:3642 +#: src/cryptsetup.c:3534 msgid "" "\n" "You can also use old syntax aliases:\n" @@ -2859,7 +2967,7 @@ msgstr "" "\topen: create (plainOpen), luksOpen, loopaesOpen, tcryptOpen, bitlkOpen\n" "\tclose: remove (plainClose), luksClose, loopaesClose, tcryptClose, bitlkOpen\n" -#: src/cryptsetup.c:3646 +#: src/cryptsetup.c:3538 #, c-format msgid "" "\n" @@ -2874,7 +2982,7 @@ msgstr "" " är numret för LUKS-nyckelplatsen att ändra\n" " valfri nyckelfil för den nya nyckeln för luksAddKey-åtgärden\n" -#: src/cryptsetup.c:3653 +#: src/cryptsetup.c:3545 #, c-format msgid "" "\n" @@ -2883,7 +2991,7 @@ msgstr "" "\n" "Inkompilerat standardmetadataformat är %s (för luksFormat-åtgärd).\n" -#: src/cryptsetup.c:3658 +#: src/cryptsetup.c:3550 msgid "" "\n" "LUKS2 external token plugin support is enabled.\n" @@ -2891,12 +2999,12 @@ msgstr "" "\n" "Stödet för externa LUKS2-insticksmoduler är aktiverat.\n" -#: src/cryptsetup.c:3659 +#: src/cryptsetup.c:3551 #, c-format msgid "LUKS2 external token plugin path: %s.\n" msgstr "Sökväg för externa LUKS2-insticksmoduler är %s.\n" -#: src/cryptsetup.c:3661 +#: src/cryptsetup.c:3553 msgid "" "\n" "LUKS2 external token plugin support is disabled.\n" @@ -2904,7 +3012,7 @@ msgstr "" "\n" "Stödet för externa LUKS2-insticksmoduler är inaktiverat.\n" -#: src/cryptsetup.c:3665 +#: src/cryptsetup.c:3557 #, c-format msgid "" "\n" @@ -2921,7 +3029,7 @@ msgstr "" "Standard-PBKDF för LUKS2: %s\n" "\tIterationstid: %d, Minne: %dkB, Parallella trådar: %d\n" -#: src/cryptsetup.c:3676 +#: src/cryptsetup.c:3568 #, c-format msgid "" "\n" @@ -2936,110 +3044,122 @@ msgstr "" "\tplain: %s, Nyckel: %d bitar, Lösenordshashning: %s\n" "\tLUKS1: %s, Nyckel: %d bitar, LUKS-huvudhashning %s, RNG: %s\n" -#: src/cryptsetup.c:3685 +#: src/cryptsetup.c:3577 msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: Standardnyckelstorlek med XTS-läge (två interna nycklar) kommer att dubbleras.\n" -#: src/cryptsetup.c:3703 src/veritysetup.c:638 src/integritysetup.c:710 +#: src/cryptsetup.c:3595 src/veritysetup.c:647 src/integritysetup.c:730 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: kräver %s som argument" -#: src/cryptsetup.c:3743 src/utils_reencrypt_luks1.c:1145 +#: src/cryptsetup.c:3635 src/utils_reencrypt_luks1.c:1143 msgid "Key slot is invalid." msgstr "Nyckelplatsen är ogiltig." -#: src/cryptsetup.c:3771 +#: src/cryptsetup.c:3663 msgid "Device size must be multiple of 512 bytes sector." msgstr "Enhetsstorlek måste vara en multipel av sektor på 512-byte." -#: src/cryptsetup.c:3776 +#: src/cryptsetup.c:3668 msgid "Invalid max reencryption hotzone size specification." msgstr "Ogiltig högsta storlekspecifikation för varm zon-omkryptering." -#: src/cryptsetup.c:3790 src/cryptsetup.c:3802 +#: src/cryptsetup.c:3682 src/cryptsetup.c:3699 src/cryptsetup.c:3711 msgid "Key size must be a multiple of 8 bits" msgstr "Nyckelstorlek måste vara en multipel av 8 bitar" -#: src/cryptsetup.c:3809 +#: src/cryptsetup.c:3689 +msgid "At most 2 key size specifications can be supplied." +msgstr "Högst 2 specifikationer för nyckelstorlek kan anges." + +#: src/cryptsetup.c:3718 src/cryptsetup.c:3729 #, c-format msgid "At most %d volume key specifications can be supplied." msgstr "Högst %d specifikationer för volymnycklar kan anges." -#: src/cryptsetup.c:3821 +#: src/cryptsetup.c:3741 #, c-format msgid "At most %d keyring link specifications can be supplied." msgstr "Högst %d specifikationer för nyckelringslänkar kan anges." -#: src/cryptsetup.c:3830 +#: src/cryptsetup.c:3750 msgid "Maximum device reduce size is 1 GiB." msgstr "Högsta förminskningsstorlek för enhet är 1 GiB." -#: src/cryptsetup.c:3833 +#: src/cryptsetup.c:3753 msgid "Reduce size must be multiple of 512 bytes sector." msgstr "Minskningsstorlek måste vara en multipel av 512-bytesektor." -#: src/cryptsetup.c:3850 +#: src/cryptsetup.c:3770 msgid "Option --priority can be only ignore/normal/prefer." msgstr "Flaggan --priority kan endast vara ignore/normal/prefer." -#: src/cryptsetup.c:3869 src/veritysetup.c:559 src/integritysetup.c:630 +#: src/cryptsetup.c:3789 src/veritysetup.c:568 src/integritysetup.c:650 msgid "Show this help message" msgstr "Visa detta hjälpmeddelande" -#: src/cryptsetup.c:3870 src/veritysetup.c:560 src/integritysetup.c:631 +#: src/cryptsetup.c:3790 src/veritysetup.c:569 src/integritysetup.c:651 msgid "Display brief usage" msgstr "Visa kort information om användning" -#: src/cryptsetup.c:3871 src/veritysetup.c:561 src/integritysetup.c:632 +#: src/cryptsetup.c:3791 src/veritysetup.c:570 src/integritysetup.c:652 msgid "Print package version" msgstr "Skriv ut paketversion" -#: src/cryptsetup.c:3882 src/veritysetup.c:572 src/integritysetup.c:643 +#: src/cryptsetup.c:3802 src/veritysetup.c:581 src/integritysetup.c:663 msgid "Help options:" msgstr "Hjälpflaggor:" -#: src/cryptsetup.c:3905 src/veritysetup.c:593 src/integritysetup.c:663 +#: src/cryptsetup.c:3825 src/veritysetup.c:602 src/integritysetup.c:683 msgid "[OPTION...] " msgstr "[FLAGGA…] <åtgärd> <åtgärdsspecifik>" -#: src/cryptsetup.c:3914 src/veritysetup.c:602 src/integritysetup.c:674 +#: src/cryptsetup.c:3834 src/veritysetup.c:611 src/integritysetup.c:694 msgid "Argument missing." msgstr "Argumentet <åtgärd> saknas." -#: src/cryptsetup.c:3993 src/veritysetup.c:633 src/integritysetup.c:705 +#: src/cryptsetup.c:3913 src/veritysetup.c:642 src/integritysetup.c:725 msgid "Unknown action." msgstr "Okänd åtgärd." -#: src/cryptsetup.c:4011 +#: src/cryptsetup.c:3931 msgid "Option --key-file takes precedence over specified key file argument." msgstr "Flaggan --key-file åsidosätter specificerade nyckelfilsargument." -#: src/cryptsetup.c:4017 +#: src/cryptsetup.c:3937 msgid "Only one --key-file argument is allowed." msgstr "Endast ett argument för --key-file är tillåtet." -#: src/cryptsetup.c:4022 +#: src/cryptsetup.c:3942 msgid "Password-based key derivation function (PBKDF) can be only pbkdf2 or argon2i/argon2id." msgstr "Password-based key derivation function (PBKDF) kan endast vara pbkdf2 eller argon2i/argon2id." -#: src/cryptsetup.c:4027 +#: src/cryptsetup.c:3947 msgid "PBKDF forced iterations cannot be combined with iteration time option." msgstr "Tvingade PBKDF-iterationer går inte att kombinera med flaggan iteration time." -#: src/cryptsetup.c:4032 +#: src/cryptsetup.c:3952 msgid "Cannot link volume key to a keyring when keyring is disabled." msgstr "Det går inte att länka volymnyckeln till en nyckelring när nyckelringen är inaktiverad." -#: src/cryptsetup.c:4043 +#: src/cryptsetup.c:3957 +msgid "Cannot use keyring key description when keyring is disabled." +msgstr "Det går inte att använda nyckelringsnyckelbeskrivning när nyckelringen är inaktiverad." + +#: src/cryptsetup.c:3962 +msgid "Inline integrity must be used together with --integrity option." +msgstr "Inline-integritet måste användas tillsammans med flaggan --integrity." + +#: src/cryptsetup.c:3973 msgid "Options --keyslot-cipher and --keyslot-key-size must be used together." msgstr "Flaggorna --keyslot-cipher och --keyslot-key-size måste användas tillsammans." -#: src/cryptsetup.c:4051 +#: src/cryptsetup.c:3981 msgid "No action taken. Invoked with --test-args option.\n" msgstr "Ingen åtgärd utfördes. Startades med flaggan --test-args\n" -#: src/cryptsetup.c:4064 +#: src/cryptsetup.c:3994 msgid "Cannot disable metadata locking." msgstr "Det går inte att inaktivera metadatalås." @@ -3050,7 +3170,7 @@ msgstr "Angav ogiltig saltsträng." #: src/veritysetup.c:74 #, c-format msgid "Cannot create hash image %s for writing." -msgstr "Kan inte skapa hashavbild %s för skrivning." +msgstr "Det går inte att skapa hashavbild %s för skrivning." #: src/veritysetup.c:84 #, c-format @@ -3060,79 +3180,79 @@ msgstr "Det går inte att skapa FEC-avbild %s för skrivning." #: src/veritysetup.c:123 #, c-format msgid "Cannot create root hash file %s for writing." -msgstr "Kan inte skapa root-hashfil %s för skrivning." +msgstr "Det går inte att skapa root-hashfil %s för skrivning." #: src/veritysetup.c:130 #, c-format msgid "Cannot write to root hash file %s." msgstr "Det går inte att skriva till root-hash-filen %s." -#: src/veritysetup.c:185 src/veritysetup.c:463 +#: src/veritysetup.c:189 src/veritysetup.c:472 #, c-format msgid "Device %s is not a valid VERITY device." msgstr "Enheten %s är inte en giltig VERITY-enhet." -#: src/veritysetup.c:202 src/veritysetup.c:219 +#: src/veritysetup.c:206 src/veritysetup.c:223 #, c-format msgid "Cannot read root hash file %s." msgstr "Det går inte att läsa rot-hash-filen %s." -#: src/veritysetup.c:207 +#: src/veritysetup.c:211 #, c-format msgid "Invalid root hash file %s." msgstr "Ogiltig rothashsträng %s." -#: src/veritysetup.c:228 +#: src/veritysetup.c:232 msgid "Invalid root hash string specified." msgstr "Angav ogiltig rothashsträng." -#: src/veritysetup.c:236 +#: src/veritysetup.c:240 #, c-format msgid "Invalid signature file %s." msgstr "Ogiltig signaturfil %s." -#: src/veritysetup.c:243 +#: src/veritysetup.c:247 #, c-format msgid "Cannot read signature file %s." msgstr "Det går inte att läsa signaturfilen %s." -#: src/veritysetup.c:266 src/veritysetup.c:280 +#: src/veritysetup.c:270 src/veritysetup.c:287 msgid "Command requires or --root-hash-file option as argument." msgstr "Kommandot kräver eller flaggan --root-hash-file som argument." -#: src/veritysetup.c:476 +#: src/veritysetup.c:485 msgid " " msgstr " " -#: src/veritysetup.c:476 src/integritysetup.c:530 +#: src/veritysetup.c:485 src/integritysetup.c:550 msgid "format device" msgstr "formatera enhet" -#: src/veritysetup.c:477 +#: src/veritysetup.c:486 msgid " []" msgstr " " -#: src/veritysetup.c:477 +#: src/veritysetup.c:486 msgid "verify device" msgstr "verifiera enhet" -#: src/veritysetup.c:478 +#: src/veritysetup.c:487 msgid " []" msgstr " []" -#: src/veritysetup.c:480 src/integritysetup.c:533 +#: src/veritysetup.c:489 src/integritysetup.c:553 msgid "show active device status" msgstr "visa statistik för aktiv enhet" -#: src/veritysetup.c:481 +#: src/veritysetup.c:490 msgid "" msgstr "" -#: src/veritysetup.c:481 src/integritysetup.c:534 +#: src/veritysetup.c:490 src/integritysetup.c:554 msgid "show on-disk information" msgstr "visa information från disk" -#: src/veritysetup.c:500 +#: src/veritysetup.c:509 #, c-format msgid "" "\n" @@ -3147,7 +3267,7 @@ msgstr "" " är enheten som innehåller verifieringsdata\n" " hash för rotnoden på \n" -#: src/veritysetup.c:507 +#: src/veritysetup.c:516 #, c-format msgid "" "\n" @@ -3158,46 +3278,54 @@ msgstr "" "Inkompilerade standardparametrar för dm-verity:\n" "\tHash: %s, Datablock (byte): %u, Hashblock (byte): %u, Saltstorlek: %u, Hashformat: %u\n" -#: src/veritysetup.c:648 +#: src/veritysetup.c:657 msgid "Option --ignore-corruption and --restart-on-corruption cannot be used together." -msgstr "Flaggorna --ignore-corruption och --restart-on-corruption kan inte användas tillsammans." +msgstr "Det går inte att använda flaggorna --ignore-corruption och --restart-on-corruption tillsammans." -#: src/veritysetup.c:653 +#: src/veritysetup.c:662 msgid "Option --panic-on-corruption and --restart-on-corruption cannot be used together." msgstr "Det går inte att använda flaggorna --panic-on-corruption och --restart-on-corruption tillsammans." -#: src/integritysetup.c:164 +#: src/veritysetup.c:668 +msgid "Option --error-as-corruption must be used with --panic-on-corruption or --restart-on-corruption." +msgstr "Det går inte att använda flaggorna --panic-on-corruption och --restart-on-corruption tillsammans." + +#: src/integritysetup.c:168 #, c-format msgid "" "This will overwrite data on %s and %s irrevocably.\n" "To preserve data device use --no-wipe option (and then activate with --integrity-recalculate)." msgstr "" -"Det här kommer oåterkalligen tatt skriva över data på %s och %s.\n" +"Det här kommer oåterkalleligt att skriva över data på %s och %s.\n" "För att bevara dataenheten använd flaggan --no-wipe (och aktivera sedan med --integrity-recalculate)." -#: src/integritysetup.c:204 +#: src/integritysetup.c:213 #, c-format -msgid "Formatted with tag size %u, internal integrity %s.\n" -msgstr "Formaterad med taggstorlek %u, intern integritet %s.\n" +msgid "Formatted with tag size %u%s, internal integrity %s.\n" +msgstr "Formaterad med taggstorlek %u%s, intern integritet %s.\n" + +#: src/integritysetup.c:214 +msgid " (inline hw tags)" +msgstr " (inline-hårdvarutaggar)" -#: src/integritysetup.c:285 +#: src/integritysetup.c:297 msgid "Setting recalculate flag is not supported, you may consider using --wipe instead." -msgstr "Att sätta flaggan för att räkna om stöds ej, överväg att använda --wipe istället." +msgstr "Att sätta flaggan för att räkna om stöds inte, överväg att använda --wipe istället." -#: src/integritysetup.c:360 src/integritysetup.c:517 +#: src/integritysetup.c:374 src/integritysetup.c:537 #, c-format msgid "Device %s is not a valid INTEGRITY device." msgstr "Enheten %s är inte en giltig INTEGRITY-enhet." -#: src/integritysetup.c:530 src/integritysetup.c:534 +#: src/integritysetup.c:550 src/integritysetup.c:554 msgid "" msgstr "" -#: src/integritysetup.c:531 +#: src/integritysetup.c:551 msgid " " msgstr " " -#: src/integritysetup.c:554 +#: src/integritysetup.c:574 #, c-format msgid "" "\n" @@ -3208,7 +3336,7 @@ msgstr "" " är enheten att skapa under %s\n" " är enheten som innehåller data med integritetstaggar\n" -#: src/integritysetup.c:559 +#: src/integritysetup.c:579 #, c-format msgid "" "\n" @@ -3222,42 +3350,50 @@ msgstr "" "\tMaximal nyckelfilstorlek: %dkB\n" "\n" -#: src/integritysetup.c:616 +#: src/integritysetup.c:636 #, c-format msgid "Invalid --%s size. Maximum is %u bytes." msgstr "Ogiltig --%s-storlek. Maximal storlek är %u byte." -#: src/integritysetup.c:719 +#: src/integritysetup.c:739 msgid "Both key file and key size options must be specified." -msgstr "Både flaggor för nyckelfil och nyckelstorlek måste specifiiceras." +msgstr "Både flaggor för nyckelfil och nyckelstorlek måste specificeras." -#: src/integritysetup.c:723 +#: src/integritysetup.c:743 msgid "Both journal integrity key file and key size options must be specified." msgstr "Både flaggor för nyckelfil för journalintegritet och nyckelstorlek måste specificeras." -#: src/integritysetup.c:726 +#: src/integritysetup.c:746 msgid "Journal integrity algorithm must be specified if journal integrity key is used." msgstr "Integritetsalgoritm för journal måste anges om integritetsnyckel för journal används." -#: src/integritysetup.c:730 +#: src/integritysetup.c:750 msgid "Both journal encryption key file and key size options must be specified." msgstr "Både flaggor för nyckelfil för journalkryptering och nyckelstorlek måste specificeras." -#: src/integritysetup.c:733 +#: src/integritysetup.c:753 msgid "Journal encryption algorithm must be specified if journal encryption key is used." msgstr "Krypteringsalgoritm för journal måste anges om integritetsnyckel för journal används." -#: src/integritysetup.c:737 +#: src/integritysetup.c:757 msgid "Recovery and bitmap mode options are mutually exclusive." msgstr "Flaggorna för återställning- och bitmap-läge är ömsesidigt uteslutande." -#: src/integritysetup.c:744 +#: src/integritysetup.c:764 msgid "Journal options cannot be used in bitmap mode." msgstr "Det går inte att använda journalflaggor i bitmap-läge." -#: src/integritysetup.c:749 +#: src/integritysetup.c:769 msgid "Bitmap options can be used only in bitmap mode." -msgstr "Flaggan för integritet kan endast användas i bitmap-läge." +msgstr "Bitmap-flaggor kan endast användas i bitmap-läge." + +#: src/integritysetup.c:775 +msgid "Inline mode cannot be combined with journal or bitmap options." +msgstr "Det går inte att kombinera inline-läge med journal- eller bitmap-flaggor." + +#: src/integritysetup.c:779 +msgid "Inline mode cannot be combined with separate data device." +msgstr "Det går inte att kombinera inline-läge med separat dataenhet." #: src/utils_tools.c:105 msgid "" @@ -3360,12 +3496,12 @@ msgstr "Token (type %s) kräver PIN." #: src/utils_tools.c:275 #, c-format msgid "Token %i cannot unlock assigned keyslot(s) (wrong keyslot passphrase)." -msgstr "Token %i kan inte låsa upp tilldelade nyckelplatser (felaktigt lösenord)." +msgstr "Det går inte att låsa upp tilldelade nyckelplatser med token %i (felaktigt lösenord)." #: src/utils_tools.c:277 #, c-format msgid "Token (type %s) cannot unlock assigned keyslot(s) (wrong keyslot passphrase)." -msgstr "Token (typ %s) kan inte låsa upp tilldelade nyckelplatser (felaktigt lösenord)." +msgstr "Det går inte att låsa upp tilldelade nyckelplatser med token (typ %s) (felaktigt lösenord)." #: src/utils_tools.c:280 #, c-format @@ -3406,6 +3542,14 @@ msgstr "Det går inte att öppna nyckelfilen %s för skrivning." msgid "Cannot write to keyfile %s." msgstr "Det går inte att skriva till nyckelfilen %s." +#: src/utils_tools.c:468 +msgid "Name is too long." +msgstr "Namnet är för långt." + +#: src/utils_tools.c:471 +msgid "Name must not contain '/' character." +msgstr "Namnet får inte innehålla tecknet '/'." + #: src/utils_progress.c:61 #, c-format msgid "%02m%02s" @@ -3467,58 +3611,62 @@ msgstr "" msgid "Password quality check failed: Bad passphrase (%s)" msgstr "Misslyckades med kvalitetskontroll av lösenord: Dålig lösenfras (%s)" -#: src/utils_password.c:221 src/utils_password.c:235 +#: src/utils_password.c:197 +msgid "Read stopped at maximal interactive input length, passphrase can be trimmed." +msgstr "Läsningen stoppades vid maximal interaktiv inmatningslängd, lösenfrasen kan kortas av." + +#: src/utils_password.c:224 src/utils_password.c:238 msgid "Error reading passphrase from terminal." msgstr "Fel vid läsning av lösenfras från terminal." -#: src/utils_password.c:233 +#: src/utils_password.c:236 msgid "Verify passphrase: " msgstr "Verifiera lösenfras: " -#: src/utils_password.c:240 +#: src/utils_password.c:243 msgid "Passphrases do not match." msgstr "Lösenfraserna stämmer inte överens." -#: src/utils_password.c:278 +#: src/utils_password.c:281 msgid "Cannot use offset with terminal input." -msgstr "Det går inte att använda offset med terminalinmatning." +msgstr "Det går inte att använda förskjutning med terminalinmatning." -#: src/utils_password.c:282 +#: src/utils_password.c:285 #, c-format msgid "Enter passphrase: " msgstr "Ange lösenfras: " -#: src/utils_password.c:285 +#: src/utils_password.c:288 #, c-format msgid "Enter passphrase for %s: " msgstr "Ange lösenfras för %s: " -#: src/utils_password.c:319 +#: src/utils_password.c:322 msgid "No key available with this passphrase." msgstr "Ingen nyckel finns tillgänglig med denna lösenfras." -#: src/utils_password.c:321 +#: src/utils_password.c:324 msgid "No usable keyslot is available." msgstr "Ingen tillgänglig användbar nyckelplats." #: src/utils_luks.c:55 msgid "Can't do passphrase verification on non-tty inputs." -msgstr "Kan inte verifiera lösenfras på icke-tty-ingångar." +msgstr "Det går inte att verifiera lösenfras på icke-tty-ingångar." -#: src/utils_luks.c:173 +#: src/utils_luks.c:179 #, c-format msgid "Failed to open file %s in read-only mode." msgstr "Misslyckades med att öppna filen %s i skrivskyddat läge." -#: src/utils_luks.c:186 +#: src/utils_luks.c:193 msgid "Provide valid LUKS2 token JSON:\n" msgstr "Tillhandahåll giltig JSON för LUKS2-token:\n" -#: src/utils_luks.c:193 +#: src/utils_luks.c:200 msgid "Failed to read JSON file." msgstr "Misslyckades med att läsa in JSON-filen." -#: src/utils_luks.c:198 +#: src/utils_luks.c:205 msgid "" "\n" "Read interrupted." @@ -3526,12 +3674,12 @@ msgstr "" "\n" "Läsning avbryten." -#: src/utils_luks.c:239 +#: src/utils_luks.c:246 #, c-format msgid "Failed to open file %s in write mode." msgstr "Misslyckades med att öppna filen %s in skrivläge." -#: src/utils_luks.c:248 +#: src/utils_luks.c:255 msgid "" "\n" "Write interrupted." @@ -3539,26 +3687,26 @@ msgstr "" "\n" "Skrivning avbruten." -#: src/utils_luks.c:252 +#: src/utils_luks.c:259 msgid "Failed to write JSON file." msgstr "Misslyckades med att skriva JSON-fil." -#: src/utils_reencrypt.c:107 +#: src/utils_reencrypt.c:93 #, c-format msgid "Auto-detected active dm device '%s' for data device %s.\n" msgstr "Auto-identifierade aktiv dm-enhet ”%s” för dataenheten %s.\n" -#: src/utils_reencrypt.c:111 +#: src/utils_reencrypt.c:97 #, c-format msgid "Failed to auto-detect device %s holders." msgstr "Misslyckades med att identifiera kopplingarna till enhet %s." -#: src/utils_reencrypt.c:117 +#: src/utils_reencrypt.c:103 #, c-format msgid "Device %s is not a block device.\n" msgstr "Enheten %s är inte en giltig blockenhet.\n" -#: src/utils_reencrypt.c:119 +#: src/utils_reencrypt.c:105 #, c-format msgid "" "Unable to decide if device %s is activated or not.\n" @@ -3566,173 +3714,184 @@ msgid "" "It may lead to data corruption if the device is actually activated.\n" "To run reencryption in online mode, use --active-name parameter instead.\n" msgstr "" -"Det går inte att avgöra om enheten %s är aktiverade eller ej.\n" +"Det går inte att avgöra om enheten %s är aktiverade eller inte.\n" "Är du säker på att du vill fortsätta kryptera om i frånkopplat läge?\n" "Det kan leda till datakorruption om enheten är aktiverad.\n" "För att kryptera om i uppkopplat läge, använd istället flaggan --active-name.\n" -#: src/utils_reencrypt.c:128 src/utils_reencrypt.c:261 +#: src/utils_reencrypt.c:114 src/utils_reencrypt.c:247 #, c-format msgid "" "Device %s is not a block device. Can not auto-detect if it is active or not.\n" "Use --force-offline-reencrypt to bypass the check and run in offline mode (dangerous!)." msgstr "" -"Enheten %s är inte en blockenhet. Kan inte automatiskt upptäcka om den är aktiv eller inte.\n" +"Enheten %s är inte en blockenhet. Det går inte att automatiskt upptäcka om den är aktiv eller inte.\n" "Använd --force-offline-reencrypt för att kringgå kontrollen och köra i offline-läge (farligt!)." -#: src/utils_reencrypt.c:165 src/utils_reencrypt.c:208 -#: src/utils_reencrypt.c:218 +#: src/utils_reencrypt.c:151 src/utils_reencrypt.c:194 +#: src/utils_reencrypt.c:204 msgid "Requested --resilience option cannot be applied to current reencryption operation." -msgstr "Begärd flagga --resilience kan inte tillämpas på aktuell omkrypteringsåtgärd." +msgstr "Det går inte att tillämpa begärd flagga --resilience på aktuell omkrypteringsåtgärd." -#: src/utils_reencrypt.c:190 +#: src/utils_reencrypt.c:176 msgid "Device is not in LUKS2 encryption. Conflicting option --encrypt." msgstr "Enheten är inte under LUKS2-omkryptering. Motsägelsefull flagga --encrypt." -#: src/utils_reencrypt.c:195 +#: src/utils_reencrypt.c:181 msgid "Device is not in LUKS2 decryption. Conflicting option --decrypt." msgstr "Enheten är inte i LUKS2-dekryptering. Motsägelsefull flagga --decrypt." -#: src/utils_reencrypt.c:202 +#: src/utils_reencrypt.c:188 msgid "Device is in reencryption using datashift resilience. Requested --resilience option cannot be applied." -msgstr "Enheten är under omkryptering med dataskiftåterhämtning. Begärd flagga --resillence kan inte tillämpas." +msgstr "Enheten är under omkryptering med dataskiftåterhämtning. Det går inte att tillämpa begärd flagga --resilience." + +#: src/utils_reencrypt.c:282 src/utils_reencrypt.c:1924 +msgid "Cannot determine volume key size for LUKS without keyslots, please use --new-key-size option." +msgstr "Det går inte att avgöra volymens nyckelstorlek för LUKS utan nyckelplatser, använd flaggen --new-key-size." -#: src/utils_reencrypt.c:280 +#: src/utils_reencrypt.c:436 msgid "Device requires reencryption recovery. Run repair first." msgstr "Enheten kräver omkrypteringsåterställning. Starta repair först." -#: src/utils_reencrypt.c:294 +#: src/utils_reencrypt.c:450 #, c-format msgid "Device %s is already in LUKS2 reencryption. Do you wish to resume previously initialised operation?" -msgstr "Enheten %s är redan under LUKS2-omkryptering. Vill du återuppta tidigare intierad åtgärd?" +msgstr "Enheten %s är redan under LUKS2-omkryptering. Vill du återuppta tidigare initierad åtgärd?" -#: src/utils_reencrypt.c:403 +#: src/utils_reencrypt.c:561 msgid "Legacy LUKS2 reencryption is no longer supported." msgstr "Stöder inte längre föråldrad LUKS2-omkryptering." -#: src/utils_reencrypt.c:408 +#: src/utils_reencrypt.c:566 msgid "Can not reencrypt LUKS2 device configured to use OPAL." -msgstr "Kan inte återkryptera LUKS2-enhet som konfigurerats för att använda OPAL." +msgstr "Det går inte att återkryptera LUKS2-enhet som konfigurerats för att använda OPAL." -#: src/utils_reencrypt.c:414 +#: src/utils_reencrypt.c:572 msgid "Reencryption of device with integrity profile is not supported." -msgstr "Kryptering för enhet med integritetsprofil stöds ej." +msgstr "Kryptering för enhet med integritetsprofil stöds inte." -#: src/utils_reencrypt.c:451 +#: src/utils_reencrypt.c:609 #, c-format msgid "" "Requested --sector-size % is incompatible with %s superblock\n" "(block size: % bytes) detected on device %s." msgstr "" -"Begärde --sector-size % är inkompatibel med superblock %s\n" +"Begärd --sector-size % är inkompatibel med superblock %s\n" "(blockstorlek: % byte) identifierad på enheten %s." -#: src/utils_reencrypt.c:520 src/utils_reencrypt.c:1408 +#: src/utils_reencrypt.c:678 src/utils_reencrypt.c:2204 msgid "Encryption without detached header (--header) is not possible without data device size reduction (--reduce-device-size)." msgstr "Kryptering utan frånkopplat huvud (--header) är inte möjligt utan att minska datastorleken på enheten (--reduce-device-size)." -#: src/utils_reencrypt.c:527 +#: src/utils_reencrypt.c:687 msgid "Requested data offset must be less than or equal to half of --reduce-device-size parameter." -msgstr "Begärd dataförskjutning måste vara mindre än, eller lika med halva av parametern --reduce-device-size." +msgstr "Begärd dataförskjutning måste vara mindre än eller lika med hälften av parametern --reduce-device-size." -#: src/utils_reencrypt.c:537 +#: src/utils_reencrypt.c:697 #, c-format msgid "Adjusting --reduce-device-size value to twice the --offset % (sectors).\n" -msgstr "Justera värdet av --reduce-device-size-värdet till dubbla --offset % (sektorer).\n" +msgstr "Justerar --reduce-device-size-värdet till dubbla --offset % (sektorer).\n" -#: src/utils_reencrypt.c:567 +#: src/utils_reencrypt.c:727 #, c-format msgid "Temporary header file %s already exists. Aborting." msgstr "Tillfällig huvudfil %s finns redan. Avbryter." -#: src/utils_reencrypt.c:569 src/utils_reencrypt.c:576 +#: src/utils_reencrypt.c:729 src/utils_reencrypt.c:736 #, c-format msgid "Cannot create temporary header file %s." msgstr "Det går inte att skapa tillfällig huvudfil %s." -#: src/utils_reencrypt.c:601 +#: src/utils_reencrypt.c:761 msgid "LUKS2 metadata size is larger than data shift value." msgstr "LUKS2-metadatastorleken är större än dataskift-värdet." -#: src/utils_reencrypt.c:638 +#: src/utils_reencrypt.c:800 #, c-format msgid "Failed to place new header at head of device %s." -msgstr "Misslyckades med att placera ny header i början på enheten %s." +msgstr "Misslyckades med att placera nytt huvud i början på enheten %s." -#: src/utils_reencrypt.c:648 +#: src/utils_reencrypt.c:813 #, c-format msgid "%s/%s is now active and ready for online encryption.\n" msgstr "%s/%s är nu aktiv och redo för uppkopplad kryptering.\n" -#: src/utils_reencrypt.c:684 +#: src/utils_reencrypt.c:850 #, c-format msgid "Active device %s is not LUKS2." msgstr "Aktiva enheten: %s är inte LUKS2." -#: src/utils_reencrypt.c:712 +#: src/utils_reencrypt.c:878 msgid "Restoring original LUKS2 header." msgstr "Återställer ursprungligt LUKS2-huvud." -#: src/utils_reencrypt.c:720 +#: src/utils_reencrypt.c:886 msgid "Original LUKS2 header restore failed." msgstr "Misslyckades med återställning av ursprungligt LUKS2-huvud." -#: src/utils_reencrypt.c:752 +#: src/utils_reencrypt.c:918 #, c-format msgid "Header file %s does not exist. Do you want to initialize LUKS2 decryption of device %s and export LUKS2 header to file %s?" -msgstr "Header-filen %s finns inte. Vill du initiera LUKS2-dekryptering av enheten %s och exportera LUKS2-huvudet till filen %s?" +msgstr "Huvudfilen %s finns inte. Vill du initiera LUKS2-dekryptering av enheten %s och exportera LUKS2-huvudet till filen %s?" -#: src/utils_reencrypt.c:802 +#: src/utils_reencrypt.c:961 msgid "Failed to add read/write permissions to exported header file." msgstr "Misslyckades med att läsa/skriva behörighetsflaggor till exporterad huvudfil." -#: src/utils_reencrypt.c:856 +#: src/utils_reencrypt.c:1015 #, c-format msgid "Reencryption initialization failed. Header backup is available in %s." msgstr "Misslyckades med initiering av omkryptering. Säkerhetskopian av huvudet är tillgänglig i %s." -#: src/utils_reencrypt.c:884 +#: src/utils_reencrypt.c:1043 msgid "LUKS2 decryption is supported with detached header device only (with data offset set to 0)." -msgstr "LUKS2-dekryptering stöds endast för enheter med fristående header (med data-offset satt till 0)." +msgstr "LUKS2-dekryptering stöds endast för enheter med fristående huvud (med dataförskjutning satt till 0)." -#: src/utils_reencrypt.c:1019 src/utils_reencrypt.c:1028 +#: src/utils_reencrypt.c:1487 +msgid "No token could unlock the device." +msgstr "Ingen token kunde låsa upp enheten." + +#: src/utils_reencrypt.c:1519 src/utils_reencrypt.c:1528 msgid "Not enough free keyslots for reencryption." msgstr "Inte nog med fria nyckelplatser för omkryptering." -#: src/utils_reencrypt.c:1049 src/utils_reencrypt_luks1.c:1047 -msgid "Key file can be used only with --key-slot or with exactly one key slot active." -msgstr "Nyckelfil kan endast användas med --key-slot eller precis en aktiv nyckelplats." +#: src/utils_reencrypt.c:1559 +msgid "Key file or keyring key description can be used only with --key-slot or with exactly one key slot active." +msgstr "Nyckelfil eller nyckelringsnyckelbeskrivning kan endast användas med --key-slot eller precis en aktiv nyckelplats." -#: src/utils_reencrypt.c:1058 src/utils_reencrypt_luks1.c:1094 -#: src/utils_reencrypt_luks1.c:1105 +#: src/utils_reencrypt.c:1566 src/utils_reencrypt.c:1579 +#: src/utils_reencrypt_luks1.c:1092 src/utils_reencrypt_luks1.c:1103 #, c-format msgid "Enter passphrase for key slot %d: " msgstr "Ange lösenfras för nyckelplats %d: " -#: src/utils_reencrypt.c:1070 -#, c-format -msgid "Enter passphrase for key slot %u: " -msgstr "Ange lösenfras för nyckelplats %u: " - -#: src/utils_reencrypt.c:1122 +#: src/utils_reencrypt.c:1876 #, c-format msgid "Switching data encryption cipher to %s.\n" msgstr "Byter krypteringschiffer till %s.\n" -#: src/utils_reencrypt.c:1176 +#: src/utils_reencrypt.c:1977 src/utils_reencrypt.c:1998 +msgid "Use --force-no-keyslots to reencrypt device with active keyslots by passing volume keys directly." +msgstr "Använd --force-no-keyslots för att omkryptera enheten med aktiva nyckelplatser genom att ange volymnycklar direkt." + +#: src/utils_reencrypt.c:1993 +msgid "Option --new-volume-key-file must be paired with --new-key-size" +msgstr "Flaggan --new-volume-key-file måste kombineras med --new-key-size" + +#: src/utils_reencrypt.c:2035 msgid "No data segment parameters changed. Reencryption aborted." msgstr "Inga parametrar för datasegment ändrades. Omkryptering avbruten." -#: src/utils_reencrypt.c:1278 +#: src/utils_reencrypt.c:2072 msgid "" "Encryption sector size increase on offline device is not supported.\n" "Activate the device first or use --force-offline-reencrypt option (dangerous!)." msgstr "" -"Ökning av sektorstorlek för kryptering på en frånkopplad enhet stöds ej.\n" +"Ökning av sektorstorlek för kryptering på en frånkopplad enhet stöds inte.\n" "Aktivera enheten för eller använd flaggan --force-offline-reencrypt (farligt!)." -#: src/utils_reencrypt.c:1318 src/utils_reencrypt_luks1.c:690 -#: src/utils_reencrypt_luks1.c:761 +#: src/utils_reencrypt.c:2114 src/utils_reencrypt_luks1.c:688 +#: src/utils_reencrypt_luks1.c:759 msgid "" "\n" "Reencryption interrupted." @@ -3740,67 +3899,67 @@ msgstr "" "\n" "Omkryptering avbryten." -#: src/utils_reencrypt.c:1323 +#: src/utils_reencrypt.c:2119 msgid "Resuming LUKS reencryption in forced offline mode.\n" msgstr "Återupptar LUKS-omkryptering i tvingat frånkopplat läge.\n" -#: src/utils_reencrypt.c:1346 +#: src/utils_reencrypt.c:2142 #, c-format msgid "Device %s contains broken LUKS metadata. Aborting operation." msgstr "Enheten %s innehåller felaktig LUKS-metadata. Avbryter åtgärden." -#: src/utils_reencrypt.c:1362 src/utils_reencrypt.c:1384 +#: src/utils_reencrypt.c:2158 src/utils_reencrypt.c:2180 #, c-format msgid "Device %s is already LUKS device. Aborting operation." msgstr "Enheten %s är redan en LUKS-enhet. Avbryter åtgärd." -#: src/utils_reencrypt.c:1390 +#: src/utils_reencrypt.c:2186 #, c-format msgid "Device %s is already in LUKS reencryption. Aborting operation." msgstr "Enheten %s är redan i LUKS-omkryptering. Avbryter åtgärd." -#: src/utils_reencrypt.c:1473 +#: src/utils_reencrypt.c:2269 msgid "LUKS2 decryption requires --header option." msgstr "LUKS2-dekryptering kräver flaggan --header." -#: src/utils_reencrypt.c:1521 +#: src/utils_reencrypt.c:2317 msgid "Command requires device as argument." msgstr "Kommandot kräver en enhet som argument." -#: src/utils_reencrypt.c:1534 +#: src/utils_reencrypt.c:2330 #, c-format msgid "Conflicting versions. Device %s is LUKS1." msgstr "Versionskonflikt. Enheten %s är LUKS1." -#: src/utils_reencrypt.c:1540 +#: src/utils_reencrypt.c:2336 #, c-format msgid "Conflicting versions. Device %s is in LUKS1 reencryption." msgstr "Versionskonflikt. Enheten %s är under LUKS2-omkryptering." -#: src/utils_reencrypt.c:1546 +#: src/utils_reencrypt.c:2342 #, c-format msgid "Conflicting versions. Device %s is LUKS2." msgstr "Versionskonflikt. Enheten %s är LUKS2." -#: src/utils_reencrypt.c:1552 +#: src/utils_reencrypt.c:2348 #, c-format msgid "Conflicting versions. Device %s is in LUKS2 reencryption." msgstr "Versionskonflikt: Enheten %s är under LUKS2-omkryptering." -#: src/utils_reencrypt.c:1558 +#: src/utils_reencrypt.c:2354 msgid "LUKS2 reencryption already initialized. Aborting operation." msgstr "LUKS2-omkryptering är redan initierad. Avbryter åtgärd." -#: src/utils_reencrypt.c:1565 +#: src/utils_reencrypt.c:2361 msgid "Device reencryption not in progress." -msgstr "Enhetsomkryptering pågår ej." +msgstr "Enhetsomkryptering pågår inte." -#: src/utils_reencrypt_luks1.c:116 src/utils_blockdev.c:282 +#: src/utils_reencrypt_luks1.c:116 src/utils_blockdev.c:285 #, c-format msgid "Cannot exclusively open %s, device in use." -msgstr "Kan inte öppna %s exklusivt, enheten används." +msgstr "Det går inte att öppna %s exklusivt, enheten används." -#: src/utils_reencrypt_luks1.c:130 src/utils_reencrypt_luks1.c:885 +#: src/utils_reencrypt_luks1.c:130 src/utils_reencrypt_luks1.c:883 msgid "Allocation of aligned memory failed." msgstr "Misslyckades med allokering av justerat minne." @@ -3823,11 +3982,11 @@ msgstr "Det går inte att skriva till enheten %s." msgid "Cannot write reencryption log file." msgstr "Det går inte att skriva loggfil för omkryptering." -#: src/utils_reencrypt_luks1.c:269 +#: src/utils_reencrypt_luks1.c:268 msgid "Cannot read reencryption log file." msgstr "Det går inte att läsa loggfil för omkryptering." -#: src/utils_reencrypt_luks1.c:280 +#: src/utils_reencrypt_luks1.c:279 msgid "Wrong log format." msgstr "Fel loggformat." @@ -3836,130 +3995,134 @@ msgstr "Fel loggformat." msgid "Log file %s exists, resuming reencryption.\n" msgstr "Loggfilen %s existerar, återupptar kryptering.\n" -#: src/utils_reencrypt_luks1.c:356 +#: src/utils_reencrypt_luks1.c:354 msgid "Activating temporary device using old LUKS header." msgstr "Aktiverar temporär enhet användandes gammalt LUKS-huvud." -#: src/utils_reencrypt_luks1.c:366 +#: src/utils_reencrypt_luks1.c:364 msgid "Activating temporary device using new LUKS header." msgstr "Aktiverar temporär enhet användandes nytt LUKS-huvud." -#: src/utils_reencrypt_luks1.c:376 +#: src/utils_reencrypt_luks1.c:374 msgid "Activation of temporary devices failed." msgstr "Aktivering av temporära enheter misslyckades." -#: src/utils_reencrypt_luks1.c:436 +#: src/utils_reencrypt_luks1.c:434 msgid "Failed to set data offset." -msgstr "Misslyckades med att sätta dataoffset." +msgstr "Misslyckades med att sätta dataförskjutning." -#: src/utils_reencrypt_luks1.c:442 +#: src/utils_reencrypt_luks1.c:440 msgid "Failed to set metadata size." msgstr "Misslyckades med att sätta metadatastorlek." -#: src/utils_reencrypt_luks1.c:450 +#: src/utils_reencrypt_luks1.c:448 #, c-format msgid "New LUKS header for device %s created." msgstr "Skapade nytt LUKS-huvud för enhet %s." -#: src/utils_reencrypt_luks1.c:487 +#: src/utils_reencrypt_luks1.c:485 #, c-format msgid "%s header backup of device %s created." msgstr "Skapade säkerhetskopia av %s-huvud på enhet %s." -#: src/utils_reencrypt_luks1.c:543 +#: src/utils_reencrypt_luks1.c:541 msgid "Creation of LUKS backup headers failed." msgstr "Misslyckades med att skapa en säkerhetskopia av LUKS-huvuden." -#: src/utils_reencrypt_luks1.c:672 +#: src/utils_reencrypt_luks1.c:670 #, c-format msgid "Cannot restore %s header on device %s." -msgstr "Det går inte återställa %s-huvudet på enheten %s." +msgstr "Det går inte att återställa %s-huvudet på enheten %s." -#: src/utils_reencrypt_luks1.c:674 +#: src/utils_reencrypt_luks1.c:672 #, c-format msgid "%s header on device %s restored." msgstr "Återställde %s-huvudet på enheten %s." -#: src/utils_reencrypt_luks1.c:857 src/utils_reencrypt_luks1.c:863 +#: src/utils_reencrypt_luks1.c:855 src/utils_reencrypt_luks1.c:861 msgid "Cannot open temporary LUKS device." msgstr "Misslyckades med att öppna temporär LUKS-enhet." -#: src/utils_reencrypt_luks1.c:868 src/utils_reencrypt_luks1.c:873 +#: src/utils_reencrypt_luks1.c:866 src/utils_reencrypt_luks1.c:871 msgid "Cannot get device size." msgstr "Det går inte att hämta enhetsstorlek." -#: src/utils_reencrypt_luks1.c:915 +#: src/utils_reencrypt_luks1.c:913 msgid "IO error during reencryption." msgstr "In-/utfel under återkryptering." -#: src/utils_reencrypt_luks1.c:945 +#: src/utils_reencrypt_luks1.c:943 msgid "Provided UUID is invalid." msgstr "Angivet UUID är ogiltigt." -#: src/utils_reencrypt_luks1.c:1171 +#: src/utils_reencrypt_luks1.c:1045 +msgid "Key file can be used only with --key-slot or with exactly one key slot active." +msgstr "Nyckelfil kan endast användas med --key-slot eller precis en aktiv nyckelplats." + +#: src/utils_reencrypt_luks1.c:1169 msgid "Cannot open reencryption log file." msgstr "Det går inte att öppna loggfilen för omkryptering." -#: src/utils_reencrypt_luks1.c:1177 +#: src/utils_reencrypt_luks1.c:1175 msgid "No decryption in progress, provided UUID can be used only to resume suspended decryption process." msgstr "Ingen dekryptering pågår, givet UUID kan endast användas för att återuppta vilande dekrypteringsprocess." -#: src/utils_reencrypt_luks1.c:1233 +#: src/utils_reencrypt_luks1.c:1231 #, c-format msgid "Reencryption will change: %s%s%s%s%s%s." msgstr "Omkryptering kommer att ändra: %s%s%s%s%s%s." -#: src/utils_reencrypt_luks1.c:1234 +#: src/utils_reencrypt_luks1.c:1232 msgid "volume key" msgstr "volymnyckeln" -#: src/utils_reencrypt_luks1.c:1236 +#: src/utils_reencrypt_luks1.c:1234 msgid "set hash to " msgstr "sätt hash till " -#: src/utils_reencrypt_luks1.c:1237 +#: src/utils_reencrypt_luks1.c:1235 msgid ", set cipher to " msgstr ", sätt chiffer till " -#: src/utils_blockdev.c:176 +#: src/utils_blockdev.c:179 #, c-format msgid "WARNING: Device %s already contains a '%s' partition signature.\n" msgstr "VARNING: Enheten %s innehåller redan en ”%s”-partitionssignatur.\n" -#: src/utils_blockdev.c:184 +#: src/utils_blockdev.c:187 #, c-format msgid "WARNING: Device %s already contains a '%s' superblock signature.\n" msgstr "VARNING: Enheten %s innehåller redan en ”%s”-superblocksignatur.\n" -#: src/utils_blockdev.c:206 src/utils_blockdev.c:289 src/utils_blockdev.c:341 +#: src/utils_blockdev.c:209 src/utils_blockdev.c:292 src/utils_blockdev.c:344 msgid "Failed to initialize device signature probes." msgstr "Misslyckades med att initiera identifiering av enhetssignatur." -#: src/utils_blockdev.c:269 +#: src/utils_blockdev.c:272 #, c-format msgid "Failed to stat device %s." msgstr "Misslyckades med att ta status på enhet %s." -#: src/utils_blockdev.c:284 +#: src/utils_blockdev.c:287 #, c-format msgid "Failed to open file %s in read/write mode." msgstr "Misslyckades med att öppna filen %s i läs-/skrivläge." -#: src/utils_blockdev.c:304 +#: src/utils_blockdev.c:307 #, c-format msgid "Existing '%s' partition signature on device %s will be wiped." msgstr "Kommer att rensa befintlig ”%s” på enheten %s." -#: src/utils_blockdev.c:307 +#: src/utils_blockdev.c:310 #, c-format msgid "Existing '%s' superblock signature on device %s will be wiped." msgstr "Kommer att rensa befintlig ”%s” på enheten %s." -#: src/utils_blockdev.c:310 +#: src/utils_blockdev.c:313 msgid "Failed to wipe device signature." msgstr "Misslyckades med att radera enhetssignatur." -#: src/utils_blockdev.c:317 +#: src/utils_blockdev.c:320 #, c-format msgid "Failed to probe device %s for a signature." msgstr "Misslyckades med söka av enheten %s efter en signatur." @@ -3974,6 +4137,50 @@ msgstr "Ogiltig datastorlekspecifikation i flaggan --%s." msgid "Option --%s is not allowed with %s action." msgstr "Flaggan --%s tillåts inte med åtgärden --%s." +#: src/utils_key_description.c:66 +msgid "Type specification in --link-vk-to-keyring keyring specification is ignored." +msgstr "Typspecifikationen i --link-vk-to-keyring keyring-specifikationen ignoreras." + +#: src/utils_key_description.c:131 +msgid "Key types have to be the same for both volume keys." +msgstr "Tangenttyperna måste vara desamma för båda volymknapparna." + +#: src/utils_key_description.c:136 +msgid "Both volume keys have to be linked to the same keyring." +msgstr "Båda volymnycklarna måste vara kopplade till samma nyckelring." + +#: src/utils_key_description.c:146 +msgid "You need to supply more key names." +msgstr "Du måste ange fler nyckelnamn." + +#: src/utils_key_description.c:150 +msgid "Invalid --link-vk-to-keyring value." +msgstr "Ogiltigt värde för --link-vk-to-keyring." + +#: src/utils_keyslot_check.c:114 +#, c-format +msgid "Keyslot %d binary data could be corrupted.\n" +msgstr "Binärdata för nyckelplats %d kan vara skadad.\n" + +#: src/utils_keyslot_check.c:124 +#, c-format +msgid " Suspected offset: 0x%\n" +msgstr " Misstänkt förskjutning: 0x%\n" + +#: src/utils_keyslot_check.c:127 +msgid " Subsequent suspected offsets are suppressed.\n" +msgstr " Efterföljande misstänkta förskjutningar undertrycks.\n" + +#: src/utils_keyslot_check.c:178 src/utils_keyslot_check.c:183 +#, c-format +msgid "Keyslot %d cannot be read from the device." +msgstr "Det går inte att läsa nyckelplats %d från enheten." + +#: src/utils_keyslot_check.c:194 +#, c-format +msgid "You can use hexdump -v -C -n 128 -s \"%s\" to inspect the data.\n" +msgstr "Du kan använda hexdump -v -C -n 128 -s \"%s\" för att inspektera data.\n" + #: tokens/ssh/cryptsetup-ssh.c:110 msgid "Failed to write ssh token json." msgstr "Misslyckades med att skriva ssh-token i json." @@ -3990,9 +4197,9 @@ msgstr "" "Experimentell cryptsetup-insticksmodul för att låsa upp LUKS2-enheter med token ansluten via SSH-server.\vDen tillåter för närvarande endast att lägga till en token till en existerande nyckelplats.\n" "\n" "Angiven SSH-server måste innehålla en nyckelfil på den angivna sökvägen med ett lösenord för en befintlig nyckelplats på enheten.\n" -"Inloggningsuppgifter kommer att användas av cryptsetup för att att hämta lösenordet genom att använda token när enheten öppnas.\n" +"Inloggningsuppgifter kommer att användas av cryptsetup för att hämta lösenordet genom att använda token när enheten öppnas.\n" "\n" -"Observera: Information som anges när token läggs till (SSH-serverns, adress, användare och sökvägar) kommer att lagras i LUKS2-headern i klartext." +"Observera: Information som anges när token läggs till (SSH-serverns, adress, användare och sökvägar) kommer att lagras i LUKS2-huvudet i klartext." #: tokens/ssh/cryptsetup-ssh.c:138 msgid " " @@ -4024,7 +4231,7 @@ msgstr "Sökväg till katalog som innehåller libcryptsetup external tokens" #: tokens/ssh/cryptsetup-ssh.c:148 msgid "Keyslot to assign the token to. If not specified, token will be assigned to the first keyslot matching provided passphrase." -msgstr "Nyckelplats att ange token till. Om ej angiven så kommer token att tilldelas till den första nyckelplats som matchar angivet lösenfras." +msgstr "Nyckelplats att ange token till. Om den inte anges kommer token att tilldelas den första nyckelplats som matchar angiven lösenfras." #: tokens/ssh/cryptsetup-ssh.c:150 msgid "Generic options:" @@ -4115,7 +4322,7 @@ msgstr "Det går inte att öppna sftp-sessionen: " #: tokens/ssh/ssh-utils.c:53 msgid "Cannot stat sftp file: " -msgstr "Det går inte att stat sftp-filen: " +msgstr "Det går inte att ta stat på sftp-filen: " #: tokens/ssh/ssh-utils.c:61 msgid "Not enough memory.\n" @@ -4140,3 +4347,31 @@ msgstr "Den öppna nyckelns auth-metod tills inte på värddatorn.\n" #: tokens/ssh/ssh-utils.c:158 msgid "Public key authentication error: " msgstr "Autentiseringsfel för öppen nyckel: " + +#~ msgid "Failed to link volume keys in user defined keyring." +#~ msgstr "Misslyckades med att sammankoppla volymnycklar i den användardefinierade nyckelringen." + +#~ msgid "Failed to unlink volume key from thread keyring." +#~ msgstr "Misslyckades med frånkoppla nyckelringen för trådnyckelringen." + +#~ msgid "Activation of partially decrypted BITLK device is not supported." +#~ msgstr "Aktivering av delvis avkrypterade BITLK-enheter stöds inte." + +#~ msgid "Failed to read LUKS2 requirements." +#~ msgstr "Misslyckades med att läsa LUKS2-krav." + +#~ msgid "Warning: keyslot operation could fail as it requires more than available memory.\n" +#~ msgstr "Varning: keyslot-operationen kan misslyckas eftersom den kräver mer än tillgängligt minne.\n" + +#~ msgid "Failed to get reencryption state." +#~ msgstr "Misslyckades med att erhålla status för omkryptering." + +#~ msgid "Failed to read passphrase from keyring." +#~ msgstr "Misslyckades med att läsa lösenfras från nyckelring." + +#~ msgid "Options --reduce-device-size and --device-size cannot be combined." +#~ msgstr "Flaggan --reduce-device-size och --data-size det går inte att kombineras." + +#, c-format +#~ msgid "Enter passphrase for key slot %u: " +#~ msgstr "Ange lösenfras för nyckelplats %u: " From d2af00d051acc25ad3efeaa0c3dd049b5025af8a Mon Sep 17 00:00:00 2001 From: Petr Pisar Date: Tue, 31 Mar 2026 11:31:32 +0200 Subject: [PATCH 050/244] po: update cs.po (from translationproject.org) --- po/cs.po | 735 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 370 insertions(+), 365 deletions(-) diff --git a/po/cs.po b/po/cs.po index 6c9183288..2c10d4391 100644 --- a/po/cs.po +++ b/po/cs.po @@ -4,7 +4,7 @@ # Milan Broz , 2010. # Petr Pisar , 2010, 2011, 2012, 2013, 2014, 2015, 2016. # Petr Pisar , 2017, 2018, 2019, 2020, 2021, 2022, 2023. -# Petr Pisar , 2024, 2025. +# Petr Pisar , 2024, 2025, 2026. # # See `LUKS On-Disk Format Specification' document to clarify some terms. # @@ -33,10 +33,10 @@ # msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.2-rc0\n" +"Project-Id-Version: cryptsetup 2.8.5-rc0\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2025-12-12 18:51+0100\n" -"PO-Revision-Date: 2025-12-21 14:40+01:00\n" +"POT-Creation-Date: 2026-03-30 14:18+0200\n" +"PO-Revision-Date: 2026-03-30 17:35+02:00\n" "Last-Translator: Petr Pisar \n" "Language-Team: Czech \n" "Language: cs\n" @@ -214,8 +214,8 @@ msgstr "Velikost zařízení není zarovnaná na velikost logického sektoru za msgid "Header detected but device %s is too small." msgstr "Nalezena hlavička, ale zařízení %s je příliš malé." -#: lib/setup.c:669 lib/setup.c:3760 lib/setup.c:5227 -#: lib/luks2/luks2_reencrypt.c:3945 lib/luks2/luks2_reencrypt.c:4434 +#: lib/setup.c:669 lib/setup.c:3760 lib/setup.c:5238 +#: lib/luks2/luks2_reencrypt.c:3948 lib/luks2/luks2_reencrypt.c:4437 msgid "This operation is not supported for this device type." msgstr "Tato operace není na zařízení tohoto typu podporována." @@ -228,10 +228,10 @@ msgid "Failed to rollback LUKS2 metadata in memory." msgstr "Nahrání původních metadat LUKS2 do paměti selhalo." #: lib/setup.c:893 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 -#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1782 -#: src/cryptsetup.c:1966 src/cryptsetup.c:2021 src/cryptsetup.c:2219 -#: src/cryptsetup.c:2364 src/cryptsetup.c:2642 src/cryptsetup.c:2955 -#: src/cryptsetup.c:3023 src/utils_reencrypt.c:2281 +#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 +#: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 +#: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2953 +#: src/cryptsetup.c:3021 src/utils_reencrypt.c:2281 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." @@ -248,7 +248,7 @@ msgid "No known cipher specification pattern detected for active device %s." msgstr "Na aktivním zařízení %s nebyl nalezen žádný známý vzorek určující šifrování." #: lib/setup.c:1515 lib/setup.c:3507 lib/setup.c:3599 lib/setup.c:3611 -#: lib/setup.c:3783 lib/setup.c:5805 +#: lib/setup.c:3783 lib/setup.c:5816 #, c-format msgid "Device %s is not active." msgstr "Zařízení %s není aktivní." @@ -275,7 +275,7 @@ msgid "Detached metadata device is not supported for this crypt type." msgstr "Zařízení s oddělenými metadaty není na šifře tohoto typu podporováno." #: lib/setup.c:1639 lib/setup.c:1887 lib/luks2/luks2_reencrypt.c:3034 -#: src/cryptsetup.c:1494 src/cryptsetup.c:3762 +#: src/cryptsetup.c:1492 src/cryptsetup.c:3760 msgid "Unsupported encryption sector size." msgstr "Nepodporovaná velikost šifrovaného sektoru." @@ -328,9 +328,9 @@ msgstr "Šifra %s-%s (velikost klíče %zd bitů) není dostupná." msgid "WARNING: The device activation will fail, dm-crypt is missing support for requested encryption sector size.\n" msgstr "POZOR: Aktivace zařízení selže, dm-crypt nepodporuje požadovanou velikost šifrovaného sektoru.\n" -#: lib/setup.c:2091 lib/setup.c:2458 lib/setup.c:2520 lib/utils_device.c:896 +#: lib/setup.c:2091 lib/setup.c:2458 lib/setup.c:2520 lib/utils_device.c:906 #: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3073 -#: lib/luks2/luks2_reencrypt.c:4494 +#: lib/luks2/luks2_reencrypt.c:4497 #, c-format msgid "Device %s is too small." msgstr "Zařízení %s je příliš malé." @@ -490,7 +490,7 @@ msgid "Unsupported parameters on device %s." msgstr "Nepodporované parametry na zařízení %s." #: lib/setup.c:3521 lib/setup.c:3624 lib/luks2/luks2_reencrypt.c:2928 -#: lib/luks2/luks2_reencrypt.c:3197 lib/luks2/luks2_reencrypt.c:3591 +#: lib/luks2/luks2_reencrypt.c:3197 lib/luks2/luks2_reencrypt.c:3594 #, c-format msgid "Mismatching parameters on device %s." msgstr "Neodpovídající parametry na zařízení %s." @@ -500,7 +500,7 @@ msgid "Crypt devices mismatch." msgstr "Zařízení dmcryptu si neodpovídají." #: lib/setup.c:3679 lib/setup.c:3684 lib/luks2/luks2_reencrypt.c:2412 -#: lib/luks2/luks2_reencrypt.c:2944 lib/luks2/luks2_reencrypt.c:4233 +#: lib/luks2/luks2_reencrypt.c:2944 lib/luks2/luks2_reencrypt.c:4236 #, c-format msgid "Failed to reload device %s." msgstr "Zařízení %s nebylo možné znovu zavést." @@ -512,8 +512,8 @@ msgid "Failed to suspend device %s." msgstr "Zařízení %s nebylo možné pozastavit." #: lib/setup.c:3702 lib/luks2/luks2_reencrypt.c:2396 -#: lib/luks2/luks2_reencrypt.c:2979 lib/luks2/luks2_reencrypt.c:4146 -#: lib/luks2/luks2_reencrypt.c:4237 +#: lib/luks2/luks2_reencrypt.c:2979 lib/luks2/luks2_reencrypt.c:4149 +#: lib/luks2/luks2_reencrypt.c:4240 #, c-format msgid "Failed to resume device %s." msgstr "Zařízení %s nebylo možné probudit." @@ -597,187 +597,187 @@ msgstr "Chyba při probouzení zařízení %s." msgid "Failed to unlink volume key from user specified keyring." msgstr "Z klíčenky zadané uživatelem se nepodařilo odpojit klíč svazku." -#: lib/setup.c:4423 lib/setup.c:5592 +#: lib/setup.c:4423 lib/setup.c:5603 msgid "Failed to link volume key in user defined keyring." msgstr "Do uživatelem zadané klíčenky se nepodařilo přidat klíč svazku." -#: lib/setup.c:4521 src/cryptsetup.c:2723 +#: lib/setup.c:4522 src/cryptsetup.c:2721 #, c-format msgid "Volume %s is not suspended." msgstr "Svazek %s není uspán." -#: lib/setup.c:4622 lib/setup.c:7265 lib/setup.c:7287 lib/setup.c:7341 -#: src/cryptsetup.c:1858 src/cryptsetup.c:2262 src/cryptsetup.c:2280 +#: lib/setup.c:4633 lib/setup.c:7276 lib/setup.c:7298 lib/setup.c:7352 +#: src/cryptsetup.c:1856 src/cryptsetup.c:2260 src/cryptsetup.c:2278 #: src/utils_reencrypt.c:305 src/utils_reencrypt.c:1966 msgid "Volume key does not match the volume." msgstr "Heslo svazku neodpovídá svazku." -#: lib/setup.c:4776 +#: lib/setup.c:4787 msgid "Failed to swap new key slot." msgstr "Záměna novou pozicí klíče se nezdařila." -#: lib/setup.c:4874 +#: lib/setup.c:4885 #, c-format msgid "Key slot %d is invalid." msgstr "Pozice klíče %d je neplatná." -#: lib/setup.c:4880 src/cryptsetup.c:1979 src/cryptsetup.c:2439 -#: src/cryptsetup.c:3123 src/cryptsetup.c:3183 +#: lib/setup.c:4891 src/cryptsetup.c:1977 src/cryptsetup.c:2437 +#: src/cryptsetup.c:3121 src/cryptsetup.c:3181 #, c-format msgid "Keyslot %d is not active." msgstr "Pozice klíče %d není aktivní." -#: lib/setup.c:4899 +#: lib/setup.c:4910 msgid "Device header overlaps with data area." msgstr "Hlavička zařízení se překrývá s datovou oblastí." -#: lib/setup.c:5120 +#: lib/setup.c:5131 msgid "Reencryption in-progress. Cannot activate device." msgstr "Přešifrování již probíhá. Zařízení nelze aktivovat." -#: lib/setup.c:5122 lib/luks2/luks2_json_metadata.c:2888 -#: lib/luks2/luks2_reencrypt.c:3722 +#: lib/setup.c:5133 lib/luks2/luks2_json_metadata.c:2888 +#: lib/luks2/luks2_reencrypt.c:3725 msgid "Failed to get reencryption lock." msgstr "Získání zámku pro přešifrování selhalo." -#: lib/setup.c:5144 +#: lib/setup.c:5155 msgid "LUKS2 reencryption recovery using volume key(s) failed." msgstr "Obnova přešifrování LUKS2 pomocí klíčů svazku selhala." -#: lib/setup.c:5280 +#: lib/setup.c:5291 #, c-format msgid "Device %s already exists." msgstr "Zařízení %s již existuje." -#: lib/setup.c:5287 +#: lib/setup.c:5298 #, c-format msgid "Cannot use device %s, name is invalid or still in use." msgstr "Zařízení %s nelze použít. Název není platný nebo zařízení se stále používá." -#: lib/setup.c:5299 +#: lib/setup.c:5310 msgid "Reencryption volume keys do not match the volume." msgstr "Klíče pro přešifrování svazku neodpovídají svazku." -#: lib/setup.c:5316 +#: lib/setup.c:5327 msgid "Incorrect volume key specified for plain device." msgstr "Byl zadán neplatný klíč svazku." -#: lib/setup.c:5342 lib/setup.c:5403 +#: lib/setup.c:5353 lib/setup.c:5414 msgid "Device type is not properly initialized." msgstr "Typ zařízení není řádně inicializován." -#: lib/setup.c:5441 +#: lib/setup.c:5452 msgid "Kernel keyring is not supported by the kernel." msgstr "Jaderná klíčenka není jádrem podporována." -#: lib/setup.c:5445 +#: lib/setup.c:5456 msgid "Kernel keyring missing: required for passing signature to kernel." msgstr "Jaderná klíčenka chybí: je potřeba pro předání podpisu do jádra." -#: lib/setup.c:5500 +#: lib/setup.c:5511 #, c-format msgid "Cannot use keyring key %s." msgstr "Klíčem klíčenky %s nelze použít." -#: lib/setup.c:5713 +#: lib/setup.c:5724 msgid "Incorrect root hash specified for verity device." msgstr "K zařízení VERITY byl zadán neplatný kořenový haš." -#: lib/setup.c:5754 lib/setup.c:5779 +#: lib/setup.c:5765 lib/setup.c:5790 msgid "OPAL does not support deferred deactivation." msgstr "Opal nepodporuje odloženou deaktivaci." -#: lib/setup.c:5769 lib/setup.c:5800 lib/luks2/luks2_json_metadata.c:2953 +#: lib/setup.c:5780 lib/setup.c:5811 lib/luks2/luks2_json_metadata.c:2953 #: src/utils_reencrypt.c:89 #, c-format msgid "Device %s is still in use." msgstr "Zařízení %s se stále používá." -#: lib/setup.c:5787 +#: lib/setup.c:5798 #, c-format msgid "Could not cancel deferred remove from device %s." msgstr "Odložené odebrání zařízení %s nebylo možné zrušit." -#: lib/setup.c:5809 +#: lib/setup.c:5820 #, c-format msgid "Invalid device %s." msgstr "Neplatné zařízení %s." -#: lib/setup.c:5956 +#: lib/setup.c:5967 msgid "Volume key buffer too small." msgstr "Vyhrazená paměť pro klíč svazku je příliš malá." -#: lib/setup.c:5967 +#: lib/setup.c:5978 msgid "Cannot retrieve volume key for LUKS2 device." msgstr "Nelze získat klíč svazku pro zařízení LUKS2." -#: lib/setup.c:5976 +#: lib/setup.c:5987 msgid "Cannot retrieve volume key for LUKS1 device." msgstr "Nelze získat klíč svazku pro zařízení LUKS1." -#: lib/setup.c:5990 +#: lib/setup.c:6001 msgid "Cannot retrieve volume key for plain device." msgstr "Nelze získat klíč svazku pro otevřené zařízení." -#: lib/setup.c:5998 +#: lib/setup.c:6009 msgid "Cannot retrieve root hash for verity device." msgstr "K zařízení VERITY nelze získat kořenový otisk." -#: lib/setup.c:6007 +#: lib/setup.c:6018 msgid "Cannot retrieve volume key for BITLK device." msgstr "Nelze získat klíč svazku pro zařízení BITLK." -#: lib/setup.c:6012 +#: lib/setup.c:6023 msgid "Cannot retrieve volume key for FVAULT2 device." msgstr "Nelze získat klíč svazku pro zařízení FVAULT2." -#: lib/setup.c:6014 +#: lib/setup.c:6025 #, c-format msgid "This operation is not supported for %s crypt device." msgstr "Na šifrovaném zařízení %s není tato operace podporována." -#: lib/setup.c:6199 lib/setup.c:6210 +#: lib/setup.c:6210 lib/setup.c:6221 msgid "Dump operation is not supported for this device type." msgstr "Operace výpisu není na zařízení tohoto typu podporována." -#: lib/setup.c:6590 +#: lib/setup.c:6601 #, c-format msgid "Data offset is not multiple of %u bytes." msgstr "Počátek dat není násobkem %u bajtů." -#: lib/setup.c:6898 +#: lib/setup.c:6909 #, c-format msgid "Cannot convert device %s which is still in use." msgstr "Zařízení %s, které se stále používá, nelze konvertovat." -#: lib/setup.c:7206 lib/setup.c:7350 +#: lib/setup.c:7217 lib/setup.c:7361 #, c-format msgid "Failed to assign keyslot %u as the new volume key." msgstr "Přiřazení pozice klíče %u jakožto nového klíče svazku se nezdařilo." -#: lib/setup.c:7230 +#: lib/setup.c:7241 msgid "Failed to initialize default LUKS2 keyslot parameters." msgstr "Inicializace parametrů výchozí pozice klíče LUKS2 selhala." -#: lib/setup.c:7236 +#: lib/setup.c:7247 #, c-format msgid "Failed to assign keyslot %d to digest." msgstr "Přiřazení pozice klíče %d k otisku se nezdařilo." -#: lib/setup.c:7467 +#: lib/setup.c:7478 msgid "Cannot add key slot, all slots disabled and no volume key provided." msgstr "Nelze přidat pozici klíče, všechny pozice jsou zakázány a klíč svazku nebyl poskytnut." -#: lib/setup.c:7540 lib/verity/verity.c:333 +#: lib/setup.c:7551 lib/verity/verity.c:333 msgid "Failed to load key in kernel keyring." msgstr "Klíč se nepodařilo přidat do jaderné klíčenky." -#: lib/setup.c:7731 +#: lib/setup.c:7742 #, c-format msgid "Could not find keyring described by \"%s\"." msgstr "Klíčenku zadanou jako „%s“ nebylo možné nalézt." -#: lib/setup.c:7796 +#: lib/setup.c:7807 msgid "Failed to acquire global memory-hard access serialization lock." msgstr "Získání zámku pro tvrdý přístup do globální paměti selhalo." @@ -835,40 +835,46 @@ msgid "Ignoring bogus optimal-io size for data device (%u bytes)." msgstr "U zařízení s daty se ignoruje chybná optimální velikost I/O (%u bajtů)." # TODO: Pluralize -#: lib/utils_device.c:707 +#: lib/utils_device.c:711 +#, c-format +msgid "Cannot grow %s to % bytes (%s)." +msgstr "%s nelze zvětšit na % bajtů (%s)." + +# TODO: Pluralize +#: lib/utils_device.c:717 #, c-format msgid "Device %s is too small. Need at least % bytes." msgstr "Zařízení %s je příliš malé. Je třeba alespoň % bajtů." -#: lib/utils_device.c:788 +#: lib/utils_device.c:798 #, c-format msgid "Cannot use device %s which is in use (already mapped or mounted)." msgstr "Zařízení %s nelze použít, protože se již používá (již namapováno nebo připojeno)." -#: lib/utils_device.c:792 +#: lib/utils_device.c:802 #, c-format msgid "Cannot use device %s, permission denied." msgstr "Zařízení %s nelze použít, povolení zamítnuto." -#: lib/utils_device.c:795 +#: lib/utils_device.c:805 #, c-format msgid "Cannot get info about device %s." msgstr "O zařízení %s nelze získat údaje." -#: lib/utils_device.c:818 +#: lib/utils_device.c:828 msgid "Cannot use a loopback device, running as non-root user." msgstr "Zařízení typu loopback nelze použít, nespuštěno superuživatelem." -#: lib/utils_device.c:829 +#: lib/utils_device.c:839 msgid "Attaching loopback device failed (loop device with autoclear flag is required)." msgstr "Připojení zařízení zpětné smyčky selhalo (požadováno zařízení s příznakem autoclear)." -#: lib/utils_device.c:877 +#: lib/utils_device.c:887 #, c-format msgid "Requested offset is beyond real size of device %s." msgstr "Požadovaná poloha je za hranicí skutečné velikosti zařízení %s." -#: lib/utils_device.c:885 +#: lib/utils_device.c:895 #, c-format msgid "Device %s has zero size." msgstr "Zařízení %s má nulovou velikost." @@ -1011,9 +1017,9 @@ msgstr "Chyba vstupu/výstupu při šifrování pozice klíče." #: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:356 #: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:668 -#: lib/fvault2/fvault2.c:870 lib/verity/verity.c:67 lib/verity/verity.c:183 +#: lib/fvault2/fvault2.c:872 lib/verity/verity.c:67 lib/verity/verity.c:183 #: lib/verity/verity_hash.c:312 lib/verity/verity_hash.c:321 -#: lib/verity/verity_hash.c:341 lib/verity/verity_fec.c:247 +#: lib/verity/verity_hash.c:350 lib/verity/verity_fec.c:247 #: lib/verity/verity_fec.c:259 lib/verity/verity_fec.c:264 #: lib/luks2/luks2_json_metadata.c:1521 src/utils_reencrypt_luks1.c:108 #: src/utils_reencrypt_luks1.c:120 @@ -1158,7 +1164,7 @@ msgstr "Režim LUKS šifry %s není platný." msgid "LUKS hash %s is invalid." msgstr "LUKS haš %s není platný." -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1369 +#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 msgid "No known problems detected for LUKS header." msgstr "V hlavičce LUKS nenalezen žádný známý problém." @@ -1252,11 +1258,11 @@ msgstr "Překročena maximální délka hesla TCRYPT (%zu)." msgid "PBKDF2 hash algorithm %s not available, skipping." msgstr "Hašovací algoritmus PBKDF2 %s není podporován, přeskakuje se." -#: lib/tcrypt/tcrypt.c:608 src/cryptsetup.c:1242 +#: lib/tcrypt/tcrypt.c:608 src/cryptsetup.c:1240 msgid "Required kernel crypto interface not available." msgstr "Požadované kryptografické rozhraní jádra není dostupné." -#: lib/tcrypt/tcrypt.c:610 src/cryptsetup.c:1244 +#: lib/tcrypt/tcrypt.c:610 src/cryptsetup.c:1242 msgid "Ensure you have algif_skcipher kernel module loaded." msgstr "Ujistěte se, že jaderný modul algif_skcipher je zaveden." @@ -1327,11 +1333,6 @@ msgstr "Nepodporovaná velikost sektoru %." msgid "Failed to read BITLK header from %s." msgstr "Z %s nebylo možné načíst hlavičku BITLK." -#: lib/bitlk/bitlk.c:593 -#, c-format -msgid "Failed to read or validate BITLK FVE metadata copy #%d from %s." -msgstr "Z %2$s nebylo možné přečíst nebo ověřit kopii č. %1$d metadat BITLK FVE." - #: lib/bitlk/bitlk.c:603 #, c-format msgid "Failed to read and validate BITLK FVE metadata from %s." @@ -1407,43 +1408,43 @@ msgstr "Tato operace není podporována." msgid "Unexpected key data size." msgstr "Nečekaná velikost údajů o klíči." -#: lib/bitlk/bitlk.c:1431 +#: lib/bitlk/bitlk.c:1442 msgid "This BITLK device is in an unsupported state and cannot be activated." msgstr "Toto zařízení BITLK je v nepodporovaném stavu a nelze jej aktivovat." -#: lib/bitlk/bitlk.c:1436 +#: lib/bitlk/bitlk.c:1447 #, c-format msgid "BITLK devices with type '%s' cannot be activated." msgstr "Zařízení BITLK s typem „%s“ nelze aktivovat." -#: lib/bitlk/bitlk.c:1475 +#: lib/bitlk/bitlk.c:1486 #, c-format msgid "WARNING: BitLocker volume size % does not match the underlying device size %" msgstr "POZOR: Velikost svazku BitLockeru % neodpovídá velikosti zařízení ve zpod %" -#: lib/bitlk/bitlk.c:1602 +#: lib/bitlk/bitlk.c:1613 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK IV." msgstr "Zařízení nelze aktivovat. Jaderný dm-crypt postrádá podporu inicializačního vektoru BITLK." -#: lib/bitlk/bitlk.c:1606 +#: lib/bitlk/bitlk.c:1617 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK Elephant diffuser." msgstr "Zařízení nelze aktivovat. Jaderný dm-crypt postrádá podporu difuzéru Elephant BITLK." -#: lib/bitlk/bitlk.c:1610 +#: lib/bitlk/bitlk.c:1621 msgid "Cannot activate device, kernel dm-crypt is missing support for large sector size." msgstr "Zařízení nelze aktivovat. Jaderný dm-crypt postrádá podporu velikostí velkých sektorů." -#: lib/bitlk/bitlk.c:1614 +#: lib/bitlk/bitlk.c:1625 msgid "Cannot activate device, kernel dm-zero module is missing." msgstr "Zařízení nelze aktivovat. Chybí jaderný modul dm-zero." # FIXME: Pluralize -#: lib/fvault2/fvault2.c:530 +#: lib/fvault2/fvault2.c:532 #, c-format msgid "Could not read %u bytes of volume header." msgstr "Z hlavičky svazku nebylo možné přečíst %u bajtů." -#: lib/fvault2/fvault2.c:542 +#: lib/fvault2/fvault2.c:544 #, c-format msgid "Unsupported FVAULT2 version %." msgstr "Nepodporovaná verze FVAULT2 %." @@ -1521,23 +1522,23 @@ msgstr "Ověření na pozici % selhalo." msgid "Hash area overflow." msgstr "Přetečení oblasti haše." -#: lib/verity/verity_hash.c:372 +#: lib/verity/verity_hash.c:381 msgid "Verification of data area failed." msgstr "Ověření datové oblasti selhalo." -#: lib/verity/verity_hash.c:377 +#: lib/verity/verity_hash.c:386 msgid "Verification of root hash failed." msgstr "Ověření kořenového haše selhalo." -#: lib/verity/verity_hash.c:383 +#: lib/verity/verity_hash.c:392 msgid "Input/output error while creating hash area." msgstr "Při vytváření oblasti haší došlo k chybě na vstupu/výstupu." -#: lib/verity/verity_hash.c:385 +#: lib/verity/verity_hash.c:394 msgid "Creation of hash area failed." msgstr "Oblast haší se nepodařilo vytvořit." -#: lib/verity/verity_hash.c:420 +#: lib/verity/verity_hash.c:429 #, c-format msgid "WARNING: Kernel cannot activate device if data block size exceeds page size (%u)." msgstr "POZOR: Jádro nemůže aktivovat zařízení, pokud velikost datového bloku přesahuje velikost stránky (%u)." @@ -1592,21 +1593,21 @@ msgstr "Velikost zařízení %s se nepodařilo určit." msgid "Incompatible kernel dm-integrity metadata (version %u) detected on %s." msgstr "Neslučitelná metadata jaderného dm-integrity (verze %u) byla nalezena na %s." -#: lib/integrity/integrity.c:304 lib/integrity/integrity.c:488 +#: lib/integrity/integrity.c:308 lib/integrity/integrity.c:492 msgid "Kernel does not support dm-integrity mapping." msgstr "Jádro nepodporuje mapování dm-integrity." # Fixed metadata means fix_padding attribute of dm-integrity target # documented as "use a smaller padding". -#: lib/integrity/integrity.c:310 +#: lib/integrity/integrity.c:314 msgid "Kernel does not support dm-integrity fixed metadata alignment." msgstr "Jádro nepodporuje drobné zarovnání metadat dm-integrity." -#: lib/integrity/integrity.c:319 +#: lib/integrity/integrity.c:323 msgid "Kernel refuses to activate insecure recalculate option (see legacy activation options to override)." msgstr "Jádro odmítá aktivovat volbu nebezpečného přepočtu (pro přebití vizte zastaralé volby aktivace)" -#: lib/integrity/integrity.c:325 +#: lib/integrity/integrity.c:329 msgid "Kernel does not support dm-integrity inline mode." msgstr "Jádro nepodporuje mapování dm-integrity s inline režimem." @@ -1756,7 +1757,7 @@ msgstr "Dm-integrity zařízení nižší úrovně poskytlo nečekané datové s msgid "Reencryption in-progress. Cannot deactivate device." msgstr "Probíhá přešifrování. Zařízení nelze deaktivovat." -#: lib/luks2/luks2_json_metadata.c:2897 lib/luks2/luks2_reencrypt.c:4283 +#: lib/luks2/luks2_json_metadata.c:2897 lib/luks2/luks2_reencrypt.c:4286 #, c-format msgid "Failed to replace suspended device %s with dm-error target." msgstr "Výměna pozastaveného zařízení %s za cíl dm-error selhala." @@ -1835,7 +1836,7 @@ msgstr "Nelze zjistit stav zařízení s UUID: %s." msgid "Unable to convert header with LUKSMETA additional metadata." msgstr "Hlavičky s dodatečnými metadaty LUKSMETA nelze převést." -#: lib/luks2/luks2_luks1_convert.c:590 lib/luks2/luks2_reencrypt.c:3890 +#: lib/luks2/luks2_luks1_convert.c:590 lib/luks2/luks2_reencrypt.c:3893 #, c-format msgid "Unable to use cipher specification %s-%s for LUKS2." msgstr "LUKS2 neumožňuje použít šifru zadanou jako %s-%s." @@ -1920,7 +1921,7 @@ msgstr "Velikost zařízení musí být násobek vypočteného zarovnání zóny #: lib/luks2/luks2_reencrypt.c:1410 lib/luks2/luks2_reencrypt.c:1596 #: lib/luks2/luks2_reencrypt.c:1679 lib/luks2/luks2_reencrypt.c:1721 -#: lib/luks2/luks2_reencrypt.c:4077 +#: lib/luks2/luks2_reencrypt.c:4080 msgid "Failed to initialize old segment storage wrapper." msgstr "Obálku pro starou část úložiště se nepodařilo inicializovat." @@ -1928,7 +1929,7 @@ msgstr "Obálku pro starou část úložiště se nepodařilo inicializovat." msgid "Failed to initialize new segment storage wrapper." msgstr "Obálku pro novou část úložiště se nepodařilo inicializovat." -#: lib/luks2/luks2_reencrypt.c:1550 lib/luks2/luks2_reencrypt.c:4089 +#: lib/luks2/luks2_reencrypt.c:1550 lib/luks2/luks2_reencrypt.c:4092 msgid "Failed to initialize hotzone protection." msgstr "Ochranu horké zóny se nepodařilo inicializovat." @@ -1936,7 +1937,7 @@ msgstr "Ochranu horké zóny se nepodařilo inicializovat." msgid "Failed to read checksums for current hotzone." msgstr "Kontrolní součty pro aktuální horkou zónu se nepodařilo přečíst." -#: lib/luks2/luks2_reencrypt.c:1630 lib/luks2/luks2_reencrypt.c:4104 +#: lib/luks2/luks2_reencrypt.c:1630 lib/luks2/luks2_reencrypt.c:4107 #, c-format msgid "Failed to read hotzone area starting at %." msgstr "Čtení oblasti s horkou zónou počínaje na % selhalo." @@ -2025,8 +2026,8 @@ msgstr "Zmenšená velikost dat je větší než velikost skutečného zařízen msgid "Data device is not aligned to encryption sector size (% bytes)." msgstr "Zařízení s daty není zarovnáno na velikost šifrovaného sektoru (% bajtů)." -#: lib/luks2/luks2_reencrypt.c:3125 lib/luks2/luks2_reencrypt.c:3640 -#: lib/luks2/luks2_reencrypt.c:3661 +#: lib/luks2/luks2_reencrypt.c:3125 lib/luks2/luks2_reencrypt.c:3643 +#: lib/luks2/luks2_reencrypt.c:3664 #, c-format msgid "Failed to open %s in exclusive mode (already mapped or mounted)." msgstr "Zařízení %s nebylo možné otevřít ve výlučném režimu (již namapováno nebo připojeno)." @@ -2035,123 +2036,123 @@ msgstr "Zařízení %s nebylo možné otevřít ve výlučném režimu (již nam msgid "Device not marked for LUKS2 reencryption." msgstr "Zařízení není označeno pro přešifrování LUKS2." -#: lib/luks2/luks2_reencrypt.c:3349 lib/luks2/luks2_reencrypt.c:4400 +#: lib/luks2/luks2_reencrypt.c:3349 lib/luks2/luks2_reencrypt.c:4403 msgid "Failed to load LUKS2 reencryption context." msgstr "Načtení kontextu přešifrování LUKS2 selhalo." -#: lib/luks2/luks2_reencrypt.c:3441 lib/luks2/luks2_reencrypt.c:3781 +#: lib/luks2/luks2_reencrypt.c:3444 lib/luks2/luks2_reencrypt.c:3784 msgid "Device is not in reencryption." msgstr "Zařízení se nepřešifrovává." -#: lib/luks2/luks2_reencrypt.c:3448 lib/luks2/luks2_reencrypt.c:3788 +#: lib/luks2/luks2_reencrypt.c:3451 lib/luks2/luks2_reencrypt.c:3791 msgid "Reencryption process is already running." msgstr "Proces přešifrování již běží." -#: lib/luks2/luks2_reencrypt.c:3450 lib/luks2/luks2_reencrypt.c:3790 +#: lib/luks2/luks2_reencrypt.c:3453 lib/luks2/luks2_reencrypt.c:3793 msgid "Failed to acquire reencryption lock." msgstr "Získání zámku pro přešifrování selhalo." -#: lib/luks2/luks2_reencrypt.c:3468 +#: lib/luks2/luks2_reencrypt.c:3471 msgid "Cannot proceed with reencryption. Run reencryption recovery first." msgstr "V přešifrování nelze pokračovat. Spusťte nejprve obnovu přešifrování." -#: lib/luks2/luks2_reencrypt.c:3604 +#: lib/luks2/luks2_reencrypt.c:3607 msgid "Active device size and requested reencryption size don't match." msgstr "Aktivní velikost zařízení a velikost požadovaná k přešifrování si neodpovídají." -#: lib/luks2/luks2_reencrypt.c:3618 +#: lib/luks2/luks2_reencrypt.c:3621 msgid "Illegal device size requested in reencryption parameters." msgstr "V parametrech přešifrování je požadována zakázaná velikost zařízení." -#: lib/luks2/luks2_reencrypt.c:3720 +#: lib/luks2/luks2_reencrypt.c:3723 msgid "Reencryption in-progress. Cannot perform recovery." msgstr "Probíhá přešifrování. Obnovu nelze provést." -#: lib/luks2/luks2_reencrypt.c:3741 +#: lib/luks2/luks2_reencrypt.c:3744 msgid "LUKS2 reencryption recovery failed." msgstr "Obnova přešifrování LUKS2 selhala." -#: lib/luks2/luks2_reencrypt.c:3874 lib/luks2/luks2_reencrypt.c:4353 +#: lib/luks2/luks2_reencrypt.c:3877 lib/luks2/luks2_reencrypt.c:4356 msgid "Failed to initialize reencryption device stack." msgstr "Zásobník zařízení k přešifrování se nepodařilo inicializovat." -#: lib/luks2/luks2_reencrypt.c:3907 +#: lib/luks2/luks2_reencrypt.c:3910 msgid "LUKS2 reencryption already initialized in metadata." msgstr "V metadatech je přešifrování LUKS2 již inicializováno." -#: lib/luks2/luks2_reencrypt.c:3915 +#: lib/luks2/luks2_reencrypt.c:3918 msgid "Failed to initialize LUKS2 reencryption in metadata." msgstr "Inicializace přešifrování LUKS2 v metadatech selhala." -#: lib/luks2/luks2_reencrypt.c:3968 lib/luks2/luks2_reencrypt.c:4000 -#: lib/luks2/luks2_reencrypt.c:4030 +#: lib/luks2/luks2_reencrypt.c:3971 lib/luks2/luks2_reencrypt.c:4003 +#: lib/luks2/luks2_reencrypt.c:4033 msgid "Reencryption is not supported for DAX (persistent memory) devices." msgstr "Na zařízeních DAX (trvalá paměť) není přešifrování podporováno." -#: lib/luks2/luks2_reencrypt.c:4059 +#: lib/luks2/luks2_reencrypt.c:4062 msgid "Failed to set device segments for next reencryption hotzone." msgstr "Nastavení segmentů zařízení pro další horkou zónu přešifrování selhalo." -#: lib/luks2/luks2_reencrypt.c:4112 +#: lib/luks2/luks2_reencrypt.c:4115 msgid "Failed to write reencryption resilience metadata." msgstr "Metadata pro odolnost při přešifrování se nepodařilo zapsat." -#: lib/luks2/luks2_reencrypt.c:4119 +#: lib/luks2/luks2_reencrypt.c:4122 msgid "Decryption failed." msgstr "Rozšifrování selhalo." -#: lib/luks2/luks2_reencrypt.c:4124 +#: lib/luks2/luks2_reencrypt.c:4127 #, c-format msgid "Failed to write hotzone area starting at %." msgstr "Zápis oblasti s horkou zónou počínaje na % selhal." -#: lib/luks2/luks2_reencrypt.c:4129 +#: lib/luks2/luks2_reencrypt.c:4132 msgid "Failed to sync data." msgstr "Synchronizace dat selhala." -#: lib/luks2/luks2_reencrypt.c:4137 +#: lib/luks2/luks2_reencrypt.c:4140 msgid "Failed to update metadata after current reencryption hotzone completed." msgstr "Po dokončení přešifrování aktuální horké zóny se nepodařilo aktualizovat metadata." -#: lib/luks2/luks2_reencrypt.c:4226 +#: lib/luks2/luks2_reencrypt.c:4229 msgid "Failed to write LUKS2 metadata." msgstr "Zápis metadat LUKS2 selhal." -#: lib/luks2/luks2_reencrypt.c:4249 +#: lib/luks2/luks2_reencrypt.c:4252 msgid "Failed to wipe unused data device area." msgstr "Vyčištění oblasti zařízení s nepoužívanými daty selhalo." -#: lib/luks2/luks2_reencrypt.c:4255 +#: lib/luks2/luks2_reencrypt.c:4258 #, c-format msgid "Failed to remove unused (unbound) keyslot %d." msgstr "Odstranění nepoužívané (nepřiřazené) pozice s klíčem %d selhalo." -#: lib/luks2/luks2_reencrypt.c:4265 +#: lib/luks2/luks2_reencrypt.c:4268 msgid "Failed to remove reencryption keyslot." msgstr "Odstranění pozice s klíčem přešifrování selhalo." -#: lib/luks2/luks2_reencrypt.c:4275 +#: lib/luks2/luks2_reencrypt.c:4278 #, c-format msgid "Fatal error while reencrypting chunk starting at %, % sectors long." msgstr "Nepřekonatelná chyba při přešifrování bloku na pozici % dlouhého % sektorů." -#: lib/luks2/luks2_reencrypt.c:4279 +#: lib/luks2/luks2_reencrypt.c:4282 msgid "Online reencryption failed." msgstr "Přešifrování za běhu selhalo." -#: lib/luks2/luks2_reencrypt.c:4284 +#: lib/luks2/luks2_reencrypt.c:4287 msgid "Do not resume the device unless replaced with error target manually." msgstr "Zařízení neprobouzejte, dokud jej ručně nenahradíte chybovým cílem." -#: lib/luks2/luks2_reencrypt.c:4336 +#: lib/luks2/luks2_reencrypt.c:4339 msgid "Cannot proceed with reencryption. Unexpected reencryption status." msgstr "V přešifrování nelze pokračovat. Přešifrování se nachází v nečekaném stavu." -#: lib/luks2/luks2_reencrypt.c:4342 +#: lib/luks2/luks2_reencrypt.c:4345 msgid "Missing or invalid reencrypt context." msgstr "Chybějící nebo neplatný kontext přešifrování." -#: lib/luks2/luks2_reencrypt.c:4376 lib/luks2/luks2_reencrypt.c:4413 +#: lib/luks2/luks2_reencrypt.c:4379 lib/luks2/luks2_reencrypt.c:4416 msgid "Failed to update reencryption context." msgstr "Kontext přešifrování se nepodařilo aktualizovat." @@ -2187,7 +2188,7 @@ msgstr "Parametry pro šifrování pozice s klíčem lze nastavit jen u zaří msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encryption." msgstr "Parametry pro šifrování pozice s klíčem se neslučují s šifrováním pozice s klíčem LUKS2." -#: src/cryptsetup.c:150 src/cryptsetup.c:1180 src/cryptsetup.c:1547 +#: src/cryptsetup.c:150 src/cryptsetup.c:1178 src/cryptsetup.c:1545 #: src/utils_reencrypt.c:1887 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." @@ -2215,7 +2216,7 @@ msgstr "POZOR: Jedná-li se o režim plain a je-li určen soubor s klíčem, p msgid "WARNING: The --keyfile-size option is being ignored, the read size is the same as the encryption key size.\n" msgstr "POZOR: Přepínač --keyfile-size se ignoruje, velikost pro čtení je stejná jako velikosti šifrovacího klíče.\n" -#: src/cryptsetup.c:226 src/cryptsetup.c:1377 src/cryptsetup.c:1600 +#: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 #: src/integritysetup.c:188 src/utils_reencrypt.c:2138 #, c-format msgid "Blkid scan failed for %s." @@ -2226,9 +2227,9 @@ msgstr "Prohledávání blkid selhalo u %s." msgid "Detected device signature(s) on %s. Proceeding further may damage existing data." msgstr "Na %s byla nalezen vzorec zařízení. Pokračování může poškodit existující data." -#: src/cryptsetup.c:238 src/cryptsetup.c:1263 src/cryptsetup.c:1311 -#: src/cryptsetup.c:1384 src/cryptsetup.c:1524 src/cryptsetup.c:1612 -#: src/cryptsetup.c:2497 src/cryptsetup.c:2926 src/integritysetup.c:178 +#: src/cryptsetup.c:238 src/cryptsetup.c:1261 src/cryptsetup.c:1309 +#: src/cryptsetup.c:1382 src/cryptsetup.c:1522 src/cryptsetup.c:1610 +#: src/cryptsetup.c:2495 src/cryptsetup.c:2924 src/integritysetup.c:178 #: src/utils_reencrypt.c:111 src/utils_reencrypt.c:457 #: src/utils_reencrypt.c:925 msgid "Operation aborted.\n" @@ -2277,7 +2278,7 @@ msgstr "" "který umožňuje přístup k šifrovanému oddílu bez znalosti hesla.\n" "Tento výpis by měl být vždy uložen na bezpečném místě a v zašifrované podobě." -#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2522 +#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2520 msgid "" "The header dump with volume key is sensitive information\n" "that allows access to encrypted partition without a passphrase.\n" @@ -2296,14 +2297,14 @@ msgstr "Zařízení %s není platným zařízením FVAULT2." msgid "Cannot determine volume key size for FVAULT2, please use --key-size option." msgstr "Nelze určit velikost klíče svazku pro FVAULT2. Prosím, použijte přepínač --key-size." -#: src/cryptsetup.c:848 src/veritysetup.c:317 src/integritysetup.c:410 +#: src/cryptsetup.c:848 src/veritysetup.c:317 src/integritysetup.c:416 #, c-format msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "Zařízení %s je stále aktivní a naplánováno pro odložené odstranění.\n" -#: src/cryptsetup.c:881 src/cryptsetup.c:1810 src/cryptsetup.c:2084 -#: src/cryptsetup.c:2231 src/cryptsetup.c:2650 src/cryptsetup.c:2731 -#: src/cryptsetup.c:3264 +#: src/cryptsetup.c:881 src/cryptsetup.c:1808 src/cryptsetup.c:2082 +#: src/cryptsetup.c:2229 src/cryptsetup.c:2648 src/cryptsetup.c:2729 +#: src/cryptsetup.c:3262 #, c-format msgid "Failed to set external tokens path %s." msgstr "Cestu k externím tokenům %s se nepodařilo nastavit." @@ -2312,60 +2313,60 @@ msgstr "Cestu k externím tokenům %s se nepodařilo nastavit." msgid "Resize of active device requires volume key in keyring but --disable-keyring option is set." msgstr "Změna velikosti aktivního zařízení vyžaduje klíč svazku v klíčence. Byl však použit přepínač --disable-keyring." -#: src/cryptsetup.c:1059 +#: src/cryptsetup.c:1057 msgid "Benchmark interrupted." msgstr "Hodnocení výkonu přerušeno." -#: src/cryptsetup.c:1080 +#: src/cryptsetup.c:1078 #, c-format msgid "PBKDF2-%-9s N/A\n" msgstr "PBKDF2-%-9s –\n" -#: src/cryptsetup.c:1082 +#: src/cryptsetup.c:1080 #, c-format msgid "PBKDF2-%-9s %7u iterations per second for %zu-bit key\n" msgstr "PBKDF2-%-9s %7u iterací za sekundu pro %zubitový klíč\n" -#: src/cryptsetup.c:1096 +#: src/cryptsetup.c:1094 #, c-format msgid "%-10s N/A\n" msgstr "%-10s –\n" -#: src/cryptsetup.c:1098 +#: src/cryptsetup.c:1096 #, c-format msgid "%-10s %4u iterations, %5u memory, %1u parallel threads (CPUs) for %zu-bit key (requested %u ms time)\n" msgstr "%-10s %4u iterací, %5u paměti, %1u souběžných vláken (procesorů) pro %zubitový klíč (požadován čas %u ms)\n" -#: src/cryptsetup.c:1122 +#: src/cryptsetup.c:1120 msgid "Result of benchmark is not reliable." msgstr "Výsledek hodnocení výkonu není spolehlivý." # ???: are aproximated? -#: src/cryptsetup.c:1172 +#: src/cryptsetup.c:1170 msgid "# Tests are approximate using memory only (no storage IO).\n" msgstr "# Testy jsou počítány jen z práce s pamětí (žádné I/O úložiště).\n" #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1197 +#: src/cryptsetup.c:1195 #, c-format msgid "#%*s Algorithm | Key | Encryption | Decryption\n" msgstr "#%*sAlgoritmus | Klíč | Šifrování | Dešifrování\n" -#: src/cryptsetup.c:1205 +#: src/cryptsetup.c:1203 #, c-format msgid "Cipher %s (with %i bits key) is not available." msgstr "Šifra %s (s %ibitovým klíčem) není dostupná." #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1224 +#: src/cryptsetup.c:1222 msgid "# Algorithm | Key | Encryption | Decryption\n" msgstr "# Algoritmus | Klíč | Šifrování | Dešifrování\n" -#: src/cryptsetup.c:1235 +#: src/cryptsetup.c:1233 msgid "N/A" msgstr "–" -#: src/cryptsetup.c:1260 +#: src/cryptsetup.c:1258 msgid "" "Unprotected LUKS2 reencryption metadata detected. Please verify the reencryption operation is desirable (see luksDump output)\n" "and continue (upgrade metadata) only if you acknowledge the operation as genuine." @@ -2374,27 +2375,27 @@ msgstr "" "přešifrování je žádoucí (vizte výstup luksDump) a pokračujte (zvýšení verze\n" "metadat) pouze, když poznáte, že operace je chtěná." -#: src/cryptsetup.c:1266 +#: src/cryptsetup.c:1264 msgid "Enter passphrase to protect and upgrade reencryption metadata: " msgstr "Zadejte heslo pro ochránění metadat o přešifrování a pro zvýšení jejich verze: " -#: src/cryptsetup.c:1310 +#: src/cryptsetup.c:1308 msgid "Really proceed with LUKS2 reencryption recovery?" msgstr "Opravdu pokračovat s obnovou přešifrování LUKS2?" -#: src/cryptsetup.c:1319 +#: src/cryptsetup.c:1317 msgid "Enter passphrase to verify reencryption metadata digest: " msgstr "Zadejte heslo pro ověření otisku metadat o přešifrování: " -#: src/cryptsetup.c:1321 +#: src/cryptsetup.c:1319 msgid "Enter passphrase for reencryption recovery: " msgstr "Zadejte heslo pro obnovení přešifrování: " -#: src/cryptsetup.c:1383 +#: src/cryptsetup.c:1381 msgid "Really try to repair LUKS device header?" msgstr "Opravdu se pokusit opravit hlavičku zařízení LUKS?" -#: src/cryptsetup.c:1411 src/integritysetup.c:76 src/integritysetup.c:244 +#: src/cryptsetup.c:1409 src/integritysetup.c:76 src/integritysetup.c:244 msgid "" "\n" "Wipe interrupted." @@ -2402,7 +2403,7 @@ msgstr "" "\n" "Výmaz přerušen." -#: src/cryptsetup.c:1416 src/integritysetup.c:81 src/integritysetup.c:283 +#: src/cryptsetup.c:1414 src/integritysetup.c:81 src/integritysetup.c:289 msgid "" "Wiping device to initialize integrity checksum.\n" "You can interrupt this by pressing CTRL+c (rest of not wiped device will contain invalid checksum).\n" @@ -2411,169 +2412,169 @@ msgstr "" "Lze přerušit pomocí Ctrl+C (zbytek nesmazaného zařízení bude obsahovat\n" "neplatné součty).\n" -#: src/cryptsetup.c:1438 src/integritysetup.c:103 +#: src/cryptsetup.c:1436 src/integritysetup.c:103 #, c-format msgid "Cannot deactivate temporary device %s." msgstr "Dočasné zařízení %s nelze deaktivovat." -#: src/cryptsetup.c:1486 +#: src/cryptsetup.c:1484 msgid "OPAL hw-only encryption does not support --cipher and --key-size, options ignored." msgstr "Čistě hardwarové šifrování Opal nepodporuje --cipher a --key-size. Přepínače se ignorují." -#: src/cryptsetup.c:1499 +#: src/cryptsetup.c:1497 msgid "Integrity option can be used only for LUKS2 format." msgstr "Volby integrity lze použít jen při formátu LUKS2." -#: src/cryptsetup.c:1504 src/cryptsetup.c:1584 +#: src/cryptsetup.c:1502 src/cryptsetup.c:1582 msgid "Unsupported LUKS2 metadata size options." msgstr "Nepodporované volby velikosti metadat LUKS2." -#: src/cryptsetup.c:1509 +#: src/cryptsetup.c:1507 msgid "OPAL is supported only for LUKS2 format." msgstr "Opal je podporován jen s formátem LUKS2." -#: src/cryptsetup.c:1514 +#: src/cryptsetup.c:1512 msgid "Inline hw tags are supported only for LUKS2 format." msgstr "Inline hardwarové značky jsou podporovány jen s formátem LUKS2." -#: src/cryptsetup.c:1523 +#: src/cryptsetup.c:1521 msgid "Header file does not exist, do you want to create it?" msgstr "Soubor s hlavičkou neexistuje. Chcete jej vytvořit?" -#: src/cryptsetup.c:1531 +#: src/cryptsetup.c:1529 #, c-format msgid "Cannot create header file %s." msgstr "Soubor s hlavičkou %s nelze vytvořit." -#: src/cryptsetup.c:1557 src/integritysetup.c:126 src/integritysetup.c:141 -#: src/integritysetup.c:150 src/integritysetup.c:322 src/integritysetup.c:330 -#: src/integritysetup.c:340 +#: src/cryptsetup.c:1555 src/integritysetup.c:126 src/integritysetup.c:141 +#: src/integritysetup.c:150 src/integritysetup.c:328 src/integritysetup.c:336 +#: src/integritysetup.c:346 msgid "No known integrity specification pattern detected." msgstr "Nelze najít žádný známý vzorek se specifikací integrity." -#: src/cryptsetup.c:1559 +#: src/cryptsetup.c:1557 msgid "Cannot use specified integrity key size." msgstr "Zadanou velikost klíče integrity nelze použít." -#: src/cryptsetup.c:1577 +#: src/cryptsetup.c:1575 #, c-format msgid "Cannot use %s as on-disk header." msgstr "%s nelze použít pro hlavičku uvnitř disku." -#: src/cryptsetup.c:1606 src/integritysetup.c:172 +#: src/cryptsetup.c:1604 src/integritysetup.c:172 #, c-format msgid "This will overwrite data on %s irrevocably." msgstr "Toto nevratně přepíše data na %s." -#: src/cryptsetup.c:1643 +#: src/cryptsetup.c:1641 msgid "OPAL Admin password cannot be empty." msgstr "Heslo správce Opal nemůže být prázdné." -#: src/cryptsetup.c:1657 src/cryptsetup.c:2101 src/cryptsetup.c:2244 -#: src/cryptsetup.c:2379 src/cryptsetup.c:2445 src/utils_reencrypt_luks1.c:428 +#: src/cryptsetup.c:1655 src/cryptsetup.c:2099 src/cryptsetup.c:2242 +#: src/cryptsetup.c:2377 src/cryptsetup.c:2443 src/utils_reencrypt_luks1.c:428 msgid "Failed to set pbkdf parameters." msgstr "Nastavení parametrů PBKDF selhalo." -#: src/cryptsetup.c:1788 +#: src/cryptsetup.c:1786 msgid "Reduced data offset is allowed only for detached LUKS header." msgstr "Zmenšená poloha dat je dovolena jen u oddělené hlavičky LUKS." -#: src/cryptsetup.c:1795 +#: src/cryptsetup.c:1793 #, c-format msgid "LUKS file container %s is too small for activation, there is no remaining space for data." msgstr "Souborový kontejner LUKS %s je na aktivaci příliš malý. Nezbývá žádné místo pro data." -#: src/cryptsetup.c:1837 src/cryptsetup.c:2250 src/utils_reencrypt.c:277 +#: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:277 #: src/utils_reencrypt.c:369 src/utils_reencrypt.c:1907 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "Bez pozic pro klíče nelze určit velikost LUKS klíče svazku. Prosím, použijte přepínač --key-size." -#: src/cryptsetup.c:1856 src/utils_reencrypt.c:303 +#: src/cryptsetup.c:1854 src/utils_reencrypt.c:303 msgid "Device requires two volume keys." msgstr "Zařízení vyžaduje dva klíče svazku." -#: src/cryptsetup.c:1891 +#: src/cryptsetup.c:1889 msgid "Some specified activation parameters were ignored with OPAL hw-only encryption." msgstr "Některé zadané aktivační parametry byly při čistě hardwarovém šifrování Opal ignorovány." -#: src/cryptsetup.c:1896 +#: src/cryptsetup.c:1894 msgid "Device activated but cannot make flags persistent." msgstr "Zařízení aktivováno, ale příznaky nelze učinit trvalými." -#: src/cryptsetup.c:1976 src/cryptsetup.c:2044 +#: src/cryptsetup.c:1974 src/cryptsetup.c:2042 #, c-format msgid "Keyslot %d is selected for deletion." msgstr "Ke smazání vybrán klíč na pozici %d." -#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 +#: src/cryptsetup.c:1986 src/cryptsetup.c:2046 msgid "This is the last keyslot. Device will become unusable after purging this key." msgstr "" "Toto je poslední pozice klíče. Smazáním tohoto klíče přijdete o možnost\n" "zařízení použít." -#: src/cryptsetup.c:1989 +#: src/cryptsetup.c:1987 msgid "Enter any remaining passphrase: " msgstr "Zadejte jakékoliv jiné heslo: " -#: src/cryptsetup.c:1990 src/cryptsetup.c:2050 +#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 msgid "Operation aborted, the keyslot was NOT wiped.\n" msgstr "Operace zrušena, pozice klíče NEBYLA vymazána.\n" -#: src/cryptsetup.c:2026 +#: src/cryptsetup.c:2024 msgid "Enter passphrase to be deleted: " msgstr "Zadejte heslo, které se má smazat: " -#: src/cryptsetup.c:2076 src/cryptsetup.c:2428 src/cryptsetup.c:3088 -#: src/cryptsetup.c:3255 +#: src/cryptsetup.c:2074 src/cryptsetup.c:2426 src/cryptsetup.c:3086 +#: src/cryptsetup.c:3253 #, c-format msgid "Device %s is not a valid LUKS2 device." msgstr "Zařízení %s není platným zařízením LUKS2." -#: src/cryptsetup.c:2115 src/cryptsetup.c:2314 +#: src/cryptsetup.c:2113 src/cryptsetup.c:2312 msgid "Enter new passphrase for key slot: " msgstr "Zadejte nové heslo pro pozici klíče: " -#: src/cryptsetup.c:2149 src/utils_luks.c:342 +#: src/cryptsetup.c:2147 src/utils_luks.c:342 #, c-format msgid "Enter token PIN: " msgstr "Zadejte PIN k tokenu: " -#: src/cryptsetup.c:2151 src/utils_luks.c:344 +#: src/cryptsetup.c:2149 src/utils_luks.c:344 #, c-format msgid "Enter token %d PIN: " msgstr "Zadejte PIN k tokenu %d: " -#: src/cryptsetup.c:2210 +#: src/cryptsetup.c:2208 msgid "WARNING: The --key-slot parameter is used for new keyslot number.\n" msgstr "POZOR: Parametr --key-slot se použije pro číslo nové pozice klíče.\n" -#: src/cryptsetup.c:2287 src/utils_reencrypt_luks1.c:1094 +#: src/cryptsetup.c:2285 src/utils_reencrypt_luks1.c:1094 #, c-format msgid "Enter any existing passphrase: " msgstr "Zadejte jakékoliv existující heslo: " -#: src/cryptsetup.c:2383 +#: src/cryptsetup.c:2381 msgid "Enter passphrase to be changed: " msgstr "Zadejte heslo, které má být změněno: " -#: src/cryptsetup.c:2399 src/utils_reencrypt_luks1.c:1080 +#: src/cryptsetup.c:2397 src/utils_reencrypt_luks1.c:1080 msgid "Enter new passphrase: " msgstr "Zadejte nové heslo: " -#: src/cryptsetup.c:2449 +#: src/cryptsetup.c:2447 msgid "Enter passphrase for keyslot to be converted: " msgstr "Zadejte heslo pro pozici klíče, který má být převeden: " -#: src/cryptsetup.c:2473 +#: src/cryptsetup.c:2471 msgid "Only one device argument for isLuks operation is supported." msgstr "U operace isLuks je podporován pouze jeden argument se zařízením." -#: src/cryptsetup.c:2578 +#: src/cryptsetup.c:2576 #, c-format msgid "Keyslot %d does not contain unbound key." msgstr "Pozice klíče %d neobsahuje nepřiřazený klíč." -#: src/cryptsetup.c:2583 +#: src/cryptsetup.c:2581 msgid "" "The header dump with unbound key is sensitive information.\n" "This dump should be stored encrypted in a safe place." @@ -2581,52 +2582,52 @@ msgstr "" "Výpis hlavičky s nepřiřazeným klíčem je citlivý údaj.\n" "Tento výpis by měl být uložen na bezpečném místě a v zašifrované podobě." -#: src/cryptsetup.c:2678 src/cryptsetup.c:2714 +#: src/cryptsetup.c:2676 src/cryptsetup.c:2712 #, c-format msgid "%s is not active %s device name." msgstr "%s není název aktivního zařízení %s." -#: src/cryptsetup.c:2709 +#: src/cryptsetup.c:2707 #, c-format msgid "%s is not active LUKS device name or header is missing." msgstr "%s není název aktivního zařízení LUKS nebo mu chybí hlavička." -#: src/cryptsetup.c:2786 src/cryptsetup.c:2805 +#: src/cryptsetup.c:2784 src/cryptsetup.c:2803 msgid "Option --header-backup-file is required." msgstr "Je vyžadován přepínač --header-backup-file." -#: src/cryptsetup.c:2836 +#: src/cryptsetup.c:2834 #, c-format msgid "%s is not cryptsetup managed device." msgstr "%s není zařízení spravované nástrojem cryptsetup." -#: src/cryptsetup.c:2847 +#: src/cryptsetup.c:2845 #, c-format msgid "Refresh is not supported for device type %s" msgstr "Reaktivace není na zařízení typu %s podporována" -#: src/cryptsetup.c:2897 +#: src/cryptsetup.c:2895 #, c-format msgid "Unrecognized metadata device type %s." msgstr "Nerozpoznaná metadata druhu zařízení %s." -#: src/cryptsetup.c:2899 +#: src/cryptsetup.c:2897 msgid "Command requires device and mapped name as arguments." msgstr "Příkaz vyžaduje jako argumenty zařízení a mapovaný název." -#: src/cryptsetup.c:2917 +#: src/cryptsetup.c:2915 msgid "Enter OPAL PSID: " msgstr "Zadejte Opal PSID: " -#: src/cryptsetup.c:2917 +#: src/cryptsetup.c:2915 msgid "Enter OPAL Admin password: " msgstr "Zadejte heslo správce Opal: " -#: src/cryptsetup.c:2925 +#: src/cryptsetup.c:2923 msgid "WARNING: WHOLE disk will be factory reset and all data will be lost! Continue?" msgstr "POZOR: CELÝ disk bude uveden do továrního nastavení a všechna data budou ztracena! Pokračovat?" -#: src/cryptsetup.c:2968 +#: src/cryptsetup.c:2966 #, c-format msgid "" "This operation will erase all keyslots on device %s.\n" @@ -2635,368 +2636,368 @@ msgstr "" "Tento úkon smaže všechny pozice s klíči na zařízení %s.\n" "Po jeho dokončení zařízení bude nepoužitelné." -#: src/cryptsetup.c:2975 +#: src/cryptsetup.c:2973 msgid "Operation aborted, keyslots were NOT wiped.\n" msgstr "Operace zrušena, pozice s klíči NEBYLY smazány.\n" -#: src/cryptsetup.c:3014 +#: src/cryptsetup.c:3012 msgid "Invalid LUKS type, only luks1 and luks2 are supported." msgstr "Neplatný druh formátu LUKS. Podporován je pouze LUKS1 a LUKS2." -#: src/cryptsetup.c:3030 +#: src/cryptsetup.c:3028 #, c-format msgid "Device is already %s type." msgstr "Zařízení je již druhu %s." -#: src/cryptsetup.c:3037 +#: src/cryptsetup.c:3035 #, c-format msgid "This operation will convert %s to %s format.\n" msgstr "Tato operace převede formát %s na %s.\n" -#: src/cryptsetup.c:3040 +#: src/cryptsetup.c:3038 msgid "Operation aborted, device was NOT converted.\n" msgstr "Operace zrušena, zařízení NEBYLO převedeno.\n" -#: src/cryptsetup.c:3080 +#: src/cryptsetup.c:3078 msgid "Option --priority, --label or --subsystem is missing." msgstr "Chybí přepínač --priority, --label nebo --subsystem." -#: src/cryptsetup.c:3114 src/cryptsetup.c:3154 src/cryptsetup.c:3174 +#: src/cryptsetup.c:3112 src/cryptsetup.c:3152 src/cryptsetup.c:3172 #, c-format msgid "Token %d is invalid." msgstr "Token %d je neplatný." -#: src/cryptsetup.c:3117 src/cryptsetup.c:3177 +#: src/cryptsetup.c:3115 src/cryptsetup.c:3175 #, c-format msgid "Token %d in use." msgstr "Token %d se používá." -#: src/cryptsetup.c:3129 +#: src/cryptsetup.c:3127 #, c-format msgid "Failed to add luks2-keyring token %d." msgstr "Přidání tokenu %d klíčenky LUKS2 selhalo." -#: src/cryptsetup.c:3140 src/cryptsetup.c:3203 +#: src/cryptsetup.c:3138 src/cryptsetup.c:3201 #, c-format msgid "Failed to assign token %d to keyslot %d." msgstr "Přiřazení tokenu %d do pozice s klíčem %d selhalo." -#: src/cryptsetup.c:3157 +#: src/cryptsetup.c:3155 #, c-format msgid "Token %d is not in use." msgstr "Token %d se nepoužívá." -#: src/cryptsetup.c:3194 +#: src/cryptsetup.c:3192 msgid "Failed to import token from file." msgstr "Import tokenu ze souboru selhal." -#: src/cryptsetup.c:3219 +#: src/cryptsetup.c:3217 #, c-format msgid "Failed to get token %d for export." msgstr "Získání tokenu %d za účelem exportu selhalo." -#: src/cryptsetup.c:3232 +#: src/cryptsetup.c:3230 #, c-format msgid "Token %d is not assigned to keyslot %d." msgstr "Token %d není přiřazen pozici s klíčem %d." -#: src/cryptsetup.c:3234 src/cryptsetup.c:3241 +#: src/cryptsetup.c:3232 src/cryptsetup.c:3239 #, c-format msgid "Failed to unassign token %d from keyslot %d." msgstr "Zrušení přiřazení tokenu %d k pozici s klíčem %d selhalo." -#: src/cryptsetup.c:3300 +#: src/cryptsetup.c:3298 msgid "Option --tcrypt-hidden, --tcrypt-system or --tcrypt-backup is supported only for TCRYPT device." msgstr "Přepínač --tcrypt-hidden, --tcrypt-system nebo --tcrypt-backup je podporován jen u zařízení TCRYPT." -#: src/cryptsetup.c:3303 +#: src/cryptsetup.c:3301 msgid "Option --veracrypt or --disable-veracrypt is supported only for TCRYPT device type." msgstr "Přepínače --veracrypt a --disable-veracrypt jsou podporovány jen u typu zařízení TCRYPT." -#: src/cryptsetup.c:3306 +#: src/cryptsetup.c:3304 msgid "Option --veracrypt-pim is supported only for VeraCrypt compatible devices." msgstr "Přepínač --veracrypt-pim je podporován jen u zařízení kompatibilním s VeraCrypt." -#: src/cryptsetup.c:3310 +#: src/cryptsetup.c:3308 msgid "Option --veracrypt-query-pim is supported only for VeraCrypt compatible devices." msgstr "Přepínač --veracrypt-query-pim je podporován jen u zařízení kompatibilním s VeraCrypt." -#: src/cryptsetup.c:3312 +#: src/cryptsetup.c:3310 msgid "The options --veracrypt-pim and --veracrypt-query-pim are mutually exclusive." msgstr "Přepínače --veracrypt-pim a --veracrypt-query-pim se vzájemně vylučují." -#: src/cryptsetup.c:3321 +#: src/cryptsetup.c:3319 msgid "Option --persistent is not allowed with --test-passphrase." msgstr "Přepínač --persistent není dovolen současně s --test-passphrase." -#: src/cryptsetup.c:3324 +#: src/cryptsetup.c:3322 msgid "Options --refresh and --test-passphrase are mutually exclusive." msgstr "Přepínače --refresh a --test-passphrase se vzájemně vylučují." -#: src/cryptsetup.c:3327 +#: src/cryptsetup.c:3325 msgid "Option --shared is allowed only for open of plain device." msgstr "Přepínač --shared je dovolen jen při úkonu otevírání zařízení plain." -#: src/cryptsetup.c:3330 +#: src/cryptsetup.c:3328 msgid "Option --skip is supported only for open of plain and loopaes devices." msgstr "Přepínač --skip je podporován jen při otevírání zařízení plain a loopaes." -#: src/cryptsetup.c:3333 +#: src/cryptsetup.c:3331 msgid "Option --offset with open action is only supported for plain and loopaes devices." msgstr "Při otevírání je přepínač --offset podporován jen u zařízení plain a loopaes." -#: src/cryptsetup.c:3336 +#: src/cryptsetup.c:3334 msgid "Option --tcrypt-hidden cannot be combined with --allow-discards." msgstr "Přepínač --tcrypt-hidden nelze použít s přepínačem --allow-discards." -#: src/cryptsetup.c:3340 +#: src/cryptsetup.c:3338 msgid "Sector size option with open action is supported only for plain devices." msgstr "Otevírání s přepínačem velikosti sektoru je podporován jen u zařízení plain." # FIXME: "Large IV sectors" should read "IV large sectors". -#: src/cryptsetup.c:3344 +#: src/cryptsetup.c:3342 msgid "Large IV sectors option is supported only for opening plain type device with sector size larger than 512 bytes." msgstr "Volba inicializačního vektoru s velkými sektory je podporována jen při otevírání zařízení typu plain s velikostí sektoru větší než 512 bajtů." -#: src/cryptsetup.c:3349 +#: src/cryptsetup.c:3347 msgid "Option --test-passphrase is allowed only for open of LUKS, TCRYPT, BITLK and FVAULT2 devices." msgstr "Přepínač --test-passphrase je dovolen pouze při otevírání zařízení LUKS, TCRYPT, BITLK a FVAULT2." -#: src/cryptsetup.c:3352 src/cryptsetup.c:3382 +#: src/cryptsetup.c:3350 src/cryptsetup.c:3380 msgid "Options --device-size and --size cannot be combined." msgstr "Přepínače --device-size a --size nelze kombinovat." -#: src/cryptsetup.c:3355 +#: src/cryptsetup.c:3353 msgid "Option --unbound is allowed only for open of luks device." msgstr "Přepínač --unbound je dovolen jen při otevírání zařízení LUKS." -#: src/cryptsetup.c:3358 +#: src/cryptsetup.c:3356 msgid "Option --unbound cannot be used without --test-passphrase." msgstr "Přepínač --unbound není dovolen současně s --test-passphrase." -#: src/cryptsetup.c:3362 +#: src/cryptsetup.c:3360 msgid "Option --volume-key-keyring cannot be combined with --hash or --volume-key-file." msgstr "Přepínač --volume-key-keyring nelze použít s přepínači --hash a --volume-key-file." -#: src/cryptsetup.c:3365 +#: src/cryptsetup.c:3363 msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "Oba přepínače --volume-key-file musí být ve dvojici s odpovídajícími přepínači --key-size." -#: src/cryptsetup.c:3374 src/veritysetup.c:673 src/integritysetup.c:784 +#: src/cryptsetup.c:3372 src/veritysetup.c:673 src/integritysetup.c:787 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "Přepínače --cancel-deferred a --deferred se vzájemně vylučují." -#: src/cryptsetup.c:3390 +#: src/cryptsetup.c:3388 msgid "Option --active-name can be set only for LUKS2 device." msgstr "Přepínač --active-name lze použít jen u zařízení LUKS2." -#: src/cryptsetup.c:3393 +#: src/cryptsetup.c:3391 msgid "Options --active-name and --force-offline-reencrypt cannot be combined." msgstr "Přepínače --active-name a --force-offline-reencrypt nelze kombinovat." -#: src/cryptsetup.c:3396 +#: src/cryptsetup.c:3394 msgid "Options --new-volume-key-file and --keep-key cannot be combined." msgstr "Přepínače --new-volume-key-file a --keep-key nelze kombinovat." -#: src/cryptsetup.c:3399 +#: src/cryptsetup.c:3397 msgid "Options --new-volume-key-keyring and --keep-key cannot be combined." msgstr "Přepínače --new-volume-key-keyring a --keep-key nelze kombinovat." -#: src/cryptsetup.c:3407 src/cryptsetup.c:3437 +#: src/cryptsetup.c:3405 src/cryptsetup.c:3435 msgid "Keyslot specification is required." msgstr "Je nutné určit pozici s klíčem." -#: src/cryptsetup.c:3415 +#: src/cryptsetup.c:3413 msgid "Options --align-payload and --offset cannot be combined." msgstr "Přepínače --align-payload a --offset nelze kombinovat." -#: src/cryptsetup.c:3418 +#: src/cryptsetup.c:3416 msgid "Option --integrity-no-wipe can be used only for format action with integrity extension." msgstr "Přepínač --integrity-no-wipe smí být použit jen při formátování s rozšířením integrity." -#: src/cryptsetup.c:3421 +#: src/cryptsetup.c:3419 msgid "Only one of --use-[u]random options is allowed." msgstr "Je dovolen pouze jeden z přepínačů --use-[u]random." -#: src/cryptsetup.c:3429 +#: src/cryptsetup.c:3427 msgid "Key size is required with --unbound option." msgstr "Přepínač --unbound vyžaduje velikost klíče." -#: src/cryptsetup.c:3449 +#: src/cryptsetup.c:3447 msgid "Invalid token action." msgstr "Neplatná operace tokenu." -#: src/cryptsetup.c:3452 +#: src/cryptsetup.c:3450 msgid "--key-description parameter is mandatory for token add action." msgstr "Parametr --key-description je při přidávání tokenu povinný." -#: src/cryptsetup.c:3456 src/cryptsetup.c:3469 +#: src/cryptsetup.c:3454 src/cryptsetup.c:3467 msgid "Action requires specific token. Use --token-id parameter." msgstr "Akce vyžaduje určitý token. Použijte parametr --token-id." -#: src/cryptsetup.c:3460 +#: src/cryptsetup.c:3458 msgid "Option --unbound is valid only with token add action." msgstr "Přepínač --unbound lze použít pouze s akcí přidání." -#: src/cryptsetup.c:3462 +#: src/cryptsetup.c:3460 msgid "Options --key-slot and --unbound cannot be combined." msgstr "Přepínače --key-slot a --unbound nelze kombinovat." -#: src/cryptsetup.c:3467 +#: src/cryptsetup.c:3465 msgid "Action requires specific keyslot. Use --key-slot parameter." msgstr "Akce vyžaduje určitou pozici klíče. Použijte parametr --key-slot." -#: src/cryptsetup.c:3483 +#: src/cryptsetup.c:3481 msgid " [--type ] []" msgstr " [--type ] []" -#: src/cryptsetup.c:3483 src/veritysetup.c:487 src/integritysetup.c:551 +#: src/cryptsetup.c:3481 src/veritysetup.c:487 src/integritysetup.c:554 msgid "open device as " msgstr "otevře zařízení jako " -#: src/cryptsetup.c:3484 src/cryptsetup.c:3485 src/cryptsetup.c:3486 -#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:552 -#: src/integritysetup.c:553 src/integritysetup.c:555 +#: src/cryptsetup.c:3482 src/cryptsetup.c:3483 src/cryptsetup.c:3484 +#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:555 +#: src/integritysetup.c:556 src/integritysetup.c:558 msgid "" msgstr "" -#: src/cryptsetup.c:3484 src/veritysetup.c:488 src/integritysetup.c:552 +#: src/cryptsetup.c:3482 src/veritysetup.c:488 src/integritysetup.c:555 msgid "close device (remove mapping)" msgstr "zavře zařízení (odstraní mapování)" -#: src/cryptsetup.c:3485 src/integritysetup.c:555 +#: src/cryptsetup.c:3483 src/integritysetup.c:558 msgid "resize active device" msgstr "změní velikost aktivního zařízení" -#: src/cryptsetup.c:3486 +#: src/cryptsetup.c:3484 msgid "show device status" msgstr "zobrazí stav zařízení" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3485 msgid "[--cipher ]" msgstr "[--cipher <šifra>]" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3485 msgid "benchmark cipher" msgstr "zhodnotí výkon šifry" -#: src/cryptsetup.c:3488 src/cryptsetup.c:3489 src/cryptsetup.c:3490 -#: src/cryptsetup.c:3491 src/cryptsetup.c:3492 src/cryptsetup.c:3499 -#: src/cryptsetup.c:3500 src/cryptsetup.c:3501 src/cryptsetup.c:3502 -#: src/cryptsetup.c:3503 src/cryptsetup.c:3504 src/cryptsetup.c:3505 -#: src/cryptsetup.c:3506 src/cryptsetup.c:3507 src/cryptsetup.c:3508 +#: src/cryptsetup.c:3486 src/cryptsetup.c:3487 src/cryptsetup.c:3488 +#: src/cryptsetup.c:3489 src/cryptsetup.c:3490 src/cryptsetup.c:3497 +#: src/cryptsetup.c:3498 src/cryptsetup.c:3499 src/cryptsetup.c:3500 +#: src/cryptsetup.c:3501 src/cryptsetup.c:3502 src/cryptsetup.c:3503 +#: src/cryptsetup.c:3504 src/cryptsetup.c:3505 src/cryptsetup.c:3506 msgid "" msgstr "" -#: src/cryptsetup.c:3488 +#: src/cryptsetup.c:3486 msgid "try to repair on-disk metadata" msgstr "pokusí se opravit metadata uložená na disku" -#: src/cryptsetup.c:3489 +#: src/cryptsetup.c:3487 msgid "reencrypt LUKS2 device" msgstr "přešifruje zařízení LUKS2" -#: src/cryptsetup.c:3490 +#: src/cryptsetup.c:3488 msgid "erase all keyslots (remove encryption key)" msgstr "smaže všechny pozice s klíči (odstraní šifrovací klíč)" -#: src/cryptsetup.c:3491 +#: src/cryptsetup.c:3489 msgid "convert LUKS from/to LUKS2 format" msgstr "převede formát LUKS do/z formátu LUKS2" -#: src/cryptsetup.c:3492 +#: src/cryptsetup.c:3490 msgid "set permanent configuration options for LUKS2" msgstr "nastaví trvalé volby konfigurace pro LUKS2" -#: src/cryptsetup.c:3493 src/cryptsetup.c:3494 +#: src/cryptsetup.c:3491 src/cryptsetup.c:3492 msgid " []" msgstr " []" -#: src/cryptsetup.c:3493 +#: src/cryptsetup.c:3491 msgid "formats a LUKS device" msgstr "naformátuje zařízení LUKS" -#: src/cryptsetup.c:3494 +#: src/cryptsetup.c:3492 msgid "add key to LUKS device" msgstr "do zařízení LUKS přidá klíč" -#: src/cryptsetup.c:3495 src/cryptsetup.c:3496 src/cryptsetup.c:3497 +#: src/cryptsetup.c:3493 src/cryptsetup.c:3494 src/cryptsetup.c:3495 msgid " []" msgstr " []" -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3493 msgid "removes supplied key or key file from LUKS device" msgstr "odstraní zadaný klíč nebo soubor s klíčem ze zařízení LUKS" -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3494 msgid "changes supplied key or key file of LUKS device" msgstr "změní zadaný klíč nebo soubor s klíčem u zařízení LUKS" -#: src/cryptsetup.c:3497 +#: src/cryptsetup.c:3495 msgid "converts a key to new pbkdf parameters" msgstr "převede klíč do nových parametrů PBKDF" -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3496 msgid " " msgstr " " -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3496 msgid "wipes key with number from LUKS device" msgstr "smaže klíč s číslem ze zařízení LUKS" -#: src/cryptsetup.c:3499 +#: src/cryptsetup.c:3497 msgid "print UUID of LUKS device" msgstr "zobrazí UUID zařízení LUKS" -#: src/cryptsetup.c:3500 +#: src/cryptsetup.c:3498 msgid "tests for LUKS partition header" msgstr "otestuje na hlavičku oddílu LUKS" -#: src/cryptsetup.c:3501 +#: src/cryptsetup.c:3499 msgid "dump LUKS partition information" msgstr "vypíše údaje o oddílu LUKS" -#: src/cryptsetup.c:3502 +#: src/cryptsetup.c:3500 msgid "dump TCRYPT device information" msgstr "vypíše údaje o oddílu TCRYPT" -#: src/cryptsetup.c:3503 +#: src/cryptsetup.c:3501 msgid "dump BITLK device information" msgstr "vypíše údaje o zařízení BITLK" -#: src/cryptsetup.c:3504 +#: src/cryptsetup.c:3502 msgid "dump FVAULT2 device information" msgstr "vypíše údaje o zařízení FVAULT2" # TODO: not consistent with previous line -#: src/cryptsetup.c:3505 +#: src/cryptsetup.c:3503 msgid "Suspend LUKS device and wipe key (all IOs are frozen)" msgstr "Uspí zařízení LUKS a smaže klíč (všechny operace budou zmrazeny)" # TODO: not consistent with previous line -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3504 msgid "Resume suspended LUKS device" msgstr "Probudí uspané zařízení LUKS" # TODO: not consistent with previous line -#: src/cryptsetup.c:3507 +#: src/cryptsetup.c:3505 msgid "Backup LUKS device header and keyslots" msgstr "Zálohuje hlavičku zařízení LUKS a jeho pozice s klíči" # TODO: not consistent with previous line -#: src/cryptsetup.c:3508 +#: src/cryptsetup.c:3506 msgid "Restore LUKS device header and keyslots" msgstr "Obnoví hlavičku zařízení LUKS a jeho pozice s klíči" -#: src/cryptsetup.c:3509 +#: src/cryptsetup.c:3507 msgid " " msgstr " " -#: src/cryptsetup.c:3509 +#: src/cryptsetup.c:3507 msgid "Manipulate LUKS2 tokens" msgstr "Zachází s tokeny LUKS2" -#: src/cryptsetup.c:3528 src/veritysetup.c:505 src/integritysetup.c:570 +#: src/cryptsetup.c:3526 src/veritysetup.c:505 src/integritysetup.c:573 msgid "" "\n" " is one of:\n" @@ -3004,7 +3005,7 @@ msgstr "" "\n" " je jedna z:\n" -#: src/cryptsetup.c:3534 +#: src/cryptsetup.c:3532 msgid "" "\n" "You can also use old syntax aliases:\n" @@ -3016,7 +3017,7 @@ msgstr "" "\topen: create (plainOpen), luksOpen, loopaesOpen, tcryptOpen, bitlkOpen, fvault2Open\n" "\tclose: remove (plainClose), luksClose, loopaesClose, tcryptClose, bitlkClose, fvault2Close\n" -#: src/cryptsetup.c:3538 +#: src/cryptsetup.c:3536 #, c-format msgid "" "\n" @@ -3031,7 +3032,7 @@ msgstr "" " je číslo pozice klíče LUKS, který se má upravit\n" " je volitelný soubor s novým klíčem pro akci luksAddKey\n" -#: src/cryptsetup.c:3545 +#: src/cryptsetup.c:3543 #, c-format msgid "" "\n" @@ -3040,7 +3041,7 @@ msgstr "" "\n" "Výchozí zakompilovaný formát metadat (pro akci luksFormat) je %s.\n" -#: src/cryptsetup.c:3550 +#: src/cryptsetup.c:3548 msgid "" "\n" "LUKS2 external token plugin support is enabled.\n" @@ -3048,12 +3049,12 @@ msgstr "" "\n" "Podpora pro zásuvný modul externího tokenu LUKS2 je zapnuta.\n" -#: src/cryptsetup.c:3551 +#: src/cryptsetup.c:3549 #, c-format msgid "LUKS2 external token plugin path: %s.\n" msgstr "Cesta k zásuvnému modulu externího tokenu LUKS2: %s.\n" -#: src/cryptsetup.c:3553 +#: src/cryptsetup.c:3551 msgid "" "\n" "LUKS2 external token plugin support is disabled.\n" @@ -3061,7 +3062,7 @@ msgstr "" "\n" "Podpora pro zásuvný modul externího tokenu LUKS2 je vypnuta.\n" -#: src/cryptsetup.c:3557 +#: src/cryptsetup.c:3555 #, c-format msgid "" "\n" @@ -3078,7 +3079,7 @@ msgstr "" "Výchozí PBKDF pro LUKS2: %s\n" "\tDoba iterací: %d, nutná paměť: %d kB, souběžná vlákna: %d\n" -#: src/cryptsetup.c:3568 +#: src/cryptsetup.c:3566 #, c-format msgid "" "\n" @@ -3093,123 +3094,123 @@ msgstr "" "\tplain: %s, Klíč: %d bitů, Haš hesla: %s\n" "\tLUKS: %s, Klíč: %d bitů, Haš hlavičky LUKS: %s, RNG: %s\n" -#: src/cryptsetup.c:3577 +#: src/cryptsetup.c:3575 msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: V režimu XTS (dva vnitřní klíče) bude výchozí velikost klíče zdvojnásobena.\n" -#: src/cryptsetup.c:3595 src/veritysetup.c:647 src/integritysetup.c:730 +#: src/cryptsetup.c:3593 src/veritysetup.c:647 src/integritysetup.c:733 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: vyžaduje %s jako argumenty" -#: src/cryptsetup.c:3635 src/utils_reencrypt_luks1.c:1143 +#: src/cryptsetup.c:3633 src/utils_reencrypt_luks1.c:1143 msgid "Key slot is invalid." msgstr "Pozice klíče není platná." -#: src/cryptsetup.c:3663 +#: src/cryptsetup.c:3661 msgid "Device size must be multiple of 512 bytes sector." msgstr "Velikost zařízení musí být násobkem 512bajtových sektorů." -#: src/cryptsetup.c:3668 +#: src/cryptsetup.c:3666 msgid "Invalid max reencryption hotzone size specification." msgstr "Zadána neplatná maximální velikost horké zóny při přešifrování." -#: src/cryptsetup.c:3682 src/cryptsetup.c:3699 src/cryptsetup.c:3711 +#: src/cryptsetup.c:3680 src/cryptsetup.c:3697 src/cryptsetup.c:3709 msgid "Key size must be a multiple of 8 bits" msgstr "Velikost klíče musí být násobkem 8 bitů." -#: src/cryptsetup.c:3689 +#: src/cryptsetup.c:3687 msgid "At most 2 key size specifications can be supplied." msgstr "Zadat lze nejvíce 2 velikosti klíče." # TODO: Pluralize -#: src/cryptsetup.c:3718 src/cryptsetup.c:3729 +#: src/cryptsetup.c:3716 src/cryptsetup.c:3727 #, c-format msgid "At most %d volume key specifications can be supplied." msgstr "Zadat lze nejvíce %d klíčů svazku." -#: src/cryptsetup.c:3741 +#: src/cryptsetup.c:3739 #, c-format msgid "At most %d keyring link specifications can be supplied." msgstr "Zadat lze nejvíce %d klíčenek." -#: src/cryptsetup.c:3750 +#: src/cryptsetup.c:3748 msgid "Maximum device reduce size is 1 GiB." msgstr "Maximální velikost zmenšení zařízení je 1 GiB." -#: src/cryptsetup.c:3753 +#: src/cryptsetup.c:3751 msgid "Reduce size must be multiple of 512 bytes sector." msgstr "Velikost zmenšení musí být násobkem 512bajtových sektorů." -#: src/cryptsetup.c:3770 +#: src/cryptsetup.c:3768 msgid "Option --priority can be only ignore/normal/prefer." msgstr "Přepínač --priority smí mít pouze argument ignore, normal a prefer." -#: src/cryptsetup.c:3789 src/veritysetup.c:568 src/integritysetup.c:650 +#: src/cryptsetup.c:3787 src/veritysetup.c:568 src/integritysetup.c:653 msgid "Show this help message" msgstr "Zobrazí tuto nápovědu" -#: src/cryptsetup.c:3790 src/veritysetup.c:569 src/integritysetup.c:651 +#: src/cryptsetup.c:3788 src/veritysetup.c:569 src/integritysetup.c:654 msgid "Display brief usage" msgstr "Zobrazí stručný návod na použití" -#: src/cryptsetup.c:3791 src/veritysetup.c:570 src/integritysetup.c:652 +#: src/cryptsetup.c:3789 src/veritysetup.c:570 src/integritysetup.c:655 msgid "Print package version" msgstr "Vypíše verzi balíku" -#: src/cryptsetup.c:3802 src/veritysetup.c:581 src/integritysetup.c:663 +#: src/cryptsetup.c:3800 src/veritysetup.c:581 src/integritysetup.c:666 msgid "Help options:" msgstr "Přepínače nápovědy:" -#: src/cryptsetup.c:3825 src/veritysetup.c:602 src/integritysetup.c:683 +#: src/cryptsetup.c:3823 src/veritysetup.c:602 src/integritysetup.c:686 msgid "[OPTION...] " msgstr "[PŘEPÍNAČ…] " -#: src/cryptsetup.c:3834 src/veritysetup.c:611 src/integritysetup.c:694 +#: src/cryptsetup.c:3832 src/veritysetup.c:611 src/integritysetup.c:697 msgid "Argument missing." msgstr "Chybí argument ." -#: src/cryptsetup.c:3913 src/veritysetup.c:642 src/integritysetup.c:725 +#: src/cryptsetup.c:3911 src/veritysetup.c:642 src/integritysetup.c:728 msgid "Unknown action." msgstr "Neznámá akce." -#: src/cryptsetup.c:3931 +#: src/cryptsetup.c:3929 msgid "Option --key-file takes precedence over specified key file argument." msgstr "Přepínač --key-file má přednost před zadaným argumentem souboru s klíčem." -#: src/cryptsetup.c:3937 +#: src/cryptsetup.c:3935 msgid "Only one --key-file argument is allowed." msgstr "Je dovolen pouze jeden argument přepínače --key-file." -#: src/cryptsetup.c:3942 +#: src/cryptsetup.c:3940 msgid "Password-based key derivation function (PBKDF) can be only pbkdf2 or argon2i/argon2id." msgstr "Funkce pro odvození klíče na základě hesla (PBKDF) smí být pouze pbkdf2 nebo argon2i/argon2id." -#: src/cryptsetup.c:3947 +#: src/cryptsetup.c:3945 msgid "PBKDF forced iterations cannot be combined with iteration time option." msgstr "Vynucené iterace PBKDF nelze kombinovat s volnou doby iterací." -#: src/cryptsetup.c:3952 +#: src/cryptsetup.c:3950 msgid "Cannot link volume key to a keyring when keyring is disabled." msgstr "Je-li klíčenka vypnuta, klíč svazku nelze do klíčenky přidat." -#: src/cryptsetup.c:3957 +#: src/cryptsetup.c:3955 msgid "Cannot use keyring key description when keyring is disabled." msgstr "Je-li klíčenka vypnuta, popis klíče z klíčenky nelze použít." -#: src/cryptsetup.c:3962 +#: src/cryptsetup.c:3960 msgid "Inline integrity must be used together with --integrity option." msgstr "Inline integrita musí být použita spolu s přepínačem --integrity." -#: src/cryptsetup.c:3973 +#: src/cryptsetup.c:3971 msgid "Options --keyslot-cipher and --keyslot-key-size must be used together." msgstr "Přepínače --keyslot-cipher a --keyslot-key-size musí být použity spolu." -#: src/cryptsetup.c:3981 +#: src/cryptsetup.c:3979 msgid "No action taken. Invoked with --test-args option.\n" msgstr "Žádný úkon nebude proveden. Zavoláno s přepínačem --test-args.\n" -#: src/cryptsetup.c:3994 +#: src/cryptsetup.c:3992 msgid "Cannot disable metadata locking." msgstr "Zamykání metadata nelze vypnout." @@ -3274,7 +3275,7 @@ msgstr "Příkaz vyžaduje argument nebo přepínač --root-ha msgid " " msgstr " " -#: src/veritysetup.c:485 src/integritysetup.c:550 +#: src/veritysetup.c:485 src/integritysetup.c:553 msgid "format device" msgstr "naformátuje zařízení" @@ -3290,7 +3291,7 @@ msgstr "ověří zařízení" msgid " []" msgstr " []" -#: src/veritysetup.c:489 src/integritysetup.c:553 +#: src/veritysetup.c:489 src/integritysetup.c:556 msgid "show active device status" msgstr "zobrazí stav aktivního zařízení" @@ -3298,7 +3299,7 @@ msgstr "zobrazí stav aktivního zařízení" msgid "" msgstr "" -#: src/veritysetup.c:490 src/integritysetup.c:554 +#: src/veritysetup.c:490 src/integritysetup.c:557 msgid "show on-disk information" msgstr "zobrazí údaje z disku" @@ -3359,24 +3360,24 @@ msgstr "Formátováno s velikostí značky %u%s, vnitřní integrita %s.\n" msgid " (inline hw tags)" msgstr " (inline hardwarové značky)" -#: src/integritysetup.c:297 +#: src/integritysetup.c:303 msgid "Setting recalculate flag is not supported, you may consider using --wipe instead." msgstr "Nastavení příznaku přepočtu není podporováno, místo toho zvažte použití --wipe." -#: src/integritysetup.c:374 src/integritysetup.c:537 +#: src/integritysetup.c:380 src/integritysetup.c:540 #, c-format msgid "Device %s is not a valid INTEGRITY device." msgstr "Zařízení %s není platným zařízením INTEGRITY." -#: src/integritysetup.c:550 src/integritysetup.c:554 +#: src/integritysetup.c:553 src/integritysetup.c:557 msgid "" msgstr "" -#: src/integritysetup.c:551 +#: src/integritysetup.c:554 msgid " " msgstr " " -#: src/integritysetup.c:574 +#: src/integritysetup.c:577 #, c-format msgid "" "\n" @@ -3387,7 +3388,7 @@ msgstr "" " je zařízení, které bude vytvořeno pod %s\n" " je zařízení obsahující data se značkami integrity\n" -#: src/integritysetup.c:579 +#: src/integritysetup.c:582 #, c-format msgid "" "\n" @@ -3401,48 +3402,48 @@ msgstr "" "\tMaximální velikost souboru s klíčem: %d kB\n" # TODO: Pluralize -#: src/integritysetup.c:636 +#: src/integritysetup.c:639 #, c-format msgid "Invalid --%s size. Maximum is %u bytes." msgstr "Neplatná velikost --%s. Maximální je %u bajtů." -#: src/integritysetup.c:739 +#: src/integritysetup.c:742 msgid "Both key file and key size options must be specified." msgstr "Musí být zadány oba přepínače pro soubor s klíčem a velikostí klíče." -#: src/integritysetup.c:743 +#: src/integritysetup.c:746 msgid "Both journal integrity key file and key size options must be specified." msgstr "Musí být zadány oba přepínače pro soubor s klíčem žurnálu a velikostí klíče." -#: src/integritysetup.c:746 +#: src/integritysetup.c:749 msgid "Journal integrity algorithm must be specified if journal integrity key is used." msgstr "Je-li použit klíč integrity žurnálu, musí být zadán algoritmus integrity žurnálu." -#: src/integritysetup.c:750 +#: src/integritysetup.c:753 msgid "Both journal encryption key file and key size options must be specified." msgstr "Musí být zadány oba přepínače pro soubor s šifrovacím klíčem žurnálu a velikostí klíče." -#: src/integritysetup.c:753 +#: src/integritysetup.c:756 msgid "Journal encryption algorithm must be specified if journal encryption key is used." msgstr "Je-li použit šifrovací klíč žurnálu, musí být zadán algoritmus šifrování žurnálu." -#: src/integritysetup.c:757 +#: src/integritysetup.c:760 msgid "Recovery and bitmap mode options are mutually exclusive." msgstr "Přepínače režimu bitmapy a obnovení se vzájemně vylučují." -#: src/integritysetup.c:764 +#: src/integritysetup.c:767 msgid "Journal options cannot be used in bitmap mode." msgstr "Přepínače žurnálu nelze použití spolu s režimem bitmapy." -#: src/integritysetup.c:769 +#: src/integritysetup.c:772 msgid "Bitmap options can be used only in bitmap mode." msgstr "Přepínače bitmapy lze použít jen při režimu bitmapy." -#: src/integritysetup.c:775 +#: src/integritysetup.c:778 msgid "Inline mode cannot be combined with journal or bitmap options." msgstr "Režim inline nelze kombinovat s možnostmi žurnálu a bitmapy." -#: src/integritysetup.c:779 +#: src/integritysetup.c:782 msgid "Inline mode cannot be combined with separate data device." msgstr "Režim inline nelze kombinovat se odděleným zařízením pro data." @@ -4403,6 +4404,10 @@ msgstr "Na stroji není povolena autentizace veřejným klíčem.\n" msgid "Public key authentication error: " msgstr "Chyba při autentizaci veřejným klíčem: " +#, c-format +#~ msgid "Failed to read or validate BITLK FVE metadata copy #%d from %s." +#~ msgstr "Z %2$s nebylo možné přečíst nebo ověřit kopii č. %1$d metadat BITLK FVE." + #~ msgid "Activation of BITLK device with clear key protection is not supported." #~ msgstr "Aktivace zařízení BITLK s ochranou pomocí nešifrovaného klíče není podporována." From 22540e88d1fac8e37480021053719fe70156e745 Mon Sep 17 00:00:00 2001 From: Roland Illig Date: Tue, 31 Mar 2026 11:31:32 +0200 Subject: [PATCH 051/244] po: update de.po (from translationproject.org) --- po/de.po | 736 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 370 insertions(+), 366 deletions(-) diff --git a/po/de.po b/po/de.po index ad7727c36..1355c6983 100644 --- a/po/de.po +++ b/po/de.po @@ -1,14 +1,14 @@ # German translation for the cryptsetup package. # Copyright (C) 2010 Free Software Foundation, Inc. # This file is distributed under the same license as the cryptsetup package. -# Roland Illig , 2010-2025. +# Roland Illig , 2010-2026. # msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.2-rc0\n" +"Project-Id-Version: cryptsetup 2.8.5-rc0\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2025-12-12 18:51+0100\n" -"PO-Revision-Date: 2025-12-14 15:42+0100\n" +"POT-Creation-Date: 2026-03-30 14:18+0200\n" +"PO-Revision-Date: 2026-03-30 21:37+0200\n" "Last-Translator: Roland Illig \n" "Language-Team: German \n" "Language: de\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -"X-Generator: Poedit 3.7\n" +"X-Generator: Poedit 3.9\n" #: lib/libdevmapper.c:419 msgid "Cannot initialize device-mapper, running as non-root user." @@ -186,8 +186,8 @@ msgstr "Gerätegröße ist nicht an logischer Sektorgröße ausgerichtet." msgid "Header detected but device %s is too small." msgstr "Header gefunden, aber Gerät »%s« ist zu klein." -#: lib/setup.c:669 lib/setup.c:3760 lib/setup.c:5227 -#: lib/luks2/luks2_reencrypt.c:3945 lib/luks2/luks2_reencrypt.c:4434 +#: lib/setup.c:669 lib/setup.c:3760 lib/setup.c:5238 +#: lib/luks2/luks2_reencrypt.c:3948 lib/luks2/luks2_reencrypt.c:4437 msgid "This operation is not supported for this device type." msgstr "Diese Operation wird für diese Geräteart nicht unterstützt." @@ -200,10 +200,10 @@ msgid "Failed to rollback LUKS2 metadata in memory." msgstr "Fehler beim Rückabwickeln der LUKS2-Metadaten im Speicher." #: lib/setup.c:893 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 -#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1782 -#: src/cryptsetup.c:1966 src/cryptsetup.c:2021 src/cryptsetup.c:2219 -#: src/cryptsetup.c:2364 src/cryptsetup.c:2642 src/cryptsetup.c:2955 -#: src/cryptsetup.c:3023 src/utils_reencrypt.c:2281 +#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 +#: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 +#: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2953 +#: src/cryptsetup.c:3021 src/utils_reencrypt.c:2281 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." @@ -220,7 +220,7 @@ msgid "No known cipher specification pattern detected for active device %s." msgstr "Kein bekanntes Verschlüsselungsmuster für aktives Gerät »%s« entdeckt." #: lib/setup.c:1515 lib/setup.c:3507 lib/setup.c:3599 lib/setup.c:3611 -#: lib/setup.c:3783 lib/setup.c:5805 +#: lib/setup.c:3783 lib/setup.c:5816 #, c-format msgid "Device %s is not active." msgstr "Gerät »%s« ist nicht aktiv." @@ -247,7 +247,7 @@ msgid "Detached metadata device is not supported for this crypt type." msgstr "Gerät für separierte Metadaten wird für diese Verschlüsselungsart nicht unterstützt." #: lib/setup.c:1639 lib/setup.c:1887 lib/luks2/luks2_reencrypt.c:3034 -#: src/cryptsetup.c:1494 src/cryptsetup.c:3762 +#: src/cryptsetup.c:1492 src/cryptsetup.c:3760 msgid "Unsupported encryption sector size." msgstr "Nicht unterstützte Sektorengröße für Verschlüsselung." @@ -300,9 +300,9 @@ msgstr "Verschlüsselung »%s-%s« (Schlüsselgröße %zd Bits) ist nicht verfü msgid "WARNING: The device activation will fail, dm-crypt is missing support for requested encryption sector size.\n" msgstr "WARNUNG: Die Geräteaktivierung wird fehlschlagen, dm-crypt fehlt die Unterstützung für die angeforderte Verschlüsselungsgröße.\n" -#: lib/setup.c:2091 lib/setup.c:2458 lib/setup.c:2520 lib/utils_device.c:896 +#: lib/setup.c:2091 lib/setup.c:2458 lib/setup.c:2520 lib/utils_device.c:906 #: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3073 -#: lib/luks2/luks2_reencrypt.c:4494 +#: lib/luks2/luks2_reencrypt.c:4497 #, c-format msgid "Device %s is too small." msgstr "Gerät »%s« ist zu klein." @@ -460,7 +460,7 @@ msgid "Unsupported parameters on device %s." msgstr "Nicht unterstützte Parameter für Gerät %s." #: lib/setup.c:3521 lib/setup.c:3624 lib/luks2/luks2_reencrypt.c:2928 -#: lib/luks2/luks2_reencrypt.c:3197 lib/luks2/luks2_reencrypt.c:3591 +#: lib/luks2/luks2_reencrypt.c:3197 lib/luks2/luks2_reencrypt.c:3594 #, c-format msgid "Mismatching parameters on device %s." msgstr "Parameter für Gerät %s sind durcheinander." @@ -470,7 +470,7 @@ msgid "Crypt devices mismatch." msgstr "Verschlüsselungsgeräte passen nicht zusammen." #: lib/setup.c:3679 lib/setup.c:3684 lib/luks2/luks2_reencrypt.c:2412 -#: lib/luks2/luks2_reencrypt.c:2944 lib/luks2/luks2_reencrypt.c:4233 +#: lib/luks2/luks2_reencrypt.c:2944 lib/luks2/luks2_reencrypt.c:4236 #, c-format msgid "Failed to reload device %s." msgstr "Gerät »%s« konnte nicht neugeladen werden." @@ -482,8 +482,8 @@ msgid "Failed to suspend device %s." msgstr "Gerät »%s« konnte nicht stillgelegt werden." #: lib/setup.c:3702 lib/luks2/luks2_reencrypt.c:2396 -#: lib/luks2/luks2_reencrypt.c:2979 lib/luks2/luks2_reencrypt.c:4146 -#: lib/luks2/luks2_reencrypt.c:4237 +#: lib/luks2/luks2_reencrypt.c:2979 lib/luks2/luks2_reencrypt.c:4149 +#: lib/luks2/luks2_reencrypt.c:4240 #, c-format msgid "Failed to resume device %s." msgstr "Gerät »%s« konnte nicht fortgesetzt werden." @@ -565,187 +565,187 @@ msgstr "Fehler beim Aufwecken von Gerät »%s« aus dem Ruhezustand." msgid "Failed to unlink volume key from user specified keyring." msgstr "Fehler beim Ablösen des Laufwerkschlüssels vom benutzerspezifischen Schlüsselbund." -#: lib/setup.c:4423 lib/setup.c:5592 +#: lib/setup.c:4423 lib/setup.c:5603 msgid "Failed to link volume key in user defined keyring." msgstr "Fehler beim Verknüpfen des Laufwerkschlüssels im benutzerspezifischen Schlüsselbund." -#: lib/setup.c:4521 src/cryptsetup.c:2723 +#: lib/setup.c:4522 src/cryptsetup.c:2721 #, c-format msgid "Volume %s is not suspended." msgstr "Laufwerk »%s« ist nicht im Ruhezustand." -#: lib/setup.c:4622 lib/setup.c:7265 lib/setup.c:7287 lib/setup.c:7341 -#: src/cryptsetup.c:1858 src/cryptsetup.c:2262 src/cryptsetup.c:2280 +#: lib/setup.c:4633 lib/setup.c:7276 lib/setup.c:7298 lib/setup.c:7352 +#: src/cryptsetup.c:1856 src/cryptsetup.c:2260 src/cryptsetup.c:2278 #: src/utils_reencrypt.c:305 src/utils_reencrypt.c:1966 msgid "Volume key does not match the volume." msgstr "Der Laufwerksschlüssel passt nicht zum Laufwerk." -#: lib/setup.c:4776 +#: lib/setup.c:4787 msgid "Failed to swap new key slot." msgstr "Neues Schlüsselfach konnte nicht ausgewechselt werden." -#: lib/setup.c:4874 +#: lib/setup.c:4885 #, c-format msgid "Key slot %d is invalid." msgstr "Schlüsselfach %d ist ungültig." -#: lib/setup.c:4880 src/cryptsetup.c:1979 src/cryptsetup.c:2439 -#: src/cryptsetup.c:3123 src/cryptsetup.c:3183 +#: lib/setup.c:4891 src/cryptsetup.c:1977 src/cryptsetup.c:2437 +#: src/cryptsetup.c:3121 src/cryptsetup.c:3181 #, c-format msgid "Keyslot %d is not active." msgstr "Schlüsselfach %d ist nicht aktiv." -#: lib/setup.c:4899 +#: lib/setup.c:4910 msgid "Device header overlaps with data area." msgstr "Geräteheader und Datenbereich überlappen sich." -#: lib/setup.c:5120 +#: lib/setup.c:5131 msgid "Reencryption in-progress. Cannot activate device." msgstr "Wiederverschlüsselung läuft bereits. Das Gerät kann nicht aktiviert werden." -#: lib/setup.c:5122 lib/luks2/luks2_json_metadata.c:2888 -#: lib/luks2/luks2_reencrypt.c:3722 +#: lib/setup.c:5133 lib/luks2/luks2_json_metadata.c:2888 +#: lib/luks2/luks2_reencrypt.c:3725 msgid "Failed to get reencryption lock." msgstr "Fehler beim Zugriff auf die Sperre zur Wiederverschlüsselung." -#: lib/setup.c:5144 +#: lib/setup.c:5155 msgid "LUKS2 reencryption recovery using volume key(s) failed." msgstr "Fehler beim Wiederherstellen der LUKS2-Wiederverschlüsselung mittels Laufwerksschlüssel(n)." -#: lib/setup.c:5280 +#: lib/setup.c:5291 #, c-format msgid "Device %s already exists." msgstr "Das Gerät »%s« existiert bereits." -#: lib/setup.c:5287 +#: lib/setup.c:5298 #, c-format msgid "Cannot use device %s, name is invalid or still in use." msgstr "Gerät »%s« kann nicht verwendet werden, da es gerade benutzt wird oder der Name ungültig ist." -#: lib/setup.c:5299 +#: lib/setup.c:5310 msgid "Reencryption volume keys do not match the volume." msgstr "Die Laufwerksschlüssel für die Wiederverschlüsselung passen nicht zum Laufwerk." -#: lib/setup.c:5316 +#: lib/setup.c:5327 msgid "Incorrect volume key specified for plain device." msgstr "Falscher Laufwerksschlüssel für Plain-Gerät angegeben." -#: lib/setup.c:5342 lib/setup.c:5403 +#: lib/setup.c:5353 lib/setup.c:5414 msgid "Device type is not properly initialized." msgstr "Geräteart ist nicht richtig initialisiert." -#: lib/setup.c:5441 +#: lib/setup.c:5452 msgid "Kernel keyring is not supported by the kernel." msgstr "Der Kernel-Schlüsselbund wird vom Kernel nicht unterstützt." -#: lib/setup.c:5445 +#: lib/setup.c:5456 msgid "Kernel keyring missing: required for passing signature to kernel." msgstr "Der Kernel-Schlüsselbund fehlt. Wird benötigt, um die Signatur zum Kernel zu übergeben." -#: lib/setup.c:5500 +#: lib/setup.c:5511 #, c-format msgid "Cannot use keyring key %s." msgstr "Schlüsselringschlüssel »%s« kann nicht verwendet werden." -#: lib/setup.c:5713 +#: lib/setup.c:5724 msgid "Incorrect root hash specified for verity device." msgstr "Falscher Root-Hash-Schlüssel für VERITY-Gerät angegeben." -#: lib/setup.c:5754 lib/setup.c:5779 +#: lib/setup.c:5765 lib/setup.c:5790 msgid "OPAL does not support deferred deactivation." msgstr "OPAL unterstützt verzögertes Deaktivieren nicht." -#: lib/setup.c:5769 lib/setup.c:5800 lib/luks2/luks2_json_metadata.c:2953 +#: lib/setup.c:5780 lib/setup.c:5811 lib/luks2/luks2_json_metadata.c:2953 #: src/utils_reencrypt.c:89 #, c-format msgid "Device %s is still in use." msgstr "Gerät »%s« wird gerade benutzt." -#: lib/setup.c:5787 +#: lib/setup.c:5798 #, c-format msgid "Could not cancel deferred remove from device %s." msgstr "Fehler beim Abbrechen des verzögerten Löschens von Gerät »%s«." -#: lib/setup.c:5809 +#: lib/setup.c:5820 #, c-format msgid "Invalid device %s." msgstr "Ungültiges Gerät »%s«." -#: lib/setup.c:5956 +#: lib/setup.c:5967 msgid "Volume key buffer too small." msgstr "Laufwerks-Schlüsselpuffer zu klein." -#: lib/setup.c:5967 +#: lib/setup.c:5978 msgid "Cannot retrieve volume key for LUKS2 device." msgstr "Fehler beim Ermitteln des Laufwerksschlüssels für LUKS2-Gerät." -#: lib/setup.c:5976 +#: lib/setup.c:5987 msgid "Cannot retrieve volume key for LUKS1 device." msgstr "Fehler beim Ermitteln des Laufwerksschlüssels für LUKS1-Gerät." -#: lib/setup.c:5990 +#: lib/setup.c:6001 msgid "Cannot retrieve volume key for plain device." msgstr "Fehler beim Ermitteln des Laufwerksschlüssels für Plain-Gerät." -#: lib/setup.c:5998 +#: lib/setup.c:6009 msgid "Cannot retrieve root hash for verity device." msgstr "Root-Hash für Verity-Gerät kann nicht ermittelt werden." -#: lib/setup.c:6007 +#: lib/setup.c:6018 msgid "Cannot retrieve volume key for BITLK device." msgstr "Fehler beim Ermitteln des Laufwerksschlüssels für BITLK-Gerät." -#: lib/setup.c:6012 +#: lib/setup.c:6023 msgid "Cannot retrieve volume key for FVAULT2 device." msgstr "Fehler beim Ermitteln des Laufwerksschlüssels für FVAULT2-Gerät." -#: lib/setup.c:6014 +#: lib/setup.c:6025 #, c-format msgid "This operation is not supported for %s crypt device." msgstr "Diese Operation wird für Kryptogerät »%s« nicht unterstützt." -#: lib/setup.c:6199 lib/setup.c:6210 +#: lib/setup.c:6210 lib/setup.c:6221 msgid "Dump operation is not supported for this device type." msgstr "Die Dump-Operation wird für diese Geräteart nicht unterstützt." -#: lib/setup.c:6590 +#: lib/setup.c:6601 #, c-format msgid "Data offset is not multiple of %u bytes." msgstr "Datenoffset ist kein Vielfaches von %u Bytes." -#: lib/setup.c:6898 +#: lib/setup.c:6909 #, c-format msgid "Cannot convert device %s which is still in use." msgstr "Gerät »%s« kann nicht konvertiert werden, da es gerade benutzt wird." -#: lib/setup.c:7206 lib/setup.c:7350 +#: lib/setup.c:7217 lib/setup.c:7361 #, c-format msgid "Failed to assign keyslot %u as the new volume key." msgstr "Schlüsselfach %u konnte nicht dem Laufwerksschlüssel zugeordnet werden." -#: lib/setup.c:7230 +#: lib/setup.c:7241 msgid "Failed to initialize default LUKS2 keyslot parameters." msgstr "Fehler beim Initialisieren der LUKS2-Schlüsselfach-Parameter." -#: lib/setup.c:7236 +#: lib/setup.c:7247 #, c-format msgid "Failed to assign keyslot %d to digest." msgstr "Schlüsselfach %d konnte nicht dem Digest zugeordnet werden." -#: lib/setup.c:7467 +#: lib/setup.c:7478 msgid "Cannot add key slot, all slots disabled and no volume key provided." msgstr "Schlüsselfach kann nicht hinzugefügt werden, da alle Fächer deaktiviert sind und kein Laufwerksschlüssel angegeben wurde." -#: lib/setup.c:7540 lib/verity/verity.c:333 +#: lib/setup.c:7551 lib/verity/verity.c:333 msgid "Failed to load key in kernel keyring." msgstr "Fehler beim Laden des Schlüssels im Kernel-Schlüsselbund." -#: lib/setup.c:7731 +#: lib/setup.c:7742 #, c-format msgid "Could not find keyring described by \"%s\"." msgstr "Schlüsselbund mit der Beschreibung »%s« nicht gefunden." -#: lib/setup.c:7796 +#: lib/setup.c:7807 msgid "Failed to acquire global memory-hard access serialization lock." msgstr "Globale Speicherzugriffsserialisierungssperre konnte nicht angefordert werden." @@ -802,40 +802,45 @@ msgstr "Gerät »%s« ist nicht kompatibel." msgid "Ignoring bogus optimal-io size for data device (%u bytes)." msgstr "Merkwürdige Optimale-Datenübertragungs-Größe für Datengerät (%u Bytes) wird ignoriert." -#: lib/utils_device.c:707 +#: lib/utils_device.c:711 +#, c-format +msgid "Cannot grow %s to % bytes (%s)." +msgstr "Fehler beim Vergrößern von %s auf % Bytes (%s)." + +#: lib/utils_device.c:717 #, c-format msgid "Device %s is too small. Need at least % bytes." msgstr "Gerät »%s« ist zu klein. Mindestens % Bytes erforderlich." -#: lib/utils_device.c:788 +#: lib/utils_device.c:798 #, c-format msgid "Cannot use device %s which is in use (already mapped or mounted)." msgstr "Gerät »%s« kann nicht benutzt werden, da es bereits anderweitig benutzt wird." -#: lib/utils_device.c:792 +#: lib/utils_device.c:802 #, c-format msgid "Cannot use device %s, permission denied." msgstr "Gerät »%s« kann nicht verwendet werden, Zugriff verweigert." -#: lib/utils_device.c:795 +#: lib/utils_device.c:805 #, c-format msgid "Cannot get info about device %s." msgstr "Fehler beim Abrufen der Infos über Gerät »%s«." -#: lib/utils_device.c:818 +#: lib/utils_device.c:828 msgid "Cannot use a loopback device, running as non-root user." msgstr "Das Loopback-Gerät kann nicht benutzt werden, da das Programm nicht mit Root-Rechten läuft." -#: lib/utils_device.c:829 +#: lib/utils_device.c:839 msgid "Attaching loopback device failed (loop device with autoclear flag is required)." msgstr "Anklemmen des Loopback-Geräts fehlgeschlagen (das Loopback-Gerät benötigt den »autoclear«-Schalter)." -#: lib/utils_device.c:877 +#: lib/utils_device.c:887 #, c-format msgid "Requested offset is beyond real size of device %s." msgstr "Der angeforderte Offset ist jenseits der wirklichen Größe des Geräts »%s«." -#: lib/utils_device.c:885 +#: lib/utils_device.c:895 #, c-format msgid "Device %s has zero size." msgstr "Gerät »%s« hat die Größe 0." @@ -979,9 +984,9 @@ msgstr "E/A-Fehler beim Verschlüsseln des Schlüsselfachs." #: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:356 #: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:668 -#: lib/fvault2/fvault2.c:870 lib/verity/verity.c:67 lib/verity/verity.c:183 +#: lib/fvault2/fvault2.c:872 lib/verity/verity.c:67 lib/verity/verity.c:183 #: lib/verity/verity_hash.c:312 lib/verity/verity_hash.c:321 -#: lib/verity/verity_hash.c:341 lib/verity/verity_fec.c:247 +#: lib/verity/verity_hash.c:350 lib/verity/verity_fec.c:247 #: lib/verity/verity_fec.c:259 lib/verity/verity_fec.c:264 #: lib/luks2/luks2_json_metadata.c:1521 src/utils_reencrypt_luks1.c:108 #: src/utils_reencrypt_luks1.c:120 @@ -1127,7 +1132,7 @@ msgstr "LUKS-Verschlüsselungsmodus %s ist ungültig." msgid "LUKS hash %s is invalid." msgstr "LUKS-Hash %s ist ungültig." -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1369 +#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 msgid "No known problems detected for LUKS header." msgstr "Keine bekannten Probleme im LUKS-Header erkannt." @@ -1221,11 +1226,11 @@ msgstr "Maximale Länge der TCRYPT-Passphrase (%zu) überschritten." msgid "PBKDF2 hash algorithm %s not available, skipping." msgstr "Der Hash-Algorithmus »%s« für PBKDF2 wird nicht unterstützt, überspringe diesen Teil." -#: lib/tcrypt/tcrypt.c:608 src/cryptsetup.c:1242 +#: lib/tcrypt/tcrypt.c:608 src/cryptsetup.c:1240 msgid "Required kernel crypto interface not available." msgstr "Die benötigte Crypto-Kernel-Schnittstelle ist nicht verfügbar." -#: lib/tcrypt/tcrypt.c:610 src/cryptsetup.c:1244 +#: lib/tcrypt/tcrypt.c:610 src/cryptsetup.c:1242 msgid "Ensure you have algif_skcipher kernel module loaded." msgstr "Stellen Sie sicher, dass das Kernelmodul »algif_skcipher« geladen ist." @@ -1296,11 +1301,6 @@ msgstr "Nicht unterstützte Sektorengröße %." msgid "Failed to read BITLK header from %s." msgstr "Fehler beim Lesen des BITLK-Headers von »%s«." -#: lib/bitlk/bitlk.c:593 -#, c-format -msgid "Failed to read or validate BITLK FVE metadata copy #%d from %s." -msgstr "Fehler beim Lesen oder Validieren der BITLK-FVE-Metadaten-Kopie Nummer %d von »%s«." - #: lib/bitlk/bitlk.c:603 #, c-format msgid "Failed to read and validate BITLK FVE metadata from %s." @@ -1376,42 +1376,42 @@ msgstr "Diese Operation wird nicht unterstützt." msgid "Unexpected key data size." msgstr "Unerwartete Größe des Datenschlüssels." -#: lib/bitlk/bitlk.c:1431 +#: lib/bitlk/bitlk.c:1442 msgid "This BITLK device is in an unsupported state and cannot be activated." msgstr "Dieses BITLK-Gerät ist in einem nicht unterstützten Zustand und kann daher nicht aktiviert werden." -#: lib/bitlk/bitlk.c:1436 +#: lib/bitlk/bitlk.c:1447 #, c-format msgid "BITLK devices with type '%s' cannot be activated." msgstr "BITLK-Geräte der Art »%s« können nicht aktiviert werden." -#: lib/bitlk/bitlk.c:1475 +#: lib/bitlk/bitlk.c:1486 #, c-format msgid "WARNING: BitLocker volume size % does not match the underlying device size %" msgstr "WARNUNG: BitLocker-Datenträgergröße % stimmt nicht mit der zugrunde liegenden Gerätegröße % überein" -#: lib/bitlk/bitlk.c:1602 +#: lib/bitlk/bitlk.c:1613 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK IV." msgstr "Gerät kann nicht aktiviert werden, dem Kernelmodul dm-crypt fehlt die Unterstützung für BITLK-IV." -#: lib/bitlk/bitlk.c:1606 +#: lib/bitlk/bitlk.c:1617 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK Elephant diffuser." msgstr "Gerät kann nicht aktiviert werden, da dem Kernelmodul dm-crypt die Unterstützung für BITLK-Elephant-Verschleierer fehlt." -#: lib/bitlk/bitlk.c:1610 +#: lib/bitlk/bitlk.c:1621 msgid "Cannot activate device, kernel dm-crypt is missing support for large sector size." msgstr "Gerät kann nicht aktiviert werden, dem Kernelmodul dm-crypt fehlt die Unterstützung für große Sektoren." -#: lib/bitlk/bitlk.c:1614 +#: lib/bitlk/bitlk.c:1625 msgid "Cannot activate device, kernel dm-zero module is missing." msgstr "Gerät kann nicht aktiviert werden, das Kernelmodul dm-crypt existiert nicht." -#: lib/fvault2/fvault2.c:530 +#: lib/fvault2/fvault2.c:532 #, c-format msgid "Could not read %u bytes of volume header." msgstr "Fehler beim Einlesen von %u Bytes aus dem Laufwerks-Kopfbereich." -#: lib/fvault2/fvault2.c:542 +#: lib/fvault2/fvault2.c:544 #, c-format msgid "Unsupported FVAULT2 version %." msgstr "Nicht unterstützte VFAULT2-Version %." @@ -1488,23 +1488,23 @@ msgstr "Fehler beim Verifizieren an Position %." msgid "Hash area overflow." msgstr "Überlauf des Hashbereichs." -#: lib/verity/verity_hash.c:372 +#: lib/verity/verity_hash.c:381 msgid "Verification of data area failed." msgstr "Fehler beim Verifizieren des Datenbereichs." -#: lib/verity/verity_hash.c:377 +#: lib/verity/verity_hash.c:386 msgid "Verification of root hash failed." msgstr "Fehler beim Verifizieren des Root-Hashes." -#: lib/verity/verity_hash.c:383 +#: lib/verity/verity_hash.c:392 msgid "Input/output error while creating hash area." msgstr "E/A-Fehler beim Anlegen des Hash-Bereiches." -#: lib/verity/verity_hash.c:385 +#: lib/verity/verity_hash.c:394 msgid "Creation of hash area failed." msgstr "Fehler beim Anlegen des Hash-Bereiches." -#: lib/verity/verity_hash.c:420 +#: lib/verity/verity_hash.c:429 #, c-format msgid "WARNING: Kernel cannot activate device if data block size exceeds page size (%u)." msgstr "WARNUNG: Kernel kann das Gerät nicht aktivieren, wenn die Datenblockgröße die Seitengröße (%u) übersteigt." @@ -1559,19 +1559,19 @@ msgstr "Fehler beim Ermitteln der Größe von Gerät »%s«." msgid "Incompatible kernel dm-integrity metadata (version %u) detected on %s." msgstr "Inkompatible Metadaten des Kernelmoduls dm-integrity (Version %u) auf %s entdeckt." -#: lib/integrity/integrity.c:304 lib/integrity/integrity.c:488 +#: lib/integrity/integrity.c:308 lib/integrity/integrity.c:492 msgid "Kernel does not support dm-integrity mapping." msgstr "Kernel unterstützt dm-integrity-Zuordnung nicht." -#: lib/integrity/integrity.c:310 +#: lib/integrity/integrity.c:314 msgid "Kernel does not support dm-integrity fixed metadata alignment." msgstr "Kernel unterstützt feste Ausrichtung der Metadaten für dm-integrity nicht." -#: lib/integrity/integrity.c:319 +#: lib/integrity/integrity.c:323 msgid "Kernel refuses to activate insecure recalculate option (see legacy activation options to override)." msgstr "Der Kernel weigert sich, die unsichere Neuberechnungs-Option zu aktivieren. Um dies zu übersteuern, können Sie die veralteten Aktivierungsoptionen nutzen." -#: lib/integrity/integrity.c:325 +#: lib/integrity/integrity.c:329 msgid "Kernel does not support dm-integrity inline mode." msgstr "Kernel unterstützt dm-integrity-Inlinemodus nicht." @@ -1720,7 +1720,7 @@ msgstr "Das zugrundeliegende dm-integrity-Gerät hat unerwartete Datensektoren b msgid "Reencryption in-progress. Cannot deactivate device." msgstr "Wiederverschlüsselung läuft gerade. Das Gerät kann nicht deaktiviert werden." -#: lib/luks2/luks2_json_metadata.c:2897 lib/luks2/luks2_reencrypt.c:4283 +#: lib/luks2/luks2_json_metadata.c:2897 lib/luks2/luks2_reencrypt.c:4286 #, c-format msgid "Failed to replace suspended device %s with dm-error target." msgstr "Das stillgelegte Gerät »%s« mit dm-error-Ziel konnte nicht in den Fehlerzustand gesetzt werden." @@ -1799,7 +1799,7 @@ msgstr "Fehler beim Prüfen des Zustands von Gerät mit der UUID %s." msgid "Unable to convert header with LUKSMETA additional metadata." msgstr "Fehler beim Konvertieren des Headers mit zusätzlichen LUKSMETA-Metadaten." -#: lib/luks2/luks2_luks1_convert.c:590 lib/luks2/luks2_reencrypt.c:3890 +#: lib/luks2/luks2_luks1_convert.c:590 lib/luks2/luks2_reencrypt.c:3893 #, c-format msgid "Unable to use cipher specification %s-%s for LUKS2." msgstr "Die Chiffrierspezifikation %s-%s kann für LUKS2 nicht verwendet werden." @@ -1883,7 +1883,7 @@ msgstr "Gerätegröße muss ein Vielfaches der berechneten Zonenausrichtung (%zu #: lib/luks2/luks2_reencrypt.c:1410 lib/luks2/luks2_reencrypt.c:1596 #: lib/luks2/luks2_reencrypt.c:1679 lib/luks2/luks2_reencrypt.c:1721 -#: lib/luks2/luks2_reencrypt.c:4077 +#: lib/luks2/luks2_reencrypt.c:4080 msgid "Failed to initialize old segment storage wrapper." msgstr "Fehler beim Initialisieren der Umverpackung für den Speicher alter Segmente." @@ -1891,7 +1891,7 @@ msgstr "Fehler beim Initialisieren der Umverpackung für den Speicher alter Segm msgid "Failed to initialize new segment storage wrapper." msgstr "Fehler beim Initialisieren der Umverpackung für den Speicher neuer Segmente." -#: lib/luks2/luks2_reencrypt.c:1550 lib/luks2/luks2_reencrypt.c:4089 +#: lib/luks2/luks2_reencrypt.c:1550 lib/luks2/luks2_reencrypt.c:4092 msgid "Failed to initialize hotzone protection." msgstr "Fehler beim Initialisieren des Hotzone-Schutzes." @@ -1899,7 +1899,7 @@ msgstr "Fehler beim Initialisieren des Hotzone-Schutzes." msgid "Failed to read checksums for current hotzone." msgstr "Fehler beim Lesen der Prüfsummen für die aktuelle Hotzone." -#: lib/luks2/luks2_reencrypt.c:1630 lib/luks2/luks2_reencrypt.c:4104 +#: lib/luks2/luks2_reencrypt.c:1630 lib/luks2/luks2_reencrypt.c:4107 #, c-format msgid "Failed to read hotzone area starting at %." msgstr "Fehler beim Lesen des Hotzone-Bereichs, der bei % beginnt." @@ -1988,8 +1988,8 @@ msgstr "Die reduzierte Datengröße ist größer als die tatsächliche Gerätegr msgid "Data device is not aligned to encryption sector size (% bytes)." msgstr "Datengerät ist nicht an der angeforderten Verschlüsselungs-Sektorgröße (% Bytes) ausgerichtet." -#: lib/luks2/luks2_reencrypt.c:3125 lib/luks2/luks2_reencrypt.c:3640 -#: lib/luks2/luks2_reencrypt.c:3661 +#: lib/luks2/luks2_reencrypt.c:3125 lib/luks2/luks2_reencrypt.c:3643 +#: lib/luks2/luks2_reencrypt.c:3664 #, c-format msgid "Failed to open %s in exclusive mode (already mapped or mounted)." msgstr "Fehler beim exklusiven Öffnen von »%s« (wird bereits anderweitig benutzt)." @@ -1998,123 +1998,123 @@ msgstr "Fehler beim exklusiven Öffnen von »%s« (wird bereits anderweitig benu msgid "Device not marked for LUKS2 reencryption." msgstr "Das Gerät ist nicht für LUKS2-Wiederverschlüsselung markiert." -#: lib/luks2/luks2_reencrypt.c:3349 lib/luks2/luks2_reencrypt.c:4400 +#: lib/luks2/luks2_reencrypt.c:3349 lib/luks2/luks2_reencrypt.c:4403 msgid "Failed to load LUKS2 reencryption context." msgstr "Fehler beim Laden des LUKS2-Wiederverschlüsselungs-Kontextes." -#: lib/luks2/luks2_reencrypt.c:3441 lib/luks2/luks2_reencrypt.c:3781 +#: lib/luks2/luks2_reencrypt.c:3444 lib/luks2/luks2_reencrypt.c:3784 msgid "Device is not in reencryption." msgstr "Das Gerät befindet sich nicht in der Wiederverschlüsselung." -#: lib/luks2/luks2_reencrypt.c:3448 lib/luks2/luks2_reencrypt.c:3788 +#: lib/luks2/luks2_reencrypt.c:3451 lib/luks2/luks2_reencrypt.c:3791 msgid "Reencryption process is already running." msgstr "Der Wiederverschlüsselungs-Vorgang läuft bereits." -#: lib/luks2/luks2_reencrypt.c:3450 lib/luks2/luks2_reencrypt.c:3790 +#: lib/luks2/luks2_reencrypt.c:3453 lib/luks2/luks2_reencrypt.c:3793 msgid "Failed to acquire reencryption lock." msgstr "Fehler beim Zugriff auf die Schreibsperre für die Wiederverschlüsselung." -#: lib/luks2/luks2_reencrypt.c:3468 +#: lib/luks2/luks2_reencrypt.c:3471 msgid "Cannot proceed with reencryption. Run reencryption recovery first." msgstr "Wiederverschlüsselung kann nicht fortgesetzt werden. Führen Sie zuerst die Wiederverschlüsselungs-Wiederherstellung durch." -#: lib/luks2/luks2_reencrypt.c:3604 +#: lib/luks2/luks2_reencrypt.c:3607 msgid "Active device size and requested reencryption size don't match." msgstr "Aktive Gerätegröße und angeforderte Wiederverschlüsselungsgröße passen nicht zusammen." -#: lib/luks2/luks2_reencrypt.c:3618 +#: lib/luks2/luks2_reencrypt.c:3621 msgid "Illegal device size requested in reencryption parameters." msgstr "Ungültige Gerätegröße wurde in den Wiederverschlüsselungsparametern angefordert." -#: lib/luks2/luks2_reencrypt.c:3720 +#: lib/luks2/luks2_reencrypt.c:3723 msgid "Reencryption in-progress. Cannot perform recovery." msgstr "Wiederverschlüsselung läuft bereits. Wiederherstellung ist nicht möglich." -#: lib/luks2/luks2_reencrypt.c:3741 +#: lib/luks2/luks2_reencrypt.c:3744 msgid "LUKS2 reencryption recovery failed." msgstr "Fehler beim Wiederherstellen der LUKS2-Wiederverschlüsselung." -#: lib/luks2/luks2_reencrypt.c:3874 lib/luks2/luks2_reencrypt.c:4353 +#: lib/luks2/luks2_reencrypt.c:3877 lib/luks2/luks2_reencrypt.c:4356 msgid "Failed to initialize reencryption device stack." msgstr "Fehler beim Initialisieren des Gerätestapels für Wiederverschlüsselung." -#: lib/luks2/luks2_reencrypt.c:3907 +#: lib/luks2/luks2_reencrypt.c:3910 msgid "LUKS2 reencryption already initialized in metadata." msgstr "LUKS2-Wiederverschlüsselung ist in den Metadaten bereits initialisiert." -#: lib/luks2/luks2_reencrypt.c:3915 +#: lib/luks2/luks2_reencrypt.c:3918 msgid "Failed to initialize LUKS2 reencryption in metadata." msgstr "LUKS2-Wiederverschlüsselung konnte in den Metadaten nicht initialisiert werden." -#: lib/luks2/luks2_reencrypt.c:3968 lib/luks2/luks2_reencrypt.c:4000 -#: lib/luks2/luks2_reencrypt.c:4030 +#: lib/luks2/luks2_reencrypt.c:3971 lib/luks2/luks2_reencrypt.c:4003 +#: lib/luks2/luks2_reencrypt.c:4033 msgid "Reencryption is not supported for DAX (persistent memory) devices." msgstr "Wiederverschlüsselung wird für DAX-Geräte (persistenten Speicher) nicht unterstützt." -#: lib/luks2/luks2_reencrypt.c:4059 +#: lib/luks2/luks2_reencrypt.c:4062 msgid "Failed to set device segments for next reencryption hotzone." msgstr "Fehler beim Festlegen der Gerätesegmente für die nächste Wiederverschlüsselungs-Hotzone." -#: lib/luks2/luks2_reencrypt.c:4112 +#: lib/luks2/luks2_reencrypt.c:4115 msgid "Failed to write reencryption resilience metadata." msgstr "Fehler beim Schreiben der Metadaten für robuste Wiederverschlüsselung." -#: lib/luks2/luks2_reencrypt.c:4119 +#: lib/luks2/luks2_reencrypt.c:4122 msgid "Decryption failed." msgstr "Fehler beim Entschlüsseln." -#: lib/luks2/luks2_reencrypt.c:4124 +#: lib/luks2/luks2_reencrypt.c:4127 #, c-format msgid "Failed to write hotzone area starting at %." msgstr "Fehler beim Schreiben des Hotzone-Bereichs, der bei % beginnt." -#: lib/luks2/luks2_reencrypt.c:4129 +#: lib/luks2/luks2_reencrypt.c:4132 msgid "Failed to sync data." msgstr "Fehler beim Synchronisieren von Daten." -#: lib/luks2/luks2_reencrypt.c:4137 +#: lib/luks2/luks2_reencrypt.c:4140 msgid "Failed to update metadata after current reencryption hotzone completed." msgstr "Fehler beim Aktualisieren der Metadaten, nachdem die aktuelle Wiederverschlüsselungs-Hotzone beendet wurde." -#: lib/luks2/luks2_reencrypt.c:4226 +#: lib/luks2/luks2_reencrypt.c:4229 msgid "Failed to write LUKS2 metadata." msgstr "Fehler beim Schreiben der LUKS2-Metadaten." -#: lib/luks2/luks2_reencrypt.c:4249 +#: lib/luks2/luks2_reencrypt.c:4252 msgid "Failed to wipe unused data device area." msgstr "Fehler beim gründlichen Löschen des ungenutzten Bereichs auf dem Gerät." -#: lib/luks2/luks2_reencrypt.c:4255 +#: lib/luks2/luks2_reencrypt.c:4258 #, c-format msgid "Failed to remove unused (unbound) keyslot %d." msgstr "Fehler beim Entfernen des ungenutzten (ungebundenen) Schlüsselfachs %d." -#: lib/luks2/luks2_reencrypt.c:4265 +#: lib/luks2/luks2_reencrypt.c:4268 msgid "Failed to remove reencryption keyslot." msgstr "Fehler beim Entfernen des Schlüsselfachs zur Wiederverschlüsselung." -#: lib/luks2/luks2_reencrypt.c:4275 +#: lib/luks2/luks2_reencrypt.c:4278 #, c-format msgid "Fatal error while reencrypting chunk starting at %, % sectors long." msgstr "Schwerwiegender Fehler beim Wiederverschlüsseln des Blocks bei %, % Sektoren lang." -#: lib/luks2/luks2_reencrypt.c:4279 +#: lib/luks2/luks2_reencrypt.c:4282 msgid "Online reencryption failed." msgstr "Fehler bei Online-Wiederverschlüsselung." -#: lib/luks2/luks2_reencrypt.c:4284 +#: lib/luks2/luks2_reencrypt.c:4287 msgid "Do not resume the device unless replaced with error target manually." msgstr "Das Gerät nicht fortsetzen, außer es wird manuell durch das Fehlerziel ersetzt." -#: lib/luks2/luks2_reencrypt.c:4336 +#: lib/luks2/luks2_reencrypt.c:4339 msgid "Cannot proceed with reencryption. Unexpected reencryption status." msgstr "Wiederverschlüsselung kann nicht fortgesetzt werden. Unerwarteter Zustand der Wiederverschlüsselung." -#: lib/luks2/luks2_reencrypt.c:4342 +#: lib/luks2/luks2_reencrypt.c:4345 msgid "Missing or invalid reencrypt context." msgstr "Fehlender oder ungültiger Wiederverschlüsselungs-Kontext." -#: lib/luks2/luks2_reencrypt.c:4376 lib/luks2/luks2_reencrypt.c:4413 +#: lib/luks2/luks2_reencrypt.c:4379 lib/luks2/luks2_reencrypt.c:4416 msgid "Failed to update reencryption context." msgstr "Fehler beim Aktualisieren des Wiederverschlüsselungskontexts." @@ -2150,7 +2150,7 @@ msgstr "Verschlüsselungsparameter für Schlüsselfach wird nur für LUKS2-Gerä msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encryption." msgstr "Verschlüsselungsparameter für Schlüsselfach sind nicht mit LUKS2-Schlüsselfach-Verschlüsselung kompatibel." -#: src/cryptsetup.c:150 src/cryptsetup.c:1180 src/cryptsetup.c:1547 +#: src/cryptsetup.c:150 src/cryptsetup.c:1178 src/cryptsetup.c:1545 #: src/utils_reencrypt.c:1887 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." @@ -2178,7 +2178,7 @@ msgstr "WARNUNG: Der Parameter --hash wird im Plain-Modus ignoriert, wenn eine S msgid "WARNING: The --keyfile-size option is being ignored, the read size is the same as the encryption key size.\n" msgstr "WARNUNG: Die Option --keyfile-size wird ignoriert, da die Lesegröße die gleiche ist wie die Verschlüsselungsschlüsselgröße ist.\n" -#: src/cryptsetup.c:226 src/cryptsetup.c:1377 src/cryptsetup.c:1600 +#: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 #: src/integritysetup.c:188 src/utils_reencrypt.c:2138 #, c-format msgid "Blkid scan failed for %s." @@ -2189,9 +2189,9 @@ msgstr "Fehler beim Blkid-Scan für %s." msgid "Detected device signature(s) on %s. Proceeding further may damage existing data." msgstr "Gerätesignaturen auf »%s« erkannt. Wenn Sie fortfahren, könnte das bestehende Daten beschädigen." -#: src/cryptsetup.c:238 src/cryptsetup.c:1263 src/cryptsetup.c:1311 -#: src/cryptsetup.c:1384 src/cryptsetup.c:1524 src/cryptsetup.c:1612 -#: src/cryptsetup.c:2497 src/cryptsetup.c:2926 src/integritysetup.c:178 +#: src/cryptsetup.c:238 src/cryptsetup.c:1261 src/cryptsetup.c:1309 +#: src/cryptsetup.c:1382 src/cryptsetup.c:1522 src/cryptsetup.c:1610 +#: src/cryptsetup.c:2495 src/cryptsetup.c:2924 src/integritysetup.c:178 #: src/utils_reencrypt.c:111 src/utils_reencrypt.c:457 #: src/utils_reencrypt.c:925 msgid "Operation aborted.\n" @@ -2242,7 +2242,7 @@ msgstr "" "daher ausschließlich an einem sicheren Ort und verschlüsselt\n" "aufbewahrt werden." -#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2522 +#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2520 msgid "" "The header dump with volume key is sensitive information\n" "that allows access to encrypted partition without a passphrase.\n" @@ -2263,15 +2263,15 @@ msgstr "Gerät »%s« ist kein gültiges FVAULT2-Gerät." msgid "Cannot determine volume key size for FVAULT2, please use --key-size option." msgstr "Die Größe des Laufwerksschlüssels für FVAULT2 kann nicht ermittelt werden, bitte nutzen Sie die Option »--key-size«." -#: src/cryptsetup.c:848 src/veritysetup.c:317 src/integritysetup.c:410 +#: src/cryptsetup.c:848 src/veritysetup.c:317 src/integritysetup.c:416 #, c-format msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "Gerät »%s« ist noch aktiv und zum verzögerten Entfernen eingeplant.\n" # upstream: period missing -#: src/cryptsetup.c:881 src/cryptsetup.c:1810 src/cryptsetup.c:2084 -#: src/cryptsetup.c:2231 src/cryptsetup.c:2650 src/cryptsetup.c:2731 -#: src/cryptsetup.c:3264 +#: src/cryptsetup.c:881 src/cryptsetup.c:1808 src/cryptsetup.c:2082 +#: src/cryptsetup.c:2229 src/cryptsetup.c:2648 src/cryptsetup.c:2729 +#: src/cryptsetup.c:3262 #, c-format msgid "Failed to set external tokens path %s." msgstr "Fehler beim Festlegen des externen Tokenpfads »%s«." @@ -2280,47 +2280,47 @@ msgstr "Fehler beim Festlegen des externen Tokenpfads »%s«." msgid "Resize of active device requires volume key in keyring but --disable-keyring option is set." msgstr "Um die Größe von aktiven Geräten zu öndern, muss der Laufwerksschlüssel im Schlüsselbund sein, aber die Option --disable-keyring wurde angegeben." -#: src/cryptsetup.c:1059 +#: src/cryptsetup.c:1057 msgid "Benchmark interrupted." msgstr "Benchmark unterbrochen." -#: src/cryptsetup.c:1080 +#: src/cryptsetup.c:1078 #, c-format msgid "PBKDF2-%-9s N/A\n" msgstr "PBKDF2-%-9s (nicht zutreffend)\n" -#: src/cryptsetup.c:1082 +#: src/cryptsetup.c:1080 #, c-format msgid "PBKDF2-%-9s %7u iterations per second for %zu-bit key\n" msgstr "PBKDF2-%-9s %7u Iterationen pro Sekunde für %zu-Bit-Schlüssel\n" -#: src/cryptsetup.c:1096 +#: src/cryptsetup.c:1094 #, c-format msgid "%-10s N/A\n" msgstr "%-10s (nicht zutreffend)\n" -#: src/cryptsetup.c:1098 +#: src/cryptsetup.c:1096 #, c-format msgid "%-10s %4u iterations, %5u memory, %1u parallel threads (CPUs) for %zu-bit key (requested %u ms time)\n" msgstr "%-10s %4u Iterationen, %5u Speicher, %1u parallele Threads (CPUs) für %zu-Bit-Schlüssel (Zieldauer %u Millisekunden)\n" -#: src/cryptsetup.c:1122 +#: src/cryptsetup.c:1120 msgid "Result of benchmark is not reliable." msgstr "Das Ergebnis des Benchmarks ist nicht zuverlässig." -#: src/cryptsetup.c:1172 +#: src/cryptsetup.c:1170 msgid "# Tests are approximate using memory only (no storage IO).\n" msgstr "# Die Tests sind nur annähernd genau, da sie nicht auf den Datenträger zugreifen.\n" # upstream: the following line should also be translated. This is because the long word "Schlüssel" for "Key" will break the layout, as well as "Verschlüsselung" for "Encryption". # To help the translators, you should provide an example for what goes into the %x placeholders, since I had to make an educated guess that the second %s would be exactly 4 characters long. This is an unnecessary burden for the translators. #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1197 +#: src/cryptsetup.c:1195 #, c-format msgid "#%*s Algorithm | Key | Encryption | Decryption\n" msgstr "#%*s Algorithmus | Schlüssel | Verschlüsselung | Entschlüsselung\n" -#: src/cryptsetup.c:1205 +#: src/cryptsetup.c:1203 #, c-format msgid "Cipher %s (with %i bits key) is not available." msgstr "Verschlüsselung »%s« (mit Schlüsselgröße %i Bits) ist nicht verfügbar." @@ -2328,15 +2328,15 @@ msgstr "Verschlüsselung »%s« (mit Schlüsselgröße %i Bits) ist nicht verfü # upstream: the following line should also be translated. This is because the long word "Schlüssel" for "Key" will break the layout, as well as "Verschlüsselung" for "Encryption". # To help the translators, you should provide an example for what goes into the %x placeholders, since I had to make an educated guess that the second %s would be exactly 4 characters long. This is an unnecessary burden for the translators. #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1224 +#: src/cryptsetup.c:1222 msgid "# Algorithm | Key | Encryption | Decryption\n" msgstr "# Algorithmus | Schlüssel | Verschlüsselung | Entschlüsselung\n" -#: src/cryptsetup.c:1235 +#: src/cryptsetup.c:1233 msgid "N/A" msgstr "N/A" -#: src/cryptsetup.c:1260 +#: src/cryptsetup.c:1258 msgid "" "Unprotected LUKS2 reencryption metadata detected. Please verify the reencryption operation is desirable (see luksDump output)\n" "and continue (upgrade metadata) only if you acknowledge the operation as genuine." @@ -2344,27 +2344,27 @@ msgstr "" "Ungeschützte LUKS2-Metadaten für die Wiederverschlüsselung entdeckt. Bitte überprüfen Sie, ob die Wiederverschlüsselungsoperation erwünscht ist (siehe luksDump-Ausgabe)\n" "und fahren Sie nur fort (Upgrade der Metadaten), wenn Sie den Vorgang als echt anerkennen." -#: src/cryptsetup.c:1266 +#: src/cryptsetup.c:1264 msgid "Enter passphrase to protect and upgrade reencryption metadata: " msgstr "Geben Sie die Passphrase für den Schutz und das Aktualisieren der Metadaten für die Wiederverschlüsselung ein: " -#: src/cryptsetup.c:1310 +#: src/cryptsetup.c:1308 msgid "Really proceed with LUKS2 reencryption recovery?" msgstr "Wirklich mit der Wiederherstellung der LUKS2-Wiederverschlüsselung fortfahren?" -#: src/cryptsetup.c:1319 +#: src/cryptsetup.c:1317 msgid "Enter passphrase to verify reencryption metadata digest: " msgstr "Geben Sie die Passphrase für das Prüfen der Metadaten für die Wiederverschlüsselung ein: " -#: src/cryptsetup.c:1321 +#: src/cryptsetup.c:1319 msgid "Enter passphrase for reencryption recovery: " msgstr "Geben Sie die Passphrase für die Wiederherstellung der Wiederverschlüsselung ein: " -#: src/cryptsetup.c:1383 +#: src/cryptsetup.c:1381 msgid "Really try to repair LUKS device header?" msgstr "Wirklich versuchen, den LUKS-Geräteheader wiederherzustellen?" -#: src/cryptsetup.c:1411 src/integritysetup.c:76 src/integritysetup.c:244 +#: src/cryptsetup.c:1409 src/integritysetup.c:76 src/integritysetup.c:244 msgid "" "\n" "Wipe interrupted." @@ -2372,7 +2372,7 @@ msgstr "" "\n" "Gründlich löschen unterbrochen." -#: src/cryptsetup.c:1416 src/integritysetup.c:81 src/integritysetup.c:283 +#: src/cryptsetup.c:1414 src/integritysetup.c:81 src/integritysetup.c:289 msgid "" "Wiping device to initialize integrity checksum.\n" "You can interrupt this by pressing CTRL+c (rest of not wiped device will contain invalid checksum).\n" @@ -2381,167 +2381,167 @@ msgstr "" "Sie können diesen Vorgang mit Strg+C unterbrechen (der nicht gesäuberte Bereich des Geräts wird dann ungültige Prüfsummen haben).\n" # upstream: it is boring that I have to translate the newline at the end of each of these messages. Translating strings without newlines is much easier and faster. Since it is redundant anyway (all calls to log_err have a trailing newline), this newline should be written implicitly. -#: src/cryptsetup.c:1438 src/integritysetup.c:103 +#: src/cryptsetup.c:1436 src/integritysetup.c:103 #, c-format msgid "Cannot deactivate temporary device %s." msgstr "Fehler beim Deaktivieren des temporären Geräts »%s«." -#: src/cryptsetup.c:1486 +#: src/cryptsetup.c:1484 msgid "OPAL hw-only encryption does not support --cipher and --key-size, options ignored." msgstr "OPAL hw-only Verschlüsselung unterstützt nicht --cipher und --key-size, die Optionen werden ignoriert." -#: src/cryptsetup.c:1499 +#: src/cryptsetup.c:1497 msgid "Integrity option can be used only for LUKS2 format." msgstr "Die Integritätsoption kann nur für das LUKS2-Format verwendet werden." -#: src/cryptsetup.c:1504 src/cryptsetup.c:1584 +#: src/cryptsetup.c:1502 src/cryptsetup.c:1582 msgid "Unsupported LUKS2 metadata size options." msgstr "Nicht unterstützte Optionen für Größe der LUKS-Metadaten." -#: src/cryptsetup.c:1509 +#: src/cryptsetup.c:1507 msgid "OPAL is supported only for LUKS2 format." msgstr "OPAL wird nur für das LUKS2-Format unterstützt." -#: src/cryptsetup.c:1514 +#: src/cryptsetup.c:1512 msgid "Inline hw tags are supported only for LUKS2 format." msgstr "Inline-Hardware-Tokens werden nur für das LUKS2-Format unterstützt." -#: src/cryptsetup.c:1523 +#: src/cryptsetup.c:1521 msgid "Header file does not exist, do you want to create it?" msgstr "Die Headerdatei existiert nicht, soll sie angelegt werden?" -#: src/cryptsetup.c:1531 +#: src/cryptsetup.c:1529 #, c-format msgid "Cannot create header file %s." msgstr "Fehler beim Anlegen der Headerdatei »%s«." -#: src/cryptsetup.c:1557 src/integritysetup.c:126 src/integritysetup.c:141 -#: src/integritysetup.c:150 src/integritysetup.c:322 src/integritysetup.c:330 -#: src/integritysetup.c:340 +#: src/cryptsetup.c:1555 src/integritysetup.c:126 src/integritysetup.c:141 +#: src/integritysetup.c:150 src/integritysetup.c:328 src/integritysetup.c:336 +#: src/integritysetup.c:346 msgid "No known integrity specification pattern detected." msgstr "Kein bekanntes Integritätsspezifikationsmuster entdeckt." -#: src/cryptsetup.c:1559 +#: src/cryptsetup.c:1557 msgid "Cannot use specified integrity key size." msgstr "Die angegebene Integritätsschlüsselgröße kann nicht verwendet werden." -#: src/cryptsetup.c:1577 +#: src/cryptsetup.c:1575 #, c-format msgid "Cannot use %s as on-disk header." msgstr "Das Gerät »%s« kann nicht als Datenträger-Header benutzt werden." -#: src/cryptsetup.c:1606 src/integritysetup.c:172 +#: src/cryptsetup.c:1604 src/integritysetup.c:172 #, c-format msgid "This will overwrite data on %s irrevocably." msgstr "Hiermit werden die Daten auf »%s« unwiderruflich überschrieben." -#: src/cryptsetup.c:1643 +#: src/cryptsetup.c:1641 msgid "OPAL Admin password cannot be empty." msgstr "Das OPAL-Admin-Passwort darf nicht leer sein." -#: src/cryptsetup.c:1657 src/cryptsetup.c:2101 src/cryptsetup.c:2244 -#: src/cryptsetup.c:2379 src/cryptsetup.c:2445 src/utils_reencrypt_luks1.c:428 +#: src/cryptsetup.c:1655 src/cryptsetup.c:2099 src/cryptsetup.c:2242 +#: src/cryptsetup.c:2377 src/cryptsetup.c:2443 src/utils_reencrypt_luks1.c:428 msgid "Failed to set pbkdf parameters." msgstr "Fehler beim Festlegen der PBKDF-Parameter." -#: src/cryptsetup.c:1788 +#: src/cryptsetup.c:1786 msgid "Reduced data offset is allowed only for detached LUKS header." msgstr "Verringerter Datenoffset ist nur für separaten LUKS-Header erlaubt." -#: src/cryptsetup.c:1795 +#: src/cryptsetup.c:1793 #, c-format msgid "LUKS file container %s is too small for activation, there is no remaining space for data." msgstr "LUKS-Datei-Container %s ist zu klein für die Aktivierung, es ist kein Platz mehr für Daten vorhanden." -#: src/cryptsetup.c:1837 src/cryptsetup.c:2250 src/utils_reencrypt.c:277 +#: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:277 #: src/utils_reencrypt.c:369 src/utils_reencrypt.c:1907 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "Die Größe des Laufwerksschlüssels erfordert Schlüsselfächer, bitte nutzen Sie dazu die Option »--key-size«." -#: src/cryptsetup.c:1856 src/utils_reencrypt.c:303 +#: src/cryptsetup.c:1854 src/utils_reencrypt.c:303 msgid "Device requires two volume keys." msgstr "Das Gerät benötigt zwei Laufwerksschlüssel." -#: src/cryptsetup.c:1891 +#: src/cryptsetup.c:1889 msgid "Some specified activation parameters were ignored with OPAL hw-only encryption." msgstr "Einige angegebene Aktivierungsparameter wurden bei der OPAL-nur-Hardware-Verschlüsselung ignoriert." -#: src/cryptsetup.c:1896 +#: src/cryptsetup.c:1894 msgid "Device activated but cannot make flags persistent." msgstr "Gerät aktiviert, aber die Schalter können nicht dauerhaft gespeichert werden." -#: src/cryptsetup.c:1976 src/cryptsetup.c:2044 +#: src/cryptsetup.c:1974 src/cryptsetup.c:2042 #, c-format msgid "Keyslot %d is selected for deletion." msgstr "Schlüsselfach %d zum Löschen ausgewählt." -#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 +#: src/cryptsetup.c:1986 src/cryptsetup.c:2046 msgid "This is the last keyslot. Device will become unusable after purging this key." msgstr "Dies ist das letzte Schlüsselfach. Wenn Sie diesen Schlüssel löschen, wird das Gerät unbrauchbar." -#: src/cryptsetup.c:1989 +#: src/cryptsetup.c:1987 msgid "Enter any remaining passphrase: " msgstr "Geben Sie irgendeine verbleibende Passphrase ein: " -#: src/cryptsetup.c:1990 src/cryptsetup.c:2050 +#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 msgid "Operation aborted, the keyslot was NOT wiped.\n" msgstr "Vorgang abgebrochen, das Schlüsselfach wurde NICHT gesäubert.\n" -#: src/cryptsetup.c:2026 +#: src/cryptsetup.c:2024 msgid "Enter passphrase to be deleted: " msgstr "Geben Sie die zu löschende Passphrase ein: " -#: src/cryptsetup.c:2076 src/cryptsetup.c:2428 src/cryptsetup.c:3088 -#: src/cryptsetup.c:3255 +#: src/cryptsetup.c:2074 src/cryptsetup.c:2426 src/cryptsetup.c:3086 +#: src/cryptsetup.c:3253 #, c-format msgid "Device %s is not a valid LUKS2 device." msgstr "Gerät »%s« ist kein gültiges LUKS2-Gerät." -#: src/cryptsetup.c:2115 src/cryptsetup.c:2314 +#: src/cryptsetup.c:2113 src/cryptsetup.c:2312 msgid "Enter new passphrase for key slot: " msgstr "Geben Sie die neue Passphrase für das Schlüsselfach ein: " -#: src/cryptsetup.c:2149 src/utils_luks.c:342 +#: src/cryptsetup.c:2147 src/utils_luks.c:342 #, c-format msgid "Enter token PIN: " msgstr "Geben Sie die PIN des Tokens ein: " -#: src/cryptsetup.c:2151 src/utils_luks.c:344 +#: src/cryptsetup.c:2149 src/utils_luks.c:344 #, c-format msgid "Enter token %d PIN: " msgstr "Geben Sie die PIN des Tokens %d ein: " -#: src/cryptsetup.c:2210 +#: src/cryptsetup.c:2208 msgid "WARNING: The --key-slot parameter is used for new keyslot number.\n" msgstr "WARNUNG: Der Parameter --key-slot wird für die neue Nummer des Schlüsselfachs verwendet.\n" -#: src/cryptsetup.c:2287 src/utils_reencrypt_luks1.c:1094 +#: src/cryptsetup.c:2285 src/utils_reencrypt_luks1.c:1094 #, c-format msgid "Enter any existing passphrase: " msgstr "Geben Sie irgendeine bestehende Passphrase ein: " -#: src/cryptsetup.c:2383 +#: src/cryptsetup.c:2381 msgid "Enter passphrase to be changed: " msgstr "Geben Sie die zu ändernde Passphrase ein: " -#: src/cryptsetup.c:2399 src/utils_reencrypt_luks1.c:1080 +#: src/cryptsetup.c:2397 src/utils_reencrypt_luks1.c:1080 msgid "Enter new passphrase: " msgstr "Geben Sie die neue Passphrase ein: " -#: src/cryptsetup.c:2449 +#: src/cryptsetup.c:2447 msgid "Enter passphrase for keyslot to be converted: " msgstr "Geben Sie die Passphrase für das umzuwandelnde Schlüsselfach ein: " -#: src/cryptsetup.c:2473 +#: src/cryptsetup.c:2471 msgid "Only one device argument for isLuks operation is supported." msgstr "Die Operation »isLuks« unterstützt nur genau ein Geräte-Argument." -#: src/cryptsetup.c:2578 +#: src/cryptsetup.c:2576 #, c-format msgid "Keyslot %d does not contain unbound key." msgstr "Schlüsselfach %d enthält keinen unverbundenen Schlüssel." -#: src/cryptsetup.c:2583 +#: src/cryptsetup.c:2581 msgid "" "The header dump with unbound key is sensitive information.\n" "This dump should be stored encrypted in a safe place." @@ -2550,52 +2550,52 @@ msgstr "" "Dieser Dump sollte daher ausschließlich an einem sicheren Ort und\n" "verschlüsselt aufbewahrt werden." -#: src/cryptsetup.c:2678 src/cryptsetup.c:2714 +#: src/cryptsetup.c:2676 src/cryptsetup.c:2712 #, c-format msgid "%s is not active %s device name." msgstr "%s ist kein aktives %s-Gerät." -#: src/cryptsetup.c:2709 +#: src/cryptsetup.c:2707 #, c-format msgid "%s is not active LUKS device name or header is missing." msgstr "%s ist kein aktives LUKS-Gerät, oder der Header fehlt." -#: src/cryptsetup.c:2786 src/cryptsetup.c:2805 +#: src/cryptsetup.c:2784 src/cryptsetup.c:2803 msgid "Option --header-backup-file is required." msgstr "Option »--header-backup-file« muss angegeben werden." -#: src/cryptsetup.c:2836 +#: src/cryptsetup.c:2834 #, c-format msgid "%s is not cryptsetup managed device." msgstr "%s ist kein von cryptsetup verwaltetes Gerät." -#: src/cryptsetup.c:2847 +#: src/cryptsetup.c:2845 #, c-format msgid "Refresh is not supported for device type %s" msgstr "Die Geräteart »%s« kann nicht aufgefrischt werden" -#: src/cryptsetup.c:2897 +#: src/cryptsetup.c:2895 #, c-format msgid "Unrecognized metadata device type %s." msgstr "Unbekannte Art »%s« des Metadaten-Geräts." -#: src/cryptsetup.c:2899 +#: src/cryptsetup.c:2897 msgid "Command requires device and mapped name as arguments." msgstr "Dieser Befehl benötigt den Gerätenamen und den zugeordneten Namen als Argumente." -#: src/cryptsetup.c:2917 +#: src/cryptsetup.c:2915 msgid "Enter OPAL PSID: " msgstr "Geben Sie die OPAL-PSID ein: " -#: src/cryptsetup.c:2917 +#: src/cryptsetup.c:2915 msgid "Enter OPAL Admin password: " msgstr "Geben Sie das OPAL-Admin-Passwort ein: " -#: src/cryptsetup.c:2925 +#: src/cryptsetup.c:2923 msgid "WARNING: WHOLE disk will be factory reset and all data will be lost! Continue?" msgstr "Warnung: Der GESAMTE Datenträger wird auf die Werkseinstellungen zurückgesetzt, und alle Daten gehen verloren. Fortsetzen?" -#: src/cryptsetup.c:2968 +#: src/cryptsetup.c:2966 #, c-format msgid "" "This operation will erase all keyslots on device %s.\n" @@ -2604,363 +2604,363 @@ msgstr "" "Diese Operation wird alle Schlüsselfächer auf Gerät »%s« löschen.\n" "Dadurch wird das Gerät unbrauchbar." -#: src/cryptsetup.c:2975 +#: src/cryptsetup.c:2973 msgid "Operation aborted, keyslots were NOT wiped.\n" msgstr "Vorgang abgebrochen, die Schlüsselfächer wurden NICHT gesäubert.\n" -#: src/cryptsetup.c:3014 +#: src/cryptsetup.c:3012 msgid "Invalid LUKS type, only luks1 and luks2 are supported." msgstr "Invalid LUKS type, only luks1 and luks2 are supported." -#: src/cryptsetup.c:3030 +#: src/cryptsetup.c:3028 #, c-format msgid "Device is already %s type." msgstr "Das Gerät hat bereits den Typ »%s«." -#: src/cryptsetup.c:3037 +#: src/cryptsetup.c:3035 #, c-format msgid "This operation will convert %s to %s format.\n" msgstr "Diese Operation wird für »%s« ins Format »%s« umwandeln.\n" -#: src/cryptsetup.c:3040 +#: src/cryptsetup.c:3038 msgid "Operation aborted, device was NOT converted.\n" msgstr "Vorgang abgebrochen, das Gerät wurde NICHT konvertiert.\n" -#: src/cryptsetup.c:3080 +#: src/cryptsetup.c:3078 msgid "Option --priority, --label or --subsystem is missing." msgstr "Die Option --priority, --label oder --subsystem fehlt." -#: src/cryptsetup.c:3114 src/cryptsetup.c:3154 src/cryptsetup.c:3174 +#: src/cryptsetup.c:3112 src/cryptsetup.c:3152 src/cryptsetup.c:3172 #, c-format msgid "Token %d is invalid." msgstr "Token %d ist ungültig." -#: src/cryptsetup.c:3117 src/cryptsetup.c:3177 +#: src/cryptsetup.c:3115 src/cryptsetup.c:3175 #, c-format msgid "Token %d in use." msgstr "Token %d ist in Benutzung." -#: src/cryptsetup.c:3129 +#: src/cryptsetup.c:3127 #, c-format msgid "Failed to add luks2-keyring token %d." msgstr "Fehler beim Hinzufügen des LUKS2-Schlüsselring-Tokens %d." -#: src/cryptsetup.c:3140 src/cryptsetup.c:3203 +#: src/cryptsetup.c:3138 src/cryptsetup.c:3201 #, c-format msgid "Failed to assign token %d to keyslot %d." msgstr "Token %d kann nicht dem Schlüsselfach %d zugeordnet werden." -#: src/cryptsetup.c:3157 +#: src/cryptsetup.c:3155 #, c-format msgid "Token %d is not in use." msgstr "Token %d wird gerade nicht verwendet." -#: src/cryptsetup.c:3194 +#: src/cryptsetup.c:3192 msgid "Failed to import token from file." msgstr "Token konnte nicht aus der Datei importiert werden." -#: src/cryptsetup.c:3219 +#: src/cryptsetup.c:3217 #, c-format msgid "Failed to get token %d for export." msgstr "Auf Token %d kann nicht für den Export zugegriffen werden." -#: src/cryptsetup.c:3232 +#: src/cryptsetup.c:3230 #, c-format msgid "Token %d is not assigned to keyslot %d." msgstr "Token %d ist nicht dem Schlüsselfach %d zugeordnet." -#: src/cryptsetup.c:3234 src/cryptsetup.c:3241 +#: src/cryptsetup.c:3232 src/cryptsetup.c:3239 #, c-format msgid "Failed to unassign token %d from keyslot %d." msgstr "Token %d kann nicht vom Schlüsselfach %d losgelöst werden." -#: src/cryptsetup.c:3300 +#: src/cryptsetup.c:3298 msgid "Option --tcrypt-hidden, --tcrypt-system or --tcrypt-backup is supported only for TCRYPT device." msgstr "Die Optionen --tcrypt-hidden, --tcrypt-system und --tcrypt-backup sind nur zusammen mit einem TCRYPT-Gerät erlaubt." -#: src/cryptsetup.c:3303 +#: src/cryptsetup.c:3301 msgid "Option --veracrypt or --disable-veracrypt is supported only for TCRYPT device type." msgstr "Die Optionen --veracrypt und --disable-veracrypt werden nur für TCRYPT-kompatible Geräte unterstützt." -#: src/cryptsetup.c:3306 +#: src/cryptsetup.c:3304 msgid "Option --veracrypt-pim is supported only for VeraCrypt compatible devices." msgstr "Die Option --veracrypt-pim wird nur für VeraCrypt-kompatible Geräte unterstützt." -#: src/cryptsetup.c:3310 +#: src/cryptsetup.c:3308 msgid "Option --veracrypt-query-pim is supported only for VeraCrypt compatible devices." msgstr "Die Option --veracrypt-query-pim wird nur für VeraCrypt-kompatible Geräte unterstützt." -#: src/cryptsetup.c:3312 +#: src/cryptsetup.c:3310 msgid "The options --veracrypt-pim and --veracrypt-query-pim are mutually exclusive." msgstr "Die Optionen --veracrypt-pim und --veracrypt-query-pim schließen sich gegenseitig aus." -#: src/cryptsetup.c:3321 +#: src/cryptsetup.c:3319 msgid "Option --persistent is not allowed with --test-passphrase." msgstr "Die Option --persistent ist nicht mit --test-passphrase kombinierbar." -#: src/cryptsetup.c:3324 +#: src/cryptsetup.c:3322 msgid "Options --refresh and --test-passphrase are mutually exclusive." msgstr "Die Optionen --refresh und --test-passphrase schließen sich gegenseitig aus." -#: src/cryptsetup.c:3327 +#: src/cryptsetup.c:3325 msgid "Option --shared is allowed only for open of plain device." msgstr "Die Option --shared ist nur beim beim »open«-Befehl eines Plain-Gerätes erlaubt." -#: src/cryptsetup.c:3330 +#: src/cryptsetup.c:3328 msgid "Option --skip is supported only for open of plain and loopaes devices." msgstr "Die Option --skip ist nur beim Öffnen von plain- und loopaes-Geräten erlaubt." -#: src/cryptsetup.c:3333 +#: src/cryptsetup.c:3331 msgid "Option --offset with open action is only supported for plain and loopaes devices." msgstr "Die Option --offset mit der Aktion Öffnen wird nur für einfache und loopaes-Geräte unterstützt." -#: src/cryptsetup.c:3336 +#: src/cryptsetup.c:3334 msgid "Option --tcrypt-hidden cannot be combined with --allow-discards." msgstr "Die Option --tcrypt-hidden kann nicht mit --allow-discards kombiniert werden." -#: src/cryptsetup.c:3340 +#: src/cryptsetup.c:3338 msgid "Sector size option with open action is supported only for plain devices." msgstr "Die Option \"Sektorgröße\" mit der Aktion \"Öffnen\" wird nur für einfache Geräte unterstützt." -#: src/cryptsetup.c:3344 +#: src/cryptsetup.c:3342 msgid "Large IV sectors option is supported only for opening plain type device with sector size larger than 512 bytes." msgstr "Die Option für große IV-Sektoren wird nur unterstützt, wenn das geöffnete Gerät Sektoren größer als 512 Bytes hat." -#: src/cryptsetup.c:3349 +#: src/cryptsetup.c:3347 msgid "Option --test-passphrase is allowed only for open of LUKS, TCRYPT, BITLK and FVAULT2 devices." msgstr "Die Option --test-passphrase ist nur beim Öffnen von LUKS-, TCRYPT-, BITLK- und FVAULT2-Geräten erlaubt." -#: src/cryptsetup.c:3352 src/cryptsetup.c:3382 +#: src/cryptsetup.c:3350 src/cryptsetup.c:3380 msgid "Options --device-size and --size cannot be combined." msgstr "Die Optionen --device-size und --size können nicht kombiniert werden." -#: src/cryptsetup.c:3355 +#: src/cryptsetup.c:3353 msgid "Option --unbound is allowed only for open of luks device." msgstr "Die Option »--unbound« ist nur beim »open«-Befehl eines LUKS-Gerätes erlaubt." -#: src/cryptsetup.c:3358 +#: src/cryptsetup.c:3356 msgid "Option --unbound cannot be used without --test-passphrase." msgstr "Die Option »--unbound« kann nur in Kombination mit »--test-passphrase« verwendet werden." -#: src/cryptsetup.c:3362 +#: src/cryptsetup.c:3360 msgid "Option --volume-key-keyring cannot be combined with --hash or --volume-key-file." msgstr "Die Option --volume-key-keyring kann nicht mit --hash oder --volume-key-file kombiniert werden." -#: src/cryptsetup.c:3365 +#: src/cryptsetup.c:3363 msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "Beide --volume-key-file-Optionen müssen mit den entsprechenden --key-size-Optionen paarweise auftreten." -#: src/cryptsetup.c:3374 src/veritysetup.c:673 src/integritysetup.c:784 +#: src/cryptsetup.c:3372 src/veritysetup.c:673 src/integritysetup.c:787 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "Die Optionen --cancel-deferred und --deferred können nicht kombiniert werden." -#: src/cryptsetup.c:3390 +#: src/cryptsetup.c:3388 msgid "Option --active-name can be set only for LUKS2 device." msgstr "Die Option »--active-name« ist nur auf LUKS2-Geräte anwendbar." -#: src/cryptsetup.c:3393 +#: src/cryptsetup.c:3391 msgid "Options --active-name and --force-offline-reencrypt cannot be combined." msgstr "Die Optionen »--active-name« und »--force-offline-reencrypt« können nicht kombiniert werden." -#: src/cryptsetup.c:3396 +#: src/cryptsetup.c:3394 msgid "Options --new-volume-key-file and --keep-key cannot be combined." msgstr "Die Optionen --new-volume-key-file und --keep-key können nicht kombiniert werden." -#: src/cryptsetup.c:3399 +#: src/cryptsetup.c:3397 msgid "Options --new-volume-key-keyring and --keep-key cannot be combined." msgstr "Die Optionen --new-volume-key-keyring und --keep-key können nicht kombiniert werden." -#: src/cryptsetup.c:3407 src/cryptsetup.c:3437 +#: src/cryptsetup.c:3405 src/cryptsetup.c:3435 msgid "Keyslot specification is required." msgstr "Das Schlüsselfach muss angegeben werden." -#: src/cryptsetup.c:3415 +#: src/cryptsetup.c:3413 msgid "Options --align-payload and --offset cannot be combined." msgstr "Die Optionen --align-payload und --offset können nicht kombiniert werden." -#: src/cryptsetup.c:3418 +#: src/cryptsetup.c:3416 msgid "Option --integrity-no-wipe can be used only for format action with integrity extension." msgstr "Die Option --integrity-no-wipe ist nur für die »format«-Aktion mit Integritätserweiterung erlaubt." -#: src/cryptsetup.c:3421 +#: src/cryptsetup.c:3419 msgid "Only one of --use-[u]random options is allowed." msgstr "Nur eine der Optionen --use-[u]random ist erlaubt." -#: src/cryptsetup.c:3429 +#: src/cryptsetup.c:3427 msgid "Key size is required with --unbound option." msgstr "Die Option »--unbound« erfordert die Schlüsselgröße." -#: src/cryptsetup.c:3449 +#: src/cryptsetup.c:3447 msgid "Invalid token action." msgstr "Ungültige Token-Aktion." -#: src/cryptsetup.c:3452 +#: src/cryptsetup.c:3450 msgid "--key-description parameter is mandatory for token add action." msgstr "Der Parameter --key-description ist Pflicht für die Aktion »token add«." -#: src/cryptsetup.c:3456 src/cryptsetup.c:3469 +#: src/cryptsetup.c:3454 src/cryptsetup.c:3467 msgid "Action requires specific token. Use --token-id parameter." msgstr "Die Aktion erfordert ein bestimmtes Token. Verwenden Sie den Parameter --token-id." -#: src/cryptsetup.c:3460 +#: src/cryptsetup.c:3458 msgid "Option --unbound is valid only with token add action." msgstr "Die Option »--unbound« kann nur zusammen mit der Aktion zum Hinzufügen eines Tokens verwendet werden." -#: src/cryptsetup.c:3462 +#: src/cryptsetup.c:3460 msgid "Options --key-slot and --unbound cannot be combined." msgstr "Die Optionen --key-slot und --unbound können nicht kombiniert werden." -#: src/cryptsetup.c:3467 +#: src/cryptsetup.c:3465 msgid "Action requires specific keyslot. Use --key-slot parameter." msgstr "Die Aktion erfordert ein bestimmtes Schlüsselfach. Verwenden Sie den Parameter --key-slot." -#: src/cryptsetup.c:3483 +#: src/cryptsetup.c:3481 msgid " [--type ] []" msgstr " [--type ] []" -#: src/cryptsetup.c:3483 src/veritysetup.c:487 src/integritysetup.c:551 +#: src/cryptsetup.c:3481 src/veritysetup.c:487 src/integritysetup.c:554 msgid "open device as " msgstr "Gerät als öffnen" -#: src/cryptsetup.c:3484 src/cryptsetup.c:3485 src/cryptsetup.c:3486 -#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:552 -#: src/integritysetup.c:553 src/integritysetup.c:555 +#: src/cryptsetup.c:3482 src/cryptsetup.c:3483 src/cryptsetup.c:3484 +#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:555 +#: src/integritysetup.c:556 src/integritysetup.c:558 msgid "" msgstr "" -#: src/cryptsetup.c:3484 src/veritysetup.c:488 src/integritysetup.c:552 +#: src/cryptsetup.c:3482 src/veritysetup.c:488 src/integritysetup.c:555 msgid "close device (remove mapping)" msgstr "Gerät schließen (Zuordnung entfernen)" -#: src/cryptsetup.c:3485 src/integritysetup.c:555 +#: src/cryptsetup.c:3483 src/integritysetup.c:558 msgid "resize active device" msgstr "Größe des aktiven Geräts ändern" -#: src/cryptsetup.c:3486 +#: src/cryptsetup.c:3484 msgid "show device status" msgstr "Gerätestatus anzeigen" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3485 msgid "[--cipher ]" msgstr "[--cipher ]" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3485 msgid "benchmark cipher" msgstr "Verschlüsselungsalgorithmus benchmarken" -#: src/cryptsetup.c:3488 src/cryptsetup.c:3489 src/cryptsetup.c:3490 -#: src/cryptsetup.c:3491 src/cryptsetup.c:3492 src/cryptsetup.c:3499 -#: src/cryptsetup.c:3500 src/cryptsetup.c:3501 src/cryptsetup.c:3502 -#: src/cryptsetup.c:3503 src/cryptsetup.c:3504 src/cryptsetup.c:3505 -#: src/cryptsetup.c:3506 src/cryptsetup.c:3507 src/cryptsetup.c:3508 +#: src/cryptsetup.c:3486 src/cryptsetup.c:3487 src/cryptsetup.c:3488 +#: src/cryptsetup.c:3489 src/cryptsetup.c:3490 src/cryptsetup.c:3497 +#: src/cryptsetup.c:3498 src/cryptsetup.c:3499 src/cryptsetup.c:3500 +#: src/cryptsetup.c:3501 src/cryptsetup.c:3502 src/cryptsetup.c:3503 +#: src/cryptsetup.c:3504 src/cryptsetup.c:3505 src/cryptsetup.c:3506 msgid "" msgstr "" -#: src/cryptsetup.c:3488 +#: src/cryptsetup.c:3486 msgid "try to repair on-disk metadata" msgstr "Versuchen, die Metadaten auf dem Datenträger zu reparieren" -#: src/cryptsetup.c:3489 +#: src/cryptsetup.c:3487 msgid "reencrypt LUKS2 device" msgstr "LUKS2-Gerät wiederverschlüsseln" -#: src/cryptsetup.c:3490 +#: src/cryptsetup.c:3488 msgid "erase all keyslots (remove encryption key)" msgstr "Alle Schlüsselfächer löschen (Verschlüsselungsschlüssel entfernen)" -#: src/cryptsetup.c:3491 +#: src/cryptsetup.c:3489 msgid "convert LUKS from/to LUKS2 format" msgstr "Zwischen den Formaten LUKS und LUKS2 umwandeln" -#: src/cryptsetup.c:3492 +#: src/cryptsetup.c:3490 msgid "set permanent configuration options for LUKS2" msgstr "Permanente Konfigurationsoptionen für LUKS2 festlegen" -#: src/cryptsetup.c:3493 src/cryptsetup.c:3494 +#: src/cryptsetup.c:3491 src/cryptsetup.c:3492 msgid " []" msgstr " []" -#: src/cryptsetup.c:3493 +#: src/cryptsetup.c:3491 msgid "formats a LUKS device" msgstr "Ein LUKS-Gerät formatieren" -#: src/cryptsetup.c:3494 +#: src/cryptsetup.c:3492 msgid "add key to LUKS device" msgstr "Schlüssel zu LUKS-Gerät hinzufügen" -#: src/cryptsetup.c:3495 src/cryptsetup.c:3496 src/cryptsetup.c:3497 +#: src/cryptsetup.c:3493 src/cryptsetup.c:3494 src/cryptsetup.c:3495 msgid " []" msgstr " []" -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3493 msgid "removes supplied key or key file from LUKS device" msgstr "Entfernt bereitgestellten Schlüssel oder Schlüsseldatei vom LUKS-Gerät" -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3494 msgid "changes supplied key or key file of LUKS device" msgstr "Ändert den angegebenen Schlüssel oder die Schlüsseldatei des LUKS-Geräts" -#: src/cryptsetup.c:3497 +#: src/cryptsetup.c:3495 msgid "converts a key to new pbkdf parameters" msgstr "Wandelt einen Schlüssel in neue PBKDF-Parameter um" -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3496 msgid " " msgstr " " -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3496 msgid "wipes key with number from LUKS device" msgstr "Löscht Schlüssel mit Nummer vom LUKS-Gerät" -#: src/cryptsetup.c:3499 +#: src/cryptsetup.c:3497 msgid "print UUID of LUKS device" msgstr "UUID des LUKS-Geräts ausgeben" -#: src/cryptsetup.c:3500 +#: src/cryptsetup.c:3498 msgid "tests for LUKS partition header" msgstr "Testet auf Header einer LUKS-Partition" -#: src/cryptsetup.c:3501 +#: src/cryptsetup.c:3499 msgid "dump LUKS partition information" msgstr "LUKS-Partitionsinformationen ausgeben" -#: src/cryptsetup.c:3502 +#: src/cryptsetup.c:3500 msgid "dump TCRYPT device information" msgstr "TCRYPT-Geräteinformationen ausgeben" -#: src/cryptsetup.c:3503 +#: src/cryptsetup.c:3501 msgid "dump BITLK device information" msgstr "BITLK-Geräteinformationen ausgeben" -#: src/cryptsetup.c:3504 +#: src/cryptsetup.c:3502 msgid "dump FVAULT2 device information" msgstr "VFAULT2-Geräteinformationen ausgeben" -#: src/cryptsetup.c:3505 +#: src/cryptsetup.c:3503 msgid "Suspend LUKS device and wipe key (all IOs are frozen)" msgstr "LUKS-Gerät in Ruhezustand versetzen und alle Schlüssel auslöschen (alle IOs werden eingefroren)" -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3504 msgid "Resume suspended LUKS device" msgstr "LUKS-Gerät aus dem Ruhezustand aufwecken" -#: src/cryptsetup.c:3507 +#: src/cryptsetup.c:3505 msgid "Backup LUKS device header and keyslots" msgstr "Header und Schlüsselfächer eines LUKS-Geräts sichern" -#: src/cryptsetup.c:3508 +#: src/cryptsetup.c:3506 msgid "Restore LUKS device header and keyslots" msgstr "Header und Schlüsselfächer eines LUKS-Geräts wiederherstellen" -#: src/cryptsetup.c:3509 +#: src/cryptsetup.c:3507 msgid " " msgstr " " -#: src/cryptsetup.c:3509 +#: src/cryptsetup.c:3507 msgid "Manipulate LUKS2 tokens" msgstr "LUKS2-Token manipulieren" -#: src/cryptsetup.c:3528 src/veritysetup.c:505 src/integritysetup.c:570 +#: src/cryptsetup.c:3526 src/veritysetup.c:505 src/integritysetup.c:573 msgid "" "\n" " is one of:\n" @@ -2968,7 +2968,7 @@ msgstr "" "\n" " ist eine von:\n" -#: src/cryptsetup.c:3534 +#: src/cryptsetup.c:3532 msgid "" "\n" "You can also use old syntax aliases:\n" @@ -2980,7 +2980,7 @@ msgstr "" "\topen: create (plainOpen), luksOpen, loopaesOpen, tcryptOpen, bitlkOpen, fvault2Open\n" "\tclose: remove (plainClose), luksClose, loopaesClose, tcryptClose, bitlkClose, fvault2Close\n" -#: src/cryptsetup.c:3538 +#: src/cryptsetup.c:3536 #, c-format msgid "" "\n" @@ -2995,7 +2995,7 @@ msgstr "" " ist die Nummer des zu verändernden LUKS-Schlüsselfachs\n" " optionale Schlüsseldatei für den neuen Schlüssel der »luksAddKey«-Aktion\n" -#: src/cryptsetup.c:3545 +#: src/cryptsetup.c:3543 #, c-format msgid "" "\n" @@ -3004,7 +3004,7 @@ msgstr "" "\n" "Vorgegebenes festeingebautes Metadatenformat ist %s (für luksFormat-Aktion).\n" -#: src/cryptsetup.c:3550 +#: src/cryptsetup.c:3548 msgid "" "\n" "LUKS2 external token plugin support is enabled.\n" @@ -3012,12 +3012,12 @@ msgstr "" "\n" "Die Plugin-Unterstützung für externe LUKS2-Tokens ist aktiviert.\n" -#: src/cryptsetup.c:3551 +#: src/cryptsetup.c:3549 #, c-format msgid "LUKS2 external token plugin path: %s.\n" msgstr "Pfad des Plugins für externe LUKS2-Token: %s.\n" -#: src/cryptsetup.c:3553 +#: src/cryptsetup.c:3551 msgid "" "\n" "LUKS2 external token plugin support is disabled.\n" @@ -3025,7 +3025,7 @@ msgstr "" "\n" "Die Plugin-Unterstützung für externe LUKS2-Tokens ist deaktiviert.\n" -#: src/cryptsetup.c:3557 +#: src/cryptsetup.c:3555 #, c-format msgid "" "\n" @@ -3042,7 +3042,7 @@ msgstr "" "Vorgabe-PBKDF für LUKS2: %s\n" "\tIterationszeit: %d, benötigter Speicher: %d kB, parallele Threads: %d\n" -#: src/cryptsetup.c:3568 +#: src/cryptsetup.c:3566 #, c-format msgid "" "\n" @@ -3057,122 +3057,122 @@ msgstr "" "\tplain: %s, Schlüssel: %d Bits, Passphrase-Hashen: %s\n" "\tLUKS: %s, Schlüssel: %d Bits, LUKS-Header-Hashen: %s, Zufallszahlengenerator: %s\n" -#: src/cryptsetup.c:3577 +#: src/cryptsetup.c:3575 msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: Standard-Schlüsselgröße mit XTS-Modus (zwei interne Schlüssel) wird verdoppelt.\n" -#: src/cryptsetup.c:3595 src/veritysetup.c:647 src/integritysetup.c:730 +#: src/cryptsetup.c:3593 src/veritysetup.c:647 src/integritysetup.c:733 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: Benötigt %s als Argumente" -#: src/cryptsetup.c:3635 src/utils_reencrypt_luks1.c:1143 +#: src/cryptsetup.c:3633 src/utils_reencrypt_luks1.c:1143 msgid "Key slot is invalid." msgstr "Schlüsselfach ist ungültig." -#: src/cryptsetup.c:3663 +#: src/cryptsetup.c:3661 msgid "Device size must be multiple of 512 bytes sector." msgstr "Die Gerätegröße muss ein Vielfaches von 512-Byte-Sektoren sein." -#: src/cryptsetup.c:3668 +#: src/cryptsetup.c:3666 msgid "Invalid max reencryption hotzone size specification." msgstr "Ungültige Angabe der Maximalgröße für die Wiederverschlüsselungs-Hotzone." -#: src/cryptsetup.c:3682 src/cryptsetup.c:3699 src/cryptsetup.c:3711 +#: src/cryptsetup.c:3680 src/cryptsetup.c:3697 src/cryptsetup.c:3709 msgid "Key size must be a multiple of 8 bits" msgstr "Schlüsselgröße muss ein Vielfaches von 8 Bit sein" -#: src/cryptsetup.c:3689 +#: src/cryptsetup.c:3687 msgid "At most 2 key size specifications can be supplied." msgstr "Es können maximal 2 Schlüsselgrößen angegeben werden." -#: src/cryptsetup.c:3718 src/cryptsetup.c:3729 +#: src/cryptsetup.c:3716 src/cryptsetup.c:3727 #, c-format msgid "At most %d volume key specifications can be supplied." msgstr "Es können maximal %d Laufwerksschlüssel-Angaben verarbeitet werden." -#: src/cryptsetup.c:3741 +#: src/cryptsetup.c:3739 #, c-format msgid "At most %d keyring link specifications can be supplied." msgstr "Es können maximal %d Schlüsselbund-Verknüpfungsangaben verarbeitet werden." -#: src/cryptsetup.c:3750 +#: src/cryptsetup.c:3748 msgid "Maximum device reduce size is 1 GiB." msgstr "Die maximale Verkleinerungsgröße ist 1 GiB." -#: src/cryptsetup.c:3753 +#: src/cryptsetup.c:3751 msgid "Reduce size must be multiple of 512 bytes sector." msgstr "Die verkleinerte Größe muss ein Vielfaches von 512-Byte-Sektoren sein." -#: src/cryptsetup.c:3770 +#: src/cryptsetup.c:3768 msgid "Option --priority can be only ignore/normal/prefer." msgstr "Die Option --priority kann nur »ignore/normal/prefer« sein." -#: src/cryptsetup.c:3789 src/veritysetup.c:568 src/integritysetup.c:650 +#: src/cryptsetup.c:3787 src/veritysetup.c:568 src/integritysetup.c:653 msgid "Show this help message" msgstr "Diese Hilfe anzeigen" -#: src/cryptsetup.c:3790 src/veritysetup.c:569 src/integritysetup.c:651 +#: src/cryptsetup.c:3788 src/veritysetup.c:569 src/integritysetup.c:654 msgid "Display brief usage" msgstr "Kurze Aufrufsyntax anzeigen" -#: src/cryptsetup.c:3791 src/veritysetup.c:570 src/integritysetup.c:652 +#: src/cryptsetup.c:3789 src/veritysetup.c:570 src/integritysetup.c:655 msgid "Print package version" msgstr "Paketversion ausgeben" -#: src/cryptsetup.c:3802 src/veritysetup.c:581 src/integritysetup.c:663 +#: src/cryptsetup.c:3800 src/veritysetup.c:581 src/integritysetup.c:666 msgid "Help options:" msgstr "Hilfe-Optionen:" -#: src/cryptsetup.c:3825 src/veritysetup.c:602 src/integritysetup.c:683 +#: src/cryptsetup.c:3823 src/veritysetup.c:602 src/integritysetup.c:686 msgid "[OPTION...] " msgstr "[OPTION...] " -#: src/cryptsetup.c:3834 src/veritysetup.c:611 src/integritysetup.c:694 +#: src/cryptsetup.c:3832 src/veritysetup.c:611 src/integritysetup.c:697 msgid "Argument missing." msgstr "Argument fehlt." -#: src/cryptsetup.c:3913 src/veritysetup.c:642 src/integritysetup.c:725 +#: src/cryptsetup.c:3911 src/veritysetup.c:642 src/integritysetup.c:728 msgid "Unknown action." msgstr "Unbekannte Aktion." -#: src/cryptsetup.c:3931 +#: src/cryptsetup.c:3929 msgid "Option --key-file takes precedence over specified key file argument." msgstr "Die Option --key-file wirkt stärker als das angegebene Schlüsseldatei-Argument." -#: src/cryptsetup.c:3937 +#: src/cryptsetup.c:3935 msgid "Only one --key-file argument is allowed." msgstr "Die Option --key-file ist nur einmal erlaubt." -#: src/cryptsetup.c:3942 +#: src/cryptsetup.c:3940 msgid "Password-based key derivation function (PBKDF) can be only pbkdf2 or argon2i/argon2id." msgstr "Passwortbasierte Schlüsselableitungsfunktion (PBKDF) kann nur »pbkdf2« oder »argon2i/argon2id« sein." -#: src/cryptsetup.c:3947 +#: src/cryptsetup.c:3945 msgid "PBKDF forced iterations cannot be combined with iteration time option." msgstr "Bei PBKDF darf nur entweder die Anzahl der Durchläufe oder die Zeitbegrenzung angegeben werden." -#: src/cryptsetup.c:3952 +#: src/cryptsetup.c:3950 msgid "Cannot link volume key to a keyring when keyring is disabled." msgstr "Laufwerkschlüssel kann nicht mit einem Schlüsselbund verbunden werden, solange der Schlüsselbund deaktiviert ist." -#: src/cryptsetup.c:3957 +#: src/cryptsetup.c:3955 msgid "Cannot use keyring key description when keyring is disabled." msgstr "Die Beschreibung des Schlüsselbundes kann nicht verwendet werden, wenn der Schlüsselbund deaktiviert ist." -#: src/cryptsetup.c:3962 +#: src/cryptsetup.c:3960 msgid "Inline integrity must be used together with --integrity option." msgstr "Inline-Integrität muss zusammen mit der Option »--integrity« benutzt werden." -#: src/cryptsetup.c:3973 +#: src/cryptsetup.c:3971 msgid "Options --keyslot-cipher and --keyslot-key-size must be used together." msgstr "Die Optionen --keyslot-cipher und --keyslot-keysize können nur zusammen benutzt werden." -#: src/cryptsetup.c:3981 +#: src/cryptsetup.c:3979 msgid "No action taken. Invoked with --test-args option.\n" msgstr "Es wird keine Aktion ausgeführt. Aufgerufen mit der Option --test-args.\n" -#: src/cryptsetup.c:3994 +#: src/cryptsetup.c:3992 msgid "Cannot disable metadata locking." msgstr "Fehler beim Deaktivieren der Metadaten-Dateisperre." @@ -3237,7 +3237,7 @@ msgstr "Der Befehl erfordert die Option oder --root-hash-file als Ar msgid " " msgstr " " -#: src/veritysetup.c:485 src/integritysetup.c:550 +#: src/veritysetup.c:485 src/integritysetup.c:553 msgid "format device" msgstr "Gerät formatieren" @@ -3253,7 +3253,7 @@ msgstr "Gerät verifizieren" msgid " []" msgstr " []" -#: src/veritysetup.c:489 src/integritysetup.c:553 +#: src/veritysetup.c:489 src/integritysetup.c:556 msgid "show active device status" msgstr "Status der aktiven Geräte anzeigen" @@ -3261,7 +3261,7 @@ msgstr "Status der aktiven Geräte anzeigen" msgid "" msgstr "" -#: src/veritysetup.c:490 src/integritysetup.c:554 +#: src/veritysetup.c:490 src/integritysetup.c:557 msgid "show on-disk information" msgstr "Auf dem Datenträger gespeicherte Informationen anzeigen" @@ -3321,24 +3321,24 @@ msgstr "Formatiert mit Etikettgröße %u%s und interner Integrität %s.\n" msgid " (inline hw tags)" msgstr " (Inline-Hardware-Etiketten)" -#: src/integritysetup.c:297 +#: src/integritysetup.c:303 msgid "Setting recalculate flag is not supported, you may consider using --wipe instead." msgstr "Das Setzen der Option »recalculate« wird nicht unterstützt, Sie können stattdessen »--wipe« erwägen." -#: src/integritysetup.c:374 src/integritysetup.c:537 +#: src/integritysetup.c:380 src/integritysetup.c:540 #, c-format msgid "Device %s is not a valid INTEGRITY device." msgstr "Gerät »%s« ist kein gültiges INTEGRITY-Gerät." -#: src/integritysetup.c:550 src/integritysetup.c:554 +#: src/integritysetup.c:553 src/integritysetup.c:557 msgid "" msgstr "" -#: src/integritysetup.c:551 +#: src/integritysetup.c:554 msgid " " msgstr " " -#: src/integritysetup.c:574 +#: src/integritysetup.c:577 #, c-format msgid "" "\n" @@ -3349,7 +3349,7 @@ msgstr "" " ist das Gerät, das unter »%s« angelegt werden soll\n" " ist das Gerät, das die Daten mit Integritätsangaben enthält\n" -#: src/integritysetup.c:579 +#: src/integritysetup.c:582 #, c-format msgid "" "\n" @@ -3362,48 +3362,48 @@ msgstr "" "\tPrüfalgorithmus: %s\n" "\tMaximalgröße der Schlüsseldatei: %d kB\n" -#: src/integritysetup.c:636 +#: src/integritysetup.c:639 #, c-format msgid "Invalid --%s size. Maximum is %u bytes." msgstr "Ungültige Größe für --%s. Maximum ist %u Bytes." -#: src/integritysetup.c:739 +#: src/integritysetup.c:742 msgid "Both key file and key size options must be specified." msgstr "Sowohl die Schlüsseldatei als auch die Schlüsselgröße müssen angegeben werden." -#: src/integritysetup.c:743 +#: src/integritysetup.c:746 msgid "Both journal integrity key file and key size options must be specified." msgstr "Sowohl die Schlüsseldatei als auch die Schlüsselgröße müssen für die Journalintegrität angegeben werden." -#: src/integritysetup.c:746 +#: src/integritysetup.c:749 msgid "Journal integrity algorithm must be specified if journal integrity key is used." msgstr "Wenn ein Integritätsschlüssel für das Journal verwendet wird, muss auch der Integritätsalgorithmus angegeben werden." -#: src/integritysetup.c:750 +#: src/integritysetup.c:753 msgid "Both journal encryption key file and key size options must be specified." msgstr "Sowohl der Verschlüsselungsschlüssel als auch die Schlüsselgröße müssen für die Journalverschlüsselung angegeben werden." -#: src/integritysetup.c:753 +#: src/integritysetup.c:756 msgid "Journal encryption algorithm must be specified if journal encryption key is used." msgstr "Wenn ein Verschlüsselungsschlüssel für das Journal verwendet wird, muss auch der Verschlüsselungsalgorithmus angegeben werden." -#: src/integritysetup.c:757 +#: src/integritysetup.c:760 msgid "Recovery and bitmap mode options are mutually exclusive." msgstr "Die Modi Wiederherstellung und Bitmap schließen sich gegenseitig aus." -#: src/integritysetup.c:764 +#: src/integritysetup.c:767 msgid "Journal options cannot be used in bitmap mode." msgstr "Die Journal-Optionen können nicht im Bitmap-Modus verwendet werden." -#: src/integritysetup.c:769 +#: src/integritysetup.c:772 msgid "Bitmap options can be used only in bitmap mode." msgstr "Die Bitmapoptionen können nur im Bitmapmodus verwendet werden." -#: src/integritysetup.c:775 +#: src/integritysetup.c:778 msgid "Inline mode cannot be combined with journal or bitmap options." msgstr "Der Inline-Modus kann nicht mit den Optionen Journal oder Bitmap kombiniert werden." -#: src/integritysetup.c:779 +#: src/integritysetup.c:782 msgid "Inline mode cannot be combined with separate data device." msgstr "Der Inline-Modus kann nicht mit einem separaten Datengerät kombiniert werden." @@ -4361,6 +4361,10 @@ msgstr "Authentifizierung mit öffentlichem Schlüssel ist auf dem Host nicht er msgid "Public key authentication error: " msgstr "Fehler bei der Authentifizierung mit öffentlichem Schlüssel: " +#, c-format +#~ msgid "Failed to read or validate BITLK FVE metadata copy #%d from %s." +#~ msgstr "Fehler beim Lesen oder Validieren der BITLK-FVE-Metadaten-Kopie Nummer %d von »%s«." + #~ msgid "Activation of BITLK device with clear key protection is not supported." #~ msgstr "Die Aktivierung eines BITLK-Geräts mit klarem Schlüsselschutz wird nicht unterstützt." From 5f002a4f6e5ae3e035ef0d954953f20633955e46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Marchal?= Date: Tue, 31 Mar 2026 11:31:32 +0200 Subject: [PATCH 052/244] po: update fr.po (from translationproject.org) --- po/fr.po | 736 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 370 insertions(+), 366 deletions(-) diff --git a/po/fr.po b/po/fr.po index c01f09f12..5b7cadf6b 100644 --- a/po/fr.po +++ b/po/fr.po @@ -1,16 +1,16 @@ # Messages français pour cryptsetup. -# Copyright (C) 2025 Free Software Foundation, Inc. +# Copyright (C) 2026 Free Software Foundation, Inc. # This file is put in the public domain. # # Solveig , 2009. # Nicolas Provost , 2011. -# Frédéric Marchal , 2025. +# Frédéric Marchal , 2026. msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.2-rc0\n" +"Project-Id-Version: cryptsetup 2.8.5-rc0\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2025-12-12 18:51+0100\n" -"PO-Revision-Date: 2025-12-13 14:51+0100\n" +"POT-Creation-Date: 2026-03-30 14:18+0200\n" +"PO-Revision-Date: 2026-03-30 17:19+0200\n" "Last-Translator: Frédéric Marchal \n" "Language-Team: French \n" "Language: fr\n" @@ -187,8 +187,8 @@ msgstr "La taille du périphérique n'est pas alignée avec la taille d'un bloc msgid "Header detected but device %s is too small." msgstr "En-tête détecté mais le périphérique %s est trop petit." -#: lib/setup.c:669 lib/setup.c:3760 lib/setup.c:5227 -#: lib/luks2/luks2_reencrypt.c:3945 lib/luks2/luks2_reencrypt.c:4434 +#: lib/setup.c:669 lib/setup.c:3760 lib/setup.c:5238 +#: lib/luks2/luks2_reencrypt.c:3948 lib/luks2/luks2_reencrypt.c:4437 msgid "This operation is not supported for this device type." msgstr "Cette opération n'est pas supportée pour ce type de périphérique." @@ -201,10 +201,10 @@ msgid "Failed to rollback LUKS2 metadata in memory." msgstr "Échec lors du retour en arrière des métadonnées LUKS2 en mémoire." #: lib/setup.c:893 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 -#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1782 -#: src/cryptsetup.c:1966 src/cryptsetup.c:2021 src/cryptsetup.c:2219 -#: src/cryptsetup.c:2364 src/cryptsetup.c:2642 src/cryptsetup.c:2955 -#: src/cryptsetup.c:3023 src/utils_reencrypt.c:2281 +#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 +#: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 +#: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2953 +#: src/cryptsetup.c:3021 src/utils_reencrypt.c:2281 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." @@ -221,7 +221,7 @@ msgid "No known cipher specification pattern detected for active device %s." msgstr "Aucun motif connu d'algorithme de chiffrement n'a été détecté pour le périphérique actif %s." #: lib/setup.c:1515 lib/setup.c:3507 lib/setup.c:3599 lib/setup.c:3611 -#: lib/setup.c:3783 lib/setup.c:5805 +#: lib/setup.c:3783 lib/setup.c:5816 #, c-format msgid "Device %s is not active." msgstr "Le périphérique %s n'est pas activé." @@ -248,7 +248,7 @@ msgid "Detached metadata device is not supported for this crypt type." msgstr "Un périphérique avec des métadonnées détachées n'est pas supporté avec ce type de chiffrement." #: lib/setup.c:1639 lib/setup.c:1887 lib/luks2/luks2_reencrypt.c:3034 -#: src/cryptsetup.c:1494 src/cryptsetup.c:3762 +#: src/cryptsetup.c:1492 src/cryptsetup.c:3760 msgid "Unsupported encryption sector size." msgstr "Taille de secteur de chiffrement non supportée." @@ -301,9 +301,9 @@ msgstr "Le chiffrement %s-%s (clé de %zd bits) n'est pas disponible." msgid "WARNING: The device activation will fail, dm-crypt is missing support for requested encryption sector size.\n" msgstr "AVERTISSEMENT: L'activation du périphérique va échouer, dm-crypt ne supporte pas la taille de secteur de chiffrement demandée.\n" -#: lib/setup.c:2091 lib/setup.c:2458 lib/setup.c:2520 lib/utils_device.c:896 +#: lib/setup.c:2091 lib/setup.c:2458 lib/setup.c:2520 lib/utils_device.c:906 #: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3073 -#: lib/luks2/luks2_reencrypt.c:4494 +#: lib/luks2/luks2_reencrypt.c:4497 #, c-format msgid "Device %s is too small." msgstr "Le périphérique %s est trop petit." @@ -461,7 +461,7 @@ msgid "Unsupported parameters on device %s." msgstr "Paramètres non supportés sur le périphérique %s." #: lib/setup.c:3521 lib/setup.c:3624 lib/luks2/luks2_reencrypt.c:2928 -#: lib/luks2/luks2_reencrypt.c:3197 lib/luks2/luks2_reencrypt.c:3591 +#: lib/luks2/luks2_reencrypt.c:3197 lib/luks2/luks2_reencrypt.c:3594 #, c-format msgid "Mismatching parameters on device %s." msgstr "Paramètres non concordants sur le périphérique %s." @@ -471,7 +471,7 @@ msgid "Crypt devices mismatch." msgstr "Désaccord entre les périphériques crypt." #: lib/setup.c:3679 lib/setup.c:3684 lib/luks2/luks2_reencrypt.c:2412 -#: lib/luks2/luks2_reencrypt.c:2944 lib/luks2/luks2_reencrypt.c:4233 +#: lib/luks2/luks2_reencrypt.c:2944 lib/luks2/luks2_reencrypt.c:4236 #, c-format msgid "Failed to reload device %s." msgstr "Impossible de recharger le périphérique %s." @@ -483,8 +483,8 @@ msgid "Failed to suspend device %s." msgstr "Impossible de suspendre le périphérique %s." #: lib/setup.c:3702 lib/luks2/luks2_reencrypt.c:2396 -#: lib/luks2/luks2_reencrypt.c:2979 lib/luks2/luks2_reencrypt.c:4146 -#: lib/luks2/luks2_reencrypt.c:4237 +#: lib/luks2/luks2_reencrypt.c:2979 lib/luks2/luks2_reencrypt.c:4149 +#: lib/luks2/luks2_reencrypt.c:4240 #, c-format msgid "Failed to resume device %s." msgstr "Impossible de redémarrer le périphérique %s." @@ -566,187 +566,187 @@ msgstr "Erreur lors de la remise en service du périphérique %s." msgid "Failed to unlink volume key from user specified keyring." msgstr "Impossible de délier la clé du porte-clé utilisateur spécifié." -#: lib/setup.c:4423 lib/setup.c:5592 +#: lib/setup.c:4423 lib/setup.c:5603 msgid "Failed to link volume key in user defined keyring." msgstr "Impossible de lier la clé de volume dans le porte-clé utilisateur." -#: lib/setup.c:4521 src/cryptsetup.c:2723 +#: lib/setup.c:4522 src/cryptsetup.c:2721 #, c-format msgid "Volume %s is not suspended." msgstr "Le volume %s n'est pas suspendu." -#: lib/setup.c:4622 lib/setup.c:7265 lib/setup.c:7287 lib/setup.c:7341 -#: src/cryptsetup.c:1858 src/cryptsetup.c:2262 src/cryptsetup.c:2280 +#: lib/setup.c:4633 lib/setup.c:7276 lib/setup.c:7298 lib/setup.c:7352 +#: src/cryptsetup.c:1856 src/cryptsetup.c:2260 src/cryptsetup.c:2278 #: src/utils_reencrypt.c:305 src/utils_reencrypt.c:1966 msgid "Volume key does not match the volume." msgstr "Ceci n'est pas la clé du volume." -#: lib/setup.c:4776 +#: lib/setup.c:4787 msgid "Failed to swap new key slot." msgstr "Nouvel emplacement de clé impossible à échanger." -#: lib/setup.c:4874 +#: lib/setup.c:4885 #, c-format msgid "Key slot %d is invalid." msgstr "L'emplacement de clé %d n'est pas valide." -#: lib/setup.c:4880 src/cryptsetup.c:1979 src/cryptsetup.c:2439 -#: src/cryptsetup.c:3123 src/cryptsetup.c:3183 +#: lib/setup.c:4891 src/cryptsetup.c:1977 src/cryptsetup.c:2437 +#: src/cryptsetup.c:3121 src/cryptsetup.c:3181 #, c-format msgid "Keyslot %d is not active." msgstr "L'emplacement de clé %d n'est pas actif." -#: lib/setup.c:4899 +#: lib/setup.c:4910 msgid "Device header overlaps with data area." msgstr "L'en-tête du périphérique recouvre la zone de données." -#: lib/setup.c:5120 +#: lib/setup.c:5131 msgid "Reencryption in-progress. Cannot activate device." msgstr "Re-chiffrement en cours. Impossible d'activer le périphérique." -#: lib/setup.c:5122 lib/luks2/luks2_json_metadata.c:2888 -#: lib/luks2/luks2_reencrypt.c:3722 +#: lib/setup.c:5133 lib/luks2/luks2_json_metadata.c:2888 +#: lib/luks2/luks2_reencrypt.c:3725 msgid "Failed to get reencryption lock." msgstr "Impossible d'obtenir le verrou de re-chiffrement." -#: lib/setup.c:5144 +#: lib/setup.c:5155 msgid "LUKS2 reencryption recovery using volume key(s) failed." msgstr "La récupération du rechiffrement LUKS2 avec la/les clé(s) de volume a échoué." -#: lib/setup.c:5280 +#: lib/setup.c:5291 #, c-format msgid "Device %s already exists." msgstr "Le périphérique %s existe déjà." -#: lib/setup.c:5287 +#: lib/setup.c:5298 #, c-format msgid "Cannot use device %s, name is invalid or still in use." msgstr "Impossible d'utiliser le périphérique %s, le nom est invalide ou est toujours utilisé." -#: lib/setup.c:5299 +#: lib/setup.c:5310 msgid "Reencryption volume keys do not match the volume." msgstr "Les clés de rechiffrement du volume ne correspondent pas au volume." -#: lib/setup.c:5316 +#: lib/setup.c:5327 msgid "Incorrect volume key specified for plain device." msgstr "Clé de volume incorrecte pour le périphérique en clair." -#: lib/setup.c:5342 lib/setup.c:5403 +#: lib/setup.c:5353 lib/setup.c:5414 msgid "Device type is not properly initialized." msgstr "Type de périphérique improprement initialisé." -#: lib/setup.c:5441 +#: lib/setup.c:5452 msgid "Kernel keyring is not supported by the kernel." msgstr "Le porte-clé du noyau n'est pas supporté par ce noyau." -#: lib/setup.c:5445 +#: lib/setup.c:5456 msgid "Kernel keyring missing: required for passing signature to kernel." msgstr "Le porte-clé du noyau est manquant : il est requis pour passer une signature au noyau." -#: lib/setup.c:5500 +#: lib/setup.c:5511 #, c-format msgid "Cannot use keyring key %s." msgstr "Impossible d'utiliser la clé %s du porte clé." -#: lib/setup.c:5713 +#: lib/setup.c:5724 msgid "Incorrect root hash specified for verity device." msgstr "Hachage racine incorrect spécifié pour le périphérique verity." -#: lib/setup.c:5754 lib/setup.c:5779 +#: lib/setup.c:5765 lib/setup.c:5790 msgid "OPAL does not support deferred deactivation." msgstr "OPAL ne supporte pas la désactivation différée." -#: lib/setup.c:5769 lib/setup.c:5800 lib/luks2/luks2_json_metadata.c:2953 +#: lib/setup.c:5780 lib/setup.c:5811 lib/luks2/luks2_json_metadata.c:2953 #: src/utils_reencrypt.c:89 #, c-format msgid "Device %s is still in use." msgstr "Le périphérique %s est toujours occupé." -#: lib/setup.c:5787 +#: lib/setup.c:5798 #, c-format msgid "Could not cancel deferred remove from device %s." msgstr "Impossible d'annuler la suppression différée du périphérique %s." -#: lib/setup.c:5809 +#: lib/setup.c:5820 #, c-format msgid "Invalid device %s." msgstr "Le périphérique %s n'est pas valide." -#: lib/setup.c:5956 +#: lib/setup.c:5967 msgid "Volume key buffer too small." msgstr "Le tampon de la clé du volume est trop petit." -#: lib/setup.c:5967 +#: lib/setup.c:5978 msgid "Cannot retrieve volume key for LUKS2 device." msgstr "Impossible de récupérer la clé du volume pour le périphérique LUKS2." -#: lib/setup.c:5976 +#: lib/setup.c:5987 msgid "Cannot retrieve volume key for LUKS1 device." msgstr "Impossible de récupérer la clé du volume pour le périphérique LUKS1." -#: lib/setup.c:5990 +#: lib/setup.c:6001 msgid "Cannot retrieve volume key for plain device." msgstr "Impossible de récupérer la clé du volume pour ce périphérique de type « plain »." -#: lib/setup.c:5998 +#: lib/setup.c:6009 msgid "Cannot retrieve root hash for verity device." msgstr "Impossible de récupérer le hachage racine pour le périphérique verity." -#: lib/setup.c:6007 +#: lib/setup.c:6018 msgid "Cannot retrieve volume key for BITLK device." msgstr "Impossible de récupérer la clé du volume pour le périphérique BITLK." -#: lib/setup.c:6012 +#: lib/setup.c:6023 msgid "Cannot retrieve volume key for FVAULT2 device." msgstr "Impossible de récupérer la clé du volume pour le périphérique FVAULT2." -#: lib/setup.c:6014 +#: lib/setup.c:6025 #, c-format msgid "This operation is not supported for %s crypt device." msgstr "Cette opération n'est pas possible pour le périphérique chiffré %s." -#: lib/setup.c:6199 lib/setup.c:6210 +#: lib/setup.c:6210 lib/setup.c:6221 msgid "Dump operation is not supported for this device type." msgstr "L'opération de vidage n'est pas supportée pour ce type de périphérique." -#: lib/setup.c:6590 +#: lib/setup.c:6601 #, c-format msgid "Data offset is not multiple of %u bytes." msgstr "Le décalage des données n'est pas un multiple de %u octets." -#: lib/setup.c:6898 +#: lib/setup.c:6909 #, c-format msgid "Cannot convert device %s which is still in use." msgstr "Impossible de convertir le périphérique %s qui est toujours en cours d'utilisation." -#: lib/setup.c:7206 lib/setup.c:7350 +#: lib/setup.c:7217 lib/setup.c:7361 #, c-format msgid "Failed to assign keyslot %u as the new volume key." msgstr "Échec de l'affectation de l'emplacement de clé %u pour la nouvelle clé de volume." -#: lib/setup.c:7230 +#: lib/setup.c:7241 msgid "Failed to initialize default LUKS2 keyslot parameters." msgstr "Échec de l'initialisation des paramètres par défaut des emplacement de clé LUKS2." -#: lib/setup.c:7236 +#: lib/setup.c:7247 #, c-format msgid "Failed to assign keyslot %d to digest." msgstr "Échec de l'affectation de l'emplacement de clé %d aux résumé." -#: lib/setup.c:7467 +#: lib/setup.c:7478 msgid "Cannot add key slot, all slots disabled and no volume key provided." msgstr "Impossible d'ajouter un emplacement de clé, tous les emplacements sont désactivés et aucune clé n'a été fournie pour ce volume." -#: lib/setup.c:7540 lib/verity/verity.c:333 +#: lib/setup.c:7551 lib/verity/verity.c:333 msgid "Failed to load key in kernel keyring." msgstr "Impossible de charger la clé dans le porte-clé du noyau." -#: lib/setup.c:7731 +#: lib/setup.c:7742 #, c-format msgid "Could not find keyring described by \"%s\"." msgstr "Impossible de trouver le porte-clé décrit par « %s »." -#: lib/setup.c:7796 +#: lib/setup.c:7807 msgid "Failed to acquire global memory-hard access serialization lock." msgstr "Erreur lors de l'acquisition du verrou global de sérialisation des accès strictes à la mémoire" @@ -803,40 +803,45 @@ msgstr "Le périphérique %s n'est pas compatible." msgid "Ignoring bogus optimal-io size for data device (%u bytes)." msgstr "La mauvaise taille de optimal-io est ignorée pour le périphérique de données (%u octets)." -#: lib/utils_device.c:707 +#: lib/utils_device.c:711 +#, c-format +msgid "Cannot grow %s to % bytes (%s)." +msgstr "Impossible d'agrandir %s à % octets (%s)." + +#: lib/utils_device.c:717 #, c-format msgid "Device %s is too small. Need at least % bytes." msgstr "Le périphérique %s est trop petit. Il a besoin d'au moins % octets." -#: lib/utils_device.c:788 +#: lib/utils_device.c:798 #, c-format msgid "Cannot use device %s which is in use (already mapped or mounted)." msgstr "Impossible d'utiliser le périphérique %s actuellement utilisé (déjà mappé ou monté)." -#: lib/utils_device.c:792 +#: lib/utils_device.c:802 #, c-format msgid "Cannot use device %s, permission denied." msgstr "Impossible d'utiliser le périphérique %s, permission refusée." -#: lib/utils_device.c:795 +#: lib/utils_device.c:805 #, c-format msgid "Cannot get info about device %s." msgstr "Impossible d'obtenir des informations au sujet du périphérique %s." -#: lib/utils_device.c:818 +#: lib/utils_device.c:828 msgid "Cannot use a loopback device, running as non-root user." msgstr "Impossible d'utiliser un périphérique loopback. Fonctionne comme un utilisateur non-root." -#: lib/utils_device.c:829 +#: lib/utils_device.c:839 msgid "Attaching loopback device failed (loop device with autoclear flag is required)." msgstr "Impossible d'associer le périphérique loopback (le drapeau « autoclear » est requis)." -#: lib/utils_device.c:877 +#: lib/utils_device.c:887 #, c-format msgid "Requested offset is beyond real size of device %s." msgstr "Le décalage demandé est au delà de la taille réelle du périphérique %s." -#: lib/utils_device.c:885 +#: lib/utils_device.c:895 #, c-format msgid "Device %s has zero size." msgstr "Le périphérique %s a une taille nulle." @@ -980,9 +985,9 @@ msgstr "Erreur E/S pendant le chiffrement de l'emplacement de clé." #: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:356 #: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:668 -#: lib/fvault2/fvault2.c:870 lib/verity/verity.c:67 lib/verity/verity.c:183 +#: lib/fvault2/fvault2.c:872 lib/verity/verity.c:67 lib/verity/verity.c:183 #: lib/verity/verity_hash.c:312 lib/verity/verity_hash.c:321 -#: lib/verity/verity_hash.c:341 lib/verity/verity_fec.c:247 +#: lib/verity/verity_hash.c:350 lib/verity/verity_fec.c:247 #: lib/verity/verity_fec.c:259 lib/verity/verity_fec.c:264 #: lib/luks2/luks2_json_metadata.c:1521 src/utils_reencrypt_luks1.c:108 #: src/utils_reencrypt_luks1.c:120 @@ -1127,7 +1132,7 @@ msgstr "Le mode de chiffrement LUKS %s n'est pas valide." msgid "LUKS hash %s is invalid." msgstr "La valeur hachée LUKS %s n'est pas valide." -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1369 +#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 msgid "No known problems detected for LUKS header." msgstr "Aucun problème connu détecté pour l'en-tête LUKS." @@ -1220,11 +1225,11 @@ msgstr "Longueur maximum de la phrase secrète TCRYPT (%zu) dépassée." msgid "PBKDF2 hash algorithm %s not available, skipping." msgstr "L'algorithme de hachage PBKDF2 %s n'est pas supporté, ignoré." -#: lib/tcrypt/tcrypt.c:608 src/cryptsetup.c:1242 +#: lib/tcrypt/tcrypt.c:608 src/cryptsetup.c:1240 msgid "Required kernel crypto interface not available." msgstr "L'interface du noyau requise pour le chiffrement n'est pas disponible." -#: lib/tcrypt/tcrypt.c:610 src/cryptsetup.c:1244 +#: lib/tcrypt/tcrypt.c:610 src/cryptsetup.c:1242 msgid "Ensure you have algif_skcipher kernel module loaded." msgstr "Vérifiez que le module du noyau algif_skcipher est chargé." @@ -1295,11 +1300,6 @@ msgstr "Taille de secteur % non supportée." msgid "Failed to read BITLK header from %s." msgstr "Impossible de lire l'en-tête BITLK depuis %s." -#: lib/bitlk/bitlk.c:593 -#, c-format -msgid "Failed to read or validate BITLK FVE metadata copy #%d from %s." -msgstr "Impossible de lire ou de valider la copie des méta-données BITLK FVE #%d depuis %s." - #: lib/bitlk/bitlk.c:603 #, c-format msgid "Failed to read and validate BITLK FVE metadata from %s." @@ -1375,42 +1375,42 @@ msgstr "Cette opération n'est pas supportée." msgid "Unexpected key data size." msgstr "Taille inattendue pour les données de la clé." -#: lib/bitlk/bitlk.c:1431 +#: lib/bitlk/bitlk.c:1442 msgid "This BITLK device is in an unsupported state and cannot be activated." msgstr "Ce périphérique BITLK est dans un état non supporté et ne peut pas être activé." -#: lib/bitlk/bitlk.c:1436 +#: lib/bitlk/bitlk.c:1447 #, c-format msgid "BITLK devices with type '%s' cannot be activated." msgstr "Les périphériques BITLK avec le type « %s » ne peuvent pas être activés." -#: lib/bitlk/bitlk.c:1475 +#: lib/bitlk/bitlk.c:1486 #, c-format msgid "WARNING: BitLocker volume size % does not match the underlying device size %" msgstr "AVERTISSEMENT: La taille % du volume BitLocker ne correspond pas à la taille % du périphérique sous-jacent" -#: lib/bitlk/bitlk.c:1602 +#: lib/bitlk/bitlk.c:1613 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK IV." msgstr "Impossible d'activer le périphérique car dm-crypt dans le noyau ne supporte pas BITLK IV." -#: lib/bitlk/bitlk.c:1606 +#: lib/bitlk/bitlk.c:1617 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK Elephant diffuser." msgstr "Impossible d'activer le périphérique car dm-crypt dans le noyau ne supporte pas le diffuseur BITLK Elephant." -#: lib/bitlk/bitlk.c:1610 +#: lib/bitlk/bitlk.c:1621 msgid "Cannot activate device, kernel dm-crypt is missing support for large sector size." msgstr "Impossible d'activer le périphérique car dm-crypt dans le noyau ne supporte pas une grande taille de secteur." -#: lib/bitlk/bitlk.c:1614 +#: lib/bitlk/bitlk.c:1625 msgid "Cannot activate device, kernel dm-zero module is missing." msgstr "Impossible d'activer le périphérique car le module dm-zero est manquant dans le noyau." -#: lib/fvault2/fvault2.c:530 +#: lib/fvault2/fvault2.c:532 #, c-format msgid "Could not read %u bytes of volume header." msgstr "Échec à la lecture de %u octets dans l'en-tête du volume." -#: lib/fvault2/fvault2.c:542 +#: lib/fvault2/fvault2.c:544 #, c-format msgid "Unsupported FVAULT2 version %." msgstr "Version FVAULT2 % non supportée." @@ -1487,23 +1487,23 @@ msgstr "La vérification a échoué à la position %." msgid "Hash area overflow." msgstr "Débordement de la zone de hachage." -#: lib/verity/verity_hash.c:372 +#: lib/verity/verity_hash.c:381 msgid "Verification of data area failed." msgstr "La vérification de la zone de données a échoué." -#: lib/verity/verity_hash.c:377 +#: lib/verity/verity_hash.c:386 msgid "Verification of root hash failed." msgstr "La vérification du hachage de la racine a échoué." -#: lib/verity/verity_hash.c:383 +#: lib/verity/verity_hash.c:392 msgid "Input/output error while creating hash area." msgstr "Erreur d'entrée/sortie lors de la création de la zone de hachage." -#: lib/verity/verity_hash.c:385 +#: lib/verity/verity_hash.c:394 msgid "Creation of hash area failed." msgstr "La création de la zone de hachage a échoué." -#: lib/verity/verity_hash.c:420 +#: lib/verity/verity_hash.c:429 #, c-format msgid "WARNING: Kernel cannot activate device if data block size exceeds page size (%u)." msgstr "ATTENTION : Le kernel ne peut pas activer le périphérique si la taille des blocs de données dépasse la taille d'une page (%u)." @@ -1558,19 +1558,19 @@ msgstr "Impossible de déterminer la taille du périphérique %s." msgid "Incompatible kernel dm-integrity metadata (version %u) detected on %s." msgstr "Métadonnées dm-integrity du noyau incompatible (version %u) détectée sur %s." -#: lib/integrity/integrity.c:304 lib/integrity/integrity.c:488 +#: lib/integrity/integrity.c:308 lib/integrity/integrity.c:492 msgid "Kernel does not support dm-integrity mapping." msgstr "Le noyau ne supporte pas les associations de type dm-integrity." -#: lib/integrity/integrity.c:310 +#: lib/integrity/integrity.c:314 msgid "Kernel does not support dm-integrity fixed metadata alignment." msgstr "Le noyau ne supporte pas les alignements de méta-données fixés de dm-integrity." -#: lib/integrity/integrity.c:319 +#: lib/integrity/integrity.c:323 msgid "Kernel refuses to activate insecure recalculate option (see legacy activation options to override)." msgstr "Le noyau refuse d'activer l'option de recalcul non sûre (voyez les options d'activation historique pour outrepasser)." -#: lib/integrity/integrity.c:325 +#: lib/integrity/integrity.c:329 msgid "Kernel does not support dm-integrity inline mode." msgstr "Le noyau ne supporte pas le mode en ligne de dm-integrity." @@ -1719,7 +1719,7 @@ msgstr "Les secteurs de données fournis sont inattendus pour le périphérique msgid "Reencryption in-progress. Cannot deactivate device." msgstr "Re-chiffrement en cours. Le périphérique ne peut être désactivé." -#: lib/luks2/luks2_json_metadata.c:2897 lib/luks2/luks2_reencrypt.c:4283 +#: lib/luks2/luks2_json_metadata.c:2897 lib/luks2/luks2_reencrypt.c:4286 #, c-format msgid "Failed to replace suspended device %s with dm-error target." msgstr "Échec du remplacement du périphérique suspendu %s avec la cible dm-error." @@ -1798,7 +1798,7 @@ msgstr "Ne peut vérifier le statut du périphérique avec le uuid : %s." msgid "Unable to convert header with LUKSMETA additional metadata." msgstr "Impossible de convertir un en-tête avec des métadonnées LUKSMETA supplémentaires." -#: lib/luks2/luks2_luks1_convert.c:590 lib/luks2/luks2_reencrypt.c:3890 +#: lib/luks2/luks2_luks1_convert.c:590 lib/luks2/luks2_reencrypt.c:3893 #, c-format msgid "Unable to use cipher specification %s-%s for LUKS2." msgstr "Impossible d'utiliser la spécification de chiffrement %s-%s pour LUKS2." @@ -1882,7 +1882,7 @@ msgstr "La taille du périphérique doit être un multiple de l'alignement de zo #: lib/luks2/luks2_reencrypt.c:1410 lib/luks2/luks2_reencrypt.c:1596 #: lib/luks2/luks2_reencrypt.c:1679 lib/luks2/luks2_reencrypt.c:1721 -#: lib/luks2/luks2_reencrypt.c:4077 +#: lib/luks2/luks2_reencrypt.c:4080 msgid "Failed to initialize old segment storage wrapper." msgstr "Impossible d'initialiser l'encapsulation pour le stockage de l'ancien segment." @@ -1890,7 +1890,7 @@ msgstr "Impossible d'initialiser l'encapsulation pour le stockage de l'ancien se msgid "Failed to initialize new segment storage wrapper." msgstr "Impossible d'initialiser l'encapsulation pour le stockage du nouveau segment." -#: lib/luks2/luks2_reencrypt.c:1550 lib/luks2/luks2_reencrypt.c:4089 +#: lib/luks2/luks2_reencrypt.c:1550 lib/luks2/luks2_reencrypt.c:4092 msgid "Failed to initialize hotzone protection." msgstr "Impossible d'initialiser la protection des zones chaudes." @@ -1898,7 +1898,7 @@ msgstr "Impossible d'initialiser la protection des zones chaudes." msgid "Failed to read checksums for current hotzone." msgstr "Impossible de lire les sommes de contrôle pour la zone chaude actuelle." -#: lib/luks2/luks2_reencrypt.c:1630 lib/luks2/luks2_reencrypt.c:4104 +#: lib/luks2/luks2_reencrypt.c:1630 lib/luks2/luks2_reencrypt.c:4107 #, c-format msgid "Failed to read hotzone area starting at %." msgstr "Échec de la lecture de la zone chaude démarrant à %." @@ -1987,8 +1987,8 @@ msgstr "La taille des données réduites est plus grande que la taille réelle d msgid "Data device is not aligned to encryption sector size (% bytes)." msgstr "Le périphérique de données n'est pas aligné sur la taille de secteur de chiffrement (% octets)." -#: lib/luks2/luks2_reencrypt.c:3125 lib/luks2/luks2_reencrypt.c:3640 -#: lib/luks2/luks2_reencrypt.c:3661 +#: lib/luks2/luks2_reencrypt.c:3125 lib/luks2/luks2_reencrypt.c:3643 +#: lib/luks2/luks2_reencrypt.c:3664 #, c-format msgid "Failed to open %s in exclusive mode (already mapped or mounted)." msgstr "Erreur lors de l'ouverture de %s en mode exclusif (déjà mappé ou monté)." @@ -1997,124 +1997,124 @@ msgstr "Erreur lors de l'ouverture de %s en mode exclusif (déjà mappé ou mont msgid "Device not marked for LUKS2 reencryption." msgstr "Le périphérique n'est pas marqué pour le rechiffrement LUKS2." -#: lib/luks2/luks2_reencrypt.c:3349 lib/luks2/luks2_reencrypt.c:4400 +#: lib/luks2/luks2_reencrypt.c:3349 lib/luks2/luks2_reencrypt.c:4403 msgid "Failed to load LUKS2 reencryption context." msgstr "Échec du chargement du contexte de rechiffrement LUKS2" -#: lib/luks2/luks2_reencrypt.c:3441 lib/luks2/luks2_reencrypt.c:3781 +#: lib/luks2/luks2_reencrypt.c:3444 lib/luks2/luks2_reencrypt.c:3784 msgid "Device is not in reencryption." msgstr "Le périphérique n'est pas en rechiffrement." -#: lib/luks2/luks2_reencrypt.c:3448 lib/luks2/luks2_reencrypt.c:3788 +#: lib/luks2/luks2_reencrypt.c:3451 lib/luks2/luks2_reencrypt.c:3791 msgid "Reencryption process is already running." msgstr "Le rechiffrement est déjà en cours." -#: lib/luks2/luks2_reencrypt.c:3450 lib/luks2/luks2_reencrypt.c:3790 +#: lib/luks2/luks2_reencrypt.c:3453 lib/luks2/luks2_reencrypt.c:3793 msgid "Failed to acquire reencryption lock." msgstr "Impossible d'acquérir le verrou de rechiffrement." -#: lib/luks2/luks2_reencrypt.c:3468 +#: lib/luks2/luks2_reencrypt.c:3471 msgid "Cannot proceed with reencryption. Run reencryption recovery first." msgstr "Impossible de réaliser le rechiffrement. Exécutez d'abord la récupération du rechiffrement." -#: lib/luks2/luks2_reencrypt.c:3604 +#: lib/luks2/luks2_reencrypt.c:3607 msgid "Active device size and requested reencryption size don't match." msgstr "La taille du périphérique actif et la taille de rechiffrement demandée ne correspondent pas." -#: lib/luks2/luks2_reencrypt.c:3618 +#: lib/luks2/luks2_reencrypt.c:3621 msgid "Illegal device size requested in reencryption parameters." msgstr "Taille de périphérique illégale demandée dans les paramètres de rechiffrement." -#: lib/luks2/luks2_reencrypt.c:3720 +#: lib/luks2/luks2_reencrypt.c:3723 msgid "Reencryption in-progress. Cannot perform recovery." msgstr "Rechiffrement en cours. La récupération ne peut pas être réalisée." -#: lib/luks2/luks2_reencrypt.c:3741 +#: lib/luks2/luks2_reencrypt.c:3744 msgid "LUKS2 reencryption recovery failed." msgstr "La récupération du rechiffrement LUKS2 a échoué." -#: lib/luks2/luks2_reencrypt.c:3874 lib/luks2/luks2_reencrypt.c:4353 +#: lib/luks2/luks2_reencrypt.c:3877 lib/luks2/luks2_reencrypt.c:4356 msgid "Failed to initialize reencryption device stack." msgstr "Impossible d'initialiser la pile du périphérique de rechiffrement." -#: lib/luks2/luks2_reencrypt.c:3907 +#: lib/luks2/luks2_reencrypt.c:3910 msgid "LUKS2 reencryption already initialized in metadata." msgstr "Rechiffrement LUKS2 déjà initialisé dans les métadonnées." -#: lib/luks2/luks2_reencrypt.c:3915 +#: lib/luks2/luks2_reencrypt.c:3918 msgid "Failed to initialize LUKS2 reencryption in metadata." msgstr "Échec de l'initialisation du rechiffrement LUKS2 dans les métadonnées." -#: lib/luks2/luks2_reencrypt.c:3968 lib/luks2/luks2_reencrypt.c:4000 -#: lib/luks2/luks2_reencrypt.c:4030 +#: lib/luks2/luks2_reencrypt.c:3971 lib/luks2/luks2_reencrypt.c:4003 +#: lib/luks2/luks2_reencrypt.c:4033 msgid "Reencryption is not supported for DAX (persistent memory) devices." msgstr "Le rechiffrement n'est pas supporté avec les périphériques DAX (mémoire persistante)." -#: lib/luks2/luks2_reencrypt.c:4059 +#: lib/luks2/luks2_reencrypt.c:4062 msgid "Failed to set device segments for next reencryption hotzone." msgstr "Impossible de définir les segments du périphérique pour le rechiffrement suivant de la zone chaude." -#: lib/luks2/luks2_reencrypt.c:4112 +#: lib/luks2/luks2_reencrypt.c:4115 msgid "Failed to write reencryption resilience metadata." msgstr "Échec lors de l'écriture des métadonnées de la résilience du rechiffrement." -#: lib/luks2/luks2_reencrypt.c:4119 +#: lib/luks2/luks2_reencrypt.c:4122 msgid "Decryption failed." msgstr "Échec du déchiffrement." -#: lib/luks2/luks2_reencrypt.c:4124 +#: lib/luks2/luks2_reencrypt.c:4127 #, c-format msgid "Failed to write hotzone area starting at %." msgstr "Échec de l'écriture de la zone chaude démarrant à %." -#: lib/luks2/luks2_reencrypt.c:4129 +#: lib/luks2/luks2_reencrypt.c:4132 msgid "Failed to sync data." msgstr "Erreur lors de la synchronisation des données." -#: lib/luks2/luks2_reencrypt.c:4137 +#: lib/luks2/luks2_reencrypt.c:4140 msgid "Failed to update metadata after current reencryption hotzone completed." msgstr "Échec de la mise à jour des métadonnées après la fin du rechiffrement de la zone chaude courante." -#: lib/luks2/luks2_reencrypt.c:4226 +#: lib/luks2/luks2_reencrypt.c:4229 msgid "Failed to write LUKS2 metadata." msgstr "Échec lors de l'écriture des métadonnées LUKS2" -#: lib/luks2/luks2_reencrypt.c:4249 +#: lib/luks2/luks2_reencrypt.c:4252 msgid "Failed to wipe unused data device area." msgstr "Impossible d'effacer la zone du périphérique contenant les données inutilisées." -#: lib/luks2/luks2_reencrypt.c:4255 +#: lib/luks2/luks2_reencrypt.c:4258 #, c-format msgid "Failed to remove unused (unbound) keyslot %d." msgstr "Erreur lors de la suppression de l'emplacement de clé inutilisé (unbound) %d." -#: lib/luks2/luks2_reencrypt.c:4265 +#: lib/luks2/luks2_reencrypt.c:4268 msgid "Failed to remove reencryption keyslot." msgstr "Erreur lors de la suppression de l'emplacement de clé de re-chiffrement." -#: lib/luks2/luks2_reencrypt.c:4275 +#: lib/luks2/luks2_reencrypt.c:4278 #, c-format msgid "Fatal error while reencrypting chunk starting at %, % sectors long." msgstr "Erreur fatale en rechiffrant le morceau commençant à % d'une longueur de % secteurs." -#: lib/luks2/luks2_reencrypt.c:4279 +#: lib/luks2/luks2_reencrypt.c:4282 msgid "Online reencryption failed." msgstr "Échec du rechiffrement en-ligne." # Frédéric: Je n'ai pas la moindre idée de ce que le développeur a voulu écrire. Qu'est-ce que "error target" dans ce contexte ? -#: lib/luks2/luks2_reencrypt.c:4284 +#: lib/luks2/luks2_reencrypt.c:4287 msgid "Do not resume the device unless replaced with error target manually." msgstr "Ne pas redémarrer le périphérique à moins qu'il ait été remplacé manuellement par la cible en erreur." -#: lib/luks2/luks2_reencrypt.c:4336 +#: lib/luks2/luks2_reencrypt.c:4339 msgid "Cannot proceed with reencryption. Unexpected reencryption status." msgstr "Impossible de réaliser le rechiffrement. Statut de rechiffrement inattendu." -#: lib/luks2/luks2_reencrypt.c:4342 +#: lib/luks2/luks2_reencrypt.c:4345 msgid "Missing or invalid reencrypt context." msgstr "Contexte de rechiffrement manquant ou invalide." -#: lib/luks2/luks2_reencrypt.c:4376 lib/luks2/luks2_reencrypt.c:4413 +#: lib/luks2/luks2_reencrypt.c:4379 lib/luks2/luks2_reencrypt.c:4416 msgid "Failed to update reencryption context." msgstr "Échec de la mise à jour du contexte de rechiffrement." @@ -2150,7 +2150,7 @@ msgstr "Les paramètres de chiffrement des emplacement de clés peuvent uniqueme msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encryption." msgstr "Les paramètres de chiffrement des emplacement de clés ne sont pas compatibles avec le chiffrement des emplacements de LUKS2." -#: src/cryptsetup.c:150 src/cryptsetup.c:1180 src/cryptsetup.c:1547 +#: src/cryptsetup.c:150 src/cryptsetup.c:1178 src/cryptsetup.c:1545 #: src/utils_reencrypt.c:1887 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." @@ -2178,7 +2178,7 @@ msgstr "ATTENTION: Le paramètre --hash est ignoré en mode non chiffré quand l msgid "WARNING: The --keyfile-size option is being ignored, the read size is the same as the encryption key size.\n" msgstr "ATTENTION: L'option --keyfile-size est ignorée. La taille de lecture est la même que la taille de la clé de chiffrement.\n" -#: src/cryptsetup.c:226 src/cryptsetup.c:1377 src/cryptsetup.c:1600 +#: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 #: src/integritysetup.c:188 src/utils_reencrypt.c:2138 #, c-format msgid "Blkid scan failed for %s." @@ -2189,9 +2189,9 @@ msgstr "L'analyse de blkid a échouée pour %s." msgid "Detected device signature(s) on %s. Proceeding further may damage existing data." msgstr "Signature(s) de périphérique détectée(s) sur %s. Continuer risque d'endommager les données existantes." -#: src/cryptsetup.c:238 src/cryptsetup.c:1263 src/cryptsetup.c:1311 -#: src/cryptsetup.c:1384 src/cryptsetup.c:1524 src/cryptsetup.c:1612 -#: src/cryptsetup.c:2497 src/cryptsetup.c:2926 src/integritysetup.c:178 +#: src/cryptsetup.c:238 src/cryptsetup.c:1261 src/cryptsetup.c:1309 +#: src/cryptsetup.c:1382 src/cryptsetup.c:1522 src/cryptsetup.c:1610 +#: src/cryptsetup.c:2495 src/cryptsetup.c:2924 src/integritysetup.c:178 #: src/utils_reencrypt.c:111 src/utils_reencrypt.c:457 #: src/utils_reencrypt.c:925 msgid "Operation aborted.\n" @@ -2240,7 +2240,7 @@ msgstr "" "sensible qui permet d'accéder à la partition chiffrée sans mot de passe.\n" "Ce contenu devrait toujours être stocké, chiffré, en lieu sûr." -#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2522 +#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2520 msgid "" "The header dump with volume key is sensitive information\n" "that allows access to encrypted partition without a passphrase.\n" @@ -2259,14 +2259,14 @@ msgstr "Le périphérique %s n'est pas un périphérique FVAULT2 valide." msgid "Cannot determine volume key size for FVAULT2, please use --key-size option." msgstr "Impossible de déterminer la taille de la clé de volume pour FVAULT2, veuillez utiliser l'option --key-size." -#: src/cryptsetup.c:848 src/veritysetup.c:317 src/integritysetup.c:410 +#: src/cryptsetup.c:848 src/veritysetup.c:317 src/integritysetup.c:416 #, c-format msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "Le périphérique %s est toujours actif et prévu pour une suppression différée.\n" -#: src/cryptsetup.c:881 src/cryptsetup.c:1810 src/cryptsetup.c:2084 -#: src/cryptsetup.c:2231 src/cryptsetup.c:2650 src/cryptsetup.c:2731 -#: src/cryptsetup.c:3264 +#: src/cryptsetup.c:881 src/cryptsetup.c:1808 src/cryptsetup.c:2082 +#: src/cryptsetup.c:2229 src/cryptsetup.c:2648 src/cryptsetup.c:2729 +#: src/cryptsetup.c:3262 #, c-format msgid "Failed to set external tokens path %s." msgstr "Échec en essayant de définir le chemin %s pour les jetons externes." @@ -2275,59 +2275,59 @@ msgstr "Échec en essayant de définir le chemin %s pour les jetons externes." msgid "Resize of active device requires volume key in keyring but --disable-keyring option is set." msgstr "Le redimensionnement d'un périphérique actif requiert que la clé du volume soit dans le porte-clé mais l'option --disable-keyring est définie." -#: src/cryptsetup.c:1059 +#: src/cryptsetup.c:1057 msgid "Benchmark interrupted." msgstr "Test de performance interrompu." -#: src/cryptsetup.c:1080 +#: src/cryptsetup.c:1078 #, c-format msgid "PBKDF2-%-9s N/A\n" msgstr "PBKDF2-%-9s N/A\n" -#: src/cryptsetup.c:1082 +#: src/cryptsetup.c:1080 #, c-format msgid "PBKDF2-%-9s %7u iterations per second for %zu-bit key\n" msgstr "PBKDF2-%-9s %7u itérations par seconde pour une clé de %zu bits\n" -#: src/cryptsetup.c:1096 +#: src/cryptsetup.c:1094 #, c-format msgid "%-10s N/A\n" msgstr "%-10s N/A\n" -#: src/cryptsetup.c:1098 +#: src/cryptsetup.c:1096 #, c-format msgid "%-10s %4u iterations, %5u memory, %1u parallel threads (CPUs) for %zu-bit key (requested %u ms time)\n" msgstr "%-10s %4u itérations, %5u mémoire, %1u threads parallèles (CPUs) pour une clé de %zu bits (temps de %u ms demandé)\n" -#: src/cryptsetup.c:1122 +#: src/cryptsetup.c:1120 msgid "Result of benchmark is not reliable." msgstr "Le résultat de l'évaluation de performance n'est pas fiable." -#: src/cryptsetup.c:1172 +#: src/cryptsetup.c:1170 msgid "# Tests are approximate using memory only (no storage IO).\n" msgstr "# Tests approximatifs en utilisant uniquement la mémoire (pas de stockage E/S).\n" #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1197 +#: src/cryptsetup.c:1195 #, c-format msgid "#%*s Algorithm | Key | Encryption | Decryption\n" msgstr "#%*s Algorithme | Clé | Chiffrement | Déchiffrement\n" -#: src/cryptsetup.c:1205 +#: src/cryptsetup.c:1203 #, c-format msgid "Cipher %s (with %i bits key) is not available." msgstr "Le chiffrement %s (avec une clé de %i bits) n'est pas disponible." #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1224 +#: src/cryptsetup.c:1222 msgid "# Algorithm | Key | Encryption | Decryption\n" msgstr "# Algorithme | Clé | Chiffrement | Déchiffrement\n" -#: src/cryptsetup.c:1235 +#: src/cryptsetup.c:1233 msgid "N/A" msgstr "N/D" -#: src/cryptsetup.c:1260 +#: src/cryptsetup.c:1258 msgid "" "Unprotected LUKS2 reencryption metadata detected. Please verify the reencryption operation is desirable (see luksDump output)\n" "and continue (upgrade metadata) only if you acknowledge the operation as genuine." @@ -2336,27 +2336,27 @@ msgstr "" "désirable (consultez la sortie de luksDump) et continuez (mise à niveau des métadonnées) uniquement si vous constatez que\n" "l'opération est légitime." -#: src/cryptsetup.c:1266 +#: src/cryptsetup.c:1264 msgid "Enter passphrase to protect and upgrade reencryption metadata: " msgstr "Entrez la phrase secrète pour protéger et mettre à niveau les métadonnées de rechiffrement : " -#: src/cryptsetup.c:1310 +#: src/cryptsetup.c:1308 msgid "Really proceed with LUKS2 reencryption recovery?" msgstr "Réellement procéder à la récupération du rechiffrement LUKS2 ?" -#: src/cryptsetup.c:1319 +#: src/cryptsetup.c:1317 msgid "Enter passphrase to verify reencryption metadata digest: " msgstr "Entrez la phrase secrète pour vérifier le résumé des métadonnées du rechiffrement : " -#: src/cryptsetup.c:1321 +#: src/cryptsetup.c:1319 msgid "Enter passphrase for reencryption recovery: " msgstr "Entrez la phrase secrète pour la récupération du rechiffrement : " -#: src/cryptsetup.c:1383 +#: src/cryptsetup.c:1381 msgid "Really try to repair LUKS device header?" msgstr "Réellement essayer de réparer l'en-tête du périphérique LUKS ?" -#: src/cryptsetup.c:1411 src/integritysetup.c:76 src/integritysetup.c:244 +#: src/cryptsetup.c:1409 src/integritysetup.c:76 src/integritysetup.c:244 msgid "" "\n" "Wipe interrupted." @@ -2364,7 +2364,7 @@ msgstr "" "\n" "Effacement interrompu." -#: src/cryptsetup.c:1416 src/integritysetup.c:81 src/integritysetup.c:283 +#: src/cryptsetup.c:1414 src/integritysetup.c:81 src/integritysetup.c:289 msgid "" "Wiping device to initialize integrity checksum.\n" "You can interrupt this by pressing CTRL+c (rest of not wiped device will contain invalid checksum).\n" @@ -2372,167 +2372,167 @@ msgstr "" "Effacement du périphérique pour initialiser les sommes de contrôle d'intégrité.\n" "Vous pouvez interrompre ceci en appuyant sur CTRL+c (le reste du périphérique effacé contiendra toujours des sommes de contrôle invalides).\n" -#: src/cryptsetup.c:1438 src/integritysetup.c:103 +#: src/cryptsetup.c:1436 src/integritysetup.c:103 #, c-format msgid "Cannot deactivate temporary device %s." msgstr "Impossible de désactiver le périphérique temporaire %s." -#: src/cryptsetup.c:1486 +#: src/cryptsetup.c:1484 msgid "OPAL hw-only encryption does not support --cipher and --key-size, options ignored." msgstr "Un chiffrement utilisant uniquement OPAL hw ne supporte pas --cipher et --key-size, les options sont ignorées." -#: src/cryptsetup.c:1499 +#: src/cryptsetup.c:1497 msgid "Integrity option can be used only for LUKS2 format." msgstr "L'option d'intégrité peut uniquement être utilisée avec le format LUKS2." -#: src/cryptsetup.c:1504 src/cryptsetup.c:1584 +#: src/cryptsetup.c:1502 src/cryptsetup.c:1582 msgid "Unsupported LUKS2 metadata size options." msgstr "Options de taille des métadonnées LUKS2 non supportées." -#: src/cryptsetup.c:1509 +#: src/cryptsetup.c:1507 msgid "OPAL is supported only for LUKS2 format." msgstr "OPAL est uniquement supporté avec le format LUKS2." -#: src/cryptsetup.c:1514 +#: src/cryptsetup.c:1512 msgid "Inline hw tags are supported only for LUKS2 format." msgstr "Les étiquettes hw en ligne sont uniquement supportées avec le format LUKS2." -#: src/cryptsetup.c:1523 +#: src/cryptsetup.c:1521 msgid "Header file does not exist, do you want to create it?" msgstr "Le fichier d'en-tête n'existe pas, voulez-vous le créer ?" -#: src/cryptsetup.c:1531 +#: src/cryptsetup.c:1529 #, c-format msgid "Cannot create header file %s." msgstr "Impossible de créer le fichier d'en-tête %s." -#: src/cryptsetup.c:1557 src/integritysetup.c:126 src/integritysetup.c:141 -#: src/integritysetup.c:150 src/integritysetup.c:322 src/integritysetup.c:330 -#: src/integritysetup.c:340 +#: src/cryptsetup.c:1555 src/integritysetup.c:126 src/integritysetup.c:141 +#: src/integritysetup.c:150 src/integritysetup.c:328 src/integritysetup.c:336 +#: src/integritysetup.c:346 msgid "No known integrity specification pattern detected." msgstr "Aucun motif connu de spécification d'intégrité n'a été détecté." -#: src/cryptsetup.c:1559 +#: src/cryptsetup.c:1557 msgid "Cannot use specified integrity key size." msgstr "Impossible d'utiliser la taille de clé d'intégrité spécifiée." -#: src/cryptsetup.c:1577 +#: src/cryptsetup.c:1575 #, c-format msgid "Cannot use %s as on-disk header." msgstr "Ne peut utiliser %s comme en-tête sur disque." -#: src/cryptsetup.c:1606 src/integritysetup.c:172 +#: src/cryptsetup.c:1604 src/integritysetup.c:172 #, c-format msgid "This will overwrite data on %s irrevocably." msgstr "Cette action écrasera définitivement les données sur %s." -#: src/cryptsetup.c:1643 +#: src/cryptsetup.c:1641 msgid "OPAL Admin password cannot be empty." msgstr "Le mot de passe Admin de OPAL ne peut pas être vide." -#: src/cryptsetup.c:1657 src/cryptsetup.c:2101 src/cryptsetup.c:2244 -#: src/cryptsetup.c:2379 src/cryptsetup.c:2445 src/utils_reencrypt_luks1.c:428 +#: src/cryptsetup.c:1655 src/cryptsetup.c:2099 src/cryptsetup.c:2242 +#: src/cryptsetup.c:2377 src/cryptsetup.c:2443 src/utils_reencrypt_luks1.c:428 msgid "Failed to set pbkdf parameters." msgstr "Impossible de définir les paramètres pbkdf." -#: src/cryptsetup.c:1788 +#: src/cryptsetup.c:1786 msgid "Reduced data offset is allowed only for detached LUKS header." msgstr "Décalage réduit de données est uniquement permis dans un en-tête LUKS détaché." -#: src/cryptsetup.c:1795 +#: src/cryptsetup.c:1793 #, c-format msgid "LUKS file container %s is too small for activation, there is no remaining space for data." msgstr "Le container %s du fichier LUKS est trop petit pour l'activation, il ne reste pas d'espace pour les données." -#: src/cryptsetup.c:1837 src/cryptsetup.c:2250 src/utils_reencrypt.c:277 +#: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:277 #: src/utils_reencrypt.c:369 src/utils_reencrypt.c:1907 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "Impossible de déterminer la taille de la clé de volume pour LUKS sans emplacement de clé, veuillez utiliser l'option --key-size." -#: src/cryptsetup.c:1856 src/utils_reencrypt.c:303 +#: src/cryptsetup.c:1854 src/utils_reencrypt.c:303 msgid "Device requires two volume keys." msgstr "Le périphérique requiert deux clés de volume." -#: src/cryptsetup.c:1891 +#: src/cryptsetup.c:1889 msgid "Some specified activation parameters were ignored with OPAL hw-only encryption." msgstr "Certains paramètres d'activation spécifiés ont été ignorés avec le chiffrement utilisant uniquement OPAL hw." -#: src/cryptsetup.c:1896 +#: src/cryptsetup.c:1894 msgid "Device activated but cannot make flags persistent." msgstr "Le périphérique a été activé mais les fanions ne peuvent pas être rendus permanents." -#: src/cryptsetup.c:1976 src/cryptsetup.c:2044 +#: src/cryptsetup.c:1974 src/cryptsetup.c:2042 #, c-format msgid "Keyslot %d is selected for deletion." msgstr "Emplacement de clé %d sélectionné pour suppression." -#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 +#: src/cryptsetup.c:1986 src/cryptsetup.c:2046 msgid "This is the last keyslot. Device will become unusable after purging this key." msgstr "Ceci est le dernier emplacement de clé. Le périphérique sera inutilisable après la suppression de cette clé." -#: src/cryptsetup.c:1989 +#: src/cryptsetup.c:1987 msgid "Enter any remaining passphrase: " msgstr "Entrez toute phrase secrète restante : " -#: src/cryptsetup.c:1990 src/cryptsetup.c:2050 +#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 msgid "Operation aborted, the keyslot was NOT wiped.\n" msgstr "Opération interrompue, l'emplacement de clé n'a PAS été effacé.\n" -#: src/cryptsetup.c:2026 +#: src/cryptsetup.c:2024 msgid "Enter passphrase to be deleted: " msgstr "Entrez la phrase secrète à effacer : " -#: src/cryptsetup.c:2076 src/cryptsetup.c:2428 src/cryptsetup.c:3088 -#: src/cryptsetup.c:3255 +#: src/cryptsetup.c:2074 src/cryptsetup.c:2426 src/cryptsetup.c:3086 +#: src/cryptsetup.c:3253 #, c-format msgid "Device %s is not a valid LUKS2 device." msgstr "%s n'est pas un périphérique LUKS2 valide." -#: src/cryptsetup.c:2115 src/cryptsetup.c:2314 +#: src/cryptsetup.c:2113 src/cryptsetup.c:2312 msgid "Enter new passphrase for key slot: " msgstr "Entrez une nouvelle phrase secrète pour l'emplacement de clé : " -#: src/cryptsetup.c:2149 src/utils_luks.c:342 +#: src/cryptsetup.c:2147 src/utils_luks.c:342 #, c-format msgid "Enter token PIN: " msgstr "Entrez le code PIN du jeton : " -#: src/cryptsetup.c:2151 src/utils_luks.c:344 +#: src/cryptsetup.c:2149 src/utils_luks.c:344 #, c-format msgid "Enter token %d PIN: " msgstr "Entrez le code PIN du jeton %d : " -#: src/cryptsetup.c:2210 +#: src/cryptsetup.c:2208 msgid "WARNING: The --key-slot parameter is used for new keyslot number.\n" msgstr "ATTENTION: Le paramètre --key-slot est utilisé pour le nouveau numéro de l'emplacement de clé.\n" -#: src/cryptsetup.c:2287 src/utils_reencrypt_luks1.c:1094 +#: src/cryptsetup.c:2285 src/utils_reencrypt_luks1.c:1094 #, c-format msgid "Enter any existing passphrase: " msgstr "Entrez une phrase secrète existante : " -#: src/cryptsetup.c:2383 +#: src/cryptsetup.c:2381 msgid "Enter passphrase to be changed: " msgstr "Entrez la phrase secrète à changer : " -#: src/cryptsetup.c:2399 src/utils_reencrypt_luks1.c:1080 +#: src/cryptsetup.c:2397 src/utils_reencrypt_luks1.c:1080 msgid "Enter new passphrase: " msgstr "Entrez la nouvelle phrase secrète : " -#: src/cryptsetup.c:2449 +#: src/cryptsetup.c:2447 msgid "Enter passphrase for keyslot to be converted: " msgstr "Entrez la phrase secrète pour l'emplacement de clé à convertir: " -#: src/cryptsetup.c:2473 +#: src/cryptsetup.c:2471 msgid "Only one device argument for isLuks operation is supported." msgstr "L'opération isLuks supporte seulement un périphérique en argument." -#: src/cryptsetup.c:2578 +#: src/cryptsetup.c:2576 #, c-format msgid "Keyslot %d does not contain unbound key." msgstr "L'emplacement de clé %d ne contient pas de clé non liée." -#: src/cryptsetup.c:2583 +#: src/cryptsetup.c:2581 msgid "" "The header dump with unbound key is sensitive information.\n" "This dump should be stored encrypted in a safe place." @@ -2540,52 +2540,52 @@ msgstr "" "Le contenu de l'en-tête avec une clé non liée est une information sensible.\n" "Ce contenu devrait être stocké, chiffré, en lieu sûr." -#: src/cryptsetup.c:2678 src/cryptsetup.c:2714 +#: src/cryptsetup.c:2676 src/cryptsetup.c:2712 #, c-format msgid "%s is not active %s device name." msgstr "%s n'est pas un nom de périphérique %s actif." -#: src/cryptsetup.c:2709 +#: src/cryptsetup.c:2707 #, c-format msgid "%s is not active LUKS device name or header is missing." msgstr "%s n'est pas un nom de périphérique LUKS actif ou l'en-tête est manquant." -#: src/cryptsetup.c:2786 src/cryptsetup.c:2805 +#: src/cryptsetup.c:2784 src/cryptsetup.c:2803 msgid "Option --header-backup-file is required." msgstr "L'option --header-backup-file est requise." -#: src/cryptsetup.c:2836 +#: src/cryptsetup.c:2834 #, c-format msgid "%s is not cryptsetup managed device." msgstr "%s n'est pas un périphérique géré par cryptsetup." -#: src/cryptsetup.c:2847 +#: src/cryptsetup.c:2845 #, c-format msgid "Refresh is not supported for device type %s" msgstr "Le rafraîchissement n'est pas supporté pour un périphérique de type %s" -#: src/cryptsetup.c:2897 +#: src/cryptsetup.c:2895 #, c-format msgid "Unrecognized metadata device type %s." msgstr "Type de métadonnée du périphérique %s non reconnu." -#: src/cryptsetup.c:2899 +#: src/cryptsetup.c:2897 msgid "Command requires device and mapped name as arguments." msgstr "La commande exige un périphérique et un nom de correspondance comme arguments." -#: src/cryptsetup.c:2917 +#: src/cryptsetup.c:2915 msgid "Enter OPAL PSID: " msgstr "Entrez le PSID OPAL : " -#: src/cryptsetup.c:2917 +#: src/cryptsetup.c:2915 msgid "Enter OPAL Admin password: " msgstr "Entrez le mot de passe Admin de OPAL : " -#: src/cryptsetup.c:2925 +#: src/cryptsetup.c:2923 msgid "WARNING: WHOLE disk will be factory reset and all data will be lost! Continue?" msgstr "ATTENTION : Le disque ENTIER sera réinitialisé d'usine et toutes les données seront perdues ! Continuer ?" -#: src/cryptsetup.c:2968 +#: src/cryptsetup.c:2966 #, c-format msgid "" "This operation will erase all keyslots on device %s.\n" @@ -2594,363 +2594,363 @@ msgstr "" "Cette opération va supprimer tous les emplacements de clés du périphérique %s.\n" "Le périphérique sera inutilisable après cette opération." -#: src/cryptsetup.c:2975 +#: src/cryptsetup.c:2973 msgid "Operation aborted, keyslots were NOT wiped.\n" msgstr "Opération interrompue, les emplacements de clés n'ont PAS été effacés.\n" -#: src/cryptsetup.c:3014 +#: src/cryptsetup.c:3012 msgid "Invalid LUKS type, only luks1 and luks2 are supported." msgstr "Type LUKS invalide, seuls luks1 et luks2 sont supportés." -#: src/cryptsetup.c:3030 +#: src/cryptsetup.c:3028 #, c-format msgid "Device is already %s type." msgstr "Le périphérique est déjà du type %s." -#: src/cryptsetup.c:3037 +#: src/cryptsetup.c:3035 #, c-format msgid "This operation will convert %s to %s format.\n" msgstr "Cette opération va convertir %s au format %s.\n" -#: src/cryptsetup.c:3040 +#: src/cryptsetup.c:3038 msgid "Operation aborted, device was NOT converted.\n" msgstr "Opération interrompue, le périphérique n'a PAS été converti.\n" -#: src/cryptsetup.c:3080 +#: src/cryptsetup.c:3078 msgid "Option --priority, --label or --subsystem is missing." msgstr "L'option --priority, --label ou --subsystem est manquante." -#: src/cryptsetup.c:3114 src/cryptsetup.c:3154 src/cryptsetup.c:3174 +#: src/cryptsetup.c:3112 src/cryptsetup.c:3152 src/cryptsetup.c:3172 #, c-format msgid "Token %d is invalid." msgstr "Le jeton %d est invalide." -#: src/cryptsetup.c:3117 src/cryptsetup.c:3177 +#: src/cryptsetup.c:3115 src/cryptsetup.c:3175 #, c-format msgid "Token %d in use." msgstr "Le jeton %d est utilisé." -#: src/cryptsetup.c:3129 +#: src/cryptsetup.c:3127 #, c-format msgid "Failed to add luks2-keyring token %d." msgstr "Échec lors de l'ajout du jeton %d au porte-clé luks2." -#: src/cryptsetup.c:3140 src/cryptsetup.c:3203 +#: src/cryptsetup.c:3138 src/cryptsetup.c:3201 #, c-format msgid "Failed to assign token %d to keyslot %d." msgstr "Échec lors de l'affectation du jeton %d à l'emplacement de clé %d." -#: src/cryptsetup.c:3157 +#: src/cryptsetup.c:3155 #, c-format msgid "Token %d is not in use." msgstr "Le jeton %d n'est pas utilisé." -#: src/cryptsetup.c:3194 +#: src/cryptsetup.c:3192 msgid "Failed to import token from file." msgstr "Impossible d'importer le jeton depuis le fichier." -#: src/cryptsetup.c:3219 +#: src/cryptsetup.c:3217 #, c-format msgid "Failed to get token %d for export." msgstr "Impossible d'obtenir le jeton %d pour l'export." -#: src/cryptsetup.c:3232 +#: src/cryptsetup.c:3230 #, c-format msgid "Token %d is not assigned to keyslot %d." msgstr "Le jeton %d n'est pas assigné à l'emplacement de clé %d." -#: src/cryptsetup.c:3234 src/cryptsetup.c:3241 +#: src/cryptsetup.c:3232 src/cryptsetup.c:3239 #, c-format msgid "Failed to unassign token %d from keyslot %d." msgstr "Impossible de dissocier le jeton %d de l'emplacement de clé %d." -#: src/cryptsetup.c:3300 +#: src/cryptsetup.c:3298 msgid "Option --tcrypt-hidden, --tcrypt-system or --tcrypt-backup is supported only for TCRYPT device." msgstr "Les options --tcrypt-hidden, --tcrypt-system ou --tcrypt-backup sont supportées seulement pour un périphérique TCRYPT." -#: src/cryptsetup.c:3303 +#: src/cryptsetup.c:3301 msgid "Option --veracrypt or --disable-veracrypt is supported only for TCRYPT device type." msgstr "L'option --veracrypt ou --disable-veracrypt est uniquement supportée pour un périphérique de type TCRYPT." -#: src/cryptsetup.c:3306 +#: src/cryptsetup.c:3304 msgid "Option --veracrypt-pim is supported only for VeraCrypt compatible devices." msgstr "L'option --veracrypt-pim est uniquement supportée pour un périphérique compatible avec VeraCrypt." -#: src/cryptsetup.c:3310 +#: src/cryptsetup.c:3308 msgid "Option --veracrypt-query-pim is supported only for VeraCrypt compatible devices." msgstr "L'option --veracrypt-query-pim est uniquement supportée pour un périphérique compatible avec VeraCrypt." -#: src/cryptsetup.c:3312 +#: src/cryptsetup.c:3310 msgid "The options --veracrypt-pim and --veracrypt-query-pim are mutually exclusive." msgstr "Les options --veracrypt-pim et --veracrypt-query-pim sont mutuellement exclusives." -#: src/cryptsetup.c:3321 +#: src/cryptsetup.c:3319 msgid "Option --persistent is not allowed with --test-passphrase." msgstr "L'option --persistent n'est pas permise avec --test-passphrase." -#: src/cryptsetup.c:3324 +#: src/cryptsetup.c:3322 msgid "Options --refresh and --test-passphrase are mutually exclusive." msgstr "Les options --refresh et --test-passphrase sont mutuellement exclusives." -#: src/cryptsetup.c:3327 +#: src/cryptsetup.c:3325 msgid "Option --shared is allowed only for open of plain device." msgstr "L'option --shared est permise uniquement pour ouvrir un périphérique ordinaire." -#: src/cryptsetup.c:3330 +#: src/cryptsetup.c:3328 msgid "Option --skip is supported only for open of plain and loopaes devices." msgstr "L'option --skip est supportée uniquement pour ouvrir des périphériques ordinaires et loopaes." -#: src/cryptsetup.c:3333 +#: src/cryptsetup.c:3331 msgid "Option --offset with open action is only supported for plain and loopaes devices." msgstr "L'option --offset avec l'action d'ouverture est supportée uniquement pour des périphériques ordinaires et loopaes." -#: src/cryptsetup.c:3336 +#: src/cryptsetup.c:3334 msgid "Option --tcrypt-hidden cannot be combined with --allow-discards." msgstr "L'option --tcrypt-hidden ne peut pas être combinée avec --allow-discards." -#: src/cryptsetup.c:3340 +#: src/cryptsetup.c:3338 msgid "Sector size option with open action is supported only for plain devices." msgstr "L'option de taille de secteur avec l'action d'ouverture est uniquement supportée pour des périphérique ordinaires." -#: src/cryptsetup.c:3344 +#: src/cryptsetup.c:3342 msgid "Large IV sectors option is supported only for opening plain type device with sector size larger than 512 bytes." msgstr "L'option des secteurs IV (vecteur d'initialisation) de grande taille est supportée uniquement à l'ouverture de périphériques de type simple avec une taille de secteur supérieure à 512 octets." -#: src/cryptsetup.c:3349 +#: src/cryptsetup.c:3347 msgid "Option --test-passphrase is allowed only for open of LUKS, TCRYPT, BITLK and FVAULT2 devices." msgstr "L'option --test-passphrase est autorisée uniquement pour ouvrir des périphériques LUKS, TCRYPT, BITLK et FVAULT2." -#: src/cryptsetup.c:3352 src/cryptsetup.c:3382 +#: src/cryptsetup.c:3350 src/cryptsetup.c:3380 msgid "Options --device-size and --size cannot be combined." msgstr "Les options --device-size et --size ne peuvent pas être combinées." -#: src/cryptsetup.c:3355 +#: src/cryptsetup.c:3353 msgid "Option --unbound is allowed only for open of luks device." msgstr "L'option --unbound est permise uniquement pour ouvrir un périphérique luks." -#: src/cryptsetup.c:3358 +#: src/cryptsetup.c:3356 msgid "Option --unbound cannot be used without --test-passphrase." msgstr "L'option --unbound ne peut pas être utilisée sans --test-passphrase." -#: src/cryptsetup.c:3362 +#: src/cryptsetup.c:3360 msgid "Option --volume-key-keyring cannot be combined with --hash or --volume-key-file." msgstr "L'option --volume-key-keyring ne peut pas être combinée avec --hash ou --volume-key-file." -#: src/cryptsetup.c:3365 +#: src/cryptsetup.c:3363 msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "Les deux options --volume-key-file doivent être appariées avec les options --key-size respectives." -#: src/cryptsetup.c:3374 src/veritysetup.c:673 src/integritysetup.c:784 +#: src/cryptsetup.c:3372 src/veritysetup.c:673 src/integritysetup.c:787 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "Les options --cancel-deferred et --deferred ne peuvent pas être utilisées en même temps." -#: src/cryptsetup.c:3390 +#: src/cryptsetup.c:3388 msgid "Option --active-name can be set only for LUKS2 device." msgstr "L'option --active-name peut uniquement être définie pour un périphérique LUKS2." -#: src/cryptsetup.c:3393 +#: src/cryptsetup.c:3391 msgid "Options --active-name and --force-offline-reencrypt cannot be combined." msgstr "Les options --active-name et --force-offline-reencrypt ne peuvent pas être combinées." -#: src/cryptsetup.c:3396 +#: src/cryptsetup.c:3394 msgid "Options --new-volume-key-file and --keep-key cannot be combined." msgstr "Les options --new-volume-key et --keep-key ne peuvent pas être combinées." -#: src/cryptsetup.c:3399 +#: src/cryptsetup.c:3397 msgid "Options --new-volume-key-keyring and --keep-key cannot be combined." msgstr "Les options --new-volume-key-keyring et --keep-key ne peuvent pas être combinées." -#: src/cryptsetup.c:3407 src/cryptsetup.c:3437 +#: src/cryptsetup.c:3405 src/cryptsetup.c:3435 msgid "Keyslot specification is required." msgstr "Une spécification d'emplacement de clé est requise." -#: src/cryptsetup.c:3415 +#: src/cryptsetup.c:3413 msgid "Options --align-payload and --offset cannot be combined." msgstr "Les options --align-payload et --offset ne peuvent pas être combinées." -#: src/cryptsetup.c:3418 +#: src/cryptsetup.c:3416 msgid "Option --integrity-no-wipe can be used only for format action with integrity extension." msgstr "L'option --integrity-no-wipe peut uniquement être utilisée pour une action de formatage avec l'extension d'intégrité." -#: src/cryptsetup.c:3421 +#: src/cryptsetup.c:3419 msgid "Only one of --use-[u]random options is allowed." msgstr "Seule une des deux possibilités --use-[u]random est autorisée." -#: src/cryptsetup.c:3429 +#: src/cryptsetup.c:3427 msgid "Key size is required with --unbound option." msgstr "La taille de clé est requise avec l'option --unbound." -#: src/cryptsetup.c:3449 +#: src/cryptsetup.c:3447 msgid "Invalid token action." msgstr "L'action de jeton est invalide." -#: src/cryptsetup.c:3452 +#: src/cryptsetup.c:3450 msgid "--key-description parameter is mandatory for token add action." msgstr "Le paramètre --key-description est requis pour l'action d'ajout d'un jeton." -#: src/cryptsetup.c:3456 src/cryptsetup.c:3469 +#: src/cryptsetup.c:3454 src/cryptsetup.c:3467 msgid "Action requires specific token. Use --token-id parameter." msgstr "L'action requiert un jeton spécifique. Utilisez le paramètre --token-id." -#: src/cryptsetup.c:3460 +#: src/cryptsetup.c:3458 msgid "Option --unbound is valid only with token add action." msgstr "L'option --unbound est uniquement valable avec l'action d'ajout d'un jeton." -#: src/cryptsetup.c:3462 +#: src/cryptsetup.c:3460 msgid "Options --key-slot and --unbound cannot be combined." msgstr "Les options --key-slot et --unbound ne peuvent pas être combinées." -#: src/cryptsetup.c:3467 +#: src/cryptsetup.c:3465 msgid "Action requires specific keyslot. Use --key-slot parameter." msgstr "L'action requiert un jeton spécifique. Utilisez le paramètre --key-slot." -#: src/cryptsetup.c:3483 +#: src/cryptsetup.c:3481 msgid " [--type ] []" msgstr " [--type ] []" -#: src/cryptsetup.c:3483 src/veritysetup.c:487 src/integritysetup.c:551 +#: src/cryptsetup.c:3481 src/veritysetup.c:487 src/integritysetup.c:554 msgid "open device as " msgstr "ouvrir le périphérique comme " -#: src/cryptsetup.c:3484 src/cryptsetup.c:3485 src/cryptsetup.c:3486 -#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:552 -#: src/integritysetup.c:553 src/integritysetup.c:555 +#: src/cryptsetup.c:3482 src/cryptsetup.c:3483 src/cryptsetup.c:3484 +#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:555 +#: src/integritysetup.c:556 src/integritysetup.c:558 msgid "" msgstr "" -#: src/cryptsetup.c:3484 src/veritysetup.c:488 src/integritysetup.c:552 +#: src/cryptsetup.c:3482 src/veritysetup.c:488 src/integritysetup.c:555 msgid "close device (remove mapping)" msgstr "fermeture du périphérique (supprime le « mapping »)" -#: src/cryptsetup.c:3485 src/integritysetup.c:555 +#: src/cryptsetup.c:3483 src/integritysetup.c:558 msgid "resize active device" msgstr "redimensionner le périphérique actif" -#: src/cryptsetup.c:3486 +#: src/cryptsetup.c:3484 msgid "show device status" msgstr "afficher le statut du périphérique" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3485 msgid "[--cipher ]" msgstr "[--cipher ]" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3485 msgid "benchmark cipher" msgstr "chiffrement pour test de performance" -#: src/cryptsetup.c:3488 src/cryptsetup.c:3489 src/cryptsetup.c:3490 -#: src/cryptsetup.c:3491 src/cryptsetup.c:3492 src/cryptsetup.c:3499 -#: src/cryptsetup.c:3500 src/cryptsetup.c:3501 src/cryptsetup.c:3502 -#: src/cryptsetup.c:3503 src/cryptsetup.c:3504 src/cryptsetup.c:3505 -#: src/cryptsetup.c:3506 src/cryptsetup.c:3507 src/cryptsetup.c:3508 +#: src/cryptsetup.c:3486 src/cryptsetup.c:3487 src/cryptsetup.c:3488 +#: src/cryptsetup.c:3489 src/cryptsetup.c:3490 src/cryptsetup.c:3497 +#: src/cryptsetup.c:3498 src/cryptsetup.c:3499 src/cryptsetup.c:3500 +#: src/cryptsetup.c:3501 src/cryptsetup.c:3502 src/cryptsetup.c:3503 +#: src/cryptsetup.c:3504 src/cryptsetup.c:3505 src/cryptsetup.c:3506 msgid "" msgstr "" -#: src/cryptsetup.c:3488 +#: src/cryptsetup.c:3486 msgid "try to repair on-disk metadata" msgstr "essayer de réparer les métadonnées sur le disque" -#: src/cryptsetup.c:3489 +#: src/cryptsetup.c:3487 msgid "reencrypt LUKS2 device" msgstr "rechiffrer le périphérique LUKS2" -#: src/cryptsetup.c:3490 +#: src/cryptsetup.c:3488 msgid "erase all keyslots (remove encryption key)" msgstr "supprimer tous les emplacements de clés (supprime la clé de chiffrement)" -#: src/cryptsetup.c:3491 +#: src/cryptsetup.c:3489 msgid "convert LUKS from/to LUKS2 format" msgstr "convertir LUKS depuis/vers le format LUKS2" -#: src/cryptsetup.c:3492 +#: src/cryptsetup.c:3490 msgid "set permanent configuration options for LUKS2" msgstr "définir les options de configuration permanentes pour LUKS2" -#: src/cryptsetup.c:3493 src/cryptsetup.c:3494 +#: src/cryptsetup.c:3491 src/cryptsetup.c:3492 msgid " []" msgstr " []" -#: src/cryptsetup.c:3493 +#: src/cryptsetup.c:3491 msgid "formats a LUKS device" msgstr "formater un périphérique LUKS" -#: src/cryptsetup.c:3494 +#: src/cryptsetup.c:3492 msgid "add key to LUKS device" msgstr "ajouter une clé au périphérique LUKS" -#: src/cryptsetup.c:3495 src/cryptsetup.c:3496 src/cryptsetup.c:3497 +#: src/cryptsetup.c:3493 src/cryptsetup.c:3494 src/cryptsetup.c:3495 msgid " []" msgstr " []" -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3493 msgid "removes supplied key or key file from LUKS device" msgstr "retire du périphérique LUKS la clé ou le fichier de clé fourni" -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3494 msgid "changes supplied key or key file of LUKS device" msgstr "modifie la clé ou le fichier de clé fourni pour le périphérique LUKS" -#: src/cryptsetup.c:3497 +#: src/cryptsetup.c:3495 msgid "converts a key to new pbkdf parameters" msgstr "converti une clé vers les nouveaux paramètres pbkdf" -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3496 msgid " " msgstr " " -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3496 msgid "wipes key with number from LUKS device" msgstr "efface de façon sécurisée la clé avec le numéro du périphérique LUKS" -#: src/cryptsetup.c:3499 +#: src/cryptsetup.c:3497 msgid "print UUID of LUKS device" msgstr "afficher l'UUID du périphérique LUKS" -#: src/cryptsetup.c:3500 +#: src/cryptsetup.c:3498 msgid "tests for LUKS partition header" msgstr "teste si a un en-tête de partition LUKS" -#: src/cryptsetup.c:3501 +#: src/cryptsetup.c:3499 msgid "dump LUKS partition information" msgstr "affiche les informations LUKS de la partition" -#: src/cryptsetup.c:3502 +#: src/cryptsetup.c:3500 msgid "dump TCRYPT device information" msgstr "affiche les informations du périphérique TCRYPT" -#: src/cryptsetup.c:3503 +#: src/cryptsetup.c:3501 msgid "dump BITLK device information" msgstr "affiche les informations du périphérique BITLK" -#: src/cryptsetup.c:3504 +#: src/cryptsetup.c:3502 msgid "dump FVAULT2 device information" msgstr "affiche les informations du périphérique FVAULT2" -#: src/cryptsetup.c:3505 +#: src/cryptsetup.c:3503 msgid "Suspend LUKS device and wipe key (all IOs are frozen)" msgstr "Suspendre le périphérique LUKS et effacer de façon sécurisée la clé (toutes les entrées/sorties sont suspendues)" -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3504 msgid "Resume suspended LUKS device" msgstr "Remettre en service le périphérique LUKS suspendu" -#: src/cryptsetup.c:3507 +#: src/cryptsetup.c:3505 msgid "Backup LUKS device header and keyslots" msgstr "Sauvegarder l'en-tête et les emplacements de clés du périphérique LUKS" -#: src/cryptsetup.c:3508 +#: src/cryptsetup.c:3506 msgid "Restore LUKS device header and keyslots" msgstr "Restaurer l'en-tête et les emplacements de clés du périphérique LUKS" -#: src/cryptsetup.c:3509 +#: src/cryptsetup.c:3507 msgid " " msgstr " " -#: src/cryptsetup.c:3509 +#: src/cryptsetup.c:3507 msgid "Manipulate LUKS2 tokens" msgstr "Manipuler les jetons LUKS2" -#: src/cryptsetup.c:3528 src/veritysetup.c:505 src/integritysetup.c:570 +#: src/cryptsetup.c:3526 src/veritysetup.c:505 src/integritysetup.c:573 msgid "" "\n" " is one of:\n" @@ -2958,7 +2958,7 @@ msgstr "" "\n" " est l'une de :\n" -#: src/cryptsetup.c:3534 +#: src/cryptsetup.c:3532 msgid "" "\n" "You can also use old syntax aliases:\n" @@ -2970,7 +2970,7 @@ msgstr "" "\touvrir : create (plainOpen), luksOpen, loopaesOpen, tcryptOpen, bitlkOpen, fvault2Open\n" "\tfermer : remove (plainClose), luksClose, loopaesClose, tcryptClose, bitlkClose, fvault2Close\n" -#: src/cryptsetup.c:3538 +#: src/cryptsetup.c:3536 #, c-format msgid "" "\n" @@ -2985,7 +2985,7 @@ msgstr "" " est le numéro de l'emplacement de clé LUKS à modifier\n" " est un fichier optionnel contenant la nouvelle clé pour l'action luksAddKey\n" -#: src/cryptsetup.c:3545 +#: src/cryptsetup.c:3543 #, c-format msgid "" "\n" @@ -2994,7 +2994,7 @@ msgstr "" "\n" "Le format de métadonnées compilé par défaut est %s (pour l'action luksFormat).\n" -#: src/cryptsetup.c:3550 +#: src/cryptsetup.c:3548 msgid "" "\n" "LUKS2 external token plugin support is enabled.\n" @@ -3002,12 +3002,12 @@ msgstr "" "\n" "Le support du greffon de jeton externe LUKS2 est enabled.\n" -#: src/cryptsetup.c:3551 +#: src/cryptsetup.c:3549 #, c-format msgid "LUKS2 external token plugin path: %s.\n" msgstr "Chemin du greffon de jeton externe LUKS2 : %s.\n" -#: src/cryptsetup.c:3553 +#: src/cryptsetup.c:3551 msgid "" "\n" "LUKS2 external token plugin support is disabled.\n" @@ -3015,7 +3015,7 @@ msgstr "" "\n" "Le support du greffon de jeton externe LUKS2 est désactivé.\n" -#: src/cryptsetup.c:3557 +#: src/cryptsetup.c:3555 #, c-format msgid "" "\n" @@ -3032,7 +3032,7 @@ msgstr "" "PBKDF par défaut pour LUKS2 : %s\n" "\tTemps d'itération: %d, Mémoire requise: %d ko, Threads parallèles: %d\n" -#: src/cryptsetup.c:3568 +#: src/cryptsetup.c:3566 #, c-format msgid "" "\n" @@ -3047,122 +3047,122 @@ msgstr "" "\tplain: %s, Clé: %d bits, Hachage mot de passe: %s\n" "\tLUKS: %s, Clé: %d bits, Hachage en-tête LUKS: %s, RNG: %s\n" -#: src/cryptsetup.c:3577 +#: src/cryptsetup.c:3575 msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: La taille de clé par défaut en mode XTS (deux clés internes) sera doublée.\n" -#: src/cryptsetup.c:3595 src/veritysetup.c:647 src/integritysetup.c:730 +#: src/cryptsetup.c:3593 src/veritysetup.c:647 src/integritysetup.c:733 #, c-format msgid "%s: requires %s as arguments" msgstr "%s : exige %s comme arguments." -#: src/cryptsetup.c:3635 src/utils_reencrypt_luks1.c:1143 +#: src/cryptsetup.c:3633 src/utils_reencrypt_luks1.c:1143 msgid "Key slot is invalid." msgstr "Emplacement de clé non valide." -#: src/cryptsetup.c:3663 +#: src/cryptsetup.c:3661 msgid "Device size must be multiple of 512 bytes sector." msgstr "La taille du périphérique doit être un multiple d'un secteur de 512 octets." -#: src/cryptsetup.c:3668 +#: src/cryptsetup.c:3666 msgid "Invalid max reencryption hotzone size specification." msgstr "La spécification de la taille maximale de la zone chaude de rechiffrement est invalide." -#: src/cryptsetup.c:3682 src/cryptsetup.c:3699 src/cryptsetup.c:3711 +#: src/cryptsetup.c:3680 src/cryptsetup.c:3697 src/cryptsetup.c:3709 msgid "Key size must be a multiple of 8 bits" msgstr "La taille de la clé doit être un multiple de 8 bits" -#: src/cryptsetup.c:3689 +#: src/cryptsetup.c:3687 msgid "At most 2 key size specifications can be supplied." msgstr "Au plus 2 spécifications de taille de clé peuvent être fournies." -#: src/cryptsetup.c:3718 src/cryptsetup.c:3729 +#: src/cryptsetup.c:3716 src/cryptsetup.c:3727 #, c-format msgid "At most %d volume key specifications can be supplied." msgstr "Au plus %d spécifications de clés de volume peuvent être fournies." -#: src/cryptsetup.c:3741 +#: src/cryptsetup.c:3739 #, c-format msgid "At most %d keyring link specifications can be supplied." msgstr "Au plus %d spécifications de liaison de porte-clé peuvent être fournies." -#: src/cryptsetup.c:3750 +#: src/cryptsetup.c:3748 msgid "Maximum device reduce size is 1 GiB." msgstr "La taille maximum réduite pour le périphérique est 1 GiB." -#: src/cryptsetup.c:3753 +#: src/cryptsetup.c:3751 msgid "Reduce size must be multiple of 512 bytes sector." msgstr "La taille réduite doit être un multiple d'un secteur de 512 octets." -#: src/cryptsetup.c:3770 +#: src/cryptsetup.c:3768 msgid "Option --priority can be only ignore/normal/prefer." msgstr "L'option --priority peut uniquement être ignore/normal/prefer." -#: src/cryptsetup.c:3789 src/veritysetup.c:568 src/integritysetup.c:650 +#: src/cryptsetup.c:3787 src/veritysetup.c:568 src/integritysetup.c:653 msgid "Show this help message" msgstr "Afficher ce message d'aide" -#: src/cryptsetup.c:3790 src/veritysetup.c:569 src/integritysetup.c:651 +#: src/cryptsetup.c:3788 src/veritysetup.c:569 src/integritysetup.c:654 msgid "Display brief usage" msgstr "Afficher, en résumé, la syntaxe d'invocation" -#: src/cryptsetup.c:3791 src/veritysetup.c:570 src/integritysetup.c:652 +#: src/cryptsetup.c:3789 src/veritysetup.c:570 src/integritysetup.c:655 msgid "Print package version" msgstr "Afficher la version du paquet" -#: src/cryptsetup.c:3802 src/veritysetup.c:581 src/integritysetup.c:663 +#: src/cryptsetup.c:3800 src/veritysetup.c:581 src/integritysetup.c:666 msgid "Help options:" msgstr "Options d'aide :" -#: src/cryptsetup.c:3825 src/veritysetup.c:602 src/integritysetup.c:683 +#: src/cryptsetup.c:3823 src/veritysetup.c:602 src/integritysetup.c:686 msgid "[OPTION...] " msgstr "[OPTION...] " -#: src/cryptsetup.c:3834 src/veritysetup.c:611 src/integritysetup.c:694 +#: src/cryptsetup.c:3832 src/veritysetup.c:611 src/integritysetup.c:697 msgid "Argument missing." msgstr "Il manque l'argument ." -#: src/cryptsetup.c:3913 src/veritysetup.c:642 src/integritysetup.c:725 +#: src/cryptsetup.c:3911 src/veritysetup.c:642 src/integritysetup.c:728 msgid "Unknown action." msgstr "Action inconnue." -#: src/cryptsetup.c:3931 +#: src/cryptsetup.c:3929 msgid "Option --key-file takes precedence over specified key file argument." msgstr "L'option --key-file est prioritaire par rapport à un fichier de clé spécifié en argument." -#: src/cryptsetup.c:3937 +#: src/cryptsetup.c:3935 msgid "Only one --key-file argument is allowed." msgstr "Un seul argument --key-file est autorisé." -#: src/cryptsetup.c:3942 +#: src/cryptsetup.c:3940 msgid "Password-based key derivation function (PBKDF) can be only pbkdf2 or argon2i/argon2id." msgstr "La fonction de dérivation d'une clé basée sur un mot de passe (PBKDF = Password-Based Key Derivation Function) peut uniquement être pbkdf2 ou argon2i/argon2id." -#: src/cryptsetup.c:3947 +#: src/cryptsetup.c:3945 msgid "PBKDF forced iterations cannot be combined with iteration time option." msgstr "Les itérations forcées de PBKDF ne peuvent pas être combinées avec l'option de temps d'itération." -#: src/cryptsetup.c:3952 +#: src/cryptsetup.c:3950 msgid "Cannot link volume key to a keyring when keyring is disabled." msgstr "Impossible de lier une clé de volume à un porte-clé quand le porte-clé est désactivé." -#: src/cryptsetup.c:3957 +#: src/cryptsetup.c:3955 msgid "Cannot use keyring key description when keyring is disabled." msgstr "Impossible d'utiliser la description de clé de porte-clé quand le porte-clé est désactivé." -#: src/cryptsetup.c:3962 +#: src/cryptsetup.c:3960 msgid "Inline integrity must be used together with --integrity option." msgstr "L'intégrité en ligne doit être utilisée avec l'option --integrity." -#: src/cryptsetup.c:3973 +#: src/cryptsetup.c:3971 msgid "Options --keyslot-cipher and --keyslot-key-size must be used together." msgstr "Les options --keyslot-cipher et --keyslot-key-size doivent être utilisées ensembles." -#: src/cryptsetup.c:3981 +#: src/cryptsetup.c:3979 msgid "No action taken. Invoked with --test-args option.\n" msgstr "Aucune action réalisée. Invoqué avec l'option --test-args.\n" -#: src/cryptsetup.c:3994 +#: src/cryptsetup.c:3992 msgid "Cannot disable metadata locking." msgstr "Impossible de désactiver le verrouillage des métadonnées." @@ -3227,7 +3227,7 @@ msgstr "La commande exige ou l'option --root-hash-file comme ar msgid " " msgstr " " -#: src/veritysetup.c:485 src/integritysetup.c:550 +#: src/veritysetup.c:485 src/integritysetup.c:553 msgid "format device" msgstr "formater le périphérique" @@ -3243,7 +3243,7 @@ msgstr "vérifier le périphérique" msgid " []" msgstr " []" -#: src/veritysetup.c:489 src/integritysetup.c:553 +#: src/veritysetup.c:489 src/integritysetup.c:556 msgid "show active device status" msgstr "afficher le statut du périphérique actif" @@ -3251,7 +3251,7 @@ msgstr "afficher le statut du périphérique actif" msgid "" msgstr "" -#: src/veritysetup.c:490 src/integritysetup.c:554 +#: src/veritysetup.c:490 src/integritysetup.c:557 msgid "show on-disk information" msgstr "afficher les informations sur le disque" @@ -3311,24 +3311,24 @@ msgstr "Formaté avec une taille de balise de %u%s, intégrité interne %s.\n" msgid " (inline hw tags)" msgstr " (étiquettes HW en ligne)" -#: src/integritysetup.c:297 +#: src/integritysetup.c:303 msgid "Setting recalculate flag is not supported, you may consider using --wipe instead." msgstr "Définir le fanion pour le recalcul n'est pas supporté, envisagez plutôt d'utiliser --wipe." -#: src/integritysetup.c:374 src/integritysetup.c:537 +#: src/integritysetup.c:380 src/integritysetup.c:540 #, c-format msgid "Device %s is not a valid INTEGRITY device." msgstr "Le périphérique %s n'est pas un périphérique INTEGRITY valable." -#: src/integritysetup.c:550 src/integritysetup.c:554 +#: src/integritysetup.c:553 src/integritysetup.c:557 msgid "" msgstr "" -#: src/integritysetup.c:551 +#: src/integritysetup.c:554 msgid " " msgstr " " -#: src/integritysetup.c:574 +#: src/integritysetup.c:577 #, c-format msgid "" "\n" @@ -3339,7 +3339,7 @@ msgstr "" " est le périphérique à créer sous %s\n" " est le périphérique contenant les données avec les balises d'intégrité\n" -#: src/integritysetup.c:579 +#: src/integritysetup.c:582 #, c-format msgid "" "\n" @@ -3352,48 +3352,48 @@ msgstr "" "\tAlgorithme de somme de contrôle : %s\n" "\tTaille maximale du fichier de clé : %dko\n" -#: src/integritysetup.c:636 +#: src/integritysetup.c:639 #, c-format msgid "Invalid --%s size. Maximum is %u bytes." msgstr "La taille --%s n'est pas valide. Le maximum est %u octets." -#: src/integritysetup.c:739 +#: src/integritysetup.c:742 msgid "Both key file and key size options must be specified." msgstr "Les options du fichier de clé et de la taille de la clé doivent être spécifiées toutes les deux." -#: src/integritysetup.c:743 +#: src/integritysetup.c:746 msgid "Both journal integrity key file and key size options must be specified." msgstr "Les options du fichier de clé de l'intégrité du journal et de la taille de la clé doivent être spécifiées toutes les deux." -#: src/integritysetup.c:746 +#: src/integritysetup.c:749 msgid "Journal integrity algorithm must be specified if journal integrity key is used." msgstr "L'algorithme d'intégrité du journal doit être spécifié si la clé d'intégrité du journal est utilisée." -#: src/integritysetup.c:750 +#: src/integritysetup.c:753 msgid "Both journal encryption key file and key size options must be specified." msgstr "Les options du fichier de clé de chiffrement du journal et de la taille de la clé doivent être spécifiées toutes les deux." -#: src/integritysetup.c:753 +#: src/integritysetup.c:756 msgid "Journal encryption algorithm must be specified if journal encryption key is used." msgstr "L'algorithme de chiffrement du journal doit être spécifié si la clé de chiffrement du journal est utilisée." -#: src/integritysetup.c:757 +#: src/integritysetup.c:760 msgid "Recovery and bitmap mode options are mutually exclusive." msgstr "Les options de mode récupération et champ de bits sont mutuellement exclusives." -#: src/integritysetup.c:764 +#: src/integritysetup.c:767 msgid "Journal options cannot be used in bitmap mode." msgstr "Les options de journal ne peuvent pas être utilisées en mode champ de bits." -#: src/integritysetup.c:769 +#: src/integritysetup.c:772 msgid "Bitmap options can be used only in bitmap mode." msgstr "Les options de champ de bits peuvent uniquement être utilisées en mode champ de bits." -#: src/integritysetup.c:775 +#: src/integritysetup.c:778 msgid "Inline mode cannot be combined with journal or bitmap options." msgstr "Le mode en ligne ne peut pas être combiné avec les options de journal ou de carte de bits." -#: src/integritysetup.c:779 +#: src/integritysetup.c:782 msgid "Inline mode cannot be combined with separate data device." msgstr "Le mode en ligne ne peut pas être combiné avec un périphérique qui a des données séparées." @@ -4350,6 +4350,10 @@ msgstr "La méthode d'authentification par clé publique n'est pas permise sur l msgid "Public key authentication error: " msgstr "Erreur durant l'authentification par clé publique : " +#, c-format +#~ msgid "Failed to read or validate BITLK FVE metadata copy #%d from %s." +#~ msgstr "Impossible de lire ou de valider la copie des méta-données BITLK FVE #%d depuis %s." + #~ msgid "Activation of BITLK device with clear key protection is not supported." #~ msgstr "L'activation d'un périphérique BITLK avec une protection par une clé en clair n'est pas supporté." From bc05da72492301d2a895b43aa85fbd5165b63644 Mon Sep 17 00:00:00 2001 From: Hiroshi Takekawa Date: Tue, 31 Mar 2026 11:31:32 +0200 Subject: [PATCH 053/244] po: update ja.po (from translationproject.org) --- po/ja.po | 728 +++++++++++++++++++++++++++---------------------------- 1 file changed, 364 insertions(+), 364 deletions(-) diff --git a/po/ja.po b/po/ja.po index 30f4fa038..47d33e0e1 100644 --- a/po/ja.po +++ b/po/ja.po @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.2-rc0\n" +"Project-Id-Version: cryptsetup 2.8.5-rc0\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2025-12-12 18:51+0100\n" -"PO-Revision-Date: 2025-12-13 21:11+0900\n" +"POT-Creation-Date: 2026-03-30 14:18+0200\n" +"PO-Revision-Date: 2026-03-31 09:15+0900\n" "Last-Translator: Hiroshi Takekawa \n" "Language-Team: Japanese \n" "Language: ja\n" @@ -184,8 +184,8 @@ msgstr "デバイスサイズが論理ブロックサイズのアライメント msgid "Header detected but device %s is too small." msgstr "ヘッダが検出されましたがデバイス %s が小さすぎます。" -#: lib/setup.c:669 lib/setup.c:3760 lib/setup.c:5227 -#: lib/luks2/luks2_reencrypt.c:3945 lib/luks2/luks2_reencrypt.c:4434 +#: lib/setup.c:669 lib/setup.c:3760 lib/setup.c:5238 +#: lib/luks2/luks2_reencrypt.c:3948 lib/luks2/luks2_reencrypt.c:4437 msgid "This operation is not supported for this device type." msgstr "この操作はこのデバイスタイプではサポートされていません。" @@ -198,10 +198,10 @@ msgid "Failed to rollback LUKS2 metadata in memory." msgstr "メモリ上の LUKS2 メタデータのロールバックに失敗しました。" #: lib/setup.c:893 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 -#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1782 -#: src/cryptsetup.c:1966 src/cryptsetup.c:2021 src/cryptsetup.c:2219 -#: src/cryptsetup.c:2364 src/cryptsetup.c:2642 src/cryptsetup.c:2955 -#: src/cryptsetup.c:3023 src/utils_reencrypt.c:2281 +#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 +#: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 +#: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2953 +#: src/cryptsetup.c:3021 src/utils_reencrypt.c:2281 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." @@ -218,7 +218,7 @@ msgid "No known cipher specification pattern detected for active device %s." msgstr "アクティブなデバイス %s に既知の暗号スペックパターンが検出されませんでした。" #: lib/setup.c:1515 lib/setup.c:3507 lib/setup.c:3599 lib/setup.c:3611 -#: lib/setup.c:3783 lib/setup.c:5805 +#: lib/setup.c:3783 lib/setup.c:5816 #, c-format msgid "Device %s is not active." msgstr "デバイス %s はアクティブではありません。" @@ -245,7 +245,7 @@ msgid "Detached metadata device is not supported for this crypt type." msgstr "分離したメタデータデバイスはこの暗号タイプではサポートされていません。" #: lib/setup.c:1639 lib/setup.c:1887 lib/luks2/luks2_reencrypt.c:3034 -#: src/cryptsetup.c:1494 src/cryptsetup.c:3762 +#: src/cryptsetup.c:1492 src/cryptsetup.c:3760 msgid "Unsupported encryption sector size." msgstr "サポートされていない暗号化セクタサイズです。" @@ -298,9 +298,9 @@ msgstr "暗号 %s-%s (キーサイズ %zd ビット) は利用できません。 msgid "WARNING: The device activation will fail, dm-crypt is missing support for requested encryption sector size.\n" msgstr "警告: デバイスアクティベーションが失敗しました。dm-crypt が要求された暗号セクタサイズをサポートしていません。\n" -#: lib/setup.c:2091 lib/setup.c:2458 lib/setup.c:2520 lib/utils_device.c:896 +#: lib/setup.c:2091 lib/setup.c:2458 lib/setup.c:2520 lib/utils_device.c:906 #: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3073 -#: lib/luks2/luks2_reencrypt.c:4494 +#: lib/luks2/luks2_reencrypt.c:4497 #, c-format msgid "Device %s is too small." msgstr "デバイス %s のサイズが小さすぎます。" @@ -458,7 +458,7 @@ msgid "Unsupported parameters on device %s." msgstr "デバイス %s のパラメータはサポートしていません。" #: lib/setup.c:3521 lib/setup.c:3624 lib/luks2/luks2_reencrypt.c:2928 -#: lib/luks2/luks2_reencrypt.c:3197 lib/luks2/luks2_reencrypt.c:3591 +#: lib/luks2/luks2_reencrypt.c:3197 lib/luks2/luks2_reencrypt.c:3594 #, c-format msgid "Mismatching parameters on device %s." msgstr "デバイス %s のパラメータがミスマッチしています。" @@ -468,7 +468,7 @@ msgid "Crypt devices mismatch." msgstr "Crypt デバイスが一致しません。" #: lib/setup.c:3679 lib/setup.c:3684 lib/luks2/luks2_reencrypt.c:2412 -#: lib/luks2/luks2_reencrypt.c:2944 lib/luks2/luks2_reencrypt.c:4233 +#: lib/luks2/luks2_reencrypt.c:2944 lib/luks2/luks2_reencrypt.c:4236 #, c-format msgid "Failed to reload device %s." msgstr "デバイス %s のリロードに失敗しました。" @@ -480,8 +480,8 @@ msgid "Failed to suspend device %s." msgstr "デバイス %s のサスペンドに失敗しました。" #: lib/setup.c:3702 lib/luks2/luks2_reencrypt.c:2396 -#: lib/luks2/luks2_reencrypt.c:2979 lib/luks2/luks2_reencrypt.c:4146 -#: lib/luks2/luks2_reencrypt.c:4237 +#: lib/luks2/luks2_reencrypt.c:2979 lib/luks2/luks2_reencrypt.c:4149 +#: lib/luks2/luks2_reencrypt.c:4240 #, c-format msgid "Failed to resume device %s." msgstr "デバイス %s のリジュームに失敗しました。" @@ -563,187 +563,187 @@ msgstr "デバイス %s の再開中にエラー。" msgid "Failed to unlink volume key from user specified keyring." msgstr "ボリュームキーを指定されたキーリングからアンリンクできません。" -#: lib/setup.c:4423 lib/setup.c:5592 +#: lib/setup.c:4423 lib/setup.c:5603 msgid "Failed to link volume key in user defined keyring." msgstr "ボリュームキーを指定されたキーリングにリンクできません。" -#: lib/setup.c:4521 src/cryptsetup.c:2723 +#: lib/setup.c:4522 src/cryptsetup.c:2721 #, c-format msgid "Volume %s is not suspended." msgstr "ボリューム %s は停止されていません。" -#: lib/setup.c:4622 lib/setup.c:7265 lib/setup.c:7287 lib/setup.c:7341 -#: src/cryptsetup.c:1858 src/cryptsetup.c:2262 src/cryptsetup.c:2280 +#: lib/setup.c:4633 lib/setup.c:7276 lib/setup.c:7298 lib/setup.c:7352 +#: src/cryptsetup.c:1856 src/cryptsetup.c:2260 src/cryptsetup.c:2278 #: src/utils_reencrypt.c:305 src/utils_reencrypt.c:1966 msgid "Volume key does not match the volume." msgstr "ボリュームキーがボリュームに合いません。" -#: lib/setup.c:4776 +#: lib/setup.c:4787 msgid "Failed to swap new key slot." msgstr "新しいキースロットを交換できませんでした。" -#: lib/setup.c:4874 +#: lib/setup.c:4885 #, c-format msgid "Key slot %d is invalid." msgstr "キースロット %d は不正です。" -#: lib/setup.c:4880 src/cryptsetup.c:1979 src/cryptsetup.c:2439 -#: src/cryptsetup.c:3123 src/cryptsetup.c:3183 +#: lib/setup.c:4891 src/cryptsetup.c:1977 src/cryptsetup.c:2437 +#: src/cryptsetup.c:3121 src/cryptsetup.c:3181 #, c-format msgid "Keyslot %d is not active." msgstr "キースロット %d は非アクティブです。" -#: lib/setup.c:4899 +#: lib/setup.c:4910 msgid "Device header overlaps with data area." msgstr "デバイスヘッダがデータ領域に重なっています。" -#: lib/setup.c:5120 +#: lib/setup.c:5131 msgid "Reencryption in-progress. Cannot activate device." msgstr "既に再暗号化中です。デバイスをアクティベートできません。" -#: lib/setup.c:5122 lib/luks2/luks2_json_metadata.c:2888 -#: lib/luks2/luks2_reencrypt.c:3722 +#: lib/setup.c:5133 lib/luks2/luks2_json_metadata.c:2888 +#: lib/luks2/luks2_reencrypt.c:3725 msgid "Failed to get reencryption lock." msgstr "再暗号化ロックを取得できません。" -#: lib/setup.c:5144 +#: lib/setup.c:5155 msgid "LUKS2 reencryption recovery using volume key(s) failed." msgstr "ボリュームキーを使った LUKS2 の再暗号化のリカバリに失敗しました。" -#: lib/setup.c:5280 +#: lib/setup.c:5291 #, c-format msgid "Device %s already exists." msgstr "デバイス %s は既に存在します。" -#: lib/setup.c:5287 +#: lib/setup.c:5298 #, c-format msgid "Cannot use device %s, name is invalid or still in use." msgstr "デバイス %s を使えません。名前が不正か使用中です。" -#: lib/setup.c:5299 +#: lib/setup.c:5310 msgid "Reencryption volume keys do not match the volume." msgstr "再暗号化ボリュームキーがボリュームに合いません。" -#: lib/setup.c:5316 +#: lib/setup.c:5327 msgid "Incorrect volume key specified for plain device." msgstr "正しくないボリュームキーがプレーンデバイスに指定されました。" -#: lib/setup.c:5342 lib/setup.c:5403 +#: lib/setup.c:5353 lib/setup.c:5414 msgid "Device type is not properly initialized." msgstr "デバイスタイプが正しく初期化されていません。" -#: lib/setup.c:5441 +#: lib/setup.c:5452 msgid "Kernel keyring is not supported by the kernel." msgstr "カーネルがカーネルキーリングをサポートしていません。" -#: lib/setup.c:5445 +#: lib/setup.c:5456 msgid "Kernel keyring missing: required for passing signature to kernel." msgstr "署名をカーネルに渡すのに必要なカーネルキーリングをカーネルがサポートしていません。" -#: lib/setup.c:5500 +#: lib/setup.c:5511 #, c-format msgid "Cannot use keyring key %s." msgstr "キーリングキー %s が使えません。" -#: lib/setup.c:5713 +#: lib/setup.c:5724 msgid "Incorrect root hash specified for verity device." msgstr "正しくないルートハッシュが verity デバイスに指定されました。" -#: lib/setup.c:5754 lib/setup.c:5779 +#: lib/setup.c:5765 lib/setup.c:5790 msgid "OPAL does not support deferred deactivation." msgstr "OPAL は遅延デアクティベーションをサポートしていません。" -#: lib/setup.c:5769 lib/setup.c:5800 lib/luks2/luks2_json_metadata.c:2953 +#: lib/setup.c:5780 lib/setup.c:5811 lib/luks2/luks2_json_metadata.c:2953 #: src/utils_reencrypt.c:89 #, c-format msgid "Device %s is still in use." msgstr "デバイス %s は使用中です。" -#: lib/setup.c:5787 +#: lib/setup.c:5798 #, c-format msgid "Could not cancel deferred remove from device %s." msgstr "デバイス %s からの遅延削除をキャンセルできませんでした。" -#: lib/setup.c:5809 +#: lib/setup.c:5820 #, c-format msgid "Invalid device %s." msgstr "デバイス %s は不正です。" -#: lib/setup.c:5956 +#: lib/setup.c:5967 msgid "Volume key buffer too small." msgstr "ボリュームキーのバッファが小さすぎます。" -#: lib/setup.c:5967 +#: lib/setup.c:5978 msgid "Cannot retrieve volume key for LUKS2 device." msgstr "LUKS2 デバイス向けのボリュームキーが取得できません。" -#: lib/setup.c:5976 +#: lib/setup.c:5987 msgid "Cannot retrieve volume key for LUKS1 device." msgstr "LUKS1 デバイス向けのボリュームキーが取得できません。" -#: lib/setup.c:5990 +#: lib/setup.c:6001 msgid "Cannot retrieve volume key for plain device." msgstr "プレーンデバイス向けのボリュームキーが取得できません。" -#: lib/setup.c:5998 +#: lib/setup.c:6009 msgid "Cannot retrieve root hash for verity device." msgstr "verity デバイスのルートハッシュが読み出せません。" -#: lib/setup.c:6007 +#: lib/setup.c:6018 msgid "Cannot retrieve volume key for BITLK device." msgstr "BITLK デバイス向けのボリュームキーが取得できません。" -#: lib/setup.c:6012 +#: lib/setup.c:6023 msgid "Cannot retrieve volume key for FVAULT2 device." msgstr "FVAULT2 デバイス向けのボリュームキーが取得できません。" -#: lib/setup.c:6014 +#: lib/setup.c:6025 #, c-format msgid "This operation is not supported for %s crypt device." msgstr "この操作は %s 暗号化デバイスではサポートされていません。" -#: lib/setup.c:6199 lib/setup.c:6210 +#: lib/setup.c:6210 lib/setup.c:6221 msgid "Dump operation is not supported for this device type." msgstr "このデバイスタイプはダンプ操作をサポートしていません。" -#: lib/setup.c:6590 +#: lib/setup.c:6601 #, c-format msgid "Data offset is not multiple of %u bytes." msgstr "データオフセットが %u バイトの倍数である必要があります。" -#: lib/setup.c:6898 +#: lib/setup.c:6909 #, c-format msgid "Cannot convert device %s which is still in use." msgstr "使用中のデバイス %s を変換できません。" -#: lib/setup.c:7206 lib/setup.c:7350 +#: lib/setup.c:7217 lib/setup.c:7361 #, c-format msgid "Failed to assign keyslot %u as the new volume key." msgstr "新しいボリュームキー向けのキースロット %u を確保できません。" -#: lib/setup.c:7230 +#: lib/setup.c:7241 msgid "Failed to initialize default LUKS2 keyslot parameters." msgstr "デフォルト LUKS2 キースロットパラメータを初期化できません。" -#: lib/setup.c:7236 +#: lib/setup.c:7247 #, c-format msgid "Failed to assign keyslot %d to digest." msgstr "ダイジェストするためのキースロット %d が確保できません。" -#: lib/setup.c:7467 +#: lib/setup.c:7478 msgid "Cannot add key slot, all slots disabled and no volume key provided." msgstr "キースロットを追加できません。全てのスロットが無効でボリュームキーが渡されませんでした。" -#: lib/setup.c:7540 lib/verity/verity.c:333 +#: lib/setup.c:7551 lib/verity/verity.c:333 msgid "Failed to load key in kernel keyring." msgstr "キーをカーネルキーリングにロードできません。" -#: lib/setup.c:7731 +#: lib/setup.c:7742 #, c-format msgid "Could not find keyring described by \"%s\"." msgstr "キーリング \"%s\" が見つかりませんでした。" -#: lib/setup.c:7796 +#: lib/setup.c:7807 msgid "Failed to acquire global memory-hard access serialization lock." msgstr "グローバル memory-hard アクセス直列化ロックが取れません。" @@ -800,40 +800,45 @@ msgstr "デバイス %s は互換性がありません。" msgid "Ignoring bogus optimal-io size for data device (%u bytes)." msgstr "データデバイスのおかしな(bogus) optimal-io サイズ (%u バイト) は無視します。" -#: lib/utils_device.c:707 +#: lib/utils_device.c:711 +#, c-format +msgid "Cannot grow %s to % bytes (%s)." +msgstr "%s を % バイトまで拡げられませんでした (%s)。" + +#: lib/utils_device.c:717 #, c-format msgid "Device %s is too small. Need at least % bytes." msgstr "デバイス %s が小さすぎます。少なくとも % バイト必要です。" -#: lib/utils_device.c:788 +#: lib/utils_device.c:798 #, c-format msgid "Cannot use device %s which is in use (already mapped or mounted)." msgstr "デバイス %s は使用中で使えません (既にマップされているかマウントされています)。" -#: lib/utils_device.c:792 +#: lib/utils_device.c:802 #, c-format msgid "Cannot use device %s, permission denied." msgstr "デバイス %s が使えません、拒否されました。" -#: lib/utils_device.c:795 +#: lib/utils_device.c:805 #, c-format msgid "Cannot get info about device %s." msgstr "デバイス %s についての情報が取得できません。" -#: lib/utils_device.c:818 +#: lib/utils_device.c:828 msgid "Cannot use a loopback device, running as non-root user." msgstr "ループバックデバイスが使えません、非 root ユーザで実行していませんか。" -#: lib/utils_device.c:829 +#: lib/utils_device.c:839 msgid "Attaching loopback device failed (loop device with autoclear flag is required)." msgstr "ループデバイスのアタッチできません (autoclear 付きのループデバイスが必要です)。" -#: lib/utils_device.c:877 +#: lib/utils_device.c:887 #, c-format msgid "Requested offset is beyond real size of device %s." msgstr "指定されたオフセットはデバイス %s の実際のサイズを超えています。" -#: lib/utils_device.c:885 +#: lib/utils_device.c:895 #, c-format msgid "Device %s has zero size." msgstr "デバイス %s のサイズが 0 です。" @@ -976,9 +981,9 @@ msgstr "キースロットを暗号化中にI/Oエラーが発生しました。 #: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:356 #: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:668 -#: lib/fvault2/fvault2.c:870 lib/verity/verity.c:67 lib/verity/verity.c:183 +#: lib/fvault2/fvault2.c:872 lib/verity/verity.c:67 lib/verity/verity.c:183 #: lib/verity/verity_hash.c:312 lib/verity/verity_hash.c:321 -#: lib/verity/verity_hash.c:341 lib/verity/verity_fec.c:247 +#: lib/verity/verity_hash.c:350 lib/verity/verity_fec.c:247 #: lib/verity/verity_fec.c:259 lib/verity/verity_fec.c:264 #: lib/luks2/luks2_json_metadata.c:1521 src/utils_reencrypt_luks1.c:108 #: src/utils_reencrypt_luks1.c:120 @@ -1123,7 +1128,7 @@ msgstr "LUKS 暗号モード %s は不正です。" msgid "LUKS hash %s is invalid." msgstr "LUKS ハッシュ %s は不正です。" -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1369 +#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 msgid "No known problems detected for LUKS header." msgstr "LUKS ヘッダに既知の不具合は検出されませんでした。" @@ -1216,11 +1221,11 @@ msgstr "TCRYPT パスフレーズの最大長 (%zu) を超えました。" msgid "PBKDF2 hash algorithm %s not available, skipping." msgstr "PBKDF2 ハッシュアルゴリズム %s が利用できないのでスキップします。" -#: lib/tcrypt/tcrypt.c:608 src/cryptsetup.c:1242 +#: lib/tcrypt/tcrypt.c:608 src/cryptsetup.c:1240 msgid "Required kernel crypto interface not available." msgstr "必要なカーネル crypto インターフェースが使用できません。" -#: lib/tcrypt/tcrypt.c:610 src/cryptsetup.c:1244 +#: lib/tcrypt/tcrypt.c:610 src/cryptsetup.c:1242 msgid "Ensure you have algif_skcipher kernel module loaded." msgstr "algif_skcipher カーネルモジュールをロードしてください。" @@ -1291,11 +1296,6 @@ msgstr "サポートされていないセクタサイズ % です。" msgid "Failed to read BITLK header from %s." msgstr "%s から BITLK ヘッダを読み出すのに失敗しました。" -#: lib/bitlk/bitlk.c:593 -#, c-format -msgid "Failed to read or validate BITLK FVE metadata copy #%d from %s." -msgstr "BITLK FVE メタデータコピー #%d の %s からの読み込み、もしくは検証ができませんでした。" - #: lib/bitlk/bitlk.c:603 #, c-format msgid "Failed to read and validate BITLK FVE metadata from %s." @@ -1371,42 +1371,42 @@ msgstr "この操作はサポートされていません。" msgid "Unexpected key data size." msgstr "予期しないキーデータサイズです。" -#: lib/bitlk/bitlk.c:1431 +#: lib/bitlk/bitlk.c:1442 msgid "This BITLK device is in an unsupported state and cannot be activated." msgstr "この BITLK デバイスはサポートされてない状態にあるためアクティベートできません。" -#: lib/bitlk/bitlk.c:1436 +#: lib/bitlk/bitlk.c:1447 #, c-format msgid "BITLK devices with type '%s' cannot be activated." msgstr "タイプ '%s' の BITLK デバイスはアクティベートできません。" -#: lib/bitlk/bitlk.c:1475 +#: lib/bitlk/bitlk.c:1486 #, c-format msgid "WARNING: BitLocker volume size % does not match the underlying device size %" msgstr "警告: BitLocker ボリュームサイズ % がデバイスサイズ % と一致しません" -#: lib/bitlk/bitlk.c:1602 +#: lib/bitlk/bitlk.c:1613 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK IV." msgstr "カーネルの dm-crypt が BITLK IV をサポートしていないためデバイスをアクティベートできません。" -#: lib/bitlk/bitlk.c:1606 +#: lib/bitlk/bitlk.c:1617 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK Elephant diffuser." msgstr "カーネルの dm-crypt が BITLK Elephant diffuser をサポートしていないためデバイスをアクティベートできません。" -#: lib/bitlk/bitlk.c:1610 +#: lib/bitlk/bitlk.c:1621 msgid "Cannot activate device, kernel dm-crypt is missing support for large sector size." msgstr "カーネルの dm-crypt がラージセクタサイズをサポートしていないためデバイスをアクティベートできません。" -#: lib/bitlk/bitlk.c:1614 +#: lib/bitlk/bitlk.c:1625 msgid "Cannot activate device, kernel dm-zero module is missing." msgstr "カーネルの dm-zero モジュールがないためデバイスをアクティベートできません。" -#: lib/fvault2/fvault2.c:530 +#: lib/fvault2/fvault2.c:532 #, c-format msgid "Could not read %u bytes of volume header." msgstr "ボリュームヘッダの %u バイトを読みこめませんでした。" -#: lib/fvault2/fvault2.c:542 +#: lib/fvault2/fvault2.c:544 #, c-format msgid "Unsupported FVAULT2 version %." msgstr "FVAULT2 のバージョン % はサポートされていません。" @@ -1483,23 +1483,23 @@ msgstr "検証がポジション % で失敗しました。" msgid "Hash area overflow." msgstr "ハッシュ領域がオーバーフロー。" -#: lib/verity/verity_hash.c:372 +#: lib/verity/verity_hash.c:381 msgid "Verification of data area failed." msgstr "データ領域の検証に失敗しました。" -#: lib/verity/verity_hash.c:377 +#: lib/verity/verity_hash.c:386 msgid "Verification of root hash failed." msgstr "ルートハッシュの検証に失敗しました。" -#: lib/verity/verity_hash.c:383 +#: lib/verity/verity_hash.c:392 msgid "Input/output error while creating hash area." msgstr "ハッシュ領域を生成中に I/O エラー。" -#: lib/verity/verity_hash.c:385 +#: lib/verity/verity_hash.c:394 msgid "Creation of hash area failed." msgstr "ハッシュ領域の作成に失敗しました。" -#: lib/verity/verity_hash.c:420 +#: lib/verity/verity_hash.c:429 #, c-format msgid "WARNING: Kernel cannot activate device if data block size exceeds page size (%u)." msgstr "警告: カーネルはデータブロックサイズがページサイズ (%u) を超えているとアクティベートできません。" @@ -1554,19 +1554,19 @@ msgstr "デバイス %s のサイズが不明です。" msgid "Incompatible kernel dm-integrity metadata (version %u) detected on %s." msgstr "互換性のないカーネルの dm-integrity のメタデータ (バージョン %u) が %s に検出されました。" -#: lib/integrity/integrity.c:304 lib/integrity/integrity.c:488 +#: lib/integrity/integrity.c:308 lib/integrity/integrity.c:492 msgid "Kernel does not support dm-integrity mapping." msgstr "カーネルが dm-integrity マッピングをサポートしていません。" -#: lib/integrity/integrity.c:310 +#: lib/integrity/integrity.c:314 msgid "Kernel does not support dm-integrity fixed metadata alignment." msgstr "カーネルが dm-integrity 固定メタデータアラインメントをサポートしていません。" -#: lib/integrity/integrity.c:319 +#: lib/integrity/integrity.c:323 msgid "Kernel refuses to activate insecure recalculate option (see legacy activation options to override)." msgstr "カーネルが安全でない再計算オプションを拒否しました (レガジーアクティベーションオプションでオーバーライドできます)。" -#: lib/integrity/integrity.c:325 +#: lib/integrity/integrity.c:329 msgid "Kernel does not support dm-integrity inline mode." msgstr "カーネルが dm-integrity インラインモードをサポートしていません。" @@ -1715,7 +1715,7 @@ msgstr "dm-integrity デバイスがデータセクタに対して期待通り msgid "Reencryption in-progress. Cannot deactivate device." msgstr "再暗号化が実行中なのでデバイスのデアクティベートできません。. Cannot deactivate device." -#: lib/luks2/luks2_json_metadata.c:2897 lib/luks2/luks2_reencrypt.c:4283 +#: lib/luks2/luks2_json_metadata.c:2897 lib/luks2/luks2_reencrypt.c:4286 #, c-format msgid "Failed to replace suspended device %s with dm-error target." msgstr "サスペンドされたデバイス %s を dm-error ターゲットで置き換えられません。" @@ -1794,7 +1794,7 @@ msgstr "UUID が %s のデバイスの状態が確認できません。" msgid "Unable to convert header with LUKSMETA additional metadata." msgstr "LUKSMETA メタデータ付きのヘッダは変換できません。" -#: lib/luks2/luks2_luks1_convert.c:590 lib/luks2/luks2_reencrypt.c:3890 +#: lib/luks2/luks2_luks1_convert.c:590 lib/luks2/luks2_reencrypt.c:3893 #, c-format msgid "Unable to use cipher specification %s-%s for LUKS2." msgstr "暗号スペック %s-%s は LUKS2 に使えません。" @@ -1878,7 +1878,7 @@ msgstr "デバイスサイズが計算ゾーンアライメント (%zu バイト #: lib/luks2/luks2_reencrypt.c:1410 lib/luks2/luks2_reencrypt.c:1596 #: lib/luks2/luks2_reencrypt.c:1679 lib/luks2/luks2_reencrypt.c:1721 -#: lib/luks2/luks2_reencrypt.c:4077 +#: lib/luks2/luks2_reencrypt.c:4080 msgid "Failed to initialize old segment storage wrapper." msgstr "古いセグメントのストレージラッパの初期化に失敗しました。" @@ -1886,7 +1886,7 @@ msgstr "古いセグメントのストレージラッパの初期化に失敗し msgid "Failed to initialize new segment storage wrapper." msgstr "新しいセグメントのストレージラッパの初期化に失敗しました。" -#: lib/luks2/luks2_reencrypt.c:1550 lib/luks2/luks2_reencrypt.c:4089 +#: lib/luks2/luks2_reencrypt.c:1550 lib/luks2/luks2_reencrypt.c:4092 msgid "Failed to initialize hotzone protection." msgstr "ホットゾーン保護の初期化に失敗しました。" @@ -1894,7 +1894,7 @@ msgstr "ホットゾーン保護の初期化に失敗しました。" msgid "Failed to read checksums for current hotzone." msgstr "現在のホットゾーンのチェックサムを読み込めません。" -#: lib/luks2/luks2_reencrypt.c:1630 lib/luks2/luks2_reencrypt.c:4104 +#: lib/luks2/luks2_reencrypt.c:1630 lib/luks2/luks2_reencrypt.c:4107 #, c-format msgid "Failed to read hotzone area starting at %." msgstr "% から始めるホットゾーンエリアを読み込めません。" @@ -1983,8 +1983,8 @@ msgstr "小さくしたデータサイズが実際のデバイスサイズより msgid "Data device is not aligned to encryption sector size (% bytes)." msgstr "データデバイスが暗号化セクタサイズにアラインされていません(% バイト)." -#: lib/luks2/luks2_reencrypt.c:3125 lib/luks2/luks2_reencrypt.c:3640 -#: lib/luks2/luks2_reencrypt.c:3661 +#: lib/luks2/luks2_reencrypt.c:3125 lib/luks2/luks2_reencrypt.c:3643 +#: lib/luks2/luks2_reencrypt.c:3664 #, c-format msgid "Failed to open %s in exclusive mode (already mapped or mounted)." msgstr "デバイス %s を排他モードでオープンでません (既にマップされているかマウントされています)。" @@ -1993,123 +1993,123 @@ msgstr "デバイス %s を排他モードでオープンでません (既にマ msgid "Device not marked for LUKS2 reencryption." msgstr "デバイスは LUKS2 再暗号化向けにマークされていません。" -#: lib/luks2/luks2_reencrypt.c:3349 lib/luks2/luks2_reencrypt.c:4400 +#: lib/luks2/luks2_reencrypt.c:3349 lib/luks2/luks2_reencrypt.c:4403 msgid "Failed to load LUKS2 reencryption context." msgstr "LUKS2 再暗号化コンテキストをロードできません。" -#: lib/luks2/luks2_reencrypt.c:3441 lib/luks2/luks2_reencrypt.c:3781 +#: lib/luks2/luks2_reencrypt.c:3444 lib/luks2/luks2_reencrypt.c:3784 msgid "Device is not in reencryption." msgstr "デバイス %s は再暗号化中ではありません。" -#: lib/luks2/luks2_reencrypt.c:3448 lib/luks2/luks2_reencrypt.c:3788 +#: lib/luks2/luks2_reencrypt.c:3451 lib/luks2/luks2_reencrypt.c:3791 msgid "Reencryption process is already running." msgstr "既に再暗号化中です。" -#: lib/luks2/luks2_reencrypt.c:3450 lib/luks2/luks2_reencrypt.c:3790 +#: lib/luks2/luks2_reencrypt.c:3453 lib/luks2/luks2_reencrypt.c:3793 msgid "Failed to acquire reencryption lock." msgstr "再暗号化ロックを取得できません。" -#: lib/luks2/luks2_reencrypt.c:3468 +#: lib/luks2/luks2_reencrypt.c:3471 msgid "Cannot proceed with reencryption. Run reencryption recovery first." msgstr "再暗号化を開始できません。再暗号化のリカバリを先にしてください。" -#: lib/luks2/luks2_reencrypt.c:3604 +#: lib/luks2/luks2_reencrypt.c:3607 msgid "Active device size and requested reencryption size don't match." msgstr "実際のデバイスサイズと要求された再暗号化サイズが一致しません。" -#: lib/luks2/luks2_reencrypt.c:3618 +#: lib/luks2/luks2_reencrypt.c:3621 msgid "Illegal device size requested in reencryption parameters." msgstr "再暗号化のパラメータとして不正なデバイスサイズが要求されました。" -#: lib/luks2/luks2_reencrypt.c:3720 +#: lib/luks2/luks2_reencrypt.c:3723 msgid "Reencryption in-progress. Cannot perform recovery." msgstr "既に再暗号化中です。復元を実行できません。" -#: lib/luks2/luks2_reencrypt.c:3741 +#: lib/luks2/luks2_reencrypt.c:3744 msgid "LUKS2 reencryption recovery failed." msgstr "LUKS2 の再暗号化は既に初期化されました。" -#: lib/luks2/luks2_reencrypt.c:3874 lib/luks2/luks2_reencrypt.c:4353 +#: lib/luks2/luks2_reencrypt.c:3877 lib/luks2/luks2_reencrypt.c:4356 msgid "Failed to initialize reencryption device stack." msgstr "再暗号化デバイススタックの初期化に失敗しました。" -#: lib/luks2/luks2_reencrypt.c:3907 +#: lib/luks2/luks2_reencrypt.c:3910 msgid "LUKS2 reencryption already initialized in metadata." msgstr "メタデータの LUKS2 の再暗号化は既に初期化されました。" -#: lib/luks2/luks2_reencrypt.c:3915 +#: lib/luks2/luks2_reencrypt.c:3918 msgid "Failed to initialize LUKS2 reencryption in metadata." msgstr "メタデータの LUKS2 再暗号化に失敗しました。" -#: lib/luks2/luks2_reencrypt.c:3968 lib/luks2/luks2_reencrypt.c:4000 -#: lib/luks2/luks2_reencrypt.c:4030 +#: lib/luks2/luks2_reencrypt.c:3971 lib/luks2/luks2_reencrypt.c:4003 +#: lib/luks2/luks2_reencrypt.c:4033 msgid "Reencryption is not supported for DAX (persistent memory) devices." msgstr "再暗号化は DAX デバイスではサポートされていません。" -#: lib/luks2/luks2_reencrypt.c:4059 +#: lib/luks2/luks2_reencrypt.c:4062 msgid "Failed to set device segments for next reencryption hotzone." msgstr "デバイスセグメントの次の再暗号化ホットゾーンの設定に失敗しました。" -#: lib/luks2/luks2_reencrypt.c:4112 +#: lib/luks2/luks2_reencrypt.c:4115 msgid "Failed to write reencryption resilience metadata." msgstr "再暗号化した耐性用メタデータを書き込めません。" -#: lib/luks2/luks2_reencrypt.c:4119 +#: lib/luks2/luks2_reencrypt.c:4122 msgid "Decryption failed." msgstr "復号に失敗しました。" -#: lib/luks2/luks2_reencrypt.c:4124 +#: lib/luks2/luks2_reencrypt.c:4127 #, c-format msgid "Failed to write hotzone area starting at %." msgstr "% から始まるホットゾーンエリアに書き込めません。" -#: lib/luks2/luks2_reencrypt.c:4129 +#: lib/luks2/luks2_reencrypt.c:4132 msgid "Failed to sync data." msgstr "データを sync できません。" -#: lib/luks2/luks2_reencrypt.c:4137 +#: lib/luks2/luks2_reencrypt.c:4140 msgid "Failed to update metadata after current reencryption hotzone completed." msgstr "現在のホットゾーンの再暗号化完了後にメタデータが更新できません。" -#: lib/luks2/luks2_reencrypt.c:4226 +#: lib/luks2/luks2_reencrypt.c:4229 msgid "Failed to write LUKS2 metadata." msgstr "LUKS2 メタデータが書き込めません。" -#: lib/luks2/luks2_reencrypt.c:4249 +#: lib/luks2/luks2_reencrypt.c:4252 msgid "Failed to wipe unused data device area." msgstr "未使用データデバイス領域を消せません。" -#: lib/luks2/luks2_reencrypt.c:4255 +#: lib/luks2/luks2_reencrypt.c:4258 #, c-format msgid "Failed to remove unused (unbound) keyslot %d." msgstr "未使用のキースロット %d を削除できませんでした。" -#: lib/luks2/luks2_reencrypt.c:4265 +#: lib/luks2/luks2_reencrypt.c:4268 msgid "Failed to remove reencryption keyslot." msgstr "再暗号化キースロットが削除できません。" -#: lib/luks2/luks2_reencrypt.c:4275 +#: lib/luks2/luks2_reencrypt.c:4278 #, c-format msgid "Fatal error while reencrypting chunk starting at %, % sectors long." msgstr "% から % セクタのチャンクの再暗号化中に致命的なエラー。" -#: lib/luks2/luks2_reencrypt.c:4279 +#: lib/luks2/luks2_reencrypt.c:4282 msgid "Online reencryption failed." msgstr "オンライン再暗号化に失敗しました。" -#: lib/luks2/luks2_reencrypt.c:4284 +#: lib/luks2/luks2_reencrypt.c:4287 msgid "Do not resume the device unless replaced with error target manually." msgstr "手動でエラーターゲットに置き換えた場合以外はデバイスのレジュームをしないでください。" -#: lib/luks2/luks2_reencrypt.c:4336 +#: lib/luks2/luks2_reencrypt.c:4339 msgid "Cannot proceed with reencryption. Unexpected reencryption status." msgstr "再暗号化を開始できません。予期しない再暗号化状態です。" -#: lib/luks2/luks2_reencrypt.c:4342 +#: lib/luks2/luks2_reencrypt.c:4345 msgid "Missing or invalid reencrypt context." msgstr "ないか不正な再暗号化コンテキストです。" -#: lib/luks2/luks2_reencrypt.c:4376 lib/luks2/luks2_reencrypt.c:4413 +#: lib/luks2/luks2_reencrypt.c:4379 lib/luks2/luks2_reencrypt.c:4416 msgid "Failed to update reencryption context." msgstr "再暗号化コンテキストが更新できません。" @@ -2145,7 +2145,7 @@ msgstr "キースロットの暗号化パラメータは LUKS2 デバイスで msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encryption." msgstr "キースロットの暗号化パラメータは LUKS2 キースロット暗号化と互換性がありません。" -#: src/cryptsetup.c:150 src/cryptsetup.c:1180 src/cryptsetup.c:1547 +#: src/cryptsetup.c:150 src/cryptsetup.c:1178 src/cryptsetup.c:1545 #: src/utils_reencrypt.c:1887 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." @@ -2173,7 +2173,7 @@ msgstr "警告: --hash パラメータは plain モードでキーファイル msgid "WARNING: The --keyfile-size option is being ignored, the read size is the same as the encryption key size.\n" msgstr "警告: --keyfile-size オプションは無視されて、読み込みサイズは暗号鍵のサイズと同じになります。\n" -#: src/cryptsetup.c:226 src/cryptsetup.c:1377 src/cryptsetup.c:1600 +#: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 #: src/integritysetup.c:188 src/utils_reencrypt.c:2138 #, c-format msgid "Blkid scan failed for %s." @@ -2184,9 +2184,9 @@ msgstr "%s の Blkid スキャンが失敗しました。" msgid "Detected device signature(s) on %s. Proceeding further may damage existing data." msgstr "%s にデバイス署名が検出されました。既にあるデータを破壊しかねません。" -#: src/cryptsetup.c:238 src/cryptsetup.c:1263 src/cryptsetup.c:1311 -#: src/cryptsetup.c:1384 src/cryptsetup.c:1524 src/cryptsetup.c:1612 -#: src/cryptsetup.c:2497 src/cryptsetup.c:2926 src/integritysetup.c:178 +#: src/cryptsetup.c:238 src/cryptsetup.c:1261 src/cryptsetup.c:1309 +#: src/cryptsetup.c:1382 src/cryptsetup.c:1522 src/cryptsetup.c:1610 +#: src/cryptsetup.c:2495 src/cryptsetup.c:2924 src/integritysetup.c:178 #: src/utils_reencrypt.c:111 src/utils_reencrypt.c:457 #: src/utils_reencrypt.c:925 msgid "Operation aborted.\n" @@ -2235,7 +2235,7 @@ msgstr "" "暗号化されたパーティションにパスフレーズなしでアクセス可能にます。\n" "このダンプは暗号化された安全な所に保存してください。" -#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2522 +#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2520 msgid "" "The header dump with volume key is sensitive information\n" "that allows access to encrypted partition without a passphrase.\n" @@ -2254,14 +2254,14 @@ msgstr "デバイス %s は有効な FVAULT2 デバイスではありません msgid "Cannot determine volume key size for FVAULT2, please use --key-size option." msgstr "FVAULT2 のボリュームキーサイズが決定できないので、--key-size を使ってください。" -#: src/cryptsetup.c:848 src/veritysetup.c:317 src/integritysetup.c:410 +#: src/cryptsetup.c:848 src/veritysetup.c:317 src/integritysetup.c:416 #, c-format msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "デバイス %s はまたアクティブで後から削除される予定になっています。.\n" -#: src/cryptsetup.c:881 src/cryptsetup.c:1810 src/cryptsetup.c:2084 -#: src/cryptsetup.c:2231 src/cryptsetup.c:2650 src/cryptsetup.c:2731 -#: src/cryptsetup.c:3264 +#: src/cryptsetup.c:881 src/cryptsetup.c:1808 src/cryptsetup.c:2082 +#: src/cryptsetup.c:2229 src/cryptsetup.c:2648 src/cryptsetup.c:2729 +#: src/cryptsetup.c:3262 #, c-format msgid "Failed to set external tokens path %s." msgstr "外部トークンパス %s の設定に失敗しました。" @@ -2270,59 +2270,59 @@ msgstr "外部トークンパス %s の設定に失敗しました。" msgid "Resize of active device requires volume key in keyring but --disable-keyring option is set." msgstr "アクティブなデバイスをリサイズするにはボリュームキーがキーリングに必要ですが、--disable-keyring が指定されています。" -#: src/cryptsetup.c:1059 +#: src/cryptsetup.c:1057 msgid "Benchmark interrupted." msgstr "ベンチマークが中止されました。" -#: src/cryptsetup.c:1080 +#: src/cryptsetup.c:1078 #, c-format msgid "PBKDF2-%-9s N/A\n" msgstr "PBKDF2-%-9s 計測値なし\n" -#: src/cryptsetup.c:1082 +#: src/cryptsetup.c:1080 #, c-format msgid "PBKDF2-%-9s %7u iterations per second for %zu-bit key\n" msgstr "PBKDF2-%-9s %7u 回/秒 (%zu ビットの鍵)\n" -#: src/cryptsetup.c:1096 +#: src/cryptsetup.c:1094 #, c-format msgid "%-10s N/A\n" msgstr "%-10s 計測値なし\n" -#: src/cryptsetup.c:1098 +#: src/cryptsetup.c:1096 #, c-format msgid "%-10s %4u iterations, %5u memory, %1u parallel threads (CPUs) for %zu-bit key (requested %u ms time)\n" msgstr "%-10s %4u 回, %5u KB使用, %1u スレッド (%zu のビットの鍵) (%u ms 計測)\n" -#: src/cryptsetup.c:1122 +#: src/cryptsetup.c:1120 msgid "Result of benchmark is not reliable." msgstr "ベンチマークの結果は信頼できません。" -#: src/cryptsetup.c:1172 +#: src/cryptsetup.c:1170 msgid "# Tests are approximate using memory only (no storage IO).\n" msgstr "# テストはストレージI/Oがなくメモリ上のもののため目安です。\n" #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1197 +#: src/cryptsetup.c:1195 #, c-format msgid "#%*s Algorithm | Key | Encryption | Decryption\n" msgstr "#%*s Algorithm | キー | 暗号化 | 復号化\n" -#: src/cryptsetup.c:1205 +#: src/cryptsetup.c:1203 #, c-format msgid "Cipher %s (with %i bits key) is not available." msgstr "暗号 %s (キーサイズ %i ビット) は利用できません。" #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1224 +#: src/cryptsetup.c:1222 msgid "# Algorithm | Key | Encryption | Decryption\n" msgstr "# Algorithm | キー | 暗号化 | 復号化\n" -#: src/cryptsetup.c:1235 +#: src/cryptsetup.c:1233 msgid "N/A" msgstr "計測値なし" -#: src/cryptsetup.c:1260 +#: src/cryptsetup.c:1258 msgid "" "Unprotected LUKS2 reencryption metadata detected. Please verify the reencryption operation is desirable (see luksDump output)\n" "and continue (upgrade metadata) only if you acknowledge the operation as genuine." @@ -2330,27 +2330,27 @@ msgstr "" "保護されていない LUKS2 再暗号化メタデータが検出されました。再暗号化操作が望ましいものか確認してください。(luksDump の出力を見てください)\n" "そのうえで、この操作が問題ないと確認できたら継続(メタデータのアップグレード)してください。" -#: src/cryptsetup.c:1266 +#: src/cryptsetup.c:1264 msgid "Enter passphrase to protect and upgrade reencryption metadata: " msgstr "再暗号化メタデータの保護とアップグレードのためのパスフレーズを入力してください: " -#: src/cryptsetup.c:1310 +#: src/cryptsetup.c:1308 msgid "Really proceed with LUKS2 reencryption recovery?" msgstr "本当に LUKS2 再暗号化リカバリを行いますか?" -#: src/cryptsetup.c:1319 +#: src/cryptsetup.c:1317 msgid "Enter passphrase to verify reencryption metadata digest: " msgstr "再暗号化メタデータダイジェストを検証するためのパスフレーズを入力してください: " -#: src/cryptsetup.c:1321 +#: src/cryptsetup.c:1319 msgid "Enter passphrase for reencryption recovery: " msgstr "再暗号化のリカバリのためのパスフレーズを入力してください: " -#: src/cryptsetup.c:1383 +#: src/cryptsetup.c:1381 msgid "Really try to repair LUKS device header?" msgstr "本当に LUKS デバイスヘッダの復元を試みていいですか?" -#: src/cryptsetup.c:1411 src/integritysetup.c:76 src/integritysetup.c:244 +#: src/cryptsetup.c:1409 src/integritysetup.c:76 src/integritysetup.c:244 msgid "" "\n" "Wipe interrupted." @@ -2358,7 +2358,7 @@ msgstr "" "\n" "ワイプが中断されました。" -#: src/cryptsetup.c:1416 src/integritysetup.c:81 src/integritysetup.c:283 +#: src/cryptsetup.c:1414 src/integritysetup.c:81 src/integritysetup.c:289 msgid "" "Wiping device to initialize integrity checksum.\n" "You can interrupt this by pressing CTRL+c (rest of not wiped device will contain invalid checksum).\n" @@ -2366,167 +2366,167 @@ msgstr "" "整合性チェックサムの初期化のためにデバイスのデータを消去しています。\n" "CTRL+c で中止できます (初期化されなかったデバイスのチェックサムは正しくなくなります)。\n" -#: src/cryptsetup.c:1438 src/integritysetup.c:103 +#: src/cryptsetup.c:1436 src/integritysetup.c:103 #, c-format msgid "Cannot deactivate temporary device %s." msgstr "一時的デバイス %s を非アクティブにできません。" -#: src/cryptsetup.c:1486 +#: src/cryptsetup.c:1484 msgid "OPAL hw-only encryption does not support --cipher and --key-size, options ignored." msgstr "OPAL hw-only 暗号化は --cipher や --key-size をサポートしないため、無視されました。" -#: src/cryptsetup.c:1499 +#: src/cryptsetup.c:1497 msgid "Integrity option can be used only for LUKS2 format." msgstr "整合性オプションは LUKS2 形式でしか使えません。" -#: src/cryptsetup.c:1504 src/cryptsetup.c:1584 +#: src/cryptsetup.c:1502 src/cryptsetup.c:1582 msgid "Unsupported LUKS2 metadata size options." msgstr "サポートされていない LUKS2 メタデータのサイズオプションです。" -#: src/cryptsetup.c:1509 +#: src/cryptsetup.c:1507 msgid "OPAL is supported only for LUKS2 format." msgstr "OPAL は LUKS2 フォーマットでしかサポートされていません。" -#: src/cryptsetup.c:1514 +#: src/cryptsetup.c:1512 msgid "Inline hw tags are supported only for LUKS2 format." msgstr "インライン hw タグは LUKS2 フォーマットでしかサポートされていません。" -#: src/cryptsetup.c:1523 +#: src/cryptsetup.c:1521 msgid "Header file does not exist, do you want to create it?" msgstr "ヘッダファイルがありません。作成しますか?" -#: src/cryptsetup.c:1531 +#: src/cryptsetup.c:1529 #, c-format msgid "Cannot create header file %s." msgstr "ヘッダファイル %s を作成できません。" -#: src/cryptsetup.c:1557 src/integritysetup.c:126 src/integritysetup.c:141 -#: src/integritysetup.c:150 src/integritysetup.c:322 src/integritysetup.c:330 -#: src/integritysetup.c:340 +#: src/cryptsetup.c:1555 src/integritysetup.c:126 src/integritysetup.c:141 +#: src/integritysetup.c:150 src/integritysetup.c:328 src/integritysetup.c:336 +#: src/integritysetup.c:346 msgid "No known integrity specification pattern detected." msgstr "サポートしている整合性方式が検出されませんでした。" -#: src/cryptsetup.c:1559 +#: src/cryptsetup.c:1557 msgid "Cannot use specified integrity key size." msgstr "指定されたジャーナル整合性キーのサイズが使えません。" -#: src/cryptsetup.c:1577 +#: src/cryptsetup.c:1575 #, c-format msgid "Cannot use %s as on-disk header." msgstr "%s を on-disk ヘッダとして使えません。" -#: src/cryptsetup.c:1606 src/integritysetup.c:172 +#: src/cryptsetup.c:1604 src/integritysetup.c:172 #, c-format msgid "This will overwrite data on %s irrevocably." msgstr "%s のデータを上書きします。戻せません。" -#: src/cryptsetup.c:1643 +#: src/cryptsetup.c:1641 msgid "OPAL Admin password cannot be empty." msgstr "OPAL 管理者パスワードは空ではいけません。" -#: src/cryptsetup.c:1657 src/cryptsetup.c:2101 src/cryptsetup.c:2244 -#: src/cryptsetup.c:2379 src/cryptsetup.c:2445 src/utils_reencrypt_luks1.c:428 +#: src/cryptsetup.c:1655 src/cryptsetup.c:2099 src/cryptsetup.c:2242 +#: src/cryptsetup.c:2377 src/cryptsetup.c:2443 src/utils_reencrypt_luks1.c:428 msgid "Failed to set pbkdf parameters." msgstr "pbkdf パラメータを設定できません。" -#: src/cryptsetup.c:1788 +#: src/cryptsetup.c:1786 msgid "Reduced data offset is allowed only for detached LUKS header." msgstr "分離された LUKS ヘッダでのみ少ないデータオフセットが使えます。" -#: src/cryptsetup.c:1795 +#: src/cryptsetup.c:1793 #, c-format msgid "LUKS file container %s is too small for activation, there is no remaining space for data." msgstr "LUKS ファイルコンテナ %s がアクティベートするには小さすぎます。データ用の領域に空きがありません。" -#: src/cryptsetup.c:1837 src/cryptsetup.c:2250 src/utils_reencrypt.c:277 +#: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:277 #: src/utils_reencrypt.c:369 src/utils_reencrypt.c:1907 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "キースロットのない LUKS のボリュームキーサイズが決定できないので、--key-size を使ってください。" -#: src/cryptsetup.c:1856 src/utils_reencrypt.c:303 +#: src/cryptsetup.c:1854 src/utils_reencrypt.c:303 msgid "Device requires two volume keys." msgstr "デバイスには2つのボリュームキーが必要です。" -#: src/cryptsetup.c:1891 +#: src/cryptsetup.c:1889 msgid "Some specified activation parameters were ignored with OPAL hw-only encryption." msgstr "いくつかの指定されたアクティベーションパラメータは OPAL hw-only 暗号化では無視されました。" -#: src/cryptsetup.c:1896 +#: src/cryptsetup.c:1894 msgid "Device activated but cannot make flags persistent." msgstr "デバイスはアクティベートされましたが、フラグを恒常的なものにできません。" -#: src/cryptsetup.c:1976 src/cryptsetup.c:2044 +#: src/cryptsetup.c:1974 src/cryptsetup.c:2042 #, c-format msgid "Keyslot %d is selected for deletion." msgstr "キースロット %d は削除対象として選択されました。" -#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 +#: src/cryptsetup.c:1986 src/cryptsetup.c:2046 msgid "This is the last keyslot. Device will become unusable after purging this key." msgstr "これは最後のキースロットです。このキーがなくなるとデバイスは使用不能になります。" -#: src/cryptsetup.c:1989 +#: src/cryptsetup.c:1987 msgid "Enter any remaining passphrase: " msgstr "残っているパスフレーズを入力してください: " -#: src/cryptsetup.c:1990 src/cryptsetup.c:2050 +#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 msgid "Operation aborted, the keyslot was NOT wiped.\n" msgstr "操作は中止されました。キースロットは消去されていません。\n" -#: src/cryptsetup.c:2026 +#: src/cryptsetup.c:2024 msgid "Enter passphrase to be deleted: " msgstr "削除するキーのパスフレーズを入力してください: " -#: src/cryptsetup.c:2076 src/cryptsetup.c:2428 src/cryptsetup.c:3088 -#: src/cryptsetup.c:3255 +#: src/cryptsetup.c:2074 src/cryptsetup.c:2426 src/cryptsetup.c:3086 +#: src/cryptsetup.c:3253 #, c-format msgid "Device %s is not a valid LUKS2 device." msgstr "デバイス %s は有効な LUKS2 デバイスではありません。" -#: src/cryptsetup.c:2115 src/cryptsetup.c:2314 +#: src/cryptsetup.c:2113 src/cryptsetup.c:2312 msgid "Enter new passphrase for key slot: " msgstr "キースロットの新しいパスフレーズを入力してください: " -#: src/cryptsetup.c:2149 src/utils_luks.c:342 +#: src/cryptsetup.c:2147 src/utils_luks.c:342 #, c-format msgid "Enter token PIN: " msgstr "トークンPINを入力してください: " -#: src/cryptsetup.c:2151 src/utils_luks.c:344 +#: src/cryptsetup.c:2149 src/utils_luks.c:344 #, c-format msgid "Enter token %d PIN: " msgstr "トークン %d PINを入力してください: " -#: src/cryptsetup.c:2210 +#: src/cryptsetup.c:2208 msgid "WARNING: The --key-slot parameter is used for new keyslot number.\n" msgstr "警告: --key-slot パラメータは新しいキースロット番号に使われます。\n" -#: src/cryptsetup.c:2287 src/utils_reencrypt_luks1.c:1094 +#: src/cryptsetup.c:2285 src/utils_reencrypt_luks1.c:1094 #, c-format msgid "Enter any existing passphrase: " msgstr "有効なパスフレーズをどれか入力してください: " -#: src/cryptsetup.c:2383 +#: src/cryptsetup.c:2381 msgid "Enter passphrase to be changed: " msgstr "変更するキーのパスフレーズを入力してください: " -#: src/cryptsetup.c:2399 src/utils_reencrypt_luks1.c:1080 +#: src/cryptsetup.c:2397 src/utils_reencrypt_luks1.c:1080 msgid "Enter new passphrase: " msgstr "新しいキーのパスフレーズを入力してください: " -#: src/cryptsetup.c:2449 +#: src/cryptsetup.c:2447 msgid "Enter passphrase for keyslot to be converted: " msgstr "変換されるキースロットのパスフレーズを入力してください: " -#: src/cryptsetup.c:2473 +#: src/cryptsetup.c:2471 msgid "Only one device argument for isLuks operation is supported." msgstr "isLuks は一つのデバイス引数しかサポートしていません。" -#: src/cryptsetup.c:2578 +#: src/cryptsetup.c:2576 #, c-format msgid "Keyslot %d does not contain unbound key." msgstr "キースロット %d は unbound キーを含んでいません。" -#: src/cryptsetup.c:2583 +#: src/cryptsetup.c:2581 msgid "" "The header dump with unbound key is sensitive information.\n" "This dump should be stored encrypted in a safe place." @@ -2534,52 +2534,52 @@ msgstr "" "unbound キーを使ったヘッダダンプは取り扱いに注意すべき情報です。\n" "このダンプは暗号化された安全な所に保存してください。" -#: src/cryptsetup.c:2678 src/cryptsetup.c:2714 +#: src/cryptsetup.c:2676 src/cryptsetup.c:2712 #, c-format msgid "%s is not active %s device name." msgstr "%s はアクティブな %s デバイスではありません。" -#: src/cryptsetup.c:2709 +#: src/cryptsetup.c:2707 #, c-format msgid "%s is not active LUKS device name or header is missing." msgstr "%s はアクティブな LUKS デバイス名ではないか、ヘッダがありません。" -#: src/cryptsetup.c:2786 src/cryptsetup.c:2805 +#: src/cryptsetup.c:2784 src/cryptsetup.c:2803 msgid "Option --header-backup-file is required." msgstr "オプション --header-backup-file が必要です。" -#: src/cryptsetup.c:2836 +#: src/cryptsetup.c:2834 #, c-format msgid "%s is not cryptsetup managed device." msgstr "%s は cryptsetup で管理されているデバイスではありません。" -#: src/cryptsetup.c:2847 +#: src/cryptsetup.c:2845 #, c-format msgid "Refresh is not supported for device type %s" msgstr "リフレッシュはデバイスタイプ %s ではサポートされていません。" -#: src/cryptsetup.c:2897 +#: src/cryptsetup.c:2895 #, c-format msgid "Unrecognized metadata device type %s." msgstr "%s は認識できないメタデータデータタイプです。" -#: src/cryptsetup.c:2899 +#: src/cryptsetup.c:2897 msgid "Command requires device and mapped name as arguments." msgstr "コマンドはデバイスとマップされた名前を引数として必要とします。" -#: src/cryptsetup.c:2917 +#: src/cryptsetup.c:2915 msgid "Enter OPAL PSID: " msgstr "OPAL PSID を入力してください: " -#: src/cryptsetup.c:2917 +#: src/cryptsetup.c:2915 msgid "Enter OPAL Admin password: " msgstr "OPAL 管理者パスワードを入力してください: " -#: src/cryptsetup.c:2925 +#: src/cryptsetup.c:2923 msgid "WARNING: WHOLE disk will be factory reset and all data will be lost! Continue?" msgstr "警告: ディスク「全体」が出荷状態にリセットされ、データは全て消失します!続けますか?" -#: src/cryptsetup.c:2968 +#: src/cryptsetup.c:2966 #, c-format msgid "" "This operation will erase all keyslots on device %s.\n" @@ -2588,363 +2588,363 @@ msgstr "" "この処理はデバイス %s の全てのキースロットを消去します。\n" "デバイスのデータは使用できなくなります。" -#: src/cryptsetup.c:2975 +#: src/cryptsetup.c:2973 msgid "Operation aborted, keyslots were NOT wiped.\n" msgstr "処理は中止されました。キースロットは消去されません。\n" -#: src/cryptsetup.c:3014 +#: src/cryptsetup.c:3012 msgid "Invalid LUKS type, only luks1 and luks2 are supported." msgstr "不正な LUKS タイプです。luks1 と luks2 しかサポートしていません。" -#: src/cryptsetup.c:3030 +#: src/cryptsetup.c:3028 #, c-format msgid "Device is already %s type." msgstr "デバイスは既にタイプ %s です。" -#: src/cryptsetup.c:3037 +#: src/cryptsetup.c:3035 #, c-format msgid "This operation will convert %s to %s format.\n" msgstr "この処理は %s から %s フォーマットに変換します。\n" -#: src/cryptsetup.c:3040 +#: src/cryptsetup.c:3038 msgid "Operation aborted, device was NOT converted.\n" msgstr "処理は中止されました。デバイスは変換されませんでした。\n" -#: src/cryptsetup.c:3080 +#: src/cryptsetup.c:3078 msgid "Option --priority, --label or --subsystem is missing." msgstr "オプション --priority, --label か --subsystem がありません。" -#: src/cryptsetup.c:3114 src/cryptsetup.c:3154 src/cryptsetup.c:3174 +#: src/cryptsetup.c:3112 src/cryptsetup.c:3152 src/cryptsetup.c:3172 #, c-format msgid "Token %d is invalid." msgstr "トークン %d は不正です。" -#: src/cryptsetup.c:3117 src/cryptsetup.c:3177 +#: src/cryptsetup.c:3115 src/cryptsetup.c:3175 #, c-format msgid "Token %d in use." msgstr "トークン %d は使用中です。" -#: src/cryptsetup.c:3129 +#: src/cryptsetup.c:3127 #, c-format msgid "Failed to add luks2-keyring token %d." msgstr "luks2-キーリングトークン %d を追加できませんでした。" -#: src/cryptsetup.c:3140 src/cryptsetup.c:3203 +#: src/cryptsetup.c:3138 src/cryptsetup.c:3201 #, c-format msgid "Failed to assign token %d to keyslot %d." msgstr "トークン %d をキースロット %d に割りあてられませんでした。" -#: src/cryptsetup.c:3157 +#: src/cryptsetup.c:3155 #, c-format msgid "Token %d is not in use." msgstr "トークン %d は使われていません。" -#: src/cryptsetup.c:3194 +#: src/cryptsetup.c:3192 msgid "Failed to import token from file." msgstr "ファイルからトークンをインポートできません。" -#: src/cryptsetup.c:3219 +#: src/cryptsetup.c:3217 #, c-format msgid "Failed to get token %d for export." msgstr "トークン %d をエクスポートのために取得できませんでした。" -#: src/cryptsetup.c:3232 +#: src/cryptsetup.c:3230 #, c-format msgid "Token %d is not assigned to keyslot %d." msgstr "トークン %d をキースロット %d に割りあてられませんでした。" -#: src/cryptsetup.c:3234 src/cryptsetup.c:3241 +#: src/cryptsetup.c:3232 src/cryptsetup.c:3239 #, c-format msgid "Failed to unassign token %d from keyslot %d." msgstr "トークン %d をキースロット %d の割り当てから解除できませんでした。" -#: src/cryptsetup.c:3300 +#: src/cryptsetup.c:3298 msgid "Option --tcrypt-hidden, --tcrypt-system or --tcrypt-backup is supported only for TCRYPT device." msgstr "--tcrypt-hidden と --tcrypt-system と --tcrypt-backup は TCRYPT デバイスしか使えません。" -#: src/cryptsetup.c:3303 +#: src/cryptsetup.c:3301 msgid "Option --veracrypt or --disable-veracrypt is supported only for TCRYPT device type." msgstr "--veracrypt や --disable-veracrypt は TCRYPT デバイスでしか使えません。" -#: src/cryptsetup.c:3306 +#: src/cryptsetup.c:3304 msgid "Option --veracrypt-pim is supported only for VeraCrypt compatible devices." msgstr "--veracrypt-pim は VeraCrypt 互換デバイスにしか使えません。" -#: src/cryptsetup.c:3310 +#: src/cryptsetup.c:3308 msgid "Option --veracrypt-query-pim is supported only for VeraCrypt compatible devices." msgstr "--veracrypt-query-pim は VeraCrypt 互換デバイスにしか使えません。" -#: src/cryptsetup.c:3312 +#: src/cryptsetup.c:3310 msgid "The options --veracrypt-pim and --veracrypt-query-pim are mutually exclusive." msgstr "--veracrypt-pim と --veracrypt-query-pim はどちらかしか使えません。" -#: src/cryptsetup.c:3321 +#: src/cryptsetup.c:3319 msgid "Option --persistent is not allowed with --test-passphrase." msgstr "--persistent は --test-passphrase と一緒には使えません。" -#: src/cryptsetup.c:3324 +#: src/cryptsetup.c:3322 msgid "Options --refresh and --test-passphrase are mutually exclusive." msgstr "--refresh と --test-passphrase は同時には使えません。" -#: src/cryptsetup.c:3327 +#: src/cryptsetup.c:3325 msgid "Option --shared is allowed only for open of plain device." msgstr "--shared は plain デバイスの open にしか使えません。" -#: src/cryptsetup.c:3330 +#: src/cryptsetup.c:3328 msgid "Option --skip is supported only for open of plain and loopaes devices." msgstr "--skip は plain か loopaes デバイスの open にしか使えません。" -#: src/cryptsetup.c:3333 +#: src/cryptsetup.c:3331 msgid "Option --offset with open action is only supported for plain and loopaes devices." msgstr "--offset は plain か loopaes デバイスの open にしか使えません。" -#: src/cryptsetup.c:3336 +#: src/cryptsetup.c:3334 msgid "Option --tcrypt-hidden cannot be combined with --allow-discards." msgstr "--tcrypt-hidden は --allow-discards と一緒に使えません。" -#: src/cryptsetup.c:3340 +#: src/cryptsetup.c:3338 msgid "Sector size option with open action is supported only for plain devices." msgstr "オープン時のセクタサイズオプションは plain デバイスでしかサポートされていません。" -#: src/cryptsetup.c:3344 +#: src/cryptsetup.c:3342 msgid "Large IV sectors option is supported only for opening plain type device with sector size larger than 512 bytes." msgstr "大きな IV セクタオプションは plain タイプでセクタサイズが 512 バイトより大きいものをオープンする時しかサポートしていません。" -#: src/cryptsetup.c:3349 +#: src/cryptsetup.c:3347 msgid "Option --test-passphrase is allowed only for open of LUKS, TCRYPT, BITLK and FVAULT2 devices." msgstr "--test-passphrase は LUKS か TCRYPT か BITLK か FVAULT2 デバイスの open にしか使えません。." -#: src/cryptsetup.c:3352 src/cryptsetup.c:3382 +#: src/cryptsetup.c:3350 src/cryptsetup.c:3380 msgid "Options --device-size and --size cannot be combined." msgstr "--device-size と --size は一緒に使えません。" -#: src/cryptsetup.c:3355 +#: src/cryptsetup.c:3353 msgid "Option --unbound is allowed only for open of luks device." msgstr "オプション --unbound は luks デバイスの open にしか使えません。" -#: src/cryptsetup.c:3358 +#: src/cryptsetup.c:3356 msgid "Option --unbound cannot be used without --test-passphrase." msgstr "オプション --unbound は --test-passphrase がないと使えません。" -#: src/cryptsetup.c:3362 +#: src/cryptsetup.c:3360 msgid "Option --volume-key-keyring cannot be combined with --hash or --volume-key-file." msgstr "--volume-key-keyring オプションは --hash や --volume-key-file と一緒には使えません。" -#: src/cryptsetup.c:3365 +#: src/cryptsetup.c:3363 msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "--volume-key-file オプションは対応する --key-size オプションとペアになる必要があります。" -#: src/cryptsetup.c:3374 src/veritysetup.c:673 src/integritysetup.c:784 +#: src/cryptsetup.c:3372 src/veritysetup.c:673 src/integritysetup.c:787 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "オプション --cancel-deferred と --deferred は同時に使えません。" -#: src/cryptsetup.c:3390 +#: src/cryptsetup.c:3388 msgid "Option --active-name can be set only for LUKS2 device." msgstr "オプション --active-nameは LUKS2 デバイスでしか設定できません。" -#: src/cryptsetup.c:3393 +#: src/cryptsetup.c:3391 msgid "Options --active-name and --force-offline-reencrypt cannot be combined." msgstr "オプション --active-name と --force-offline-reencrypt は一緒に使えません。" -#: src/cryptsetup.c:3396 +#: src/cryptsetup.c:3394 msgid "Options --new-volume-key-file and --keep-key cannot be combined." msgstr "--new-volume-key-file オプションと --keep-key は一緒に使えません。" -#: src/cryptsetup.c:3399 +#: src/cryptsetup.c:3397 msgid "Options --new-volume-key-keyring and --keep-key cannot be combined." msgstr "--new-volume-key-keyring オプションと --keep-key は一緒に使えません。" -#: src/cryptsetup.c:3407 src/cryptsetup.c:3437 +#: src/cryptsetup.c:3405 src/cryptsetup.c:3435 msgid "Keyslot specification is required." msgstr "キースロットの指定が必要です。" -#: src/cryptsetup.c:3415 +#: src/cryptsetup.c:3413 msgid "Options --align-payload and --offset cannot be combined." msgstr "--align-payload と --offset は一緒に使えません。" -#: src/cryptsetup.c:3418 +#: src/cryptsetup.c:3416 msgid "Option --integrity-no-wipe can be used only for format action with integrity extension." msgstr "--integrity-no-wipe は format で整合性拡張付きの時しか使えません。" -#: src/cryptsetup.c:3421 +#: src/cryptsetup.c:3419 msgid "Only one of --use-[u]random options is allowed." msgstr "--use-[u]random は一つしか使えません。" -#: src/cryptsetup.c:3429 +#: src/cryptsetup.c:3427 msgid "Key size is required with --unbound option." msgstr "--unbound にはキーサイズが必要です。" -#: src/cryptsetup.c:3449 +#: src/cryptsetup.c:3447 msgid "Invalid token action." msgstr "不正なトークンアクションです。" -#: src/cryptsetup.c:3452 +#: src/cryptsetup.c:3450 msgid "--key-description parameter is mandatory for token add action." msgstr "--key-description はトークン追加には必須です。" -#: src/cryptsetup.c:3456 src/cryptsetup.c:3469 +#: src/cryptsetup.c:3454 src/cryptsetup.c:3467 msgid "Action requires specific token. Use --token-id parameter." msgstr "トークンを必要としています。--token-id を使用してください。" -#: src/cryptsetup.c:3460 +#: src/cryptsetup.c:3458 msgid "Option --unbound is valid only with token add action." msgstr "オプション --unbound はトークンの追加にしか使えません。" -#: src/cryptsetup.c:3462 +#: src/cryptsetup.c:3460 msgid "Options --key-slot and --unbound cannot be combined." msgstr "--key-slot と --unbound は一緒に使えません。" -#: src/cryptsetup.c:3467 +#: src/cryptsetup.c:3465 msgid "Action requires specific keyslot. Use --key-slot parameter." msgstr "特定のキースロットを必要としています。--key-slot を使用してください。" -#: src/cryptsetup.c:3483 +#: src/cryptsetup.c:3481 msgid " [--type ] []" msgstr "<デバイス> [--type <タイプ>] [<名前>]" -#: src/cryptsetup.c:3483 src/veritysetup.c:487 src/integritysetup.c:551 +#: src/cryptsetup.c:3481 src/veritysetup.c:487 src/integritysetup.c:554 msgid "open device as " msgstr "デバイスを <名前> としてオープン" -#: src/cryptsetup.c:3484 src/cryptsetup.c:3485 src/cryptsetup.c:3486 -#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:552 -#: src/integritysetup.c:553 src/integritysetup.c:555 +#: src/cryptsetup.c:3482 src/cryptsetup.c:3483 src/cryptsetup.c:3484 +#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:555 +#: src/integritysetup.c:556 src/integritysetup.c:558 msgid "" msgstr "<名前>" -#: src/cryptsetup.c:3484 src/veritysetup.c:488 src/integritysetup.c:552 +#: src/cryptsetup.c:3482 src/veritysetup.c:488 src/integritysetup.c:555 msgid "close device (remove mapping)" msgstr "デバイスをクローズします (マッピングを削除します)" -#: src/cryptsetup.c:3485 src/integritysetup.c:555 +#: src/cryptsetup.c:3483 src/integritysetup.c:558 msgid "resize active device" msgstr "アクティブデバイスをリサイズ" -#: src/cryptsetup.c:3486 +#: src/cryptsetup.c:3484 msgid "show device status" msgstr "デバイスステータスを表示" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3485 msgid "[--cipher ]" msgstr "[--cipher <暗号>]" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3485 msgid "benchmark cipher" msgstr "暗号ベンチマーク" -#: src/cryptsetup.c:3488 src/cryptsetup.c:3489 src/cryptsetup.c:3490 -#: src/cryptsetup.c:3491 src/cryptsetup.c:3492 src/cryptsetup.c:3499 -#: src/cryptsetup.c:3500 src/cryptsetup.c:3501 src/cryptsetup.c:3502 -#: src/cryptsetup.c:3503 src/cryptsetup.c:3504 src/cryptsetup.c:3505 -#: src/cryptsetup.c:3506 src/cryptsetup.c:3507 src/cryptsetup.c:3508 +#: src/cryptsetup.c:3486 src/cryptsetup.c:3487 src/cryptsetup.c:3488 +#: src/cryptsetup.c:3489 src/cryptsetup.c:3490 src/cryptsetup.c:3497 +#: src/cryptsetup.c:3498 src/cryptsetup.c:3499 src/cryptsetup.c:3500 +#: src/cryptsetup.c:3501 src/cryptsetup.c:3502 src/cryptsetup.c:3503 +#: src/cryptsetup.c:3504 src/cryptsetup.c:3505 src/cryptsetup.c:3506 msgid "" msgstr "<デバイス>" -#: src/cryptsetup.c:3488 +#: src/cryptsetup.c:3486 msgid "try to repair on-disk metadata" msgstr "on-disk メタデータを修復しようとしています" -#: src/cryptsetup.c:3489 +#: src/cryptsetup.c:3487 msgid "reencrypt LUKS2 device" msgstr "LUKS2 デバイスを再暗号化" -#: src/cryptsetup.c:3490 +#: src/cryptsetup.c:3488 msgid "erase all keyslots (remove encryption key)" msgstr "全てのキースロットを消去します (暗号鍵も削除します)" -#: src/cryptsetup.c:3491 +#: src/cryptsetup.c:3489 msgid "convert LUKS from/to LUKS2 format" msgstr "LUKS2 から LUKS もしくは LUKS から LUKS2 形式に変換します" -#: src/cryptsetup.c:3492 +#: src/cryptsetup.c:3490 msgid "set permanent configuration options for LUKS2" msgstr "LUKS2 の permanent configuration オプションを設定します" -#: src/cryptsetup.c:3493 src/cryptsetup.c:3494 +#: src/cryptsetup.c:3491 src/cryptsetup.c:3492 msgid " []" msgstr "<デバイス> [<新しいキーファイル>]" -#: src/cryptsetup.c:3493 +#: src/cryptsetup.c:3491 msgid "formats a LUKS device" msgstr "LUKS デバイスをフォーマットします" -#: src/cryptsetup.c:3494 +#: src/cryptsetup.c:3492 msgid "add key to LUKS device" msgstr "LUKS デバイスにキーを追加します" -#: src/cryptsetup.c:3495 src/cryptsetup.c:3496 src/cryptsetup.c:3497 +#: src/cryptsetup.c:3493 src/cryptsetup.c:3494 src/cryptsetup.c:3495 msgid " []" msgstr "<デバイス> [<キーファイル>]" -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3493 msgid "removes supplied key or key file from LUKS device" msgstr "与えられたキーかキーファイルを LUKS デバイスから削除します。" -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3494 msgid "changes supplied key or key file of LUKS device" msgstr "与えられた LUKS デバイスのキーかキーファイルを変更します" -#: src/cryptsetup.c:3497 +#: src/cryptsetup.c:3495 msgid "converts a key to new pbkdf parameters" msgstr "キーを新しい pbkdf パラメータに変換します" -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3496 msgid " " msgstr "<デバイス> <キースロット>" -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3496 msgid "wipes key with number from LUKS device" msgstr "<キースロット>のキーを LUKS デバイスから削除します" -#: src/cryptsetup.c:3499 +#: src/cryptsetup.c:3497 msgid "print UUID of LUKS device" msgstr "LUKS デバイスの UUID を表示" -#: src/cryptsetup.c:3500 +#: src/cryptsetup.c:3498 msgid "tests for LUKS partition header" msgstr "<デバイス> の LUKS パーティションヘッダをテストします" -#: src/cryptsetup.c:3501 +#: src/cryptsetup.c:3499 msgid "dump LUKS partition information" msgstr "LUKS パーティション情報をダンプします" -#: src/cryptsetup.c:3502 +#: src/cryptsetup.c:3500 msgid "dump TCRYPT device information" msgstr "TCRYPT デバイス情報をダンプします" -#: src/cryptsetup.c:3503 +#: src/cryptsetup.c:3501 msgid "dump BITLK device information" msgstr "BITLK デバイス情報をダンプします" -#: src/cryptsetup.c:3504 +#: src/cryptsetup.c:3502 msgid "dump FVAULT2 device information" msgstr "FVAULT2 デバイス情報をダンプします" -#: src/cryptsetup.c:3505 +#: src/cryptsetup.c:3503 msgid "Suspend LUKS device and wipe key (all IOs are frozen)" msgstr "LUKS デバイスを停止してキーを削除します (全てのI/Oは停止します)" -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3504 msgid "Resume suspended LUKS device" msgstr "停止していた LUKS デバイスを再開します" -#: src/cryptsetup.c:3507 +#: src/cryptsetup.c:3505 msgid "Backup LUKS device header and keyslots" msgstr "LUKS デバイスヘッダとキースロットをバックアップします" -#: src/cryptsetup.c:3508 +#: src/cryptsetup.c:3506 msgid "Restore LUKS device header and keyslots" msgstr "LUKS デバイスヘッダとキースロットをリストアします" -#: src/cryptsetup.c:3509 +#: src/cryptsetup.c:3507 msgid " " msgstr " <デバイス>" -#: src/cryptsetup.c:3509 +#: src/cryptsetup.c:3507 msgid "Manipulate LUKS2 tokens" msgstr "LUKS2 トークンを操作します" -#: src/cryptsetup.c:3528 src/veritysetup.c:505 src/integritysetup.c:570 +#: src/cryptsetup.c:3526 src/veritysetup.c:505 src/integritysetup.c:573 msgid "" "\n" " is one of:\n" @@ -2952,7 +2952,7 @@ msgstr "" "\n" " は以下のうちの一つです:\n" -#: src/cryptsetup.c:3534 +#: src/cryptsetup.c:3532 msgid "" "\n" "You can also use old syntax aliases:\n" @@ -2964,7 +2964,7 @@ msgstr "" "\topen: create (plainOpen), luksOpen, loopaesOpen, tcryptOpen, bitlkOpen, fvault2Open\n" "\tclose: remove (plainClose), luksClose, loopaesClose, tcryptClose, bitlkClose, fvault2Close\n" -#: src/cryptsetup.c:3538 +#: src/cryptsetup.c:3536 #, c-format msgid "" "\n" @@ -2979,7 +2979,7 @@ msgstr "" "<キースロット> は変更する LUKS キースロット番号\n" "<キーファイル> は luskAddKey でオプションで与えられる新しいキーのキーファイル\n" -#: src/cryptsetup.c:3545 +#: src/cryptsetup.c:3543 #, c-format msgid "" "\n" @@ -2988,7 +2988,7 @@ msgstr "" "\n" "デフォルトのコンパイル時に決められたメタデータ形式は %s です(luksFormat で使われます)。\n" -#: src/cryptsetup.c:3550 +#: src/cryptsetup.c:3548 msgid "" "\n" "LUKS2 external token plugin support is enabled.\n" @@ -2996,12 +2996,12 @@ msgstr "" "\n" "LUKS2 外部トークンプラグインサポートは有効です。\n" -#: src/cryptsetup.c:3551 +#: src/cryptsetup.c:3549 #, c-format msgid "LUKS2 external token plugin path: %s.\n" msgstr "LUKS2 外部トークンプラグインパス: %s.\n" -#: src/cryptsetup.c:3553 +#: src/cryptsetup.c:3551 msgid "" "\n" "LUKS2 external token plugin support is disabled.\n" @@ -3009,7 +3009,7 @@ msgstr "" "\n" "LUKS2 外部トークンプラグインサポートは無効です。\n" -#: src/cryptsetup.c:3557 +#: src/cryptsetup.c:3555 #, c-format msgid "" "\n" @@ -3026,7 +3026,7 @@ msgstr "" "デフォルト LUKS2 向け PBKDF: %s\n" "\t繰り返す時間: %d, 使うメモリ: %dkB, 並列スレッド: %d\n" -#: src/cryptsetup.c:3568 +#: src/cryptsetup.c:3566 #, c-format msgid "" "\n" @@ -3041,122 +3041,122 @@ msgstr "" "\tplain: %s, キー: %d ビット, パスワードハッシュ: %s\n" "\tLUKS: %s, キー: %d ビット, LUKS ヘッダハッシュ: %s, 乱数生成: %s\n" -#: src/cryptsetup.c:3577 +#: src/cryptsetup.c:3575 msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: XTS モードのデフォルトキーサイズは (2つの内部キーがあるため) 倍になります。\n" -#: src/cryptsetup.c:3595 src/veritysetup.c:647 src/integritysetup.c:730 +#: src/cryptsetup.c:3593 src/veritysetup.c:647 src/integritysetup.c:733 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: は %s を引数で与える必要があります" -#: src/cryptsetup.c:3635 src/utils_reencrypt_luks1.c:1143 +#: src/cryptsetup.c:3633 src/utils_reencrypt_luks1.c:1143 msgid "Key slot is invalid." msgstr "キースロットは不正です。" -#: src/cryptsetup.c:3663 +#: src/cryptsetup.c:3661 msgid "Device size must be multiple of 512 bytes sector." msgstr "デバイスサイズは 512 バイトセクタの倍数である必要があります。" -#: src/cryptsetup.c:3668 +#: src/cryptsetup.c:3666 msgid "Invalid max reencryption hotzone size specification." msgstr "再暗号化ホットゾーン最大サイズの指定が不正です。" -#: src/cryptsetup.c:3682 src/cryptsetup.c:3699 src/cryptsetup.c:3711 +#: src/cryptsetup.c:3680 src/cryptsetup.c:3697 src/cryptsetup.c:3709 msgid "Key size must be a multiple of 8 bits" msgstr "キーサイズは 8bit の倍数でなければなりません" -#: src/cryptsetup.c:3689 +#: src/cryptsetup.c:3687 msgid "At most 2 key size specifications can be supplied." msgstr "多くても2つのキーサイズ設定しか指定できません。" -#: src/cryptsetup.c:3718 src/cryptsetup.c:3729 +#: src/cryptsetup.c:3716 src/cryptsetup.c:3727 #, c-format msgid "At most %d volume key specifications can be supplied." msgstr "多くても %d 個のボリュームキーしか指定できません。" -#: src/cryptsetup.c:3741 +#: src/cryptsetup.c:3739 #, c-format msgid "At most %d keyring link specifications can be supplied." msgstr "多くても %d 個のキーリングリンクしか指定できません。" -#: src/cryptsetup.c:3750 +#: src/cryptsetup.c:3748 msgid "Maximum device reduce size is 1 GiB." msgstr "デバイスを減らせる最大値は 1 GiB です。" -#: src/cryptsetup.c:3753 +#: src/cryptsetup.c:3751 msgid "Reduce size must be multiple of 512 bytes sector." msgstr "減らすサイズは 512 バイトセクタの倍数である必要があります。" -#: src/cryptsetup.c:3770 +#: src/cryptsetup.c:3768 msgid "Option --priority can be only ignore/normal/prefer." msgstr "--priority の引数は ignore/normal/prefer のいずれかのみです。" -#: src/cryptsetup.c:3789 src/veritysetup.c:568 src/integritysetup.c:650 +#: src/cryptsetup.c:3787 src/veritysetup.c:568 src/integritysetup.c:653 msgid "Show this help message" msgstr "このヘルプを表示します" -#: src/cryptsetup.c:3790 src/veritysetup.c:569 src/integritysetup.c:651 +#: src/cryptsetup.c:3788 src/veritysetup.c:569 src/integritysetup.c:654 msgid "Display brief usage" msgstr "コンパクトな使用法表示をします" -#: src/cryptsetup.c:3791 src/veritysetup.c:570 src/integritysetup.c:652 +#: src/cryptsetup.c:3789 src/veritysetup.c:570 src/integritysetup.c:655 msgid "Print package version" msgstr "パッケージのバージョンを表示" -#: src/cryptsetup.c:3802 src/veritysetup.c:581 src/integritysetup.c:663 +#: src/cryptsetup.c:3800 src/veritysetup.c:581 src/integritysetup.c:666 msgid "Help options:" msgstr "ヘルプオプション:" -#: src/cryptsetup.c:3825 src/veritysetup.c:602 src/integritysetup.c:683 +#: src/cryptsetup.c:3823 src/veritysetup.c:602 src/integritysetup.c:686 msgid "[OPTION...] " msgstr "[オプション...] <アクション> <アクション特有>" -#: src/cryptsetup.c:3834 src/veritysetup.c:611 src/integritysetup.c:694 +#: src/cryptsetup.c:3832 src/veritysetup.c:611 src/integritysetup.c:697 msgid "Argument missing." msgstr "<アクション> がありません。" -#: src/cryptsetup.c:3913 src/veritysetup.c:642 src/integritysetup.c:725 +#: src/cryptsetup.c:3911 src/veritysetup.c:642 src/integritysetup.c:728 msgid "Unknown action." msgstr "未知のアクションです。" -#: src/cryptsetup.c:3931 +#: src/cryptsetup.c:3929 msgid "Option --key-file takes precedence over specified key file argument." msgstr "--key-file は他で指定されたキーファイルを上書きします。" -#: src/cryptsetup.c:3937 +#: src/cryptsetup.c:3935 msgid "Only one --key-file argument is allowed." msgstr "--key-file は一つしか使えません。" -#: src/cryptsetup.c:3942 +#: src/cryptsetup.c:3940 msgid "Password-based key derivation function (PBKDF) can be only pbkdf2 or argon2i/argon2id." msgstr "パスワードからキーを作る関数 (PBKDF) は pbkdf2 argon2i argon2id のいずれかのみです。" -#: src/cryptsetup.c:3947 +#: src/cryptsetup.c:3945 msgid "PBKDF forced iterations cannot be combined with iteration time option." msgstr "PBKDF の繰り返し回数の強制と繰り返し時間指定オプションは共存できません。" -#: src/cryptsetup.c:3952 +#: src/cryptsetup.c:3950 msgid "Cannot link volume key to a keyring when keyring is disabled." msgstr "キーリングが無効化されているためボリュームキーをキーリングにリンクできません。" -#: src/cryptsetup.c:3957 +#: src/cryptsetup.c:3955 msgid "Cannot use keyring key description when keyring is disabled." msgstr "キーリングが無効化されているためキーリングキー記述を使えません。" -#: src/cryptsetup.c:3962 +#: src/cryptsetup.c:3960 msgid "Inline integrity must be used together with --integrity option." msgstr "インライン整合性拡張は --integrity オプション付きの時しか使えません。" -#: src/cryptsetup.c:3973 +#: src/cryptsetup.c:3971 msgid "Options --keyslot-cipher and --keyslot-key-size must be used together." msgstr "--keyslot-cipher と --keyslot-key-size は同時に使う必要があります。" -#: src/cryptsetup.c:3981 +#: src/cryptsetup.c:3979 msgid "No action taken. Invoked with --test-args option.\n" msgstr "--test-args オプションつきだったため、何もしません。\n" -#: src/cryptsetup.c:3994 +#: src/cryptsetup.c:3992 msgid "Cannot disable metadata locking." msgstr "メタデータロックを禁止できません。" @@ -3221,7 +3221,7 @@ msgstr "コマンドは か --root-hash-file オプションを引 msgid " " msgstr "<データデバイス> <ハッシュデバイス>" -#: src/veritysetup.c:485 src/integritysetup.c:550 +#: src/veritysetup.c:485 src/integritysetup.c:553 msgid "format device" msgstr "デバイスをフォーマット" @@ -3237,7 +3237,7 @@ msgstr "デバイスを検証" msgid " []" msgstr "<データデバイス> <名前> <ハッシュデバイス> [<ルートハッシュ>]" -#: src/veritysetup.c:489 src/integritysetup.c:553 +#: src/veritysetup.c:489 src/integritysetup.c:556 msgid "show active device status" msgstr "アクティブデバイスのステータスを表示" @@ -3245,7 +3245,7 @@ msgstr "アクティブデバイスのステータスを表示" msgid "" msgstr "<ハッシュデバイス>" -#: src/veritysetup.c:490 src/integritysetup.c:554 +#: src/veritysetup.c:490 src/integritysetup.c:557 msgid "show on-disk information" msgstr "ディスク上の情報を表示" @@ -3305,24 +3305,24 @@ msgstr "タグサイズ %u%s、内部整合性は %s でフォーマットされ msgid " (inline hw tags)" msgstr " (インラインHWタグ)" -#: src/integritysetup.c:297 +#: src/integritysetup.c:303 msgid "Setting recalculate flag is not supported, you may consider using --wipe instead." msgstr "再計算フラグの設定はサポートされていません。代わりに --wipe を使うことを検討してください。" -#: src/integritysetup.c:374 src/integritysetup.c:537 +#: src/integritysetup.c:380 src/integritysetup.c:540 #, c-format msgid "Device %s is not a valid INTEGRITY device." msgstr "デバイス %s が有効な INTEGRITY デバイスではありません。" -#: src/integritysetup.c:550 src/integritysetup.c:554 +#: src/integritysetup.c:553 src/integritysetup.c:557 msgid "" msgstr "<整合性デバイス>" -#: src/integritysetup.c:551 +#: src/integritysetup.c:554 msgid " " msgstr "<整合性デバイス> <名前>" -#: src/integritysetup.c:574 +#: src/integritysetup.c:577 #, c-format msgid "" "\n" @@ -3333,7 +3333,7 @@ msgstr "" "<名前> は %s に作られるデバイス\n" "<整合性デバイス> は整合性タグを格納するデバイス\n" -#: src/integritysetup.c:579 +#: src/integritysetup.c:582 #, c-format msgid "" "\n" @@ -3346,48 +3346,48 @@ msgstr "" "\tチェックサムアルゴリズム: %s\n" " 最大キーファイルサイズ: %dkB\n" -#: src/integritysetup.c:636 +#: src/integritysetup.c:639 #, c-format msgid "Invalid --%s size. Maximum is %u bytes." msgstr "不正な --%s サイズです。最大は %u バイトです。" -#: src/integritysetup.c:739 +#: src/integritysetup.c:742 msgid "Both key file and key size options must be specified." msgstr "キーファイルとキーサイズの両方の指定が必要です。" -#: src/integritysetup.c:743 +#: src/integritysetup.c:746 msgid "Both journal integrity key file and key size options must be specified." msgstr "ジャーナル整合性キーファイルとキーサイズの両方の指定が必要です。" -#: src/integritysetup.c:746 +#: src/integritysetup.c:749 msgid "Journal integrity algorithm must be specified if journal integrity key is used." msgstr "ジャーナル整合性キーを使う場合はアルゴリズムの指定が必要です。" -#: src/integritysetup.c:750 +#: src/integritysetup.c:753 msgid "Both journal encryption key file and key size options must be specified." msgstr "ジャーナル暗号キーファイルとキーサイズの両方の指定が必要です。" -#: src/integritysetup.c:753 +#: src/integritysetup.c:756 msgid "Journal encryption algorithm must be specified if journal encryption key is used." msgstr "ジャーナル暗号キーを使う場合はアルゴリズムの指定が必要です。" -#: src/integritysetup.c:757 +#: src/integritysetup.c:760 msgid "Recovery and bitmap mode options are mutually exclusive." msgstr "リカバリと bitmap モードオプションは同時には使えません。" -#: src/integritysetup.c:764 +#: src/integritysetup.c:767 msgid "Journal options cannot be used in bitmap mode." msgstr "ジャーナルオプションは bitmap モードでは使えません。" -#: src/integritysetup.c:769 +#: src/integritysetup.c:772 msgid "Bitmap options can be used only in bitmap mode." msgstr "bitmap オプションは bitmap モードでしか使えません。" -#: src/integritysetup.c:775 +#: src/integritysetup.c:778 msgid "Inline mode cannot be combined with journal or bitmap options." msgstr "インラインモードは journal や bitmap オプションと一緒に使えません。" -#: src/integritysetup.c:779 +#: src/integritysetup.c:782 msgid "Inline mode cannot be combined with separate data device." msgstr "インラインモードは分離データデバイスと一緒には使えません。" From b0eeab0cf544686f98adfe603ca43b701550ed83 Mon Sep 17 00:00:00 2001 From: Jakub Bogusz Date: Tue, 31 Mar 2026 11:31:32 +0200 Subject: [PATCH 054/244] po: update pl.po (from translationproject.org) --- po/pl.po | 730 +++++++++++++++++++++++++++---------------------------- 1 file changed, 365 insertions(+), 365 deletions(-) diff --git a/po/pl.po b/po/pl.po index 6356d6369..c72e7c39b 100644 --- a/po/pl.po +++ b/po/pl.po @@ -1,14 +1,14 @@ # Polish translation for cryptsetup. # Copyright (C) 2010 Free Software Foundation, Inc. # This file is put in the public domain. -# Jakub Bogusz , 2010-2025. +# Jakub Bogusz , 2010-2026. # msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.2-rc0\n" +"Project-Id-Version: cryptsetup 2.8.5-rc0\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2025-12-12 18:51+0100\n" -"PO-Revision-Date: 2025-12-13 15:15+0100\n" +"POT-Creation-Date: 2026-03-30 14:18+0200\n" +"PO-Revision-Date: 2026-03-30 17:31+0200\n" "Last-Translator: Jakub Bogusz \n" "Language-Team: Polish \n" "Language: pl\n" @@ -185,8 +185,8 @@ msgstr "Rozmiar urządzenia nie jest wyrównany do rozmiaru bloku logicznego urz msgid "Header detected but device %s is too small." msgstr "Wykryto nagłówek, ale urządzenie %s jest zbyt małe." -#: lib/setup.c:669 lib/setup.c:3760 lib/setup.c:5227 -#: lib/luks2/luks2_reencrypt.c:3945 lib/luks2/luks2_reencrypt.c:4434 +#: lib/setup.c:669 lib/setup.c:3760 lib/setup.c:5238 +#: lib/luks2/luks2_reencrypt.c:3948 lib/luks2/luks2_reencrypt.c:4437 msgid "This operation is not supported for this device type." msgstr "Ta operacja nie jest obsługiwana dla tego rodzaju urządzenia." @@ -199,10 +199,10 @@ msgid "Failed to rollback LUKS2 metadata in memory." msgstr "Nie udało się wycofać zmian w metadanych LUKS2 w pamięci." #: lib/setup.c:893 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 -#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1782 -#: src/cryptsetup.c:1966 src/cryptsetup.c:2021 src/cryptsetup.c:2219 -#: src/cryptsetup.c:2364 src/cryptsetup.c:2642 src/cryptsetup.c:2955 -#: src/cryptsetup.c:3023 src/utils_reencrypt.c:2281 +#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 +#: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 +#: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2953 +#: src/cryptsetup.c:3021 src/utils_reencrypt.c:2281 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." @@ -219,7 +219,7 @@ msgid "No known cipher specification pattern detected for active device %s." msgstr "Nie wykryto znanego wzorca określającego szyfr dla aktywnego urządzenia %s." #: lib/setup.c:1515 lib/setup.c:3507 lib/setup.c:3599 lib/setup.c:3611 -#: lib/setup.c:3783 lib/setup.c:5805 +#: lib/setup.c:3783 lib/setup.c:5816 #, c-format msgid "Device %s is not active." msgstr "Urządzenie %s nie jest aktywne." @@ -246,7 +246,7 @@ msgid "Detached metadata device is not supported for this crypt type." msgstr "Osobne urządzenie metadanych nie jest obsługiwane dla tego rodzaju szyfrowania." #: lib/setup.c:1639 lib/setup.c:1887 lib/luks2/luks2_reencrypt.c:3034 -#: src/cryptsetup.c:1494 src/cryptsetup.c:3762 +#: src/cryptsetup.c:1492 src/cryptsetup.c:3760 msgid "Unsupported encryption sector size." msgstr "Nieobsługiwany rozmiar sektora szyfrowania." @@ -299,9 +299,9 @@ msgstr "Szyfr %s-%s (rozmiar klucza w bitach: %zd) nie jest dostępny." msgid "WARNING: The device activation will fail, dm-crypt is missing support for requested encryption sector size.\n" msgstr "UWAGA: uaktywnienie urządzenia się nie powiedzie, dm-crypt nie ma obsługi żądanego rozmiaru sektora szyfrowania.\n" -#: lib/setup.c:2091 lib/setup.c:2458 lib/setup.c:2520 lib/utils_device.c:896 +#: lib/setup.c:2091 lib/setup.c:2458 lib/setup.c:2520 lib/utils_device.c:906 #: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3073 -#: lib/luks2/luks2_reencrypt.c:4494 +#: lib/luks2/luks2_reencrypt.c:4497 #, c-format msgid "Device %s is too small." msgstr "Urządzenie %s jest zbyt małe." @@ -459,7 +459,7 @@ msgid "Unsupported parameters on device %s." msgstr "Nieobsługiwane parametry urządzenia %s." #: lib/setup.c:3521 lib/setup.c:3624 lib/luks2/luks2_reencrypt.c:2928 -#: lib/luks2/luks2_reencrypt.c:3197 lib/luks2/luks2_reencrypt.c:3591 +#: lib/luks2/luks2_reencrypt.c:3197 lib/luks2/luks2_reencrypt.c:3594 #, c-format msgid "Mismatching parameters on device %s." msgstr "Niezgodne parametry dla urządzenia %s." @@ -469,7 +469,7 @@ msgid "Crypt devices mismatch." msgstr "Urządzenia szyfrowane nie zgadzają się." #: lib/setup.c:3679 lib/setup.c:3684 lib/luks2/luks2_reencrypt.c:2412 -#: lib/luks2/luks2_reencrypt.c:2944 lib/luks2/luks2_reencrypt.c:4233 +#: lib/luks2/luks2_reencrypt.c:2944 lib/luks2/luks2_reencrypt.c:4236 #, c-format msgid "Failed to reload device %s." msgstr "Nie udało się przeładować urządzenia %s." @@ -481,8 +481,8 @@ msgid "Failed to suspend device %s." msgstr "Nie udało się wstrzymać urządzenia %s." #: lib/setup.c:3702 lib/luks2/luks2_reencrypt.c:2396 -#: lib/luks2/luks2_reencrypt.c:2979 lib/luks2/luks2_reencrypt.c:4146 -#: lib/luks2/luks2_reencrypt.c:4237 +#: lib/luks2/luks2_reencrypt.c:2979 lib/luks2/luks2_reencrypt.c:4149 +#: lib/luks2/luks2_reencrypt.c:4240 #, c-format msgid "Failed to resume device %s." msgstr "Nie udało wznowić urządzenia %s." @@ -564,187 +564,187 @@ msgstr "Błąd podczas wznawiania urządzenia %s." msgid "Failed to unlink volume key from user specified keyring." msgstr "Nie udało się odłączyć klucza wolumenu z pęku kluczy podanego przez użytkownika." -#: lib/setup.c:4423 lib/setup.c:5592 +#: lib/setup.c:4423 lib/setup.c:5603 msgid "Failed to link volume key in user defined keyring." msgstr "Nie udało się dołączuć klucza wolumenu do pęku kluczy zdefiniowanego przez użytkownika." -#: lib/setup.c:4521 src/cryptsetup.c:2723 +#: lib/setup.c:4522 src/cryptsetup.c:2721 #, c-format msgid "Volume %s is not suspended." msgstr "Wolumen %s nie jest wstrzymany." -#: lib/setup.c:4622 lib/setup.c:7265 lib/setup.c:7287 lib/setup.c:7341 -#: src/cryptsetup.c:1858 src/cryptsetup.c:2262 src/cryptsetup.c:2280 +#: lib/setup.c:4633 lib/setup.c:7276 lib/setup.c:7298 lib/setup.c:7352 +#: src/cryptsetup.c:1856 src/cryptsetup.c:2260 src/cryptsetup.c:2278 #: src/utils_reencrypt.c:305 src/utils_reencrypt.c:1966 msgid "Volume key does not match the volume." msgstr "Klucz wolumenu nie pasuje do wolumenu." -#: lib/setup.c:4776 +#: lib/setup.c:4787 msgid "Failed to swap new key slot." msgstr "Nie udało się podstawić nowego klucza." -#: lib/setup.c:4874 +#: lib/setup.c:4885 #, c-format msgid "Key slot %d is invalid." msgstr "Numer klucza %d jest nieprawidłowy." -#: lib/setup.c:4880 src/cryptsetup.c:1979 src/cryptsetup.c:2439 -#: src/cryptsetup.c:3123 src/cryptsetup.c:3183 +#: lib/setup.c:4891 src/cryptsetup.c:1977 src/cryptsetup.c:2437 +#: src/cryptsetup.c:3121 src/cryptsetup.c:3181 #, c-format msgid "Keyslot %d is not active." msgstr "Klucz %d nie jest aktywny." -#: lib/setup.c:4899 +#: lib/setup.c:4910 msgid "Device header overlaps with data area." msgstr "Nagłówek urządzenia zachodzi na obszar danych." -#: lib/setup.c:5120 +#: lib/setup.c:5131 msgid "Reencryption in-progress. Cannot activate device." msgstr "Ponowne szyfrowanie trwa. Nie można uaktywnić urządzenia." -#: lib/setup.c:5122 lib/luks2/luks2_json_metadata.c:2888 -#: lib/luks2/luks2_reencrypt.c:3722 +#: lib/setup.c:5133 lib/luks2/luks2_json_metadata.c:2888 +#: lib/luks2/luks2_reencrypt.c:3725 msgid "Failed to get reencryption lock." msgstr "Nie udało się uzyskać blokady ponownego szyfrowania." -#: lib/setup.c:5144 +#: lib/setup.c:5155 msgid "LUKS2 reencryption recovery using volume key(s) failed." msgstr "Odtwarzanie ponownego szyfrowania LUKS2 przy użyciu kluczy wolumenu nie powiodło się." -#: lib/setup.c:5280 +#: lib/setup.c:5291 #, c-format msgid "Device %s already exists." msgstr "Urządzenie %s już istnieje." -#: lib/setup.c:5287 +#: lib/setup.c:5298 #, c-format msgid "Cannot use device %s, name is invalid or still in use." msgstr "Nie można użyć urządzenia %s, nazwa jest nieprawidłowa lub nadal w użyciu." -#: lib/setup.c:5299 +#: lib/setup.c:5310 msgid "Reencryption volume keys do not match the volume." msgstr "Klucze ponownego szyfrowania wolumenu nie pasują do wolumenu." -#: lib/setup.c:5316 +#: lib/setup.c:5327 msgid "Incorrect volume key specified for plain device." msgstr "Podano niewłaściwy klucz wolumenu dla zwykłego urządzenia." -#: lib/setup.c:5342 lib/setup.c:5403 +#: lib/setup.c:5353 lib/setup.c:5414 msgid "Device type is not properly initialized." msgstr "Typ urządzenia nie został właściwie zainicjalizowany." -#: lib/setup.c:5441 +#: lib/setup.c:5452 msgid "Kernel keyring is not supported by the kernel." msgstr "Pęk kluczy w jądrze nie jest obsługiwany przez jądro." -#: lib/setup.c:5445 +#: lib/setup.c:5456 msgid "Kernel keyring missing: required for passing signature to kernel." msgstr "Brak pęku kluczy w jądrze: wymagany do przekazania podpisu do jądra." -#: lib/setup.c:5500 +#: lib/setup.c:5511 #, c-format msgid "Cannot use keyring key %s." msgstr "Nie można użyć klucza pęku kluczy %s." -#: lib/setup.c:5713 +#: lib/setup.c:5724 msgid "Incorrect root hash specified for verity device." msgstr "Podano niewłaściwy hasz główny dla urządzenia VERITY." -#: lib/setup.c:5754 lib/setup.c:5779 +#: lib/setup.c:5765 lib/setup.c:5790 msgid "OPAL does not support deferred deactivation." msgstr "OPAL nie obsługuje odroczonej dezaktywacji." -#: lib/setup.c:5769 lib/setup.c:5800 lib/luks2/luks2_json_metadata.c:2953 +#: lib/setup.c:5780 lib/setup.c:5811 lib/luks2/luks2_json_metadata.c:2953 #: src/utils_reencrypt.c:89 #, c-format msgid "Device %s is still in use." msgstr "Urządzenie %s jest nadal w użyciu." -#: lib/setup.c:5787 +#: lib/setup.c:5798 #, c-format msgid "Could not cancel deferred remove from device %s." msgstr "Nie udało się anulować opóźnionego usuwania z urządzenia %s." -#: lib/setup.c:5809 +#: lib/setup.c:5820 #, c-format msgid "Invalid device %s." msgstr "Błędne urządzenie %s." -#: lib/setup.c:5956 +#: lib/setup.c:5967 msgid "Volume key buffer too small." msgstr "Bufor klucza wolumenu zbyt mały." -#: lib/setup.c:5967 +#: lib/setup.c:5978 msgid "Cannot retrieve volume key for LUKS2 device." msgstr "Nie można odtworzyć klucza wolumenu dla urządzenia LUKS2." -#: lib/setup.c:5976 +#: lib/setup.c:5987 msgid "Cannot retrieve volume key for LUKS1 device." msgstr "Nie można odtworzyć klucza wolumenu dla urządzenia LUKS1." -#: lib/setup.c:5990 +#: lib/setup.c:6001 msgid "Cannot retrieve volume key for plain device." msgstr "Nie można odtworzyć klucza wolumenu dla zwykłego urządzenia." -#: lib/setup.c:5998 +#: lib/setup.c:6009 msgid "Cannot retrieve root hash for verity device." msgstr "Nie można odtworzyć hasza głównego dla urządzenia VERITY." -#: lib/setup.c:6007 +#: lib/setup.c:6018 msgid "Cannot retrieve volume key for BITLK device." msgstr "Nie można odtworzyć klucza wolumenu dla urządzenia BITLK." -#: lib/setup.c:6012 +#: lib/setup.c:6023 msgid "Cannot retrieve volume key for FVAULT2 device." msgstr "Nie można odtworzyć klucza wolumenu dla urządzenia FVAULT2." -#: lib/setup.c:6014 +#: lib/setup.c:6025 #, c-format msgid "This operation is not supported for %s crypt device." msgstr "Ta operacja nie jest obsługiwana dla urządzenia szyfrującego %s." -#: lib/setup.c:6199 lib/setup.c:6210 +#: lib/setup.c:6210 lib/setup.c:6221 msgid "Dump operation is not supported for this device type." msgstr "Operacja zrzutu nie jest obsługiwana dla tego rodzaju urządzenia." -#: lib/setup.c:6590 +#: lib/setup.c:6601 #, c-format msgid "Data offset is not multiple of %u bytes." msgstr "Offset danych nie jest wielokrotnością liczby bajtów %u." -#: lib/setup.c:6898 +#: lib/setup.c:6909 #, c-format msgid "Cannot convert device %s which is still in use." msgstr "Nie można przekonwertować urządzenia %s, które jest nadal w użyciu." -#: lib/setup.c:7206 lib/setup.c:7350 +#: lib/setup.c:7217 lib/setup.c:7361 #, c-format msgid "Failed to assign keyslot %u as the new volume key." msgstr "Nie udało się przypisać klucza %u jako nowego klucza wolumenu." -#: lib/setup.c:7230 +#: lib/setup.c:7241 msgid "Failed to initialize default LUKS2 keyslot parameters." msgstr "Nie udało się zainicjować domyślnych parametrów klucza LUKS2." -#: lib/setup.c:7236 +#: lib/setup.c:7247 #, c-format msgid "Failed to assign keyslot %d to digest." msgstr "Nie udało się przypisać klucza %d do skrótu." -#: lib/setup.c:7467 +#: lib/setup.c:7478 msgid "Cannot add key slot, all slots disabled and no volume key provided." msgstr "Nie można dodać klucza, wszystkie miejsca na klucze wyłączone i nie podano klucza wolumenu." -#: lib/setup.c:7540 lib/verity/verity.c:333 +#: lib/setup.c:7551 lib/verity/verity.c:333 msgid "Failed to load key in kernel keyring." msgstr "Nie udało się załadować klucza do pęku kluczy w jądrze." -#: lib/setup.c:7731 +#: lib/setup.c:7742 #, c-format msgid "Could not find keyring described by \"%s\"." msgstr "Nie udało się odnaleźć pęku kluczy opisanego przez \"%s\"." -#: lib/setup.c:7796 +#: lib/setup.c:7807 msgid "Failed to acquire global memory-hard access serialization lock." msgstr "Nie udało się uzyskać globalnej blokady serializacji dostępu ciężkiego pamięciowo." @@ -801,40 +801,45 @@ msgstr "Urządzenie %s nie jest zgodne." msgid "Ignoring bogus optimal-io size for data device (%u bytes)." msgstr "Zignorowano niewłaściwy rozmiar optimal-io dla urządzenia danych (%u bajtów)." -#: lib/utils_device.c:707 +#: lib/utils_device.c:711 +#, c-format +msgid "Cannot grow %s to % bytes (%s)." +msgstr "Nie można powiększyć %s do % bajtów (%s)." + +#: lib/utils_device.c:717 #, c-format msgid "Device %s is too small. Need at least % bytes." msgstr "Urządzenie %s jest zbyt małe. Wymagane przynajmniej % bajtów." -#: lib/utils_device.c:788 +#: lib/utils_device.c:798 #, c-format msgid "Cannot use device %s which is in use (already mapped or mounted)." msgstr "Nie można użyć urządzenia %s, które jest w użyciu (już podmapowane lub zamontowane)." -#: lib/utils_device.c:792 +#: lib/utils_device.c:802 #, c-format msgid "Cannot use device %s, permission denied." msgstr "Nie można użyć urządzenia %s, brak uprawnień." -#: lib/utils_device.c:795 +#: lib/utils_device.c:805 #, c-format msgid "Cannot get info about device %s." msgstr "Nie można uzyskać informacji o urządzeniu %s." -#: lib/utils_device.c:818 +#: lib/utils_device.c:828 msgid "Cannot use a loopback device, running as non-root user." msgstr "Nie można użyć urządzenia loopback w czasie działania jako nie-root." -#: lib/utils_device.c:829 +#: lib/utils_device.c:839 msgid "Attaching loopback device failed (loop device with autoclear flag is required)." msgstr "Nie udało się podłączyć urządzenia loopback (wymagane urządzenie loop z flagą autoclear)." -#: lib/utils_device.c:877 +#: lib/utils_device.c:887 #, c-format msgid "Requested offset is beyond real size of device %s." msgstr "Żądany offset jest poza rzeczywistym rozmiarem urządzenia %s." -#: lib/utils_device.c:885 +#: lib/utils_device.c:895 #, c-format msgid "Device %s has zero size." msgstr "Urządzenie %s ma zerowy rozmiar." @@ -977,9 +982,9 @@ msgstr "Błąd we/wy podczas szyfrowania klucza." #: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:356 #: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:668 -#: lib/fvault2/fvault2.c:870 lib/verity/verity.c:67 lib/verity/verity.c:183 +#: lib/fvault2/fvault2.c:872 lib/verity/verity.c:67 lib/verity/verity.c:183 #: lib/verity/verity_hash.c:312 lib/verity/verity_hash.c:321 -#: lib/verity/verity_hash.c:341 lib/verity/verity_fec.c:247 +#: lib/verity/verity_hash.c:350 lib/verity/verity_fec.c:247 #: lib/verity/verity_fec.c:259 lib/verity/verity_fec.c:264 #: lib/luks2/luks2_json_metadata.c:1521 src/utils_reencrypt_luks1.c:108 #: src/utils_reencrypt_luks1.c:120 @@ -1124,7 +1129,7 @@ msgstr "Tryb szyfru LUKS %s jest nieprawidłowy." msgid "LUKS hash %s is invalid." msgstr "Skrót LUKS %s jest nieprawidłowy." -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1369 +#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 msgid "No known problems detected for LUKS header." msgstr "W nagłówku LUKS nie wykryto żadnych znanych problemów." @@ -1217,11 +1222,11 @@ msgstr "Przekroczono maksymalną długość hasła TCRYPT (%zu)." msgid "PBKDF2 hash algorithm %s not available, skipping." msgstr "Algorytm skrótu PBKDF2 %s nie jest dostępny, pominięto." -#: lib/tcrypt/tcrypt.c:608 src/cryptsetup.c:1242 +#: lib/tcrypt/tcrypt.c:608 src/cryptsetup.c:1240 msgid "Required kernel crypto interface not available." msgstr "Wymagany interfejs kryptograficzny jądra nie jest dostępny." -#: lib/tcrypt/tcrypt.c:610 src/cryptsetup.c:1244 +#: lib/tcrypt/tcrypt.c:610 src/cryptsetup.c:1242 msgid "Ensure you have algif_skcipher kernel module loaded." msgstr "Proszę upewnić się, że moduł jądra algif_skcipher został załadowany." @@ -1292,11 +1297,6 @@ msgstr "Nieobsługiwany rozmiar sektora %." msgid "Failed to read BITLK header from %s." msgstr "Nie udało się odczytać nagłówka BITLK z %s." -#: lib/bitlk/bitlk.c:593 -#, c-format -msgid "Failed to read or validate BITLK FVE metadata copy #%d from %s." -msgstr "Nie udało się odczytać lub sprawdzić poprawności kopii #%d metadanych BITLK FVE z %s." - #: lib/bitlk/bitlk.c:603 #, c-format msgid "Failed to read and validate BITLK FVE metadata from %s." @@ -1372,42 +1372,42 @@ msgstr "Ta operacja nie jest obsługiwana." msgid "Unexpected key data size." msgstr "Nieoczekiwany rozmiar danych klucza." -#: lib/bitlk/bitlk.c:1431 +#: lib/bitlk/bitlk.c:1442 msgid "This BITLK device is in an unsupported state and cannot be activated." msgstr "To urządzenie BITLK jest w nieobsługiwanym stanie i może być uaktywnione." -#: lib/bitlk/bitlk.c:1436 +#: lib/bitlk/bitlk.c:1447 #, c-format msgid "BITLK devices with type '%s' cannot be activated." msgstr "Urządzenia BITLK o typie '%s' nie mogą być uaktywnione." -#: lib/bitlk/bitlk.c:1475 +#: lib/bitlk/bitlk.c:1486 #, c-format msgid "WARNING: BitLocker volume size % does not match the underlying device size %" msgstr "UWAGA: rozmiar wolumenu BitLockera % nie zgadza się z rozmiarem urządzenia %" -#: lib/bitlk/bitlk.c:1602 +#: lib/bitlk/bitlk.c:1613 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK IV." msgstr "Nie można uaktywnić urządzenia, brak obsługi BITLK IV w module dm-crypt jądra." -#: lib/bitlk/bitlk.c:1606 +#: lib/bitlk/bitlk.c:1617 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK Elephant diffuser." msgstr "Nie można uaktywnić urządzenia, brak obsługi dyfuzora BITLK Elephant w module dm-crypt jądra." -#: lib/bitlk/bitlk.c:1610 +#: lib/bitlk/bitlk.c:1621 msgid "Cannot activate device, kernel dm-crypt is missing support for large sector size." msgstr "Nie można uaktywnić urządzenia, brak obsługi dużego rozmiaru sektora w module dm-crypt jądra." -#: lib/bitlk/bitlk.c:1614 +#: lib/bitlk/bitlk.c:1625 msgid "Cannot activate device, kernel dm-zero module is missing." msgstr "Nie można uaktywnić urządzenia, brak modułu jądra dm-zero." -#: lib/fvault2/fvault2.c:530 +#: lib/fvault2/fvault2.c:532 #, c-format msgid "Could not read %u bytes of volume header." msgstr "Nie można odczytać %u bajtów nagłówka wolumenu." -#: lib/fvault2/fvault2.c:542 +#: lib/fvault2/fvault2.c:544 #, c-format msgid "Unsupported FVAULT2 version %." msgstr "Nieobsługiwana wersja FVAULT2 %." @@ -1484,23 +1484,23 @@ msgstr "Weryfikacja nie powiodła się na pozycji %." msgid "Hash area overflow." msgstr "Przepełnienie obszaru skrótu." -#: lib/verity/verity_hash.c:372 +#: lib/verity/verity_hash.c:381 msgid "Verification of data area failed." msgstr "Weryfikacja obszaru danych nie powiodła się." -#: lib/verity/verity_hash.c:377 +#: lib/verity/verity_hash.c:386 msgid "Verification of root hash failed." msgstr "Weryfikacja głównego hasza nie powiodła się." -#: lib/verity/verity_hash.c:383 +#: lib/verity/verity_hash.c:392 msgid "Input/output error while creating hash area." msgstr "Błąd wejścia/wyjścia podczas tworzenia obszaru haszy." -#: lib/verity/verity_hash.c:385 +#: lib/verity/verity_hash.c:394 msgid "Creation of hash area failed." msgstr "Tworzenie obszaru haszy nie powiodło się." -#: lib/verity/verity_hash.c:420 +#: lib/verity/verity_hash.c:429 #, c-format msgid "WARNING: Kernel cannot activate device if data block size exceeds page size (%u)." msgstr "UWAGA: Jądro nie może uaktywnić urządzenia, jeśli rozmiar bloku danych przekracza rozmiar strony (%u)." @@ -1555,19 +1555,19 @@ msgstr "Nie udało się określić rozmiaru urządzenia %s." msgid "Incompatible kernel dm-integrity metadata (version %u) detected on %s." msgstr "Wykryto niezgodne metadane dm-integrity jądra (wersja %u) na %s." -#: lib/integrity/integrity.c:304 lib/integrity/integrity.c:488 +#: lib/integrity/integrity.c:308 lib/integrity/integrity.c:492 msgid "Kernel does not support dm-integrity mapping." msgstr "Jądro nie obsługuje odwzorowań dm-integrity." -#: lib/integrity/integrity.c:310 +#: lib/integrity/integrity.c:314 msgid "Kernel does not support dm-integrity fixed metadata alignment." msgstr "Jądro nie obsługuje stałego wyrównania metadanych dm-integrity." -#: lib/integrity/integrity.c:319 +#: lib/integrity/integrity.c:323 msgid "Kernel refuses to activate insecure recalculate option (see legacy activation options to override)." msgstr "Jądro odmawia uaktywnienia niebezpiecznej opcji przeliczenia (p. stare opcje aktywacji, aby wymusić)." -#: lib/integrity/integrity.c:325 +#: lib/integrity/integrity.c:329 msgid "Kernel does not support dm-integrity inline mode." msgstr "Jądro nie obsługuje trybu wbudowanego dm-integrity." @@ -1716,7 +1716,7 @@ msgstr "Urządzenie dm-integrity stojące poniżej o nieoczekiwanych sektorach d msgid "Reencryption in-progress. Cannot deactivate device." msgstr "Podobne szyfrowanie trwa. Nie można dezaktywować urządzenia." -#: lib/luks2/luks2_json_metadata.c:2897 lib/luks2/luks2_reencrypt.c:4283 +#: lib/luks2/luks2_json_metadata.c:2897 lib/luks2/luks2_reencrypt.c:4286 #, c-format msgid "Failed to replace suspended device %s with dm-error target." msgstr "Nie udało się zastąpić wstrzymanego urządzenia %s celem dm-error." @@ -1795,7 +1795,7 @@ msgstr "Nie można sprawdzić stanu urządzenia mającego UUID: %s." msgid "Unable to convert header with LUKSMETA additional metadata." msgstr "Nie można przekonwertować nagłówka z dodatkowymi metadanymi LUKSMETA." -#: lib/luks2/luks2_luks1_convert.c:590 lib/luks2/luks2_reencrypt.c:3890 +#: lib/luks2/luks2_luks1_convert.c:590 lib/luks2/luks2_reencrypt.c:3893 #, c-format msgid "Unable to use cipher specification %s-%s for LUKS2." msgstr "Nie można użyć określenia szyfru %s-%s dla LUKS2." @@ -1879,7 +1879,7 @@ msgstr "Rozmiar urządzenia musi być wielokrotnością wyliczonego wyrównania #: lib/luks2/luks2_reencrypt.c:1410 lib/luks2/luks2_reencrypt.c:1596 #: lib/luks2/luks2_reencrypt.c:1679 lib/luks2/luks2_reencrypt.c:1721 -#: lib/luks2/luks2_reencrypt.c:4077 +#: lib/luks2/luks2_reencrypt.c:4080 msgid "Failed to initialize old segment storage wrapper." msgstr "Nie udało się zainicjować obudowania przestrzeni starego segmentu." @@ -1887,7 +1887,7 @@ msgstr "Nie udało się zainicjować obudowania przestrzeni starego segmentu." msgid "Failed to initialize new segment storage wrapper." msgstr "Nie udało się zainicjować obudowania przestrzeni nowego segmentu." -#: lib/luks2/luks2_reencrypt.c:1550 lib/luks2/luks2_reencrypt.c:4089 +#: lib/luks2/luks2_reencrypt.c:1550 lib/luks2/luks2_reencrypt.c:4092 msgid "Failed to initialize hotzone protection." msgstr "Nie udało się zainicjować ochrony strefy gorącej." @@ -1895,7 +1895,7 @@ msgstr "Nie udało się zainicjować ochrony strefy gorącej." msgid "Failed to read checksums for current hotzone." msgstr "Nie udało się odczytać sum kontrolnych dla aktualnej strefy gorącej." -#: lib/luks2/luks2_reencrypt.c:1630 lib/luks2/luks2_reencrypt.c:4104 +#: lib/luks2/luks2_reencrypt.c:1630 lib/luks2/luks2_reencrypt.c:4107 #, c-format msgid "Failed to read hotzone area starting at %." msgstr "Nie udało się odczytać obszaru strefy gorącej zaczynającego się od %." @@ -1984,8 +1984,8 @@ msgstr "Zmniejszony rozmiar danych jest większy niż rzeczywisty rozmiar urząd msgid "Data device is not aligned to encryption sector size (% bytes)." msgstr "Urzędzenie danych nie jest wyrównane do rozmiaru sektora szyfrowania (% B)." -#: lib/luks2/luks2_reencrypt.c:3125 lib/luks2/luks2_reencrypt.c:3640 -#: lib/luks2/luks2_reencrypt.c:3661 +#: lib/luks2/luks2_reencrypt.c:3125 lib/luks2/luks2_reencrypt.c:3643 +#: lib/luks2/luks2_reencrypt.c:3664 #, c-format msgid "Failed to open %s in exclusive mode (already mapped or mounted)." msgstr "Nie udało się otworzyć %s w trybie wyłączności (już odwzorowano lub zamontowano)." @@ -1994,123 +1994,123 @@ msgstr "Nie udało się otworzyć %s w trybie wyłączności (już odwzorowano l msgid "Device not marked for LUKS2 reencryption." msgstr "Urządzenie nie jest oznaczone do ponownego szyfrowania LUKS2." -#: lib/luks2/luks2_reencrypt.c:3349 lib/luks2/luks2_reencrypt.c:4400 +#: lib/luks2/luks2_reencrypt.c:3349 lib/luks2/luks2_reencrypt.c:4403 msgid "Failed to load LUKS2 reencryption context." msgstr "Nie udało się załadować kontekstu ponownego szyfrowania LUKS2." -#: lib/luks2/luks2_reencrypt.c:3441 lib/luks2/luks2_reencrypt.c:3781 +#: lib/luks2/luks2_reencrypt.c:3444 lib/luks2/luks2_reencrypt.c:3784 msgid "Device is not in reencryption." msgstr "Urządzenie nie jest w trakcie ponownego szyfrowania." -#: lib/luks2/luks2_reencrypt.c:3448 lib/luks2/luks2_reencrypt.c:3788 +#: lib/luks2/luks2_reencrypt.c:3451 lib/luks2/luks2_reencrypt.c:3791 msgid "Reencryption process is already running." msgstr "Proces ponownego szyfrowania już trwa." -#: lib/luks2/luks2_reencrypt.c:3450 lib/luks2/luks2_reencrypt.c:3790 +#: lib/luks2/luks2_reencrypt.c:3453 lib/luks2/luks2_reencrypt.c:3793 msgid "Failed to acquire reencryption lock." msgstr "Nie udało się uzyskać blokady dla ponownego szyfrowania." -#: lib/luks2/luks2_reencrypt.c:3468 +#: lib/luks2/luks2_reencrypt.c:3471 msgid "Cannot proceed with reencryption. Run reencryption recovery first." msgstr "Nie można kontynuować ponownego szyfrowania. Należy najpierw uruchomić odtworzenie ponownego szyfrowania." -#: lib/luks2/luks2_reencrypt.c:3604 +#: lib/luks2/luks2_reencrypt.c:3607 msgid "Active device size and requested reencryption size don't match." msgstr "Rozmiar urządzenia aktywnego oraz żądany rozmiar ponownego szyfrowania różnią się." -#: lib/luks2/luks2_reencrypt.c:3618 +#: lib/luks2/luks2_reencrypt.c:3621 msgid "Illegal device size requested in reencryption parameters." msgstr "W parametrach ponownego szyfrowania zażądano niedozwolonego rozmiaru urządzenia." -#: lib/luks2/luks2_reencrypt.c:3720 +#: lib/luks2/luks2_reencrypt.c:3723 msgid "Reencryption in-progress. Cannot perform recovery." msgstr "Ponowne szyfrowanie trwa. Nie można wykonać odzyskiwania." -#: lib/luks2/luks2_reencrypt.c:3741 +#: lib/luks2/luks2_reencrypt.c:3744 msgid "LUKS2 reencryption recovery failed." msgstr "Odtwarzanie ponownego szyfrowania LUKS2 nie powiodło się." -#: lib/luks2/luks2_reencrypt.c:3874 lib/luks2/luks2_reencrypt.c:4353 +#: lib/luks2/luks2_reencrypt.c:3877 lib/luks2/luks2_reencrypt.c:4356 msgid "Failed to initialize reencryption device stack." msgstr "Nie udało się zainicjować stosu urządzenia ponownego szyfrowania." -#: lib/luks2/luks2_reencrypt.c:3907 +#: lib/luks2/luks2_reencrypt.c:3910 msgid "LUKS2 reencryption already initialized in metadata." msgstr "Ponowne szyfrowanie LUKS2 jest już zainicjowane w metadanych." -#: lib/luks2/luks2_reencrypt.c:3915 +#: lib/luks2/luks2_reencrypt.c:3918 msgid "Failed to initialize LUKS2 reencryption in metadata." msgstr "Nie udało się zainicjować ponownego szyfrowania LUKS2 w metadanych." -#: lib/luks2/luks2_reencrypt.c:3968 lib/luks2/luks2_reencrypt.c:4000 -#: lib/luks2/luks2_reencrypt.c:4030 +#: lib/luks2/luks2_reencrypt.c:3971 lib/luks2/luks2_reencrypt.c:4003 +#: lib/luks2/luks2_reencrypt.c:4033 msgid "Reencryption is not supported for DAX (persistent memory) devices." msgstr "Ponowne szyfrowanie nie jest obsługiwane dla urządzeń DAX (pamięci trwałej)." -#: lib/luks2/luks2_reencrypt.c:4059 +#: lib/luks2/luks2_reencrypt.c:4062 msgid "Failed to set device segments for next reencryption hotzone." msgstr "Nie udało się ustawić segmentów urządzeń dla następnej strefy gorącej ponownego szyfrowania." -#: lib/luks2/luks2_reencrypt.c:4112 +#: lib/luks2/luks2_reencrypt.c:4115 msgid "Failed to write reencryption resilience metadata." msgstr "Nie udało się zapisać metadanych odporności ponownego szyfrowania." -#: lib/luks2/luks2_reencrypt.c:4119 +#: lib/luks2/luks2_reencrypt.c:4122 msgid "Decryption failed." msgstr "Odszyfrowanie nie powiodło się." -#: lib/luks2/luks2_reencrypt.c:4124 +#: lib/luks2/luks2_reencrypt.c:4127 #, c-format msgid "Failed to write hotzone area starting at %." msgstr "Nie udało się zapisać obszaru strefy gorącej zaczynającego się od %." -#: lib/luks2/luks2_reencrypt.c:4129 +#: lib/luks2/luks2_reencrypt.c:4132 msgid "Failed to sync data." msgstr "Nie udało się zsynchronizować danych." -#: lib/luks2/luks2_reencrypt.c:4137 +#: lib/luks2/luks2_reencrypt.c:4140 msgid "Failed to update metadata after current reencryption hotzone completed." msgstr "Nie udało się uaktualnić metadanych po zakończeniu aktualnej strefy gorącej ponownego szyfrowania." -#: lib/luks2/luks2_reencrypt.c:4226 +#: lib/luks2/luks2_reencrypt.c:4229 msgid "Failed to write LUKS2 metadata." msgstr "Nie udało się zapisać metadanych LUKS2." -#: lib/luks2/luks2_reencrypt.c:4249 +#: lib/luks2/luks2_reencrypt.c:4252 msgid "Failed to wipe unused data device area." msgstr "Nie udało się wymazać nieużywanego obszaru urządzenia danych." -#: lib/luks2/luks2_reencrypt.c:4255 +#: lib/luks2/luks2_reencrypt.c:4258 #, c-format msgid "Failed to remove unused (unbound) keyslot %d." msgstr "Nie udało się usunąć nieużywanego (nieprzypisanego) obszaru klucza %d." -#: lib/luks2/luks2_reencrypt.c:4265 +#: lib/luks2/luks2_reencrypt.c:4268 msgid "Failed to remove reencryption keyslot." msgstr "Nie udało się usunąć obszaru klucza ponownego szyfrowania." -#: lib/luks2/luks2_reencrypt.c:4275 +#: lib/luks2/luks2_reencrypt.c:4278 #, c-format msgid "Fatal error while reencrypting chunk starting at %, % sectors long." msgstr "Błąd krytyczny podczas ponownego szyfrowania fragmentu zaczynającego się od % o długości w sektorach %." -#: lib/luks2/luks2_reencrypt.c:4279 +#: lib/luks2/luks2_reencrypt.c:4282 msgid "Online reencryption failed." msgstr "Ponowne szyfrowanie online nie powiodło się." -#: lib/luks2/luks2_reencrypt.c:4284 +#: lib/luks2/luks2_reencrypt.c:4287 msgid "Do not resume the device unless replaced with error target manually." msgstr "Proszę nie wznawiać urządzenia dopóki nie zostanie zastąpione celem błędnym ręcznie." -#: lib/luks2/luks2_reencrypt.c:4336 +#: lib/luks2/luks2_reencrypt.c:4339 msgid "Cannot proceed with reencryption. Unexpected reencryption status." msgstr "Nie można kontynuować ponownego szyfrowania. Nieoczekiwany stan ponownego szyfrowania." -#: lib/luks2/luks2_reencrypt.c:4342 +#: lib/luks2/luks2_reencrypt.c:4345 msgid "Missing or invalid reencrypt context." msgstr "Brak lub błędny kontekst ponownego szyfrowania." -#: lib/luks2/luks2_reencrypt.c:4376 lib/luks2/luks2_reencrypt.c:4413 +#: lib/luks2/luks2_reencrypt.c:4379 lib/luks2/luks2_reencrypt.c:4416 msgid "Failed to update reencryption context." msgstr "Nie udało się uaktualnić kontekstu ponownego szyfrowania." @@ -2146,7 +2146,7 @@ msgstr "Parametry szyfrowania kluczy mogą być ustawione tylko dla urządzeń L msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encryption." msgstr "Parametry szyfrowania kluczy nie są zgodne z szyfrowaniem kluczy LUKS2." -#: src/cryptsetup.c:150 src/cryptsetup.c:1180 src/cryptsetup.c:1547 +#: src/cryptsetup.c:150 src/cryptsetup.c:1178 src/cryptsetup.c:1545 #: src/utils_reencrypt.c:1887 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." @@ -2174,7 +2174,7 @@ msgstr "UWAGA: Parametr --hash jest ignorowany w trybie zwykłym z podanym pliki msgid "WARNING: The --keyfile-size option is being ignored, the read size is the same as the encryption key size.\n" msgstr "UWAGA: Opcja --keyfile-size jest ignorowana, rozmiar odczytu jest taki sam, jak rozmiar klucza szyfrującego.\n" -#: src/cryptsetup.c:226 src/cryptsetup.c:1377 src/cryptsetup.c:1600 +#: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 #: src/integritysetup.c:188 src/utils_reencrypt.c:2138 #, c-format msgid "Blkid scan failed for %s." @@ -2185,9 +2185,9 @@ msgstr "Skanowanie blkid dla %s nie powiodło się." msgid "Detected device signature(s) on %s. Proceeding further may damage existing data." msgstr "Wykryto sygnatury urządzeń na %s. Dalsze operacje mogą uszkodzić istniejące dane." -#: src/cryptsetup.c:238 src/cryptsetup.c:1263 src/cryptsetup.c:1311 -#: src/cryptsetup.c:1384 src/cryptsetup.c:1524 src/cryptsetup.c:1612 -#: src/cryptsetup.c:2497 src/cryptsetup.c:2926 src/integritysetup.c:178 +#: src/cryptsetup.c:238 src/cryptsetup.c:1261 src/cryptsetup.c:1309 +#: src/cryptsetup.c:1382 src/cryptsetup.c:1522 src/cryptsetup.c:1610 +#: src/cryptsetup.c:2495 src/cryptsetup.c:2924 src/integritysetup.c:178 #: src/utils_reencrypt.c:111 src/utils_reencrypt.c:457 #: src/utils_reencrypt.c:925 msgid "Operation aborted.\n" @@ -2237,7 +2237,7 @@ msgstr "" "Zrzut ten powinien być zawsze zapisywany w postaci zaszyfrowanej\n" "w bezpiecznym miejscu." -#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2522 +#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2520 msgid "" "The header dump with volume key is sensitive information\n" "that allows access to encrypted partition without a passphrase.\n" @@ -2257,14 +2257,14 @@ msgstr "Urządzenie %s nie jest prawidłowym urządzeniem FVAULT2." msgid "Cannot determine volume key size for FVAULT2, please use --key-size option." msgstr "Nie można określić rozmiaru klucza wolumenu dla FVAULT2, proszę użyć opcji --key-size." -#: src/cryptsetup.c:848 src/veritysetup.c:317 src/integritysetup.c:410 +#: src/cryptsetup.c:848 src/veritysetup.c:317 src/integritysetup.c:416 #, c-format msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "Urządzenie %s jest nadal aktywne i zaplanowane do odroczonego usunięcia.\n" -#: src/cryptsetup.c:881 src/cryptsetup.c:1810 src/cryptsetup.c:2084 -#: src/cryptsetup.c:2231 src/cryptsetup.c:2650 src/cryptsetup.c:2731 -#: src/cryptsetup.c:3264 +#: src/cryptsetup.c:881 src/cryptsetup.c:1808 src/cryptsetup.c:2082 +#: src/cryptsetup.c:2229 src/cryptsetup.c:2648 src/cryptsetup.c:2729 +#: src/cryptsetup.c:3262 #, c-format msgid "Failed to set external tokens path %s." msgstr "Nie udało się ustawić ścieżki tokenów zewnętrznych %s." @@ -2273,59 +2273,59 @@ msgstr "Nie udało się ustawić ścieżki tokenów zewnętrznych %s." msgid "Resize of active device requires volume key in keyring but --disable-keyring option is set." msgstr "Zmiana rozmiaru aktywnego urządzenia wymaga klucza wolumenu w pęku, ale ustawiono opcję --disable-keyring." -#: src/cryptsetup.c:1059 +#: src/cryptsetup.c:1057 msgid "Benchmark interrupted." msgstr "Test szybkości przerwany." -#: src/cryptsetup.c:1080 +#: src/cryptsetup.c:1078 #, c-format msgid "PBKDF2-%-9s N/A\n" msgstr "PBKDF2-%-9s N/D\n" -#: src/cryptsetup.c:1082 +#: src/cryptsetup.c:1080 #, c-format msgid "PBKDF2-%-9s %7u iterations per second for %zu-bit key\n" msgstr "PBKDF2-%-9s %7u iteracji/sekundę dla klucza %zu-bitowego\n" -#: src/cryptsetup.c:1096 +#: src/cryptsetup.c:1094 #, c-format msgid "%-10s N/A\n" msgstr "%-10s N/D\n" -#: src/cryptsetup.c:1098 +#: src/cryptsetup.c:1096 #, c-format msgid "%-10s %4u iterations, %5u memory, %1u parallel threads (CPUs) for %zu-bit key (requested %u ms time)\n" msgstr "%-10s %4u iteracji, pamięć: %5u, równoległe wątki (CPU): %1u dla klucza %zu-bitowego (żądany czas %u ms)\n" -#: src/cryptsetup.c:1122 +#: src/cryptsetup.c:1120 msgid "Result of benchmark is not reliable." msgstr "Wynik testu wydajności nie jest wiarygodny." -#: src/cryptsetup.c:1172 +#: src/cryptsetup.c:1170 msgid "# Tests are approximate using memory only (no storage IO).\n" msgstr "# Testy są przybliżone tylko z użyciem pamięci (bez we/wy na dysk).\n" #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1197 +#: src/cryptsetup.c:1195 #, c-format msgid "#%*s Algorithm | Key | Encryption | Decryption\n" msgstr "#%*s Algorytm | Klucz | Szyfrowanie | Odszyfrowywanie\n" -#: src/cryptsetup.c:1205 +#: src/cryptsetup.c:1203 #, c-format msgid "Cipher %s (with %i bits key) is not available." msgstr "Szyfr %s (rozmiar klucza w bitach: %i) nie jest dostępny." #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1224 +#: src/cryptsetup.c:1222 msgid "# Algorithm | Key | Encryption | Decryption\n" msgstr "# Algorytm | Klucz | Szyfrowanie | Odszyfrowywanie\n" -#: src/cryptsetup.c:1235 +#: src/cryptsetup.c:1233 msgid "N/A" msgstr "N/D" -#: src/cryptsetup.c:1260 +#: src/cryptsetup.c:1258 msgid "" "Unprotected LUKS2 reencryption metadata detected. Please verify the reencryption operation is desirable (see luksDump output)\n" "and continue (upgrade metadata) only if you acknowledge the operation as genuine." @@ -2333,27 +2333,27 @@ msgstr "" "Wybryto niezabezpieczone metadane ponownego szyfrowania LUKS2. Proszę sprawdzić, czy operacja ponownego szyfrowania jest pożądana (p. wyjście luksDump)\n" "i kontynuować (uaktualnić metadane) tylko jeśli ta operacja ma być faktycznie wykonana." -#: src/cryptsetup.c:1266 +#: src/cryptsetup.c:1264 msgid "Enter passphrase to protect and upgrade reencryption metadata: " msgstr "Hasło do zabezpieczenia i uaktualnienia metadanych ponownego szyfrowania: " -#: src/cryptsetup.c:1310 +#: src/cryptsetup.c:1308 msgid "Really proceed with LUKS2 reencryption recovery?" msgstr "Naprawdę kontynuować odtwarzanie ponownego szyfrowania LUKS2?" -#: src/cryptsetup.c:1319 +#: src/cryptsetup.c:1317 msgid "Enter passphrase to verify reencryption metadata digest: " msgstr "Hasło do weryfikacji skrótu metadanych ponownego szyfrowania: " -#: src/cryptsetup.c:1321 +#: src/cryptsetup.c:1319 msgid "Enter passphrase for reencryption recovery: " msgstr "Hasło do odtwarzania ponownego szyfrowania: " -#: src/cryptsetup.c:1383 +#: src/cryptsetup.c:1381 msgid "Really try to repair LUKS device header?" msgstr "Naprawdę próbować naprawić nagłówek urządzenia LUKS?" -#: src/cryptsetup.c:1411 src/integritysetup.c:76 src/integritysetup.c:244 +#: src/cryptsetup.c:1409 src/integritysetup.c:76 src/integritysetup.c:244 msgid "" "\n" "Wipe interrupted." @@ -2361,7 +2361,7 @@ msgstr "" "\n" "Wymazywanie przerwane." -#: src/cryptsetup.c:1416 src/integritysetup.c:81 src/integritysetup.c:283 +#: src/cryptsetup.c:1414 src/integritysetup.c:81 src/integritysetup.c:289 msgid "" "Wiping device to initialize integrity checksum.\n" "You can interrupt this by pressing CTRL+c (rest of not wiped device will contain invalid checksum).\n" @@ -2369,167 +2369,167 @@ msgstr "" "Czyszczenie urządzenia w celu zainicjowania sumy kontrolnej integralności.\n" "Można przerwać ten proces wciskając Ctrl+C (reszta niewymazanego urządzenia będzie zawierać błędną sumę kontrolną).\n" -#: src/cryptsetup.c:1438 src/integritysetup.c:103 +#: src/cryptsetup.c:1436 src/integritysetup.c:103 #, c-format msgid "Cannot deactivate temporary device %s." msgstr "Nie można dezaktywować urządzenia tymczasowego %s." -#: src/cryptsetup.c:1486 +#: src/cryptsetup.c:1484 msgid "OPAL hw-only encryption does not support --cipher and --key-size, options ignored." msgstr "Szyfrowanie wyłącznie sprzętowe OPAL nie obsługuje --cipher i --key-size, opcje zignorowano." -#: src/cryptsetup.c:1499 +#: src/cryptsetup.c:1497 msgid "Integrity option can be used only for LUKS2 format." msgstr "Opcja integralności może być używana tylko dla formatu LUKS2." -#: src/cryptsetup.c:1504 src/cryptsetup.c:1584 +#: src/cryptsetup.c:1502 src/cryptsetup.c:1582 msgid "Unsupported LUKS2 metadata size options." msgstr "Nieobsługiwane opcje rozmiaru metadanych LUKS2." -#: src/cryptsetup.c:1509 +#: src/cryptsetup.c:1507 msgid "OPAL is supported only for LUKS2 format." msgstr "OPAL jest obsługiwany tylko dla formatu LUKS2." -#: src/cryptsetup.c:1514 +#: src/cryptsetup.c:1512 msgid "Inline hw tags are supported only for LUKS2 format." msgstr "Znaczniki hw wbudowane są obsługiwane tylko dla formatu LUKS2." -#: src/cryptsetup.c:1523 +#: src/cryptsetup.c:1521 msgid "Header file does not exist, do you want to create it?" msgstr "Plik nagłówka nie istnieje, czy utworzyć go?" -#: src/cryptsetup.c:1531 +#: src/cryptsetup.c:1529 #, c-format msgid "Cannot create header file %s." msgstr "Nie można utworzyć pliku nagłówka %s." -#: src/cryptsetup.c:1557 src/integritysetup.c:126 src/integritysetup.c:141 -#: src/integritysetup.c:150 src/integritysetup.c:322 src/integritysetup.c:330 -#: src/integritysetup.c:340 +#: src/cryptsetup.c:1555 src/integritysetup.c:126 src/integritysetup.c:141 +#: src/integritysetup.c:150 src/integritysetup.c:328 src/integritysetup.c:336 +#: src/integritysetup.c:346 msgid "No known integrity specification pattern detected." msgstr "Nie wykryto znanego wzorca określającego integralność." -#: src/cryptsetup.c:1559 +#: src/cryptsetup.c:1557 msgid "Cannot use specified integrity key size." msgstr "Nie można użyć podanego rozmiaru klucza integralności." -#: src/cryptsetup.c:1577 +#: src/cryptsetup.c:1575 #, c-format msgid "Cannot use %s as on-disk header." msgstr "Nie można użyć %s jako nagłówka na dysku." -#: src/cryptsetup.c:1606 src/integritysetup.c:172 +#: src/cryptsetup.c:1604 src/integritysetup.c:172 #, c-format msgid "This will overwrite data on %s irrevocably." msgstr "To nieodwołalnie nadpisze dane na %s." -#: src/cryptsetup.c:1643 +#: src/cryptsetup.c:1641 msgid "OPAL Admin password cannot be empty." msgstr "Hasło administratora OPAL nie może być puste." -#: src/cryptsetup.c:1657 src/cryptsetup.c:2101 src/cryptsetup.c:2244 -#: src/cryptsetup.c:2379 src/cryptsetup.c:2445 src/utils_reencrypt_luks1.c:428 +#: src/cryptsetup.c:1655 src/cryptsetup.c:2099 src/cryptsetup.c:2242 +#: src/cryptsetup.c:2377 src/cryptsetup.c:2443 src/utils_reencrypt_luks1.c:428 msgid "Failed to set pbkdf parameters." msgstr "Nie udało się ustawić parametrów PBKDF." -#: src/cryptsetup.c:1788 +#: src/cryptsetup.c:1786 msgid "Reduced data offset is allowed only for detached LUKS header." msgstr "Offset zmniejszonych danych jest dozwolony tylko dla odłączonego nagłówka LUKS." -#: src/cryptsetup.c:1795 +#: src/cryptsetup.c:1793 #, c-format msgid "LUKS file container %s is too small for activation, there is no remaining space for data." msgstr "Kontener plikowy LUKS %s jest zbyt mały do uaktywnienia, nie ma miejsca pozostałego na dane." -#: src/cryptsetup.c:1837 src/cryptsetup.c:2250 src/utils_reencrypt.c:277 +#: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:277 #: src/utils_reencrypt.c:369 src/utils_reencrypt.c:1907 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "Nie można określić rozmiaru klucza wolumenu dla LUKS bez kluczy, proszę użyć opcji --key-size." -#: src/cryptsetup.c:1856 src/utils_reencrypt.c:303 +#: src/cryptsetup.c:1854 src/utils_reencrypt.c:303 msgid "Device requires two volume keys." msgstr "Urządzenie wymaga dwóch kluczy wolumenu." -#: src/cryptsetup.c:1891 +#: src/cryptsetup.c:1889 msgid "Some specified activation parameters were ignored with OPAL hw-only encryption." msgstr "Niektóre podane parametry aktywacji zostały zignorowane przy szyforwaniu wyłącznie sprzętowym OPAL." -#: src/cryptsetup.c:1896 +#: src/cryptsetup.c:1894 msgid "Device activated but cannot make flags persistent." msgstr "Urządzenie uaktywnione, ale nie można uczynić flag trwałymi." -#: src/cryptsetup.c:1976 src/cryptsetup.c:2044 +#: src/cryptsetup.c:1974 src/cryptsetup.c:2042 #, c-format msgid "Keyslot %d is selected for deletion." msgstr "Klucz %d jest wybrany do usunięcia." -#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 +#: src/cryptsetup.c:1986 src/cryptsetup.c:2046 msgid "This is the last keyslot. Device will become unusable after purging this key." msgstr "To jest ostatni klucz. Urządzenie stanie się bezużyteczne po usunięciu tego klucza." -#: src/cryptsetup.c:1989 +#: src/cryptsetup.c:1987 msgid "Enter any remaining passphrase: " msgstr "Dowolne pozostałe hasło: " -#: src/cryptsetup.c:1990 src/cryptsetup.c:2050 +#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 msgid "Operation aborted, the keyslot was NOT wiped.\n" msgstr "Operacja przerwana, klucz NIE został wymazany.\n" -#: src/cryptsetup.c:2026 +#: src/cryptsetup.c:2024 msgid "Enter passphrase to be deleted: " msgstr "Hasło do usunięcia: " -#: src/cryptsetup.c:2076 src/cryptsetup.c:2428 src/cryptsetup.c:3088 -#: src/cryptsetup.c:3255 +#: src/cryptsetup.c:2074 src/cryptsetup.c:2426 src/cryptsetup.c:3086 +#: src/cryptsetup.c:3253 #, c-format msgid "Device %s is not a valid LUKS2 device." msgstr "Urządzenie %s nie jest prawidłowym urządzeniem LUKS2." -#: src/cryptsetup.c:2115 src/cryptsetup.c:2314 +#: src/cryptsetup.c:2113 src/cryptsetup.c:2312 msgid "Enter new passphrase for key slot: " msgstr "Nowe hasło dla klucza: " -#: src/cryptsetup.c:2149 src/utils_luks.c:342 +#: src/cryptsetup.c:2147 src/utils_luks.c:342 #, c-format msgid "Enter token PIN: " msgstr "Proszę wprowadzić PIN: " -#: src/cryptsetup.c:2151 src/utils_luks.c:344 +#: src/cryptsetup.c:2149 src/utils_luks.c:344 #, c-format msgid "Enter token %d PIN: " msgstr "Proszę wprowadzić PIN tokenu %d: " -#: src/cryptsetup.c:2210 +#: src/cryptsetup.c:2208 msgid "WARNING: The --key-slot parameter is used for new keyslot number.\n" msgstr "UWAGA: Parametr --key-slot jest używany do numeru nowego klucza.\n" -#: src/cryptsetup.c:2287 src/utils_reencrypt_luks1.c:1094 +#: src/cryptsetup.c:2285 src/utils_reencrypt_luks1.c:1094 #, c-format msgid "Enter any existing passphrase: " msgstr "Dowolne istniejące hasło: " -#: src/cryptsetup.c:2383 +#: src/cryptsetup.c:2381 msgid "Enter passphrase to be changed: " msgstr "Hasło, które ma być zmienione: " -#: src/cryptsetup.c:2399 src/utils_reencrypt_luks1.c:1080 +#: src/cryptsetup.c:2397 src/utils_reencrypt_luks1.c:1080 msgid "Enter new passphrase: " msgstr "Nowe hasło: " -#: src/cryptsetup.c:2449 +#: src/cryptsetup.c:2447 msgid "Enter passphrase for keyslot to be converted: " msgstr "Hasło dla klucza do konwersji: " -#: src/cryptsetup.c:2473 +#: src/cryptsetup.c:2471 msgid "Only one device argument for isLuks operation is supported." msgstr "Dla operacji isLuks obsługiwany jest tylko jeden argument będący urządzeniem." -#: src/cryptsetup.c:2578 +#: src/cryptsetup.c:2576 #, c-format msgid "Keyslot %d does not contain unbound key." msgstr "Miejsce %d nie zawiera niepowiązanego klucza." -#: src/cryptsetup.c:2583 +#: src/cryptsetup.c:2581 msgid "" "The header dump with unbound key is sensitive information.\n" "This dump should be stored encrypted in a safe place." @@ -2538,52 +2538,52 @@ msgstr "" "Zrzut ten powinien być zawsze zapisywany w postaci zaszyfrowanej\n" "w bezpiecznym miejscu." -#: src/cryptsetup.c:2678 src/cryptsetup.c:2714 +#: src/cryptsetup.c:2676 src/cryptsetup.c:2712 #, c-format msgid "%s is not active %s device name." msgstr "%s nie jest nazwą aktywnego urządzenia %s." -#: src/cryptsetup.c:2709 +#: src/cryptsetup.c:2707 #, c-format msgid "%s is not active LUKS device name or header is missing." msgstr "%s nie jest nazwą aktywnego urządzenia LUKS lub brak nagłówka." -#: src/cryptsetup.c:2786 src/cryptsetup.c:2805 +#: src/cryptsetup.c:2784 src/cryptsetup.c:2803 msgid "Option --header-backup-file is required." msgstr "Wymagana jest opcja --header-backup-file." -#: src/cryptsetup.c:2836 +#: src/cryptsetup.c:2834 #, c-format msgid "%s is not cryptsetup managed device." msgstr "%s nie jest urządzeniem zarządzanym przez cryptsetup." -#: src/cryptsetup.c:2847 +#: src/cryptsetup.c:2845 #, c-format msgid "Refresh is not supported for device type %s" msgstr "Odświeżanie nie jest obsługiwane dla typu urządzenia %s" -#: src/cryptsetup.c:2897 +#: src/cryptsetup.c:2895 #, c-format msgid "Unrecognized metadata device type %s." msgstr "Nierozpoznany typ urządzenia metadanych %s." -#: src/cryptsetup.c:2899 +#: src/cryptsetup.c:2897 msgid "Command requires device and mapped name as arguments." msgstr "Polecenie wymaga urządzenia i nazwy odwzorowywanej jako argumentów." -#: src/cryptsetup.c:2917 +#: src/cryptsetup.c:2915 msgid "Enter OPAL PSID: " msgstr "Proszę wprowadzić PSID OPAL: " -#: src/cryptsetup.c:2917 +#: src/cryptsetup.c:2915 msgid "Enter OPAL Admin password: " msgstr "Hasło administratora OPAL: " -#: src/cryptsetup.c:2925 +#: src/cryptsetup.c:2923 msgid "WARNING: WHOLE disk will be factory reset and all data will be lost! Continue?" msgstr "UWAGA: CAŁY dysk będzie przywrócony do stanu fabrycznego i wszystkie dane zostaną utracone! Kontynuować?" -#: src/cryptsetup.c:2968 +#: src/cryptsetup.c:2966 #, c-format msgid "" "This operation will erase all keyslots on device %s.\n" @@ -2592,363 +2592,363 @@ msgstr "" "Ta operacja usunię wszystkie klucze na urządzeniu %s.\n" "Urządzenie po tej operacji stanie się bezużyteczne." -#: src/cryptsetup.c:2975 +#: src/cryptsetup.c:2973 msgid "Operation aborted, keyslots were NOT wiped.\n" msgstr "Operacja przerwana, klucze NIE zostały wymazane.\n" -#: src/cryptsetup.c:3014 +#: src/cryptsetup.c:3012 msgid "Invalid LUKS type, only luks1 and luks2 are supported." msgstr "Błędny typ LUKS, obsługiwane są tylko luks1 i luks2." -#: src/cryptsetup.c:3030 +#: src/cryptsetup.c:3028 #, c-format msgid "Device is already %s type." msgstr "Urządzenie już ma typ %s." -#: src/cryptsetup.c:3037 +#: src/cryptsetup.c:3035 #, c-format msgid "This operation will convert %s to %s format.\n" msgstr "Ta operacja przekonwertuje %s do formatu %s.\n" -#: src/cryptsetup.c:3040 +#: src/cryptsetup.c:3038 msgid "Operation aborted, device was NOT converted.\n" msgstr "Operacja przerwana, urządzenie NIE zostało skonwertowane.\n" -#: src/cryptsetup.c:3080 +#: src/cryptsetup.c:3078 msgid "Option --priority, --label or --subsystem is missing." msgstr "Brak opcji --priority, --label lub --subsystem." -#: src/cryptsetup.c:3114 src/cryptsetup.c:3154 src/cryptsetup.c:3174 +#: src/cryptsetup.c:3112 src/cryptsetup.c:3152 src/cryptsetup.c:3172 #, c-format msgid "Token %d is invalid." msgstr "Token %d jest błędny." -#: src/cryptsetup.c:3117 src/cryptsetup.c:3177 +#: src/cryptsetup.c:3115 src/cryptsetup.c:3175 #, c-format msgid "Token %d in use." msgstr "Token %d jest w użyciu." -#: src/cryptsetup.c:3129 +#: src/cryptsetup.c:3127 #, c-format msgid "Failed to add luks2-keyring token %d." msgstr "Nie udało się dodać tokenu %d do pęku kluczy luks2." -#: src/cryptsetup.c:3140 src/cryptsetup.c:3203 +#: src/cryptsetup.c:3138 src/cryptsetup.c:3201 #, c-format msgid "Failed to assign token %d to keyslot %d." msgstr "Nie udało się przypisać tokenu %d do klucza %d." -#: src/cryptsetup.c:3157 +#: src/cryptsetup.c:3155 #, c-format msgid "Token %d is not in use." msgstr "Token %d nie jest w użyciu." -#: src/cryptsetup.c:3194 +#: src/cryptsetup.c:3192 msgid "Failed to import token from file." msgstr "Nie udało się zaimportować tokenu z pliku." -#: src/cryptsetup.c:3219 +#: src/cryptsetup.c:3217 #, c-format msgid "Failed to get token %d for export." msgstr "Nie udało się pobrać tokenu %d do eksportu." -#: src/cryptsetup.c:3232 +#: src/cryptsetup.c:3230 #, c-format msgid "Token %d is not assigned to keyslot %d." msgstr "Token %d nie jest przypisany do klucza %d." -#: src/cryptsetup.c:3234 src/cryptsetup.c:3241 +#: src/cryptsetup.c:3232 src/cryptsetup.c:3239 #, c-format msgid "Failed to unassign token %d from keyslot %d." msgstr "Nie udało się usunąć przypisania tokenu %d do klucza %d." -#: src/cryptsetup.c:3300 +#: src/cryptsetup.c:3298 msgid "Option --tcrypt-hidden, --tcrypt-system or --tcrypt-backup is supported only for TCRYPT device." msgstr "Opcje --tcrypt-hidden, --tcrypt-system i --tcrypt-backup są obsługiwane tylko dla urządzeń TCRYPT." -#: src/cryptsetup.c:3303 +#: src/cryptsetup.c:3301 msgid "Option --veracrypt or --disable-veracrypt is supported only for TCRYPT device type." msgstr "Opcje --veracrypt i --disable-veracrypt są obsługiwane tylko dla typu urządzeń TCRYPT." -#: src/cryptsetup.c:3306 +#: src/cryptsetup.c:3304 msgid "Option --veracrypt-pim is supported only for VeraCrypt compatible devices." msgstr "Opcja --veracrypt-pim jest obsługiwana tylko dla urządzeń zgodnych z VeraCryptem." -#: src/cryptsetup.c:3310 +#: src/cryptsetup.c:3308 msgid "Option --veracrypt-query-pim is supported only for VeraCrypt compatible devices." msgstr "Opcja --veracrypt-query-pim jest obsługiwana tylko dla urządzeń zgodnych z VeraCryptem." -#: src/cryptsetup.c:3312 +#: src/cryptsetup.c:3310 msgid "The options --veracrypt-pim and --veracrypt-query-pim are mutually exclusive." msgstr "Opcje --veracrypt-pim i --veracrypt-query-pim wykluczają się wzajemnie." -#: src/cryptsetup.c:3321 +#: src/cryptsetup.c:3319 msgid "Option --persistent is not allowed with --test-passphrase." msgstr "Opcja --persistent nie jest dozwolona z --test-passphrase." -#: src/cryptsetup.c:3324 +#: src/cryptsetup.c:3322 msgid "Options --refresh and --test-passphrase are mutually exclusive." msgstr "Opcje --refresh i --test-passphrase wykluczają się wzajemnie." -#: src/cryptsetup.c:3327 +#: src/cryptsetup.c:3325 msgid "Option --shared is allowed only for open of plain device." msgstr "Opcja --shared jest dozwolona tylko dla operacji otwarcia zwykłego urządzenia." -#: src/cryptsetup.c:3330 +#: src/cryptsetup.c:3328 msgid "Option --skip is supported only for open of plain and loopaes devices." msgstr "Opcja --skip jest obsługiwana tylko przy otwieraniu urządzeń plain i loopaes." -#: src/cryptsetup.c:3333 +#: src/cryptsetup.c:3331 msgid "Option --offset with open action is only supported for plain and loopaes devices." msgstr "Opcja --offset z akcją open jest obsługiwana tylko dla urządzeń plain i loopaes." -#: src/cryptsetup.c:3336 +#: src/cryptsetup.c:3334 msgid "Option --tcrypt-hidden cannot be combined with --allow-discards." msgstr "Opcji --tcrypt-hidden nie można łączyć z --allow-discards." -#: src/cryptsetup.c:3340 +#: src/cryptsetup.c:3338 msgid "Sector size option with open action is supported only for plain devices." msgstr "Opcja rozmiaru sektora z akcją open jest obsługiwana tylko dla urządzeń plain." -#: src/cryptsetup.c:3344 +#: src/cryptsetup.c:3342 msgid "Large IV sectors option is supported only for opening plain type device with sector size larger than 512 bytes." msgstr "Opcja dużych rozmiarów sektorów IV jest obsługiwana tylko przy otwieraniu urządzeń typu plain z sektorem większym niż 512 bajtów." -#: src/cryptsetup.c:3349 +#: src/cryptsetup.c:3347 msgid "Option --test-passphrase is allowed only for open of LUKS, TCRYPT, BITLK and FVAULT2 devices." msgstr "Opcja --test-passphrase jest dozwolona tylko przy otwieraniu urządzeń LUKS, TRCYPT, BITLK i FVAULT2." -#: src/cryptsetup.c:3352 src/cryptsetup.c:3382 +#: src/cryptsetup.c:3350 src/cryptsetup.c:3380 msgid "Options --device-size and --size cannot be combined." msgstr "Opcji --device-size i --size nie można łączyć." -#: src/cryptsetup.c:3355 +#: src/cryptsetup.c:3353 msgid "Option --unbound is allowed only for open of luks device." msgstr "Opcja --unbound jest dozwolona tylko dla operacji otwarcia urządzenia LUKS." -#: src/cryptsetup.c:3358 +#: src/cryptsetup.c:3356 msgid "Option --unbound cannot be used without --test-passphrase." msgstr "Opcja --unbound nie może być użyta bez --test-passphrase." -#: src/cryptsetup.c:3362 +#: src/cryptsetup.c:3360 msgid "Option --volume-key-keyring cannot be combined with --hash or --volume-key-file." msgstr "Opcji --volume-key-keyring nie można łączyć z --hash ani --volume-key-file." -#: src/cryptsetup.c:3365 +#: src/cryptsetup.c:3363 msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "Obie opcje --volume-key-file muszą być sparowane z odpowiednimi opcjami --key-size." -#: src/cryptsetup.c:3374 src/veritysetup.c:673 src/integritysetup.c:784 +#: src/cryptsetup.c:3372 src/veritysetup.c:673 src/integritysetup.c:787 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "Opcje --cancel-deferred i --deferred nie mogą być użyte naraz." -#: src/cryptsetup.c:3390 +#: src/cryptsetup.c:3388 msgid "Option --active-name can be set only for LUKS2 device." msgstr "Opcja --active-name może być ustawiona tylko dla urządzenia LUKS2." -#: src/cryptsetup.c:3393 +#: src/cryptsetup.c:3391 msgid "Options --active-name and --force-offline-reencrypt cannot be combined." msgstr "Opcji --active-name i --force-offline-reencrypt nie można łączyć." -#: src/cryptsetup.c:3396 +#: src/cryptsetup.c:3394 msgid "Options --new-volume-key-file and --keep-key cannot be combined." msgstr "Opcji --new-volume-key-file i --keep-key nie można łączyć." -#: src/cryptsetup.c:3399 +#: src/cryptsetup.c:3397 msgid "Options --new-volume-key-keyring and --keep-key cannot be combined." msgstr "Opcji --new-volume-key-keyring i --keep-key nie można łączyć." -#: src/cryptsetup.c:3407 src/cryptsetup.c:3437 +#: src/cryptsetup.c:3405 src/cryptsetup.c:3435 msgid "Keyslot specification is required." msgstr "Wymagane jest określenie klucza." -#: src/cryptsetup.c:3415 +#: src/cryptsetup.c:3413 msgid "Options --align-payload and --offset cannot be combined." msgstr "Opcji --align-payload i --offset nie można łączyć." -#: src/cryptsetup.c:3418 +#: src/cryptsetup.c:3416 msgid "Option --integrity-no-wipe can be used only for format action with integrity extension." msgstr "Opcja --integrity-no-wipe może być użyta tylko do akcji formatowania z rozszerzeniem integralności." -#: src/cryptsetup.c:3421 +#: src/cryptsetup.c:3419 msgid "Only one of --use-[u]random options is allowed." msgstr "Dozwolona jest tylko jedna z opcji --use-[u]random." -#: src/cryptsetup.c:3429 +#: src/cryptsetup.c:3427 msgid "Key size is required with --unbound option." msgstr "Przy opcji --unbound wymagany jest rozmiar klucza." -#: src/cryptsetup.c:3449 +#: src/cryptsetup.c:3447 msgid "Invalid token action." msgstr "Błędna akcja token." -#: src/cryptsetup.c:3452 +#: src/cryptsetup.c:3450 msgid "--key-description parameter is mandatory for token add action." msgstr "Parametr --key-description jest wymagany do akcji dodania tokenu." -#: src/cryptsetup.c:3456 src/cryptsetup.c:3469 +#: src/cryptsetup.c:3454 src/cryptsetup.c:3467 msgid "Action requires specific token. Use --token-id parameter." msgstr "Akcja wymaga określonego tokenu. Należy użyć parametru --token-id." -#: src/cryptsetup.c:3460 +#: src/cryptsetup.c:3458 msgid "Option --unbound is valid only with token add action." msgstr "Opcja --unbound jest dozwolona tylko dla operacji dodania tokenu." -#: src/cryptsetup.c:3462 +#: src/cryptsetup.c:3460 msgid "Options --key-slot and --unbound cannot be combined." msgstr "Opcji --key-slot i --unbound nie można łączyć." -#: src/cryptsetup.c:3467 +#: src/cryptsetup.c:3465 msgid "Action requires specific keyslot. Use --key-slot parameter." msgstr "Akcja wymaga określonego klucza. Należy użyć parametru --key-slot." -#: src/cryptsetup.c:3483 +#: src/cryptsetup.c:3481 msgid " [--type ] []" msgstr " [--type ] []" -#: src/cryptsetup.c:3483 src/veritysetup.c:487 src/integritysetup.c:551 +#: src/cryptsetup.c:3481 src/veritysetup.c:487 src/integritysetup.c:554 msgid "open device as " msgstr "otwarcie urządzenia jako " -#: src/cryptsetup.c:3484 src/cryptsetup.c:3485 src/cryptsetup.c:3486 -#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:552 -#: src/integritysetup.c:553 src/integritysetup.c:555 +#: src/cryptsetup.c:3482 src/cryptsetup.c:3483 src/cryptsetup.c:3484 +#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:555 +#: src/integritysetup.c:556 src/integritysetup.c:558 msgid "" msgstr "" -#: src/cryptsetup.c:3484 src/veritysetup.c:488 src/integritysetup.c:552 +#: src/cryptsetup.c:3482 src/veritysetup.c:488 src/integritysetup.c:555 msgid "close device (remove mapping)" msgstr "zamknięcie urządzenia (usunięcie odwzorowania)" -#: src/cryptsetup.c:3485 src/integritysetup.c:555 +#: src/cryptsetup.c:3483 src/integritysetup.c:558 msgid "resize active device" msgstr "zmiana rozmiaru aktywnego urządzenia" -#: src/cryptsetup.c:3486 +#: src/cryptsetup.c:3484 msgid "show device status" msgstr "pokazanie stanu urządzenia" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3485 msgid "[--cipher ]" msgstr "[--cipher ]" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3485 msgid "benchmark cipher" msgstr "test szybkości szyfru" -#: src/cryptsetup.c:3488 src/cryptsetup.c:3489 src/cryptsetup.c:3490 -#: src/cryptsetup.c:3491 src/cryptsetup.c:3492 src/cryptsetup.c:3499 -#: src/cryptsetup.c:3500 src/cryptsetup.c:3501 src/cryptsetup.c:3502 -#: src/cryptsetup.c:3503 src/cryptsetup.c:3504 src/cryptsetup.c:3505 -#: src/cryptsetup.c:3506 src/cryptsetup.c:3507 src/cryptsetup.c:3508 +#: src/cryptsetup.c:3486 src/cryptsetup.c:3487 src/cryptsetup.c:3488 +#: src/cryptsetup.c:3489 src/cryptsetup.c:3490 src/cryptsetup.c:3497 +#: src/cryptsetup.c:3498 src/cryptsetup.c:3499 src/cryptsetup.c:3500 +#: src/cryptsetup.c:3501 src/cryptsetup.c:3502 src/cryptsetup.c:3503 +#: src/cryptsetup.c:3504 src/cryptsetup.c:3505 src/cryptsetup.c:3506 msgid "" msgstr "" -#: src/cryptsetup.c:3488 +#: src/cryptsetup.c:3486 msgid "try to repair on-disk metadata" msgstr "próba naprawy metadanych na dysku" -#: src/cryptsetup.c:3489 +#: src/cryptsetup.c:3487 msgid "reencrypt LUKS2 device" msgstr "ponowne szyfrowanie urządzenia LUKS2" -#: src/cryptsetup.c:3490 +#: src/cryptsetup.c:3488 msgid "erase all keyslots (remove encryption key)" msgstr "usunięcie wszystkich kluczy (usunięcie klucza szyfrującego)" -#: src/cryptsetup.c:3491 +#: src/cryptsetup.c:3489 msgid "convert LUKS from/to LUKS2 format" msgstr "przekonwertowanie formatu LUKS z/do LUKS2" -#: src/cryptsetup.c:3492 +#: src/cryptsetup.c:3490 msgid "set permanent configuration options for LUKS2" msgstr "ustawienie opcji trwałej konfiguracji dla LUKS2" -#: src/cryptsetup.c:3493 src/cryptsetup.c:3494 +#: src/cryptsetup.c:3491 src/cryptsetup.c:3492 msgid " []" msgstr " []" -#: src/cryptsetup.c:3493 +#: src/cryptsetup.c:3491 msgid "formats a LUKS device" msgstr "sformatowanie urządzenia LUKS" -#: src/cryptsetup.c:3494 +#: src/cryptsetup.c:3492 msgid "add key to LUKS device" msgstr "dodanie klucza do urządzenia LUKS" -#: src/cryptsetup.c:3495 src/cryptsetup.c:3496 src/cryptsetup.c:3497 +#: src/cryptsetup.c:3493 src/cryptsetup.c:3494 src/cryptsetup.c:3495 msgid " []" msgstr " []" -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3493 msgid "removes supplied key or key file from LUKS device" msgstr "usunięcie podanego klucza lub pliku klucza z urządzenia LUKS" -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3494 msgid "changes supplied key or key file of LUKS device" msgstr "zmiana podanego klucza lub pliku klucza urządzenia LUKS" -#: src/cryptsetup.c:3497 +#: src/cryptsetup.c:3495 msgid "converts a key to new pbkdf parameters" msgstr "konwersja klucza na nowe parametry pbkdf" -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3496 msgid " " msgstr " " -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3496 msgid "wipes key with number from LUKS device" msgstr "wymazanie klucza o numerze z urządzenia LUKS" -#: src/cryptsetup.c:3499 +#: src/cryptsetup.c:3497 msgid "print UUID of LUKS device" msgstr "wypisanie UUID-a urządzenia LUKS" -#: src/cryptsetup.c:3500 +#: src/cryptsetup.c:3498 msgid "tests for LUKS partition header" msgstr "sprawdzenie pod kątem nagłówka partycji LUKS" -#: src/cryptsetup.c:3501 +#: src/cryptsetup.c:3499 msgid "dump LUKS partition information" msgstr "zrzut informacji o partycji LUKS" -#: src/cryptsetup.c:3502 +#: src/cryptsetup.c:3500 msgid "dump TCRYPT device information" msgstr "zrzut informacji o urządzeniu TCRYPT" -#: src/cryptsetup.c:3503 +#: src/cryptsetup.c:3501 msgid "dump BITLK device information" msgstr "zrzut informacji o urządzeniu BITLK" -#: src/cryptsetup.c:3504 +#: src/cryptsetup.c:3502 msgid "dump FVAULT2 device information" msgstr "zrzut informacji o urządzeniu FVAULT2" -#: src/cryptsetup.c:3505 +#: src/cryptsetup.c:3503 msgid "Suspend LUKS device and wipe key (all IOs are frozen)" msgstr "Wstrzymanie urządzenia LUKS i wymazanie klucza (zamraża wszystkie operacje we/wy)" -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3504 msgid "Resume suspended LUKS device" msgstr "Wznowienie zatrzymanego urządzenia LUKS" -#: src/cryptsetup.c:3507 +#: src/cryptsetup.c:3505 msgid "Backup LUKS device header and keyslots" msgstr "Kopia zapasowa nagłówka i kluczy urządzenia LUKS" -#: src/cryptsetup.c:3508 +#: src/cryptsetup.c:3506 msgid "Restore LUKS device header and keyslots" msgstr "Odtworzenie nagłówka i kluczy urządzenia LUKS z kopii zapasowej" -#: src/cryptsetup.c:3509 +#: src/cryptsetup.c:3507 msgid " " msgstr " " -#: src/cryptsetup.c:3509 +#: src/cryptsetup.c:3507 msgid "Manipulate LUKS2 tokens" msgstr "Operacja na tokenach LUKS2" -#: src/cryptsetup.c:3528 src/veritysetup.c:505 src/integritysetup.c:570 +#: src/cryptsetup.c:3526 src/veritysetup.c:505 src/integritysetup.c:573 msgid "" "\n" " is one of:\n" @@ -2956,7 +2956,7 @@ msgstr "" "\n" " to jedno z:\n" -#: src/cryptsetup.c:3534 +#: src/cryptsetup.c:3532 msgid "" "\n" "You can also use old syntax aliases:\n" @@ -2968,7 +2968,7 @@ msgstr "" "\topen: create (plainOpen), luksOpen, loopaesOpen, tcryptOpen, bitlkOpen, fvault2Open\n" "\tclose: remove (plainClose), luksClose, loopaesClose, tcryptClose, bitlkClose, fvault2Close\n" -#: src/cryptsetup.c:3538 +#: src/cryptsetup.c:3536 #, c-format msgid "" "\n" @@ -2983,7 +2983,7 @@ msgstr "" " to numer klucza LUKS do zmiany\n" " to opcjonalny plik nowego klucza dla akcji luksAddKey\n" -#: src/cryptsetup.c:3545 +#: src/cryptsetup.c:3543 #, c-format msgid "" "\n" @@ -2992,7 +2992,7 @@ msgstr "" "\n" "Domyślny wkompilowany format metadanych to %s (dla akcji luksFormat).\n" -#: src/cryptsetup.c:3550 +#: src/cryptsetup.c:3548 msgid "" "\n" "LUKS2 external token plugin support is enabled.\n" @@ -3000,12 +3000,12 @@ msgstr "" "\n" "Obsługa zewnętrznych wtyczek tokenów LUKS2 jest włączona.\n" -#: src/cryptsetup.c:3551 +#: src/cryptsetup.c:3549 #, c-format msgid "LUKS2 external token plugin path: %s.\n" msgstr "Ścieżka zewnętrznych wtyczek tokenów LUKS2: %s.\n" -#: src/cryptsetup.c:3553 +#: src/cryptsetup.c:3551 msgid "" "\n" "LUKS2 external token plugin support is disabled.\n" @@ -3013,7 +3013,7 @@ msgstr "" "\n" "Obsługa zewnętrznych wtyczek tokenów LUKS2 jest wyłączona.\n" -#: src/cryptsetup.c:3557 +#: src/cryptsetup.c:3555 #, c-format msgid "" "\n" @@ -3030,7 +3030,7 @@ msgstr "" "Domyślny PBKDF dla LUKS2: %s\n" "\tCzas iteracji: %d, wymagana pamięć: %dkB, liczba wątków: %d\n" -#: src/cryptsetup.c:3568 +#: src/cryptsetup.c:3566 #, c-format msgid "" "\n" @@ -3045,122 +3045,122 @@ msgstr "" "\tplain: %s, bitów klucza: %d, skrót hasła: %s\n" "\tLUKS: %s, bitów klucza: %d, skrót nagłówka LUKS: %s, RNG: %s\n" -#: src/cryptsetup.c:3577 +#: src/cryptsetup.c:3575 msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: Domyślny rozmiar klucza z trybem XTS (dwa klucze wewnętrzne) będzie podwojony.\n" -#: src/cryptsetup.c:3595 src/veritysetup.c:647 src/integritysetup.c:730 +#: src/cryptsetup.c:3593 src/veritysetup.c:647 src/integritysetup.c:733 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: wymaga %s jako argumentów" -#: src/cryptsetup.c:3635 src/utils_reencrypt_luks1.c:1143 +#: src/cryptsetup.c:3633 src/utils_reencrypt_luks1.c:1143 msgid "Key slot is invalid." msgstr "Numer klucza jest nieprawidłowy." -#: src/cryptsetup.c:3663 +#: src/cryptsetup.c:3661 msgid "Device size must be multiple of 512 bytes sector." msgstr "Rozmiar urządzenia musi być wielokrotnością 512-bajtowego sektora." -#: src/cryptsetup.c:3668 +#: src/cryptsetup.c:3666 msgid "Invalid max reencryption hotzone size specification." msgstr "Błędne określenie maksymalnego rozmiaru strefy gorącej ponownego szyfrowania." -#: src/cryptsetup.c:3682 src/cryptsetup.c:3699 src/cryptsetup.c:3711 +#: src/cryptsetup.c:3680 src/cryptsetup.c:3697 src/cryptsetup.c:3709 msgid "Key size must be a multiple of 8 bits" msgstr "Rozmiar klucza musi być wielokrotnością 8 bitów" -#: src/cryptsetup.c:3689 +#: src/cryptsetup.c:3687 msgid "At most 2 key size specifications can be supplied." msgstr "Można podać najwyżej 2 określenia rozmiarów kluczy." -#: src/cryptsetup.c:3718 src/cryptsetup.c:3729 +#: src/cryptsetup.c:3716 src/cryptsetup.c:3727 #, c-format msgid "At most %d volume key specifications can be supplied." msgstr "Określono za dużo kluczy wolumenu, można podać najwyżej %d." -#: src/cryptsetup.c:3741 +#: src/cryptsetup.c:3739 #, c-format msgid "At most %d keyring link specifications can be supplied." msgstr "Określono za dużo dołączeń pęków kluczy, można podać najwyżej %d." -#: src/cryptsetup.c:3750 +#: src/cryptsetup.c:3748 msgid "Maximum device reduce size is 1 GiB." msgstr "Maksymalna wartość ograniczenia rozmiaru urządzenia to 1GiB." -#: src/cryptsetup.c:3753 +#: src/cryptsetup.c:3751 msgid "Reduce size must be multiple of 512 bytes sector." msgstr "Rozmiar ograniczenia musi być wielokrotnością 512-bajtowego sektora." -#: src/cryptsetup.c:3770 +#: src/cryptsetup.c:3768 msgid "Option --priority can be only ignore/normal/prefer." msgstr "Opcja --priority może mieć wartości tylko ignore/normal/prefer." -#: src/cryptsetup.c:3789 src/veritysetup.c:568 src/integritysetup.c:650 +#: src/cryptsetup.c:3787 src/veritysetup.c:568 src/integritysetup.c:653 msgid "Show this help message" msgstr "Wyświetlenie tego opisu" -#: src/cryptsetup.c:3790 src/veritysetup.c:569 src/integritysetup.c:651 +#: src/cryptsetup.c:3788 src/veritysetup.c:569 src/integritysetup.c:654 msgid "Display brief usage" msgstr "Wyświetlenie krótkiej informacji o składni" -#: src/cryptsetup.c:3791 src/veritysetup.c:570 src/integritysetup.c:652 +#: src/cryptsetup.c:3789 src/veritysetup.c:570 src/integritysetup.c:655 msgid "Print package version" msgstr "Wypisanie wersji pakietu" -#: src/cryptsetup.c:3802 src/veritysetup.c:581 src/integritysetup.c:663 +#: src/cryptsetup.c:3800 src/veritysetup.c:581 src/integritysetup.c:666 msgid "Help options:" msgstr "Opcje pomocnicze:" -#: src/cryptsetup.c:3825 src/veritysetup.c:602 src/integritysetup.c:683 +#: src/cryptsetup.c:3823 src/veritysetup.c:602 src/integritysetup.c:686 msgid "[OPTION...] " msgstr "[OPCJA...] " -#: src/cryptsetup.c:3834 src/veritysetup.c:611 src/integritysetup.c:694 +#: src/cryptsetup.c:3832 src/veritysetup.c:611 src/integritysetup.c:697 msgid "Argument missing." msgstr "Brak argumentu ." -#: src/cryptsetup.c:3913 src/veritysetup.c:642 src/integritysetup.c:725 +#: src/cryptsetup.c:3911 src/veritysetup.c:642 src/integritysetup.c:728 msgid "Unknown action." msgstr "Nieznana akcja." -#: src/cryptsetup.c:3931 +#: src/cryptsetup.c:3929 msgid "Option --key-file takes precedence over specified key file argument." msgstr "Opcja --key-file ma priorytet nad podanym argumentem pliku klucza." -#: src/cryptsetup.c:3937 +#: src/cryptsetup.c:3935 msgid "Only one --key-file argument is allowed." msgstr "Dozwolony jest tylko jeden argument --key-file." -#: src/cryptsetup.c:3942 +#: src/cryptsetup.c:3940 msgid "Password-based key derivation function (PBKDF) can be only pbkdf2 or argon2i/argon2id." msgstr "Funkcja pochodna klucza oparta na haśle (PBKDF) może być tylko pbkdf2 lub argon2i/argon2id." -#: src/cryptsetup.c:3947 +#: src/cryptsetup.c:3945 msgid "PBKDF forced iterations cannot be combined with iteration time option." msgstr "Wymuszonych iteracji PBKDF nie można łączyć z opcją czasu iteracji." -#: src/cryptsetup.c:3952 +#: src/cryptsetup.c:3950 msgid "Cannot link volume key to a keyring when keyring is disabled." msgstr "Nie można dołączyć klucza wolumenu do pęku kluczy, kiedy pęk kluczy jest wyłączony." -#: src/cryptsetup.c:3957 +#: src/cryptsetup.c:3955 msgid "Cannot use keyring key description when keyring is disabled." msgstr "Nie można użyć opisu klucza pęku kluczy, kiedy pęk kluczy jest wyłączony." -#: src/cryptsetup.c:3962 +#: src/cryptsetup.c:3960 msgid "Inline integrity must be used together with --integrity option." msgstr "Integralności wbudowanej należy używać wraz z opcją --integrity." -#: src/cryptsetup.c:3973 +#: src/cryptsetup.c:3971 msgid "Options --keyslot-cipher and --keyslot-key-size must be used together." msgstr "Opcje --keyslot-cipher i --keyslot-key-size muszą być użyte łącznie." -#: src/cryptsetup.c:3981 +#: src/cryptsetup.c:3979 msgid "No action taken. Invoked with --test-args option.\n" msgstr "Nie wykonano akcji. Wywołano z opcją --test-args.\n" -#: src/cryptsetup.c:3994 +#: src/cryptsetup.c:3992 msgid "Cannot disable metadata locking." msgstr "Nie można wyłączyć blokowania metadanych." @@ -3225,7 +3225,7 @@ msgstr "Polecenie wymaga lub opcji --root-hash-file jako argu msgid " " msgstr " " -#: src/veritysetup.c:485 src/integritysetup.c:550 +#: src/veritysetup.c:485 src/integritysetup.c:553 msgid "format device" msgstr "sformatowanie urządzenia" @@ -3241,7 +3241,7 @@ msgstr "weryfikacja urządzenia" msgid " []" msgstr " []" -#: src/veritysetup.c:489 src/integritysetup.c:553 +#: src/veritysetup.c:489 src/integritysetup.c:556 msgid "show active device status" msgstr "pokazanie stanu aktywnego urządzenia" @@ -3249,7 +3249,7 @@ msgstr "pokazanie stanu aktywnego urządzenia" msgid "" msgstr "" -#: src/veritysetup.c:490 src/integritysetup.c:554 +#: src/veritysetup.c:490 src/integritysetup.c:557 msgid "show on-disk information" msgstr "wyświetlenie informacji z dysku" @@ -3309,24 +3309,24 @@ msgstr "Sformatowano z rozmiarem znacznika %u%s, wewnętrzna integralność %s.\ msgid " (inline hw tags)" msgstr " (wbudowane znaczniki hw)" -#: src/integritysetup.c:297 +#: src/integritysetup.c:303 msgid "Setting recalculate flag is not supported, you may consider using --wipe instead." msgstr "Ustawianie flagi recalculate nie jest obsługiwane, zamiast tego można rozważyć użycie --wipe." -#: src/integritysetup.c:374 src/integritysetup.c:537 +#: src/integritysetup.c:380 src/integritysetup.c:540 #, c-format msgid "Device %s is not a valid INTEGRITY device." msgstr "Urządzenie %s nie jest prawidłowym urządzeniem INTEGRITY." -#: src/integritysetup.c:550 src/integritysetup.c:554 +#: src/integritysetup.c:553 src/integritysetup.c:557 msgid "" msgstr "" -#: src/integritysetup.c:551 +#: src/integritysetup.c:554 msgid " " msgstr " " -#: src/integritysetup.c:574 +#: src/integritysetup.c:577 #, c-format msgid "" "\n" @@ -3337,7 +3337,7 @@ msgstr "" " to urządzenie do utworzenia pod %s\n" " to urządzenie zawierające dane ze znacznikami integralności\n" -#: src/integritysetup.c:579 +#: src/integritysetup.c:582 #, c-format msgid "" "\n" @@ -3350,48 +3350,48 @@ msgstr "" "\tAlgorytm sumy kontrolnej: %s\n" "\tMaksymalny rozmiar pliku klucza: %dkB\n" -#: src/integritysetup.c:636 +#: src/integritysetup.c:639 #, c-format msgid "Invalid --%s size. Maximum is %u bytes." msgstr "Błędny rozmiar --%s. Maksimum w bajtach to %u." -#: src/integritysetup.c:739 +#: src/integritysetup.c:742 msgid "Both key file and key size options must be specified." msgstr "Muszą być podane obie opcje: pliku klucza i rozmiaru klucza." -#: src/integritysetup.c:743 +#: src/integritysetup.c:746 msgid "Both journal integrity key file and key size options must be specified." msgstr "Muszą być podane obie opcje: pliku klucza integralności i rozmiaru klucza." -#: src/integritysetup.c:746 +#: src/integritysetup.c:749 msgid "Journal integrity algorithm must be specified if journal integrity key is used." msgstr "Algorytm integralności kroniki musi być podany, jeśli używany jest klucz integralności kroniki." -#: src/integritysetup.c:750 +#: src/integritysetup.c:753 msgid "Both journal encryption key file and key size options must be specified." msgstr "Muszą być podane obie opcje: pliku szyfrowania kroniki i rozmiaru klucza." -#: src/integritysetup.c:753 +#: src/integritysetup.c:756 msgid "Journal encryption algorithm must be specified if journal encryption key is used." msgstr "Algorytm szyfrowania kroniki musi być podany, jeśli używany jest klucz szyfrowania kroniki." -#: src/integritysetup.c:757 +#: src/integritysetup.c:760 msgid "Recovery and bitmap mode options are mutually exclusive." msgstr "Opcje trybu odtwarzania i bitmapy wykluczają się wzajemnie." -#: src/integritysetup.c:764 +#: src/integritysetup.c:767 msgid "Journal options cannot be used in bitmap mode." msgstr "Opcji kroniki nie można używać w trybie bitmapy." -#: src/integritysetup.c:769 +#: src/integritysetup.c:772 msgid "Bitmap options can be used only in bitmap mode." msgstr "Opcje bitmapy mogą być używane tylko w trybie bitmapy." -#: src/integritysetup.c:775 +#: src/integritysetup.c:778 msgid "Inline mode cannot be combined with journal or bitmap options." msgstr "Tryb wbudowany nie może być łączony z opcjami kroniki ani bitmapy." -#: src/integritysetup.c:779 +#: src/integritysetup.c:782 msgid "Inline mode cannot be combined with separate data device." msgstr "Tryb wbudowany nie może być łączony z osobnym urządzeniem danych." From 51b03ae925495c96df12d1fd3bedd4bd301d40e0 Mon Sep 17 00:00:00 2001 From: Remus-Gabriel Chelu Date: Tue, 31 Mar 2026 11:31:32 +0200 Subject: [PATCH 055/244] po: update ro.po (from translationproject.org) --- po/ro.po | 739 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 372 insertions(+), 367 deletions(-) diff --git a/po/ro.po b/po/ro.po index de84ba46d..308eb325a 100644 --- a/po/ro.po +++ b/po/ro.po @@ -1,10 +1,10 @@ # Romanian translation for cryptsetup. # Mesajele în limba română pentru pachetul cryptsetup. -# Copyright © 2023, 2024, 2025 Free Software Foundation, Inc. +# Copyright © 2023, 2024, 2025, 2026 Free Software Foundation, Inc. # This file is put in the public domain. # This file is distributed under the same license as the cryptsetup package. # -# Remus-Gabriel Chelu , 2023, 2024, 2025. +# Remus-Gabriel Chelu , 2023 - 2026. # # Cronologia traducerii fișierului „cryptsetup”: # Traducerea inițială, făcută de R-GC, pentru versiunea cryptsetup 2.6.0-rc1. @@ -17,14 +17,15 @@ # Actualizare a traducerii pentru versiunea 2.8.0-rc1, făcută de R-GC, iun-2025. # Actualizare a traducerii pentru versiunea 2.8.1-rc0, făcută de R-GC, aug-2025. # Actualizare a traducerii pentru versiunea 2.8.2-rc0, făcută de R-GC, dec-2025. +# Actualizare a traducerii pentru versiunea 2.8.5-rc0, făcută de R-GC, mar-2026. # Actualizare a traducerii pentru versiunea Y, făcută de X, Y(luna-anul). # msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.2-rc0\n" +"Project-Id-Version: cryptsetup 2.8.5-rc0\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2025-12-12 18:51+0100\n" -"PO-Revision-Date: 2025-12-13 14:14+0100\n" +"POT-Creation-Date: 2026-03-30 14:18+0200\n" +"PO-Revision-Date: 2026-03-30 19:37+0200\n" "Last-Translator: Remus-Gabriel Chelu \n" "Language-Team: Romanian \n" "Language: ro\n" @@ -33,7 +34,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || ((n%100) > 0 && (n%100) < 20)) ? 1 : 2);\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -"X-Generator: Poedit 3.6\n" +"X-Generator: Poedit 3.8\n" #: lib/libdevmapper.c:419 msgid "Cannot initialize device-mapper, running as non-root user." @@ -202,8 +203,8 @@ msgstr "Dimensiunea dispozitivului nu este aliniată la dimensiunea blocului log msgid "Header detected but device %s is too small." msgstr "Antet detectat, dar dispozitivul %s este prea mic." -#: lib/setup.c:669 lib/setup.c:3760 lib/setup.c:5227 -#: lib/luks2/luks2_reencrypt.c:3945 lib/luks2/luks2_reencrypt.c:4434 +#: lib/setup.c:669 lib/setup.c:3760 lib/setup.c:5238 +#: lib/luks2/luks2_reencrypt.c:3948 lib/luks2/luks2_reencrypt.c:4437 msgid "This operation is not supported for this device type." msgstr "Această operație nu este suportată pentru acest tip de dispozitiv." @@ -216,10 +217,10 @@ msgid "Failed to rollback LUKS2 metadata in memory." msgstr "Nu s-au putut reîncărca metadatele LUKS2 în memorie." #: lib/setup.c:893 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 -#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1782 -#: src/cryptsetup.c:1966 src/cryptsetup.c:2021 src/cryptsetup.c:2219 -#: src/cryptsetup.c:2364 src/cryptsetup.c:2642 src/cryptsetup.c:2955 -#: src/cryptsetup.c:3023 src/utils_reencrypt.c:2281 +#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 +#: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 +#: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2953 +#: src/cryptsetup.c:3021 src/utils_reencrypt.c:2281 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." @@ -236,7 +237,7 @@ msgid "No known cipher specification pattern detected for active device %s." msgstr "Nu a fost detectat niciun model cunoscut de specificație de cifrare pentru dispozitivul activ %s." #: lib/setup.c:1515 lib/setup.c:3507 lib/setup.c:3599 lib/setup.c:3611 -#: lib/setup.c:3783 lib/setup.c:5805 +#: lib/setup.c:3783 lib/setup.c:5816 #, c-format msgid "Device %s is not active." msgstr "Dispozitivul %s nu este activ." @@ -263,7 +264,7 @@ msgid "Detached metadata device is not supported for this crypt type." msgstr "Dispozitivul cu metadate detașate nu este acceptat pentru acest tip de criptare." #: lib/setup.c:1639 lib/setup.c:1887 lib/luks2/luks2_reencrypt.c:3034 -#: src/cryptsetup.c:1494 src/cryptsetup.c:3762 +#: src/cryptsetup.c:1492 src/cryptsetup.c:3760 msgid "Unsupported encryption sector size." msgstr "Dimensiunea sectorului de criptare nu este acceptată." @@ -316,9 +317,9 @@ msgstr "Cifrul %s-%s (dimensiunea cheii %zd biți) nu este disponibil." msgid "WARNING: The device activation will fail, dm-crypt is missing support for requested encryption sector size.\n" msgstr "AVERTISMENT: Activarea dispozitivului va eșua, dm-crypt nu are suport pentru dimensiunea sectorului de criptare solicitată.\n" -#: lib/setup.c:2091 lib/setup.c:2458 lib/setup.c:2520 lib/utils_device.c:896 +#: lib/setup.c:2091 lib/setup.c:2458 lib/setup.c:2520 lib/utils_device.c:906 #: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3073 -#: lib/luks2/luks2_reencrypt.c:4494 +#: lib/luks2/luks2_reencrypt.c:4497 #, c-format msgid "Device %s is too small." msgstr "Dispozitivul %s este prea mic." @@ -476,7 +477,7 @@ msgid "Unsupported parameters on device %s." msgstr "Parametri neacceptați pentru dispozitivul %s." #: lib/setup.c:3521 lib/setup.c:3624 lib/luks2/luks2_reencrypt.c:2928 -#: lib/luks2/luks2_reencrypt.c:3197 lib/luks2/luks2_reencrypt.c:3591 +#: lib/luks2/luks2_reencrypt.c:3197 lib/luks2/luks2_reencrypt.c:3594 #, c-format msgid "Mismatching parameters on device %s." msgstr "Parametrii nepotriviți în dispozitivul %s." @@ -486,7 +487,7 @@ msgid "Crypt devices mismatch." msgstr "Dispozitivele de criptare nu se potrivesc." #: lib/setup.c:3679 lib/setup.c:3684 lib/luks2/luks2_reencrypt.c:2412 -#: lib/luks2/luks2_reencrypt.c:2944 lib/luks2/luks2_reencrypt.c:4233 +#: lib/luks2/luks2_reencrypt.c:2944 lib/luks2/luks2_reencrypt.c:4236 #, c-format msgid "Failed to reload device %s." msgstr "Nu s-a putut reîncărca dispozitivul %s." @@ -498,8 +499,8 @@ msgid "Failed to suspend device %s." msgstr "Nu s-a putut suspenda dispozitivul %s." #: lib/setup.c:3702 lib/luks2/luks2_reencrypt.c:2396 -#: lib/luks2/luks2_reencrypt.c:2979 lib/luks2/luks2_reencrypt.c:4146 -#: lib/luks2/luks2_reencrypt.c:4237 +#: lib/luks2/luks2_reencrypt.c:2979 lib/luks2/luks2_reencrypt.c:4149 +#: lib/luks2/luks2_reencrypt.c:4240 #, c-format msgid "Failed to resume device %s." msgstr "Nu s-a putut reîncărca dispozitivul %s." @@ -581,187 +582,187 @@ msgstr "Eroare la reluarea activității dispozitivului %s." msgid "Failed to unlink volume key from user specified keyring." msgstr "Nu s-a putut dezlega cheia de volum de la inelul de chei specificat de utilizator." -#: lib/setup.c:4423 lib/setup.c:5592 +#: lib/setup.c:4423 lib/setup.c:5603 msgid "Failed to link volume key in user defined keyring." msgstr "Nu s-a putut leg cheia de volum la inelul de chei specificat de utilizator." -#: lib/setup.c:4521 src/cryptsetup.c:2723 +#: lib/setup.c:4522 src/cryptsetup.c:2721 #, c-format msgid "Volume %s is not suspended." msgstr "Volumul %s nu este suspendat." -#: lib/setup.c:4622 lib/setup.c:7265 lib/setup.c:7287 lib/setup.c:7341 -#: src/cryptsetup.c:1858 src/cryptsetup.c:2262 src/cryptsetup.c:2280 +#: lib/setup.c:4633 lib/setup.c:7276 lib/setup.c:7298 lib/setup.c:7352 +#: src/cryptsetup.c:1856 src/cryptsetup.c:2260 src/cryptsetup.c:2278 #: src/utils_reencrypt.c:305 src/utils_reencrypt.c:1966 msgid "Volume key does not match the volume." msgstr "Cheia de volum nu se potrivește cu volumul." -#: lib/setup.c:4776 +#: lib/setup.c:4787 msgid "Failed to swap new key slot." msgstr "Nu s-a putut efectua interschimbarea cu noul slot pentru cheie." -#: lib/setup.c:4874 +#: lib/setup.c:4885 #, c-format msgid "Key slot %d is invalid." msgstr "Slotul de cheie %d nu este valid." -#: lib/setup.c:4880 src/cryptsetup.c:1979 src/cryptsetup.c:2439 -#: src/cryptsetup.c:3123 src/cryptsetup.c:3183 +#: lib/setup.c:4891 src/cryptsetup.c:1977 src/cryptsetup.c:2437 +#: src/cryptsetup.c:3121 src/cryptsetup.c:3181 #, c-format msgid "Keyslot %d is not active." msgstr "Slotul de cheie %d nu este activ." -#: lib/setup.c:4899 +#: lib/setup.c:4910 msgid "Device header overlaps with data area." msgstr "Antetul dispozitivului se suprapune cu zona de date." -#: lib/setup.c:5120 +#: lib/setup.c:5131 msgid "Reencryption in-progress. Cannot activate device." msgstr "Recriptare în curs. Nu se poate activa dispozitivul." -#: lib/setup.c:5122 lib/luks2/luks2_json_metadata.c:2888 -#: lib/luks2/luks2_reencrypt.c:3722 +#: lib/setup.c:5133 lib/luks2/luks2_json_metadata.c:2888 +#: lib/luks2/luks2_reencrypt.c:3725 msgid "Failed to get reencryption lock." msgstr "Nu s-a putut obține blocarea pentru recriptare." -#: lib/setup.c:5144 +#: lib/setup.c:5155 msgid "LUKS2 reencryption recovery using volume key(s) failed." msgstr "Recuperarea recriptării LUKS2 utilizând cheia (cheile) de volum a eșuat." -#: lib/setup.c:5280 +#: lib/setup.c:5291 #, c-format msgid "Device %s already exists." msgstr "Dispozitivul %s există deja." -#: lib/setup.c:5287 +#: lib/setup.c:5298 #, c-format msgid "Cannot use device %s, name is invalid or still in use." msgstr "Nu se poate folosi dispozitivul %s, numele este nevalid sau este încă în uz." -#: lib/setup.c:5299 +#: lib/setup.c:5310 msgid "Reencryption volume keys do not match the volume." msgstr "Cheile de recriptare a volumului nu se potrivesc cu volumul." -#: lib/setup.c:5316 +#: lib/setup.c:5327 msgid "Incorrect volume key specified for plain device." msgstr "Este specificată o cheie de volum incorectă pentru un dispozitiv cu criptare normală." -#: lib/setup.c:5342 lib/setup.c:5403 +#: lib/setup.c:5353 lib/setup.c:5414 msgid "Device type is not properly initialized." msgstr "Tipul de dispozitiv nu este inițializat corect." -#: lib/setup.c:5441 +#: lib/setup.c:5452 msgid "Kernel keyring is not supported by the kernel." msgstr "Inelul de chei pentru nucleu nu este acceptat de nucleu actual." -#: lib/setup.c:5445 +#: lib/setup.c:5456 msgid "Kernel keyring missing: required for passing signature to kernel." msgstr "Lipsește inelul de chei pentru nucleu: este necesar pentru transmiterea semnăturii către nucleu." -#: lib/setup.c:5500 +#: lib/setup.c:5511 #, c-format msgid "Cannot use keyring key %s." msgstr "Nu se poate utiliza cheia inelului de chei %s." -#: lib/setup.c:5713 +#: lib/setup.c:5724 msgid "Incorrect root hash specified for verity device." msgstr "Sumă de control rădăcină incorectă specificată pentru dispozitivul verity." -#: lib/setup.c:5754 lib/setup.c:5779 +#: lib/setup.c:5765 lib/setup.c:5790 msgid "OPAL does not support deferred deactivation." msgstr "OPAL nu acceptă dezactivarea amânată." -#: lib/setup.c:5769 lib/setup.c:5800 lib/luks2/luks2_json_metadata.c:2953 +#: lib/setup.c:5780 lib/setup.c:5811 lib/luks2/luks2_json_metadata.c:2953 #: src/utils_reencrypt.c:89 #, c-format msgid "Device %s is still in use." msgstr "Dispozitivul %s este încă în uz." -#: lib/setup.c:5787 +#: lib/setup.c:5798 #, c-format msgid "Could not cancel deferred remove from device %s." msgstr "Nu s-a putut anula eliminarea întârziată din dispozitivul %s." -#: lib/setup.c:5809 +#: lib/setup.c:5820 #, c-format msgid "Invalid device %s." msgstr "Dispozitiv nevalid %s." -#: lib/setup.c:5956 +#: lib/setup.c:5967 msgid "Volume key buffer too small." msgstr "Memoria tampon a cheii de volum este prea mică." -#: lib/setup.c:5967 +#: lib/setup.c:5978 msgid "Cannot retrieve volume key for LUKS2 device." msgstr "Nu se poate recupera cheia de volum pentru dispozitivul LUKS2." -#: lib/setup.c:5976 +#: lib/setup.c:5987 msgid "Cannot retrieve volume key for LUKS1 device." msgstr "Nu se poate recupera cheia de volum pentru dispozitivul LUKS1." -#: lib/setup.c:5990 +#: lib/setup.c:6001 msgid "Cannot retrieve volume key for plain device." msgstr "Nu se poate recupera tasta de volum pentru dispozitivul normal." -#: lib/setup.c:5998 +#: lib/setup.c:6009 msgid "Cannot retrieve root hash for verity device." msgstr "Nu se poate recupera suma de control rădăcină pentru dispozitivul verity." -#: lib/setup.c:6007 +#: lib/setup.c:6018 msgid "Cannot retrieve volume key for BITLK device." msgstr "Nu se poate recupera cheia de volum pentru dispozitivul BITLK." -#: lib/setup.c:6012 +#: lib/setup.c:6023 msgid "Cannot retrieve volume key for FVAULT2 device." msgstr "Nu se poate recupera cheia de volum pentru dispozitivul FVAULT2." -#: lib/setup.c:6014 +#: lib/setup.c:6025 #, c-format msgid "This operation is not supported for %s crypt device." msgstr "Această operație nu este acceptată pentru dispozitivul criptat %s." -#: lib/setup.c:6199 lib/setup.c:6210 +#: lib/setup.c:6210 lib/setup.c:6221 msgid "Dump operation is not supported for this device type." msgstr "Operația de descărcare nu este acceptată pentru acest tip de dispozitiv." -#: lib/setup.c:6590 +#: lib/setup.c:6601 #, c-format msgid "Data offset is not multiple of %u bytes." msgstr "Decalajul datelor nu este multiplu de %u octeți." -#: lib/setup.c:6898 +#: lib/setup.c:6909 #, c-format msgid "Cannot convert device %s which is still in use." msgstr "Nu se poate converti dispozitivul %s care este încă în uz." -#: lib/setup.c:7206 lib/setup.c:7350 +#: lib/setup.c:7217 lib/setup.c:7361 #, c-format msgid "Failed to assign keyslot %u as the new volume key." msgstr "Nu s-a putut atribui slotul %u ca nouă cheie de volum." -#: lib/setup.c:7230 +#: lib/setup.c:7241 msgid "Failed to initialize default LUKS2 keyslot parameters." msgstr "Nu s-au putut inițializa parametrii impliciți pentru slotul de cheie LUKS2." -#: lib/setup.c:7236 +#: lib/setup.c:7247 #, c-format msgid "Failed to assign keyslot %d to digest." msgstr "Nu s-a putut aloca slotul de cheie %d pentru a digera." -#: lib/setup.c:7467 +#: lib/setup.c:7478 msgid "Cannot add key slot, all slots disabled and no volume key provided." msgstr "Nu se poate adăuga slotul pentru cheie, toate sloturile sunt dezactivate și nu este furnizată nicio cheie pentru volum." -#: lib/setup.c:7540 lib/verity/verity.c:333 +#: lib/setup.c:7551 lib/verity/verity.c:333 msgid "Failed to load key in kernel keyring." msgstr "Nu s-a putut încărca cheia în inelul de chei al nucleului." -#: lib/setup.c:7731 +#: lib/setup.c:7742 #, c-format msgid "Could not find keyring described by \"%s\"." msgstr "Nu s-a putut găsi inelul de chei descris de „%s”." -#: lib/setup.c:7796 +#: lib/setup.c:7807 msgid "Failed to acquire global memory-hard access serialization lock." msgstr "Nu s-a putut obține blocarea de serializare a accesului la memoria-hardwarw globală." @@ -818,40 +819,45 @@ msgstr "Dispozitivul %s nu este compatibil." msgid "Ignoring bogus optimal-io size for data device (%u bytes)." msgstr "Se ignoră dimensiunea optimă de transfer de date falsă pentru dispozitivul de date (%u octeți)." -#: lib/utils_device.c:707 +#: lib/utils_device.c:711 +#, c-format +msgid "Cannot grow %s to % bytes (%s)." +msgstr "Nu se poate mări %s la % octeți (%s)." + +#: lib/utils_device.c:717 #, c-format msgid "Device %s is too small. Need at least % bytes." msgstr "Dispozitivul %s este prea mic. Aveți nevoie de cel puțin % octeți." -#: lib/utils_device.c:788 +#: lib/utils_device.c:798 #, c-format msgid "Cannot use device %s which is in use (already mapped or mounted)." msgstr "Nu se poate utiliza dispozitivul %s care este în uz (deja cartografiat sau montat)." -#: lib/utils_device.c:792 +#: lib/utils_device.c:802 #, c-format msgid "Cannot use device %s, permission denied." msgstr "Nu se poate utiliza dispozitivul %s, permisiune refuzată." -#: lib/utils_device.c:795 +#: lib/utils_device.c:805 #, c-format msgid "Cannot get info about device %s." msgstr "Nu se pot obține informații despre dispozitivul %s." -#: lib/utils_device.c:818 +#: lib/utils_device.c:828 msgid "Cannot use a loopback device, running as non-root user." msgstr "Nu se poate utiliza un dispozitiv loopback, deoarece programul nu rulează cu privilegii de root." -#: lib/utils_device.c:829 +#: lib/utils_device.c:839 msgid "Attaching loopback device failed (loop device with autoclear flag is required)." msgstr "Atașarea dispozitivului de loopback a eșuat (este necesar un dispozitiv de buclă cu fanion de ștergere automată)." -#: lib/utils_device.c:877 +#: lib/utils_device.c:887 #, c-format msgid "Requested offset is beyond real size of device %s." msgstr "Decalajul solicitat depășește dimensiunea reală a dispozitivului %s." -#: lib/utils_device.c:885 +#: lib/utils_device.c:895 #, c-format msgid "Device %s has zero size." msgstr "Dispozitivul %s are dimensiune zero." @@ -994,9 +1000,9 @@ msgstr "Eroare de In/Ieș în timpul criptării slotului de cheie." #: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:356 #: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:668 -#: lib/fvault2/fvault2.c:870 lib/verity/verity.c:67 lib/verity/verity.c:183 +#: lib/fvault2/fvault2.c:872 lib/verity/verity.c:67 lib/verity/verity.c:183 #: lib/verity/verity_hash.c:312 lib/verity/verity_hash.c:321 -#: lib/verity/verity_hash.c:341 lib/verity/verity_fec.c:247 +#: lib/verity/verity_hash.c:350 lib/verity/verity_fec.c:247 #: lib/verity/verity_fec.c:259 lib/verity/verity_fec.c:264 #: lib/luks2/luks2_json_metadata.c:1521 src/utils_reencrypt_luks1.c:108 #: src/utils_reencrypt_luks1.c:120 @@ -1141,7 +1147,7 @@ msgstr "Modul de cifrare LUKS %s este nevalid." msgid "LUKS hash %s is invalid." msgstr "Suma de control(hash) LUKS %s nu este validă." -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1369 +#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 msgid "No known problems detected for LUKS header." msgstr "Nu s-a detectat nicio problemă cunoscută pentru antetul LUKS." @@ -1234,11 +1240,11 @@ msgstr "Lungimea maximă a frazei de acces TCRYPT (%zu) a fost depășită." msgid "PBKDF2 hash algorithm %s not available, skipping." msgstr "Algoritmul sumei de control(hash) PBKDF2 %s nu este disponibil, se omite." -#: lib/tcrypt/tcrypt.c:608 src/cryptsetup.c:1242 +#: lib/tcrypt/tcrypt.c:608 src/cryptsetup.c:1240 msgid "Required kernel crypto interface not available." msgstr "Interfața necesară de criptare a nucleului nu este disponibilă." -#: lib/tcrypt/tcrypt.c:610 src/cryptsetup.c:1244 +#: lib/tcrypt/tcrypt.c:610 src/cryptsetup.c:1242 msgid "Ensure you have algif_skcipher kernel module loaded." msgstr "Asigurați-vă că aveți modulul nucleului «algif_skcipher», încărcat." @@ -1309,11 +1315,6 @@ msgstr "Dimensiunea sectorului neacceptată, %." msgid "Failed to read BITLK header from %s." msgstr "Nu s-a putut citi antetul BITLK de la %s." -#: lib/bitlk/bitlk.c:593 -#, c-format -msgid "Failed to read or validate BITLK FVE metadata copy #%d from %s." -msgstr "Nu s-a putut citi sau valida copia metadatelor BITLK FVE #%d din %s." - #: lib/bitlk/bitlk.c:603 #, c-format msgid "Failed to read and validate BITLK FVE metadata from %s." @@ -1389,42 +1390,42 @@ msgstr "Această operație nu este acceptată." msgid "Unexpected key data size." msgstr "Dimensiune neașteptată a datelor cheii." -#: lib/bitlk/bitlk.c:1431 +#: lib/bitlk/bitlk.c:1442 msgid "This BITLK device is in an unsupported state and cannot be activated." msgstr "Acest dispozitiv BITLK este într-o stare neacceptată și nu poate fi activat." -#: lib/bitlk/bitlk.c:1436 +#: lib/bitlk/bitlk.c:1447 #, c-format msgid "BITLK devices with type '%s' cannot be activated." msgstr "Dispozitivele BITLK de tip „%s” nu pot fi activate." -#: lib/bitlk/bitlk.c:1475 +#: lib/bitlk/bitlk.c:1486 #, c-format msgid "WARNING: BitLocker volume size % does not match the underlying device size %" msgstr "AVERTISMENT: dimensiunea volumului BitLocker % nu se potrivește cu dimensiunea dispozitivului subiacent %" -#: lib/bitlk/bitlk.c:1602 +#: lib/bitlk/bitlk.c:1613 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK IV." msgstr "Nu se poate activa dispozitivul, modulul nucleului «dm-crypt» nu are suport pentru BITLK IV." -#: lib/bitlk/bitlk.c:1606 +#: lib/bitlk/bitlk.c:1617 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK Elephant diffuser." msgstr "Dispozitivul nu poate fi activat, modulul nucleului «dm-crypt» nu are suport pentru difuzorul BITLK Elephant." -#: lib/bitlk/bitlk.c:1610 +#: lib/bitlk/bitlk.c:1621 msgid "Cannot activate device, kernel dm-crypt is missing support for large sector size." msgstr "Dispozitivul nu poate fi activat, nucleul dm-crypt nu are suport pentru dimensiune mare a sectorului." -#: lib/bitlk/bitlk.c:1614 +#: lib/bitlk/bitlk.c:1625 msgid "Cannot activate device, kernel dm-zero module is missing." msgstr "Dispozitivul nu se poate activa, modulul nucleului, «dm-zero», lipsește." -#: lib/fvault2/fvault2.c:530 +#: lib/fvault2/fvault2.c:532 #, c-format msgid "Could not read %u bytes of volume header." msgstr "Nu s-au putut citi %u octeți din antetul volumului." -#: lib/fvault2/fvault2.c:542 +#: lib/fvault2/fvault2.c:544 #, c-format msgid "Unsupported FVAULT2 version %." msgstr "Versiune FVAULT2 neacceptată %." @@ -1501,23 +1502,23 @@ msgstr "Verificarea a eșuat la poziția %." msgid "Hash area overflow." msgstr "Debordare a zonei sumei de control(hash)." -#: lib/verity/verity_hash.c:372 +#: lib/verity/verity_hash.c:381 msgid "Verification of data area failed." msgstr "Verificarea zonei de date a eșuat." -#: lib/verity/verity_hash.c:377 +#: lib/verity/verity_hash.c:386 msgid "Verification of root hash failed." msgstr "Verificarea sumei de control(hash) rădăcină a eșuat." -#: lib/verity/verity_hash.c:383 +#: lib/verity/verity_hash.c:392 msgid "Input/output error while creating hash area." msgstr "Eroare de intrare/ieșire la crearea zonei de sumă de control(hash)." -#: lib/verity/verity_hash.c:385 +#: lib/verity/verity_hash.c:394 msgid "Creation of hash area failed." msgstr "Crearea zonei de sumă de control(hash) a eșuat." -#: lib/verity/verity_hash.c:420 +#: lib/verity/verity_hash.c:429 #, c-format msgid "WARNING: Kernel cannot activate device if data block size exceeds page size (%u)." msgstr "AVERTISMENT: Nucleul nu poate activa dispozitivul dacă dimensiunea blocului de date depășește dimensiunea paginii (%u)." @@ -1572,19 +1573,19 @@ msgstr "Nu s-a putut determina dimensiunea pentru dispozitivul %s." msgid "Incompatible kernel dm-integrity metadata (version %u) detected on %s." msgstr "Metadate incompatibile cu modulul nucleului «dm-integrity» (versiunea %u) detectate pe %s." -#: lib/integrity/integrity.c:304 lib/integrity/integrity.c:488 +#: lib/integrity/integrity.c:308 lib/integrity/integrity.c:492 msgid "Kernel does not support dm-integrity mapping." msgstr "Nucleul nu acceptă asocierea dm-integrity." -#: lib/integrity/integrity.c:310 +#: lib/integrity/integrity.c:314 msgid "Kernel does not support dm-integrity fixed metadata alignment." msgstr "Nucleul nu acceptă alinierea metadatelor fixe dm-integrity." -#: lib/integrity/integrity.c:319 +#: lib/integrity/integrity.c:323 msgid "Kernel refuses to activate insecure recalculate option (see legacy activation options to override)." msgstr "Nucleul refuză să activeze opțiunea de recalculare nesigură (consultați opțiunile de activare vechi pentru a le înlocui)." -#: lib/integrity/integrity.c:325 +#: lib/integrity/integrity.c:329 msgid "Kernel does not support dm-integrity inline mode." msgstr "Nucleul nu acceptă modul în linie „inline” dm-integrity." @@ -1733,7 +1734,7 @@ msgstr "Dispozitiv dm-integrity subiacent cu sectoare de date neașteptate furni msgid "Reencryption in-progress. Cannot deactivate device." msgstr "Recriptare în curs. Nu se poate dezactiva dispozitivul." -#: lib/luks2/luks2_json_metadata.c:2897 lib/luks2/luks2_reencrypt.c:4283 +#: lib/luks2/luks2_json_metadata.c:2897 lib/luks2/luks2_reencrypt.c:4286 #, c-format msgid "Failed to replace suspended device %s with dm-error target." msgstr "Nu s-a putut înlocui dispozitivul suspendat %s cu ținta dm-error." @@ -1812,7 +1813,7 @@ msgstr "Nu se poate verifica starea dispozitivului cu uuid: %s." msgid "Unable to convert header with LUKSMETA additional metadata." msgstr "Nu s-a putut converti antetul cu metadate suplimentare LUKSMETA." -#: lib/luks2/luks2_luks1_convert.c:590 lib/luks2/luks2_reencrypt.c:3890 +#: lib/luks2/luks2_luks1_convert.c:590 lib/luks2/luks2_reencrypt.c:3893 #, c-format msgid "Unable to use cipher specification %s-%s for LUKS2." msgstr "Nu se poate utiliza specificația de cifrare %s-%s pentru LUKS2." @@ -1896,7 +1897,7 @@ msgstr "Dimensiunea dispozitivului trebuie să fie multiplu al alinierii zonei c #: lib/luks2/luks2_reencrypt.c:1410 lib/luks2/luks2_reencrypt.c:1596 #: lib/luks2/luks2_reencrypt.c:1679 lib/luks2/luks2_reencrypt.c:1721 -#: lib/luks2/luks2_reencrypt.c:4077 +#: lib/luks2/luks2_reencrypt.c:4080 msgid "Failed to initialize old segment storage wrapper." msgstr "Nu s-a putut inițializa vechea încapsulare de stocare a segmentului." @@ -1904,7 +1905,7 @@ msgstr "Nu s-a putut inițializa vechea încapsulare de stocare a segmentului." msgid "Failed to initialize new segment storage wrapper." msgstr "Nu s-a putut inițializa noua încapsulare de stocare a segmentului." -#: lib/luks2/luks2_reencrypt.c:1550 lib/luks2/luks2_reencrypt.c:4089 +#: lib/luks2/luks2_reencrypt.c:1550 lib/luks2/luks2_reencrypt.c:4092 msgid "Failed to initialize hotzone protection." msgstr "Nu s-a putut inițializa protecția zonei „fierbinți” (active)." @@ -1912,7 +1913,7 @@ msgstr "Nu s-a putut inițializa protecția zonei „fierbinți” (active)." msgid "Failed to read checksums for current hotzone." msgstr "Nu s-au putut citii sumele de control pentru zona „fierbinte” (activă) actuală." -#: lib/luks2/luks2_reencrypt.c:1630 lib/luks2/luks2_reencrypt.c:4104 +#: lib/luks2/luks2_reencrypt.c:1630 lib/luks2/luks2_reencrypt.c:4107 #, c-format msgid "Failed to read hotzone area starting at %." msgstr "Nu s-a putut citi zona „fierbinte” (activă) începând cu %." @@ -2001,8 +2002,8 @@ msgstr "Dimensiunea redusă a datelor este mai mare decât dimensiunea dispoziti msgid "Data device is not aligned to encryption sector size (% bytes)." msgstr "Dispozitivul de date nu este aliniat la dimensiunea sectorului de criptare (% octeți)." -#: lib/luks2/luks2_reencrypt.c:3125 lib/luks2/luks2_reencrypt.c:3640 -#: lib/luks2/luks2_reencrypt.c:3661 +#: lib/luks2/luks2_reencrypt.c:3125 lib/luks2/luks2_reencrypt.c:3643 +#: lib/luks2/luks2_reencrypt.c:3664 #, c-format msgid "Failed to open %s in exclusive mode (already mapped or mounted)." msgstr "Nu s-a putut deschide %s în modul exclusiv (deja cartografiat sau montat)." @@ -2011,123 +2012,123 @@ msgstr "Nu s-a putut deschide %s în modul exclusiv (deja cartografiat sau monta msgid "Device not marked for LUKS2 reencryption." msgstr "Dispozitivul nu este marcat pentru recriptarea LUKS2." -#: lib/luks2/luks2_reencrypt.c:3349 lib/luks2/luks2_reencrypt.c:4400 +#: lib/luks2/luks2_reencrypt.c:3349 lib/luks2/luks2_reencrypt.c:4403 msgid "Failed to load LUKS2 reencryption context." msgstr "Nu s-a putut încărca contextul de recriptare LUKS2." -#: lib/luks2/luks2_reencrypt.c:3441 lib/luks2/luks2_reencrypt.c:3781 +#: lib/luks2/luks2_reencrypt.c:3444 lib/luks2/luks2_reencrypt.c:3784 msgid "Device is not in reencryption." msgstr "Dispozitivul nu se află în recriptare." -#: lib/luks2/luks2_reencrypt.c:3448 lib/luks2/luks2_reencrypt.c:3788 +#: lib/luks2/luks2_reencrypt.c:3451 lib/luks2/luks2_reencrypt.c:3791 msgid "Reencryption process is already running." msgstr "Procesul de recriptare rulează deja." -#: lib/luks2/luks2_reencrypt.c:3450 lib/luks2/luks2_reencrypt.c:3790 +#: lib/luks2/luks2_reencrypt.c:3453 lib/luks2/luks2_reencrypt.c:3793 msgid "Failed to acquire reencryption lock." msgstr "Nu s-a putut obține blocarea pentru recriptare." -#: lib/luks2/luks2_reencrypt.c:3468 +#: lib/luks2/luks2_reencrypt.c:3471 msgid "Cannot proceed with reencryption. Run reencryption recovery first." msgstr "Nu se poate continua cu recriptarea. Rulați mai întâi recuperarea recriptării." -#: lib/luks2/luks2_reencrypt.c:3604 +#: lib/luks2/luks2_reencrypt.c:3607 msgid "Active device size and requested reencryption size don't match." msgstr "Dimensiunea dispozitivului activ și dimensiunea de recriptare solicitată nu se potrivesc." -#: lib/luks2/luks2_reencrypt.c:3618 +#: lib/luks2/luks2_reencrypt.c:3621 msgid "Illegal device size requested in reencryption parameters." msgstr "Dimensiunea dispozitivului solicitată în parametrii de recriptare este incorectă." -#: lib/luks2/luks2_reencrypt.c:3720 +#: lib/luks2/luks2_reencrypt.c:3723 msgid "Reencryption in-progress. Cannot perform recovery." msgstr "Recriptare în curs. Nu se poate efectua recuperarea." -#: lib/luks2/luks2_reencrypt.c:3741 +#: lib/luks2/luks2_reencrypt.c:3744 msgid "LUKS2 reencryption recovery failed." msgstr "Recuperarea recriptării LUKS2 a eșuat." -#: lib/luks2/luks2_reencrypt.c:3874 lib/luks2/luks2_reencrypt.c:4353 +#: lib/luks2/luks2_reencrypt.c:3877 lib/luks2/luks2_reencrypt.c:4356 msgid "Failed to initialize reencryption device stack." msgstr "Nu s-a putut inițializa stiva dispozitivului de recriptare." -#: lib/luks2/luks2_reencrypt.c:3907 +#: lib/luks2/luks2_reencrypt.c:3910 msgid "LUKS2 reencryption already initialized in metadata." msgstr "Recriptare LUKS2 deja inițializată în metadate." -#: lib/luks2/luks2_reencrypt.c:3915 +#: lib/luks2/luks2_reencrypt.c:3918 msgid "Failed to initialize LUKS2 reencryption in metadata." msgstr "Nu s-a putut inițializa recriptarea LUKS2 în metadate." -#: lib/luks2/luks2_reencrypt.c:3968 lib/luks2/luks2_reencrypt.c:4000 -#: lib/luks2/luks2_reencrypt.c:4030 +#: lib/luks2/luks2_reencrypt.c:3971 lib/luks2/luks2_reencrypt.c:4003 +#: lib/luks2/luks2_reencrypt.c:4033 msgid "Reencryption is not supported for DAX (persistent memory) devices." msgstr "Recriptarea nu este acceptată pentru dispozitivele DAX (memorie persistentă)." -#: lib/luks2/luks2_reencrypt.c:4059 +#: lib/luks2/luks2_reencrypt.c:4062 msgid "Failed to set device segments for next reencryption hotzone." msgstr "Nu s-au putut definii segmentele dispozitivului pentru următoarea zonă „fierbinte” (activă) de recriptare." -#: lib/luks2/luks2_reencrypt.c:4112 +#: lib/luks2/luks2_reencrypt.c:4115 msgid "Failed to write reencryption resilience metadata." msgstr "Nu s-au putut scrie metadatele adaptabilității recriptării." -#: lib/luks2/luks2_reencrypt.c:4119 +#: lib/luks2/luks2_reencrypt.c:4122 msgid "Decryption failed." msgstr "Decriptarea a eșuat." -#: lib/luks2/luks2_reencrypt.c:4124 +#: lib/luks2/luks2_reencrypt.c:4127 #, c-format msgid "Failed to write hotzone area starting at %." msgstr "Nu s-a putut scrie zona „fierbinte” (activă) începând de la %." -#: lib/luks2/luks2_reencrypt.c:4129 +#: lib/luks2/luks2_reencrypt.c:4132 msgid "Failed to sync data." msgstr "Nu s-au putut sincroniza datele." -#: lib/luks2/luks2_reencrypt.c:4137 +#: lib/luks2/luks2_reencrypt.c:4140 msgid "Failed to update metadata after current reencryption hotzone completed." msgstr "Nu s-au putut actualiza metadatele după finalizarea zonei „fierbinți” (active) de recriptare actuală." -#: lib/luks2/luks2_reencrypt.c:4226 +#: lib/luks2/luks2_reencrypt.c:4229 msgid "Failed to write LUKS2 metadata." msgstr "Nu s-au putut scrie metadatele LUKS2." -#: lib/luks2/luks2_reencrypt.c:4249 +#: lib/luks2/luks2_reencrypt.c:4252 msgid "Failed to wipe unused data device area." msgstr "Nu s-a putut șterge zona nefolosită a dispozitivului de date." -#: lib/luks2/luks2_reencrypt.c:4255 +#: lib/luks2/luks2_reencrypt.c:4258 #, c-format msgid "Failed to remove unused (unbound) keyslot %d." msgstr "Nu s-a putut elimina slotul de cheie neutilizat (neasociat) %d." -#: lib/luks2/luks2_reencrypt.c:4265 +#: lib/luks2/luks2_reencrypt.c:4268 msgid "Failed to remove reencryption keyslot." msgstr "Nu s-a putut elimina slotul de cheie de recriptare." -#: lib/luks2/luks2_reencrypt.c:4275 +#: lib/luks2/luks2_reencrypt.c:4278 #, c-format msgid "Fatal error while reencrypting chunk starting at %, % sectors long." msgstr "Eroare fatală la recriptarea porțiunii începând de la %, % sectoare lungi." -#: lib/luks2/luks2_reencrypt.c:4279 +#: lib/luks2/luks2_reencrypt.c:4282 msgid "Online reencryption failed." msgstr "Recriptarea «online» a eșuat." -#: lib/luks2/luks2_reencrypt.c:4284 +#: lib/luks2/luks2_reencrypt.c:4287 msgid "Do not resume the device unless replaced with error target manually." msgstr "Nu reluați dispozitivul decât dacă este înlocuit manual cu ținta erorii." -#: lib/luks2/luks2_reencrypt.c:4336 +#: lib/luks2/luks2_reencrypt.c:4339 msgid "Cannot proceed with reencryption. Unexpected reencryption status." msgstr "Nu se poate continua cu recriptarea. Stare neașteptată a recriptării." -#: lib/luks2/luks2_reencrypt.c:4342 +#: lib/luks2/luks2_reencrypt.c:4345 msgid "Missing or invalid reencrypt context." msgstr "Context de recriptare lipsă sau nevalid." -#: lib/luks2/luks2_reencrypt.c:4376 lib/luks2/luks2_reencrypt.c:4413 +#: lib/luks2/luks2_reencrypt.c:4379 lib/luks2/luks2_reencrypt.c:4416 msgid "Failed to update reencryption context." msgstr "Nu s-a putut actualiza contextul de recriptare." @@ -2163,7 +2164,7 @@ msgstr "Parametrii de criptare a slotului de cheie pot fi stabiliți numai pentr msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encryption." msgstr "Parametrii de criptare a slotului de chei nu sunt compatibili cu criptarea slotului de chei LUKS2." -#: src/cryptsetup.c:150 src/cryptsetup.c:1180 src/cryptsetup.c:1547 +#: src/cryptsetup.c:150 src/cryptsetup.c:1178 src/cryptsetup.c:1545 #: src/utils_reencrypt.c:1887 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." @@ -2191,7 +2192,7 @@ msgstr "AVERTISMENT: Parametrul „--hash” este ignorat în modul simplu, cu f msgid "WARNING: The --keyfile-size option is being ignored, the read size is the same as the encryption key size.\n" msgstr "AVERTISMENT: Opțiunea „--keyfile-size” este ignorată, dimensiunea de citire este aceeași cu dimensiunea cheii de criptare.\n" -#: src/cryptsetup.c:226 src/cryptsetup.c:1377 src/cryptsetup.c:1600 +#: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 #: src/integritysetup.c:188 src/utils_reencrypt.c:2138 #, c-format msgid "Blkid scan failed for %s." @@ -2202,9 +2203,9 @@ msgstr "Scanarea «blkid» a eșuat pentru %s." msgid "Detected device signature(s) on %s. Proceeding further may damage existing data." msgstr "S-au detectat semnături de dispozitiv pe %s. Continuarea operației, riscă să deterioreze datele existente." -#: src/cryptsetup.c:238 src/cryptsetup.c:1263 src/cryptsetup.c:1311 -#: src/cryptsetup.c:1384 src/cryptsetup.c:1524 src/cryptsetup.c:1612 -#: src/cryptsetup.c:2497 src/cryptsetup.c:2926 src/integritysetup.c:178 +#: src/cryptsetup.c:238 src/cryptsetup.c:1261 src/cryptsetup.c:1309 +#: src/cryptsetup.c:1382 src/cryptsetup.c:1522 src/cryptsetup.c:1610 +#: src/cryptsetup.c:2495 src/cryptsetup.c:2924 src/integritysetup.c:178 #: src/utils_reencrypt.c:111 src/utils_reencrypt.c:457 #: src/utils_reencrypt.c:925 msgid "Operation aborted.\n" @@ -2253,7 +2254,7 @@ msgstr "" "care permite accesul la partiția criptată fără fraza de acces.\n" "Acest conținut ar trebui să fie întotdeauna stocat criptat într-un loc sigur." -#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2522 +#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2520 msgid "" "The header dump with volume key is sensitive information\n" "that allows access to encrypted partition without a passphrase.\n" @@ -2272,14 +2273,14 @@ msgstr "Dispozitivul %s nu este un dispozitiv FVAULT2 valid." msgid "Cannot determine volume key size for FVAULT2, please use --key-size option." msgstr "Nu se poate determina dimensiunea cheii de volum pentru FVAULT2; utilizați opțiunea „--key-size” pentru a o furniza." -#: src/cryptsetup.c:848 src/veritysetup.c:317 src/integritysetup.c:410 +#: src/cryptsetup.c:848 src/veritysetup.c:317 src/integritysetup.c:416 #, c-format msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "Dispozitivul %s este încă activ și programat pentru eliminare temporizată.\n" -#: src/cryptsetup.c:881 src/cryptsetup.c:1810 src/cryptsetup.c:2084 -#: src/cryptsetup.c:2231 src/cryptsetup.c:2650 src/cryptsetup.c:2731 -#: src/cryptsetup.c:3264 +#: src/cryptsetup.c:881 src/cryptsetup.c:1808 src/cryptsetup.c:2082 +#: src/cryptsetup.c:2229 src/cryptsetup.c:2648 src/cryptsetup.c:2729 +#: src/cryptsetup.c:3262 #, c-format msgid "Failed to set external tokens path %s." msgstr "Nu s-a putut definii ruta jetoanelor(tokens) externe %s." @@ -2288,85 +2289,85 @@ msgstr "Nu s-a putut definii ruta jetoanelor(tokens) externe %s." msgid "Resize of active device requires volume key in keyring but --disable-keyring option is set." msgstr "Redimensionarea dispozitivului activ necesită cheia de volum în inelul de chei, dar opțiunea „--disable-keyring” este furnizată." -#: src/cryptsetup.c:1059 +#: src/cryptsetup.c:1057 msgid "Benchmark interrupted." msgstr "Testarea pentru evaluarea performanței a fost întreruptă." -#: src/cryptsetup.c:1080 +#: src/cryptsetup.c:1078 #, c-format msgid "PBKDF2-%-9s N/A\n" msgstr "PBKDF2-%-9s (neaplicabil)\n" -#: src/cryptsetup.c:1082 +#: src/cryptsetup.c:1080 #, c-format msgid "PBKDF2-%-9s %7u iterations per second for %zu-bit key\n" msgstr "PBKDF2-%-9s %7u iterații pe secundă pentru cheia %zu-bit\n" -#: src/cryptsetup.c:1096 +#: src/cryptsetup.c:1094 #, c-format msgid "%-10s N/A\n" msgstr "%-10s (neaplicabil)\n" -#: src/cryptsetup.c:1098 +#: src/cryptsetup.c:1096 #, c-format msgid "%-10s %4u iterations, %5u memory, %1u parallel threads (CPUs) for %zu-bit key (requested %u ms time)\n" msgstr "%-10s %4u iterații, %5u memorie, %1u fire paralele (CPU-uri) pentru cheia %zu-bit (timpul necesitat %u ms)\n" -#: src/cryptsetup.c:1122 +#: src/cryptsetup.c:1120 msgid "Result of benchmark is not reliable." msgstr "Rezultatul testului de evaluare a performanței nu este fiabil." -#: src/cryptsetup.c:1172 +#: src/cryptsetup.c:1170 msgid "# Tests are approximate using memory only (no storage IO).\n" msgstr "# Testele sunt aproximative folosind doar memoria (fără In/Ieș de stocare).\n" #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1197 +#: src/cryptsetup.c:1195 #, c-format msgid "#%*s Algorithm | Key | Encryption | Decryption\n" msgstr "#%*s Algoritm | Cheie | Criptare | Decriptare\n" -#: src/cryptsetup.c:1205 +#: src/cryptsetup.c:1203 #, c-format msgid "Cipher %s (with %i bits key) is not available." msgstr "Cifrarea %s (cu cheie de %i biți) nu este disponibilă." #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1224 +#: src/cryptsetup.c:1222 msgid "# Algorithm | Key | Encryption | Decryption\n" msgstr "# Algoritm | Cheie | Criptare | Decriptare\n" -#: src/cryptsetup.c:1235 +#: src/cryptsetup.c:1233 msgid "N/A" msgstr "nedisponibil" -#: src/cryptsetup.c:1260 +#: src/cryptsetup.c:1258 msgid "" "Unprotected LUKS2 reencryption metadata detected. Please verify the reencryption operation is desirable (see luksDump output)\n" "and continue (upgrade metadata) only if you acknowledge the operation as genuine." msgstr "Au fost detectate metadate neprotejate de recriptare LUKS2. Verificați că operațiunea de recriptare este de dorit (consultați ieșirea luksDump) și continuați (să actualizați metadatele) numai dacă recunoașteți operația ca fiind autentică." -#: src/cryptsetup.c:1266 +#: src/cryptsetup.c:1264 msgid "Enter passphrase to protect and upgrade reencryption metadata: " msgstr "Introduceți fraza de acces pentru a proteja și actualiza metadatele de recriptare: " -#: src/cryptsetup.c:1310 +#: src/cryptsetup.c:1308 msgid "Really proceed with LUKS2 reencryption recovery?" msgstr "Continuați cu adevărat cu recuperarea recriptării LUKS2?" -#: src/cryptsetup.c:1319 +#: src/cryptsetup.c:1317 msgid "Enter passphrase to verify reencryption metadata digest: " msgstr "Introduceți fraza de acces pentru a verifica calcularea sumele de control a metadatelor de recriptare: " -#: src/cryptsetup.c:1321 +#: src/cryptsetup.c:1319 msgid "Enter passphrase for reencryption recovery: " msgstr "Introduceți fraza de acces pentru recuperarea recriptării: " -#: src/cryptsetup.c:1383 +#: src/cryptsetup.c:1381 msgid "Really try to repair LUKS device header?" msgstr "Încercați cu adevărat să reparați antetul dispozitivului LUKS?" -#: src/cryptsetup.c:1411 src/integritysetup.c:76 src/integritysetup.c:244 +#: src/cryptsetup.c:1409 src/integritysetup.c:76 src/integritysetup.c:244 msgid "" "\n" "Wipe interrupted." @@ -2374,7 +2375,7 @@ msgstr "" "\n" "Ștergere întreruptă." -#: src/cryptsetup.c:1416 src/integritysetup.c:81 src/integritysetup.c:283 +#: src/cryptsetup.c:1414 src/integritysetup.c:81 src/integritysetup.c:289 msgid "" "Wiping device to initialize integrity checksum.\n" "You can interrupt this by pressing CTRL+c (rest of not wiped device will contain invalid checksum).\n" @@ -2382,167 +2383,167 @@ msgstr "" "Se șterge dispozitivul pentru a inițializa calcularea sumei de control a integrității.\n" "Puteți întrerupe acest lucru apăsând CTRL+c (restul dispozitivului care nu este șters va conține o sumă de control nevalidă).\n" -#: src/cryptsetup.c:1438 src/integritysetup.c:103 +#: src/cryptsetup.c:1436 src/integritysetup.c:103 #, c-format msgid "Cannot deactivate temporary device %s." msgstr "Nu se poate dezactiva dispozitivul temporar %s." -#: src/cryptsetup.c:1486 +#: src/cryptsetup.c:1484 msgid "OPAL hw-only encryption does not support --cipher and --key-size, options ignored." msgstr "Criptarea OPAL hw-only nu acceptă „--cipher” și „--key-size”, opțiunile sunt ignorate." -#: src/cryptsetup.c:1499 +#: src/cryptsetup.c:1497 msgid "Integrity option can be used only for LUKS2 format." msgstr "Opțiunea de integritate poate fi utilizată numai pentru formatul LUKS2." -#: src/cryptsetup.c:1504 src/cryptsetup.c:1584 +#: src/cryptsetup.c:1502 src/cryptsetup.c:1582 msgid "Unsupported LUKS2 metadata size options." msgstr "Opțiuni de dimensiune a metadatelor LUKS2 neacceptate." -#: src/cryptsetup.c:1509 +#: src/cryptsetup.c:1507 msgid "OPAL is supported only for LUKS2 format." msgstr "OPAL este acceptat numai pentru formatul LUKS2." -#: src/cryptsetup.c:1514 +#: src/cryptsetup.c:1512 msgid "Inline hw tags are supported only for LUKS2 format." msgstr "Etichetele hw în linie „inline” sunt acceptate numai pentru formatul LUKS2." -#: src/cryptsetup.c:1523 +#: src/cryptsetup.c:1521 msgid "Header file does not exist, do you want to create it?" msgstr "Fișierul antet nu există, doriți să îl creați?" -#: src/cryptsetup.c:1531 +#: src/cryptsetup.c:1529 #, c-format msgid "Cannot create header file %s." msgstr "Nu se poate crea fișierul antet %s." -#: src/cryptsetup.c:1557 src/integritysetup.c:126 src/integritysetup.c:141 -#: src/integritysetup.c:150 src/integritysetup.c:322 src/integritysetup.c:330 -#: src/integritysetup.c:340 +#: src/cryptsetup.c:1555 src/integritysetup.c:126 src/integritysetup.c:141 +#: src/integritysetup.c:150 src/integritysetup.c:328 src/integritysetup.c:336 +#: src/integritysetup.c:346 msgid "No known integrity specification pattern detected." msgstr "Nu a fost detectat niciun model de specificație de integritate cunoscut." -#: src/cryptsetup.c:1559 +#: src/cryptsetup.c:1557 msgid "Cannot use specified integrity key size." msgstr "Nu se poate utiliza dimensiunea specificată a cheii de integritate." -#: src/cryptsetup.c:1577 +#: src/cryptsetup.c:1575 #, c-format msgid "Cannot use %s as on-disk header." msgstr "Nu se poate folosi %s ca antet pe disc." -#: src/cryptsetup.c:1606 src/integritysetup.c:172 +#: src/cryptsetup.c:1604 src/integritysetup.c:172 #, c-format msgid "This will overwrite data on %s irrevocably." msgstr "Acest lucru va suprascrie datele de pe %s în mod irevocabil." -#: src/cryptsetup.c:1643 +#: src/cryptsetup.c:1641 msgid "OPAL Admin password cannot be empty." msgstr "Parola de administrator OPAL nu poate fi goală." -#: src/cryptsetup.c:1657 src/cryptsetup.c:2101 src/cryptsetup.c:2244 -#: src/cryptsetup.c:2379 src/cryptsetup.c:2445 src/utils_reencrypt_luks1.c:428 +#: src/cryptsetup.c:1655 src/cryptsetup.c:2099 src/cryptsetup.c:2242 +#: src/cryptsetup.c:2377 src/cryptsetup.c:2443 src/utils_reencrypt_luks1.c:428 msgid "Failed to set pbkdf parameters." msgstr "Nu s-au putut definii parametrii pbkdf." -#: src/cryptsetup.c:1788 +#: src/cryptsetup.c:1786 msgid "Reduced data offset is allowed only for detached LUKS header." msgstr "Decalajul redus de date este permis numai pentru antetul LUKS detașat." -#: src/cryptsetup.c:1795 +#: src/cryptsetup.c:1793 #, c-format msgid "LUKS file container %s is too small for activation, there is no remaining space for data." msgstr "Containerul de fișiere LUKS %s este prea mic pentru activare, nu mai rămâne spațiu pentru date." -#: src/cryptsetup.c:1837 src/cryptsetup.c:2250 src/utils_reencrypt.c:277 +#: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:277 #: src/utils_reencrypt.c:369 src/utils_reencrypt.c:1907 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "Nu se poate determina dimensiunea cheii de volum pentru LUKS fără sloturi de chei; folosiți opțiunea „--key-size” pentru a furniza aceste date." -#: src/cryptsetup.c:1856 src/utils_reencrypt.c:303 +#: src/cryptsetup.c:1854 src/utils_reencrypt.c:303 msgid "Device requires two volume keys." msgstr "Dispozitivul necesită două chei de volum." -#: src/cryptsetup.c:1891 +#: src/cryptsetup.c:1889 msgid "Some specified activation parameters were ignored with OPAL hw-only encryption." msgstr "Unii parametri de activare specificați au fost ignorați cu criptarea OPAL hw-only." -#: src/cryptsetup.c:1896 +#: src/cryptsetup.c:1894 msgid "Device activated but cannot make flags persistent." msgstr "Dispozitivul a fost activat, dar nu se poate face ca fanioanele să fie persistente." -#: src/cryptsetup.c:1976 src/cryptsetup.c:2044 +#: src/cryptsetup.c:1974 src/cryptsetup.c:2042 #, c-format msgid "Keyslot %d is selected for deletion." msgstr "Slotul de cheie %d este selectat pentru ștergere." -#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 +#: src/cryptsetup.c:1986 src/cryptsetup.c:2046 msgid "This is the last keyslot. Device will become unusable after purging this key." msgstr "Acesta este ultimul slot de cheie. Dispozitivul va deveni inutilizabil după eliminarea acestei chei." -#: src/cryptsetup.c:1989 +#: src/cryptsetup.c:1987 msgid "Enter any remaining passphrase: " msgstr "Introduceți orice frază de acces rămasă: " -#: src/cryptsetup.c:1990 src/cryptsetup.c:2050 +#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 msgid "Operation aborted, the keyslot was NOT wiped.\n" msgstr "Operația a fost întreruptă, slotul de cheie NU a fost șters.\n" -#: src/cryptsetup.c:2026 +#: src/cryptsetup.c:2024 msgid "Enter passphrase to be deleted: " msgstr "Introduceți fraza de acces pentru a fi ștearsă: " -#: src/cryptsetup.c:2076 src/cryptsetup.c:2428 src/cryptsetup.c:3088 -#: src/cryptsetup.c:3255 +#: src/cryptsetup.c:2074 src/cryptsetup.c:2426 src/cryptsetup.c:3086 +#: src/cryptsetup.c:3253 #, c-format msgid "Device %s is not a valid LUKS2 device." msgstr "Dispozitivul %s nu este un dispozitiv LUKS2 valid." -#: src/cryptsetup.c:2115 src/cryptsetup.c:2314 +#: src/cryptsetup.c:2113 src/cryptsetup.c:2312 msgid "Enter new passphrase for key slot: " msgstr "Introduceți noua frază de acces pentru slotul de cheie: " -#: src/cryptsetup.c:2149 src/utils_luks.c:342 +#: src/cryptsetup.c:2147 src/utils_luks.c:342 #, c-format msgid "Enter token PIN: " msgstr "Introduceți codul PIN al jetonului: " -#: src/cryptsetup.c:2151 src/utils_luks.c:344 +#: src/cryptsetup.c:2149 src/utils_luks.c:344 #, c-format msgid "Enter token %d PIN: " msgstr "Introduceți codul PIN al jetonului(token) %d: " -#: src/cryptsetup.c:2210 +#: src/cryptsetup.c:2208 msgid "WARNING: The --key-slot parameter is used for new keyslot number.\n" msgstr "AVERTISMENT: Parametrul „--key-slot” este utilizat pentru noul număr de slot de cheie.\n" -#: src/cryptsetup.c:2287 src/utils_reencrypt_luks1.c:1094 +#: src/cryptsetup.c:2285 src/utils_reencrypt_luks1.c:1094 #, c-format msgid "Enter any existing passphrase: " msgstr "Introduceți orice frază de acces existentă: " -#: src/cryptsetup.c:2383 +#: src/cryptsetup.c:2381 msgid "Enter passphrase to be changed: " msgstr "Introduceți fraza de acces pentru a fi schimbată: " -#: src/cryptsetup.c:2399 src/utils_reencrypt_luks1.c:1080 +#: src/cryptsetup.c:2397 src/utils_reencrypt_luks1.c:1080 msgid "Enter new passphrase: " msgstr "Introduceți nouă frază de acces: " -#: src/cryptsetup.c:2449 +#: src/cryptsetup.c:2447 msgid "Enter passphrase for keyslot to be converted: " msgstr "Introduceți fraza de acces pentru slotul de cheie care urmează să fie convertit: " -#: src/cryptsetup.c:2473 +#: src/cryptsetup.c:2471 msgid "Only one device argument for isLuks operation is supported." msgstr "Doar un singur dispozitiv este admis ca argument pentru operația isLuks." -#: src/cryptsetup.c:2578 +#: src/cryptsetup.c:2576 #, c-format msgid "Keyslot %d does not contain unbound key." msgstr "Slotul de cheie %d nu conține o cheie neasociată." -#: src/cryptsetup.c:2583 +#: src/cryptsetup.c:2581 msgid "" "The header dump with unbound key is sensitive information.\n" "This dump should be stored encrypted in a safe place." @@ -2550,52 +2551,52 @@ msgstr "" "Conținutul antetului cu cheia neasociată este o informație sensibilă.\n" "Acest conținut ar trebui să fie stocat criptat într-un loc sigur." -#: src/cryptsetup.c:2678 src/cryptsetup.c:2714 +#: src/cryptsetup.c:2676 src/cryptsetup.c:2712 #, c-format msgid "%s is not active %s device name." msgstr "%s nu este numele dispozitivului activ %s." -#: src/cryptsetup.c:2709 +#: src/cryptsetup.c:2707 #, c-format msgid "%s is not active LUKS device name or header is missing." msgstr "%s nu este numele unui dispozitiv LUKS activ sau antetul lipsește." -#: src/cryptsetup.c:2786 src/cryptsetup.c:2805 +#: src/cryptsetup.c:2784 src/cryptsetup.c:2803 msgid "Option --header-backup-file is required." msgstr "Este necesară opțiunea „--header-backup-file”." -#: src/cryptsetup.c:2836 +#: src/cryptsetup.c:2834 #, c-format msgid "%s is not cryptsetup managed device." msgstr "%s nu este un dispozitiv gestionat de «cryptsetup»." -#: src/cryptsetup.c:2847 +#: src/cryptsetup.c:2845 #, c-format msgid "Refresh is not supported for device type %s" msgstr "Reîmprospătarea nu este disponibilă pentru tipul de dispozitiv %s" -#: src/cryptsetup.c:2897 +#: src/cryptsetup.c:2895 #, c-format msgid "Unrecognized metadata device type %s." msgstr "Tip de dispozitiv de metadate nerecunoscut %s." -#: src/cryptsetup.c:2899 +#: src/cryptsetup.c:2897 msgid "Command requires device and mapped name as arguments." msgstr "Comanda necesită un dispozitiv și numele asociat acestuia ca argumente." -#: src/cryptsetup.c:2917 +#: src/cryptsetup.c:2915 msgid "Enter OPAL PSID: " msgstr "Introduceți PSID OPAL: " -#: src/cryptsetup.c:2917 +#: src/cryptsetup.c:2915 msgid "Enter OPAL Admin password: " msgstr "Introduceți parola de administrator OPAL: " -#: src/cryptsetup.c:2925 +#: src/cryptsetup.c:2923 msgid "WARNING: WHOLE disk will be factory reset and all data will be lost! Continue?" msgstr "AVERTISMENT: ÎNTREGUL disc va fi reinițializat la valorile din fabrică și toate datele se vor pierde! Continuați?" -#: src/cryptsetup.c:2968 +#: src/cryptsetup.c:2966 #, c-format msgid "" "This operation will erase all keyslots on device %s.\n" @@ -2604,363 +2605,363 @@ msgstr "" "Această operație va șterge toate sloturile de chei de pe dispozitivul %s.\n" "Dispozitivul va deveni inutilizabil după această operație." -#: src/cryptsetup.c:2975 +#: src/cryptsetup.c:2973 msgid "Operation aborted, keyslots were NOT wiped.\n" msgstr "Operația a fost întreruptă, sloturile de chei NU au fost șterse.\n" -#: src/cryptsetup.c:3014 +#: src/cryptsetup.c:3012 msgid "Invalid LUKS type, only luks1 and luks2 are supported." msgstr "Tip LUKS nevalid, numai luks1 și luks2 sunt acceptate." -#: src/cryptsetup.c:3030 +#: src/cryptsetup.c:3028 #, c-format msgid "Device is already %s type." msgstr "Dispozitivul este deja de tip %s." -#: src/cryptsetup.c:3037 +#: src/cryptsetup.c:3035 #, c-format msgid "This operation will convert %s to %s format.\n" msgstr "Această operație va converti %s în formatul %s.\n" -#: src/cryptsetup.c:3040 +#: src/cryptsetup.c:3038 msgid "Operation aborted, device was NOT converted.\n" msgstr "Operația a fost întreruptă, dispozitivul NU a fost convertit.\n" -#: src/cryptsetup.c:3080 +#: src/cryptsetup.c:3078 msgid "Option --priority, --label or --subsystem is missing." msgstr "Opțiunea „--priority”, „--label” sau „--subsystem” lipsește." -#: src/cryptsetup.c:3114 src/cryptsetup.c:3154 src/cryptsetup.c:3174 +#: src/cryptsetup.c:3112 src/cryptsetup.c:3152 src/cryptsetup.c:3172 #, c-format msgid "Token %d is invalid." msgstr "Jetonul(token) %d nu este valid." -#: src/cryptsetup.c:3117 src/cryptsetup.c:3177 +#: src/cryptsetup.c:3115 src/cryptsetup.c:3175 #, c-format msgid "Token %d in use." msgstr "Jetonul(token) %d este în uz." -#: src/cryptsetup.c:3129 +#: src/cryptsetup.c:3127 #, c-format msgid "Failed to add luks2-keyring token %d." msgstr "Nu s-a putut adăuga jetonul(token) %d la inelul de chei luks2." -#: src/cryptsetup.c:3140 src/cryptsetup.c:3203 +#: src/cryptsetup.c:3138 src/cryptsetup.c:3201 #, c-format msgid "Failed to assign token %d to keyslot %d." msgstr "Nu s-a putut atribui jetonul(token) %d slotului pentru cheie %d." -#: src/cryptsetup.c:3157 +#: src/cryptsetup.c:3155 #, c-format msgid "Token %d is not in use." msgstr "Jetonul %d nu este în uz." -#: src/cryptsetup.c:3194 +#: src/cryptsetup.c:3192 msgid "Failed to import token from file." msgstr "Nu s-a putut importa jetonul din fișier." -#: src/cryptsetup.c:3219 +#: src/cryptsetup.c:3217 #, c-format msgid "Failed to get token %d for export." msgstr "Nu s-a putut obține jetonul %d pentru export." -#: src/cryptsetup.c:3232 +#: src/cryptsetup.c:3230 #, c-format msgid "Token %d is not assigned to keyslot %d." msgstr "Jetonul %d nu este alocat slotului de cheie %d." -#: src/cryptsetup.c:3234 src/cryptsetup.c:3241 +#: src/cryptsetup.c:3232 src/cryptsetup.c:3239 #, c-format msgid "Failed to unassign token %d from keyslot %d." msgstr "Nu s-a putut anula atribuirea jetonului %d din slotul de cheie %d." -#: src/cryptsetup.c:3300 +#: src/cryptsetup.c:3298 msgid "Option --tcrypt-hidden, --tcrypt-system or --tcrypt-backup is supported only for TCRYPT device." msgstr "Opțiunea „--tcrypt-hidden”, „--tcrypt-system” sau „--tcrypt-backup” este acceptată doar pentru dispozitivele TCRYPT." -#: src/cryptsetup.c:3303 +#: src/cryptsetup.c:3301 msgid "Option --veracrypt or --disable-veracrypt is supported only for TCRYPT device type." msgstr "Opțiunea „--veracrypt” sau „--disable-veracrypt” este acceptată numai pentru tipul de dispozitiv TCRYPT." -#: src/cryptsetup.c:3306 +#: src/cryptsetup.c:3304 msgid "Option --veracrypt-pim is supported only for VeraCrypt compatible devices." msgstr "Opțiunea „--veracrypt-pim” este acceptată numai pentru dispozitivele compatibile cu VeraCrypt." -#: src/cryptsetup.c:3310 +#: src/cryptsetup.c:3308 msgid "Option --veracrypt-query-pim is supported only for VeraCrypt compatible devices." msgstr "Opțiunea „--veracrypt-query-pim” este acceptată numai pentru dispozitivele compatibile cu VeraCrypt." -#: src/cryptsetup.c:3312 +#: src/cryptsetup.c:3310 msgid "The options --veracrypt-pim and --veracrypt-query-pim are mutually exclusive." msgstr "Opțiunile „--veracrypt-pim” și „--veracrypt-query-pim” se exclud reciproc." -#: src/cryptsetup.c:3321 +#: src/cryptsetup.c:3319 msgid "Option --persistent is not allowed with --test-passphrase." msgstr "Opțiunea „--persistent” nu este permisă cu opțiunea „--test-passphrase”." -#: src/cryptsetup.c:3324 +#: src/cryptsetup.c:3322 msgid "Options --refresh and --test-passphrase are mutually exclusive." msgstr "Opțiunile „--refresh” și „--test-passphrase” se exclud reciproc." -#: src/cryptsetup.c:3327 +#: src/cryptsetup.c:3325 msgid "Option --shared is allowed only for open of plain device." msgstr "Opțiunea „--shared” este permisă numai pentru deschiderea unui dispozitiv simplu." -#: src/cryptsetup.c:3330 +#: src/cryptsetup.c:3328 msgid "Option --skip is supported only for open of plain and loopaes devices." msgstr "Opțiunea „--skip” este acceptată numai pentru deschiderea dispozitivelor simple și a dispozitivelor loopaes." -#: src/cryptsetup.c:3333 +#: src/cryptsetup.c:3331 msgid "Option --offset with open action is only supported for plain and loopaes devices." msgstr "Opțiunea „--offset” cu acțiune de deschidere este acceptată numai pentru dispozitivele simple și dispozitivele loopaes." -#: src/cryptsetup.c:3336 +#: src/cryptsetup.c:3334 msgid "Option --tcrypt-hidden cannot be combined with --allow-discards." msgstr "Opțiunea „--tcrypt-hidden” nu poate fi combinată cu opțiunea „--allow-discards”." -#: src/cryptsetup.c:3340 +#: src/cryptsetup.c:3338 msgid "Sector size option with open action is supported only for plain devices." msgstr "Opțiunea de dimensiune a sectorului cu acțiune de deschidere este acceptată numai pentru dispozitivele simple." -#: src/cryptsetup.c:3344 +#: src/cryptsetup.c:3342 msgid "Large IV sectors option is supported only for opening plain type device with sector size larger than 512 bytes." msgstr "Opțiunea sectoare IV (vector de inițializare) mari este acceptată numai pentru deschiderea dispozitivelor de tip simplu, cu dimensiunea sectorului mai mare de 512 de octeți." -#: src/cryptsetup.c:3349 +#: src/cryptsetup.c:3347 msgid "Option --test-passphrase is allowed only for open of LUKS, TCRYPT, BITLK and FVAULT2 devices." msgstr "Opțiunea „--test-passphrase” este permisă numai pentru deschiderea dispozitivelor LUKS, TCRYPT, BITLK și FVAULT2." -#: src/cryptsetup.c:3352 src/cryptsetup.c:3382 +#: src/cryptsetup.c:3350 src/cryptsetup.c:3380 msgid "Options --device-size and --size cannot be combined." msgstr "Opțiunile „--device-size” și „--size” nu pot fi combinate." -#: src/cryptsetup.c:3355 +#: src/cryptsetup.c:3353 msgid "Option --unbound is allowed only for open of luks device." msgstr "Opțiunea „--unbound” este permisă numai pentru deschiderea dispozitivelor luks." -#: src/cryptsetup.c:3358 +#: src/cryptsetup.c:3356 msgid "Option --unbound cannot be used without --test-passphrase." msgstr "Opțiunea „--unbound” nu poate fi utilizată fără opțiunea „--test-passphrase”." -#: src/cryptsetup.c:3362 +#: src/cryptsetup.c:3360 msgid "Option --volume-key-keyring cannot be combined with --hash or --volume-key-file." msgstr "Opțiunea „--volume-key-keyring” nu poate fi combinată cu opțiunea „--hash” sau cu opțiunea „--volume-key-file”." -#: src/cryptsetup.c:3365 +#: src/cryptsetup.c:3363 msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "Ambele opțiuni „--volume-key-file” trebuie să fie asociate cu opțiunile „--key-size” respective." -#: src/cryptsetup.c:3374 src/veritysetup.c:673 src/integritysetup.c:784 +#: src/cryptsetup.c:3372 src/veritysetup.c:673 src/integritysetup.c:787 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "Opțiunile „--cancel-deferred” și „--deferred” nu pot fi utilizate în același timp." -#: src/cryptsetup.c:3390 +#: src/cryptsetup.c:3388 msgid "Option --active-name can be set only for LUKS2 device." msgstr "Opțiunea „--active-name” poate fi utilizată numai pentru dispozitivele LUKS2." -#: src/cryptsetup.c:3393 +#: src/cryptsetup.c:3391 msgid "Options --active-name and --force-offline-reencrypt cannot be combined." msgstr "Opțiunile „--active-name” și „--force-offline-reencrypt” nu pot fi combinate." -#: src/cryptsetup.c:3396 +#: src/cryptsetup.c:3394 msgid "Options --new-volume-key-file and --keep-key cannot be combined." msgstr "Opțiunile „--new-volume-key-file” și „--keep-key” nu pot fi combinate." -#: src/cryptsetup.c:3399 +#: src/cryptsetup.c:3397 msgid "Options --new-volume-key-keyring and --keep-key cannot be combined." msgstr "Opțiunile „--new-volume-key-keyring” și „--keep-key” nu pot fi combinate." -#: src/cryptsetup.c:3407 src/cryptsetup.c:3437 +#: src/cryptsetup.c:3405 src/cryptsetup.c:3435 msgid "Keyslot specification is required." msgstr "Este necesară specificarea slotului de cheie." -#: src/cryptsetup.c:3415 +#: src/cryptsetup.c:3413 msgid "Options --align-payload and --offset cannot be combined." msgstr "Opțiunile „--align-payload” și „--offset” nu pot fi combinate." -#: src/cryptsetup.c:3418 +#: src/cryptsetup.c:3416 msgid "Option --integrity-no-wipe can be used only for format action with integrity extension." msgstr "Opțiunea „--integrity-no-wipe” poate fi utilizată numai pentru acțiuni de formatare cu extensie de integritate." -#: src/cryptsetup.c:3421 +#: src/cryptsetup.c:3419 msgid "Only one of --use-[u]random options is allowed." msgstr "Numai una dintre opțiunile „--use-[u]random” este permisă." -#: src/cryptsetup.c:3429 +#: src/cryptsetup.c:3427 msgid "Key size is required with --unbound option." msgstr "Dimensiunea cheii este necesară cu opțiunea „--unbound”." -#: src/cryptsetup.c:3449 +#: src/cryptsetup.c:3447 msgid "Invalid token action." msgstr "Operație cu jeton(token) nevalidă." -#: src/cryptsetup.c:3452 +#: src/cryptsetup.c:3450 msgid "--key-description parameter is mandatory for token add action." msgstr "Parametrul „--key-description” este obligatoriu pentru acțiunea de adăugare a jetonului." -#: src/cryptsetup.c:3456 src/cryptsetup.c:3469 +#: src/cryptsetup.c:3454 src/cryptsetup.c:3467 msgid "Action requires specific token. Use --token-id parameter." msgstr "Acțiunea necesită un jeton(token)l specific. Utilizați parametrul „--token-id”." -#: src/cryptsetup.c:3460 +#: src/cryptsetup.c:3458 msgid "Option --unbound is valid only with token add action." msgstr "Opțiunea „--unbound” este validă numai cu acțiunea de adăugare a jetonului." -#: src/cryptsetup.c:3462 +#: src/cryptsetup.c:3460 msgid "Options --key-slot and --unbound cannot be combined." msgstr "Opțiunile „--key-slot” și „--unbound” nu pot fi combinate." -#: src/cryptsetup.c:3467 +#: src/cryptsetup.c:3465 msgid "Action requires specific keyslot. Use --key-slot parameter." msgstr "Acțiunea necesită un slot de cheie specific. Utilizați parametrul „--key-slot”." -#: src/cryptsetup.c:3483 +#: src/cryptsetup.c:3481 msgid " [--type ] []" msgstr " [--type ] []" -#: src/cryptsetup.c:3483 src/veritysetup.c:487 src/integritysetup.c:551 +#: src/cryptsetup.c:3481 src/veritysetup.c:487 src/integritysetup.c:554 msgid "open device as " msgstr "deschide dispozitivul ca " -#: src/cryptsetup.c:3484 src/cryptsetup.c:3485 src/cryptsetup.c:3486 -#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:552 -#: src/integritysetup.c:553 src/integritysetup.c:555 +#: src/cryptsetup.c:3482 src/cryptsetup.c:3483 src/cryptsetup.c:3484 +#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:555 +#: src/integritysetup.c:556 src/integritysetup.c:558 msgid "" msgstr "" -#: src/cryptsetup.c:3484 src/veritysetup.c:488 src/integritysetup.c:552 +#: src/cryptsetup.c:3482 src/veritysetup.c:488 src/integritysetup.c:555 msgid "close device (remove mapping)" msgstr "închide dispozitivul (elimină asocierea)" -#: src/cryptsetup.c:3485 src/integritysetup.c:555 +#: src/cryptsetup.c:3483 src/integritysetup.c:558 msgid "resize active device" msgstr "redimensionează dispozitivul activ" -#: src/cryptsetup.c:3486 +#: src/cryptsetup.c:3484 msgid "show device status" msgstr "afișează starea dispozitivului" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3485 msgid "[--cipher ]" msgstr "[--cipher ]" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3485 msgid "benchmark cipher" msgstr "evaluează performanța cifrului" -#: src/cryptsetup.c:3488 src/cryptsetup.c:3489 src/cryptsetup.c:3490 -#: src/cryptsetup.c:3491 src/cryptsetup.c:3492 src/cryptsetup.c:3499 -#: src/cryptsetup.c:3500 src/cryptsetup.c:3501 src/cryptsetup.c:3502 -#: src/cryptsetup.c:3503 src/cryptsetup.c:3504 src/cryptsetup.c:3505 -#: src/cryptsetup.c:3506 src/cryptsetup.c:3507 src/cryptsetup.c:3508 +#: src/cryptsetup.c:3486 src/cryptsetup.c:3487 src/cryptsetup.c:3488 +#: src/cryptsetup.c:3489 src/cryptsetup.c:3490 src/cryptsetup.c:3497 +#: src/cryptsetup.c:3498 src/cryptsetup.c:3499 src/cryptsetup.c:3500 +#: src/cryptsetup.c:3501 src/cryptsetup.c:3502 src/cryptsetup.c:3503 +#: src/cryptsetup.c:3504 src/cryptsetup.c:3505 src/cryptsetup.c:3506 msgid "" msgstr "" -#: src/cryptsetup.c:3488 +#: src/cryptsetup.c:3486 msgid "try to repair on-disk metadata" msgstr "încearcă să repare metadatele de pe disc" -#: src/cryptsetup.c:3489 +#: src/cryptsetup.c:3487 msgid "reencrypt LUKS2 device" msgstr "recriptează dispozitivul LUKS2" -#: src/cryptsetup.c:3490 +#: src/cryptsetup.c:3488 msgid "erase all keyslots (remove encryption key)" msgstr "șterge toate sloturile de chei (elimină cheia de criptare)" -#: src/cryptsetup.c:3491 +#: src/cryptsetup.c:3489 msgid "convert LUKS from/to LUKS2 format" msgstr "convertește LUKS din/în formatul LUKS2" -#: src/cryptsetup.c:3492 +#: src/cryptsetup.c:3490 msgid "set permanent configuration options for LUKS2" msgstr "definește opțiunile permanente de configurare pentru LUKS2" -#: src/cryptsetup.c:3493 src/cryptsetup.c:3494 +#: src/cryptsetup.c:3491 src/cryptsetup.c:3492 msgid " []" msgstr " []" -#: src/cryptsetup.c:3493 +#: src/cryptsetup.c:3491 msgid "formats a LUKS device" msgstr "formatează un dispozitiv LUKS" -#: src/cryptsetup.c:3494 +#: src/cryptsetup.c:3492 msgid "add key to LUKS device" msgstr "adaugă o cheie la dispozitivul LUKS" -#: src/cryptsetup.c:3495 src/cryptsetup.c:3496 src/cryptsetup.c:3497 +#: src/cryptsetup.c:3493 src/cryptsetup.c:3494 src/cryptsetup.c:3495 msgid " []" msgstr " []" -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3493 msgid "removes supplied key or key file from LUKS device" msgstr "elimină cheia sau fișierul cheie furnizat de pe dispozitivul LUKS" -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3494 msgid "changes supplied key or key file of LUKS device" msgstr "modifică cheia furnizată sau fișierul cheie al dispozitivului LUKS" -#: src/cryptsetup.c:3497 +#: src/cryptsetup.c:3495 msgid "converts a key to new pbkdf parameters" msgstr "convertește o cheie în noii parametri pbkdf" -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3496 msgid " " msgstr " " -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3496 msgid "wipes key with number from LUKS device" msgstr "șterge cheia cu numărul de pe dispozitivul LUKS" -#: src/cryptsetup.c:3499 +#: src/cryptsetup.c:3497 msgid "print UUID of LUKS device" msgstr "afișează UUID-ul dispozitivului LUKS" -#: src/cryptsetup.c:3500 +#: src/cryptsetup.c:3498 msgid "tests for LUKS partition header" msgstr "testează pentru antetul partiției LUKS" -#: src/cryptsetup.c:3501 +#: src/cryptsetup.c:3499 msgid "dump LUKS partition information" msgstr "afișează informațiile despre partiția LUKS" -#: src/cryptsetup.c:3502 +#: src/cryptsetup.c:3500 msgid "dump TCRYPT device information" msgstr "afișează informațiile despre dispozitivul TCRYPT" -#: src/cryptsetup.c:3503 +#: src/cryptsetup.c:3501 msgid "dump BITLK device information" msgstr "afișează informațiile despre dispozitivul BITLK" -#: src/cryptsetup.c:3504 +#: src/cryptsetup.c:3502 msgid "dump FVAULT2 device information" msgstr "afișează informațiile despre dispozitivul FVAULT2" -#: src/cryptsetup.c:3505 +#: src/cryptsetup.c:3503 msgid "Suspend LUKS device and wipe key (all IOs are frozen)" msgstr "Suspendă dispozitivul LUKS și șterge cheia (toate In/Ieșirile sunt înghețate)" -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3504 msgid "Resume suspended LUKS device" msgstr "Repune în funcțiune dispozitivul LUKS suspendat" -#: src/cryptsetup.c:3507 +#: src/cryptsetup.c:3505 msgid "Backup LUKS device header and keyslots" msgstr "Face copie de rezervă pentru antetul dispozitivului LUKS și pentru sloturile de chei" -#: src/cryptsetup.c:3508 +#: src/cryptsetup.c:3506 msgid "Restore LUKS device header and keyslots" msgstr "Restaurează antetul dispozitivului LUKS și sloturile de chei" -#: src/cryptsetup.c:3509 +#: src/cryptsetup.c:3507 msgid " " msgstr " " -#: src/cryptsetup.c:3509 +#: src/cryptsetup.c:3507 msgid "Manipulate LUKS2 tokens" msgstr "Manipulează jetoanele LUKS2" -#: src/cryptsetup.c:3528 src/veritysetup.c:505 src/integritysetup.c:570 +#: src/cryptsetup.c:3526 src/veritysetup.c:505 src/integritysetup.c:573 msgid "" "\n" " is one of:\n" @@ -2975,7 +2976,7 @@ msgstr "" # nume, sau alias pentru primele. # A se vedea ieșirea comenzii: # «cryptsetup -?|--help» -#: src/cryptsetup.c:3534 +#: src/cryptsetup.c:3532 msgid "" "\n" "You can also use old syntax aliases:\n" @@ -2987,7 +2988,7 @@ msgstr "" "\topen: create (plainOpen), luksOpen, loopaesOpen, tcryptOpen, bitlkOpen, fvault2Open\n" "\tclose: remove (plainClose), luksClose, loopaesClose, tcryptClose, bitlkClose, fvault2Close\n" -#: src/cryptsetup.c:3538 +#: src/cryptsetup.c:3536 #, c-format msgid "" "\n" @@ -3002,7 +3003,7 @@ msgstr "" " este numărul slotului de cheie LUKS de modificat\n" " fișier cheie opțional pentru noua cheie pentru acțiunea luksAddKey\n" -#: src/cryptsetup.c:3545 +#: src/cryptsetup.c:3543 #, c-format msgid "" "\n" @@ -3011,7 +3012,7 @@ msgstr "" "\n" "Formatul implicit de metadate compilate este %s (pentru acțiunea luksFormat).\n" -#: src/cryptsetup.c:3550 +#: src/cryptsetup.c:3548 msgid "" "\n" "LUKS2 external token plugin support is enabled.\n" @@ -3019,12 +3020,12 @@ msgstr "" "\n" "Suportul pentru modulul de jeton(token) extern LUKS2 este activat.\n" -#: src/cryptsetup.c:3551 +#: src/cryptsetup.c:3549 #, c-format msgid "LUKS2 external token plugin path: %s.\n" msgstr "Ruta modulului pentru jetonul(token) extern LUKS2: %s.\n" -#: src/cryptsetup.c:3553 +#: src/cryptsetup.c:3551 msgid "" "\n" "LUKS2 external token plugin support is disabled.\n" @@ -3032,7 +3033,7 @@ msgstr "" "\n" "Suportul pentru modulul de jeton(token) extern LUKS2 este dezactivat.\n" -#: src/cryptsetup.c:3557 +#: src/cryptsetup.c:3555 #, c-format msgid "" "\n" @@ -3049,7 +3050,7 @@ msgstr "" "PBKDF implicit pentru LUKS2: %s\n" "\tTimp de iterare: %d, Memorie necesară: %dko, Fire de execuție paralele: %d\n" -#: src/cryptsetup.c:3568 +#: src/cryptsetup.c:3566 #, c-format msgid "" "\n" @@ -3064,122 +3065,122 @@ msgstr "" "\tsimplu: %s, Cheie: %d biți, Suma de control a parolei: %s\n" "\tLUKS: %s, Cheie: %d biți, Suma de control a antetului LUKS: %s, RNG: %s\n" -#: src/cryptsetup.c:3577 +#: src/cryptsetup.c:3575 msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: Dimensiunea implicită a cheii cu modul XTS (două chei interne) va fi dublată.\n" -#: src/cryptsetup.c:3595 src/veritysetup.c:647 src/integritysetup.c:730 +#: src/cryptsetup.c:3593 src/veritysetup.c:647 src/integritysetup.c:733 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: necesită %s ca argumente" -#: src/cryptsetup.c:3635 src/utils_reencrypt_luks1.c:1143 +#: src/cryptsetup.c:3633 src/utils_reencrypt_luks1.c:1143 msgid "Key slot is invalid." msgstr "Slotul de cheie nu este valid." -#: src/cryptsetup.c:3663 +#: src/cryptsetup.c:3661 msgid "Device size must be multiple of 512 bytes sector." msgstr "Dimensiunea dispozitivului trebuie să fie multiplu al sectorului de 512 octeți." -#: src/cryptsetup.c:3668 +#: src/cryptsetup.c:3666 msgid "Invalid max reencryption hotzone size specification." msgstr "Specificația pentru dimensiunea zonei fierbinți(active) pentru recriptare maximă nu este validă." -#: src/cryptsetup.c:3682 src/cryptsetup.c:3699 src/cryptsetup.c:3711 +#: src/cryptsetup.c:3680 src/cryptsetup.c:3697 src/cryptsetup.c:3709 msgid "Key size must be a multiple of 8 bits" msgstr "Dimensiunea cheii trebuie să fie multiplu de 8 biți" -#: src/cryptsetup.c:3689 +#: src/cryptsetup.c:3687 msgid "At most 2 key size specifications can be supplied." msgstr "Pot fi furnizate cel mult 2 specificații privind dimensiunea cheii." -#: src/cryptsetup.c:3718 src/cryptsetup.c:3729 +#: src/cryptsetup.c:3716 src/cryptsetup.c:3727 #, c-format msgid "At most %d volume key specifications can be supplied." msgstr "Pot fi furnizate cel mult %d specificații ale cheilor de volum." -#: src/cryptsetup.c:3741 +#: src/cryptsetup.c:3739 #, c-format msgid "At most %d keyring link specifications can be supplied." msgstr "Pot fi furnizate cel mult %d specificații de legătură a inelului de chei." -#: src/cryptsetup.c:3750 +#: src/cryptsetup.c:3748 msgid "Maximum device reduce size is 1 GiB." msgstr "Dimensiunea maximă de reducere a dispozitivului este de 1 GiB." -#: src/cryptsetup.c:3753 +#: src/cryptsetup.c:3751 msgid "Reduce size must be multiple of 512 bytes sector." msgstr "Dimensiunea redusă trebuie să fie multiplu al sectorului de 512 octeți." -#: src/cryptsetup.c:3770 +#: src/cryptsetup.c:3768 msgid "Option --priority can be only ignore/normal/prefer." msgstr "Argumentul opțiuni „--priority” poate fi doar «ignore/normal/prefer»." -#: src/cryptsetup.c:3789 src/veritysetup.c:568 src/integritysetup.c:650 +#: src/cryptsetup.c:3787 src/veritysetup.c:568 src/integritysetup.c:653 msgid "Show this help message" msgstr "Afișează acest mesaj de ajutor" -#: src/cryptsetup.c:3790 src/veritysetup.c:569 src/integritysetup.c:651 +#: src/cryptsetup.c:3788 src/veritysetup.c:569 src/integritysetup.c:654 msgid "Display brief usage" msgstr "Afișează modul de utilizare pe scurt" -#: src/cryptsetup.c:3791 src/veritysetup.c:570 src/integritysetup.c:652 +#: src/cryptsetup.c:3789 src/veritysetup.c:570 src/integritysetup.c:655 msgid "Print package version" msgstr "Afișează versiunea pachetului" -#: src/cryptsetup.c:3802 src/veritysetup.c:581 src/integritysetup.c:663 +#: src/cryptsetup.c:3800 src/veritysetup.c:581 src/integritysetup.c:666 msgid "Help options:" msgstr "Opțiuni de ajutor:" -#: src/cryptsetup.c:3825 src/veritysetup.c:602 src/integritysetup.c:683 +#: src/cryptsetup.c:3823 src/veritysetup.c:602 src/integritysetup.c:686 msgid "[OPTION...] " msgstr "[OPȚIUNE...] " -#: src/cryptsetup.c:3834 src/veritysetup.c:611 src/integritysetup.c:694 +#: src/cryptsetup.c:3832 src/veritysetup.c:611 src/integritysetup.c:697 msgid "Argument missing." msgstr "Argumentul lipsește." -#: src/cryptsetup.c:3913 src/veritysetup.c:642 src/integritysetup.c:725 +#: src/cryptsetup.c:3911 src/veritysetup.c:642 src/integritysetup.c:728 msgid "Unknown action." msgstr "Acțiune necunoscută." -#: src/cryptsetup.c:3931 +#: src/cryptsetup.c:3929 msgid "Option --key-file takes precedence over specified key file argument." msgstr "Opțiunea „--key-file” are prioritate față de argumentul specificat pentru fișierul cheie." -#: src/cryptsetup.c:3937 +#: src/cryptsetup.c:3935 msgid "Only one --key-file argument is allowed." msgstr "Numai un argument „--key-file” este permis." -#: src/cryptsetup.c:3942 +#: src/cryptsetup.c:3940 msgid "Password-based key derivation function (PBKDF) can be only pbkdf2 or argon2i/argon2id." msgstr "Funcția de derivare a unei chei bazată pe parolă (PBKDF=Password-Based Key Derivation Function) poate fi doar pbkdf2 sau argon2i/argon2id." -#: src/cryptsetup.c:3947 +#: src/cryptsetup.c:3945 msgid "PBKDF forced iterations cannot be combined with iteration time option." msgstr "Iterațiile forțate PBKDF nu pot fi combinate cu opțiunea de timp de iterație." -#: src/cryptsetup.c:3952 +#: src/cryptsetup.c:3950 msgid "Cannot link volume key to a keyring when keyring is disabled." msgstr "Nu se poate lega cheia de volum la un inel de chei când este dezactivat." -#: src/cryptsetup.c:3957 +#: src/cryptsetup.c:3955 msgid "Cannot use keyring key description when keyring is disabled." msgstr "Nu se poate utiliza descrierea cheii pentru inelul de chei atunci când inelul de chei este dezactivat." -#: src/cryptsetup.c:3962 +#: src/cryptsetup.c:3960 msgid "Inline integrity must be used together with --integrity option." msgstr "Integritatea în linie trebuie utilizată împreună cu opțiunea „--integrity”." -#: src/cryptsetup.c:3973 +#: src/cryptsetup.c:3971 msgid "Options --keyslot-cipher and --keyslot-key-size must be used together." msgstr "Opțiunile „--keyslot-cipher” și „--keyslot-key-size” trebuie să fie folosite împreună." -#: src/cryptsetup.c:3981 +#: src/cryptsetup.c:3979 msgid "No action taken. Invoked with --test-args option.\n" msgstr "Nu s-a executat nicio acțiune. Programul a fost invocat cu opțiunea „--test-args”.\n" -#: src/cryptsetup.c:3994 +#: src/cryptsetup.c:3992 msgid "Cannot disable metadata locking." msgstr "Nu se poate dezactiva blocarea metadatelor." @@ -3244,7 +3245,7 @@ msgstr "Comanda necesită ca argument opțiunea " msgstr " " -#: src/veritysetup.c:485 src/integritysetup.c:550 +#: src/veritysetup.c:485 src/integritysetup.c:553 msgid "format device" msgstr "formatează dispozitivul" @@ -3260,7 +3261,7 @@ msgstr "verifică dispozitivul" msgid " []" msgstr " []" -#: src/veritysetup.c:489 src/integritysetup.c:553 +#: src/veritysetup.c:489 src/integritysetup.c:556 msgid "show active device status" msgstr "afișează starea dispozitivului activ" @@ -3268,7 +3269,7 @@ msgstr "afișează starea dispozitivului activ" msgid "" msgstr "" -#: src/veritysetup.c:490 src/integritysetup.c:554 +#: src/veritysetup.c:490 src/integritysetup.c:557 msgid "show on-disk information" msgstr "afișează informațiile de pe disc" @@ -3329,24 +3330,24 @@ msgstr "Formatat cu dimensiunea etichetei %u%s, integritate internă %s.\n" msgid " (inline hw tags)" msgstr " (etichete hw în linie „inline”)" -#: src/integritysetup.c:297 +#: src/integritysetup.c:303 msgid "Setting recalculate flag is not supported, you may consider using --wipe instead." msgstr "Utilizarea fanionului pentru recalculare(...-recalculate) nu este acceptată, luați în considerare utilizarea opțiunii „--wipe” în schimb." -#: src/integritysetup.c:374 src/integritysetup.c:537 +#: src/integritysetup.c:380 src/integritysetup.c:540 #, c-format msgid "Device %s is not a valid INTEGRITY device." msgstr "Dispozitivul %s nu este un dispozitiv INTEGRITY valid." -#: src/integritysetup.c:550 src/integritysetup.c:554 +#: src/integritysetup.c:553 src/integritysetup.c:557 msgid "" msgstr "" -#: src/integritysetup.c:551 +#: src/integritysetup.c:554 msgid " " msgstr " " -#: src/integritysetup.c:574 +#: src/integritysetup.c:577 #, c-format msgid "" "\n" @@ -3357,7 +3358,7 @@ msgstr "" " este dispozitivul de creat sub %s\n" " este dispozitivul care conține date cu etichete de integritate\n" -#: src/integritysetup.c:579 +#: src/integritysetup.c:582 #, c-format msgid "" "\n" @@ -3370,48 +3371,48 @@ msgstr "" "\tAlgoritmul sumei de control: %s\n" "\tDimensiunea maximă a fișierului cheie: %dko\n" -#: src/integritysetup.c:636 +#: src/integritysetup.c:639 #, c-format msgid "Invalid --%s size. Maximum is %u bytes." msgstr "Dimensiune nevalidă --%s. Maximul este de %u octeți." -#: src/integritysetup.c:739 +#: src/integritysetup.c:742 msgid "Both key file and key size options must be specified." msgstr "Trebuie specificată atât opțiunea pentru fișierul cheie, cât și opțiunea pentru dimensiunea cheii." -#: src/integritysetup.c:743 +#: src/integritysetup.c:746 msgid "Both journal integrity key file and key size options must be specified." msgstr "Trebuie specificată atât opțiunea pentru fișierul cheii de integritate a jurnalului, cât și opțiunea pentru dimensiunea cheii." -#: src/integritysetup.c:746 +#: src/integritysetup.c:749 msgid "Journal integrity algorithm must be specified if journal integrity key is used." msgstr "Algoritmul de integritate a jurnalului trebuie să fie specificat dacă este utilizată cheia de integritate a jurnalului." -#: src/integritysetup.c:750 +#: src/integritysetup.c:753 msgid "Both journal encryption key file and key size options must be specified." msgstr "Trebuie specificată atât opțiunea pentru fișierul cheii de criptare a jurnalului, cât și opțiunea pentru dimensiunea cheii." -#: src/integritysetup.c:753 +#: src/integritysetup.c:756 msgid "Journal encryption algorithm must be specified if journal encryption key is used." msgstr "Algoritmul de criptare a jurnalului trebuie să fie specificat dacă este utilizată cheia de criptare a jurnalului." -#: src/integritysetup.c:757 +#: src/integritysetup.c:760 msgid "Recovery and bitmap mode options are mutually exclusive." msgstr "Opțiunile de recuperare și modul de hartă de biți(bitmap) se exclud reciproc." -#: src/integritysetup.c:764 +#: src/integritysetup.c:767 msgid "Journal options cannot be used in bitmap mode." msgstr "Opțiunile jurnalului nu pot fi utilizate în modul de hartă de biți(bitmap)." -#: src/integritysetup.c:769 +#: src/integritysetup.c:772 msgid "Bitmap options can be used only in bitmap mode." msgstr "Opțiunile de hartă de biți(bitmap) pot fi utilizate numai în modul de hartă de biți(bitmap)." -#: src/integritysetup.c:775 +#: src/integritysetup.c:778 msgid "Inline mode cannot be combined with journal or bitmap options." msgstr "Modul în linie nu poate fi combinat cu opțiunile de jurnal sau de hartă de biți." -#: src/integritysetup.c:779 +#: src/integritysetup.c:782 msgid "Inline mode cannot be combined with separate data device." msgstr "Modul în linie nu poate fi combinat cu un dispozitiv de date separat." @@ -4377,6 +4378,10 @@ msgstr "Metoda de autentificare cu cheie publică nu este permisă pe gazdă.\n" msgid "Public key authentication error: " msgstr "Eroare la autentificarea cu cheia publică: " +#, c-format +#~ msgid "Failed to read or validate BITLK FVE metadata copy #%d from %s." +#~ msgstr "Nu s-a putut citi sau valida copia metadatelor BITLK FVE #%d din %s." + #~ msgid "Activation of BITLK device with clear key protection is not supported." #~ msgstr "Activarea dispozitivului BITLK cu protecție de cheie în clar nu este acceptată." From addd73df83123a372aa4df352fab3f62e56db529 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mari=C3=A1n=20Haburaj?= Date: Tue, 31 Mar 2026 11:31:32 +0200 Subject: [PATCH 056/244] po: update sk.po (from translationproject.org) --- po/sk.po | 738 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 371 insertions(+), 367 deletions(-) diff --git a/po/sk.po b/po/sk.po index b27260c50..1887b99f7 100644 --- a/po/sk.po +++ b/po/sk.po @@ -1,7 +1,7 @@ # Slovak translation of cryptsetup -# Copyright (C) 2025 Free Software Foundation, Inc. +# Copyright (C) 2026 Free Software Foundation, Inc. # This file is put in the public domain. -# Marián Haburaj , 2025. +# Marián Haburaj , 2025, 2026. # # hash - hash # inline - inline @@ -16,10 +16,10 @@ # msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.2-rc0\n" +"Project-Id-Version: cryptsetup 2.8.5-rc0\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2025-12-12 18:51+0100\n" -"PO-Revision-Date: 2025-12-14 22:18+0100\n" +"POT-Creation-Date: 2026-03-30 14:18+0200\n" +"PO-Revision-Date: 2026-03-30 22:37+0200\n" "Last-Translator: Marián Haburaj \n" "Language-Team: Slovak \n" "Language: sk\n" @@ -27,7 +27,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -"X-Generator: Poedit 3.8\n" +"X-Generator: Poedit 3.9\n" #: lib/libdevmapper.c:419 msgid "Cannot initialize device-mapper, running as non-root user." @@ -196,8 +196,8 @@ msgstr "Veľkosť zariadenia nie je zarovnaná na veľkosť logického bloku zar msgid "Header detected but device %s is too small." msgstr "Hlavička bola nájdená, ale zariadenie %s je veľmi malé." -#: lib/setup.c:669 lib/setup.c:3760 lib/setup.c:5227 -#: lib/luks2/luks2_reencrypt.c:3945 lib/luks2/luks2_reencrypt.c:4434 +#: lib/setup.c:669 lib/setup.c:3760 lib/setup.c:5238 +#: lib/luks2/luks2_reencrypt.c:3948 lib/luks2/luks2_reencrypt.c:4437 msgid "This operation is not supported for this device type." msgstr "Táto operácie nie je podporovaná pre tento typ zariadenia." @@ -210,10 +210,10 @@ msgid "Failed to rollback LUKS2 metadata in memory." msgstr "Nahradenie pôvodných LUKS2 metadát v pamäti zlyhalo." #: lib/setup.c:893 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 -#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1782 -#: src/cryptsetup.c:1966 src/cryptsetup.c:2021 src/cryptsetup.c:2219 -#: src/cryptsetup.c:2364 src/cryptsetup.c:2642 src/cryptsetup.c:2955 -#: src/cryptsetup.c:3023 src/utils_reencrypt.c:2281 +#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 +#: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 +#: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2953 +#: src/cryptsetup.c:3021 src/utils_reencrypt.c:2281 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." @@ -230,7 +230,7 @@ msgid "No known cipher specification pattern detected for active device %s." msgstr "Žiadna známa špecifikácia šifry nebola nájdená pre aktívne zariadenie %s." #: lib/setup.c:1515 lib/setup.c:3507 lib/setup.c:3599 lib/setup.c:3611 -#: lib/setup.c:3783 lib/setup.c:5805 +#: lib/setup.c:3783 lib/setup.c:5816 #, c-format msgid "Device %s is not active." msgstr "Zariadenie %s nie je aktívne." @@ -257,7 +257,7 @@ msgid "Detached metadata device is not supported for this crypt type." msgstr "Zariadenie s oddelenými metadátami nie je podporované pre tento typ šifrovania." #: lib/setup.c:1639 lib/setup.c:1887 lib/luks2/luks2_reencrypt.c:3034 -#: src/cryptsetup.c:1494 src/cryptsetup.c:3762 +#: src/cryptsetup.c:1492 src/cryptsetup.c:3760 msgid "Unsupported encryption sector size." msgstr "Nepodporovaná veľkosť šifrovaného sektoru." @@ -310,9 +310,9 @@ msgstr "Šifra %s-%s (veľkosť kľúča %zd bitov) nie je dostupná." msgid "WARNING: The device activation will fail, dm-crypt is missing support for requested encryption sector size.\n" msgstr "VAROVANIE: Aktivácia zariadenia zlyhá, dm-crypt nepodporuje vyžadovanú veľkosť šifrovaného sektoru.\n" -#: lib/setup.c:2091 lib/setup.c:2458 lib/setup.c:2520 lib/utils_device.c:896 +#: lib/setup.c:2091 lib/setup.c:2458 lib/setup.c:2520 lib/utils_device.c:906 #: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3073 -#: lib/luks2/luks2_reencrypt.c:4494 +#: lib/luks2/luks2_reencrypt.c:4497 #, c-format msgid "Device %s is too small." msgstr "Zariadenie %s je príliš malé." @@ -470,7 +470,7 @@ msgid "Unsupported parameters on device %s." msgstr "Nepodporované parametre na zariadení %s." #: lib/setup.c:3521 lib/setup.c:3624 lib/luks2/luks2_reencrypt.c:2928 -#: lib/luks2/luks2_reencrypt.c:3197 lib/luks2/luks2_reencrypt.c:3591 +#: lib/luks2/luks2_reencrypt.c:3197 lib/luks2/luks2_reencrypt.c:3594 #, c-format msgid "Mismatching parameters on device %s." msgstr "Neodpovedajúce parametre na zariadení %s." @@ -480,7 +480,7 @@ msgid "Crypt devices mismatch." msgstr "Nesúlad v šifrovaných zariadeniach." #: lib/setup.c:3679 lib/setup.c:3684 lib/luks2/luks2_reencrypt.c:2412 -#: lib/luks2/luks2_reencrypt.c:2944 lib/luks2/luks2_reencrypt.c:4233 +#: lib/luks2/luks2_reencrypt.c:2944 lib/luks2/luks2_reencrypt.c:4236 #, c-format msgid "Failed to reload device %s." msgstr "Nepodarilo sa znovu načítať zariadenie %s." @@ -492,8 +492,8 @@ msgid "Failed to suspend device %s." msgstr "Zlyhalo pozastavenie zariadenia %s." #: lib/setup.c:3702 lib/luks2/luks2_reencrypt.c:2396 -#: lib/luks2/luks2_reencrypt.c:2979 lib/luks2/luks2_reencrypt.c:4146 -#: lib/luks2/luks2_reencrypt.c:4237 +#: lib/luks2/luks2_reencrypt.c:2979 lib/luks2/luks2_reencrypt.c:4149 +#: lib/luks2/luks2_reencrypt.c:4240 #, c-format msgid "Failed to resume device %s." msgstr "Zlyhalo prebudenie zariadenia %s." @@ -575,187 +575,187 @@ msgstr "Chyba počas prebúdzania zariadenia %s." msgid "Failed to unlink volume key from user specified keyring." msgstr "Zlyhalo odpojenie kľúča zväzku od používateľom zadaného zväzku kľúčov." -#: lib/setup.c:4423 lib/setup.c:5592 +#: lib/setup.c:4423 lib/setup.c:5603 msgid "Failed to link volume key in user defined keyring." msgstr "Zlyhalo pripojenie kľúča zväzku do používateľom zadaného zväzku kľúčov." -#: lib/setup.c:4521 src/cryptsetup.c:2723 +#: lib/setup.c:4522 src/cryptsetup.c:2721 #, c-format msgid "Volume %s is not suspended." msgstr "Zväzok %s nie je pozastavený." -#: lib/setup.c:4622 lib/setup.c:7265 lib/setup.c:7287 lib/setup.c:7341 -#: src/cryptsetup.c:1858 src/cryptsetup.c:2262 src/cryptsetup.c:2280 +#: lib/setup.c:4633 lib/setup.c:7276 lib/setup.c:7298 lib/setup.c:7352 +#: src/cryptsetup.c:1856 src/cryptsetup.c:2260 src/cryptsetup.c:2278 #: src/utils_reencrypt.c:305 src/utils_reencrypt.c:1966 msgid "Volume key does not match the volume." msgstr "Kľúč zväzku nezodpovedá zväzku." -#: lib/setup.c:4776 +#: lib/setup.c:4787 msgid "Failed to swap new key slot." msgstr "Zlyhala výmena nového miesta pre kľúč." -#: lib/setup.c:4874 +#: lib/setup.c:4885 #, c-format msgid "Key slot %d is invalid." msgstr "Miesto pre kľúč %d je neplatné." -#: lib/setup.c:4880 src/cryptsetup.c:1979 src/cryptsetup.c:2439 -#: src/cryptsetup.c:3123 src/cryptsetup.c:3183 +#: lib/setup.c:4891 src/cryptsetup.c:1977 src/cryptsetup.c:2437 +#: src/cryptsetup.c:3121 src/cryptsetup.c:3181 #, c-format msgid "Keyslot %d is not active." msgstr "Miesto pre kľúč %d nie je aktívne." -#: lib/setup.c:4899 +#: lib/setup.c:4910 msgid "Device header overlaps with data area." msgstr "Hlavička zariadenia zasahuje do oblasti údajov." -#: lib/setup.c:5120 +#: lib/setup.c:5131 msgid "Reencryption in-progress. Cannot activate device." msgstr "Prebieha prešifrovanie. Nie je možné aktivovať zariadenie." -#: lib/setup.c:5122 lib/luks2/luks2_json_metadata.c:2888 -#: lib/luks2/luks2_reencrypt.c:3722 +#: lib/setup.c:5133 lib/luks2/luks2_json_metadata.c:2888 +#: lib/luks2/luks2_reencrypt.c:3725 msgid "Failed to get reencryption lock." msgstr "Zlyhalo získanie zámku pre prešifrovanie." -#: lib/setup.c:5144 +#: lib/setup.c:5155 msgid "LUKS2 reencryption recovery using volume key(s) failed." msgstr "Obnova prešifrovaním LUKS2 s použitím kľúču(ov) zväzku zlyhala." -#: lib/setup.c:5280 +#: lib/setup.c:5291 #, c-format msgid "Device %s already exists." msgstr "Zariadenie %s už existuje." -#: lib/setup.c:5287 +#: lib/setup.c:5298 #, c-format msgid "Cannot use device %s, name is invalid or still in use." msgstr "Nie je možné použiť zariadenie %s, názov je neplatný alebo sa stále používa." -#: lib/setup.c:5299 +#: lib/setup.c:5310 msgid "Reencryption volume keys do not match the volume." msgstr "Kľúče zväzku na prešifrovanie sa líšia od zväzku." -#: lib/setup.c:5316 +#: lib/setup.c:5327 msgid "Incorrect volume key specified for plain device." msgstr "Zadaný nesprávny kľúč zväzku pre plain zariadenie." -#: lib/setup.c:5342 lib/setup.c:5403 +#: lib/setup.c:5353 lib/setup.c:5414 msgid "Device type is not properly initialized." msgstr "Typ zariadenia nie je riadne inicializovaný." -#: lib/setup.c:5441 +#: lib/setup.c:5452 msgid "Kernel keyring is not supported by the kernel." msgstr "Zväzok kľúčov jadra nie je jadrom podporovaný." -#: lib/setup.c:5445 +#: lib/setup.c:5456 msgid "Kernel keyring missing: required for passing signature to kernel." msgstr "Zväzok kľúčov jadra chýba: vyžadované pre odovzdanie podpisu jadru." -#: lib/setup.c:5500 +#: lib/setup.c:5511 #, c-format msgid "Cannot use keyring key %s." msgstr "Nedá sa použiť kľúč %s zo zväzku kľúčov." -#: lib/setup.c:5713 +#: lib/setup.c:5724 msgid "Incorrect root hash specified for verity device." msgstr "Nesprávny koreňový hash zadaný pre verity zariadenie." -#: lib/setup.c:5754 lib/setup.c:5779 +#: lib/setup.c:5765 lib/setup.c:5790 msgid "OPAL does not support deferred deactivation." msgstr "OPAL nepodporuje odloženú deaktiváciu." -#: lib/setup.c:5769 lib/setup.c:5800 lib/luks2/luks2_json_metadata.c:2953 +#: lib/setup.c:5780 lib/setup.c:5811 lib/luks2/luks2_json_metadata.c:2953 #: src/utils_reencrypt.c:89 #, c-format msgid "Device %s is still in use." msgstr "Zariadenie %s sa stále používa." -#: lib/setup.c:5787 +#: lib/setup.c:5798 #, c-format msgid "Could not cancel deferred remove from device %s." msgstr "Nedá sa zrušiť odložené odstránenie zo zariadenia %s." -#: lib/setup.c:5809 +#: lib/setup.c:5820 #, c-format msgid "Invalid device %s." msgstr "Neplatné zariadenie %s." -#: lib/setup.c:5956 +#: lib/setup.c:5967 msgid "Volume key buffer too small." msgstr "Vyhradená pamäť pre kľúč zväzku je príliš malá." -#: lib/setup.c:5967 +#: lib/setup.c:5978 msgid "Cannot retrieve volume key for LUKS2 device." msgstr "Nedá sa získať kľúč zväzku pre LUKS2 zariadenie." -#: lib/setup.c:5976 +#: lib/setup.c:5987 msgid "Cannot retrieve volume key for LUKS1 device." msgstr "Nedá sa získať kľúč zväzku pre LUKS1 zariadenie." -#: lib/setup.c:5990 +#: lib/setup.c:6001 msgid "Cannot retrieve volume key for plain device." msgstr "Nedá sa získať kľúč zväzku pre plain zariadenie." -#: lib/setup.c:5998 +#: lib/setup.c:6009 msgid "Cannot retrieve root hash for verity device." msgstr "Nedá sa získať koreňový hash pre verity zariadenie." -#: lib/setup.c:6007 +#: lib/setup.c:6018 msgid "Cannot retrieve volume key for BITLK device." msgstr "Nedá sa získať kľúč zväzku pre BITLK zariadenie." -#: lib/setup.c:6012 +#: lib/setup.c:6023 msgid "Cannot retrieve volume key for FVAULT2 device." msgstr "Nedá sa získať kľúč zväzku pre FVAULT2 zariadenie." -#: lib/setup.c:6014 +#: lib/setup.c:6025 #, c-format msgid "This operation is not supported for %s crypt device." msgstr "Táto operácia nie je podporovaná pre %s šifrované zariadenie." -#: lib/setup.c:6199 lib/setup.c:6210 +#: lib/setup.c:6210 lib/setup.c:6221 msgid "Dump operation is not supported for this device type." msgstr "Operácia výpisu nie je podporovaná pre tento typ zariadenia." -#: lib/setup.c:6590 +#: lib/setup.c:6601 #, c-format msgid "Data offset is not multiple of %u bytes." msgstr "Odsadenie údajov nie je násobkom %u bajtov." -#: lib/setup.c:6898 +#: lib/setup.c:6909 #, c-format msgid "Cannot convert device %s which is still in use." msgstr "Nedá sa konvertovať zariadenie %s, ktoré sa stále používa." -#: lib/setup.c:7206 lib/setup.c:7350 +#: lib/setup.c:7217 lib/setup.c:7361 #, c-format msgid "Failed to assign keyslot %u as the new volume key." msgstr "Za nový kľúč zväzku sa nepodarilo priradiť miesto s kľúčom %u." -#: lib/setup.c:7230 +#: lib/setup.c:7241 msgid "Failed to initialize default LUKS2 keyslot parameters." msgstr "Zlyhala inicializácia predvolených parametrov LUKS2 miesta na kľúč." -#: lib/setup.c:7236 +#: lib/setup.c:7247 #, c-format msgid "Failed to assign keyslot %d to digest." msgstr "Zlyhalo priradenie miesta pre kľúč %d k otlačku (digest)." -#: lib/setup.c:7467 +#: lib/setup.c:7478 msgid "Cannot add key slot, all slots disabled and no volume key provided." msgstr "Nedá sa pridať miesto pre kľúč, všetky miesta sú vypnuté a nie je poskytnutý žiaden kľúč zväzku." -#: lib/setup.c:7540 lib/verity/verity.c:333 +#: lib/setup.c:7551 lib/verity/verity.c:333 msgid "Failed to load key in kernel keyring." msgstr "Zlyhalo načítanie kľúča zo zväzku kľúčov jadra." -#: lib/setup.c:7731 +#: lib/setup.c:7742 #, c-format msgid "Could not find keyring described by \"%s\"." msgstr "Nedá sa nájsť zväzok kľúčov opísaný podľa \"%s\"." -#: lib/setup.c:7796 +#: lib/setup.c:7807 msgid "Failed to acquire global memory-hard access serialization lock." msgstr "Zlyhalo získanie zámku pre tvrdý prístup ku globálnej pamäti." @@ -812,40 +812,45 @@ msgstr "Zariadenie %s nie je kompatibilné." msgid "Ignoring bogus optimal-io size for data device (%u bytes)." msgstr "Ignoruje sa chybná optimálna I/O veľkosť pre zariadenie s údajmi (%u bajtov)." -#: lib/utils_device.c:707 +#: lib/utils_device.c:711 +#, c-format +msgid "Cannot grow %s to % bytes (%s)." +msgstr "Nedá sa zväčšiť %s na % bajtov (%s)." + +#: lib/utils_device.c:717 #, c-format msgid "Device %s is too small. Need at least % bytes." msgstr "Zariadenie %s je príliš malé. Potrebuje aspoň % bajtov." -#: lib/utils_device.c:788 +#: lib/utils_device.c:798 #, c-format msgid "Cannot use device %s which is in use (already mapped or mounted)." msgstr "Nedá sa použiť zariadenie %s, ktoré sa používa (už je namapované alebo pripojené)." -#: lib/utils_device.c:792 +#: lib/utils_device.c:802 #, c-format msgid "Cannot use device %s, permission denied." msgstr "Nedá sa použiť zariadenie %s, prístup odmietnutý." -#: lib/utils_device.c:795 +#: lib/utils_device.c:805 #, c-format msgid "Cannot get info about device %s." msgstr "Nedajú sa získať informácie o zariadení %s." -#: lib/utils_device.c:818 +#: lib/utils_device.c:828 msgid "Cannot use a loopback device, running as non-root user." msgstr "Nedá sa použiť zariadenie spätnej slučky, nebežím ako administrátor." -#: lib/utils_device.c:829 +#: lib/utils_device.c:839 msgid "Attaching loopback device failed (loop device with autoclear flag is required)." msgstr "Pripájanie zariadenia spätnej slučky zlyhalo (je požadované zariadenie slučky s príznakom autoclear)." -#: lib/utils_device.c:877 +#: lib/utils_device.c:887 #, c-format msgid "Requested offset is beyond real size of device %s." msgstr "Požadovaná pozícia je za hranicami reálnej veľkosti zariadenia %s." -#: lib/utils_device.c:885 +#: lib/utils_device.c:895 #, c-format msgid "Device %s has zero size." msgstr "Zariadenie %s má nulovú veľkosť." @@ -988,9 +993,9 @@ msgstr "Chyba vstupu/výstupu počas šifrovania miesta pre kľúč." #: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:356 #: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:668 -#: lib/fvault2/fvault2.c:870 lib/verity/verity.c:67 lib/verity/verity.c:183 +#: lib/fvault2/fvault2.c:872 lib/verity/verity.c:67 lib/verity/verity.c:183 #: lib/verity/verity_hash.c:312 lib/verity/verity_hash.c:321 -#: lib/verity/verity_hash.c:341 lib/verity/verity_fec.c:247 +#: lib/verity/verity_hash.c:350 lib/verity/verity_fec.c:247 #: lib/verity/verity_fec.c:259 lib/verity/verity_fec.c:264 #: lib/luks2/luks2_json_metadata.c:1521 src/utils_reencrypt_luks1.c:108 #: src/utils_reencrypt_luks1.c:120 @@ -1135,7 +1140,7 @@ msgstr "LUKS šifrovací režim %s je neplatný." msgid "LUKS hash %s is invalid." msgstr "LUKS hash %s je neplatný." -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1369 +#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 msgid "No known problems detected for LUKS header." msgstr "Žiadne známe problémy neboli zistené pre hlavičku LUKS." @@ -1228,11 +1233,11 @@ msgstr "Maximálna dĺžka TCRYPT hesla (%zu) bola prekročená." msgid "PBKDF2 hash algorithm %s not available, skipping." msgstr "PBKDF2 hash algoritmus %s nie je dostupný, vynecháva sa." -#: lib/tcrypt/tcrypt.c:608 src/cryptsetup.c:1242 +#: lib/tcrypt/tcrypt.c:608 src/cryptsetup.c:1240 msgid "Required kernel crypto interface not available." msgstr "Vyžadované kryptografické rozhranie jadra nie je dostupné." -#: lib/tcrypt/tcrypt.c:610 src/cryptsetup.c:1244 +#: lib/tcrypt/tcrypt.c:610 src/cryptsetup.c:1242 msgid "Ensure you have algif_skcipher kernel module loaded." msgstr "Uistite sa, že máte načítaný modul jadra algif_skcipher." @@ -1303,11 +1308,6 @@ msgstr "Nepodporovaná veľkosť sektora %." msgid "Failed to read BITLK header from %s." msgstr "Zlyhalo čítanie hlavičky BITLK z %s." -#: lib/bitlk/bitlk.c:593 -#, c-format -msgid "Failed to read or validate BITLK FVE metadata copy #%d from %s." -msgstr "Zlyhalo čítanie alebo overenie kópie metadát BITLK FVE #%d z %s." - #: lib/bitlk/bitlk.c:603 #, c-format msgid "Failed to read and validate BITLK FVE metadata from %s." @@ -1383,42 +1383,42 @@ msgstr "Táto operácia nie je podporovaná." msgid "Unexpected key data size." msgstr "Neočakávaná veľkosť údajov o kľúči." -#: lib/bitlk/bitlk.c:1431 +#: lib/bitlk/bitlk.c:1442 msgid "This BITLK device is in an unsupported state and cannot be activated." msgstr "Toto zariadenie BITLK je v nepodporovanom stave a nemôže byť aktivované." -#: lib/bitlk/bitlk.c:1436 +#: lib/bitlk/bitlk.c:1447 #, c-format msgid "BITLK devices with type '%s' cannot be activated." msgstr "Zariadenie BITLK s typom \"%s\" nemôže byť aktivované." -#: lib/bitlk/bitlk.c:1475 +#: lib/bitlk/bitlk.c:1486 #, c-format msgid "WARNING: BitLocker volume size % does not match the underlying device size %" msgstr "VAROVANIE: Veľkosť zväzku BitLocker % sa nezhoduje s veľkosťou prislúchajúceho zariadenia %" -#: lib/bitlk/bitlk.c:1602 +#: lib/bitlk/bitlk.c:1613 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK IV." msgstr "Nedá sa aktivovať zariadenie, jadru dm-crypt chýba podpora pre BITLK IV." -#: lib/bitlk/bitlk.c:1606 +#: lib/bitlk/bitlk.c:1617 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK Elephant diffuser." msgstr "Nedá sa aktivovať zariadenie, jadru dm-crypt chýba podpora pre difuzér BITLK Elephant." -#: lib/bitlk/bitlk.c:1610 +#: lib/bitlk/bitlk.c:1621 msgid "Cannot activate device, kernel dm-crypt is missing support for large sector size." msgstr "Nedá sa aktivovať zariadenie, jadru dm-crypt chýba podpora pre veľké veľkosti sektorov." -#: lib/bitlk/bitlk.c:1614 +#: lib/bitlk/bitlk.c:1625 msgid "Cannot activate device, kernel dm-zero module is missing." msgstr "Nedá sa aktivovať zariadenie, modul jadra dm-zero chýba." -#: lib/fvault2/fvault2.c:530 +#: lib/fvault2/fvault2.c:532 #, c-format msgid "Could not read %u bytes of volume header." msgstr "Nedá sa prečítať %u bajtov z hlavičky zväzku." -#: lib/fvault2/fvault2.c:542 +#: lib/fvault2/fvault2.c:544 #, c-format msgid "Unsupported FVAULT2 version %." msgstr "Nepodporovaná FVAULT2 verzia %." @@ -1495,23 +1495,23 @@ msgstr "Overovanie zlyhalo na pozícií %." msgid "Hash area overflow." msgstr "Pretečenie hash oblasti." -#: lib/verity/verity_hash.c:372 +#: lib/verity/verity_hash.c:381 msgid "Verification of data area failed." msgstr "Overovanie oblasti údajov zlyhalo." -#: lib/verity/verity_hash.c:377 +#: lib/verity/verity_hash.c:386 msgid "Verification of root hash failed." msgstr "Overovanie koreňového hashu zlyhalo." -#: lib/verity/verity_hash.c:383 +#: lib/verity/verity_hash.c:392 msgid "Input/output error while creating hash area." msgstr "Chyba na vstupe/výstupe počas vytvárania hash oblasti." -#: lib/verity/verity_hash.c:385 +#: lib/verity/verity_hash.c:394 msgid "Creation of hash area failed." msgstr "Vytvorenie hash oblasti zlyhalo." -#: lib/verity/verity_hash.c:420 +#: lib/verity/verity_hash.c:429 #, c-format msgid "WARNING: Kernel cannot activate device if data block size exceeds page size (%u)." msgstr "VAROVANIE: Jadro nemôže aktivovať zariadenie, keď veľkosť bloku údajov prekračuje veľkosť stránky (%u)." @@ -1566,19 +1566,19 @@ msgstr "Zlyhalo určenie veľkosti zariadenia %s." msgid "Incompatible kernel dm-integrity metadata (version %u) detected on %s." msgstr "Nekompatibilné metadáta (verzia %u) jadra dm-integrity zachytené na %s." -#: lib/integrity/integrity.c:304 lib/integrity/integrity.c:488 +#: lib/integrity/integrity.c:308 lib/integrity/integrity.c:492 msgid "Kernel does not support dm-integrity mapping." msgstr "Jadro nepodporuje mapovanie dm-integrity." -#: lib/integrity/integrity.c:310 +#: lib/integrity/integrity.c:314 msgid "Kernel does not support dm-integrity fixed metadata alignment." msgstr "Jadro nepodporuje pevné zarovnanie metadát dm-integrity." -#: lib/integrity/integrity.c:319 +#: lib/integrity/integrity.c:323 msgid "Kernel refuses to activate insecure recalculate option (see legacy activation options to override)." msgstr "Jadro odmieta aktivovať nezabezpečenú možnosť prepočtu (na prepnutie pozri zastaralé možnosti aktivácie)." -#: lib/integrity/integrity.c:325 +#: lib/integrity/integrity.c:329 msgid "Kernel does not support dm-integrity inline mode." msgstr "Jadro nepodporuje dm-integrity režim inline." @@ -1727,7 +1727,7 @@ msgstr "Prislúchajúce zariadenie dm-integrity neočakávane poskytlo sektory s msgid "Reencryption in-progress. Cannot deactivate device." msgstr "Prebieha opätovné šifrovanie. Nedá sa deaktivovať zariadenie." -#: lib/luks2/luks2_json_metadata.c:2897 lib/luks2/luks2_reencrypt.c:4283 +#: lib/luks2/luks2_json_metadata.c:2897 lib/luks2/luks2_reencrypt.c:4286 #, c-format msgid "Failed to replace suspended device %s with dm-error target." msgstr "Zlyhala výmena pozastaveného zariadenia %s za cieľ dm-error." @@ -1806,7 +1806,7 @@ msgstr "Nedá sa skontrolovať stav zariadenia s uuid: %s." msgid "Unable to convert header with LUKSMETA additional metadata." msgstr "Nedá sa zmeniť hlavička s dodatočnými metadátami LUKSMETA." -#: lib/luks2/luks2_luks1_convert.c:590 lib/luks2/luks2_reencrypt.c:3890 +#: lib/luks2/luks2_luks1_convert.c:590 lib/luks2/luks2_reencrypt.c:3893 #, c-format msgid "Unable to use cipher specification %s-%s for LUKS2." msgstr "Nedá sa použiť špecifikácia šifry %s-%s pre LUKS2." @@ -1890,7 +1890,7 @@ msgstr "Veľkosť zariadenia musí byť násobkom vypočítaného zarovnania zó #: lib/luks2/luks2_reencrypt.c:1410 lib/luks2/luks2_reencrypt.c:1596 #: lib/luks2/luks2_reencrypt.c:1679 lib/luks2/luks2_reencrypt.c:1721 -#: lib/luks2/luks2_reencrypt.c:4077 +#: lib/luks2/luks2_reencrypt.c:4080 msgid "Failed to initialize old segment storage wrapper." msgstr "Zlyhala inicializácia obalu úložiska pre staré segmenty." @@ -1898,7 +1898,7 @@ msgstr "Zlyhala inicializácia obalu úložiska pre staré segmenty." msgid "Failed to initialize new segment storage wrapper." msgstr "Zlyhala inicializácia obalu úložiska pre nové segmenty." -#: lib/luks2/luks2_reencrypt.c:1550 lib/luks2/luks2_reencrypt.c:4089 +#: lib/luks2/luks2_reencrypt.c:1550 lib/luks2/luks2_reencrypt.c:4092 msgid "Failed to initialize hotzone protection." msgstr "Zlyhala inicializácia ochrany horúcej zóny." @@ -1906,7 +1906,7 @@ msgstr "Zlyhala inicializácia ochrany horúcej zóny." msgid "Failed to read checksums for current hotzone." msgstr "Zlyhalo čítanie kontrolných súčtov pre aktuálnu horúcu zónu." -#: lib/luks2/luks2_reencrypt.c:1630 lib/luks2/luks2_reencrypt.c:4104 +#: lib/luks2/luks2_reencrypt.c:1630 lib/luks2/luks2_reencrypt.c:4107 #, c-format msgid "Failed to read hotzone area starting at %." msgstr "Zlyhalo čítanie oblasti horúcej zóny začínajúcej na %." @@ -1995,8 +1995,8 @@ msgstr "Zmenšená veľkosť údajov je väčšia ako skutočná veľkosť zaria msgid "Data device is not aligned to encryption sector size (% bytes)." msgstr "Zariadenie s údajmi nie je zarovnané k veľkosti šifrovaného sektoru (% bajtov)." -#: lib/luks2/luks2_reencrypt.c:3125 lib/luks2/luks2_reencrypt.c:3640 -#: lib/luks2/luks2_reencrypt.c:3661 +#: lib/luks2/luks2_reencrypt.c:3125 lib/luks2/luks2_reencrypt.c:3643 +#: lib/luks2/luks2_reencrypt.c:3664 #, c-format msgid "Failed to open %s in exclusive mode (already mapped or mounted)." msgstr "Zlyhalo otvorenie %s vo výlučnom režime (už mapované alebo pripojené)." @@ -2005,123 +2005,123 @@ msgstr "Zlyhalo otvorenie %s vo výlučnom režime (už mapované alebo pripojen msgid "Device not marked for LUKS2 reencryption." msgstr "Zariadenie nie je označené pre LUKS2 prešifrovanie." -#: lib/luks2/luks2_reencrypt.c:3349 lib/luks2/luks2_reencrypt.c:4400 +#: lib/luks2/luks2_reencrypt.c:3349 lib/luks2/luks2_reencrypt.c:4403 msgid "Failed to load LUKS2 reencryption context." msgstr "Zlyhalo načítanie kontextu LUKS2 prešifrovania." -#: lib/luks2/luks2_reencrypt.c:3441 lib/luks2/luks2_reencrypt.c:3781 +#: lib/luks2/luks2_reencrypt.c:3444 lib/luks2/luks2_reencrypt.c:3784 msgid "Device is not in reencryption." msgstr "Zariadenie nie je opätovne šifrované." -#: lib/luks2/luks2_reencrypt.c:3448 lib/luks2/luks2_reencrypt.c:3788 +#: lib/luks2/luks2_reencrypt.c:3451 lib/luks2/luks2_reencrypt.c:3791 msgid "Reencryption process is already running." msgstr "Proces prešifrovania už beží." -#: lib/luks2/luks2_reencrypt.c:3450 lib/luks2/luks2_reencrypt.c:3790 +#: lib/luks2/luks2_reencrypt.c:3453 lib/luks2/luks2_reencrypt.c:3793 msgid "Failed to acquire reencryption lock." msgstr "Zlyhalo získanie zámku prešifrovania." -#: lib/luks2/luks2_reencrypt.c:3468 +#: lib/luks2/luks2_reencrypt.c:3471 msgid "Cannot proceed with reencryption. Run reencryption recovery first." msgstr "Nedá sa pokračovať v prešifrovaní. Spustite najprv obnovu prešifrovania." -#: lib/luks2/luks2_reencrypt.c:3604 +#: lib/luks2/luks2_reencrypt.c:3607 msgid "Active device size and requested reencryption size don't match." msgstr "Veľkosť aktívneho zariadenia a požadovaná veľkosť prešifrovania sa nezhoduje." -#: lib/luks2/luks2_reencrypt.c:3618 +#: lib/luks2/luks2_reencrypt.c:3621 msgid "Illegal device size requested in reencryption parameters." msgstr "V parametroch prešifrovania je požadovaná nedovolená veľkosť zariadenia." -#: lib/luks2/luks2_reencrypt.c:3720 +#: lib/luks2/luks2_reencrypt.c:3723 msgid "Reencryption in-progress. Cannot perform recovery." msgstr "Prebieha prešifrovanie. Nedá sa vykonať obnova." -#: lib/luks2/luks2_reencrypt.c:3741 +#: lib/luks2/luks2_reencrypt.c:3744 msgid "LUKS2 reencryption recovery failed." msgstr "Obnova prešifrovaním LUKS2 zlyhala." -#: lib/luks2/luks2_reencrypt.c:3874 lib/luks2/luks2_reencrypt.c:4353 +#: lib/luks2/luks2_reencrypt.c:3877 lib/luks2/luks2_reencrypt.c:4356 msgid "Failed to initialize reencryption device stack." msgstr "Zlyhala inicializácia zásobníka zariadenia k prešifrovaniu." -#: lib/luks2/luks2_reencrypt.c:3907 +#: lib/luks2/luks2_reencrypt.c:3910 msgid "LUKS2 reencryption already initialized in metadata." msgstr "LUKS2 prešifrovanie je už inicializované v metadátach." -#: lib/luks2/luks2_reencrypt.c:3915 +#: lib/luks2/luks2_reencrypt.c:3918 msgid "Failed to initialize LUKS2 reencryption in metadata." msgstr "Zlyhala inicializácia LUKS2 prešifrovania v metadátach." -#: lib/luks2/luks2_reencrypt.c:3968 lib/luks2/luks2_reencrypt.c:4000 -#: lib/luks2/luks2_reencrypt.c:4030 +#: lib/luks2/luks2_reencrypt.c:3971 lib/luks2/luks2_reencrypt.c:4003 +#: lib/luks2/luks2_reencrypt.c:4033 msgid "Reencryption is not supported for DAX (persistent memory) devices." msgstr "Prešifrovanie nie je podporované na DAX (trvalá pamäť) zariadeniach." -#: lib/luks2/luks2_reencrypt.c:4059 +#: lib/luks2/luks2_reencrypt.c:4062 msgid "Failed to set device segments for next reencryption hotzone." msgstr "Zlyhalo nastavenie segmentov zariadenia pre ďalšiu horúcu zónu prešifrovania." -#: lib/luks2/luks2_reencrypt.c:4112 +#: lib/luks2/luks2_reencrypt.c:4115 msgid "Failed to write reencryption resilience metadata." msgstr "Zlyhal zápis odolných metadát prešifrovania." -#: lib/luks2/luks2_reencrypt.c:4119 +#: lib/luks2/luks2_reencrypt.c:4122 msgid "Decryption failed." msgstr "Dešifrovanie zlyhalo." -#: lib/luks2/luks2_reencrypt.c:4124 +#: lib/luks2/luks2_reencrypt.c:4127 #, c-format msgid "Failed to write hotzone area starting at %." msgstr "Zlyhal zápis oblasti s horúcou zónou začínajúci na %." -#: lib/luks2/luks2_reencrypt.c:4129 +#: lib/luks2/luks2_reencrypt.c:4132 msgid "Failed to sync data." msgstr "Zlyhala synchronizácia údajov." -#: lib/luks2/luks2_reencrypt.c:4137 +#: lib/luks2/luks2_reencrypt.c:4140 msgid "Failed to update metadata after current reencryption hotzone completed." msgstr "Zlyhalo aktualizovanie metadát po dokončení aktuálnej horúcej zóny prešifrovania." -#: lib/luks2/luks2_reencrypt.c:4226 +#: lib/luks2/luks2_reencrypt.c:4229 msgid "Failed to write LUKS2 metadata." msgstr "Zlyhal zápis LUKS2 metadát." -#: lib/luks2/luks2_reencrypt.c:4249 +#: lib/luks2/luks2_reencrypt.c:4252 msgid "Failed to wipe unused data device area." msgstr "Zlyhalo vymazanie oblasti zariadenia s nepoužívanými údajmi." -#: lib/luks2/luks2_reencrypt.c:4255 +#: lib/luks2/luks2_reencrypt.c:4258 #, c-format msgid "Failed to remove unused (unbound) keyslot %d." msgstr "Zlyhalo odstránenie nepoužívaného (neviazaného) miesta pre kľúč %d." -#: lib/luks2/luks2_reencrypt.c:4265 +#: lib/luks2/luks2_reencrypt.c:4268 msgid "Failed to remove reencryption keyslot." msgstr "Zlyhalo odstránenie miesta pre kľúč prešifrovania." -#: lib/luks2/luks2_reencrypt.c:4275 +#: lib/luks2/luks2_reencrypt.c:4278 #, c-format msgid "Fatal error while reencrypting chunk starting at %, % sectors long." msgstr "Fatálna chyba počas prešifrovania časti začínajúcej na %, dlhej % sektorov." -#: lib/luks2/luks2_reencrypt.c:4279 +#: lib/luks2/luks2_reencrypt.c:4282 msgid "Online reencryption failed." msgstr "Zlyhalo prešifrovanie za behu." -#: lib/luks2/luks2_reencrypt.c:4284 +#: lib/luks2/luks2_reencrypt.c:4287 msgid "Do not resume the device unless replaced with error target manually." msgstr "Zariadenie neprebuďte pokiaľ ho manuálne nenahradíte s chybovým cieľom." -#: lib/luks2/luks2_reencrypt.c:4336 +#: lib/luks2/luks2_reencrypt.c:4339 msgid "Cannot proceed with reencryption. Unexpected reencryption status." msgstr "Nedá sa pokračovať v prešifrovaní. Neočakávaný stav prešifrovania." -#: lib/luks2/luks2_reencrypt.c:4342 +#: lib/luks2/luks2_reencrypt.c:4345 msgid "Missing or invalid reencrypt context." msgstr "Chýbajúci alebo neplatný kontext prešifrovania." -#: lib/luks2/luks2_reencrypt.c:4376 lib/luks2/luks2_reencrypt.c:4413 +#: lib/luks2/luks2_reencrypt.c:4379 lib/luks2/luks2_reencrypt.c:4416 msgid "Failed to update reencryption context." msgstr "Zlyhala aktualizácia kontextu prešifrovania." @@ -2157,7 +2157,7 @@ msgstr "Parametre šifrovania miesta pre kľúč môžu byť nastavené len pre msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encryption." msgstr "Parametre šifrovania miesta pre kľúč nie sú kompatibilné so šifrovaním miesta pre kľúč LUKS2." -#: src/cryptsetup.c:150 src/cryptsetup.c:1180 src/cryptsetup.c:1547 +#: src/cryptsetup.c:150 src/cryptsetup.c:1178 src/cryptsetup.c:1545 #: src/utils_reencrypt.c:1887 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." @@ -2185,7 +2185,7 @@ msgstr "VAROVANIE: Parameter --hash je ignorovaný v režime plain so zadaným s msgid "WARNING: The --keyfile-size option is being ignored, the read size is the same as the encryption key size.\n" msgstr "VAROVANIE: Možnosť --keyfile-size je ignorovaná, veľkosť čítania je rovnaká ako veľkosť kľúča šifrovania.\n" -#: src/cryptsetup.c:226 src/cryptsetup.c:1377 src/cryptsetup.c:1600 +#: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 #: src/integritysetup.c:188 src/utils_reencrypt.c:2138 #, c-format msgid "Blkid scan failed for %s." @@ -2196,9 +2196,9 @@ msgstr "Skenovanie blkid zlyhalo pre %s." msgid "Detected device signature(s) on %s. Proceeding further may damage existing data." msgstr "Zaznamenané podpis(y) zariadenia na %s. Pokračovanie ďalej môže poškodiť existujúce údaje." -#: src/cryptsetup.c:238 src/cryptsetup.c:1263 src/cryptsetup.c:1311 -#: src/cryptsetup.c:1384 src/cryptsetup.c:1524 src/cryptsetup.c:1612 -#: src/cryptsetup.c:2497 src/cryptsetup.c:2926 src/integritysetup.c:178 +#: src/cryptsetup.c:238 src/cryptsetup.c:1261 src/cryptsetup.c:1309 +#: src/cryptsetup.c:1382 src/cryptsetup.c:1522 src/cryptsetup.c:1610 +#: src/cryptsetup.c:2495 src/cryptsetup.c:2924 src/integritysetup.c:178 #: src/utils_reencrypt.c:111 src/utils_reencrypt.c:457 #: src/utils_reencrypt.c:925 msgid "Operation aborted.\n" @@ -2247,7 +2247,7 @@ msgstr "" "ktorý povoľuje prístup k zašifrovaným oddielom bez hesla.\n" "Tento výpis by mal byť vždy uložený zašifrovaný na bezpečnom mieste." -#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2522 +#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2520 msgid "" "The header dump with volume key is sensitive information\n" "that allows access to encrypted partition without a passphrase.\n" @@ -2266,14 +2266,14 @@ msgstr "Zariadenie %s nie je platné FVAULT2 zariadenie." msgid "Cannot determine volume key size for FVAULT2, please use --key-size option." msgstr "Nedá sa určiť veľkosť kľúča zväzku pre FVAULT2, prosím použite možnosť --key-size." -#: src/cryptsetup.c:848 src/veritysetup.c:317 src/integritysetup.c:410 +#: src/cryptsetup.c:848 src/veritysetup.c:317 src/integritysetup.c:416 #, c-format msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "Zariadenie %s je stále aktívne a naplánované pre odložené odstránenie.\n" -#: src/cryptsetup.c:881 src/cryptsetup.c:1810 src/cryptsetup.c:2084 -#: src/cryptsetup.c:2231 src/cryptsetup.c:2650 src/cryptsetup.c:2731 -#: src/cryptsetup.c:3264 +#: src/cryptsetup.c:881 src/cryptsetup.c:1808 src/cryptsetup.c:2082 +#: src/cryptsetup.c:2229 src/cryptsetup.c:2648 src/cryptsetup.c:2729 +#: src/cryptsetup.c:3262 #, c-format msgid "Failed to set external tokens path %s." msgstr "Zlyhalo nastavenie cesty k externým tokenom %s." @@ -2282,59 +2282,59 @@ msgstr "Zlyhalo nastavenie cesty k externým tokenom %s." msgid "Resize of active device requires volume key in keyring but --disable-keyring option is set." msgstr "Zmena veľkosti aktívneho zariadenia vyžaduje kľúč zväzku vo zväzku kľúčov, ale možnosť --disable-keyring je nastavená." -#: src/cryptsetup.c:1059 +#: src/cryptsetup.c:1057 msgid "Benchmark interrupted." msgstr "Hodnotenie výkonu prerušené." -#: src/cryptsetup.c:1080 +#: src/cryptsetup.c:1078 #, c-format msgid "PBKDF2-%-9s N/A\n" msgstr "PBKDF2-%-9s –\n" -#: src/cryptsetup.c:1082 +#: src/cryptsetup.c:1080 #, c-format msgid "PBKDF2-%-9s %7u iterations per second for %zu-bit key\n" msgstr "PBKDF2-%-9s %7u iterácií za sekundu pre %zu-bitový kľúč\n" -#: src/cryptsetup.c:1096 +#: src/cryptsetup.c:1094 #, c-format msgid "%-10s N/A\n" msgstr "%-10s –\n" -#: src/cryptsetup.c:1098 +#: src/cryptsetup.c:1096 #, c-format msgid "%-10s %4u iterations, %5u memory, %1u parallel threads (CPUs) for %zu-bit key (requested %u ms time)\n" msgstr "%-10s %4u iterácií, %5u pamäte, %1u paralelných vlákien (CPU) pre %zu-bitový kľúč (vyžadovaný čas %u ms)\n" -#: src/cryptsetup.c:1122 +#: src/cryptsetup.c:1120 msgid "Result of benchmark is not reliable." msgstr "Výsledok hodnotenia výkonu nie je spoľahlivý." -#: src/cryptsetup.c:1172 +#: src/cryptsetup.c:1170 msgid "# Tests are approximate using memory only (no storage IO).\n" msgstr "# Testy sú len približné a používajú iba pamäť (žiadne vstupno-výstupné úložisko).\n" #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1197 +#: src/cryptsetup.c:1195 #, c-format msgid "#%*s Algorithm | Key | Encryption | Decryption\n" msgstr "#%*s Algoritmus| Kľúč | Šifrovanie | Dešifrovanie\n" -#: src/cryptsetup.c:1205 +#: src/cryptsetup.c:1203 #, c-format msgid "Cipher %s (with %i bits key) is not available." msgstr "Šifra %s (s %i bitovým kľúčom) nie je dostupná." #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1224 +#: src/cryptsetup.c:1222 msgid "# Algorithm | Key | Encryption | Decryption\n" msgstr "# Algoritmus| Kľúč | Šifrovanie | Dešifrovanie\n" -#: src/cryptsetup.c:1235 +#: src/cryptsetup.c:1233 msgid "N/A" msgstr "–" -#: src/cryptsetup.c:1260 +#: src/cryptsetup.c:1258 msgid "" "Unprotected LUKS2 reencryption metadata detected. Please verify the reencryption operation is desirable (see luksDump output)\n" "and continue (upgrade metadata) only if you acknowledge the operation as genuine." @@ -2342,27 +2342,27 @@ msgstr "" "Zaznamenané nechránené metadáta LUKS2 prešifrovania. Prosím overte, či je operácia prešifrovania žiadúca (pozri výstup luksDump)\n" "a pokračujte (aktualizujte metadáta) iba keď operáciu uznáte za žiadúcu." -#: src/cryptsetup.c:1266 +#: src/cryptsetup.c:1264 msgid "Enter passphrase to protect and upgrade reencryption metadata: " msgstr "Zadajte heslo na ochránenie a aktualizáciu metadát prešifrovania: " -#: src/cryptsetup.c:1310 +#: src/cryptsetup.c:1308 msgid "Really proceed with LUKS2 reencryption recovery?" msgstr "Naozaj pokračovať s obnovou LUKS2 prešifrovania?" -#: src/cryptsetup.c:1319 +#: src/cryptsetup.c:1317 msgid "Enter passphrase to verify reencryption metadata digest: " msgstr "Zadajte heslo na overenie otlačku (digest) metadát prešifrovania: " -#: src/cryptsetup.c:1321 +#: src/cryptsetup.c:1319 msgid "Enter passphrase for reencryption recovery: " msgstr "Zadajte heslo pre obnovu prešifrovania: " -#: src/cryptsetup.c:1383 +#: src/cryptsetup.c:1381 msgid "Really try to repair LUKS device header?" msgstr "Naozaj sa pokúsiť opraviť hlavičku LUKS zariadenia?" -#: src/cryptsetup.c:1411 src/integritysetup.c:76 src/integritysetup.c:244 +#: src/cryptsetup.c:1409 src/integritysetup.c:76 src/integritysetup.c:244 msgid "" "\n" "Wipe interrupted." @@ -2370,7 +2370,7 @@ msgstr "" "\n" "Mazanie prerušené." -#: src/cryptsetup.c:1416 src/integritysetup.c:81 src/integritysetup.c:283 +#: src/cryptsetup.c:1414 src/integritysetup.c:81 src/integritysetup.c:289 msgid "" "Wiping device to initialize integrity checksum.\n" "You can interrupt this by pressing CTRL+c (rest of not wiped device will contain invalid checksum).\n" @@ -2378,167 +2378,167 @@ msgstr "" "Mazanie zariadenia na inicializáciu kontrolného súčtu integrity.\n" "Môžete to prerušiť stlačením CTRL+c (zvyšok nevymazaného zariadenia bude obsahovať neplatný kontrolný súčet).\n" -#: src/cryptsetup.c:1438 src/integritysetup.c:103 +#: src/cryptsetup.c:1436 src/integritysetup.c:103 #, c-format msgid "Cannot deactivate temporary device %s." msgstr "Nedá sa deaktivovať dočasné zariadenie %s." -#: src/cryptsetup.c:1486 +#: src/cryptsetup.c:1484 msgid "OPAL hw-only encryption does not support --cipher and --key-size, options ignored." msgstr "Iba hardvérové šifrovanie OPAL nepodporuje --cipher a --key-size, možnosti sa ignorujú." -#: src/cryptsetup.c:1499 +#: src/cryptsetup.c:1497 msgid "Integrity option can be used only for LUKS2 format." msgstr "Možnosti integrity môžu byť použité len pre formát LUKS2." -#: src/cryptsetup.c:1504 src/cryptsetup.c:1584 +#: src/cryptsetup.c:1502 src/cryptsetup.c:1582 msgid "Unsupported LUKS2 metadata size options." msgstr "Nepodporovaná možnosť veľkosti LUKS2 metadát." -#: src/cryptsetup.c:1509 +#: src/cryptsetup.c:1507 msgid "OPAL is supported only for LUKS2 format." msgstr "OPAL je podporovaný len pre formát LUKS2." -#: src/cryptsetup.c:1514 +#: src/cryptsetup.c:1512 msgid "Inline hw tags are supported only for LUKS2 format." msgstr "Hardvérové inline príznaky sú podporované len pre LUKS2 formát." -#: src/cryptsetup.c:1523 +#: src/cryptsetup.c:1521 msgid "Header file does not exist, do you want to create it?" msgstr "Súbor s hlavičkou neexistuje, chcete ho vytvoriť?" -#: src/cryptsetup.c:1531 +#: src/cryptsetup.c:1529 #, c-format msgid "Cannot create header file %s." msgstr "Nedá sa vytvoriť súbor s hlavičkou %s." -#: src/cryptsetup.c:1557 src/integritysetup.c:126 src/integritysetup.c:141 -#: src/integritysetup.c:150 src/integritysetup.c:322 src/integritysetup.c:330 -#: src/integritysetup.c:340 +#: src/cryptsetup.c:1555 src/integritysetup.c:126 src/integritysetup.c:141 +#: src/integritysetup.c:150 src/integritysetup.c:328 src/integritysetup.c:336 +#: src/integritysetup.c:346 msgid "No known integrity specification pattern detected." msgstr "Nebol rozpoznaný žiaden známy vzor špecifikácie integrity." -#: src/cryptsetup.c:1559 +#: src/cryptsetup.c:1557 msgid "Cannot use specified integrity key size." msgstr "Nedá sa použiť zadaná veľkosť kľúča integrity." -#: src/cryptsetup.c:1577 +#: src/cryptsetup.c:1575 #, c-format msgid "Cannot use %s as on-disk header." msgstr "Nedá sa použiť %s ako hlavička na disku." -#: src/cryptsetup.c:1606 src/integritysetup.c:172 +#: src/cryptsetup.c:1604 src/integritysetup.c:172 #, c-format msgid "This will overwrite data on %s irrevocably." msgstr "Toto prepíše údaje na %s nenávratne." -#: src/cryptsetup.c:1643 +#: src/cryptsetup.c:1641 msgid "OPAL Admin password cannot be empty." msgstr "OPAL heslo administrátora nemôže byť prázdne." -#: src/cryptsetup.c:1657 src/cryptsetup.c:2101 src/cryptsetup.c:2244 -#: src/cryptsetup.c:2379 src/cryptsetup.c:2445 src/utils_reencrypt_luks1.c:428 +#: src/cryptsetup.c:1655 src/cryptsetup.c:2099 src/cryptsetup.c:2242 +#: src/cryptsetup.c:2377 src/cryptsetup.c:2443 src/utils_reencrypt_luks1.c:428 msgid "Failed to set pbkdf parameters." msgstr "Zlyhalo nastavenie pbkdf parametrov." -#: src/cryptsetup.c:1788 +#: src/cryptsetup.c:1786 msgid "Reduced data offset is allowed only for detached LUKS header." msgstr "Znížené odsadenie údajov je povolené len pre oddelenú hlavičku LUKS." -#: src/cryptsetup.c:1795 +#: src/cryptsetup.c:1793 #, c-format msgid "LUKS file container %s is too small for activation, there is no remaining space for data." msgstr "Kontajnerový súbor LUKS %s je príliš malý na aktiváciu, nie je tam žiadne zvyšné miesto pre údaje." -#: src/cryptsetup.c:1837 src/cryptsetup.c:2250 src/utils_reencrypt.c:277 +#: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:277 #: src/utils_reencrypt.c:369 src/utils_reencrypt.c:1907 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "Nedá sa zistiť veľkosť kľúču zväzku pre LUKS bez miest pre kľúče, prosím použite voľbu --key-size." -#: src/cryptsetup.c:1856 src/utils_reencrypt.c:303 +#: src/cryptsetup.c:1854 src/utils_reencrypt.c:303 msgid "Device requires two volume keys." msgstr "Zariadenie vyžaduje dve kľúče zväzku." -#: src/cryptsetup.c:1891 +#: src/cryptsetup.c:1889 msgid "Some specified activation parameters were ignored with OPAL hw-only encryption." msgstr "Niektoré zadané aktivačné parametre boli ignorované s len hardvérovým šifrovaním OPAL." -#: src/cryptsetup.c:1896 +#: src/cryptsetup.c:1894 msgid "Device activated but cannot make flags persistent." msgstr "Zariadenie aktivované, ale nedajú sa urobiť príznaky trvalými." -#: src/cryptsetup.c:1976 src/cryptsetup.c:2044 +#: src/cryptsetup.c:1974 src/cryptsetup.c:2042 #, c-format msgid "Keyslot %d is selected for deletion." msgstr "Miesto pre kľúč %d je vybrané pre vymazanie." -#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 +#: src/cryptsetup.c:1986 src/cryptsetup.c:2046 msgid "This is the last keyslot. Device will become unusable after purging this key." msgstr "Toto je posledné miesto pre kľúč. Zariadenie sa stane nepoužiteľné po odstránení tohto kľúča." -#: src/cryptsetup.c:1989 +#: src/cryptsetup.c:1987 msgid "Enter any remaining passphrase: " msgstr "Zadajte akékoľvek zvyšné heslo: " -#: src/cryptsetup.c:1990 src/cryptsetup.c:2050 +#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 msgid "Operation aborted, the keyslot was NOT wiped.\n" msgstr "Operácia zrušená, miesto pre kľúč NEBOLO zmazané.\n" -#: src/cryptsetup.c:2026 +#: src/cryptsetup.c:2024 msgid "Enter passphrase to be deleted: " msgstr "Zadajte heslo, ktoré má byť vymazané: " -#: src/cryptsetup.c:2076 src/cryptsetup.c:2428 src/cryptsetup.c:3088 -#: src/cryptsetup.c:3255 +#: src/cryptsetup.c:2074 src/cryptsetup.c:2426 src/cryptsetup.c:3086 +#: src/cryptsetup.c:3253 #, c-format msgid "Device %s is not a valid LUKS2 device." msgstr "Zariadenie %s nie je platné LUKS2 zariadenie." -#: src/cryptsetup.c:2115 src/cryptsetup.c:2314 +#: src/cryptsetup.c:2113 src/cryptsetup.c:2312 msgid "Enter new passphrase for key slot: " msgstr "Zadajte nové heslo k miestu pre kľúč: " -#: src/cryptsetup.c:2149 src/utils_luks.c:342 +#: src/cryptsetup.c:2147 src/utils_luks.c:342 #, c-format msgid "Enter token PIN: " msgstr "Zadaj PIN k tokenu: " -#: src/cryptsetup.c:2151 src/utils_luks.c:344 +#: src/cryptsetup.c:2149 src/utils_luks.c:344 #, c-format msgid "Enter token %d PIN: " msgstr "Zadaj PIN k tokenu %d: " -#: src/cryptsetup.c:2210 +#: src/cryptsetup.c:2208 msgid "WARNING: The --key-slot parameter is used for new keyslot number.\n" msgstr "VAROVANIE: Parameter --key-slot je použitý pre nové číslo miesta pre kľúč.\n" -#: src/cryptsetup.c:2287 src/utils_reencrypt_luks1.c:1094 +#: src/cryptsetup.c:2285 src/utils_reencrypt_luks1.c:1094 #, c-format msgid "Enter any existing passphrase: " msgstr "Zadajte akékoľvek existujúce heslo: " -#: src/cryptsetup.c:2383 +#: src/cryptsetup.c:2381 msgid "Enter passphrase to be changed: " msgstr "Zadajte heslo, ktoré sa má zmeniť: " -#: src/cryptsetup.c:2399 src/utils_reencrypt_luks1.c:1080 +#: src/cryptsetup.c:2397 src/utils_reencrypt_luks1.c:1080 msgid "Enter new passphrase: " msgstr "Zadajte nové heslo: " -#: src/cryptsetup.c:2449 +#: src/cryptsetup.c:2447 msgid "Enter passphrase for keyslot to be converted: " msgstr "Zadajte heslo k miestu pre kľúč, ktoré má byť konvertované: " -#: src/cryptsetup.c:2473 +#: src/cryptsetup.c:2471 msgid "Only one device argument for isLuks operation is supported." msgstr "Iba jeden argument so zariadením pre operáciu isLuks je podporovaný." -#: src/cryptsetup.c:2578 +#: src/cryptsetup.c:2576 #, c-format msgid "Keyslot %d does not contain unbound key." msgstr "Miesto pre kľúč %d neobsahuje neviazaný kľúč." -#: src/cryptsetup.c:2583 +#: src/cryptsetup.c:2581 msgid "" "The header dump with unbound key is sensitive information.\n" "This dump should be stored encrypted in a safe place." @@ -2546,52 +2546,52 @@ msgstr "" "Výpis hlavičky s neviazaným kľúčom je citlivý údaj.\n" "Tento výpis by mal byť uložený šifrovaný na bezpečnom mieste." -#: src/cryptsetup.c:2678 src/cryptsetup.c:2714 +#: src/cryptsetup.c:2676 src/cryptsetup.c:2712 #, c-format msgid "%s is not active %s device name." msgstr "%s nie je názov aktívneho zariadenia %s." -#: src/cryptsetup.c:2709 +#: src/cryptsetup.c:2707 #, c-format msgid "%s is not active LUKS device name or header is missing." msgstr "%s nie je názov aktívneho LUKS zariadenia alebo chýba hlavička." -#: src/cryptsetup.c:2786 src/cryptsetup.c:2805 +#: src/cryptsetup.c:2784 src/cryptsetup.c:2803 msgid "Option --header-backup-file is required." msgstr "Možnosť --header-backup-file je vyžadovaná." -#: src/cryptsetup.c:2836 +#: src/cryptsetup.c:2834 #, c-format msgid "%s is not cryptsetup managed device." msgstr "%s nie je zariadenie spravované cryptsetup-om." -#: src/cryptsetup.c:2847 +#: src/cryptsetup.c:2845 #, c-format msgid "Refresh is not supported for device type %s" msgstr "Obnovenie nie je podporované pre typ zariadenia %s" -#: src/cryptsetup.c:2897 +#: src/cryptsetup.c:2895 #, c-format msgid "Unrecognized metadata device type %s." msgstr "Nerozpoznaný typ zariadenia %s v metadátach." -#: src/cryptsetup.c:2899 +#: src/cryptsetup.c:2897 msgid "Command requires device and mapped name as arguments." msgstr "Príkaz požaduje zariadenie a mapovaný názov ako argumenty." -#: src/cryptsetup.c:2917 +#: src/cryptsetup.c:2915 msgid "Enter OPAL PSID: " msgstr "Zadajte OPAL PSID: " -#: src/cryptsetup.c:2917 +#: src/cryptsetup.c:2915 msgid "Enter OPAL Admin password: " msgstr "Zadajte OPAL heslo administrátora: " -#: src/cryptsetup.c:2925 +#: src/cryptsetup.c:2923 msgid "WARNING: WHOLE disk will be factory reset and all data will be lost! Continue?" msgstr "VAROVANIE: CELÝ disk bude obnovený do továrenských nastavení a všetky údaje budú stratené! Pokračovať?" -#: src/cryptsetup.c:2968 +#: src/cryptsetup.c:2966 #, c-format msgid "" "This operation will erase all keyslots on device %s.\n" @@ -2600,363 +2600,363 @@ msgstr "" "Táto operácia vymaže všetky miesta s kľúčmi na zariadení %s.\n" "Zariadenie sa stane nepoužiteľné po tejto operácií." -#: src/cryptsetup.c:2975 +#: src/cryptsetup.c:2973 msgid "Operation aborted, keyslots were NOT wiped.\n" msgstr "Operácia zrušená, miesta s kľúčmi NEBOLI vymazané.\n" -#: src/cryptsetup.c:3014 +#: src/cryptsetup.c:3012 msgid "Invalid LUKS type, only luks1 and luks2 are supported." msgstr "Neplatný typ LUKS, iba luks1 a luks2 sú podporované." -#: src/cryptsetup.c:3030 +#: src/cryptsetup.c:3028 #, c-format msgid "Device is already %s type." msgstr "Zariadenie je už typom %s." -#: src/cryptsetup.c:3037 +#: src/cryptsetup.c:3035 #, c-format msgid "This operation will convert %s to %s format.\n" msgstr "Táto operácia premení %s na formát %s.\n" -#: src/cryptsetup.c:3040 +#: src/cryptsetup.c:3038 msgid "Operation aborted, device was NOT converted.\n" msgstr "Operácia zrušená, zariadenie NEBOLO premenené.\n" -#: src/cryptsetup.c:3080 +#: src/cryptsetup.c:3078 msgid "Option --priority, --label or --subsystem is missing." msgstr "Možnosť --priority, --label alebo --subsystem chýba." -#: src/cryptsetup.c:3114 src/cryptsetup.c:3154 src/cryptsetup.c:3174 +#: src/cryptsetup.c:3112 src/cryptsetup.c:3152 src/cryptsetup.c:3172 #, c-format msgid "Token %d is invalid." msgstr "Token %d je neplatný." -#: src/cryptsetup.c:3117 src/cryptsetup.c:3177 +#: src/cryptsetup.c:3115 src/cryptsetup.c:3175 #, c-format msgid "Token %d in use." msgstr "Token %d je používaný." -#: src/cryptsetup.c:3129 +#: src/cryptsetup.c:3127 #, c-format msgid "Failed to add luks2-keyring token %d." msgstr "Zlyhalo pridanie tokenu luks2-keyring %d." -#: src/cryptsetup.c:3140 src/cryptsetup.c:3203 +#: src/cryptsetup.c:3138 src/cryptsetup.c:3201 #, c-format msgid "Failed to assign token %d to keyslot %d." msgstr "Zlyhalo priradenie tokenu %d k miestu pre kľúč %d." -#: src/cryptsetup.c:3157 +#: src/cryptsetup.c:3155 #, c-format msgid "Token %d is not in use." msgstr "Token %d sa nepoužíva." -#: src/cryptsetup.c:3194 +#: src/cryptsetup.c:3192 msgid "Failed to import token from file." msgstr "Zlyhalo importovanie tokenu zo súboru." -#: src/cryptsetup.c:3219 +#: src/cryptsetup.c:3217 #, c-format msgid "Failed to get token %d for export." msgstr "Zlyhalo získanie tokenu %d pre export." -#: src/cryptsetup.c:3232 +#: src/cryptsetup.c:3230 #, c-format msgid "Token %d is not assigned to keyslot %d." msgstr "Token %d nie je priradený k miestu pre kľúč %d." -#: src/cryptsetup.c:3234 src/cryptsetup.c:3241 +#: src/cryptsetup.c:3232 src/cryptsetup.c:3239 #, c-format msgid "Failed to unassign token %d from keyslot %d." msgstr "Zlyhalo zrušenie priradenia tokenu %d z miesta pre kľúč %d." -#: src/cryptsetup.c:3300 +#: src/cryptsetup.c:3298 msgid "Option --tcrypt-hidden, --tcrypt-system or --tcrypt-backup is supported only for TCRYPT device." msgstr "Možnosť --tcrypt-hidden, --tcrypt-system alebo --tcrypt-backup je podporovaná len pre TCRYPT zariadenie." -#: src/cryptsetup.c:3303 +#: src/cryptsetup.c:3301 msgid "Option --veracrypt or --disable-veracrypt is supported only for TCRYPT device type." msgstr "Možnosť --veracrypt alebo --disable-veracrypt je podporovaná len pre zariadenie typu TCRYPT." -#: src/cryptsetup.c:3306 +#: src/cryptsetup.c:3304 msgid "Option --veracrypt-pim is supported only for VeraCrypt compatible devices." msgstr "Možnosť --veracrypt-pim je podporovaná len pre zariadenia kompatibilné s VeraCrypt." -#: src/cryptsetup.c:3310 +#: src/cryptsetup.c:3308 msgid "Option --veracrypt-query-pim is supported only for VeraCrypt compatible devices." msgstr "Možnosť --veracrypt-query-pim je podporovaná len pre zariadenia kompatibilné s VeraCrypt." -#: src/cryptsetup.c:3312 +#: src/cryptsetup.c:3310 msgid "The options --veracrypt-pim and --veracrypt-query-pim are mutually exclusive." msgstr "Možnosti --veracrypt-pim a --veracrypt-query-pim sa vzájomne vylučujú." -#: src/cryptsetup.c:3321 +#: src/cryptsetup.c:3319 msgid "Option --persistent is not allowed with --test-passphrase." msgstr "Možnosť --persistent nie je povolené s --test-passphrase." -#: src/cryptsetup.c:3324 +#: src/cryptsetup.c:3322 msgid "Options --refresh and --test-passphrase are mutually exclusive." msgstr "Možnosti --refresh a --test-passphrase sa navzájom vylučujú." -#: src/cryptsetup.c:3327 +#: src/cryptsetup.c:3325 msgid "Option --shared is allowed only for open of plain device." msgstr "Možnosť --shared je povolená len pre otvorenie zariadenia plain." -#: src/cryptsetup.c:3330 +#: src/cryptsetup.c:3328 msgid "Option --skip is supported only for open of plain and loopaes devices." msgstr "Možnosť --skip je podporovaná len pre otvorenie zariadení plain a loopaes." -#: src/cryptsetup.c:3333 +#: src/cryptsetup.c:3331 msgid "Option --offset with open action is only supported for plain and loopaes devices." msgstr "Možnosť --offset s akciou otvorenia je podporovaná len pre zariadenia plain a loopaes." -#: src/cryptsetup.c:3336 +#: src/cryptsetup.c:3334 msgid "Option --tcrypt-hidden cannot be combined with --allow-discards." msgstr "Možnosť --tcrypt-hidden nemôže byť kombinovaná s --allow-discards." -#: src/cryptsetup.c:3340 +#: src/cryptsetup.c:3338 msgid "Sector size option with open action is supported only for plain devices." msgstr "Možnosť veľkosti sektora s akciou otvorenia je podporovaná len pre zariadenia plain." -#: src/cryptsetup.c:3344 +#: src/cryptsetup.c:3342 msgid "Large IV sectors option is supported only for opening plain type device with sector size larger than 512 bytes." msgstr "Možnosť veľkých IV sektorov je podporovaná len pre otváranie zariadenia typu plain s veľkosťou sektora väčšou než 512 bajtov." -#: src/cryptsetup.c:3349 +#: src/cryptsetup.c:3347 msgid "Option --test-passphrase is allowed only for open of LUKS, TCRYPT, BITLK and FVAULT2 devices." msgstr "Možnosť --test-passphrase je povolená len pre otvorenie LUKS, TCRYPT, BITLK a FVAULT2 zariadení." -#: src/cryptsetup.c:3352 src/cryptsetup.c:3382 +#: src/cryptsetup.c:3350 src/cryptsetup.c:3380 msgid "Options --device-size and --size cannot be combined." msgstr "Možnosť --device-size a --size nemôžu byť kombinované." -#: src/cryptsetup.c:3355 +#: src/cryptsetup.c:3353 msgid "Option --unbound is allowed only for open of luks device." msgstr "Možnosť --unbound je povolená len pre otvorenie zariadení luks." -#: src/cryptsetup.c:3358 +#: src/cryptsetup.c:3356 msgid "Option --unbound cannot be used without --test-passphrase." msgstr "Možnosť --unbound nemôže byť použitá bez --test-passphrase." -#: src/cryptsetup.c:3362 +#: src/cryptsetup.c:3360 msgid "Option --volume-key-keyring cannot be combined with --hash or --volume-key-file." msgstr "Možnosť --volume-key-keyring nemôže byť kombinovaná s --hash alebo --volume-key-file." -#: src/cryptsetup.c:3365 +#: src/cryptsetup.c:3363 msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "Obe možnosti --volume-key-file musia byť zadané spolu s príslušnými možnosťami --key-size." -#: src/cryptsetup.c:3374 src/veritysetup.c:673 src/integritysetup.c:784 +#: src/cryptsetup.c:3372 src/veritysetup.c:673 src/integritysetup.c:787 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "Možnosti --cancal-deferred a --deferred nemôžu byť použité naraz." -#: src/cryptsetup.c:3390 +#: src/cryptsetup.c:3388 msgid "Option --active-name can be set only for LUKS2 device." msgstr "Možnosť --active-name možno nastaviť len pre zariadenie LUKS2." -#: src/cryptsetup.c:3393 +#: src/cryptsetup.c:3391 msgid "Options --active-name and --force-offline-reencrypt cannot be combined." msgstr "Možnosti --active-name a --force-offline-reencrypt nemožno kombinovať." -#: src/cryptsetup.c:3396 +#: src/cryptsetup.c:3394 msgid "Options --new-volume-key-file and --keep-key cannot be combined." msgstr "Možnosti --new-volume-key-file a --keep-key nemožno kombinovať." -#: src/cryptsetup.c:3399 +#: src/cryptsetup.c:3397 msgid "Options --new-volume-key-keyring and --keep-key cannot be combined." msgstr "Možnosti --new-volume-key-keyring a --keep-key nemožno kombinovať." -#: src/cryptsetup.c:3407 src/cryptsetup.c:3437 +#: src/cryptsetup.c:3405 src/cryptsetup.c:3435 msgid "Keyslot specification is required." msgstr "Vyžaduje sa zadanie miesta pre kľúč." -#: src/cryptsetup.c:3415 +#: src/cryptsetup.c:3413 msgid "Options --align-payload and --offset cannot be combined." msgstr "Možnosti --align-payload a --offset nemožno kombinovať." -#: src/cryptsetup.c:3418 +#: src/cryptsetup.c:3416 msgid "Option --integrity-no-wipe can be used only for format action with integrity extension." msgstr "Možnosť --integrity-no-wipe môže byť použitá len pre formátovanie s rozšírením integrity." -#: src/cryptsetup.c:3421 +#: src/cryptsetup.c:3419 msgid "Only one of --use-[u]random options is allowed." msgstr "Iba jedna z možností --use-[u]random je povolená." -#: src/cryptsetup.c:3429 +#: src/cryptsetup.c:3427 msgid "Key size is required with --unbound option." msgstr "Veľkosť kľúča sa vyžaduje s možnosťou --unbound." -#: src/cryptsetup.c:3449 +#: src/cryptsetup.c:3447 msgid "Invalid token action." msgstr "Neplatná operácia s tokenom." -#: src/cryptsetup.c:3452 +#: src/cryptsetup.c:3450 msgid "--key-description parameter is mandatory for token add action." msgstr "Parameter --key-description je povinný pre pridanie tokenu." -#: src/cryptsetup.c:3456 src/cryptsetup.c:3469 +#: src/cryptsetup.c:3454 src/cryptsetup.c:3467 msgid "Action requires specific token. Use --token-id parameter." msgstr "Akcia vyžaduje špecifický token. Použite --token-id parameter." -#: src/cryptsetup.c:3460 +#: src/cryptsetup.c:3458 msgid "Option --unbound is valid only with token add action." msgstr "Možnosť --unbound je platná len pri pridávaní tokenu." -#: src/cryptsetup.c:3462 +#: src/cryptsetup.c:3460 msgid "Options --key-slot and --unbound cannot be combined." msgstr "Možnosti --key-slot a --unbound nemožno kombinovať." -#: src/cryptsetup.c:3467 +#: src/cryptsetup.c:3465 msgid "Action requires specific keyslot. Use --key-slot parameter." msgstr "Akcia vyžaduje špecifický token. Použite --key-slot parameter." -#: src/cryptsetup.c:3483 +#: src/cryptsetup.c:3481 msgid " [--type ] []" msgstr " [--type ] []" -#: src/cryptsetup.c:3483 src/veritysetup.c:487 src/integritysetup.c:551 +#: src/cryptsetup.c:3481 src/veritysetup.c:487 src/integritysetup.c:554 msgid "open device as " msgstr "otvorí zariadenie ako " -#: src/cryptsetup.c:3484 src/cryptsetup.c:3485 src/cryptsetup.c:3486 -#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:552 -#: src/integritysetup.c:553 src/integritysetup.c:555 +#: src/cryptsetup.c:3482 src/cryptsetup.c:3483 src/cryptsetup.c:3484 +#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:555 +#: src/integritysetup.c:556 src/integritysetup.c:558 msgid "" msgstr "" -#: src/cryptsetup.c:3484 src/veritysetup.c:488 src/integritysetup.c:552 +#: src/cryptsetup.c:3482 src/veritysetup.c:488 src/integritysetup.c:555 msgid "close device (remove mapping)" msgstr "zatvorí zariadenie (odstráni mapovanie)" -#: src/cryptsetup.c:3485 src/integritysetup.c:555 +#: src/cryptsetup.c:3483 src/integritysetup.c:558 msgid "resize active device" msgstr "zmení veľkosť aktívneho zariadenia" -#: src/cryptsetup.c:3486 +#: src/cryptsetup.c:3484 msgid "show device status" msgstr "zobrazí stav zariadenia" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3485 msgid "[--cipher ]" msgstr "[--cipher <šifra>]" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3485 msgid "benchmark cipher" msgstr "zhodnotí výkon šifry" -#: src/cryptsetup.c:3488 src/cryptsetup.c:3489 src/cryptsetup.c:3490 -#: src/cryptsetup.c:3491 src/cryptsetup.c:3492 src/cryptsetup.c:3499 -#: src/cryptsetup.c:3500 src/cryptsetup.c:3501 src/cryptsetup.c:3502 -#: src/cryptsetup.c:3503 src/cryptsetup.c:3504 src/cryptsetup.c:3505 -#: src/cryptsetup.c:3506 src/cryptsetup.c:3507 src/cryptsetup.c:3508 +#: src/cryptsetup.c:3486 src/cryptsetup.c:3487 src/cryptsetup.c:3488 +#: src/cryptsetup.c:3489 src/cryptsetup.c:3490 src/cryptsetup.c:3497 +#: src/cryptsetup.c:3498 src/cryptsetup.c:3499 src/cryptsetup.c:3500 +#: src/cryptsetup.c:3501 src/cryptsetup.c:3502 src/cryptsetup.c:3503 +#: src/cryptsetup.c:3504 src/cryptsetup.c:3505 src/cryptsetup.c:3506 msgid "" msgstr "" -#: src/cryptsetup.c:3488 +#: src/cryptsetup.c:3486 msgid "try to repair on-disk metadata" msgstr "pokúsi sa opraviť metadáta uložené na disku" -#: src/cryptsetup.c:3489 +#: src/cryptsetup.c:3487 msgid "reencrypt LUKS2 device" msgstr "prešifruje zariadenie LUKS2" -#: src/cryptsetup.c:3490 +#: src/cryptsetup.c:3488 msgid "erase all keyslots (remove encryption key)" msgstr "vymaže všetky miesta s kľúčmi (odstráni šifrovací kľúč)" -#: src/cryptsetup.c:3491 +#: src/cryptsetup.c:3489 msgid "convert LUKS from/to LUKS2 format" msgstr "prevedie LUKS z/na LUKS2 formát(u)" -#: src/cryptsetup.c:3492 +#: src/cryptsetup.c:3490 msgid "set permanent configuration options for LUKS2" msgstr "nastaví trvalé možnosti konfigurácie pre LUKS2" -#: src/cryptsetup.c:3493 src/cryptsetup.c:3494 +#: src/cryptsetup.c:3491 src/cryptsetup.c:3492 msgid " []" msgstr " []" -#: src/cryptsetup.c:3493 +#: src/cryptsetup.c:3491 msgid "formats a LUKS device" msgstr "naformátuje zariadenie LUKS" -#: src/cryptsetup.c:3494 +#: src/cryptsetup.c:3492 msgid "add key to LUKS device" msgstr "pridá kľúč do zariadenia LUKS" -#: src/cryptsetup.c:3495 src/cryptsetup.c:3496 src/cryptsetup.c:3497 +#: src/cryptsetup.c:3493 src/cryptsetup.c:3494 src/cryptsetup.c:3495 msgid " []" msgstr " []" -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3493 msgid "removes supplied key or key file from LUKS device" msgstr "odstráni poskytnutý kľúč alebo súbor s kľúčom zo zariadenia LUKS" -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3494 msgid "changes supplied key or key file of LUKS device" msgstr "zmení poskytnutý kľúč alebo súbor s kľúčom na zariadení LUKS" -#: src/cryptsetup.c:3497 +#: src/cryptsetup.c:3495 msgid "converts a key to new pbkdf parameters" msgstr "prevedie kľúč na nové parametre pbkdf" -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3496 msgid " " msgstr " " -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3496 msgid "wipes key with number from LUKS device" msgstr "vymaže kľúč s číslom zo zariadenia LUKS" -#: src/cryptsetup.c:3499 +#: src/cryptsetup.c:3497 msgid "print UUID of LUKS device" msgstr "vypíše UUID zariadení LUKS" -#: src/cryptsetup.c:3500 +#: src/cryptsetup.c:3498 msgid "tests for LUKS partition header" msgstr "otestuje na hlavičku diskového oddielu LUKS" -#: src/cryptsetup.c:3501 +#: src/cryptsetup.c:3499 msgid "dump LUKS partition information" msgstr "vypíše informácie o oddiely LUKS" -#: src/cryptsetup.c:3502 +#: src/cryptsetup.c:3500 msgid "dump TCRYPT device information" msgstr "vypíše informácie o zariadení TCRYPT" -#: src/cryptsetup.c:3503 +#: src/cryptsetup.c:3501 msgid "dump BITLK device information" msgstr "vypíše informácie o zariadení BITLK" -#: src/cryptsetup.c:3504 +#: src/cryptsetup.c:3502 msgid "dump FVAULT2 device information" msgstr "vypíše informácie o zariadení FVAULT2" -#: src/cryptsetup.c:3505 +#: src/cryptsetup.c:3503 msgid "Suspend LUKS device and wipe key (all IOs are frozen)" msgstr "Pozastaví zariadenie LUKS a vymaže kľúč (všetky vstupno-výstupné operácie budú zmrazené)" -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3504 msgid "Resume suspended LUKS device" msgstr "Prebudí pozastavené zariadenie LUKS" -#: src/cryptsetup.c:3507 +#: src/cryptsetup.c:3505 msgid "Backup LUKS device header and keyslots" msgstr "Zálohuje hlavičku a miesta s kľúčmi zariadenia LUKS" -#: src/cryptsetup.c:3508 +#: src/cryptsetup.c:3506 msgid "Restore LUKS device header and keyslots" msgstr "Obnoví hlavičku a miesta s kľúčmi zariadenia LUKS" -#: src/cryptsetup.c:3509 +#: src/cryptsetup.c:3507 msgid " " msgstr " " -#: src/cryptsetup.c:3509 +#: src/cryptsetup.c:3507 msgid "Manipulate LUKS2 tokens" msgstr "Manipuluje s tokenmi LUKS2" -#: src/cryptsetup.c:3528 src/veritysetup.c:505 src/integritysetup.c:570 +#: src/cryptsetup.c:3526 src/veritysetup.c:505 src/integritysetup.c:573 msgid "" "\n" " is one of:\n" @@ -2964,7 +2964,7 @@ msgstr "" "\n" " je jedna z:\n" -#: src/cryptsetup.c:3534 +#: src/cryptsetup.c:3532 msgid "" "\n" "You can also use old syntax aliases:\n" @@ -2976,7 +2976,7 @@ msgstr "" "\topen: create (plainOpen), luksOpen, loopaesOpen, tcryptOpen, bitlkOpen, fvault2Open\n" "\tclose: remove (plainClose), luksClose, loopaesClose, tcryptClose, bitlkClose, fvault2Close\n" -#: src/cryptsetup.c:3538 +#: src/cryptsetup.c:3536 #, c-format msgid "" "\n" @@ -2991,7 +2991,7 @@ msgstr "" " je číslo miesta pre kľúč LUKS na upravovanie\n" " je voliteľný súbor s kľúčom pre nový kľúč pre akciu luksAddKey\n" -#: src/cryptsetup.c:3545 +#: src/cryptsetup.c:3543 #, c-format msgid "" "\n" @@ -3000,7 +3000,7 @@ msgstr "" "\n" "Predvolené zakompilovaný formát metadát je %s (pre akciu luksFormat).\n" -#: src/cryptsetup.c:3550 +#: src/cryptsetup.c:3548 msgid "" "\n" "LUKS2 external token plugin support is enabled.\n" @@ -3008,12 +3008,12 @@ msgstr "" "\n" "LUKS2 podpora zásuvného modulu externého tokenu je zapnutá.\n" -#: src/cryptsetup.c:3551 +#: src/cryptsetup.c:3549 #, c-format msgid "LUKS2 external token plugin path: %s.\n" msgstr "Cesta k zásuvnému modulu externého tokenu LUKS2: %s.\n" -#: src/cryptsetup.c:3553 +#: src/cryptsetup.c:3551 msgid "" "\n" "LUKS2 external token plugin support is disabled.\n" @@ -3021,7 +3021,7 @@ msgstr "" "\n" "LUKS2 podpora zásuvného modulu externého tokenu je vypnutá.\n" -#: src/cryptsetup.c:3557 +#: src/cryptsetup.c:3555 #, c-format msgid "" "\n" @@ -3038,7 +3038,7 @@ msgstr "" "Predvolené PBKDF pre LUKS2: %s\n" "\tČas iterácie: %d, Pamäť potrebná: %d kB, Paralelné vlákna: %d\n" -#: src/cryptsetup.c:3568 +#: src/cryptsetup.c:3566 #, c-format msgid "" "\n" @@ -3053,122 +3053,122 @@ msgstr "" "\tplain: %s, Kľúč: %d bitov, Hashovanie hesla: %s\n" "\tLUKS: %s, Kľúč: %d bitov, Hashovanie LUKS hlavičky: %s, RNG: %s\n" -#: src/cryptsetup.c:3577 +#: src/cryptsetup.c:3575 msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: Predvolená veľkosť kľúča s režimom XTS (dva interné kľúče) bude zdvojnásobená.\n" -#: src/cryptsetup.c:3595 src/veritysetup.c:647 src/integritysetup.c:730 +#: src/cryptsetup.c:3593 src/veritysetup.c:647 src/integritysetup.c:733 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: požaduje %s ako argumenty" -#: src/cryptsetup.c:3635 src/utils_reencrypt_luks1.c:1143 +#: src/cryptsetup.c:3633 src/utils_reencrypt_luks1.c:1143 msgid "Key slot is invalid." msgstr "Miesto pre kľúč je neplatné." -#: src/cryptsetup.c:3663 +#: src/cryptsetup.c:3661 msgid "Device size must be multiple of 512 bytes sector." msgstr "Veľkosť zariadenie musí byť násobkom 512-bajtového sektora." -#: src/cryptsetup.c:3668 +#: src/cryptsetup.c:3666 msgid "Invalid max reencryption hotzone size specification." msgstr "Zadaná neplatná maximálna veľkosť horúcej zóny prešifrovania." -#: src/cryptsetup.c:3682 src/cryptsetup.c:3699 src/cryptsetup.c:3711 +#: src/cryptsetup.c:3680 src/cryptsetup.c:3697 src/cryptsetup.c:3709 msgid "Key size must be a multiple of 8 bits" msgstr "Veľkosť kľúča musí byť násobkom 8 bitov" -#: src/cryptsetup.c:3689 +#: src/cryptsetup.c:3687 msgid "At most 2 key size specifications can be supplied." msgstr "Najviac dve veľkosti kľúčov môžu byť zadané." -#: src/cryptsetup.c:3718 src/cryptsetup.c:3729 +#: src/cryptsetup.c:3716 src/cryptsetup.c:3727 #, c-format msgid "At most %d volume key specifications can be supplied." msgstr "Najviac %d špecifikácií kľúča zväzku môže byť zadaných." -#: src/cryptsetup.c:3741 +#: src/cryptsetup.c:3739 #, c-format msgid "At most %d keyring link specifications can be supplied." msgstr "Najviac %d zväzkov kľúčov môže byť zadaných." -#: src/cryptsetup.c:3750 +#: src/cryptsetup.c:3748 msgid "Maximum device reduce size is 1 GiB." msgstr "Maximálna veľkosť zmenšenia zariadenia je 1 GiB." -#: src/cryptsetup.c:3753 +#: src/cryptsetup.c:3751 msgid "Reduce size must be multiple of 512 bytes sector." msgstr "Veľkosť zmenšenia musí byť násobkom 512-bajtového sektora." -#: src/cryptsetup.c:3770 +#: src/cryptsetup.c:3768 msgid "Option --priority can be only ignore/normal/prefer." msgstr "Možnosť --priority môže byť len ignore/normal/prefer." -#: src/cryptsetup.c:3789 src/veritysetup.c:568 src/integritysetup.c:650 +#: src/cryptsetup.c:3787 src/veritysetup.c:568 src/integritysetup.c:653 msgid "Show this help message" msgstr "Zobrazí túto pomocnú správu" -#: src/cryptsetup.c:3790 src/veritysetup.c:569 src/integritysetup.c:651 +#: src/cryptsetup.c:3788 src/veritysetup.c:569 src/integritysetup.c:654 msgid "Display brief usage" msgstr "Zobrazí stručný návod na použitie" -#: src/cryptsetup.c:3791 src/veritysetup.c:570 src/integritysetup.c:652 +#: src/cryptsetup.c:3789 src/veritysetup.c:570 src/integritysetup.c:655 msgid "Print package version" msgstr "Vypíše verziu balíka" -#: src/cryptsetup.c:3802 src/veritysetup.c:581 src/integritysetup.c:663 +#: src/cryptsetup.c:3800 src/veritysetup.c:581 src/integritysetup.c:666 msgid "Help options:" msgstr "Možnosti pomoci:" -#: src/cryptsetup.c:3825 src/veritysetup.c:602 src/integritysetup.c:683 +#: src/cryptsetup.c:3823 src/veritysetup.c:602 src/integritysetup.c:686 msgid "[OPTION...] " msgstr "[MOŽNOSŤ...] <špecifikácia akcie>" -#: src/cryptsetup.c:3834 src/veritysetup.c:611 src/integritysetup.c:694 +#: src/cryptsetup.c:3832 src/veritysetup.c:611 src/integritysetup.c:697 msgid "Argument missing." msgstr "Chýba argument ." -#: src/cryptsetup.c:3913 src/veritysetup.c:642 src/integritysetup.c:725 +#: src/cryptsetup.c:3911 src/veritysetup.c:642 src/integritysetup.c:728 msgid "Unknown action." msgstr "Neznáma akcia." -#: src/cryptsetup.c:3931 +#: src/cryptsetup.c:3929 msgid "Option --key-file takes precedence over specified key file argument." msgstr "Možnosť --key-file má prednosť pred zadaným argumentom súboru s kľúčom." -#: src/cryptsetup.c:3937 +#: src/cryptsetup.c:3935 msgid "Only one --key-file argument is allowed." msgstr "Iba jeden argument --key-file je dovolený." -#: src/cryptsetup.c:3942 +#: src/cryptsetup.c:3940 msgid "Password-based key derivation function (PBKDF) can be only pbkdf2 or argon2i/argon2id." msgstr "Funkcia na odvodenie kľúča na základe hesla (PBKDF) môže byť iba pbkdf2 alebo argon2i/argon2id." -#: src/cryptsetup.c:3947 +#: src/cryptsetup.c:3945 msgid "PBKDF forced iterations cannot be combined with iteration time option." msgstr "Vynútené iterácie PBKDF nemôžu byť kombinované s možnosťou času iterácie." -#: src/cryptsetup.c:3952 +#: src/cryptsetup.c:3950 msgid "Cannot link volume key to a keyring when keyring is disabled." msgstr "Nedá sa prepojiť kľúč zväzku na zväzok kľúčov, keď je zväzok kľúčov vypnutý." -#: src/cryptsetup.c:3957 +#: src/cryptsetup.c:3955 msgid "Cannot use keyring key description when keyring is disabled." msgstr "Nedá sa použiť popis kľúča zo zväzku kľúčov, keď je zväzok kľúčov vypnutý." -#: src/cryptsetup.c:3962 +#: src/cryptsetup.c:3960 msgid "Inline integrity must be used together with --integrity option." msgstr "Inline integrita musí byť použitá spolu s možnosťou --integrity." -#: src/cryptsetup.c:3973 +#: src/cryptsetup.c:3971 msgid "Options --keyslot-cipher and --keyslot-key-size must be used together." msgstr "Možnosti --keyslot-cipher a --keyslot-key-size musia byť použité spolu." -#: src/cryptsetup.c:3981 +#: src/cryptsetup.c:3979 msgid "No action taken. Invoked with --test-args option.\n" msgstr "Žiadna akcia sa nevykonala. Zavolané s možnosťou --test-args.\n" -#: src/cryptsetup.c:3994 +#: src/cryptsetup.c:3992 msgid "Cannot disable metadata locking." msgstr "Nedá sa vypnúť zamykanie metadát." @@ -3233,7 +3233,7 @@ msgstr "Príkaz vyžaduje alebo možnosť --root-hash-file ako msgid " " msgstr " " -#: src/veritysetup.c:485 src/integritysetup.c:550 +#: src/veritysetup.c:485 src/integritysetup.c:553 msgid "format device" msgstr "formátuje zariadenie" @@ -3249,7 +3249,7 @@ msgstr "overí zariadenie" msgid " []" msgstr " []" -#: src/veritysetup.c:489 src/integritysetup.c:553 +#: src/veritysetup.c:489 src/integritysetup.c:556 msgid "show active device status" msgstr "zobrazí stav aktívneho zariadenia" @@ -3257,7 +3257,7 @@ msgstr "zobrazí stav aktívneho zariadenia" msgid "" msgstr "" -#: src/veritysetup.c:490 src/integritysetup.c:554 +#: src/veritysetup.c:490 src/integritysetup.c:557 msgid "show on-disk information" msgstr "zobrazí informácie na disku" @@ -3317,24 +3317,24 @@ msgstr "Naformátované s veľkosťou príznaku %u %s, interná integrita %s.\n" msgid " (inline hw tags)" msgstr " (hardvérové inline príznaky)" -#: src/integritysetup.c:297 +#: src/integritysetup.c:303 msgid "Setting recalculate flag is not supported, you may consider using --wipe instead." msgstr "Nastavenie príznaku prepočítania nie je podporované, môžete zvážiť použitie --wipe namiesto toho." -#: src/integritysetup.c:374 src/integritysetup.c:537 +#: src/integritysetup.c:380 src/integritysetup.c:540 #, c-format msgid "Device %s is not a valid INTEGRITY device." msgstr "Zariadenie %s nie je platné INTEGRITY zariadenie." -#: src/integritysetup.c:550 src/integritysetup.c:554 +#: src/integritysetup.c:553 src/integritysetup.c:557 msgid "" msgstr "" -#: src/integritysetup.c:551 +#: src/integritysetup.c:554 msgid " " msgstr " " -#: src/integritysetup.c:574 +#: src/integritysetup.c:577 #, c-format msgid "" "\n" @@ -3345,7 +3345,7 @@ msgstr "" " je zariadenie na vytvorenie pod %s\n" " je zariadenie obsahujúce údaje s príznakmi integrity\n" -#: src/integritysetup.c:579 +#: src/integritysetup.c:582 #, c-format msgid "" "\n" @@ -3358,48 +3358,48 @@ msgstr "" "\tAlgoritmus kontrolného súčtu: %s\n" "\tMaximálna veľkosť súboru s kľúčom: %d kB\n" -#: src/integritysetup.c:636 +#: src/integritysetup.c:639 #, c-format msgid "Invalid --%s size. Maximum is %u bytes." msgstr "Neplatná veľkosť --%s. Maximum je %u bajtov." -#: src/integritysetup.c:739 +#: src/integritysetup.c:742 msgid "Both key file and key size options must be specified." msgstr "Obe možnosti musia byť zadané, súbor s kľúčom aj veľkosť kľúča." -#: src/integritysetup.c:743 +#: src/integritysetup.c:746 msgid "Both journal integrity key file and key size options must be specified." msgstr "Obe možnosti musia byť zadané, súbor s kľúčom pre integritu denníka aj veľkosť kľúča." -#: src/integritysetup.c:746 +#: src/integritysetup.c:749 msgid "Journal integrity algorithm must be specified if journal integrity key is used." msgstr "Algoritmus integrity denníka musí byť zadaný, keď sa používa kľúč pre integritu denníka." -#: src/integritysetup.c:750 +#: src/integritysetup.c:753 msgid "Both journal encryption key file and key size options must be specified." msgstr "Obe možnosti musia byť zadané, súbor s kľúčom na šifrovanie denníka aj veľkosť kľúča." -#: src/integritysetup.c:753 +#: src/integritysetup.c:756 msgid "Journal encryption algorithm must be specified if journal encryption key is used." msgstr "Algoritmus šifrovania denníka musí byť zadaný, keď sa používa kľúč na šifrovanie denníka." -#: src/integritysetup.c:757 +#: src/integritysetup.c:760 msgid "Recovery and bitmap mode options are mutually exclusive." msgstr "Možnosti režimu obnovenia a bitmapy sa vzájomne vylučujú." -#: src/integritysetup.c:764 +#: src/integritysetup.c:767 msgid "Journal options cannot be used in bitmap mode." msgstr "Možnosti denníka nemôžu byť použité v bitmapovom režime." -#: src/integritysetup.c:769 +#: src/integritysetup.c:772 msgid "Bitmap options can be used only in bitmap mode." msgstr "Možnosti bitmapy môžu byť použité len v bitmapovom režime." -#: src/integritysetup.c:775 +#: src/integritysetup.c:778 msgid "Inline mode cannot be combined with journal or bitmap options." msgstr "Režim inline nemôže byť kombinovaný s možnosťami režimu denníka alebo bitmapy." -#: src/integritysetup.c:779 +#: src/integritysetup.c:782 msgid "Inline mode cannot be combined with separate data device." msgstr "Režim inline nemôže byť kombinovaný s oddeleným zariadením s údajmi." @@ -4356,6 +4356,10 @@ msgstr "Pre hostiteľa nie je povolená autentifikačný metóda s verejným kľ msgid "Public key authentication error: " msgstr "Chyba autentifikácie s verejným kľúčom: " +#, c-format +#~ msgid "Failed to read or validate BITLK FVE metadata copy #%d from %s." +#~ msgstr "Zlyhalo čítanie alebo overenie kópie metadát BITLK FVE #%d z %s." + #~ msgid "Activation of BITLK device with clear key protection is not supported." #~ msgstr "Aktivácia zariadenia BITLK s ochranou čistého kľúča nie je podporovaná." From f5b28f43d5a4da756275f64cc7f46eb804f88bbd Mon Sep 17 00:00:00 2001 From: Yuri Chornoivan Date: Tue, 31 Mar 2026 11:31:32 +0200 Subject: [PATCH 057/244] po: update uk.po (from translationproject.org) --- po/uk.po | 734 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 369 insertions(+), 365 deletions(-) diff --git a/po/uk.po b/po/uk.po index 66918f767..59e284406 100644 --- a/po/uk.po +++ b/po/uk.po @@ -2,13 +2,13 @@ # Copyright (C) 2012 Free Software Foundation, Inc. # This file is put in the public domain. # -# Yuri Chornoivan , 2012-2023, 2024, 2025. +# Yuri Chornoivan , 2012-2023, 2024, 2025, 2026. msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.2-rc0\n" +"Project-Id-Version: cryptsetup 2.8.5-rc0\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2025-12-12 18:51+0100\n" -"PO-Revision-Date: 2025-12-13 14:52+0200\n" +"POT-Creation-Date: 2026-03-30 14:18+0200\n" +"PO-Revision-Date: 2026-03-30 18:18+0300\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" "Language: uk\n" @@ -186,8 +186,8 @@ msgstr "Розмір пристрою не вирівняно за розмір msgid "Header detected but device %s is too small." msgstr "Виявлено заголовок, але об’єм пристрою %s є надто малим." -#: lib/setup.c:669 lib/setup.c:3760 lib/setup.c:5227 -#: lib/luks2/luks2_reencrypt.c:3945 lib/luks2/luks2_reencrypt.c:4434 +#: lib/setup.c:669 lib/setup.c:3760 lib/setup.c:5238 +#: lib/luks2/luks2_reencrypt.c:3948 lib/luks2/luks2_reencrypt.c:4437 msgid "This operation is not supported for this device type." msgstr "Підтримки цієї дії для цього типу пристроїв не передбачено." @@ -200,10 +200,10 @@ msgid "Failed to rollback LUKS2 metadata in memory." msgstr "Не вдалося відкотити метадані LUKS2 у пам'яті." #: lib/setup.c:893 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 -#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1782 -#: src/cryptsetup.c:1966 src/cryptsetup.c:2021 src/cryptsetup.c:2219 -#: src/cryptsetup.c:2364 src/cryptsetup.c:2642 src/cryptsetup.c:2955 -#: src/cryptsetup.c:3023 src/utils_reencrypt.c:2281 +#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 +#: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 +#: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2953 +#: src/cryptsetup.c:3021 src/utils_reencrypt.c:2281 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." @@ -220,7 +220,7 @@ msgid "No known cipher specification pattern detected for active device %s." msgstr "Не виявлено жодного відомого зразка специфікації шифрування для активного пристрою %s." #: lib/setup.c:1515 lib/setup.c:3507 lib/setup.c:3599 lib/setup.c:3611 -#: lib/setup.c:3783 lib/setup.c:5805 +#: lib/setup.c:3783 lib/setup.c:5816 #, c-format msgid "Device %s is not active." msgstr "Пристрій %s є неактивним." @@ -247,7 +247,7 @@ msgid "Detached metadata device is not supported for this crypt type." msgstr "Підтримки пристрою від'єднаних метаданих для цього типу шифрування не передбачено." #: lib/setup.c:1639 lib/setup.c:1887 lib/luks2/luks2_reencrypt.c:3034 -#: src/cryptsetup.c:1494 src/cryptsetup.c:3762 +#: src/cryptsetup.c:1492 src/cryptsetup.c:3760 msgid "Unsupported encryption sector size." msgstr "Непідтримуваний розмір сектора шифрування." @@ -300,9 +300,9 @@ msgstr "Шифрування %s-%s (розмір ключа — %zd бітів) msgid "WARNING: The device activation will fail, dm-crypt is missing support for requested encryption sector size.\n" msgstr "Увага: спроба активувати пристрій завершиться невдало, у dm-crypt не передбачено підтримки для вказаного розміру сектора шифрування.\n" -#: lib/setup.c:2091 lib/setup.c:2458 lib/setup.c:2520 lib/utils_device.c:896 +#: lib/setup.c:2091 lib/setup.c:2458 lib/setup.c:2520 lib/utils_device.c:906 #: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3073 -#: lib/luks2/luks2_reencrypt.c:4494 +#: lib/luks2/luks2_reencrypt.c:4497 #, c-format msgid "Device %s is too small." msgstr "Об’єм пристрою %s є надто малим." @@ -460,7 +460,7 @@ msgid "Unsupported parameters on device %s." msgstr "Непідтримувані параметри на пристрої %s." #: lib/setup.c:3521 lib/setup.c:3624 lib/luks2/luks2_reencrypt.c:2928 -#: lib/luks2/luks2_reencrypt.c:3197 lib/luks2/luks2_reencrypt.c:3591 +#: lib/luks2/luks2_reencrypt.c:3197 lib/luks2/luks2_reencrypt.c:3594 #, c-format msgid "Mismatching parameters on device %s." msgstr "Невідповідність параметрів на пристрої %s." @@ -470,7 +470,7 @@ msgid "Crypt devices mismatch." msgstr "Невідповідність пристроїв шифрування." #: lib/setup.c:3679 lib/setup.c:3684 lib/luks2/luks2_reencrypt.c:2412 -#: lib/luks2/luks2_reencrypt.c:2944 lib/luks2/luks2_reencrypt.c:4233 +#: lib/luks2/luks2_reencrypt.c:2944 lib/luks2/luks2_reencrypt.c:4236 #, c-format msgid "Failed to reload device %s." msgstr "Не вдалося перезавантажити пристрій %s." @@ -482,8 +482,8 @@ msgid "Failed to suspend device %s." msgstr "Не вдалося приспати пристрій %s." #: lib/setup.c:3702 lib/luks2/luks2_reencrypt.c:2396 -#: lib/luks2/luks2_reencrypt.c:2979 lib/luks2/luks2_reencrypt.c:4146 -#: lib/luks2/luks2_reencrypt.c:4237 +#: lib/luks2/luks2_reencrypt.c:2979 lib/luks2/luks2_reencrypt.c:4149 +#: lib/luks2/luks2_reencrypt.c:4240 #, c-format msgid "Failed to resume device %s." msgstr "Не вдалося відновити роботу пристрою %s." @@ -565,187 +565,187 @@ msgstr "Помилка під час спроби пробудити прист msgid "Failed to unlink volume key from user specified keyring." msgstr "Не вдалося скасувати прив'язку ключа тому до вказаного користувачем сховища ключів." -#: lib/setup.c:4423 lib/setup.c:5592 +#: lib/setup.c:4423 lib/setup.c:5603 msgid "Failed to link volume key in user defined keyring." msgstr "Не вдалося пов'язати ключ тому із визначеним користувачем сховищем ключів." -#: lib/setup.c:4521 src/cryptsetup.c:2723 +#: lib/setup.c:4522 src/cryptsetup.c:2721 #, c-format msgid "Volume %s is not suspended." msgstr "Том %s не приспано." -#: lib/setup.c:4622 lib/setup.c:7265 lib/setup.c:7287 lib/setup.c:7341 -#: src/cryptsetup.c:1858 src/cryptsetup.c:2262 src/cryptsetup.c:2280 +#: lib/setup.c:4633 lib/setup.c:7276 lib/setup.c:7298 lib/setup.c:7352 +#: src/cryptsetup.c:1856 src/cryptsetup.c:2260 src/cryptsetup.c:2278 #: src/utils_reencrypt.c:305 src/utils_reencrypt.c:1966 msgid "Volume key does not match the volume." msgstr "Ключ тому не відповідає тому." -#: lib/setup.c:4776 +#: lib/setup.c:4787 msgid "Failed to swap new key slot." msgstr "Не вдалося зарезервувати новий слот ключа." -#: lib/setup.c:4874 +#: lib/setup.c:4885 #, c-format msgid "Key slot %d is invalid." msgstr "Слот ключа %d є некоректним." -#: lib/setup.c:4880 src/cryptsetup.c:1979 src/cryptsetup.c:2439 -#: src/cryptsetup.c:3123 src/cryptsetup.c:3183 +#: lib/setup.c:4891 src/cryptsetup.c:1977 src/cryptsetup.c:2437 +#: src/cryptsetup.c:3121 src/cryptsetup.c:3181 #, c-format msgid "Keyslot %d is not active." msgstr "Слот ключа %d не є активним." -#: lib/setup.c:4899 +#: lib/setup.c:4910 msgid "Device header overlaps with data area." msgstr "Заголовок пристрою перекривається із областю даних." -#: lib/setup.c:5120 +#: lib/setup.c:5131 msgid "Reencryption in-progress. Cannot activate device." msgstr "Виконуємо повторне шифрування. Не можна активувати пристрій." -#: lib/setup.c:5122 lib/luks2/luks2_json_metadata.c:2888 -#: lib/luks2/luks2_reencrypt.c:3722 +#: lib/setup.c:5133 lib/luks2/luks2_json_metadata.c:2888 +#: lib/luks2/luks2_reencrypt.c:3725 msgid "Failed to get reencryption lock." msgstr "Не вдалося отримати стан блокування для повторного шифрування." -#: lib/setup.c:5144 +#: lib/setup.c:5155 msgid "LUKS2 reencryption recovery using volume key(s) failed." msgstr "Не вдалося виконати відновлення даних повторного шифрування LUKS2 з використанням ключів тому." -#: lib/setup.c:5280 +#: lib/setup.c:5291 #, c-format msgid "Device %s already exists." msgstr "Пристрій %s вже існує." -#: lib/setup.c:5287 +#: lib/setup.c:5298 #, c-format msgid "Cannot use device %s, name is invalid or still in use." msgstr "Неможливо скористатися пристроєм %s, некоректна назва або пристрій усе ще використовується." -#: lib/setup.c:5299 +#: lib/setup.c:5310 msgid "Reencryption volume keys do not match the volume." msgstr "Ключі повторного шифрування тому не відповідають тому." -#: lib/setup.c:5316 +#: lib/setup.c:5327 msgid "Incorrect volume key specified for plain device." msgstr "Для пристрою зі звичайним шифруванням вказано помилковий ключ тому." -#: lib/setup.c:5342 lib/setup.c:5403 +#: lib/setup.c:5353 lib/setup.c:5414 msgid "Device type is not properly initialized." msgstr "Тип пристрою не ініціалізовано належним чином." -#: lib/setup.c:5441 +#: lib/setup.c:5452 msgid "Kernel keyring is not supported by the kernel." msgstr "У ядрі не передбачено підтримки сховища ключів ядра." -#: lib/setup.c:5445 +#: lib/setup.c:5456 msgid "Kernel keyring missing: required for passing signature to kernel." msgstr "Немає сховища ключів ядра: це сховище потрібне для передавання підпису ядру." -#: lib/setup.c:5500 +#: lib/setup.c:5511 #, c-format msgid "Cannot use keyring key %s." msgstr "Не можна використовувати ключ сховища ключів %s." -#: lib/setup.c:5713 +#: lib/setup.c:5724 msgid "Incorrect root hash specified for verity device." msgstr "Для пристрою перевірки вказано помилковий кореневий хеш." -#: lib/setup.c:5754 lib/setup.c:5779 +#: lib/setup.c:5765 lib/setup.c:5790 msgid "OPAL does not support deferred deactivation." msgstr "В OPAL не передбачено підтримки відкладеної деактивації." -#: lib/setup.c:5769 lib/setup.c:5800 lib/luks2/luks2_json_metadata.c:2953 +#: lib/setup.c:5780 lib/setup.c:5811 lib/luks2/luks2_json_metadata.c:2953 #: src/utils_reencrypt.c:89 #, c-format msgid "Device %s is still in use." msgstr "Пристрій %s все ще використовується." -#: lib/setup.c:5787 +#: lib/setup.c:5798 #, c-format msgid "Could not cancel deferred remove from device %s." msgstr "Не вдалося скасувати відкладене вилучення з пристрою %s." -#: lib/setup.c:5809 +#: lib/setup.c:5820 #, c-format msgid "Invalid device %s." msgstr "Некоректний пристрій %s." -#: lib/setup.c:5956 +#: lib/setup.c:5967 msgid "Volume key buffer too small." msgstr "Буфер ключів тому є занадто малим." -#: lib/setup.c:5967 +#: lib/setup.c:5978 msgid "Cannot retrieve volume key for LUKS2 device." msgstr "Неможливо отримати ключ тому для пристрою із шифруванням LUKS2." -#: lib/setup.c:5976 +#: lib/setup.c:5987 msgid "Cannot retrieve volume key for LUKS1 device." msgstr "Неможливо отримати ключ тому для пристрою із шифруванням LUKS1." -#: lib/setup.c:5990 +#: lib/setup.c:6001 msgid "Cannot retrieve volume key for plain device." msgstr "Неможливо отримати ключ тому для пристрою зі звичайним шифруванням." -#: lib/setup.c:5998 +#: lib/setup.c:6009 msgid "Cannot retrieve root hash for verity device." msgstr "Не вдалося отримати кореневий хеш для пристрою VERITY." -#: lib/setup.c:6007 +#: lib/setup.c:6018 msgid "Cannot retrieve volume key for BITLK device." msgstr "Неможливо отримати ключ тому для пристрою BITLK." -#: lib/setup.c:6012 +#: lib/setup.c:6023 msgid "Cannot retrieve volume key for FVAULT2 device." msgstr "Неможливо отримати ключ тому для пристрою FVAULT2." -#: lib/setup.c:6014 +#: lib/setup.c:6025 #, c-format msgid "This operation is not supported for %s crypt device." msgstr "Підтримки цієї дії для шифрованого пристрою %s не передбачено." -#: lib/setup.c:6199 lib/setup.c:6210 +#: lib/setup.c:6210 lib/setup.c:6221 msgid "Dump operation is not supported for this device type." msgstr "Підтримки дії зі створення дампу для цього типу пристроїв не передбачено." -#: lib/setup.c:6590 +#: lib/setup.c:6601 #, c-format msgid "Data offset is not multiple of %u bytes." msgstr "Зсув у даних не є кратним до %u байтів." -#: lib/setup.c:6898 +#: lib/setup.c:6909 #, c-format msgid "Cannot convert device %s which is still in use." msgstr "Не можна перетворити пристрій %s, який перебуває у користуванні." -#: lib/setup.c:7206 lib/setup.c:7350 +#: lib/setup.c:7217 lib/setup.c:7361 #, c-format msgid "Failed to assign keyslot %u as the new volume key." msgstr "Не вдалося прив'язати слот ключа %u як новий ключ тому." -#: lib/setup.c:7230 +#: lib/setup.c:7241 msgid "Failed to initialize default LUKS2 keyslot parameters." msgstr "Не вдалося ініціалізувати типові параметри слоту ключів LUKS2." -#: lib/setup.c:7236 +#: lib/setup.c:7247 #, c-format msgid "Failed to assign keyslot %d to digest." msgstr "Не вдалося прив'язати слот ключа %d до контрольної суми." -#: lib/setup.c:7467 +#: lib/setup.c:7478 msgid "Cannot add key slot, all slots disabled and no volume key provided." msgstr "Не вдалося додати слот ключа, всі слоти вимкнено і не вказано ключа тому." -#: lib/setup.c:7540 lib/verity/verity.c:333 +#: lib/setup.c:7551 lib/verity/verity.c:333 msgid "Failed to load key in kernel keyring." msgstr "Не вдалося завантажити ключ до сховища ключів ядра." -#: lib/setup.c:7731 +#: lib/setup.c:7742 #, c-format msgid "Could not find keyring described by \"%s\"." msgstr "Не вдалося знайти сховище ключів, яке описано «%s»." -#: lib/setup.c:7796 +#: lib/setup.c:7807 msgid "Failed to acquire global memory-hard access serialization lock." msgstr "Не вдалося створити загальне блокування серіалізації доступу до пам'яті." @@ -802,40 +802,45 @@ msgstr "Пристрій %s є сумісним." msgid "Ignoring bogus optimal-io size for data device (%u bytes)." msgstr "Ігноруємо фіктивний розмір optimal-io для пристрою даних (%u байтів)." -#: lib/utils_device.c:707 +#: lib/utils_device.c:711 +#, c-format +msgid "Cannot grow %s to % bytes (%s)." +msgstr "Не можна наростити %s до % байтів (%s)." + +#: lib/utils_device.c:717 #, c-format msgid "Device %s is too small. Need at least % bytes." msgstr "Обсяг пристрою %s є надто малим. Потрібно принаймні % байтів." -#: lib/utils_device.c:788 +#: lib/utils_device.c:798 #, c-format msgid "Cannot use device %s which is in use (already mapped or mounted)." msgstr "Не можна використовувати пристрій %s, оскільки його вже використано (призначено або змонтовано)." -#: lib/utils_device.c:792 +#: lib/utils_device.c:802 #, c-format msgid "Cannot use device %s, permission denied." msgstr "Не можна скористатися пристроєм %s, недостатні права доступу." -#: lib/utils_device.c:795 +#: lib/utils_device.c:805 #, c-format msgid "Cannot get info about device %s." msgstr "Не вдалося отримати дані щодо пристрою %s." -#: lib/utils_device.c:818 +#: lib/utils_device.c:828 msgid "Cannot use a loopback device, running as non-root user." msgstr "Не можна використовувати петльовий пристрій, програму запущено не від імені адміністративного користувача (root)." -#: lib/utils_device.c:829 +#: lib/utils_device.c:839 msgid "Attaching loopback device failed (loop device with autoclear flag is required)." msgstr "Спроба долучення петльового пристрою зазнала невдачі (потрібен петльовий пристрій з встановленим прапорцем автоматичного спорожнення)." -#: lib/utils_device.c:877 +#: lib/utils_device.c:887 #, c-format msgid "Requested offset is beyond real size of device %s." msgstr "Бажана точка відступу перебуває за межами об’єму пристрою %s." -#: lib/utils_device.c:885 +#: lib/utils_device.c:895 #, c-format msgid "Device %s has zero size." msgstr "Об’єм пристрою %s є нульовим." @@ -978,9 +983,9 @@ msgstr "Помилка введення-виведення під час шиф #: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:356 #: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:668 -#: lib/fvault2/fvault2.c:870 lib/verity/verity.c:67 lib/verity/verity.c:183 +#: lib/fvault2/fvault2.c:872 lib/verity/verity.c:67 lib/verity/verity.c:183 #: lib/verity/verity_hash.c:312 lib/verity/verity_hash.c:321 -#: lib/verity/verity_hash.c:341 lib/verity/verity_fec.c:247 +#: lib/verity/verity_hash.c:350 lib/verity/verity_fec.c:247 #: lib/verity/verity_fec.c:259 lib/verity/verity_fec.c:264 #: lib/luks2/luks2_json_metadata.c:1521 src/utils_reencrypt_luks1.c:108 #: src/utils_reencrypt_luks1.c:120 @@ -1125,7 +1130,7 @@ msgstr "Режим шифрування LUKS %s є некоректним." msgid "LUKS hash %s is invalid." msgstr "Хеш-сума LUKS %s є некоректною." -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1369 +#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 msgid "No known problems detected for LUKS header." msgstr "У заголовку LUKS не виявлено жодних проблем." @@ -1218,11 +1223,11 @@ msgstr "Перевищено максимальну можливу довжин msgid "PBKDF2 hash algorithm %s not available, skipping." msgstr "Засіб створення хешів PBKDF2 за алгоритмом %s недоступний, пропускаємо." -#: lib/tcrypt/tcrypt.c:608 src/cryptsetup.c:1242 +#: lib/tcrypt/tcrypt.c:608 src/cryptsetup.c:1240 msgid "Required kernel crypto interface not available." msgstr "Потрібний для роботи інтерфейс ядра для шифрування недоступний." -#: lib/tcrypt/tcrypt.c:610 src/cryptsetup.c:1244 +#: lib/tcrypt/tcrypt.c:610 src/cryptsetup.c:1242 msgid "Ensure you have algif_skcipher kernel module loaded." msgstr "Переконайтеся, що завантажено модуль ядра algif_skcipher." @@ -1293,11 +1298,6 @@ msgstr "Непідтримуваний розмір сектора %." msgid "Failed to read BITLK header from %s." msgstr "Не вдалося прочитати заголовок BITLK з %s." -#: lib/bitlk/bitlk.c:593 -#, c-format -msgid "Failed to read or validate BITLK FVE metadata copy #%d from %s." -msgstr "Не вдалося прочитати або перевірити копію метаданих FVE BITLK %d з %s." - #: lib/bitlk/bitlk.c:603 #, c-format msgid "Failed to read and validate BITLK FVE metadata from %s." @@ -1373,42 +1373,42 @@ msgstr "Підтримки цієї дії не передбачено." msgid "Unexpected key data size." msgstr "Неочікуваний розмір даних ключа." -#: lib/bitlk/bitlk.c:1431 +#: lib/bitlk/bitlk.c:1442 msgid "This BITLK device is in an unsupported state and cannot be activated." msgstr "Цей пристрій BITLK перебуває у непідтримуваному стані — його неможливо активувати." -#: lib/bitlk/bitlk.c:1436 +#: lib/bitlk/bitlk.c:1447 #, c-format msgid "BITLK devices with type '%s' cannot be activated." msgstr "Пристрої BITLK типу «%s» неможливо активувати." -#: lib/bitlk/bitlk.c:1475 +#: lib/bitlk/bitlk.c:1486 #, c-format msgid "WARNING: BitLocker volume size % does not match the underlying device size %" msgstr "УВАГА: розмір тому BitLocker % не відповідає розміру базового пристрою %" -#: lib/bitlk/bitlk.c:1602 +#: lib/bitlk/bitlk.c:1613 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK IV." msgstr "Не вдалося активувати пристрій — у dm-crypt ядра немає підтримки BITLK IV." -#: lib/bitlk/bitlk.c:1606 +#: lib/bitlk/bitlk.c:1617 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK Elephant diffuser." msgstr "Не вдалося активувати пристрій — у dm-crypt ядра немає підтримки дифузера Elephant BITLK." -#: lib/bitlk/bitlk.c:1610 +#: lib/bitlk/bitlk.c:1621 msgid "Cannot activate device, kernel dm-crypt is missing support for large sector size." msgstr "Не вдалося активувати пристрій — у dm-crypt ядра немає підтримки великого розміру секторів." -#: lib/bitlk/bitlk.c:1614 +#: lib/bitlk/bitlk.c:1625 msgid "Cannot activate device, kernel dm-zero module is missing." msgstr "Не вдалося активувати пристрій — немає модуля ядра dm-zero." -#: lib/fvault2/fvault2.c:530 +#: lib/fvault2/fvault2.c:532 #, c-format msgid "Could not read %u bytes of volume header." msgstr "Не вдалося прочитати %u байтів заголовка тому." -#: lib/fvault2/fvault2.c:542 +#: lib/fvault2/fvault2.c:544 #, c-format msgid "Unsupported FVAULT2 version %." msgstr "Непідтримувана версія FVAULT2 %." @@ -1485,23 +1485,23 @@ msgstr "Помилка під час перевірки за позицією %< msgid "Hash area overflow." msgstr "Переповнення області хешу." -#: lib/verity/verity_hash.c:372 +#: lib/verity/verity_hash.c:381 msgid "Verification of data area failed." msgstr "Не вдалося перевірити область даних." -#: lib/verity/verity_hash.c:377 +#: lib/verity/verity_hash.c:386 msgid "Verification of root hash failed." msgstr "Не вдалося перевірити кореневий хеш." -#: lib/verity/verity_hash.c:383 +#: lib/verity/verity_hash.c:392 msgid "Input/output error while creating hash area." msgstr "Під час створення області хешу сталася помилка введення або виведення даних." -#: lib/verity/verity_hash.c:385 +#: lib/verity/verity_hash.c:394 msgid "Creation of hash area failed." msgstr "Не вдалося створити область хешу." -#: lib/verity/verity_hash.c:420 +#: lib/verity/verity_hash.c:429 #, c-format msgid "WARNING: Kernel cannot activate device if data block size exceeds page size (%u)." msgstr "Попередження: ядро не зможе задіяти пристрій, якщо розмір блоку перевищуватиме розмір сторінки (%u)." @@ -1556,19 +1556,19 @@ msgstr "Не вдалося визначити розмір для пристр msgid "Incompatible kernel dm-integrity metadata (version %u) detected on %s." msgstr "Виявлено несумісні метадані dm-integrity ядра (версія %u) у %s." -#: lib/integrity/integrity.c:304 lib/integrity/integrity.c:488 +#: lib/integrity/integrity.c:308 lib/integrity/integrity.c:492 msgid "Kernel does not support dm-integrity mapping." msgstr "У ядрі не передбачено підтримки прив'язки dm-integrity." -#: lib/integrity/integrity.c:310 +#: lib/integrity/integrity.c:314 msgid "Kernel does not support dm-integrity fixed metadata alignment." msgstr "У ядрі не передбачено підтримки вирівнювання фіксованих метаданих dm-integrity." -#: lib/integrity/integrity.c:319 +#: lib/integrity/integrity.c:323 msgid "Kernel refuses to activate insecure recalculate option (see legacy activation options to override)." msgstr "Ядром відмовлено у активації небезпечного параметра повторного обчислення (див. застарілі параметри активації, щоб скористатися обчисленням попри це)." -#: lib/integrity/integrity.c:325 +#: lib/integrity/integrity.c:329 msgid "Kernel does not support dm-integrity inline mode." msgstr "У ядрі не передбачено підтримки вбудованого режиму dm-integrity." @@ -1717,7 +1717,7 @@ msgstr "Базовий пристрій dm-integrity із неочікувани msgid "Reencryption in-progress. Cannot deactivate device." msgstr "Виконуємо повторне шифрування. Не можна деактивувати пристрій." -#: lib/luks2/luks2_json_metadata.c:2897 lib/luks2/luks2_reencrypt.c:4283 +#: lib/luks2/luks2_json_metadata.c:2897 lib/luks2/luks2_reencrypt.c:4286 #, c-format msgid "Failed to replace suspended device %s with dm-error target." msgstr "Не вдалося замінити пристрій %s, роботу якого призупинено, ціллю dm-error." @@ -1796,7 +1796,7 @@ msgstr "Не вдалося перевірити стан пристрою з uu msgid "Unable to convert header with LUKSMETA additional metadata." msgstr "Не вдалося перетворити заголовок з додатковими метаданими LUKSMETA." -#: lib/luks2/luks2_luks1_convert.c:590 lib/luks2/luks2_reencrypt.c:3890 +#: lib/luks2/luks2_luks1_convert.c:590 lib/luks2/luks2_reencrypt.c:3893 #, c-format msgid "Unable to use cipher specification %s-%s for LUKS2." msgstr "Не вдалося використати специфікацію шифрування %s-%s для LUKS2." @@ -1880,7 +1880,7 @@ msgstr "Розмір пристрою має бути кратним до обч #: lib/luks2/luks2_reencrypt.c:1410 lib/luks2/luks2_reencrypt.c:1596 #: lib/luks2/luks2_reencrypt.c:1679 lib/luks2/luks2_reencrypt.c:1721 -#: lib/luks2/luks2_reencrypt.c:4077 +#: lib/luks2/luks2_reencrypt.c:4080 msgid "Failed to initialize old segment storage wrapper." msgstr "Не вдалося ініціалізувати обгортку старого сховища сегментів." @@ -1888,7 +1888,7 @@ msgstr "Не вдалося ініціалізувати обгортку ста msgid "Failed to initialize new segment storage wrapper." msgstr "Не вдалося ініціалізувати обгортку нового сховища сегментів." -#: lib/luks2/luks2_reencrypt.c:1550 lib/luks2/luks2_reencrypt.c:4089 +#: lib/luks2/luks2_reencrypt.c:1550 lib/luks2/luks2_reencrypt.c:4092 msgid "Failed to initialize hotzone protection." msgstr "Не вдалося ініціалізувати захист «гарячої» зони" @@ -1896,7 +1896,7 @@ msgstr "Не вдалося ініціалізувати захист «гаря msgid "Failed to read checksums for current hotzone." msgstr "Не вдалося прочитати контрольні суми для поточної «гарячої» ділянки." -#: lib/luks2/luks2_reencrypt.c:1630 lib/luks2/luks2_reencrypt.c:4104 +#: lib/luks2/luks2_reencrypt.c:1630 lib/luks2/luks2_reencrypt.c:4107 #, c-format msgid "Failed to read hotzone area starting at %." msgstr "Не вдалося прочитати «гарячу» ділянку, починаючи з %." @@ -1985,8 +1985,8 @@ msgstr "Зменшений розмір даних перевищує справ msgid "Data device is not aligned to encryption sector size (% bytes)." msgstr "Пристрій зберігання даних не вирівняно до розміру сектора для шифрування (% байтів)." -#: lib/luks2/luks2_reencrypt.c:3125 lib/luks2/luks2_reencrypt.c:3640 -#: lib/luks2/luks2_reencrypt.c:3661 +#: lib/luks2/luks2_reencrypt.c:3125 lib/luks2/luks2_reencrypt.c:3643 +#: lib/luks2/luks2_reencrypt.c:3664 #, c-format msgid "Failed to open %s in exclusive mode (already mapped or mounted)." msgstr "Не вдалося відкрити %s в ексклюзивному режимі (вже пов'язано або змонтовано)." @@ -1995,123 +1995,123 @@ msgstr "Не вдалося відкрити %s в ексклюзивному р msgid "Device not marked for LUKS2 reencryption." msgstr "Пристрій не позначено для повторного шифрування LUKS2." -#: lib/luks2/luks2_reencrypt.c:3349 lib/luks2/luks2_reencrypt.c:4400 +#: lib/luks2/luks2_reencrypt.c:3349 lib/luks2/luks2_reencrypt.c:4403 msgid "Failed to load LUKS2 reencryption context." msgstr "Не вдалося завантажити контекст повторного шифрування LUKS2." -#: lib/luks2/luks2_reencrypt.c:3441 lib/luks2/luks2_reencrypt.c:3781 +#: lib/luks2/luks2_reencrypt.c:3444 lib/luks2/luks2_reencrypt.c:3784 msgid "Device is not in reencryption." msgstr "Пристрій не перебуває у повторному шифруванні." -#: lib/luks2/luks2_reencrypt.c:3448 lib/luks2/luks2_reencrypt.c:3788 +#: lib/luks2/luks2_reencrypt.c:3451 lib/luks2/luks2_reencrypt.c:3791 msgid "Reencryption process is already running." msgstr "Процес повторного шифрування вже виконується." -#: lib/luks2/luks2_reencrypt.c:3450 lib/luks2/luks2_reencrypt.c:3790 +#: lib/luks2/luks2_reencrypt.c:3453 lib/luks2/luks2_reencrypt.c:3793 msgid "Failed to acquire reencryption lock." msgstr "Не вдалося створити блокування для повторного шифрування." -#: lib/luks2/luks2_reencrypt.c:3468 +#: lib/luks2/luks2_reencrypt.c:3471 msgid "Cannot proceed with reencryption. Run reencryption recovery first." msgstr "Продовження повторного шифрування неможливе. Спочатку слід виконати відновлення повторного шифрування." -#: lib/luks2/luks2_reencrypt.c:3604 +#: lib/luks2/luks2_reencrypt.c:3607 msgid "Active device size and requested reencryption size don't match." msgstr "Не збігаються розмір активного пристрою і запитаний розмір повторного шифрування." -#: lib/luks2/luks2_reencrypt.c:3618 +#: lib/luks2/luks2_reencrypt.c:3621 msgid "Illegal device size requested in reencryption parameters." msgstr "У параметрах повторного шифрування вказано некоректний розмір пристрою." -#: lib/luks2/luks2_reencrypt.c:3720 +#: lib/luks2/luks2_reencrypt.c:3723 msgid "Reencryption in-progress. Cannot perform recovery." msgstr "Виконується повторне шифрування. Неможливо виконати відновлення." -#: lib/luks2/luks2_reencrypt.c:3741 +#: lib/luks2/luks2_reencrypt.c:3744 msgid "LUKS2 reencryption recovery failed." msgstr "Не вдалося виконати відновлення даних повторного шифрування LUKS2." -#: lib/luks2/luks2_reencrypt.c:3874 lib/luks2/luks2_reencrypt.c:4353 +#: lib/luks2/luks2_reencrypt.c:3877 lib/luks2/luks2_reencrypt.c:4356 msgid "Failed to initialize reencryption device stack." msgstr "Не вдалося ініціалізувати стос пристроїв повторного шифрування." -#: lib/luks2/luks2_reencrypt.c:3907 +#: lib/luks2/luks2_reencrypt.c:3910 msgid "LUKS2 reencryption already initialized in metadata." msgstr "Повторне шифрування LUKS2 вже ініційовано у метаданих." -#: lib/luks2/luks2_reencrypt.c:3915 +#: lib/luks2/luks2_reencrypt.c:3918 msgid "Failed to initialize LUKS2 reencryption in metadata." msgstr "Не вдалося ініціалізувати повторне шифрування LUKS2 лише у метаданих." -#: lib/luks2/luks2_reencrypt.c:3968 lib/luks2/luks2_reencrypt.c:4000 -#: lib/luks2/luks2_reencrypt.c:4030 +#: lib/luks2/luks2_reencrypt.c:3971 lib/luks2/luks2_reencrypt.c:4003 +#: lib/luks2/luks2_reencrypt.c:4033 msgid "Reencryption is not supported for DAX (persistent memory) devices." msgstr "Для пристроїв DAX (сталої пам'яті) не передбачено підтримки повторного шифрування." -#: lib/luks2/luks2_reencrypt.c:4059 +#: lib/luks2/luks2_reencrypt.c:4062 msgid "Failed to set device segments for next reencryption hotzone." msgstr "Не вдалося встановити сегменти пристрою для наступної «гарячої» ділянки повторного шифрування." -#: lib/luks2/luks2_reencrypt.c:4112 +#: lib/luks2/luks2_reencrypt.c:4115 msgid "Failed to write reencryption resilience metadata." msgstr "Не вдалося записати метадані стійкості для повторного шифрування." -#: lib/luks2/luks2_reencrypt.c:4119 +#: lib/luks2/luks2_reencrypt.c:4122 msgid "Decryption failed." msgstr "Помилка розшифрування." -#: lib/luks2/luks2_reencrypt.c:4124 +#: lib/luks2/luks2_reencrypt.c:4127 #, c-format msgid "Failed to write hotzone area starting at %." msgstr "Не вдалося записати «гарячу» ділянку, починаючи з %." -#: lib/luks2/luks2_reencrypt.c:4129 +#: lib/luks2/luks2_reencrypt.c:4132 msgid "Failed to sync data." msgstr "Не вдалося синхронізувати дані." -#: lib/luks2/luks2_reencrypt.c:4137 +#: lib/luks2/luks2_reencrypt.c:4140 msgid "Failed to update metadata after current reencryption hotzone completed." msgstr "Не вдалося оновити метадані після завершення обробки поточної «гарячої» зони повторного шифрування." -#: lib/luks2/luks2_reencrypt.c:4226 +#: lib/luks2/luks2_reencrypt.c:4229 msgid "Failed to write LUKS2 metadata." msgstr "Не вдалося записати метадані LUKS2." -#: lib/luks2/luks2_reencrypt.c:4249 +#: lib/luks2/luks2_reencrypt.c:4252 msgid "Failed to wipe unused data device area." msgstr "Не вдалося витерти область невикористаних даних пристрою." -#: lib/luks2/luks2_reencrypt.c:4255 +#: lib/luks2/luks2_reencrypt.c:4258 #, c-format msgid "Failed to remove unused (unbound) keyslot %d." msgstr "Не вдалося вилучити невикористаний (непов'язаний) слот ключа %d." -#: lib/luks2/luks2_reencrypt.c:4265 +#: lib/luks2/luks2_reencrypt.c:4268 msgid "Failed to remove reencryption keyslot." msgstr "Не вдалося вилучити слот ключа для повторного шифрування." -#: lib/luks2/luks2_reencrypt.c:4275 +#: lib/luks2/luks2_reencrypt.c:4278 #, c-format msgid "Fatal error while reencrypting chunk starting at %, % sectors long." msgstr "Критична помилка під час повторного шифрування фрагмента, починаючи з %, довжиною у % секторів." -#: lib/luks2/luks2_reencrypt.c:4279 +#: lib/luks2/luks2_reencrypt.c:4282 msgid "Online reencryption failed." msgstr "Не вдалося виконати інтерактивне повторне шифрування." -#: lib/luks2/luks2_reencrypt.c:4284 +#: lib/luks2/luks2_reencrypt.c:4287 msgid "Do not resume the device unless replaced with error target manually." msgstr "Не відновлюйте пристрій, якщо не заміните вручну пристрій призначення для помилок." -#: lib/luks2/luks2_reencrypt.c:4336 +#: lib/luks2/luks2_reencrypt.c:4339 msgid "Cannot proceed with reencryption. Unexpected reencryption status." msgstr "Не вдалося виконати повторне шифрування. Неочікуваний стан засобу повторного шифрування." -#: lib/luks2/luks2_reencrypt.c:4342 +#: lib/luks2/luks2_reencrypt.c:4345 msgid "Missing or invalid reencrypt context." msgstr "Не вказано контекст повторного шифрування або вказано некоректний контекст." -#: lib/luks2/luks2_reencrypt.c:4376 lib/luks2/luks2_reencrypt.c:4413 +#: lib/luks2/luks2_reencrypt.c:4379 lib/luks2/luks2_reencrypt.c:4416 msgid "Failed to update reencryption context." msgstr "Не вдалося оновити контекст повторного шифрування." @@ -2147,7 +2147,7 @@ msgstr "Параметри шифрування слоту ключів можн msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encryption." msgstr "Параметри шифрування слоту ключів є несумісними із шифруванням слотів ключів LUKS2." -#: src/cryptsetup.c:150 src/cryptsetup.c:1180 src/cryptsetup.c:1547 +#: src/cryptsetup.c:150 src/cryptsetup.c:1178 src/cryptsetup.c:1545 #: src/utils_reencrypt.c:1887 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." @@ -2175,7 +2175,7 @@ msgstr "Попередження: параметр --hash у простому р msgid "WARNING: The --keyfile-size option is being ignored, the read size is the same as the encryption key size.\n" msgstr "Попередження: параметр --keyfile-size проігноровано, розмір прочитаних даних збігається із розміром ключа шифрування.\n" -#: src/cryptsetup.c:226 src/cryptsetup.c:1377 src/cryptsetup.c:1600 +#: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 #: src/integritysetup.c:188 src/utils_reencrypt.c:2138 #, c-format msgid "Blkid scan failed for %s." @@ -2186,9 +2186,9 @@ msgstr "Помилка сканування Blkid для %s." msgid "Detected device signature(s) on %s. Proceeding further may damage existing data." msgstr "На %s виявлено підписи пристроїв. Подальша обробка може пошкодити наявні дані." -#: src/cryptsetup.c:238 src/cryptsetup.c:1263 src/cryptsetup.c:1311 -#: src/cryptsetup.c:1384 src/cryptsetup.c:1524 src/cryptsetup.c:1612 -#: src/cryptsetup.c:2497 src/cryptsetup.c:2926 src/integritysetup.c:178 +#: src/cryptsetup.c:238 src/cryptsetup.c:1261 src/cryptsetup.c:1309 +#: src/cryptsetup.c:1382 src/cryptsetup.c:1522 src/cryptsetup.c:1610 +#: src/cryptsetup.c:2495 src/cryptsetup.c:2924 src/integritysetup.c:178 #: src/utils_reencrypt.c:111 src/utils_reencrypt.c:457 #: src/utils_reencrypt.c:925 msgid "Operation aborted.\n" @@ -2238,7 +2238,7 @@ msgstr "" "без пароля. Цей дамп слід зберігати у зашифрованому форматі\n" "у безпечному місці." -#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2522 +#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2520 msgid "" "The header dump with volume key is sensitive information\n" "that allows access to encrypted partition without a passphrase.\n" @@ -2258,14 +2258,14 @@ msgstr "Пристрій %s не є коректним пристроєм FVAULT msgid "Cannot determine volume key size for FVAULT2, please use --key-size option." msgstr "Неможливо визначити розмір ключа тому для FVAULT2. Будь ласка, скористайтеся параметром --key-size." -#: src/cryptsetup.c:848 src/veritysetup.c:317 src/integritysetup.c:410 +#: src/cryptsetup.c:848 src/veritysetup.c:317 src/integritysetup.c:416 #, c-format msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "Пристрій %s усе ще є активним, його заплановано для відкладеного вилучення.\n" -#: src/cryptsetup.c:881 src/cryptsetup.c:1810 src/cryptsetup.c:2084 -#: src/cryptsetup.c:2231 src/cryptsetup.c:2650 src/cryptsetup.c:2731 -#: src/cryptsetup.c:3264 +#: src/cryptsetup.c:881 src/cryptsetup.c:1808 src/cryptsetup.c:2082 +#: src/cryptsetup.c:2229 src/cryptsetup.c:2648 src/cryptsetup.c:2729 +#: src/cryptsetup.c:3262 #, c-format msgid "Failed to set external tokens path %s." msgstr "Не вдалося встановити шлях до зовнішніх жетонів %s." @@ -2274,59 +2274,59 @@ msgstr "Не вдалося встановити шлях до зовнішні msgid "Resize of active device requires volume key in keyring but --disable-keyring option is set." msgstr "Зміна розмірів активного пристрою потребує наявності ключа тому у сховищі ключів, але вказано параметр --disable-keyring." -#: src/cryptsetup.c:1059 +#: src/cryptsetup.c:1057 msgid "Benchmark interrupted." msgstr "Тестування перервано." -#: src/cryptsetup.c:1080 +#: src/cryptsetup.c:1078 #, c-format msgid "PBKDF2-%-9s N/A\n" msgstr "PBKDF2-%-9s н/д\n" -#: src/cryptsetup.c:1082 +#: src/cryptsetup.c:1080 #, c-format msgid "PBKDF2-%-9s %7u iterations per second for %zu-bit key\n" msgstr "PBKDF2-%-9s %7u ітерацій за секунду для %zu-бітового ключа\n" -#: src/cryptsetup.c:1096 +#: src/cryptsetup.c:1094 #, c-format msgid "%-10s N/A\n" msgstr "%-10s н/д\n" -#: src/cryptsetup.c:1098 +#: src/cryptsetup.c:1096 #, c-format msgid "%-10s %4u iterations, %5u memory, %1u parallel threads (CPUs) for %zu-bit key (requested %u ms time)\n" msgstr "%-10s %4u ітерацій, пам'ять: %5u, %1u паралельних потоків (процесорів) для %zu-бітового ключа (запит на %u мс часу)\n" -#: src/cryptsetup.c:1122 +#: src/cryptsetup.c:1120 msgid "Result of benchmark is not reliable." msgstr "Результат тестування є ненадійним." -#: src/cryptsetup.c:1172 +#: src/cryptsetup.c:1170 msgid "# Tests are approximate using memory only (no storage IO).\n" msgstr "# Наближені значення під час перевірки визначаються лише за допомогою оперативної пам’яті (без запису на диск).\n" #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1197 +#: src/cryptsetup.c:1195 #, c-format msgid "#%*s Algorithm | Key | Encryption | Decryption\n" msgstr "№%*s Алгоритм | Ключ | Шифрування | Розшифрування\n" -#: src/cryptsetup.c:1205 +#: src/cryptsetup.c:1203 #, c-format msgid "Cipher %s (with %i bits key) is not available." msgstr "Шифрування %s (розмір ключа — %i бітів) є недоступним." #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1224 +#: src/cryptsetup.c:1222 msgid "# Algorithm | Key | Encryption | Decryption\n" msgstr "№ Алгоритм | Ключ | Шифрування | Розшифрування\n" -#: src/cryptsetup.c:1235 +#: src/cryptsetup.c:1233 msgid "N/A" msgstr "н/д" -#: src/cryptsetup.c:1260 +#: src/cryptsetup.c:1258 msgid "" "Unprotected LUKS2 reencryption metadata detected. Please verify the reencryption operation is desirable (see luksDump output)\n" "and continue (upgrade metadata) only if you acknowledge the operation as genuine." @@ -2334,27 +2334,27 @@ msgstr "" "Виявлено незахищені метадані повторного шифрування LUKS2. Будь ласка, перевірте, чи бажаною є дія з повторного шифрування\n" "(див. виведення luksDump), і продовжуйте (оновлення метаданих), лише якщо впевнені, що дія є бажаною." -#: src/cryptsetup.c:1266 +#: src/cryptsetup.c:1264 msgid "Enter passphrase to protect and upgrade reencryption metadata: " msgstr "Вкажіть пароль для захисту і оновлення метаданих повторного шифрування: " -#: src/cryptsetup.c:1310 +#: src/cryptsetup.c:1308 msgid "Really proceed with LUKS2 reencryption recovery?" msgstr "Ви справді хочете продовжити процедуру відновлення повторного шифрування LUKS2?" -#: src/cryptsetup.c:1319 +#: src/cryptsetup.c:1317 msgid "Enter passphrase to verify reencryption metadata digest: " msgstr "Вкажіть пароль для перевірки контрольної суми метаданих повторного шифрування: " -#: src/cryptsetup.c:1321 +#: src/cryptsetup.c:1319 msgid "Enter passphrase for reencryption recovery: " msgstr "Вкажіть пароль для відновлення повторного шифрування: " -#: src/cryptsetup.c:1383 +#: src/cryptsetup.c:1381 msgid "Really try to repair LUKS device header?" msgstr "Спробувати відновити заголовок пристрою LUKS?" -#: src/cryptsetup.c:1411 src/integritysetup.c:76 src/integritysetup.c:244 +#: src/cryptsetup.c:1409 src/integritysetup.c:76 src/integritysetup.c:244 msgid "" "\n" "Wipe interrupted." @@ -2362,7 +2362,7 @@ msgstr "" "\n" "Витирання перервано." -#: src/cryptsetup.c:1416 src/integritysetup.c:81 src/integritysetup.c:283 +#: src/cryptsetup.c:1414 src/integritysetup.c:81 src/integritysetup.c:289 msgid "" "Wiping device to initialize integrity checksum.\n" "You can interrupt this by pressing CTRL+c (rest of not wiped device will contain invalid checksum).\n" @@ -2370,167 +2370,167 @@ msgstr "" "Витираємо пристрій для ініціалізації контрольних сум для цілісності.\n" "Ви можете перервати цей процес натисканням комбінації клавіш CTRL+C (решта невитертого пристрою міститиме некоректну контрольну суму).\n" -#: src/cryptsetup.c:1438 src/integritysetup.c:103 +#: src/cryptsetup.c:1436 src/integritysetup.c:103 #, c-format msgid "Cannot deactivate temporary device %s." msgstr "Не можна скасувати активацію тимчасового пристрою %s." -#: src/cryptsetup.c:1486 +#: src/cryptsetup.c:1484 msgid "OPAL hw-only encryption does not support --cipher and --key-size, options ignored." msgstr "У апаратному шифрування OPAL не передбачено підтримки параметрів --cipher і --key-size, параметри проігноровано." -#: src/cryptsetup.c:1499 +#: src/cryptsetup.c:1497 msgid "Integrity option can be used only for LUKS2 format." msgstr "Параметр цілісності може бути використано лише для формату LUKS2." -#: src/cryptsetup.c:1504 src/cryptsetup.c:1584 +#: src/cryptsetup.c:1502 src/cryptsetup.c:1582 msgid "Unsupported LUKS2 metadata size options." msgstr "Непідтримувані параметри розміру метаданих LUKS2." -#: src/cryptsetup.c:1509 +#: src/cryptsetup.c:1507 msgid "OPAL is supported only for LUKS2 format." msgstr "Підтримку OPAL передбачено лише для формату LUKS2." -#: src/cryptsetup.c:1514 +#: src/cryptsetup.c:1512 msgid "Inline hw tags are supported only for LUKS2 format." msgstr "Підтримку вбудованих апаратних міток передбачено лише для формату LUKS2." -#: src/cryptsetup.c:1523 +#: src/cryptsetup.c:1521 msgid "Header file does not exist, do you want to create it?" msgstr "Файла заголовка не існує. Хочете його створити?" -#: src/cryptsetup.c:1531 +#: src/cryptsetup.c:1529 #, c-format msgid "Cannot create header file %s." msgstr "Не вдалося створити файл заголовка %s." -#: src/cryptsetup.c:1557 src/integritysetup.c:126 src/integritysetup.c:141 -#: src/integritysetup.c:150 src/integritysetup.c:322 src/integritysetup.c:330 -#: src/integritysetup.c:340 +#: src/cryptsetup.c:1555 src/integritysetup.c:126 src/integritysetup.c:141 +#: src/integritysetup.c:150 src/integritysetup.c:328 src/integritysetup.c:336 +#: src/integritysetup.c:346 msgid "No known integrity specification pattern detected." msgstr "Не виявлено жодного відомого зразка специфікації цілісності." -#: src/cryptsetup.c:1559 +#: src/cryptsetup.c:1557 msgid "Cannot use specified integrity key size." msgstr "Не можна використовувати вказаний розмір ключа цілісності." -#: src/cryptsetup.c:1577 +#: src/cryptsetup.c:1575 #, c-format msgid "Cannot use %s as on-disk header." msgstr "Не можна використовувати %s як заголовок на диску." -#: src/cryptsetup.c:1606 src/integritysetup.c:172 +#: src/cryptsetup.c:1604 src/integritysetup.c:172 #, c-format msgid "This will overwrite data on %s irrevocably." msgstr "Дані на %s буде перезаписано без можливості відновлення." -#: src/cryptsetup.c:1643 +#: src/cryptsetup.c:1641 msgid "OPAL Admin password cannot be empty." msgstr "Пароль адміністратора OPAL не може бути порожнім." -#: src/cryptsetup.c:1657 src/cryptsetup.c:2101 src/cryptsetup.c:2244 -#: src/cryptsetup.c:2379 src/cryptsetup.c:2445 src/utils_reencrypt_luks1.c:428 +#: src/cryptsetup.c:1655 src/cryptsetup.c:2099 src/cryptsetup.c:2242 +#: src/cryptsetup.c:2377 src/cryptsetup.c:2443 src/utils_reencrypt_luks1.c:428 msgid "Failed to set pbkdf parameters." msgstr "Не вдалося встановити параметри pbkdf." -#: src/cryptsetup.c:1788 +#: src/cryptsetup.c:1786 msgid "Reduced data offset is allowed only for detached LUKS header." msgstr "Зменшений відступ даних можна використовувати лише для від’єднаних заголовків LUKS." -#: src/cryptsetup.c:1795 +#: src/cryptsetup.c:1793 #, c-format msgid "LUKS file container %s is too small for activation, there is no remaining space for data." msgstr "Контейнер файлів LUKS %s є надто малим для активації, на ньому не лишиться місця для даних." -#: src/cryptsetup.c:1837 src/cryptsetup.c:2250 src/utils_reencrypt.c:277 +#: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:277 #: src/utils_reencrypt.c:369 src/utils_reencrypt.c:1907 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "Неможливо визначити розмір ключа тому для LUKS без слотів ключів. Будь ласка, скористайтеся параметром --key-size." -#: src/cryptsetup.c:1856 src/utils_reencrypt.c:303 +#: src/cryptsetup.c:1854 src/utils_reencrypt.c:303 msgid "Device requires two volume keys." msgstr "Для пристрою потрібні два ключі тому." -#: src/cryptsetup.c:1891 +#: src/cryptsetup.c:1889 msgid "Some specified activation parameters were ignored with OPAL hw-only encryption." msgstr "Деякі із вказаних параметрів активації було проігноровано через апаратне шифрування OPAL." -#: src/cryptsetup.c:1896 +#: src/cryptsetup.c:1894 msgid "Device activated but cannot make flags persistent." msgstr "Пристрій задіяно, але не вдалося зробити прапорці сталими." -#: src/cryptsetup.c:1976 src/cryptsetup.c:2044 +#: src/cryptsetup.c:1974 src/cryptsetup.c:2042 #, c-format msgid "Keyslot %d is selected for deletion." msgstr "Слот ключа %d позначено для вилучення." -#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 +#: src/cryptsetup.c:1986 src/cryptsetup.c:2046 msgid "This is the last keyslot. Device will become unusable after purging this key." msgstr "Це останній слот ключа. Пристрій стане непридатним для використання після спорожнення цього ключа." -#: src/cryptsetup.c:1989 +#: src/cryptsetup.c:1987 msgid "Enter any remaining passphrase: " msgstr "Введіть будь-який інший пароль: " -#: src/cryptsetup.c:1990 src/cryptsetup.c:2050 +#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 msgid "Operation aborted, the keyslot was NOT wiped.\n" msgstr "Дію перервано, слот ключів НЕ витерто.\n" -#: src/cryptsetup.c:2026 +#: src/cryptsetup.c:2024 msgid "Enter passphrase to be deleted: " msgstr "Введіть пароль, який слід вилучити: " -#: src/cryptsetup.c:2076 src/cryptsetup.c:2428 src/cryptsetup.c:3088 -#: src/cryptsetup.c:3255 +#: src/cryptsetup.c:2074 src/cryptsetup.c:2426 src/cryptsetup.c:3086 +#: src/cryptsetup.c:3253 #, c-format msgid "Device %s is not a valid LUKS2 device." msgstr "Пристрій %s не є коректним пристроєм LUKS2." -#: src/cryptsetup.c:2115 src/cryptsetup.c:2314 +#: src/cryptsetup.c:2113 src/cryptsetup.c:2312 msgid "Enter new passphrase for key slot: " msgstr "Введіть новий пароль для слота ключа: " -#: src/cryptsetup.c:2149 src/utils_luks.c:342 +#: src/cryptsetup.c:2147 src/utils_luks.c:342 #, c-format msgid "Enter token PIN: " msgstr "Введіть пінкод жетона: " -#: src/cryptsetup.c:2151 src/utils_luks.c:344 +#: src/cryptsetup.c:2149 src/utils_luks.c:344 #, c-format msgid "Enter token %d PIN: " msgstr "Введіть пінкод жетона %d: " -#: src/cryptsetup.c:2210 +#: src/cryptsetup.c:2208 msgid "WARNING: The --key-slot parameter is used for new keyslot number.\n" msgstr "Попередження: параметр --key-slot використано для нового числа слоту ключа.\n" -#: src/cryptsetup.c:2287 src/utils_reencrypt_luks1.c:1094 +#: src/cryptsetup.c:2285 src/utils_reencrypt_luks1.c:1094 #, c-format msgid "Enter any existing passphrase: " msgstr "Введіть будь-який пароль: " -#: src/cryptsetup.c:2383 +#: src/cryptsetup.c:2381 msgid "Enter passphrase to be changed: " msgstr "Введіть пароль, який слід змінити: " -#: src/cryptsetup.c:2399 src/utils_reencrypt_luks1.c:1080 +#: src/cryptsetup.c:2397 src/utils_reencrypt_luks1.c:1080 msgid "Enter new passphrase: " msgstr "Введіть новий пароль: " -#: src/cryptsetup.c:2449 +#: src/cryptsetup.c:2447 msgid "Enter passphrase for keyslot to be converted: " msgstr "Вкажіть пароль для слоту ключа, який буде перетворено: " -#: src/cryptsetup.c:2473 +#: src/cryptsetup.c:2471 msgid "Only one device argument for isLuks operation is supported." msgstr "У команді isLuks можна використовувати лише один аргумент назви пристрою." -#: src/cryptsetup.c:2578 +#: src/cryptsetup.c:2576 #, c-format msgid "Keyslot %d does not contain unbound key." msgstr "Слот ключа %d не містить непов'язаного ключа." -#: src/cryptsetup.c:2583 +#: src/cryptsetup.c:2581 msgid "" "The header dump with unbound key is sensitive information.\n" "This dump should be stored encrypted in a safe place." @@ -2538,52 +2538,52 @@ msgstr "" "Дамп заголовка з непов'язаним ключем є конфіденційними даними.\n" "Цей дамп слід зберігати у зашифрованому форматі у безпечному місці." -#: src/cryptsetup.c:2678 src/cryptsetup.c:2714 +#: src/cryptsetup.c:2676 src/cryptsetup.c:2712 #, c-format msgid "%s is not active %s device name." msgstr "%s не є назвою активного пристрою %s." -#: src/cryptsetup.c:2709 +#: src/cryptsetup.c:2707 #, c-format msgid "%s is not active LUKS device name or header is missing." msgstr "%s не є назвою активного пристрою LUKS або пропущено заголовок." -#: src/cryptsetup.c:2786 src/cryptsetup.c:2805 +#: src/cryptsetup.c:2784 src/cryptsetup.c:2803 msgid "Option --header-backup-file is required." msgstr "Слід вказати параметр --header-backup-file." -#: src/cryptsetup.c:2836 +#: src/cryptsetup.c:2834 #, c-format msgid "%s is not cryptsetup managed device." msgstr "%s не є керованим cryptsetup пристроєм." -#: src/cryptsetup.c:2847 +#: src/cryptsetup.c:2845 #, c-format msgid "Refresh is not supported for device type %s" msgstr "Підтримки дії з оновлення для пристрою типу %s не передбачено." -#: src/cryptsetup.c:2897 +#: src/cryptsetup.c:2895 #, c-format msgid "Unrecognized metadata device type %s." msgstr "Нерозпізнаний тип пристрою метаданих, %s." -#: src/cryptsetup.c:2899 +#: src/cryptsetup.c:2897 msgid "Command requires device and mapped name as arguments." msgstr "Аргументами команди мають бути назва пристрою та призначена до нього назва." -#: src/cryptsetup.c:2917 +#: src/cryptsetup.c:2915 msgid "Enter OPAL PSID: " msgstr "Введіть PSID OPAL: " -#: src/cryptsetup.c:2917 +#: src/cryptsetup.c:2915 msgid "Enter OPAL Admin password: " msgstr "Введіть пароль адміністратора OPAL: " -#: src/cryptsetup.c:2925 +#: src/cryptsetup.c:2923 msgid "WARNING: WHOLE disk will be factory reset and all data will be lost! Continue?" msgstr "УВАГА: УВЕСЬ диск буде повернуто до початкових параметрів, а усі дані на ньому буде втрачено! Виконати дію?" -#: src/cryptsetup.c:2968 +#: src/cryptsetup.c:2966 #, c-format msgid "" "This operation will erase all keyslots on device %s.\n" @@ -2592,363 +2592,363 @@ msgstr "" "У результаті виконання цієї операції буде витерто усі слоти ключів на пристрої %s.\n" "Після виконання цієї дії пристроєм не можна буде скористатися." -#: src/cryptsetup.c:2975 +#: src/cryptsetup.c:2973 msgid "Operation aborted, keyslots were NOT wiped.\n" msgstr "Дію перервано, слоти ключів НЕ витерто.\n" -#: src/cryptsetup.c:3014 +#: src/cryptsetup.c:3012 msgid "Invalid LUKS type, only luks1 and luks2 are supported." msgstr "Некоректний тип LUKS. Передбачено підтримку лише luks1 і luks2." -#: src/cryptsetup.c:3030 +#: src/cryptsetup.c:3028 #, c-format msgid "Device is already %s type." msgstr "Пристрій вже належить до типу %s." -#: src/cryptsetup.c:3037 +#: src/cryptsetup.c:3035 #, c-format msgid "This operation will convert %s to %s format.\n" msgstr "Ця дія перетворить %s до формату %s.\n" -#: src/cryptsetup.c:3040 +#: src/cryptsetup.c:3038 msgid "Operation aborted, device was NOT converted.\n" msgstr "Дію перервано, дані пристрою НЕ перетворено.\n" -#: src/cryptsetup.c:3080 +#: src/cryptsetup.c:3078 msgid "Option --priority, --label or --subsystem is missing." msgstr "Пропущено параметр --priority, --label або --subsystem." -#: src/cryptsetup.c:3114 src/cryptsetup.c:3154 src/cryptsetup.c:3174 +#: src/cryptsetup.c:3112 src/cryptsetup.c:3152 src/cryptsetup.c:3172 #, c-format msgid "Token %d is invalid." msgstr "Жетон %d є некоректним." -#: src/cryptsetup.c:3117 src/cryptsetup.c:3177 +#: src/cryptsetup.c:3115 src/cryptsetup.c:3175 #, c-format msgid "Token %d in use." msgstr "Жетон %d використовується." -#: src/cryptsetup.c:3129 +#: src/cryptsetup.c:3127 #, c-format msgid "Failed to add luks2-keyring token %d." msgstr "Не вдалося додати жетон %d зі сховища ключів luks2." -#: src/cryptsetup.c:3140 src/cryptsetup.c:3203 +#: src/cryptsetup.c:3138 src/cryptsetup.c:3201 #, c-format msgid "Failed to assign token %d to keyslot %d." msgstr "Не вдалося прив'язати жетон %d до слоту ключа %d." -#: src/cryptsetup.c:3157 +#: src/cryptsetup.c:3155 #, c-format msgid "Token %d is not in use." msgstr "Жетон %d не використовується." -#: src/cryptsetup.c:3194 +#: src/cryptsetup.c:3192 msgid "Failed to import token from file." msgstr "Не вдалося імпортувати жетон з файла." -#: src/cryptsetup.c:3219 +#: src/cryptsetup.c:3217 #, c-format msgid "Failed to get token %d for export." msgstr "Не вдалося отримати жетон %d для експортування." -#: src/cryptsetup.c:3232 +#: src/cryptsetup.c:3230 #, c-format msgid "Token %d is not assigned to keyslot %d." msgstr "Жетон %d не пов'язано зі слотом ключа %d." -#: src/cryptsetup.c:3234 src/cryptsetup.c:3241 +#: src/cryptsetup.c:3232 src/cryptsetup.c:3239 #, c-format msgid "Failed to unassign token %d from keyslot %d." msgstr "Не вдалося відв'язати жетон %d від слоту ключа %d." -#: src/cryptsetup.c:3300 +#: src/cryptsetup.c:3298 msgid "Option --tcrypt-hidden, --tcrypt-system or --tcrypt-backup is supported only for TCRYPT device." msgstr "Підтримку параметрів --tcrypt-hidden, --tcrypt-system і --tcrypt-backup передбачено лише для пристроїв TCRYPT." -#: src/cryptsetup.c:3303 +#: src/cryptsetup.c:3301 msgid "Option --veracrypt or --disable-veracrypt is supported only for TCRYPT device type." msgstr "Підтримку параметра --veracrypt або --disable-veracrypt передбачено лише для пристроїв TCRYPT." -#: src/cryptsetup.c:3306 +#: src/cryptsetup.c:3304 msgid "Option --veracrypt-pim is supported only for VeraCrypt compatible devices." msgstr "Параметр --veracrypt-pim можна використовувати лише для сумісних із VeraCrypt пристроїв." -#: src/cryptsetup.c:3310 +#: src/cryptsetup.c:3308 msgid "Option --veracrypt-query-pim is supported only for VeraCrypt compatible devices." msgstr "Параметр --veracrypt-query-pim можна використовувати лише для сумісних із VeraCrypt пристроїв." -#: src/cryptsetup.c:3312 +#: src/cryptsetup.c:3310 msgid "The options --veracrypt-pim and --veracrypt-query-pim are mutually exclusive." msgstr "Не можна поєднувати параметри --veracrypt-pim і --veracrypt-query-pim." -#: src/cryptsetup.c:3321 +#: src/cryptsetup.c:3319 msgid "Option --persistent is not allowed with --test-passphrase." msgstr "Параметр --persistent не можна використовувати разом із --test-passphrase." -#: src/cryptsetup.c:3324 +#: src/cryptsetup.c:3322 msgid "Options --refresh and --test-passphrase are mutually exclusive." msgstr "Не можна поєднувати параметри --refresh і --test-passphrase." -#: src/cryptsetup.c:3327 +#: src/cryptsetup.c:3325 msgid "Option --shared is allowed only for open of plain device." msgstr "Параметр --shared можна використовувати лише для відкриття незашифрованого пристрою." -#: src/cryptsetup.c:3330 +#: src/cryptsetup.c:3328 msgid "Option --skip is supported only for open of plain and loopaes devices." msgstr "Підтримку параметра --skip передбачено лише для відкриття незашифрованих пристроїв та пристроїв loopaes." -#: src/cryptsetup.c:3333 +#: src/cryptsetup.c:3331 msgid "Option --offset with open action is only supported for plain and loopaes devices." msgstr "Підтримку параметра --offset разом із дією з відкриття передбачено лише для незашифрованих пристроїв та пристроїв loopaes." -#: src/cryptsetup.c:3336 +#: src/cryptsetup.c:3334 msgid "Option --tcrypt-hidden cannot be combined with --allow-discards." msgstr "Параметр --tcrypt-hidden не можна поєднувати з --allow-discards." -#: src/cryptsetup.c:3340 +#: src/cryptsetup.c:3338 msgid "Sector size option with open action is supported only for plain devices." msgstr "Підтримку параметра розміру сектора разом із дією з відкриття передбачено лише для незашифрованих пристроїв." -#: src/cryptsetup.c:3344 +#: src/cryptsetup.c:3342 msgid "Large IV sectors option is supported only for opening plain type device with sector size larger than 512 bytes." msgstr "Підтримку можливості використання великих секторів IV передбачено лише для відкриття пристроїв простого типу з розміром сектора, який перевищує 512 байтів." -#: src/cryptsetup.c:3349 +#: src/cryptsetup.c:3347 msgid "Option --test-passphrase is allowed only for open of LUKS, TCRYPT, BITLK and FVAULT2 devices." msgstr "Параметр --test-passphrase можна використовувати лише для відкриття пристроїв LUKS, TCRYPT, BITLK та FVAULT2." -#: src/cryptsetup.c:3352 src/cryptsetup.c:3382 +#: src/cryptsetup.c:3350 src/cryptsetup.c:3380 msgid "Options --device-size and --size cannot be combined." msgstr "Не можна одночасно використовувати параметри --device-size і --size." -#: src/cryptsetup.c:3355 +#: src/cryptsetup.c:3353 msgid "Option --unbound is allowed only for open of luks device." msgstr "Параметр --sunbound можна використовувати лише для відкриття пристрою LUKS." -#: src/cryptsetup.c:3358 +#: src/cryptsetup.c:3356 msgid "Option --unbound cannot be used without --test-passphrase." msgstr "Параметр --unbound не можна використовувати без --test-passphrase." -#: src/cryptsetup.c:3362 +#: src/cryptsetup.c:3360 msgid "Option --volume-key-keyring cannot be combined with --hash or --volume-key-file." msgstr "Параметр --volume-key-keyring не можна поєднувати з --hash і --volume-key-file." -#: src/cryptsetup.c:3365 +#: src/cryptsetup.c:3363 msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "Обидва параметри --volume-key-file має бути поєднано із відповідними параметрами --key-size." -#: src/cryptsetup.c:3374 src/veritysetup.c:673 src/integritysetup.c:784 +#: src/cryptsetup.c:3372 src/veritysetup.c:673 src/integritysetup.c:787 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "Не можна одночасно використовувати параметр --cancel-deferred і --deferred." -#: src/cryptsetup.c:3390 +#: src/cryptsetup.c:3388 msgid "Option --active-name can be set only for LUKS2 device." msgstr "Параметр --active-name можна встановлювати лише для пристроїв LUKS2." -#: src/cryptsetup.c:3393 +#: src/cryptsetup.c:3391 msgid "Options --active-name and --force-offline-reencrypt cannot be combined." msgstr "Не можна одночасно використовувати параметри ---active-name і --force-offline-reencrypt." -#: src/cryptsetup.c:3396 +#: src/cryptsetup.c:3394 msgid "Options --new-volume-key-file and --keep-key cannot be combined." msgstr "Не можна поєднувати параметри --new-volume-key-file і --keep-key." -#: src/cryptsetup.c:3399 +#: src/cryptsetup.c:3397 msgid "Options --new-volume-key-keyring and --keep-key cannot be combined." msgstr "Не можна поєднувати параметри --new-volume-key-keyring і --keep-key." -#: src/cryptsetup.c:3407 src/cryptsetup.c:3437 +#: src/cryptsetup.c:3405 src/cryptsetup.c:3435 msgid "Keyslot specification is required." msgstr "Слід вказати специфікація слотів ключів." -#: src/cryptsetup.c:3415 +#: src/cryptsetup.c:3413 msgid "Options --align-payload and --offset cannot be combined." msgstr "Не можна одночасно використовувати параметри --align-payload і --offset." -#: src/cryptsetup.c:3418 +#: src/cryptsetup.c:3416 msgid "Option --integrity-no-wipe can be used only for format action with integrity extension." msgstr "Параметром --integrity-no-wipe можна користуватися лише для дії з форматування із розширенням забезпечення цілісності." -#: src/cryptsetup.c:3421 +#: src/cryptsetup.c:3419 msgid "Only one of --use-[u]random options is allowed." msgstr "Можна використовувати лише один з параметрів --use-[u]random." -#: src/cryptsetup.c:3429 +#: src/cryptsetup.c:3427 msgid "Key size is required with --unbound option." msgstr "Разом із параметром --unbound слід вказувати розмір ключа." -#: src/cryptsetup.c:3449 +#: src/cryptsetup.c:3447 msgid "Invalid token action." msgstr "Некоректна дія з жетоном." -#: src/cryptsetup.c:3452 +#: src/cryptsetup.c:3450 msgid "--key-description parameter is mandatory for token add action." msgstr "Параметр --key-description є обов'язковим для дій із додавання жетонів." -#: src/cryptsetup.c:3456 src/cryptsetup.c:3469 +#: src/cryptsetup.c:3454 src/cryptsetup.c:3467 msgid "Action requires specific token. Use --token-id parameter." msgstr "Для виконання дії потрібен специфічний жетон. Скористайтеся параметром --token-id." -#: src/cryptsetup.c:3460 +#: src/cryptsetup.c:3458 msgid "Option --unbound is valid only with token add action." msgstr "Параметр --unbound можна використовувати лише разом із дією з додавання жетона." -#: src/cryptsetup.c:3462 +#: src/cryptsetup.c:3460 msgid "Options --key-slot and --unbound cannot be combined." msgstr "Не можна поєднувати параметри --key-slot і --unbound." -#: src/cryptsetup.c:3467 +#: src/cryptsetup.c:3465 msgid "Action requires specific keyslot. Use --key-slot parameter." msgstr "Дія потребує зазначення слоту ключа. Скористайтеся параметром --key-slot." -#: src/cryptsetup.c:3483 +#: src/cryptsetup.c:3481 msgid " [--type ] []" msgstr "<пристрій> [--type <тип>] [<назва>]" -#: src/cryptsetup.c:3483 src/veritysetup.c:487 src/integritysetup.c:551 +#: src/cryptsetup.c:3481 src/veritysetup.c:487 src/integritysetup.c:554 msgid "open device as " msgstr "відкрити пристрій як <назва>" -#: src/cryptsetup.c:3484 src/cryptsetup.c:3485 src/cryptsetup.c:3486 -#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:552 -#: src/integritysetup.c:553 src/integritysetup.c:555 +#: src/cryptsetup.c:3482 src/cryptsetup.c:3483 src/cryptsetup.c:3484 +#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:555 +#: src/integritysetup.c:556 src/integritysetup.c:558 msgid "" msgstr "<назва>" -#: src/cryptsetup.c:3484 src/veritysetup.c:488 src/integritysetup.c:552 +#: src/cryptsetup.c:3482 src/veritysetup.c:488 src/integritysetup.c:555 msgid "close device (remove mapping)" msgstr "закрити пристрій (вилучити призначення)" -#: src/cryptsetup.c:3485 src/integritysetup.c:555 +#: src/cryptsetup.c:3483 src/integritysetup.c:558 msgid "resize active device" msgstr "змінити розмір активного пристрою" -#: src/cryptsetup.c:3486 +#: src/cryptsetup.c:3484 msgid "show device status" msgstr "показати стан пристрою" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3485 msgid "[--cipher ]" msgstr "[--cipher <шифр>]" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3485 msgid "benchmark cipher" msgstr "перевірити швидкодію шифрування" -#: src/cryptsetup.c:3488 src/cryptsetup.c:3489 src/cryptsetup.c:3490 -#: src/cryptsetup.c:3491 src/cryptsetup.c:3492 src/cryptsetup.c:3499 -#: src/cryptsetup.c:3500 src/cryptsetup.c:3501 src/cryptsetup.c:3502 -#: src/cryptsetup.c:3503 src/cryptsetup.c:3504 src/cryptsetup.c:3505 -#: src/cryptsetup.c:3506 src/cryptsetup.c:3507 src/cryptsetup.c:3508 +#: src/cryptsetup.c:3486 src/cryptsetup.c:3487 src/cryptsetup.c:3488 +#: src/cryptsetup.c:3489 src/cryptsetup.c:3490 src/cryptsetup.c:3497 +#: src/cryptsetup.c:3498 src/cryptsetup.c:3499 src/cryptsetup.c:3500 +#: src/cryptsetup.c:3501 src/cryptsetup.c:3502 src/cryptsetup.c:3503 +#: src/cryptsetup.c:3504 src/cryptsetup.c:3505 src/cryptsetup.c:3506 msgid "" msgstr "<пристрій>" -#: src/cryptsetup.c:3488 +#: src/cryptsetup.c:3486 msgid "try to repair on-disk metadata" msgstr "спробувати виправити метадані на диску" -#: src/cryptsetup.c:3489 +#: src/cryptsetup.c:3487 msgid "reencrypt LUKS2 device" msgstr "повторно зашифрувати пристрій LUKS2" -#: src/cryptsetup.c:3490 +#: src/cryptsetup.c:3488 msgid "erase all keyslots (remove encryption key)" msgstr "витерти усі слоти ключів (вилучити ключ шифрування)" -#: src/cryptsetup.c:3491 +#: src/cryptsetup.c:3489 msgid "convert LUKS from/to LUKS2 format" msgstr "перетворити LUKS із формату LUKS2 або навпаки" -#: src/cryptsetup.c:3492 +#: src/cryptsetup.c:3490 msgid "set permanent configuration options for LUKS2" msgstr "встановити сталі параметри налаштування для LUKS2" -#: src/cryptsetup.c:3493 src/cryptsetup.c:3494 +#: src/cryptsetup.c:3491 src/cryptsetup.c:3492 msgid " []" msgstr "<пристрій> [<новий файл ключа>]" -#: src/cryptsetup.c:3493 +#: src/cryptsetup.c:3491 msgid "formats a LUKS device" msgstr "форматує пристрій LUKS" -#: src/cryptsetup.c:3494 +#: src/cryptsetup.c:3492 msgid "add key to LUKS device" msgstr "додати ключ до пристрою LUKS" -#: src/cryptsetup.c:3495 src/cryptsetup.c:3496 src/cryptsetup.c:3497 +#: src/cryptsetup.c:3493 src/cryptsetup.c:3494 src/cryptsetup.c:3495 msgid " []" msgstr "<пристрій> [<файл ключа>]" -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3493 msgid "removes supplied key or key file from LUKS device" msgstr "вилучає наданий ключ або файл ключа з пристрою LUKS" -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3494 msgid "changes supplied key or key file of LUKS device" msgstr "змінює наданий ключ або файл ключа пристрою LUKS" -#: src/cryptsetup.c:3497 +#: src/cryptsetup.c:3495 msgid "converts a key to new pbkdf parameters" msgstr "перетворює ключ до нових параметрів pbkdf" -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3496 msgid " " msgstr "<пристрій> <слот ключа>" -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3496 msgid "wipes key with number from LUKS device" msgstr "вилучає ключ з номером <слот ключа> з пристрою LUKS" -#: src/cryptsetup.c:3499 +#: src/cryptsetup.c:3497 msgid "print UUID of LUKS device" msgstr "вивести UUID пристрою LUKS" -#: src/cryptsetup.c:3500 +#: src/cryptsetup.c:3498 msgid "tests for LUKS partition header" msgstr "виконати спробу виявлення заголовка розділу LUKS на пристрої <пристрій>" -#: src/cryptsetup.c:3501 +#: src/cryptsetup.c:3499 msgid "dump LUKS partition information" msgstr "створити дамп даних щодо розділу LUKS" -#: src/cryptsetup.c:3502 +#: src/cryptsetup.c:3500 msgid "dump TCRYPT device information" msgstr "створити дамп даних пристрою TCRYPT" -#: src/cryptsetup.c:3503 +#: src/cryptsetup.c:3501 msgid "dump BITLK device information" msgstr "створити дамп даних пристрою BITLK" -#: src/cryptsetup.c:3504 +#: src/cryptsetup.c:3502 msgid "dump FVAULT2 device information" msgstr "створити дамп даних пристрою FVAULT2" -#: src/cryptsetup.c:3505 +#: src/cryptsetup.c:3503 msgid "Suspend LUKS device and wipe key (all IOs are frozen)" msgstr "Приспати пристрій LUKS і витерти ключ (роботу всіх каналів введення-виведення буде заморожено)" -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3504 msgid "Resume suspended LUKS device" msgstr "Відновити роботу приспаного пристрою LUKS" -#: src/cryptsetup.c:3507 +#: src/cryptsetup.c:3505 msgid "Backup LUKS device header and keyslots" msgstr "Створити резервну копію заголовка пристрою LUKS і слотів ключів" -#: src/cryptsetup.c:3508 +#: src/cryptsetup.c:3506 msgid "Restore LUKS device header and keyslots" msgstr "Відновити заголовок пристрою LUKS і слоти ключів" -#: src/cryptsetup.c:3509 +#: src/cryptsetup.c:3507 msgid " " msgstr " <пристрій>" -#: src/cryptsetup.c:3509 +#: src/cryptsetup.c:3507 msgid "Manipulate LUKS2 tokens" msgstr "Керування жетонами LUKS2" -#: src/cryptsetup.c:3528 src/veritysetup.c:505 src/integritysetup.c:570 +#: src/cryptsetup.c:3526 src/veritysetup.c:505 src/integritysetup.c:573 msgid "" "\n" " is one of:\n" @@ -2956,7 +2956,7 @@ msgstr "" "\n" "<дія> є однією з таких:\n" -#: src/cryptsetup.c:3534 +#: src/cryptsetup.c:3532 msgid "" "\n" "You can also use old syntax aliases:\n" @@ -2969,7 +2969,7 @@ msgstr "" "\tвідкрити: create (plainOpen), luksOpen, loopaesOpen, tcryptOpen, bitlkOpen, fvault2Open\n" "\tзакрити: remove (plainClose), luksClose, loopaesClose, tcryptClose, bitlkClose, fvault2Close\n" -#: src/cryptsetup.c:3538 +#: src/cryptsetup.c:3536 #, c-format msgid "" "\n" @@ -2984,7 +2984,7 @@ msgstr "" "<слот ключа> — номер слота ключа LUKS, який слід змінити\n" "<файл ключа> — необов’язковий файл ключа для нового ключа для дії luksAddKey\n" -#: src/cryptsetup.c:3545 +#: src/cryptsetup.c:3543 #, c-format msgid "" "\n" @@ -2993,7 +2993,7 @@ msgstr "" "\n" "Типовий укомпільований формат метаданих — %s (для дії luksFormat).\n" -#: src/cryptsetup.c:3550 +#: src/cryptsetup.c:3548 msgid "" "\n" "LUKS2 external token plugin support is enabled.\n" @@ -3001,12 +3001,12 @@ msgstr "" "\n" "Підтримку додатків зовнішніх жетонів LUKS2 увімкнено.\n" -#: src/cryptsetup.c:3551 +#: src/cryptsetup.c:3549 #, c-format msgid "LUKS2 external token plugin path: %s.\n" msgstr "Шлях до теки додатків зовнішніх жетонів LUKS2: %s.\n" -#: src/cryptsetup.c:3553 +#: src/cryptsetup.c:3551 msgid "" "\n" "LUKS2 external token plugin support is disabled.\n" @@ -3014,7 +3014,7 @@ msgstr "" "\n" "Підтримку додатків зовнішніх жетонів LUKS2 вимкнено.\n" -#: src/cryptsetup.c:3557 +#: src/cryptsetup.c:3555 #, c-format msgid "" "\n" @@ -3031,7 +3031,7 @@ msgstr "" "Типовий PBKDF для LUKS2: %s\n" "\tЧас ітерації: %d, потрібний обсяг пам'яті: %d кБ, паралельних потоків: %d\n" -#: src/cryptsetup.c:3568 +#: src/cryptsetup.c:3566 #, c-format msgid "" "\n" @@ -3046,122 +3046,122 @@ msgstr "" "\tзвичайне: %s, ключ: %d-бітовий, хешування пароля: %s\n" "\tLUKS: %s, ключ: %d-бітовий, хешування заголовка LUKS: %s, RNG: %s\n" -#: src/cryptsetup.c:3577 +#: src/cryptsetup.c:3575 msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: типовий розмір ключа у режимі XTS (два вбудованих ключа) буде подвоєно.\n" -#: src/cryptsetup.c:3595 src/veritysetup.c:647 src/integritysetup.c:730 +#: src/cryptsetup.c:3593 src/veritysetup.c:647 src/integritysetup.c:733 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: слід вказати у параметрах %s" -#: src/cryptsetup.c:3635 src/utils_reencrypt_luks1.c:1143 +#: src/cryptsetup.c:3633 src/utils_reencrypt_luks1.c:1143 msgid "Key slot is invalid." msgstr "Некоректний слот ключа." -#: src/cryptsetup.c:3663 +#: src/cryptsetup.c:3661 msgid "Device size must be multiple of 512 bytes sector." msgstr "Розмір пристрою має бути кратним до 512-байтового сектора." -#: src/cryptsetup.c:3668 +#: src/cryptsetup.c:3666 msgid "Invalid max reencryption hotzone size specification." msgstr "Некоректна специфікація розміру «гарячої» ділянки повторного шифрування." -#: src/cryptsetup.c:3682 src/cryptsetup.c:3699 src/cryptsetup.c:3711 +#: src/cryptsetup.c:3680 src/cryptsetup.c:3697 src/cryptsetup.c:3709 msgid "Key size must be a multiple of 8 bits" msgstr "Розмір ключа має бути кратним 8 бітам" -#: src/cryptsetup.c:3689 +#: src/cryptsetup.c:3687 msgid "At most 2 key size specifications can be supplied." msgstr "Можна надати не більше 2 специфікацій розмірів ключів." -#: src/cryptsetup.c:3718 src/cryptsetup.c:3729 +#: src/cryptsetup.c:3716 src/cryptsetup.c:3727 #, c-format msgid "At most %d volume key specifications can be supplied." msgstr "Можна надати не більше %d специфікацій ключів томів." -#: src/cryptsetup.c:3741 +#: src/cryptsetup.c:3739 #, c-format msgid "At most %d keyring link specifications can be supplied." msgstr "Можна надати не більше %d специфікацій посилань на сховище ключів." -#: src/cryptsetup.c:3750 +#: src/cryptsetup.c:3748 msgid "Maximum device reduce size is 1 GiB." msgstr "Максимальний розмір зменшення розміру пристрою дорівнює 1 ГіБ." -#: src/cryptsetup.c:3753 +#: src/cryptsetup.c:3751 msgid "Reduce size must be multiple of 512 bytes sector." msgstr "Розмір зменшення має бути кратним до 512-байтового сектора." -#: src/cryptsetup.c:3770 +#: src/cryptsetup.c:3768 msgid "Option --priority can be only ignore/normal/prefer." msgstr "Значенням для параметра --priority може бути лише один з таких рядків: ignore, normal або prefer." -#: src/cryptsetup.c:3789 src/veritysetup.c:568 src/integritysetup.c:650 +#: src/cryptsetup.c:3787 src/veritysetup.c:568 src/integritysetup.c:653 msgid "Show this help message" msgstr "Показати цю довідку" -#: src/cryptsetup.c:3790 src/veritysetup.c:569 src/integritysetup.c:651 +#: src/cryptsetup.c:3788 src/veritysetup.c:569 src/integritysetup.c:654 msgid "Display brief usage" msgstr "Показати короткі настанови щодо користування" -#: src/cryptsetup.c:3791 src/veritysetup.c:570 src/integritysetup.c:652 +#: src/cryptsetup.c:3789 src/veritysetup.c:570 src/integritysetup.c:655 msgid "Print package version" msgstr "Вивести дані щодо версії пакунка" -#: src/cryptsetup.c:3802 src/veritysetup.c:581 src/integritysetup.c:663 +#: src/cryptsetup.c:3800 src/veritysetup.c:581 src/integritysetup.c:666 msgid "Help options:" msgstr "Пункти довідки:" -#: src/cryptsetup.c:3825 src/veritysetup.c:602 src/integritysetup.c:683 +#: src/cryptsetup.c:3823 src/veritysetup.c:602 src/integritysetup.c:686 msgid "[OPTION...] " msgstr "[ПАРАМЕТР...] <дія> <параметри_дії>" -#: src/cryptsetup.c:3834 src/veritysetup.c:611 src/integritysetup.c:694 +#: src/cryptsetup.c:3832 src/veritysetup.c:611 src/integritysetup.c:697 msgid "Argument missing." msgstr "Не вказано аргумент <дія>." -#: src/cryptsetup.c:3913 src/veritysetup.c:642 src/integritysetup.c:725 +#: src/cryptsetup.c:3911 src/veritysetup.c:642 src/integritysetup.c:728 msgid "Unknown action." msgstr "Невідома дія." -#: src/cryptsetup.c:3931 +#: src/cryptsetup.c:3929 msgid "Option --key-file takes precedence over specified key file argument." msgstr "Параметр --key-file має пріоритет над вказаним параметром файла ключа." -#: src/cryptsetup.c:3937 +#: src/cryptsetup.c:3935 msgid "Only one --key-file argument is allowed." msgstr "Можна використовувати лише один аргумент --key-file." -#: src/cryptsetup.c:3942 +#: src/cryptsetup.c:3940 msgid "Password-based key derivation function (PBKDF) can be only pbkdf2 or argon2i/argon2id." msgstr "Функцією отримання ключа на основі пароля (PBKDF) може бути лише pbkdf2 або argon2i/argon2id." -#: src/cryptsetup.c:3947 +#: src/cryptsetup.c:3945 msgid "PBKDF forced iterations cannot be combined with iteration time option." msgstr "Примусові ітерації PBKDF не можна поєднувати із параметром тривалості ітерацій." -#: src/cryptsetup.c:3952 +#: src/cryptsetup.c:3950 msgid "Cannot link volume key to a keyring when keyring is disabled." msgstr "Неможливо пов'язати ключ тому зі сховищем ключів, якщо сховище ключів вимкнено." -#: src/cryptsetup.c:3957 +#: src/cryptsetup.c:3955 msgid "Cannot use keyring key description when keyring is disabled." msgstr "Не можна скористатися описом ключа сховища ключів, якщо сховище ключів вимкнено." -#: src/cryptsetup.c:3962 +#: src/cryptsetup.c:3960 msgid "Inline integrity must be used together with --integrity option." msgstr "Вбудовану цілісність має бути використано разом із параметром --integrity." -#: src/cryptsetup.c:3973 +#: src/cryptsetup.c:3971 msgid "Options --keyslot-cipher and --keyslot-key-size must be used together." msgstr "Параметри --keyslot-cipher і --keyslot-key-size має бути використано разом." -#: src/cryptsetup.c:3981 +#: src/cryptsetup.c:3979 msgid "No action taken. Invoked with --test-args option.\n" msgstr "Дій не виконано. Викликано із параметром --test-args.\n" -#: src/cryptsetup.c:3994 +#: src/cryptsetup.c:3992 msgid "Cannot disable metadata locking." msgstr "Не вдалося вимкнути блокування метаданих." @@ -3226,7 +3226,7 @@ msgstr "Для виконання команди потрібен <корене msgid " " msgstr "<пристрій_даних> <пристрій_хешу>" -#: src/veritysetup.c:485 src/integritysetup.c:550 +#: src/veritysetup.c:485 src/integritysetup.c:553 msgid "format device" msgstr "форматувати пристрій" @@ -3242,7 +3242,7 @@ msgstr "перевірити пристрій" msgid " []" msgstr "<пристрій_даних> <назва> <пристрій_хешу> [<кореневий_хеш>]" -#: src/veritysetup.c:489 src/integritysetup.c:553 +#: src/veritysetup.c:489 src/integritysetup.c:556 msgid "show active device status" msgstr "показати стан активного пристрою" @@ -3250,7 +3250,7 @@ msgstr "показати стан активного пристрою" msgid "" msgstr "<пристрій_хешу>" -#: src/veritysetup.c:490 src/integritysetup.c:554 +#: src/veritysetup.c:490 src/integritysetup.c:557 msgid "show on-disk information" msgstr "показати вбудовані дані" @@ -3310,24 +3310,24 @@ msgstr "Форматовано із розміром мітки %u%s, внутр msgid " (inline hw tags)" msgstr " (вбудовані апаратні мітки)" -#: src/integritysetup.c:297 +#: src/integritysetup.c:303 msgid "Setting recalculate flag is not supported, you may consider using --wipe instead." msgstr "Підтримки встановлення прапорця повторного обчислення не передбачено. Вам варто розглянути можливість використання --wipe." -#: src/integritysetup.c:374 src/integritysetup.c:537 +#: src/integritysetup.c:380 src/integritysetup.c:540 #, c-format msgid "Device %s is not a valid INTEGRITY device." msgstr "Пристрій %s не є коректним пристроєм INTEGRITY." -#: src/integritysetup.c:550 src/integritysetup.c:554 +#: src/integritysetup.c:553 src/integritysetup.c:557 msgid "" msgstr "<пристрій_цілісності>" -#: src/integritysetup.c:551 +#: src/integritysetup.c:554 msgid " " msgstr "<пристрій_цілісності> <назва>" -#: src/integritysetup.c:574 +#: src/integritysetup.c:577 #, c-format msgid "" "\n" @@ -3338,7 +3338,7 @@ msgstr "" "<назва> є пристроєм, який слід створити у %s\n" "<пристрій_цілісності> є пристроєм, на якому зберігаються дані із мітками цілісності\n" -#: src/integritysetup.c:579 +#: src/integritysetup.c:582 #, c-format msgid "" "\n" @@ -3351,48 +3351,48 @@ msgstr "" "\tАлгоритм обчислення контрольної суми: %s\n" "\tМаксимальний розмір файла ключа: %d кБ\n" -#: src/integritysetup.c:636 +#: src/integritysetup.c:639 #, c-format msgid "Invalid --%s size. Maximum is %u bytes." msgstr "Некоректний розмір --%s. Максимальний розмір дорівнює %u байтів." -#: src/integritysetup.c:739 +#: src/integritysetup.c:742 msgid "Both key file and key size options must be specified." msgstr "Не можна одночасно вказувати параметри файла ключа і розміру ключа." -#: src/integritysetup.c:743 +#: src/integritysetup.c:746 msgid "Both journal integrity key file and key size options must be specified." msgstr "Не можна одночасно вказувати параметри файла ключа цілісності журналу і розміру ключа." -#: src/integritysetup.c:746 +#: src/integritysetup.c:749 msgid "Journal integrity algorithm must be specified if journal integrity key is used." msgstr "Якщо використано ключ цілісності журналу, має бути вказано алгоритм забезпечення цілісності журналу." -#: src/integritysetup.c:750 +#: src/integritysetup.c:753 msgid "Both journal encryption key file and key size options must be specified." msgstr "Не можна одночасно вказувати параметри файла ключа шифрування журналу і розміру ключа." -#: src/integritysetup.c:753 +#: src/integritysetup.c:756 msgid "Journal encryption algorithm must be specified if journal encryption key is used." msgstr "Якщо використано ключ шифрування журналу, має бути вказано алгоритм забезпечення шифрування журналу." -#: src/integritysetup.c:757 +#: src/integritysetup.c:760 msgid "Recovery and bitmap mode options are mutually exclusive." msgstr "Не можна поєднувати параметри відновлення і бітової карти." -#: src/integritysetup.c:764 +#: src/integritysetup.c:767 msgid "Journal options cannot be used in bitmap mode." msgstr "Параметри журналу у режимі бітової карти використовувати не можна." -#: src/integritysetup.c:769 +#: src/integritysetup.c:772 msgid "Bitmap options can be used only in bitmap mode." msgstr "Параметри бітової карти можна використовувати лише у режимі бітового карти." -#: src/integritysetup.c:775 +#: src/integritysetup.c:778 msgid "Inline mode cannot be combined with journal or bitmap options." msgstr "Вбудований режим не може бути поєднано із параметрами журналу або бітової карти." -#: src/integritysetup.c:779 +#: src/integritysetup.c:782 msgid "Inline mode cannot be combined with separate data device." msgstr "Вбудований режим не можна поєднувати із окремим пристроєм даних." @@ -4349,6 +4349,10 @@ msgstr "На вузлі заборонено спосіб розпізнаван msgid "Public key authentication error: " msgstr "Помилка розпізнавання за відкритим ключем: " +#, c-format +#~ msgid "Failed to read or validate BITLK FVE metadata copy #%d from %s." +#~ msgstr "Не вдалося прочитати або перевірити копію метаданих FVE BITLK %d з %s." + #~ msgid "Activation of BITLK device with clear key protection is not supported." #~ msgstr "Підтримки активації пристрою BITLK із прозорим захистом ключем не передбачено." From 20132698516449826460f51745bbde91889fa0e1 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Wed, 1 Apr 2026 20:46:12 +0200 Subject: [PATCH 058/244] Add Release notes for stable 2.8.5 version. --- docs/v2.8.5-ReleaseNotes | 73 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 docs/v2.8.5-ReleaseNotes diff --git a/docs/v2.8.5-ReleaseNotes b/docs/v2.8.5-ReleaseNotes new file mode 100644 index 000000000..7ed5ccc6c --- /dev/null +++ b/docs/v2.8.5-ReleaseNotes @@ -0,0 +1,73 @@ +Cryptsetup 2.8.5 Release Notes +============================== +Stable bug-fix release. + +All users of cryptsetup 2.8.x must upgrade to this version. + +Changes since version 2.8.4 +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* Fix FileVault (fvault2) metadata parsing. + With a specially crafted image, it is possible to cause a crash during the loading + of the FileVault-compatible disk encryption format. It is caused by the metadata block size + not being fully validated during the crypt_load() API call. + + Thanks to David Pokora (Trail of Bits, in collaboration with Anthropic) for reporting + and proposing the patch. + +* Fix reading FileVault image metadata from incorrect image offset. + If two subsequent crypt_load() API calls are made, the second call to load FileVault metadata + uses an incorrect offset. Subsequently, the correct FileVault metadata is not recognized. + This is caused by a missing seek to the device's beginning. No other formats are affected. + +* OpenSSL backend: Increase the number of allowed threads to 64. + If there are multiple crypto contexts in use, the 8-thread limit could cause parallel Argon2 + PBKDF to wait or even deadlock. This is a workaround; the real fix probably needs changes + in the OpenSSL Argon2 thread allocation. + +* Fix LUKS2 reencryption lock name. + If the device is in the reencryption process, it must use the metadata lock to protect + the reencryption metadata. In some very specific situations, the lock did not contain + the proper UUID of the reencrypted device. + +* Check the UUID of the resumed device to match the UUID stored in metadata. + It is possible to resume the device with an invalid context, with possible data corruption + (a different encryption key is loaded). + +* Add a specific error for failed detached header allocation. + If there wasn't enough space on the filesystem, the error message was confusing. + +* Fix tests not to use aes-generic kernel cipher name. + Since Linux kernel 7.0, the crypto library has been used, and the old generic alias for kernel + crypto no longer works. As it was never supposed to be used from userspace, tests were fixed + to pass even with Linux kernel 7.0. + +* Fix OpenSSL crypto backend if built with LibreSSL. + LibreSSL provides some definitions that it does not actually support. + This confused the logic of the configuration scripts. + +* Several compatibility fixes to the alternative Meson configuration system: + * using pkg-config to find the popt library, + * fix the UUID header path in the function check, + * fix argp detection with the static argp-standalone library, + * allow external tokens without dlvsym (with musl library), + * propagate the crypto backend library dependency to all targets in the static build, and + * fix the defined locking directory path.. + These changes align it with Autoconf logic. + +* Various code fixes based on AI-assisted reviews: + * fix memory wiping of the larger Veracrypt password pool, + * remove superfluous return line in integritysetup, + * OpenSSL crypto backend: check for maximal RAND_bytes buffer size, + * FileVault fomrat:: use safe_alloc for key unwrapping, + * check for strtoll() failure, + * avoid integrity sector size overflow (when reading from disk), + * fix device-mapper flags initialization in the error path, + * increase buffer for keyring name in the device-mapper table to not truncate it, + * document non-standard behavior of safe_realloc, + * fix wrong union access for dm-integrity reload, + * check for possible CTX_dup failure in OpenSSL crypto backend, + * fix kernel crypto backend snprintf check, + * fix prefix "capi:" check not to ignore colon, + * fix device resize not to leak data on error path, and + * fix return value in reencryption segment helper. From db3d43fd7ae049f4c796c4d7a1e7ced113b6a96d Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Thu, 2 Apr 2026 15:59:16 +0200 Subject: [PATCH 059/244] Update spec version. --- misc/fedora/cryptsetup.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/fedora/cryptsetup.spec b/misc/fedora/cryptsetup.spec index 57d452bf9..f01636923 100644 --- a/misc/fedora/cryptsetup.spec +++ b/misc/fedora/cryptsetup.spec @@ -2,7 +2,7 @@ Summary: Utility for setting up encrypted disks Name: cryptsetup -Version: 2.8.1 +Version: 2.9.0 Release: 1%{?dist} License: GPL-2.0-or-later WITH cryptsetup-OpenSSL-exception AND LGPL-2.1-or-later WITH cryptsetup-OpenSSL-exception URL: https://gitlab.com/cryptsetup/cryptsetup From a78a6b78fb154584a50b88e8be93554c2bc44909 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Thu, 2 Apr 2026 15:59:34 +0200 Subject: [PATCH 060/244] Update Readme for 2.8.5. --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index f41bc5738..c93b694c7 100644 --- a/README.md +++ b/README.md @@ -39,11 +39,11 @@ Download Release notes and tarballs are available at [kernel.org](https://cdn.kernel.org/pub/linux/utils/cryptsetup/). -**The latest stable cryptsetup release version is 2.8.4** - * [cryptsetup-2.8.4.tar.xz](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/cryptsetup-2.8.4.tar.xz) - * Signature [cryptsetup-2.8.4.tar.sign](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/cryptsetup-2.8.4.tar.sign) +**The latest stable cryptsetup release version is 2.8.5** + * [cryptsetup-2.8.5.tar.xz](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/cryptsetup-2.8.5.tar.xz) + * Signature [cryptsetup-2.8.5.tar.sign](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/cryptsetup-2.8.5.tar.sign) _(You need to decompress file first to check signature.)_ - * [Cryptsetup 2.8.4 Release Notes](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/v2.8.4-ReleaseNotes). + * [Cryptsetup 2.8.5 Release Notes](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/v2.8.5-ReleaseNotes). [Previous versions](https://cdn.kernel.org/pub/linux/utils/cryptsetup) From fd35f78762f7146aeb17ce3d233dca3d0da90463 Mon Sep 17 00:00:00 2001 From: Kristina Hanicova Date: Thu, 2 Apr 2026 17:43:13 +0200 Subject: [PATCH 061/244] autotools: Fix variable @DEFAULT_LUKS2_LOCK_PATH_UNQUOTED@ Commit 1658a702 introduced a new unquoted variable for path in meson without introducing it in autotools as well. Fixes: #984. --- configure.ac | 1 + 1 file changed, 1 insertion(+) diff --git a/configure.ac b/configure.ac index 01ac27b76..52ddf11b3 100644 --- a/configure.ac +++ b/configure.ac @@ -838,6 +838,7 @@ 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) +AC_SUBST([DEFAULT_LUKS2_LOCK_PATH_UNQUOTED], [$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 From c69c6049789a6f3b3588bd0e09fb4ce17060e196 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Thu, 2 Apr 2026 17:58:41 +0200 Subject: [PATCH 062/244] Add Release notes for 2.8.6. --- docs/v2.8.5-ReleaseNotes | 2 +- docs/v2.8.6-ReleaseNotes | 77 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 docs/v2.8.6-ReleaseNotes diff --git a/docs/v2.8.5-ReleaseNotes b/docs/v2.8.5-ReleaseNotes index 7ed5ccc6c..3db0d4f92 100644 --- a/docs/v2.8.5-ReleaseNotes +++ b/docs/v2.8.5-ReleaseNotes @@ -59,7 +59,7 @@ Changes since version 2.8.4 * fix memory wiping of the larger Veracrypt password pool, * remove superfluous return line in integritysetup, * OpenSSL crypto backend: check for maximal RAND_bytes buffer size, - * FileVault fomrat:: use safe_alloc for key unwrapping, + * FileVault format: use safe_alloc for key unwrapping, * check for strtoll() failure, * avoid integrity sector size overflow (when reading from disk), * fix device-mapper flags initialization in the error path, diff --git a/docs/v2.8.6-ReleaseNotes b/docs/v2.8.6-ReleaseNotes new file mode 100644 index 000000000..9edeba20f --- /dev/null +++ b/docs/v2.8.6-ReleaseNotes @@ -0,0 +1,77 @@ +Cryptsetup 2.8.6 Release Notes +============================== +Stable bug-fix release. + +All users of cryptsetup 2.8.x must upgrade to this version. + +Changes since version 2.8.5 +~~~~~~~~~~~~~~~~~~~~~~~~~~~ +* Fixes an autotools regression in 2.8.5 in the locking tmpfiles.d directory configuration. + +Changes since version 2.8.4 +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* Fix FileVault (fvault2) metadata parsing. + With a specially crafted image, it is possible to cause a crash during the loading + of the FileVault-compatible disk encryption format. It is caused by the metadata block size + not being fully validated during the crypt_load() API call. + + Thanks to David Pokora (Trail of Bits, in collaboration with Anthropic) for reporting + and proposing the patch. + +* Fix reading FileVault image metadata from incorrect image offset. + If two subsequent crypt_load() API calls are made, the second call to load FileVault metadata + uses an incorrect offset. Subsequently, the correct FileVault metadata is not recognized. + This is caused by a missing seek to the device's beginning. No other formats are affected. + +* OpenSSL backend: Increase the number of allowed threads to 64. + If there are multiple crypto contexts in use, the 8-thread limit could cause parallel Argon2 + PBKDF to wait or even deadlock. This is a workaround; the real fix probably needs changes + in the OpenSSL Argon2 thread allocation. + +* Fix LUKS2 reencryption lock name. + If the device is in the reencryption process, it must use the metadata lock to protect + the reencryption metadata. In some very specific situations, the lock did not contain + the proper UUID of the reencrypted device. + +* Check the UUID of the resumed device to match the UUID stored in metadata. + It is possible to resume the device with an invalid context, with possible data corruption + (a different encryption key is loaded). + +* Add a specific error for failed detached header allocation. + If there wasn't enough space on the filesystem, the error message was confusing. + +* Fix tests not to use aes-generic kernel cipher name. + Since Linux kernel 7.0, the crypto library has been used, and the old generic alias for kernel + crypto no longer works. As it was never supposed to be used from userspace, tests were fixed + to pass even with Linux kernel 7.0. + +* Fix OpenSSL crypto backend if built with LibreSSL. + LibreSSL provides some definitions that it does not actually support. + This confused the logic of the configuration scripts. + +* Several compatibility fixes to the alternative Meson configuration system: + * using pkg-config to find the popt library, + * fix the UUID header path in the function check, + * fix argp detection with the static argp-standalone library, + * allow external tokens without dlvsym (with musl library), + * propagate the crypto backend library dependency to all targets in the static build, and + * fix the defined locking directory path.. + These changes align it with Autoconf logic. + +* Various code fixes based on AI-assisted reviews: + * fix memory wiping of the larger Veracrypt password pool, + * remove superfluous return line in integritysetup, + * OpenSSL crypto backend: check for maximal RAND_bytes buffer size, + * FileVault format: use safe_alloc for key unwrapping, + * check for strtoll() failure, + * avoid integrity sector size overflow (when reading from disk), + * fix device-mapper flags initialization in the error path, + * increase buffer for keyring name in the device-mapper table to not truncate it, + * document non-standard behavior of safe_realloc, + * fix wrong union access for dm-integrity reload, + * check for possible CTX_dup failure in OpenSSL crypto backend, + * fix kernel crypto backend snprintf check, + * fix prefix "capi:" check not to ignore colon, + * fix device resize not to leak data on error path, and + * fix return value in reencryption segment helper. From 8f112facc0814c3712e66b3b28955c31464e4c6e Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Thu, 2 Apr 2026 18:55:55 +0200 Subject: [PATCH 063/244] Update Readme for 2.8.6. --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index c93b694c7..385efdd9b 100644 --- a/README.md +++ b/README.md @@ -39,11 +39,11 @@ Download Release notes and tarballs are available at [kernel.org](https://cdn.kernel.org/pub/linux/utils/cryptsetup/). -**The latest stable cryptsetup release version is 2.8.5** - * [cryptsetup-2.8.5.tar.xz](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/cryptsetup-2.8.5.tar.xz) - * Signature [cryptsetup-2.8.5.tar.sign](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/cryptsetup-2.8.5.tar.sign) +**The latest stable cryptsetup release version is 2.8.6** + * [cryptsetup-2.8.6.tar.xz](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/cryptsetup-2.8.6.tar.xz) + * Signature [cryptsetup-2.8.6.tar.sign](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/cryptsetup-2.8.6.tar.sign) _(You need to decompress file first to check signature.)_ - * [Cryptsetup 2.8.5 Release Notes](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/v2.8.5-ReleaseNotes). + * [Cryptsetup 2.8.6 Release Notes](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/v2.8.6-ReleaseNotes). [Previous versions](https://cdn.kernel.org/pub/linux/utils/cryptsetup) From df809fe3802b5cf51ab3a1d9efcf989ee8a7b744 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Tue, 14 Apr 2026 13:23:17 +0200 Subject: [PATCH 064/244] tests: catch unlikely failures in reencrypt-reformat-device helper. --- tests/luks2-reencryption-test | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/luks2-reencryption-test b/tests/luks2-reencryption-test index 58288e5d1..d1d30c33d 100755 --- a/tests/luks2-reencryption-test +++ b/tests/luks2-reencryption-test @@ -893,10 +893,10 @@ reformat_reencrypt_device() { echo -e "$PWD1\n$PWD6" | $CRYPTSETUP -q luksAddKey -S10 $FAST_PBKDF_ARGON $DEV || fail echo -e "$PWD1\n$PWD7" | $CRYPTSETUP -q luksAddKey -S12 $FAST_PBKDF_ARGON $DEV || fail - $CRYPTSETUP token add $DEV --token-id 1 --key-description $KEY_NAME3 -S6 - $CRYPTSETUP token add $DEV --token-id 2 --key-description $KEY_NAME4 -S8 - $CRYPTSETUP token add $DEV --token-id 3 --key-description $KEY_NAME5 -S10 - echo -e "{\"type\":\"luks2-keyring\",\"keyslots\":[\"4\", \"12\"],\"key_description\":\"$KEY_NAME6\"}" | $CRYPTSETUP token import $DEV --token-id 4 --json-file - + $CRYPTSETUP token add $DEV --token-id 1 --key-description $KEY_NAME3 -S6 || fail + $CRYPTSETUP token add $DEV --token-id 2 --key-description $KEY_NAME4 -S8 || fail + $CRYPTSETUP token add $DEV --token-id 3 --key-description $KEY_NAME5 -S10 || fail + echo -e "{\"type\":\"luks2-keyring\",\"keyslots\":[\"4\", \"12\"],\"key_description\":\"$KEY_NAME6\"}" | $CRYPTSETUP token import $DEV --token-id 4 --json-file - || fail $CRYPTSETUP -q luksHeaderBackup --header-backup-file $BACKUP_FILE $DEV || fail else From c13bc01b2bdd96770e05751bf47426b72f806b54 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Wed, 15 Apr 2026 16:39:15 +0200 Subject: [PATCH 065/244] tests: Do not link user keyring in session keyring. Some tests used to link @user keyring in the @session keyring even though it's not necessary for tests to work properly. It was probably done because keys (even transitively) linked in @session keyring are possesed by all processes running in the same session. Use custom test keyring linked in @session keyring instead. It can be easily removed (unlinked) on the test teardown and it's less intrusive for the test system. Moreover the linked @user keyring was never properly unlinked from @session on the test teardown. As a side effect some tests accessing key payloads from @user keyring has to be removed since @user keys are no longer available for reading transitively via @session keyring. Fixes: #864. --- tests/compat-test-opal | 23 +++++++++++++++-------- tests/compat-test2 | 23 ++++++++++++++--------- tests/keyring-compat-test | 17 ++++++++++++----- tests/keyring-test | 15 +++++++++++---- 4 files changed, 52 insertions(+), 26 deletions(-) diff --git a/tests/compat-test-opal b/tests/compat-test-opal index d410b7b09..cb7cadf06 100755 --- a/tests/compat-test-opal +++ b/tests/compat-test-opal @@ -28,7 +28,7 @@ PWD2="mymJeD8ivEhE" PWD3="ocMakf3fAcQO" PWD4="Qx3qn46vq0v" PWDW="rUkL4RUryBom" -TEST_KEYRING_NAME="compattest2_keyring" +TEST_KEYRING_NAME="compattestopal_keyring" TEST_TOKEN0="compattest2_desc0" TEST_TOKEN1="compattest2_desc1" VK_FILE="compattest2_vkfile" @@ -52,7 +52,7 @@ remove_mapping() $KEY_FILE0 $KEY_FILE1 $KEY_PWD1 $NO_HEADER_IMG >/dev/null 2>&1 # unlink whole test keyring - [ -n "$TEST_KEYRING" ] && keyctl unlink $TEST_KEYRING "@u" >/dev/null + [ -n "$TEST_KEYRING" ] && keyctl unlink $TEST_KEYRING >/dev/null unset TEST_KEYRING } @@ -198,11 +198,20 @@ dm_crypt_keyring_new_kernel() test_and_prepare_keyring() { command -v keyctl >/dev/null || skip "Cannot find keyctl, test skipped" + + local s_desc=$(keyctl rdescribe @s | cut -d';' -f5) + local us_desc=$(keyctl rdescribe @us | cut -d';' -f5) + + if [ "$s_desc" = "$us_desc" -a -n "$s_desc" ]; then + echo "Session keyring is missing. Giving new one to parent process..." + keyctl new_session > /dev/null || skip "Could not create new session keyring, test skipped" + fi + 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." + TEST_KEYRING=$(keyctl newring $TEST_KEYRING_NAME "@s" 2> /dev/null) + test -n "$TEST_KEYRING" || skip "Failed to create keyring in session keyring, test skipped" + keyctl search "@s" keyring $TEST_KEYRING_NAME > /dev/null 2>&1 || skip "Could not find test keyring in a session keyring, test skipped" + load_key user test_key test_data "$TEST_KEYRING" || skip "Kernel keyring service is useless on this system, test skipped" } # $1 type @@ -1283,8 +1292,6 @@ if [ $HAVE_KEYRING -gt 0 -a -d /proc/sys/kernel/keys ]; then test_vk_link_with_passphrase_check $KEY_NAME "%:$TEST_KEYRING_NAME" "user" test_vk_link_with_passphrase_check $KEY_NAME "%:$TEST_KEYRING_NAME" "logon" - test_vk_link_and_reactivate $KEY_NAME "@u" "user" - test_vk_link_and_reactivate $KEY_NAME "@u" [[ ! -z "$SESSION_KEYRING_WORKS" ]] && test_vk_link_and_reactivate $KEY_NAME "@s" "user" test_vk_link_and_reactivate $KEY_NAME "%:$TEST_KEYRING_NAME" "user" # explicitly specify keyring key type diff --git a/tests/compat-test2 b/tests/compat-test2 index 2d7cdf500..7920133dd 100755 --- a/tests/compat-test2 +++ b/tests/compat-test2 @@ -68,7 +68,7 @@ remove_mapping() $KEY_FILE0 $KEY_FILE1 >/dev/null 2>&1 # unlink whole test keyring - [ -n "$TEST_KEYRING" ] && keyctl unlink $TEST_KEYRING "@u" >/dev/null + [ -n "$TEST_KEYRING" ] && keyctl unlink $TEST_KEYRING >/dev/null unset TEST_KEYRING rmmod scsi_debug >/dev/null 2>&1 @@ -256,11 +256,20 @@ dm_crypt_sector_size_support() test_and_prepare_keyring() { command -v keyctl >/dev/null || skip "Cannot find keyctl, test skipped" + + local s_desc=$(keyctl rdescribe @s | cut -d';' -f5) + local us_desc=$(keyctl rdescribe @us | cut -d';' -f5) + + if [ "$s_desc" = "$us_desc" -a -n "$s_desc" ]; then + echo "Session keyring is missing. Giving new one to parent process..." + keyctl new_session > /dev/null || skip "Could not create new session keyring, test skipped" + fi + 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." + TEST_KEYRING=$(keyctl newring $TEST_KEYRING_NAME "@s" 2> /dev/null) + test -n "$TEST_KEYRING" || skip "Failed to create keyring in session keyring, test skipped" + keyctl search "@s" keyring $TEST_KEYRING_NAME > /dev/null 2>&1 || skip "Could not find test keyring in a session keyring, test skipped" + load_key user test_key test_data "$TEST_KEYRING" || skip "Kernel keyring service is useless on this system, test skipped" } # $1 type @@ -1555,8 +1564,6 @@ if [ $HAVE_KEYRING -gt 0 -a -d /proc/sys/kernel/keys ]; then # explicitly specify keyring key type test_vk_link $KEY_NAME "%keyring:$TEST_KEYRING_NAME" - test_vk_link_and_reactivate $KEY_NAME "@u" "user" - test_vk_link_and_reactivate $KEY_NAME "@u" [[ ! -z "$SESSION_KEYRING_WORKS" ]] && test_vk_link_and_reactivate $KEY_NAME "@s" "user" test_vk_link_and_reactivate $KEY_NAME "%:$TEST_KEYRING_NAME" "user" # explicitly specify keyring key type @@ -1610,8 +1617,6 @@ if [ $HAVE_KEYRING -gt 0 -a -d /proc/sys/kernel/keys ]; then # explicitly specify keyring key type test_reencrypt_vk_link $KEY_NAME $KEY_NAME2 "%keyring:$TEST_KEYRING_NAME" - test_reencrypt_vk_link_and_reactivate $KEY_NAME $KEY_NAME2 "@u" - test_reencrypt_vk_link_and_reactivate $KEY_NAME $KEY_NAME2 "@u" "user" [[ ! -z "$SESSION_KEYRING_WORKS" ]] && test_reencrypt_vk_link_and_reactivate $KEY_NAME $KEY_NAME2 "@s" [[ ! -z "$SESSION_KEYRING_WORKS" ]] && test_reencrypt_vk_link_and_reactivate $KEY_NAME $KEY_NAME2 "@s" "user" test_reencrypt_vk_link_and_reactivate $KEY_NAME $KEY_NAME2 "%:$TEST_KEYRING_NAME" diff --git a/tests/keyring-compat-test b/tests/keyring-compat-test index 26f0e1035..bdffb4ed3 100755 --- a/tests/keyring-compat-test +++ b/tests/keyring-compat-test @@ -5,7 +5,7 @@ CIPHER_CBC_ESSIV="aes-cbc-essiv:sha256" CIPHER_CBC_TCW="serpent-cbc-tcw" # TODO: mode with LMK -TEST_KEYRING_NAME="keyringtest_keyring" +TEST_KEYRING_NAME="keyringcompattest_keyring" LOGON_KEY_16_OK="dmtst:lkey_16" LOGON_KEY_32_OK="dmtst:lkey_32" @@ -38,7 +38,7 @@ remove_mapping() [ -b /dev/mapper/$NAME ] && dmsetup remove --retry $NAME # unlink whole test keyring - [ -n "$TEST_KEYRING" ] && keyctl unlink $TEST_KEYRING "@u" >/dev/null + [ -n "$TEST_KEYRING" ] && keyctl unlink $TEST_KEYRING >/dev/null rmmod scsi_debug >/dev/null 2>&1 @@ -106,10 +106,17 @@ dm_crypt_keyring_support() } test_and_prepare_keyring() { + local s_desc=$(keyctl rdescribe @s | cut -d';' -f5) + local us_desc=$(keyctl rdescribe @us | cut -d';' -f5) + + if [ "$s_desc" = "$us_desc" -a -n "$s_desc" ]; then + echo "Session keyring is missing. Giving new one to parent process..." + keyctl new_session > /dev/null || skip "Could not create session keyring, test skipped" + fi + 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 + TEST_KEYRING=$(keyctl newring $TEST_KEYRING_NAME "@s" 2> /dev/null) + test -n "$TEST_KEYRING" || skip "Failed to create keyring in session keyring" load_key "$HEXKEY_16" user test_key "$TEST_KEYRING" || skip "Kernel keyring service is useless on this system, test skipped." } diff --git a/tests/keyring-test b/tests/keyring-test index 6d75813de..63a73666e 100755 --- a/tests/keyring-test +++ b/tests/keyring-test @@ -26,7 +26,7 @@ remove_mapping() [ -b /dev/mapper/$DEV_ZERO ] && dmsetup remove --retry $DEV_ZERO # unlink whole test keyring - [ -n "$TEST_KEYRING" ] && keyctl unlink $TEST_KEYRING "@u" >/dev/null + [ -n "$TEST_KEYRING" ] && keyctl unlink $TEST_KEYRING >/dev/null } skip() @@ -68,10 +68,17 @@ dm_crypt_keyring_support() } test_and_prepare_keyring() { + local s_desc=$(keyctl rdescribe @s | cut -d';' -f5) + local us_desc=$(keyctl rdescribe @us | cut -d';' -f5) + + if [ "$s_desc" = "$us_desc" -a -n "$s_desc" ]; then + echo "Session keyring is missing. Giving new one to parent process..." + keyctl new_session > /dev/null || skip "Could not create session keyring, test skipped" + fi + 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 + TEST_KEYRING=$(keyctl newring $TEST_KEYRING_NAME "@s" 2> /dev/null) + test -n "$TEST_KEYRING" || skip "Failed to create keyring in session keyring" load_key user test_key test_data "$TEST_KEYRING" || skip "Kernel keyring service is useless on this system, test skipped." } From b3f8c8cc3edfdc4f6cfe1e05b42cea44177f43a4 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Wed, 15 Apr 2026 17:18:33 +0200 Subject: [PATCH 066/244] tests: if keyctl is missing skip only keyring related tests. --- tests/compat-test-opal | 22 ++++++++++------------ tests/compat-test2 | 26 ++++++++++++-------------- 2 files changed, 22 insertions(+), 26 deletions(-) diff --git a/tests/compat-test-opal b/tests/compat-test-opal index cb7cadf06..e5b22045a 100755 --- a/tests/compat-test-opal +++ b/tests/compat-test-opal @@ -52,8 +52,10 @@ remove_mapping() $KEY_FILE0 $KEY_FILE1 $KEY_PWD1 $NO_HEADER_IMG >/dev/null 2>&1 # unlink whole test keyring - [ -n "$TEST_KEYRING" ] && keyctl unlink $TEST_KEYRING >/dev/null - unset TEST_KEYRING + if [ -n "$TEST_KEYRING" ]; then + keyctl unlink $TEST_KEYRING >/dev/null + unset TEST_KEYRING + fi } fail() @@ -197,8 +199,6 @@ dm_crypt_keyring_new_kernel() } test_and_prepare_keyring() { - command -v keyctl >/dev/null || skip "Cannot find keyctl, test skipped" - local s_desc=$(keyctl rdescribe @s | cut -d';' -f5) local us_desc=$(keyctl rdescribe @us | cut -d';' -f5) @@ -227,11 +227,9 @@ setup_luks2_env() { echo -e "$PWD1\n$OPAL2_ADMIN_PIN" | $CRYPTSETUP luksFormat --type luks2 --hw-opal $FAST_PBKDF_OPT $OPAL2_DEV || fail $CRYPTSETUP luksDump $OPAL2_DEV >/dev/null || fail echo $PWD1 | $CRYPTSETUP open $OPAL2_DEV $DEV_NAME || fail - HAVE_KEYRING=$($CRYPTSETUP status $DEV_NAME | grep "keyring") - if [ -n "$HAVE_KEYRING" ]; then - HAVE_KEYRING=1 - else - HAVE_KEYRING=0 + local check_keyring=$($CRYPTSETUP status $DEV_NAME | grep "key location: keyring") + if [ -n "$check_keyring" ]; then + command -v keyctl >/dev/null && HAVE_KEYRING=1 fi if $($CRYPTSETUP --version | grep -q "BLKID"); then HAVE_BLKID=1 @@ -994,7 +992,7 @@ if dm_crypt_keyring_support && dm_crypt_keyring_new_kernel; then fi prepare "[28] tokens" wipe -if [ $HAVE_KEYRING -gt 0 -a -d /proc/sys/kernel/keys ]; then +if [ -n "$HAVE_KEYRING" ]; then test_and_prepare_keyring echo -e "$PWD1\n$OPAL2_ADMIN_PIN" | $CRYPTSETUP luksFormat $FAST_PBKDF_OPT --type luks2 --hw-opal $OPAL2_DEV -q || fail run_token_tests @@ -1216,7 +1214,7 @@ echo $PWD4 | $CRYPTSETUP open -q --test-passphrase -S5 $OPAL2_DEV || fail $CRYPTSETUP luksAddKey -q $FAST_PBKDF_OPT -S6 --volume-key-file $VK_FILE --new-keyfile $KEY5 $OPAL2_DEV || fail $CRYPTSETUP open --test-passphrase -q -S6 -d $KEY5 $OPAL2_DEV || fail -if [ $HAVE_KEYRING -gt 0 -a -d /proc/sys/kernel/keys ]; then +if [ -n "$HAVE_KEYRING" ]; then test_and_prepare_keyring load_key user $TEST_TOKEN0 $PWD1 "$TEST_KEYRING" || fail "Cannot load 32 byte user key type" load_key user $TEST_TOKEN1 $PWDW "$TEST_KEYRING" || fail "Cannot load 32 byte user key type" @@ -1266,7 +1264,7 @@ if [ $HAVE_KEYRING -gt 0 -a -d /proc/sys/kernel/keys ]; then $CRYPTSETUP open -q --test-passphrase --token-only --token-id 0 -q $OPAL2_DEV || fail fi -if [ $HAVE_KEYRING -gt 0 -a -d /proc/sys/kernel/keys ]; then +if [ -n "$HAVE_KEYRING" ]; then prepare "[38] Link VK to a keyring and use custom VK type." wipe echo $PWD1 | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 $OPAL2_DEV 2> /dev/null || fail diff --git a/tests/compat-test2 b/tests/compat-test2 index 7920133dd..9edcdfd58 100755 --- a/tests/compat-test2 +++ b/tests/compat-test2 @@ -68,8 +68,10 @@ remove_mapping() $KEY_FILE0 $KEY_FILE1 >/dev/null 2>&1 # unlink whole test keyring - [ -n "$TEST_KEYRING" ] && keyctl unlink $TEST_KEYRING >/dev/null - unset TEST_KEYRING + if [ -n "$TEST_KEYRING" ]; then + keyctl unlink $TEST_KEYRING >/dev/null + unset TEST_KEYRING + fi rmmod scsi_debug >/dev/null 2>&1 scsi_debug_teardown $DEV @@ -255,8 +257,6 @@ dm_crypt_sector_size_support() } test_and_prepare_keyring() { - command -v keyctl >/dev/null || skip "Cannot find keyctl, test skipped" - local s_desc=$(keyctl rdescribe @s | cut -d';' -f5) local us_desc=$(keyctl rdescribe @us | cut -d';' -f5) @@ -286,11 +286,9 @@ 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 + local check_keyring=$($CRYPTSETUP status $DEV_NAME | grep "key location: keyring") + if [ -n "$check_keyring" ]; then + command -v keyctl >/dev/null && HAVE_KEYRING=1 fi if $($CRYPTSETUP --version | grep -q "BLKID"); then HAVE_BLKID=1 @@ -784,7 +782,7 @@ echo $PWD1 | $CRYPTSETUP luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV || fai 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 - if [ $HAVE_KEYRING -gt 0 -a -d /proc/sys/kernel/keys ]; then + if [ -n "$HAVE_KEYRING" ]; then test_and_prepare_keyring load_key user $TEST_KEY_DESC2 $PWD1 "$TEST_KEYRING" || skip "Kernel keyring service is useless on this system, test skipped." $CRYPTSETUP token add $LOOPDEV --key-description $TEST_KEY_DESC2 --token-id 1 || fail @@ -1162,7 +1160,7 @@ 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 +if [ -n "$HAVE_KEYRING" ]; then test_and_prepare_keyring @@ -1480,7 +1478,7 @@ echo $PWD4 | $CRYPTSETUP open -q --test-passphrase -S5 $IMG || fail $CRYPTSETUP luksAddKey -q $FAST_PBKDF_OPT -S6 --volume-key-file $VK_FILE --new-keyfile $KEY5 $IMG || fail $CRYPTSETUP open --test-passphrase -q -S6 -d $KEY5 $IMG || fail -if [ $HAVE_KEYRING -gt 0 -a -d /proc/sys/kernel/keys ]; then +if [ -n "$HAVE_KEYRING" ]; then test_and_prepare_keyring load_key user $TEST_KEY_DESC0 $PWD1 "$TEST_KEYRING" || fail "Cannot load 32 byte user key type" load_key user $TEST_KEY_DESC1 $PWDW "$TEST_KEYRING" || fail "Cannot load 32 byte user key type" @@ -1540,7 +1538,7 @@ if dm_crypt_capi_support; then echo $PWD1 | $CRYPTSETUP reencrypt $LOOPDEV >/dev/null 2>&1 && fail fi -if [ $HAVE_KEYRING -gt 0 -a -d /proc/sys/kernel/keys ]; then +if [ -n "$HAVE_KEYRING" ]; then prepare "[45] Link VK to a keyring and use custom VK type." wipe echo $PWD1 | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV 2> /dev/null || fail @@ -1671,7 +1669,7 @@ if [ $? -eq 0 ] ; then $CRYPTSETUP close $DEV_NAME || fail fi -if [ $HAVE_KEYRING -gt 0 -a -d /proc/sys/kernel/keys ]; then +if [ -n "$HAVE_KEYRING" ]; then prepare "[49] Keyring description use" wipe test_and_prepare_keyring load_key user $TEST_KEY_DESC1 $PWD1 "$TEST_KEYRING" || fail From dee718088ac4b608371faf488b279b0c0e7dce79 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Thu, 16 Apr 2026 15:55:50 +0200 Subject: [PATCH 067/244] tests: unlink all kernel keys used in compat tests. --- tests/compat-test-opal | 17 +++++++++++++++-- tests/compat-test2 | 33 +++++++++++++++++++++++++++++---- 2 files changed, 44 insertions(+), 6 deletions(-) diff --git a/tests/compat-test-opal b/tests/compat-test-opal index e5b22045a..b26c50118 100755 --- a/tests/compat-test-opal +++ b/tests/compat-test-opal @@ -31,6 +31,7 @@ PWDW="rUkL4RUryBom" TEST_KEYRING_NAME="compattestopal_keyring" TEST_TOKEN0="compattest2_desc0" TEST_TOKEN1="compattest2_desc1" +KEY_NAME="cryptsetup:test_volume_key_id" VK_FILE="compattest2_vkfile" IMPORT_TOKEN="{\"type\":\"some_type\",\"keyslots\":[],\"base64_data\":\"zxI7vKB1Qwl4VPB4D-N-OgcC14hPCG0IDu8O7eCqaQ\"}" TOKEN_FILE0=test-token-file0 @@ -51,9 +52,22 @@ remove_mapping() $HEADER_LUKS2_INV missing-file $TOKEN_FILE0 $TOKEN_FILE1 test_image_* \ $KEY_FILE0 $KEY_FILE1 $KEY_PWD1 $NO_HEADER_IMG >/dev/null 2>&1 - # unlink whole test keyring + # unlink all test keys if [ -n "$TEST_KEYRING" ]; then keyctl unlink $TEST_KEYRING >/dev/null + + # some tests link keys in standard keyrings to test basic functionality. + # Use best effort to do proper cleanup. All other keys should always + # go in $TEST_KEYRING + keyctl unlink %user:$KEY_NAME >/dev/null 2>&1 + keyctl unlink %logon:$KEY_NAME >/dev/null 2>&1 + + keyctl unlink %user:$KEY_NAME "@u" >/dev/null 2>&1 + keyctl unlink %logon:$KEY_NAME "@u" >/dev/null 2>&1 + + keyctl unlink %user:$KEY_NAME "@us" >/dev/null 2>&1 + keyctl unlink %logon:$KEY_NAME "@us" >/dev/null 2>&1 + unset TEST_KEYRING fi } @@ -1268,7 +1282,6 @@ if [ -n "$HAVE_KEYRING" ]; then prepare "[38] Link VK to a keyring and use custom VK type." wipe echo $PWD1 | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 $OPAL2_DEV 2> /dev/null || fail - KEY_NAME="cryptsetup:test_volume_key_id" test_and_prepare_keyring KID=$(echo -n test | keyctl padd user my_token @s) keyctl unlink $KID >/dev/null 2>&1 @s && SESSION_KEYRING_WORKS=1 diff --git a/tests/compat-test2 b/tests/compat-test2 index 9edcdfd58..318d55a54 100755 --- a/tests/compat-test2 +++ b/tests/compat-test2 @@ -36,6 +36,9 @@ TEST_KEYRING_NAME="compattest2_keyring" TEST_KEY_DESC0="compattest2_desc0" TEST_KEY_DESC1="compattest2_desc1" TEST_KEY_DESC2="compattest2_desc2" +KEY_NAME="cryptsetup:test_volume_key_id" +KEY_NAME2="cryptsetup:test_volume_key_id2" +KEY_NAME3="cryptsetup:test_volume_key_id3" VK_FILE="compattest2_vkfile" IMPORT_TOKEN="{\"type\":\"some_type\",\"keyslots\":[],\"base64_data\":\"zxI7vKB1Qwl4VPB4D-N-OgcC14hPCG0IDu8O7eCqaQ\"}" TOKEN_FILE0=test-token-file0 @@ -67,9 +70,34 @@ remove_mapping() $HEADER_LUKS2_PV $HEADER_LUKS2_INV missing-file $TOKEN_FILE0 $TOKEN_FILE1 test_image_* \ $KEY_FILE0 $KEY_FILE1 >/dev/null 2>&1 - # unlink whole test keyring + # unlink all test keys if [ -n "$TEST_KEYRING" ]; then keyctl unlink $TEST_KEYRING >/dev/null + + # some tests link keys in standard keyrings to test basic functionality. + # Use best effort to do proper cleanup. All other keys should always + # go in $TEST_KEYRING + keyctl unlink %user:$KEY_NAME >/dev/null 2>&1 + keyctl unlink %logon:$KEY_NAME >/dev/null 2>&1 + + keyctl unlink %user:$KEY_NAME2 >/dev/null 2>&1 + keyctl unlink %logon:$KEY_NAME2 >/dev/null 2>&1 + + keyctl unlink %user:$KEY_NAME3 >/dev/null 2>&1 + keyctl unlink %logon:$KEY_NAME3 >/dev/null 2>&1 + + keyctl unlink %user:$KEY_NAME "@u" >/dev/null 2>&1 + keyctl unlink %logon:$KEY_NAME "@u" >/dev/null 2>&1 + + keyctl unlink %user:$KEY_NAME2 "@u" >/dev/null 2>&1 + keyctl unlink %logon:$KEY_NAME2 "@u" >/dev/null 2>&1 + + keyctl unlink %user:$KEY_NAME "@us" >/dev/null 2>&1 + keyctl unlink %logon:$KEY_NAME "@us" >/dev/null 2>&1 + + keyctl unlink %user:$KEY_NAME2 "@us" >/dev/null 2>&1 + keyctl unlink %logon:$KEY_NAME2 "@us" >/dev/null 2>&1 + unset TEST_KEYRING fi @@ -1542,9 +1570,6 @@ if [ -n "$HAVE_KEYRING" ]; then prepare "[45] Link VK to a keyring and use custom VK type." wipe echo $PWD1 | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV 2> /dev/null || fail - KEY_NAME="cryptsetup:test_volume_key_id" - KEY_NAME2="cryptsetup:test_volume_key_id2" - KEY_NAME3="cryptsetup:test_volume_key_id3" test_and_prepare_keyring KID=$(echo -n test | keyctl padd user my_token @s) keyctl unlink $KID >/dev/null 2>&1 @s && SESSION_KEYRING_WORKS=1 From 9fd1d55379134d5927916c379a3fc4c03ea184b0 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Thu, 16 Apr 2026 16:10:34 +0200 Subject: [PATCH 068/244] tests: fail compat tests when keyring can not be configured. This is used in luks2-reencryption-test for some time and it does not seem to cause issues. So sync it also to compat-test2 and compat-test-opal. --- tests/compat-test-opal | 9 ++++----- tests/compat-test2 | 9 ++++----- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/tests/compat-test-opal b/tests/compat-test-opal index b26c50118..6c9081738 100755 --- a/tests/compat-test-opal +++ b/tests/compat-test-opal @@ -218,14 +218,13 @@ test_and_prepare_keyring() { if [ "$s_desc" = "$us_desc" -a -n "$s_desc" ]; then echo "Session keyring is missing. Giving new one to parent process..." - keyctl new_session > /dev/null || skip "Could not create new session keyring, test skipped" + keyctl new_session > /dev/null || fail "Could not create new session keyring" fi - keyctl list "@s" > /dev/null || skip "Current session keyring is unreachable, test skipped" TEST_KEYRING=$(keyctl newring $TEST_KEYRING_NAME "@s" 2> /dev/null) - test -n "$TEST_KEYRING" || skip "Failed to create keyring in session keyring, test skipped" - keyctl search "@s" keyring $TEST_KEYRING_NAME > /dev/null 2>&1 || skip "Could not find test keyring in a session keyring, test skipped" - load_key user test_key test_data "$TEST_KEYRING" || skip "Kernel keyring service is useless on this system, test skipped" + test -n "$TEST_KEYRING" || fail "Failed to create keyring in session keyring" + keyctl search "@s" keyring $TEST_KEYRING_NAME > /dev/null 2>&1 || fail "Could not find test keyring in a session keyring" + load_key user test_key test_data "$TEST_KEYRING" || fail "Kernel keyring service is useless on this system" } # $1 type diff --git a/tests/compat-test2 b/tests/compat-test2 index 318d55a54..a1a59d724 100755 --- a/tests/compat-test2 +++ b/tests/compat-test2 @@ -290,14 +290,13 @@ test_and_prepare_keyring() { if [ "$s_desc" = "$us_desc" -a -n "$s_desc" ]; then echo "Session keyring is missing. Giving new one to parent process..." - keyctl new_session > /dev/null || skip "Could not create new session keyring, test skipped" + keyctl new_session > /dev/null || fail "Could not create new session keyring" fi - keyctl list "@s" > /dev/null || skip "Current session keyring is unreachable, test skipped" TEST_KEYRING=$(keyctl newring $TEST_KEYRING_NAME "@s" 2> /dev/null) - test -n "$TEST_KEYRING" || skip "Failed to create keyring in session keyring, test skipped" - keyctl search "@s" keyring $TEST_KEYRING_NAME > /dev/null 2>&1 || skip "Could not find test keyring in a session keyring, test skipped" - load_key user test_key test_data "$TEST_KEYRING" || skip "Kernel keyring service is useless on this system, test skipped" + test -n "$TEST_KEYRING" || fail "Failed to create keyring in session keyring" + keyctl search "@s" keyring $TEST_KEYRING_NAME > /dev/null 2>&1 || fail "Could not find test keyring in a session keyring" + load_key user test_key test_data "$TEST_KEYRING" || fail "Kernel keyring service is useless on this system" } # $1 type From c06f25c0c760214b66d42a8963fc9fc696eba94f Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Thu, 16 Apr 2026 16:12:42 +0200 Subject: [PATCH 069/244] tests: Remove unused USER_SESSION_KEYRING_WORKS variable --- tests/compat-test-opal | 2 -- tests/compat-test2 | 2 -- 2 files changed, 4 deletions(-) diff --git a/tests/compat-test-opal b/tests/compat-test-opal index 6c9081738..efa0a09f3 100755 --- a/tests/compat-test-opal +++ b/tests/compat-test-opal @@ -1284,8 +1284,6 @@ if [ -n "$HAVE_KEYRING" ]; then test_and_prepare_keyring KID=$(echo -n test | keyctl padd user my_token @s) keyctl unlink $KID >/dev/null 2>&1 @s && SESSION_KEYRING_WORKS=1 - KID=$(echo -n test | keyctl padd user my_token @us) - keyctl unlink $KID >/dev/null 2>&1 @us && USER_SESSION_KEYRING_WORKS=1 test_vk_link $KEY_NAME "@u" test_vk_link $KEY_NAME "@u" "user" diff --git a/tests/compat-test2 b/tests/compat-test2 index a1a59d724..15c9711d7 100755 --- a/tests/compat-test2 +++ b/tests/compat-test2 @@ -1572,8 +1572,6 @@ if [ -n "$HAVE_KEYRING" ]; then test_and_prepare_keyring KID=$(echo -n test | keyctl padd user my_token @s) keyctl unlink $KID >/dev/null 2>&1 @s && SESSION_KEYRING_WORKS=1 - KID=$(echo -n test | keyctl padd user my_token @us) - keyctl unlink $KID >/dev/null 2>&1 @us && USER_SESSION_KEYRING_WORKS=1 test_vk_link $KEY_NAME "@u" test_vk_link $KEY_NAME "@u" "user" From b6dd0273836ff5bbd59d10b026e1e0a834e2ac01 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Thu, 16 Apr 2026 16:14:31 +0200 Subject: [PATCH 070/244] tests: Make use of session keyring mandatory. All necessary checks are already in test_and_prepare_keyring. --- tests/compat-test-opal | 10 ++++------ tests/compat-test2 | 20 +++++++++----------- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/tests/compat-test-opal b/tests/compat-test-opal index efa0a09f3..021c2a915 100755 --- a/tests/compat-test-opal +++ b/tests/compat-test-opal @@ -1282,14 +1282,12 @@ if [ -n "$HAVE_KEYRING" ]; then echo $PWD1 | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 $OPAL2_DEV 2> /dev/null || fail test_and_prepare_keyring - KID=$(echo -n test | keyctl padd user my_token @s) - keyctl unlink $KID >/dev/null 2>&1 @s && SESSION_KEYRING_WORKS=1 test_vk_link $KEY_NAME "@u" test_vk_link $KEY_NAME "@u" "user" - [[ ! -z "$SESSION_KEYRING_WORKS" ]] && test_vk_link $KEY_NAME "@s" - [[ ! -z "$SESSION_KEYRING_WORKS" ]] && test_vk_link $KEY_NAME "@s" "logon" - [[ ! -z "$SESSION_KEYRING_WORKS" ]] && test_vk_link $KEY_NAME "@s" "user" + test_vk_link $KEY_NAME "@s" + test_vk_link $KEY_NAME "@s" "logon" + test_vk_link $KEY_NAME "@s" "user" test_vk_link $KEY_NAME "%:$TEST_KEYRING_NAME" test_vk_link $KEY_NAME "%:$TEST_KEYRING_NAME" "user" test_vk_link $KEY_NAME "%:$TEST_KEYRING_NAME" "logon" @@ -1300,7 +1298,7 @@ if [ -n "$HAVE_KEYRING" ]; then test_vk_link_with_passphrase_check $KEY_NAME "%:$TEST_KEYRING_NAME" "user" test_vk_link_with_passphrase_check $KEY_NAME "%:$TEST_KEYRING_NAME" "logon" - [[ ! -z "$SESSION_KEYRING_WORKS" ]] && test_vk_link_and_reactivate $KEY_NAME "@s" "user" + test_vk_link_and_reactivate $KEY_NAME "@s" "user" test_vk_link_and_reactivate $KEY_NAME "%:$TEST_KEYRING_NAME" "user" # explicitly specify keyring key type test_vk_link_and_reactivate $KEY_NAME "%keyring:$TEST_KEYRING_NAME" "user" diff --git a/tests/compat-test2 b/tests/compat-test2 index 15c9711d7..19d66548a 100755 --- a/tests/compat-test2 +++ b/tests/compat-test2 @@ -1570,21 +1570,19 @@ if [ -n "$HAVE_KEYRING" ]; then echo $PWD1 | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV 2> /dev/null || fail test_and_prepare_keyring - KID=$(echo -n test | keyctl padd user my_token @s) - keyctl unlink $KID >/dev/null 2>&1 @s && SESSION_KEYRING_WORKS=1 test_vk_link $KEY_NAME "@u" test_vk_link $KEY_NAME "@u" "user" - [[ ! -z "$SESSION_KEYRING_WORKS" ]] && test_vk_link $KEY_NAME "@s" - [[ ! -z "$SESSION_KEYRING_WORKS" ]] && test_vk_link $KEY_NAME "@s" "logon" - [[ ! -z "$SESSION_KEYRING_WORKS" ]] && test_vk_link $KEY_NAME "@s" "user" + test_vk_link $KEY_NAME "@s" + test_vk_link $KEY_NAME "@s" "logon" + test_vk_link $KEY_NAME "@s" "user" test_vk_link $KEY_NAME "%:$TEST_KEYRING_NAME" test_vk_link $KEY_NAME "%:$TEST_KEYRING_NAME" "user" test_vk_link $KEY_NAME "%:$TEST_KEYRING_NAME" "logon" # explicitly specify keyring key type test_vk_link $KEY_NAME "%keyring:$TEST_KEYRING_NAME" - [[ ! -z "$SESSION_KEYRING_WORKS" ]] && test_vk_link_and_reactivate $KEY_NAME "@s" "user" + test_vk_link_and_reactivate $KEY_NAME "@s" "user" test_vk_link_and_reactivate $KEY_NAME "%:$TEST_KEYRING_NAME" "user" # explicitly specify keyring key type test_vk_link_and_reactivate $KEY_NAME "%keyring:$TEST_KEYRING_NAME" "user" @@ -1628,17 +1626,17 @@ if [ -n "$HAVE_KEYRING" ]; then test_reencrypt_vk_link $KEY_NAME $KEY_NAME2 "@u" test_reencrypt_vk_link $KEY_NAME $KEY_NAME2 "@u" "user" - [[ ! -z "$SESSION_KEYRING_WORKS" ]] && test_reencrypt_vk_link $KEY_NAME $KEY_NAME2 "@s" - [[ ! -z "$SESSION_KEYRING_WORKS" ]] && test_reencrypt_vk_link $KEY_NAME $KEY_NAME2 "@s" "logon" - [[ ! -z "$SESSION_KEYRING_WORKS" ]] && test_reencrypt_vk_link $KEY_NAME $KEY_NAME2 "@s" "user" + test_reencrypt_vk_link $KEY_NAME $KEY_NAME2 "@s" + test_reencrypt_vk_link $KEY_NAME $KEY_NAME2 "@s" "logon" + test_reencrypt_vk_link $KEY_NAME $KEY_NAME2 "@s" "user" test_reencrypt_vk_link $KEY_NAME $KEY_NAME2 "%:$TEST_KEYRING_NAME" test_reencrypt_vk_link $KEY_NAME $KEY_NAME2 "%:$TEST_KEYRING_NAME" "user" test_reencrypt_vk_link $KEY_NAME $KEY_NAME2 "%:$TEST_KEYRING_NAME" "logon" # explicitly specify keyring key type test_reencrypt_vk_link $KEY_NAME $KEY_NAME2 "%keyring:$TEST_KEYRING_NAME" - [[ ! -z "$SESSION_KEYRING_WORKS" ]] && test_reencrypt_vk_link_and_reactivate $KEY_NAME $KEY_NAME2 "@s" - [[ ! -z "$SESSION_KEYRING_WORKS" ]] && test_reencrypt_vk_link_and_reactivate $KEY_NAME $KEY_NAME2 "@s" "user" + test_reencrypt_vk_link_and_reactivate $KEY_NAME $KEY_NAME2 "@s" + test_reencrypt_vk_link_and_reactivate $KEY_NAME $KEY_NAME2 "@s" "user" test_reencrypt_vk_link_and_reactivate $KEY_NAME $KEY_NAME2 "%:$TEST_KEYRING_NAME" test_reencrypt_vk_link_and_reactivate $KEY_NAME $KEY_NAME2 "%:$TEST_KEYRING_NAME" "user" From 2b8adab7c857b959f846a8b681c355d3580ab77b Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Thu, 16 Apr 2026 17:03:06 +0200 Subject: [PATCH 071/244] tests: always fail compat-test2 if key load fails. We do all necessary checks in test_and_prepare_keyring. --- tests/compat-test2 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/compat-test2 b/tests/compat-test2 index 19d66548a..97cb68d34 100755 --- a/tests/compat-test2 +++ b/tests/compat-test2 @@ -811,12 +811,12 @@ if dm_crypt_keyring_support; then echo | $CRYPTSETUP -q resize --size 100 $DEV_NAME 2>/dev/null && fail if [ -n "$HAVE_KEYRING" ]; then test_and_prepare_keyring - load_key user $TEST_KEY_DESC2 $PWD1 "$TEST_KEYRING" || skip "Kernel keyring service is useless on this system, test skipped." + load_key user $TEST_KEY_DESC2 $PWD1 "$TEST_KEYRING" || fail $CRYPTSETUP token add $LOOPDEV --key-description $TEST_KEY_DESC2 --token-id 1 || fail $CRYPTSETUP -q resize --size 99 $DEV_NAME <&- || fail $CRYPTSETUP -q status $DEV_NAME | grep "size:" | grep -q "99 \[512-byte units\]" || fail #replace kernel key with wrong pass - load_key user $TEST_KEY_DESC2 $PWD2 "$TEST_KEYRING" || skip "Kernel keyring service is useless on this system, test skipped." + load_key user $TEST_KEY_DESC2 $PWD2 "$TEST_KEYRING" || fail # must fail due to --token-only echo $PWD1 | $CRYPTSETUP -q resize --token-only --size 100 $DEV_NAME && fail $CRYPTSETUP -q status $DEV_NAME | grep "size:" | grep -q "100 \[512-byte units\]" && fail From e6b609bb27b6c040576d85222b909573d6139cc3 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Tue, 14 Apr 2026 15:39:45 +0200 Subject: [PATCH 072/244] Add mention about AI to CONTRIBUTING.md We use similar approach and formulation by EFF: https://www.eff.org/about/opportunities/volunteer/coding-with-eff The policy can be changed in future. Fixes: #986 --- CONTRIBUTING.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e929b6e67..8852726ef 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -11,7 +11,7 @@ We welcome contributions from everyone. Cryptsetup is an independent project with much volunteer effort, and our resources are limited. Following the guidelines specified in this file makes it easier for us to process your issue. -Project maintainers can remove or reject abusive or otherwise unacceptable comments or code. +Project maintainers can remove or reject abusive contributions, code apparently submitted by artificial intelligence (AI) without human interaction, or otherwise unacceptable comments or code. Git repository -------------- @@ -43,6 +43,10 @@ Alternatively (for trivial changes), you can send a patch to [cryptsetup mailing Please do not write personal emails with questions or patches to maintainers and developers. +Please refrain from submissions that you haven't thoroughly understood, reviewed, and tested. +Please disclose if your contribution was AI-generated. +Descriptions and comments should be made by you. + ### Project structure Cryptsetup projects include a libcryptsetup library, tools, token plugins, documentation, and a test suite. From fe0afb9046e6cd3ad5bb53f091fdabb4d2276de3 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Fri, 17 Apr 2026 17:36:20 +0200 Subject: [PATCH 073/244] ci: Replace jq with bash wrapper To be used later. --- .../generate-luks2-area-in-json-hdr-space-json0.img.sh | 4 ++-- .../generators/generate-luks2-argon2-leftover-params.img.sh | 6 +++--- tests/generators/generate-luks2-invalid-json-size-c0.img.sh | 4 ++-- tests/generators/generate-luks2-invalid-json-size-c1.img.sh | 4 ++-- tests/generators/generate-luks2-invalid-json-size-c2.img.sh | 4 ++-- .../generate-luks2-invalid-keyslots-size-c0.img.sh | 4 ++-- .../generate-luks2-invalid-keyslots-size-c1.img.sh | 4 ++-- .../generate-luks2-invalid-keyslots-size-c2.img.sh | 4 ++-- tests/generators/generate-luks2-invalid-tokens.img.sh | 4 ++-- tests/generators/generate-luks2-invalid-top-objects.img.sh | 4 ++-- tests/generators/generate-luks2-keyslot-invalid-af.img.sh | 4 ++-- .../generate-luks2-keyslot-invalid-area-size.img.sh | 4 ++-- tests/generators/generate-luks2-keyslot-invalid-area.img.sh | 4 ++-- .../generate-luks2-keyslot-invalid-objects.img.sh | 4 ++-- .../generators/generate-luks2-keyslot-missing-digest.img.sh | 6 +++--- .../generate-luks2-keyslot-too-many-digests.img.sh | 4 ++-- .../generate-luks2-metadata-size-128k-secondary.img.sh | 4 ++-- tests/generators/generate-luks2-metadata-size-128k.img.sh | 4 ++-- .../generate-luks2-metadata-size-16k-secondary.img.sh | 4 ++-- .../generate-luks2-metadata-size-1m-secondary.img.sh | 4 ++-- tests/generators/generate-luks2-metadata-size-1m.img.sh | 4 ++-- .../generate-luks2-metadata-size-256k-secondary.img.sh | 4 ++-- tests/generators/generate-luks2-metadata-size-256k.img.sh | 4 ++-- .../generate-luks2-metadata-size-2m-secondary.img.sh | 4 ++-- tests/generators/generate-luks2-metadata-size-2m.img.sh | 4 ++-- .../generate-luks2-metadata-size-32k-secondary.img.sh | 4 ++-- tests/generators/generate-luks2-metadata-size-32k.img.sh | 4 ++-- .../generate-luks2-metadata-size-4m-secondary.img.sh | 4 ++-- tests/generators/generate-luks2-metadata-size-4m.img.sh | 4 ++-- .../generate-luks2-metadata-size-512k-secondary.img.sh | 4 ++-- tests/generators/generate-luks2-metadata-size-512k.img.sh | 4 ++-- .../generate-luks2-metadata-size-64k-inv-area-c0.img.sh | 4 ++-- .../generate-luks2-metadata-size-64k-inv-area-c1.img.sh | 4 ++-- ...rate-luks2-metadata-size-64k-inv-keyslots-size-c0.img.sh | 4 ++-- .../generate-luks2-metadata-size-64k-secondary.img.sh | 4 ++-- tests/generators/generate-luks2-metadata-size-64k.img.sh | 4 ++-- .../generate-luks2-metadata-size-invalid-secondary.img.sh | 4 ++-- .../generators/generate-luks2-metadata-size-invalid.img.sh | 4 ++-- ...nerate-luks2-missing-keyslot-referenced-in-digest.img.sh | 6 +++--- ...enerate-luks2-missing-keyslot-referenced-in-token.img.sh | 4 ++-- ...nerate-luks2-missing-segment-referenced-in-digest.img.sh | 6 +++--- .../generate-luks2-non-compact-json-4k-token-0.img.sh | 2 +- .../generate-luks2-non-compact-json-token-0.img.sh | 2 +- .../generate-luks2-overlapping-areas-c0-json0.img.sh | 4 ++-- .../generate-luks2-overlapping-areas-c1-json0.img.sh | 4 ++-- .../generate-luks2-overlapping-areas-c2-json0.img.sh | 4 ++-- .../generate-luks2-pbkdf2-leftover-params-0.img.sh | 6 +++--- .../generate-luks2-pbkdf2-leftover-params-1.img.sh | 6 +++--- .../generate-luks2-segment-crypt-empty-encryption.img.sh | 4 ++-- .../generate-luks2-segment-crypt-missing-encryption.img.sh | 4 ++-- .../generate-luks2-segment-crypt-missing-ivoffset.img.sh | 4 ++-- .../generate-luks2-segment-crypt-missing-sectorsize.img.sh | 4 ++-- .../generate-luks2-segment-crypt-wrong-encryption.img.sh | 4 ++-- .../generate-luks2-segment-crypt-wrong-ivoffset.img.sh | 4 ++-- .../generate-luks2-segment-crypt-wrong-sectorsize-0.img.sh | 4 ++-- .../generate-luks2-segment-crypt-wrong-sectorsize-1.img.sh | 4 ++-- .../generate-luks2-segment-crypt-wrong-sectorsize-2.img.sh | 4 ++-- .../generators/generate-luks2-segment-missing-offset.img.sh | 4 ++-- tests/generators/generate-luks2-segment-missing-size.img.sh | 4 ++-- tests/generators/generate-luks2-segment-missing-type.img.sh | 4 ++-- tests/generators/generate-luks2-segment-two.img.sh | 4 ++-- tests/generators/generate-luks2-segment-unknown-type.img.sh | 4 ++-- .../generate-luks2-segment-wrong-backup-key-0.img.sh | 4 ++-- .../generate-luks2-segment-wrong-backup-key-1.img.sh | 4 ++-- .../generate-luks2-segment-wrong-flags-element.img.sh | 4 ++-- tests/generators/generate-luks2-segment-wrong-flags.img.sh | 4 ++-- tests/generators/generate-luks2-segment-wrong-offset.img.sh | 4 ++-- tests/generators/generate-luks2-segment-wrong-size-0.img.sh | 4 ++-- tests/generators/generate-luks2-segment-wrong-size-1.img.sh | 4 ++-- tests/generators/generate-luks2-segment-wrong-size-2.img.sh | 4 ++-- tests/generators/generate-luks2-segment-wrong-type.img.sh | 4 ++-- .../generate-luks2-uint64-max-segment-size.img.sh | 4 ++-- .../generate-luks2-uint64-overflow-segment-size.img.sh | 4 ++-- .../generate-luks2-uint64-signed-segment-size.img.sh | 4 ++-- tests/generators/lib.sh | 5 +++++ 75 files changed, 157 insertions(+), 152 deletions(-) diff --git a/tests/generators/generate-luks2-area-in-json-hdr-space-json0.img.sh b/tests/generators/generate-luks2-area-in-json-hdr-space-json0.img.sh index b1f85a9fc..061e5ea99 100755 --- a/tests/generators/generate-luks2-area-in-json-hdr-space-json0.img.sh +++ b/tests/generators/generate-luks2-area-in-json-hdr-space-json0.img.sh @@ -19,7 +19,7 @@ generate() # make area 7 access the luks2 header space OFFS=$((2*LUKS2_HDR_SIZE*512-1)) LEN=1 - json_str=$(jq -c --arg off $OFFS --arg len $LEN \ + json_str=$(_jq --arg off $OFFS --arg len $LEN \ '.keyslots."0".area.offset = $off | .keyslots."0".area.size = $len' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 @@ -33,7 +33,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c --arg off $OFFS --arg len $LEN \ + _jq --arg off $OFFS --arg len $LEN \ 'if (.keyslots."0".area.offset != $off) or (.keyslots."0".area.size != $len) then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-argon2-leftover-params.img.sh b/tests/generators/generate-luks2-argon2-leftover-params.img.sh index a0d920c14..4ad808737 100755 --- a/tests/generators/generate-luks2-argon2-leftover-params.img.sh +++ b/tests/generators/generate-luks2-argon2-leftover-params.img.sh @@ -17,8 +17,8 @@ generate() { # add keyslot 1 to second digest - obj_len=$(jq -c -M '.keyslots."1".kdf | length' $TMPDIR/json0) - json_str=$(jq -r -c -M '.keyslots."1".kdf.type = "pbkdf2" | .keyslots."1".kdf.iterations = 1001 | .keyslots."1".kdf.hash = "sha256"' $TMPDIR/json0) + obj_len=$(_jq -M '.keyslots."1".kdf | length' $TMPDIR/json0) + json_str=$(_jq -r -M '.keyslots."1".kdf.type = "pbkdf2" | .keyslots."1".kdf.iterations = 1001 | .keyslots."1".kdf.hash = "sha256"' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -32,7 +32,7 @@ check() lib_hdr0_checksum || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - new_obj_len=$(jq -c -M '.keyslots."1".kdf | length' $TMPDIR/json_res0) + new_obj_len=$(_jq -M '.keyslots."1".kdf | length' $TMPDIR/json_res0) test $((obj_len+2)) -eq $new_obj_len || exit 2 } diff --git a/tests/generators/generate-luks2-invalid-json-size-c0.img.sh b/tests/generators/generate-luks2-invalid-json-size-c0.img.sh index 2991d87af..ee88cfc38 100755 --- a/tests/generators/generate-luks2-invalid-json-size-c0.img.sh +++ b/tests/generators/generate-luks2-invalid-json-size-c0.img.sh @@ -16,7 +16,7 @@ generate() { JS=$(((LUKS2_HDR_SIZE-LUKS2_BIN_HDR_SIZE)*512+4096)) - json_str=$(jq -c --arg js $JS '.config.json_size = ($js | tostring)' $TMPDIR/json0) + json_str=$(_jq --arg js $JS '.config.json_size = ($js | tostring)' $TMPDIR/json0) test -n "$json_str" || exit 2 test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 @@ -30,7 +30,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c --arg js $JS 'if .config.json_size != ($js | tostring ) + _jq --arg js $JS 'if .config.json_size != ($js | tostring ) then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-invalid-json-size-c1.img.sh b/tests/generators/generate-luks2-invalid-json-size-c1.img.sh index dddf99a32..73f176324 100755 --- a/tests/generators/generate-luks2-invalid-json-size-c1.img.sh +++ b/tests/generators/generate-luks2-invalid-json-size-c1.img.sh @@ -16,7 +16,7 @@ generate() { JS=$(((LUKS2_HDR_SIZE-LUKS2_BIN_HDR_SIZE)*512-4096)) - json_str=$(jq -c --arg js $JS '.config.json_size = ($js | tostring)' $TMPDIR/json0) + json_str=$(_jq --arg js $JS '.config.json_size = ($js | tostring)' $TMPDIR/json0) test -n "$json_str" || exit 2 test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 @@ -30,7 +30,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c --arg js $JS 'if .config.json_size != ($js | tostring ) + _jq --arg js $JS 'if .config.json_size != ($js | tostring ) then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-invalid-json-size-c2.img.sh b/tests/generators/generate-luks2-invalid-json-size-c2.img.sh index 47606185e..cb7afaaed 100755 --- a/tests/generators/generate-luks2-invalid-json-size-c2.img.sh +++ b/tests/generators/generate-luks2-invalid-json-size-c2.img.sh @@ -21,7 +21,7 @@ generate() TEST_MDA_SIZE_BYTES=$((TEST_MDA_SIZE*512)) TEST_JSN_SIZE=$((TEST_MDA_SIZE-LUKS2_BIN_HDR_SIZE)) - json_str=$(jq -c '.' $TMPDIR/json0) + json_str=$(_jq '.' $TMPDIR/json0) write_luks2_json "$json_str" $TMPDIR/json0 $TEST_JSN_SIZE write_luks2_json "$json_str" $TMPDIR/json1 $TEST_JSN_SIZE @@ -45,7 +45,7 @@ check() test "$str_res1" = "SKUL" || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c --arg js $JS 'if .config.json_size != ( $js | tostring ) + _jq --arg js $JS 'if .config.json_size != ( $js | tostring ) then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-invalid-keyslots-size-c0.img.sh b/tests/generators/generate-luks2-invalid-keyslots-size-c0.img.sh index 8d509db1b..4c2191854 100755 --- a/tests/generators/generate-luks2-invalid-keyslots-size-c0.img.sh +++ b/tests/generators/generate-luks2-invalid-keyslots-size-c0.img.sh @@ -18,7 +18,7 @@ generate() { # make area 7 being included in area 6 OFFS=$((2*LUKS2_HDR_SIZE*512)) - json_str=$(jq -c --arg off $OFFS '.config.keyslots_size = (.segments."0".offset | tonumber - ($off | tonumber) + 4096 | tostring)' $TMPDIR/json0) + json_str=$(_jq --arg off $OFFS '.config.keyslots_size = (.segments."0".offset | tonumber - ($off | tonumber) + 4096 | tostring)' $TMPDIR/json0) test -n "$json_str" || exit 2 # [.keyslots[].area.offset | tonumber] | max | tostring ---> max offset in keyslot areas test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 @@ -33,7 +33,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c --arg off $OFFS 'if .config.keyslots_size != ( .segments."0".offset | tonumber - ($off | tonumber) + 4096 | tostring ) + _jq --arg off $OFFS 'if .config.keyslots_size != ( .segments."0".offset | tonumber - ($off | tonumber) + 4096 | tostring ) then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-invalid-keyslots-size-c1.img.sh b/tests/generators/generate-luks2-invalid-keyslots-size-c1.img.sh index c66ffcfe7..cdcc31f3d 100755 --- a/tests/generators/generate-luks2-invalid-keyslots-size-c1.img.sh +++ b/tests/generators/generate-luks2-invalid-keyslots-size-c1.img.sh @@ -15,7 +15,7 @@ generate() { - json_str=$(jq -c '.config.keyslots_size = (.config.keyslots_size | tonumber - 1 | tostring)' $TMPDIR/json0) + json_str=$(_jq '.config.keyslots_size = (.config.keyslots_size | tonumber - 1 | tostring)' $TMPDIR/json0) test -n "$json_str" || exit 2 test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 @@ -29,7 +29,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if (.config.keyslots_size | tonumber % 4096) == 0 + _jq 'if (.config.keyslots_size | tonumber % 4096) == 0 then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-invalid-keyslots-size-c2.img.sh b/tests/generators/generate-luks2-invalid-keyslots-size-c2.img.sh index 4f96ef815..b5d905787 100755 --- a/tests/generators/generate-luks2-invalid-keyslots-size-c2.img.sh +++ b/tests/generators/generate-luks2-invalid-keyslots-size-c2.img.sh @@ -16,7 +16,7 @@ generate() { - json_str=$(jq '.config.keyslots_size = ([.keyslots[].area.size] | map(tonumber) | add - 4096 | tostring )' $TMPDIR/json0) + json_str=$(_jq '.config.keyslots_size = ([.keyslots[].area.size] | map(tonumber) | add - 4096 | tostring )' $TMPDIR/json0) test -n "$json_str" || exit 2 test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 @@ -30,7 +30,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if .config.keyslots_size != ([.keyslots[].area.size ] | map(tonumber) | add - 4096 | tostring) + _jq 'if .config.keyslots_size != ([.keyslots[].area.size ] | map(tonumber) | add - 4096 | tostring) then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-invalid-tokens.img.sh b/tests/generators/generate-luks2-invalid-tokens.img.sh index 6475bd447..31c4f370a 100755 --- a/tests/generators/generate-luks2-invalid-tokens.img.sh +++ b/tests/generators/generate-luks2-invalid-tokens.img.sh @@ -14,7 +14,7 @@ generate() { - json_str=$(jq -c 'del(.tokens) | .tokens = 42' $TMPDIR/json0) + json_str=$(_jq 'del(.tokens) | .tokens = 42' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -30,7 +30,7 @@ check() lib_hdr1_checksum || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if .tokens != 42 + _jq 'if .tokens != 42 then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-invalid-top-objects.img.sh b/tests/generators/generate-luks2-invalid-top-objects.img.sh index cbb51f4ec..f14205692 100755 --- a/tests/generators/generate-luks2-invalid-top-objects.img.sh +++ b/tests/generators/generate-luks2-invalid-top-objects.img.sh @@ -14,7 +14,7 @@ generate() { - json_str=$(jq -c 'del(.tokens) | .tokens = 42 | + json_str=$(_jq 'del(.tokens) | .tokens = 42 | del(.digests) | .digests = 42 | del(.keyslots) | .keyslots = [] | del(.segments) | .segments = "hi"' $TMPDIR/json0) @@ -33,7 +33,7 @@ check() lib_hdr1_checksum || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if (.tokens != 42) or (.digests != 42) or (.keyslots != []) or (.segments != "hi") + _jq 'if (.tokens != 42) or (.digests != 42) or (.keyslots != []) or (.segments != "hi") then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-keyslot-invalid-af.img.sh b/tests/generators/generate-luks2-keyslot-invalid-af.img.sh index 1825780ee..cc8704ed8 100755 --- a/tests/generators/generate-luks2-keyslot-invalid-af.img.sh +++ b/tests/generators/generate-luks2-keyslot-invalid-af.img.sh @@ -14,7 +14,7 @@ generate() { - json_str=$(jq -c 'del(.keyslots."0".af.type) | .keyslots."0".af.type = 42' $TMPDIR/json0) + json_str=$(_jq 'del(.keyslots."0".af.type) | .keyslots."0".af.type = 42' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -30,7 +30,7 @@ check() lib_hdr1_checksum || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if (.keyslots."0".af.type != 42) + _jq 'if (.keyslots."0".af.type != 42) then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-keyslot-invalid-area-size.img.sh b/tests/generators/generate-luks2-keyslot-invalid-area-size.img.sh index 59bfd1ee0..115b4966e 100755 --- a/tests/generators/generate-luks2-keyslot-invalid-area-size.img.sh +++ b/tests/generators/generate-luks2-keyslot-invalid-area-size.img.sh @@ -14,7 +14,7 @@ generate() { - json_str=$(jq -c '.keyslots."0"."area".size = "18446744073709551615"' $TMPDIR/json0) + json_str=$(_jq '.keyslots."0"."area".size = "18446744073709551615"' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -30,7 +30,7 @@ check() lib_hdr1_checksum || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if (.keyslots."0"."area".size != "18446744073709551615") + _jq 'if (.keyslots."0"."area".size != "18446744073709551615") then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-keyslot-invalid-area.img.sh b/tests/generators/generate-luks2-keyslot-invalid-area.img.sh index 5d1443911..9389164ed 100755 --- a/tests/generators/generate-luks2-keyslot-invalid-area.img.sh +++ b/tests/generators/generate-luks2-keyslot-invalid-area.img.sh @@ -14,7 +14,7 @@ generate() { - json_str=$(jq -c 'del(.keyslots."0".area) | .keyslots."0".area = 42' $TMPDIR/json0) + json_str=$(_jq 'del(.keyslots."0".area) | .keyslots."0".area = 42' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -30,7 +30,7 @@ check() lib_hdr1_checksum || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if (.keyslots."0".area != 42) + _jq 'if (.keyslots."0".area != 42) then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-keyslot-invalid-objects.img.sh b/tests/generators/generate-luks2-keyslot-invalid-objects.img.sh index 46bedd5a2..d69d825b9 100755 --- a/tests/generators/generate-luks2-keyslot-invalid-objects.img.sh +++ b/tests/generators/generate-luks2-keyslot-invalid-objects.img.sh @@ -14,7 +14,7 @@ generate() { - json_str=$(jq -c 'del(.keyslots."0".kdf) | .keyslots."0".kdf = 42 | + json_str=$(_jq 'del(.keyslots."0".kdf) | .keyslots."0".kdf = 42 | del(.keyslots."0".af) | .keyslots."0".af = 42' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 @@ -31,7 +31,7 @@ check() lib_hdr1_checksum || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if (.keyslots."0".kdf != 42) or (.keyslots."0".af != 42) + _jq 'if (.keyslots."0".kdf != 42) or (.keyslots."0".af != 42) then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-keyslot-missing-digest.img.sh b/tests/generators/generate-luks2-keyslot-missing-digest.img.sh index c675783b4..4b74284ed 100755 --- a/tests/generators/generate-luks2-keyslot-missing-digest.img.sh +++ b/tests/generators/generate-luks2-keyslot-missing-digest.img.sh @@ -17,9 +17,9 @@ generate() { read -r json_str_orig < $TMPDIR/json0 - arr_len=$(jq -c -M '.digests."0".keyslots | length' $TMPDIR/json0) + arr_len=$(_jq -M '.digests."0".keyslots | length' $TMPDIR/json0) # remove first element from digests."0".keyslots array - json_str=$(jq -r -c -M 'del(.digests."0".keyslots[0])' $TMPDIR/json0) + json_str=$(_jq -r -M 'del(.digests."0".keyslots[0])' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -33,7 +33,7 @@ check() lib_hdr0_checksum || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - new_arr_len=$(jq -c -M '.digests."0".keyslots | length' $TMPDIR/json_res0) + new_arr_len=$(_jq -M '.digests."0".keyslots | length' $TMPDIR/json_res0) test $((arr_len-1)) -eq $new_arr_len || exit 2 } diff --git a/tests/generators/generate-luks2-keyslot-too-many-digests.img.sh b/tests/generators/generate-luks2-keyslot-too-many-digests.img.sh index d86efce2d..576c83655 100755 --- a/tests/generators/generate-luks2-keyslot-too-many-digests.img.sh +++ b/tests/generators/generate-luks2-keyslot-too-many-digests.img.sh @@ -17,7 +17,7 @@ generate() { # add keyslot 1 to second digest - json_str=$(jq -r -c -M '.digests."1" = .digests."0" | .digests."1".keyslots = ["1"]' $TMPDIR/json0) + json_str=$(_jq -r -M '.digests."1" = .digests."0" | .digests."1".keyslots = ["1"]' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -31,7 +31,7 @@ check() lib_hdr0_checksum || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - new_arr_len=$(jq -c -M '.digests."1".keyslots | length' $TMPDIR/json_res0) + new_arr_len=$(_jq -M '.digests."1".keyslots | length' $TMPDIR/json_res0) test 1 -eq $new_arr_len || exit 2 } diff --git a/tests/generators/generate-luks2-metadata-size-128k-secondary.img.sh b/tests/generators/generate-luks2-metadata-size-128k-secondary.img.sh index 248db119c..29b7d1526 100755 --- a/tests/generators/generate-luks2-metadata-size-128k-secondary.img.sh +++ b/tests/generators/generate-luks2-metadata-size-128k-secondary.img.sh @@ -28,7 +28,7 @@ generate() JSON_SIZE=$((TEST_JSN_SIZE*512)) DATA_OFFSET=16777216 - json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ + json_str=$(_jq --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) | .config.json_size = $jsize | .segments."0".offset = $off' $TMPDIR/json0) @@ -52,7 +52,7 @@ check() lib_hdr0_killed $TEST_MDA_SIZE || exit 2 read_luks2_json1 $TGT_IMG $TMPDIR/json_res1 $TEST_JSN_SIZE - jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ + _jq --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or (.config.json_size != $jsize) then error("Unexpected value in result json") else empty end' $TMPDIR/json_res1 || exit 5 diff --git a/tests/generators/generate-luks2-metadata-size-128k.img.sh b/tests/generators/generate-luks2-metadata-size-128k.img.sh index 8fa8c4915..393581023 100755 --- a/tests/generators/generate-luks2-metadata-size-128k.img.sh +++ b/tests/generators/generate-luks2-metadata-size-128k.img.sh @@ -27,7 +27,7 @@ generate() JSON_SIZE=$((TEST_JSN_SIZE*512)) DATA_OFFSET=16777216 - json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ + json_str=$(_jq --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) | .config.json_size = $jsize | .segments."0".offset = $off' $TMPDIR/json0) @@ -49,7 +49,7 @@ check() lib_hdr1_killed $TEST_MDA_SIZE || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 $TEST_JSN_SIZE - jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ + _jq --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or (.config.json_size != $jsize) then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 diff --git a/tests/generators/generate-luks2-metadata-size-16k-secondary.img.sh b/tests/generators/generate-luks2-metadata-size-16k-secondary.img.sh index b053428f6..8746a9ba1 100755 --- a/tests/generators/generate-luks2-metadata-size-16k-secondary.img.sh +++ b/tests/generators/generate-luks2-metadata-size-16k-secondary.img.sh @@ -28,7 +28,7 @@ generate() JSON_SIZE=$((TEST_JSN_SIZE*512)) DATA_OFFSET=16777216 - json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ + json_str=$(_jq --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) | .config.json_size = $jsize | .segments."0".offset = $off' $TMPDIR/json0) @@ -52,7 +52,7 @@ check() lib_hdr0_killed $TEST_MDA_SIZE || exit 2 read_luks2_json1 $TGT_IMG $TMPDIR/json_res1 $TEST_JSN_SIZE - jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ + _jq --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or (.config.json_size != $jsize) then error("Unexpected value in result json") else empty end' $TMPDIR/json_res1 || exit 5 diff --git a/tests/generators/generate-luks2-metadata-size-1m-secondary.img.sh b/tests/generators/generate-luks2-metadata-size-1m-secondary.img.sh index 61f722033..01643e7c5 100755 --- a/tests/generators/generate-luks2-metadata-size-1m-secondary.img.sh +++ b/tests/generators/generate-luks2-metadata-size-1m-secondary.img.sh @@ -28,7 +28,7 @@ generate() JSON_SIZE=$((TEST_JSN_SIZE*512)) DATA_OFFSET=16777216 - json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ + json_str=$(_jq --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) | .config.json_size = $jsize | .segments."0".offset = $off' $TMPDIR/json0) @@ -52,7 +52,7 @@ check() lib_hdr0_killed $TEST_MDA_SIZE || exit 2 read_luks2_json1 $TGT_IMG $TMPDIR/json_res1 $TEST_JSN_SIZE - jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ + _jq --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or (.config.json_size != $jsize) then error("Unexpected value in result json") else empty end' $TMPDIR/json_res1 || exit 5 diff --git a/tests/generators/generate-luks2-metadata-size-1m.img.sh b/tests/generators/generate-luks2-metadata-size-1m.img.sh index baced6eea..833d70b8e 100755 --- a/tests/generators/generate-luks2-metadata-size-1m.img.sh +++ b/tests/generators/generate-luks2-metadata-size-1m.img.sh @@ -27,7 +27,7 @@ generate() JSON_SIZE=$((TEST_JSN_SIZE*512)) DATA_OFFSET=16777216 - json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ + json_str=$(_jq --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) | .config.json_size = $jsize | .segments."0".offset = $off' $TMPDIR/json0) @@ -49,7 +49,7 @@ check() lib_hdr1_killed $TEST_MDA_SIZE || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 $TEST_JSN_SIZE - jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ + _jq --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or (.config.json_size != $jsize) then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 diff --git a/tests/generators/generate-luks2-metadata-size-256k-secondary.img.sh b/tests/generators/generate-luks2-metadata-size-256k-secondary.img.sh index 8d42cc527..f7f131b9b 100755 --- a/tests/generators/generate-luks2-metadata-size-256k-secondary.img.sh +++ b/tests/generators/generate-luks2-metadata-size-256k-secondary.img.sh @@ -28,7 +28,7 @@ generate() JSON_SIZE=$((TEST_JSN_SIZE*512)) DATA_OFFSET=16777216 - json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ + json_str=$(_jq --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) | .config.json_size = $jsize | .segments."0".offset = $off' $TMPDIR/json0) @@ -52,7 +52,7 @@ check() lib_hdr0_killed $TEST_MDA_SIZE || exit 2 read_luks2_json1 $TGT_IMG $TMPDIR/json_res1 $TEST_JSN_SIZE - jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ + _jq --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or (.config.json_size != $jsize) then error("Unexpected value in result json") else empty end' $TMPDIR/json_res1 || exit 5 diff --git a/tests/generators/generate-luks2-metadata-size-256k.img.sh b/tests/generators/generate-luks2-metadata-size-256k.img.sh index d65d74856..946457408 100755 --- a/tests/generators/generate-luks2-metadata-size-256k.img.sh +++ b/tests/generators/generate-luks2-metadata-size-256k.img.sh @@ -28,7 +28,7 @@ generate() JSON_SIZE=$((TEST_JSN_SIZE*512)) DATA_OFFSET=16777216 - json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ + json_str=$(_jq --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) | .config.json_size = $jsize | .segments."0".offset = $off' $TMPDIR/json0) @@ -50,7 +50,7 @@ check() lib_hdr1_killed $TEST_MDA_SIZE || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 $TEST_JSN_SIZE - jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ + _jq --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or (.config.json_size != $jsize) then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 diff --git a/tests/generators/generate-luks2-metadata-size-2m-secondary.img.sh b/tests/generators/generate-luks2-metadata-size-2m-secondary.img.sh index bc95c6849..532029a5e 100755 --- a/tests/generators/generate-luks2-metadata-size-2m-secondary.img.sh +++ b/tests/generators/generate-luks2-metadata-size-2m-secondary.img.sh @@ -27,7 +27,7 @@ generate() JSON_SIZE=$((TEST_JSN_SIZE*512)) DATA_OFFSET=16777216 - json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ + json_str=$(_jq --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) | .config.json_size = $jsize | .segments."0".offset = $off' $TMPDIR/json0) @@ -51,7 +51,7 @@ check() lib_hdr0_killed $TEST_MDA_SIZE || exit 2 read_luks2_json1 $TGT_IMG $TMPDIR/json_res1 $TEST_JSN_SIZE - jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ + _jq --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or (.config.json_size != $jsize) then error("Unexpected value in result json") else empty end' $TMPDIR/json_res1 || exit 5 diff --git a/tests/generators/generate-luks2-metadata-size-2m.img.sh b/tests/generators/generate-luks2-metadata-size-2m.img.sh index 9997bd49a..d81f60ce0 100755 --- a/tests/generators/generate-luks2-metadata-size-2m.img.sh +++ b/tests/generators/generate-luks2-metadata-size-2m.img.sh @@ -27,7 +27,7 @@ generate() JSON_SIZE=$((TEST_JSN_SIZE*512)) DATA_OFFSET=16777216 - json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ + json_str=$(_jq --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) | .config.json_size = $jsize | .segments."0".offset = $off' $TMPDIR/json0) @@ -49,7 +49,7 @@ check() lib_hdr1_killed $TEST_MDA_SIZE || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 $TEST_JSN_SIZE - jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ + _jq --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or (.config.json_size != $jsize) then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 diff --git a/tests/generators/generate-luks2-metadata-size-32k-secondary.img.sh b/tests/generators/generate-luks2-metadata-size-32k-secondary.img.sh index fe95d3a37..4520cf890 100755 --- a/tests/generators/generate-luks2-metadata-size-32k-secondary.img.sh +++ b/tests/generators/generate-luks2-metadata-size-32k-secondary.img.sh @@ -28,7 +28,7 @@ generate() JSON_SIZE=$((TEST_JSN_SIZE*512)) DATA_OFFSET=16777216 - json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ + json_str=$(_jq --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) | .config.json_size = $jsize | .segments."0".offset = $off' $TMPDIR/json0) @@ -52,7 +52,7 @@ check() lib_hdr0_killed $TEST_MDA_SIZE || exit 2 read_luks2_json1 $TGT_IMG $TMPDIR/json_res1 $TEST_JSN_SIZE - jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ + _jq --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or (.config.json_size != $jsize) then error("Unexpected value in result json") else empty end' $TMPDIR/json_res1 || exit 5 diff --git a/tests/generators/generate-luks2-metadata-size-32k.img.sh b/tests/generators/generate-luks2-metadata-size-32k.img.sh index f862e4f2f..a7d13b667 100755 --- a/tests/generators/generate-luks2-metadata-size-32k.img.sh +++ b/tests/generators/generate-luks2-metadata-size-32k.img.sh @@ -27,7 +27,7 @@ generate() JSON_SIZE=$((TEST_JSN_SIZE*512)) DATA_OFFSET=16777216 - json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ + json_str=$(_jq --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) | .config.json_size = $jsize | .segments."0".offset = $off' $TMPDIR/json0) @@ -49,7 +49,7 @@ check() lib_hdr1_killed $TEST_MDA_SIZE || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 $TEST_JSN_SIZE - jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ + _jq --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or (.config.json_size != $jsize) then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 diff --git a/tests/generators/generate-luks2-metadata-size-4m-secondary.img.sh b/tests/generators/generate-luks2-metadata-size-4m-secondary.img.sh index 837aab671..3fc6a2124 100755 --- a/tests/generators/generate-luks2-metadata-size-4m-secondary.img.sh +++ b/tests/generators/generate-luks2-metadata-size-4m-secondary.img.sh @@ -27,7 +27,7 @@ generate() JSON_SIZE=$((TEST_JSN_SIZE*512)) DATA_OFFSET=16777216 - json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ + json_str=$(_jq --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) | .config.json_size = $jsize | .segments."0".offset = $off' $TMPDIR/json0) @@ -51,7 +51,7 @@ check() lib_hdr0_killed $TEST_MDA_SIZE || exit 2 read_luks2_json1 $TGT_IMG $TMPDIR/json_res1 $TEST_JSN_SIZE - jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ + _jq --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or (.config.json_size != $jsize) then error("Unexpected value in result json") else empty end' $TMPDIR/json_res1 || exit 5 diff --git a/tests/generators/generate-luks2-metadata-size-4m.img.sh b/tests/generators/generate-luks2-metadata-size-4m.img.sh index 55ce0b28b..776582063 100755 --- a/tests/generators/generate-luks2-metadata-size-4m.img.sh +++ b/tests/generators/generate-luks2-metadata-size-4m.img.sh @@ -27,7 +27,7 @@ generate() JSON_SIZE=$((TEST_JSN_SIZE*512)) DATA_OFFSET=16777216 - json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ + json_str=$(_jq --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) | .config.json_size = $jsize | .segments."0".offset = $off' $TMPDIR/json0) @@ -49,7 +49,7 @@ check() lib_hdr1_killed $TEST_MDA_SIZE || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 $TEST_JSN_SIZE - jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ + _jq --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or (.config.json_size != $jsize) then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 diff --git a/tests/generators/generate-luks2-metadata-size-512k-secondary.img.sh b/tests/generators/generate-luks2-metadata-size-512k-secondary.img.sh index 8a46817e4..00825ca9c 100755 --- a/tests/generators/generate-luks2-metadata-size-512k-secondary.img.sh +++ b/tests/generators/generate-luks2-metadata-size-512k-secondary.img.sh @@ -28,7 +28,7 @@ generate() JSON_SIZE=$((TEST_JSN_SIZE*512)) DATA_OFFSET=16777216 - json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ + json_str=$(_jq --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) | .config.json_size = $jsize | .segments."0".offset = $off' $TMPDIR/json0) @@ -52,7 +52,7 @@ check() lib_hdr0_killed $TEST_MDA_SIZE || exit 2 read_luks2_json1 $TGT_IMG $TMPDIR/json_res1 $TEST_JSN_SIZE - jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ + _jq --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or (.config.json_size != $jsize) then error("Unexpected value in result json") else empty end' $TMPDIR/json_res1 || exit 5 diff --git a/tests/generators/generate-luks2-metadata-size-512k.img.sh b/tests/generators/generate-luks2-metadata-size-512k.img.sh index a9a002e42..3baf23f66 100755 --- a/tests/generators/generate-luks2-metadata-size-512k.img.sh +++ b/tests/generators/generate-luks2-metadata-size-512k.img.sh @@ -27,7 +27,7 @@ generate() JSON_SIZE=$((TEST_JSN_SIZE*512)) DATA_OFFSET=16777216 - json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ + json_str=$(_jq --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) | .config.json_size = $jsize | .segments."0".offset = $off' $TMPDIR/json0) @@ -49,7 +49,7 @@ check() lib_hdr1_killed $TEST_MDA_SIZE || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 $TEST_JSN_SIZE - jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ + _jq --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or (.config.json_size != $jsize) then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 diff --git a/tests/generators/generate-luks2-metadata-size-64k-inv-area-c0.img.sh b/tests/generators/generate-luks2-metadata-size-64k-inv-area-c0.img.sh index 6b3a906fd..176de9124 100755 --- a/tests/generators/generate-luks2-metadata-size-64k-inv-area-c0.img.sh +++ b/tests/generators/generate-luks2-metadata-size-64k-inv-area-c0.img.sh @@ -27,7 +27,7 @@ generate() JSON_SIZE=$((TEST_JSN_SIZE*512)) DATA_OFFSET=16777216 - json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ + json_str=$(_jq --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) | .config.json_size = $jsize | .segments."0".offset = $off' $TMPDIR/json0) @@ -49,7 +49,7 @@ check() lib_hdr1_killed $TEST_MDA_SIZE || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 $TEST_JSN_SIZE - jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ + _jq --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or (.config.json_size != $jsize) then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 diff --git a/tests/generators/generate-luks2-metadata-size-64k-inv-area-c1.img.sh b/tests/generators/generate-luks2-metadata-size-64k-inv-area-c1.img.sh index 02eb7de4a..2e9696380 100755 --- a/tests/generators/generate-luks2-metadata-size-64k-inv-area-c1.img.sh +++ b/tests/generators/generate-luks2-metadata-size-64k-inv-area-c1.img.sh @@ -26,7 +26,7 @@ generate() JSON_SIZE=$((TEST_JSN_SIZE*512)) DATA_OFFSET=16777216 - json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ + json_str=$(_jq --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ --arg mda $((2*TEST_MDA_SIZE_BYTES)) \ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) | .keyslots."7".area.offset = ( ((.config.keyslots_size | tonumber) + ($mda | tonumber) - (.keyslots."7".area.size | tonumber) + 1) | tostring ) | @@ -51,7 +51,7 @@ check() read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 $TEST_JSN_SIZE # .keyslots.7.area.offset = ( ((.config.keyslots_size | tonumber) + ($mda | tonumber) - (.keyslots.7.area.size | tonumber) + 1) | tostring ) | - jq -c --arg mda $((2*TEST_MDA_SIZE_BYTES)) --arg jsize $JSON_SIZE \ + _jq --arg mda $((2*TEST_MDA_SIZE_BYTES)) --arg jsize $JSON_SIZE \ 'if (.keyslots."7".area.offset != ( ((.config.keyslots_size | tonumber) + ($mda | tonumber) - (.keyslots."7".area.size | tonumber) + 1) | tostring )) or (.config.json_size != $jsize) then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 diff --git a/tests/generators/generate-luks2-metadata-size-64k-inv-keyslots-size-c0.img.sh b/tests/generators/generate-luks2-metadata-size-64k-inv-keyslots-size-c0.img.sh index 448729650..0076332ed 100755 --- a/tests/generators/generate-luks2-metadata-size-64k-inv-keyslots-size-c0.img.sh +++ b/tests/generators/generate-luks2-metadata-size-64k-inv-keyslots-size-c0.img.sh @@ -26,7 +26,7 @@ generate() JSON_SIZE=$((TEST_JSN_SIZE*512)) DATA_OFFSET=16777216 - json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ + json_str=$(_jq --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ --arg mda $((2*TEST_MDA_SIZE_BYTES)) \ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) | .config.json_size = $jsize | @@ -50,7 +50,7 @@ check() lib_hdr1_killed $TEST_MDA_SIZE || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 $TEST_JSN_SIZE - jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE --arg off $DATA_OFFSET --arg mda $((2*TEST_MDA_SIZE_BYTES)) \ + _jq --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE --arg off $DATA_OFFSET --arg mda $((2*TEST_MDA_SIZE_BYTES)) \ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or (.config.json_size != $jsize) or (.config.keyslots_size != (((($off | tonumber) - ($mda | tonumber) + 4096)) | tostring )) diff --git a/tests/generators/generate-luks2-metadata-size-64k-secondary.img.sh b/tests/generators/generate-luks2-metadata-size-64k-secondary.img.sh index a2ee1acea..b28b0f34f 100755 --- a/tests/generators/generate-luks2-metadata-size-64k-secondary.img.sh +++ b/tests/generators/generate-luks2-metadata-size-64k-secondary.img.sh @@ -28,7 +28,7 @@ generate() JSON_SIZE=$((TEST_JSN_SIZE*512)) DATA_OFFSET=16777216 - json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ + json_str=$(_jq --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) | .config.json_size = $jsize | .segments."0".offset = $off' $TMPDIR/json0) @@ -52,7 +52,7 @@ check() lib_hdr0_killed $TEST_MDA_SIZE || exit 2 read_luks2_json1 $TGT_IMG $TMPDIR/json_res1 $TEST_JSN_SIZE - jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ + _jq --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or (.config.json_size != $jsize) then error("Unexpected value in result json") else empty end' $TMPDIR/json_res1 || exit 5 diff --git a/tests/generators/generate-luks2-metadata-size-64k.img.sh b/tests/generators/generate-luks2-metadata-size-64k.img.sh index 98285acbc..22ed5c1c9 100755 --- a/tests/generators/generate-luks2-metadata-size-64k.img.sh +++ b/tests/generators/generate-luks2-metadata-size-64k.img.sh @@ -27,7 +27,7 @@ generate() JSON_SIZE=$((TEST_JSN_SIZE*512)) DATA_OFFSET=16777216 - json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ + json_str=$(_jq --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) | .config.json_size = $jsize | .segments."0".offset = $off' $TMPDIR/json0) @@ -49,7 +49,7 @@ check() lib_hdr1_killed $TEST_MDA_SIZE || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 $TEST_JSN_SIZE - jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ + _jq --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or (.config.json_size != $jsize) then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 diff --git a/tests/generators/generate-luks2-metadata-size-invalid-secondary.img.sh b/tests/generators/generate-luks2-metadata-size-invalid-secondary.img.sh index 7eb41b552..22e4d6494 100755 --- a/tests/generators/generate-luks2-metadata-size-invalid-secondary.img.sh +++ b/tests/generators/generate-luks2-metadata-size-invalid-secondary.img.sh @@ -27,7 +27,7 @@ generate() JSON_SIZE=$((TEST_JSN_SIZE*512)) DATA_OFFSET=16777216 - json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ + json_str=$(_jq --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) | .config.json_size = $jsize | .segments."0".offset = $off' $TMPDIR/json0) @@ -51,7 +51,7 @@ check() lib_hdr0_killed $TEST_MDA_SIZE || exit 2 read_luks2_json1 $TGT_IMG $TMPDIR/json_res1 $TEST_JSN_SIZE - jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ + _jq --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or (.config.json_size != $jsize) then error("Unexpected value in result json") else empty end' $TMPDIR/json_res1 || exit 5 diff --git a/tests/generators/generate-luks2-metadata-size-invalid.img.sh b/tests/generators/generate-luks2-metadata-size-invalid.img.sh index 24113a1f4..3440826ac 100755 --- a/tests/generators/generate-luks2-metadata-size-invalid.img.sh +++ b/tests/generators/generate-luks2-metadata-size-invalid.img.sh @@ -27,7 +27,7 @@ generate() JSON_SIZE=$((TEST_JSN_SIZE*512)) DATA_OFFSET=16777216 - json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ + json_str=$(_jq --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) | .config.json_size = $jsize | .segments."0".offset = $off' $TMPDIR/json0) @@ -49,7 +49,7 @@ check() lib_hdr1_killed $TEST_MDA_SIZE || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 $TEST_JSN_SIZE - jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ + _jq --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or (.config.json_size != $jsize) then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 diff --git a/tests/generators/generate-luks2-missing-keyslot-referenced-in-digest.img.sh b/tests/generators/generate-luks2-missing-keyslot-referenced-in-digest.img.sh index ae364ea57..f82c70189 100755 --- a/tests/generators/generate-luks2-missing-keyslot-referenced-in-digest.img.sh +++ b/tests/generators/generate-luks2-missing-keyslot-referenced-in-digest.img.sh @@ -17,9 +17,9 @@ generate() { read -r json_str_orig < $TMPDIR/json0 - arr_len=$(jq -c -M '.digests."0".keyslots | length' $TMPDIR/json0) + arr_len=$(_jq -M '.digests."0".keyslots | length' $TMPDIR/json0) # add missing keyslot reference in keyslots array of digest '0' - json_str=$(jq -r -c -M 'def arr: ["digests", "0", "keyslots"]; + json_str=$(_jq -r -M 'def arr: ["digests", "0", "keyslots"]; def missks: getpath(["keyslots"]) | keys | max | tonumber + 1 | tostring; setpath(arr; getpath(arr) + [ missks ])' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 @@ -35,7 +35,7 @@ check() lib_hdr0_checksum || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - new_arr_len=$(jq -c -M '.digests."0".keyslots | length' $TMPDIR/json_res0) + new_arr_len=$(_jq -M '.digests."0".keyslots | length' $TMPDIR/json_res0) test $((arr_len+1)) -eq $new_arr_len || exit 2 } diff --git a/tests/generators/generate-luks2-missing-keyslot-referenced-in-token.img.sh b/tests/generators/generate-luks2-missing-keyslot-referenced-in-token.img.sh index e5da89ce2..e75c0fdae 100755 --- a/tests/generators/generate-luks2-missing-keyslot-referenced-in-token.img.sh +++ b/tests/generators/generate-luks2-missing-keyslot-referenced-in-token.img.sh @@ -18,7 +18,7 @@ generate() { read -r json_str_orig < $TMPDIR/json0 # add missing keyslot reference in keyslots array of token '0' - json_str=$(jq -r -c -M 'def missks: getpath(["keyslots"]) | keys | max | tonumber + 1 | tostring; + json_str=$(_jq -r -M 'def missks: getpath(["keyslots"]) | keys | max | tonumber + 1 | tostring; .tokens += {"0":{"type":"dummy","keyslots":[ "0", missks ]}}' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 @@ -33,7 +33,7 @@ check() lib_hdr0_checksum || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - new_arr_len=$(jq -c -M '.tokens."0".keyslots | length' $TMPDIR/json_res0) + new_arr_len=$(_jq -M '.tokens."0".keyslots | length' $TMPDIR/json_res0) test $new_arr_len -eq 2 || exit 2 } diff --git a/tests/generators/generate-luks2-missing-segment-referenced-in-digest.img.sh b/tests/generators/generate-luks2-missing-segment-referenced-in-digest.img.sh index 0cbb3bc0e..5d7c9f6f5 100755 --- a/tests/generators/generate-luks2-missing-segment-referenced-in-digest.img.sh +++ b/tests/generators/generate-luks2-missing-segment-referenced-in-digest.img.sh @@ -17,9 +17,9 @@ generate() { read -r json_str_orig < $TMPDIR/json0 - arr_len=$(jq -c -M '.digests."0".segments | length' $TMPDIR/json0) + arr_len=$(_jq -M '.digests."0".segments | length' $TMPDIR/json0) # add missing keyslot reference in keyslots array of digest '0' - json_str=$(jq -c 'def arr: ["digests", "0", "segments"]; + json_str=$(_jq 'def arr: ["digests", "0", "segments"]; def missseg: getpath(["segments"]) | keys | max | tonumber + 1 | tostring; setpath(arr; getpath(arr) + [ missseg ])' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 @@ -35,7 +35,7 @@ check() lib_hdr0_checksum || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - new_arr_len=$(jq -c -M '.digests."0".segments | length' $TMPDIR/json_res0) + new_arr_len=$(_jq -M '.digests."0".segments | length' $TMPDIR/json_res0) test $((arr_len+1)) -eq $new_arr_len || exit 2 } diff --git a/tests/generators/generate-luks2-non-compact-json-4k-token-0.img.sh b/tests/generators/generate-luks2-non-compact-json-4k-token-0.img.sh index abbaf5a78..6fcd7dde5 100755 --- a/tests/generators/generate-luks2-non-compact-json-4k-token-0.img.sh +++ b/tests/generators/generate-luks2-non-compact-json-4k-token-0.img.sh @@ -19,7 +19,7 @@ generate() { # add empty token - json_str=$(jq -c '.tokens."0" = {"type":"a", "keyslots":[]}' $TMPDIR/json0) + json_str=$(_jq '.tokens."0" = {"type":"a", "keyslots":[]}' $TMPDIR/json0) json_len_orig=${#json_str} test $json_len_orig -lt $((LUKS2_JSON_SIZE*512)) || exit 2 diff --git a/tests/generators/generate-luks2-non-compact-json-token-0.img.sh b/tests/generators/generate-luks2-non-compact-json-token-0.img.sh index e5f5208a9..bb355a116 100755 --- a/tests/generators/generate-luks2-non-compact-json-token-0.img.sh +++ b/tests/generators/generate-luks2-non-compact-json-token-0.img.sh @@ -18,7 +18,7 @@ generate() { # add empty token - json_str=$(jq -c '.tokens."0" = {"type":"a", "keyslots":[]}' $TMPDIR/json0) + json_str=$(_jq '.tokens."0" = {"type":"a", "keyslots":[]}' $TMPDIR/json0) json_len_orig=${#json_str} test $json_len_orig -lt $((LUKS2_JSON_SIZE*512)) || exit 2 diff --git a/tests/generators/generate-luks2-overlapping-areas-c0-json0.img.sh b/tests/generators/generate-luks2-overlapping-areas-c0-json0.img.sh index 60cd23ea7..858c639f9 100755 --- a/tests/generators/generate-luks2-overlapping-areas-c0-json0.img.sh +++ b/tests/generators/generate-luks2-overlapping-areas-c0-json0.img.sh @@ -16,7 +16,7 @@ generate() { # copy area 6 offset and length into area 7 - json_str=$(jq -c '.keyslots."7".area.offset = .keyslots."6".area.offset | + json_str=$(_jq '.keyslots."7".area.offset = .keyslots."6".area.offset | .keyslots."7".area.size = .keyslots."6".area.size' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 @@ -30,7 +30,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if (.keyslots."6".area.offset != .keyslots."7".area.offset) or (.keyslots."6".area.size != .keyslots."7".area.size) + _jq 'if (.keyslots."6".area.offset != .keyslots."7".area.offset) or (.keyslots."6".area.size != .keyslots."7".area.size) then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-overlapping-areas-c1-json0.img.sh b/tests/generators/generate-luks2-overlapping-areas-c1-json0.img.sh index 19ca941f8..b0a302b4b 100755 --- a/tests/generators/generate-luks2-overlapping-areas-c1-json0.img.sh +++ b/tests/generators/generate-luks2-overlapping-areas-c1-json0.img.sh @@ -16,7 +16,7 @@ generate() { # make area 7 being included in area 6 - json_str=$(jq -c '.keyslots."7".area.offset = (.keyslots."6".area.offset | tonumber + 1 | tostring ) | + json_str=$(_jq '.keyslots."7".area.offset = (.keyslots."6".area.offset | tonumber + 1 | tostring ) | .keyslots."7".area.size = ( .keyslots."6".area.size | tonumber - 1 | tostring)' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 @@ -30,7 +30,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if (.keyslots."7".area.offset != (.keyslots."6".area.offset | tonumber + 1 | tostring)) or + _jq 'if (.keyslots."7".area.offset != (.keyslots."6".area.offset | tonumber + 1 | tostring)) or (.keyslots."7".area.size != (.keyslots."6".area.size | tonumber - 1 | tostring)) or (.keyslots."7".area.size | tonumber <= 0) then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 diff --git a/tests/generators/generate-luks2-overlapping-areas-c2-json0.img.sh b/tests/generators/generate-luks2-overlapping-areas-c2-json0.img.sh index cd62a730c..5646fdd65 100755 --- a/tests/generators/generate-luks2-overlapping-areas-c2-json0.img.sh +++ b/tests/generators/generate-luks2-overlapping-areas-c2-json0.img.sh @@ -16,7 +16,7 @@ generate() { # make area 7 being included in area 6 - json_str=$(jq -c '.keyslots."7".area.offset = ([ .keyslots."6".area.offset, .keyslots."6".area.size ] | map(tonumber) | add - 1 | tostring)' $TMPDIR/json0) + json_str=$(_jq '.keyslots."7".area.offset = ([ .keyslots."6".area.offset, .keyslots."6".area.size ] | map(tonumber) | add - 1 | tostring)' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -29,7 +29,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if .keyslots."7".area.offset != ([.keyslots."6".area.offset, .keyslots."6".area.size ] | map(tonumber) | add - 1 | tostring) + _jq 'if .keyslots."7".area.offset != ([.keyslots."6".area.offset, .keyslots."6".area.size ] | map(tonumber) | add - 1 | tostring) then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-pbkdf2-leftover-params-0.img.sh b/tests/generators/generate-luks2-pbkdf2-leftover-params-0.img.sh index 296d18bfc..cc4e54c92 100755 --- a/tests/generators/generate-luks2-pbkdf2-leftover-params-0.img.sh +++ b/tests/generators/generate-luks2-pbkdf2-leftover-params-0.img.sh @@ -17,8 +17,8 @@ generate() { # add keyslot 1 to second digest - obj_len=$(jq -c -M '.keyslots."2".kdf | length' $TMPDIR/json0) - json_str=$(jq -r -c -M '.keyslots."2".kdf.type = "argon2i" | .keyslots."2".kdf.iterations = 1001 | .keyslots."2".kdf.hash = "sha256"' $TMPDIR/json0) + obj_len=$(_jq -M '.keyslots."2".kdf | length' $TMPDIR/json0) + json_str=$(_jq -r -M '.keyslots."2".kdf.type = "argon2i" | .keyslots."2".kdf.iterations = 1001 | .keyslots."2".kdf.hash = "sha256"' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -32,7 +32,7 @@ check() lib_hdr0_checksum || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - new_obj_len=$(jq -c -M '.keyslots."2".kdf | length' $TMPDIR/json_res0) + new_obj_len=$(_jq -M '.keyslots."2".kdf | length' $TMPDIR/json_res0) test $((obj_len+2)) -eq $new_obj_len || exit 2 } diff --git a/tests/generators/generate-luks2-pbkdf2-leftover-params-1.img.sh b/tests/generators/generate-luks2-pbkdf2-leftover-params-1.img.sh index 4e4f5bd45..ca56eadac 100755 --- a/tests/generators/generate-luks2-pbkdf2-leftover-params-1.img.sh +++ b/tests/generators/generate-luks2-pbkdf2-leftover-params-1.img.sh @@ -17,8 +17,8 @@ generate() { # add keyslot 1 to second digest - obj_len=$(jq -c -M '.keyslots."2".kdf | length' $TMPDIR/json0) - json_str=$(jq -r -c -M '.keyslots."2".kdf.type = "argon2id" | .keyslots."2".kdf.iterations = 1001 | .keyslots."2".kdf.hash = "sha256"' $TMPDIR/json0) + obj_len=$(_jq -M '.keyslots."2".kdf | length' $TMPDIR/json0) + json_str=$(_jq -r -M '.keyslots."2".kdf.type = "argon2id" | .keyslots."2".kdf.iterations = 1001 | .keyslots."2".kdf.hash = "sha256"' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -32,7 +32,7 @@ check() lib_hdr0_checksum || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - new_obj_len=$(jq -c -M '.keyslots."2".kdf | length' $TMPDIR/json_res0) + new_obj_len=$(_jq -M '.keyslots."2".kdf | length' $TMPDIR/json_res0) test $((obj_len+2)) -eq $new_obj_len || exit 2 } diff --git a/tests/generators/generate-luks2-segment-crypt-empty-encryption.img.sh b/tests/generators/generate-luks2-segment-crypt-empty-encryption.img.sh index 4e1aa9bd1..bd43a36b8 100755 --- a/tests/generators/generate-luks2-segment-crypt-empty-encryption.img.sh +++ b/tests/generators/generate-luks2-segment-crypt-empty-encryption.img.sh @@ -16,7 +16,7 @@ generate() { # remove mandatory encryption field - json_str=$(jq -c '.segments."0".encryption = ""' $TMPDIR/json0) + json_str=$(_jq '.segments."0".encryption = ""' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -29,7 +29,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if .segments."0".encryption != "" + _jq 'if .segments."0".encryption != "" then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-segment-crypt-missing-encryption.img.sh b/tests/generators/generate-luks2-segment-crypt-missing-encryption.img.sh index cdd621682..2230429b9 100755 --- a/tests/generators/generate-luks2-segment-crypt-missing-encryption.img.sh +++ b/tests/generators/generate-luks2-segment-crypt-missing-encryption.img.sh @@ -16,7 +16,7 @@ generate() { # remove mandatory encryption field - json_str=$(jq -c 'del(.segments."0".encryption)' $TMPDIR/json0) + json_str=$(_jq 'del(.segments."0".encryption)' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -29,7 +29,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if .segments."0".encryption + _jq 'if .segments."0".encryption then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-segment-crypt-missing-ivoffset.img.sh b/tests/generators/generate-luks2-segment-crypt-missing-ivoffset.img.sh index 8c86ad5fd..9fa9a87b4 100755 --- a/tests/generators/generate-luks2-segment-crypt-missing-ivoffset.img.sh +++ b/tests/generators/generate-luks2-segment-crypt-missing-ivoffset.img.sh @@ -16,7 +16,7 @@ generate() { # remove mandatory encryption field - json_str=$(jq -c 'del(.segments."0".iv_tweak)' $TMPDIR/json0) + json_str=$(_jq 'del(.segments."0".iv_tweak)' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -29,7 +29,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if .segments."0".iv_tweak + _jq 'if .segments."0".iv_tweak then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-segment-crypt-missing-sectorsize.img.sh b/tests/generators/generate-luks2-segment-crypt-missing-sectorsize.img.sh index ab0b8ec9f..c3d849499 100755 --- a/tests/generators/generate-luks2-segment-crypt-missing-sectorsize.img.sh +++ b/tests/generators/generate-luks2-segment-crypt-missing-sectorsize.img.sh @@ -16,7 +16,7 @@ generate() { # remove mandatory encryption field - json_str=$(jq -c 'del(.segments."0".sector_size)' $TMPDIR/json0) + json_str=$(_jq 'del(.segments."0".sector_size)' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -29,7 +29,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if .segments."0".sector_size + _jq 'if .segments."0".sector_size then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-segment-crypt-wrong-encryption.img.sh b/tests/generators/generate-luks2-segment-crypt-wrong-encryption.img.sh index a9bac8ddc..27921883d 100755 --- a/tests/generators/generate-luks2-segment-crypt-wrong-encryption.img.sh +++ b/tests/generators/generate-luks2-segment-crypt-wrong-encryption.img.sh @@ -16,7 +16,7 @@ generate() { # remove mandatory encryption field - json_str=$(jq -c '.segments."0".encryption = {}' $TMPDIR/json0) + json_str=$(_jq '.segments."0".encryption = {}' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -29,7 +29,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if .segments."0".encryption | type != "object" + _jq 'if .segments."0".encryption | type != "object" then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-segment-crypt-wrong-ivoffset.img.sh b/tests/generators/generate-luks2-segment-crypt-wrong-ivoffset.img.sh index 6611c3242..ceb5ef26f 100755 --- a/tests/generators/generate-luks2-segment-crypt-wrong-ivoffset.img.sh +++ b/tests/generators/generate-luks2-segment-crypt-wrong-ivoffset.img.sh @@ -16,7 +16,7 @@ generate() { # remove mandatory encryption field - json_str=$(jq -c '.segments."0".iv_tweak = "dynamic"' $TMPDIR/json0) + json_str=$(_jq '.segments."0".iv_tweak = "dynamic"' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -29,7 +29,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if .segments."0".iv_tweak != "dynamic" + _jq 'if .segments."0".iv_tweak != "dynamic" then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-segment-crypt-wrong-sectorsize-0.img.sh b/tests/generators/generate-luks2-segment-crypt-wrong-sectorsize-0.img.sh index d0d144963..419c9726f 100755 --- a/tests/generators/generate-luks2-segment-crypt-wrong-sectorsize-0.img.sh +++ b/tests/generators/generate-luks2-segment-crypt-wrong-sectorsize-0.img.sh @@ -16,7 +16,7 @@ generate() { # remove mandatory encryption field - json_str=$(jq -c '.segments."0".sector_size = 1023' $TMPDIR/json0) + json_str=$(_jq '.segments."0".sector_size = 1023' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -29,7 +29,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if .segments."0".sector_size != 1023 + _jq 'if .segments."0".sector_size != 1023 then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-segment-crypt-wrong-sectorsize-1.img.sh b/tests/generators/generate-luks2-segment-crypt-wrong-sectorsize-1.img.sh index d7fabe467..128b73d2a 100755 --- a/tests/generators/generate-luks2-segment-crypt-wrong-sectorsize-1.img.sh +++ b/tests/generators/generate-luks2-segment-crypt-wrong-sectorsize-1.img.sh @@ -16,7 +16,7 @@ generate() { # remove mandatory encryption field - json_str=$(jq -c '.segments."0".sector_size = "4096"' $TMPDIR/json0) + json_str=$(_jq '.segments."0".sector_size = "4096"' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -29,7 +29,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if .segments."0".sector_size != "4096" + _jq 'if .segments."0".sector_size != "4096" then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-segment-crypt-wrong-sectorsize-2.img.sh b/tests/generators/generate-luks2-segment-crypt-wrong-sectorsize-2.img.sh index 14dd258ef..67e4b2d4e 100755 --- a/tests/generators/generate-luks2-segment-crypt-wrong-sectorsize-2.img.sh +++ b/tests/generators/generate-luks2-segment-crypt-wrong-sectorsize-2.img.sh @@ -16,7 +16,7 @@ generate() { # remove mandatory encryption field - json_str=$(jq -c '.segments."0".sector_size = -1024' $TMPDIR/json0) + json_str=$(_jq '.segments."0".sector_size = -1024' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -29,7 +29,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if .segments."0".sector_size != -1024 + _jq 'if .segments."0".sector_size != -1024 then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-segment-missing-offset.img.sh b/tests/generators/generate-luks2-segment-missing-offset.img.sh index 66562be6d..b98152995 100755 --- a/tests/generators/generate-luks2-segment-missing-offset.img.sh +++ b/tests/generators/generate-luks2-segment-missing-offset.img.sh @@ -16,7 +16,7 @@ generate() { # remove mandatory encryption field - json_str=$(jq -c 'del(.segments."0".offset)' $TMPDIR/json0) + json_str=$(_jq 'del(.segments."0".offset)' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -29,7 +29,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if .segments."0".offset + _jq 'if .segments."0".offset then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-segment-missing-size.img.sh b/tests/generators/generate-luks2-segment-missing-size.img.sh index ccfc2dc33..7b05ece0b 100755 --- a/tests/generators/generate-luks2-segment-missing-size.img.sh +++ b/tests/generators/generate-luks2-segment-missing-size.img.sh @@ -16,7 +16,7 @@ generate() { # remove mandatory encryption field - json_str=$(jq -c 'del(.segments."0".size)' $TMPDIR/json0) + json_str=$(_jq 'del(.segments."0".size)' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -29,7 +29,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if .segments."0".size + _jq 'if .segments."0".size then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-segment-missing-type.img.sh b/tests/generators/generate-luks2-segment-missing-type.img.sh index 5cb0cf5c5..4bb133b98 100755 --- a/tests/generators/generate-luks2-segment-missing-type.img.sh +++ b/tests/generators/generate-luks2-segment-missing-type.img.sh @@ -16,7 +16,7 @@ generate() { # remove mandatory encryption field - json_str=$(jq -c 'del(.segments."0".type)' $TMPDIR/json0) + json_str=$(_jq 'del(.segments."0".type)' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -29,7 +29,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if .segments."0".type + _jq 'if .segments."0".type then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-segment-two.img.sh b/tests/generators/generate-luks2-segment-two.img.sh index 1ec04706b..fff4628c4 100755 --- a/tests/generators/generate-luks2-segment-two.img.sh +++ b/tests/generators/generate-luks2-segment-two.img.sh @@ -16,7 +16,7 @@ generate() { # remove mandatory encryption field - json_str=$(jq -c '.segments."0".size = "512" | .segments."1" = {type:"some", offset: (.segments."0".offset | tonumber + 512 | tostring), size: "dynamic"}' $TMPDIR/json0) + json_str=$(_jq '.segments."0".size = "512" | .segments."1" = {type:"some", offset: (.segments."0".offset | tonumber + 512 | tostring), size: "dynamic"}' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -29,7 +29,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if .segments."1" | type != "object" + _jq 'if .segments."1" | type != "object" then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-segment-unknown-type.img.sh b/tests/generators/generate-luks2-segment-unknown-type.img.sh index 653f4bdac..e283b88d0 100755 --- a/tests/generators/generate-luks2-segment-unknown-type.img.sh +++ b/tests/generators/generate-luks2-segment-unknown-type.img.sh @@ -17,7 +17,7 @@ generate() { # remove mandatory encryption field - json_str=$(jq -c '.segments."0" = {type:"some_type", offset: .segments."0".offset, size: .segments."0".size, a_field:0}' $TMPDIR/json0) + json_str=$(_jq '.segments."0" = {type:"some_type", offset: .segments."0".offset, size: .segments."0".size, a_field:0}' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -30,7 +30,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if .segments."0".type != "some_type" + _jq 'if .segments."0".type != "some_type" then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-segment-wrong-backup-key-0.img.sh b/tests/generators/generate-luks2-segment-wrong-backup-key-0.img.sh index a5bf80605..74ad40130 100755 --- a/tests/generators/generate-luks2-segment-wrong-backup-key-0.img.sh +++ b/tests/generators/generate-luks2-segment-wrong-backup-key-0.img.sh @@ -16,7 +16,7 @@ generate() { # create illegal backup segment key (used to be bug in 32bit implementations) - json_str=$(jq -c '.segments[(.segments | length + 1 | tostring)] = { "type" : "linear", "offset" : "512", "size" : "512", "flags":["backup-x"]}' $TMPDIR/json0) + json_str=$(_jq '.segments[(.segments | length + 1 | tostring)] = { "type" : "linear", "offset" : "512", "size" : "512", "flags":["backup-x"]}' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -29,7 +29,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if .segments | length < 2 + _jq 'if .segments | length < 2 then error("Unexpected segments count") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-segment-wrong-backup-key-1.img.sh b/tests/generators/generate-luks2-segment-wrong-backup-key-1.img.sh index 084566dd0..465f13be3 100755 --- a/tests/generators/generate-luks2-segment-wrong-backup-key-1.img.sh +++ b/tests/generators/generate-luks2-segment-wrong-backup-key-1.img.sh @@ -16,7 +16,7 @@ generate() { # create illegal backup segment key (used to be bug in 32bit implementations) - json_str=$(jq -c '(.segments."0".offset | tonumber) as $i | .segments[range(1;65) | tostring] = { "type" : "linear", "offset" : ($i + 512 | tostring), "size" : "512" } | .segments."268435472" = { "type":"linear","offset":"512","size":"512","flags":["backup-x"]}' $TMPDIR/json0) + json_str=$(_jq '(.segments."0".offset | tonumber) as $i | .segments[range(1;65) | tostring] = { "type" : "linear", "offset" : ($i + 512 | tostring), "size" : "512" } | .segments."268435472" = { "type":"linear","offset":"512","size":"512","flags":["backup-x"]}' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -29,7 +29,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if .segments | length < 64 + _jq 'if .segments | length < 64 then error("Unexpected segments count") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-segment-wrong-flags-element.img.sh b/tests/generators/generate-luks2-segment-wrong-flags-element.img.sh index 39a1c3824..9e23aa3cd 100755 --- a/tests/generators/generate-luks2-segment-wrong-flags-element.img.sh +++ b/tests/generators/generate-luks2-segment-wrong-flags-element.img.sh @@ -16,7 +16,7 @@ generate() { # remove mandatory encryption field - json_str=$(jq -c '.segments."0".flags = [ "hello", 1 ]' $TMPDIR/json0) + json_str=$(_jq '.segments."0".flags = [ "hello", 1 ]' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -29,7 +29,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if .segments."0".flags != [ "hello", 1 ] + _jq 'if .segments."0".flags != [ "hello", 1 ] then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-segment-wrong-flags.img.sh b/tests/generators/generate-luks2-segment-wrong-flags.img.sh index 22ac9f7e9..7a049c790 100755 --- a/tests/generators/generate-luks2-segment-wrong-flags.img.sh +++ b/tests/generators/generate-luks2-segment-wrong-flags.img.sh @@ -16,7 +16,7 @@ generate() { # remove mandatory encryption field - json_str=$(jq -c '.segments."0".flags = "hello"' $TMPDIR/json0) + json_str=$(_jq '.segments."0".flags = "hello"' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -29,7 +29,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if .segments."0".flags != "hello" + _jq 'if .segments."0".flags != "hello" then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-segment-wrong-offset.img.sh b/tests/generators/generate-luks2-segment-wrong-offset.img.sh index 69a704309..f2928cf3f 100755 --- a/tests/generators/generate-luks2-segment-wrong-offset.img.sh +++ b/tests/generators/generate-luks2-segment-wrong-offset.img.sh @@ -16,7 +16,7 @@ generate() { # remove mandatory encryption field - json_str=$(jq -c '.segments."0".offset = "-42"' $TMPDIR/json0) + json_str=$(_jq '.segments."0".offset = "-42"' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -29,7 +29,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if .segments."0".offset != "-42" + _jq 'if .segments."0".offset != "-42" then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-segment-wrong-size-0.img.sh b/tests/generators/generate-luks2-segment-wrong-size-0.img.sh index 0d9c1aea6..07798b7f0 100755 --- a/tests/generators/generate-luks2-segment-wrong-size-0.img.sh +++ b/tests/generators/generate-luks2-segment-wrong-size-0.img.sh @@ -16,7 +16,7 @@ generate() { # remove mandatory encryption field - json_str=$(jq -c '.segments."0".size = 4096' $TMPDIR/json0) + json_str=$(_jq '.segments."0".size = 4096' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -29,7 +29,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if .segments."0".size != 4096 + _jq 'if .segments."0".size != 4096 then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-segment-wrong-size-1.img.sh b/tests/generators/generate-luks2-segment-wrong-size-1.img.sh index c3e89330e..a396be5f9 100755 --- a/tests/generators/generate-luks2-segment-wrong-size-1.img.sh +++ b/tests/generators/generate-luks2-segment-wrong-size-1.img.sh @@ -16,7 +16,7 @@ generate() { # remove mandatory encryption field - json_str=$(jq -c '.segments."0".size = "automatic"' $TMPDIR/json0) + json_str=$(_jq '.segments."0".size = "automatic"' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -29,7 +29,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if .segments."0".size != "automatic" + _jq 'if .segments."0".size != "automatic" then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-segment-wrong-size-2.img.sh b/tests/generators/generate-luks2-segment-wrong-size-2.img.sh index 83d9c2f82..530d83992 100755 --- a/tests/generators/generate-luks2-segment-wrong-size-2.img.sh +++ b/tests/generators/generate-luks2-segment-wrong-size-2.img.sh @@ -16,7 +16,7 @@ generate() { # remove mandatory encryption field - json_str=$(jq -c '.segments."0".size = "511"' $TMPDIR/json0) + json_str=$(_jq '.segments."0".size = "511"' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -29,7 +29,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if .segments."0".size != "511" + _jq 'if .segments."0".size != "511" then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-segment-wrong-type.img.sh b/tests/generators/generate-luks2-segment-wrong-type.img.sh index 0f7a18ef4..dac6bec65 100755 --- a/tests/generators/generate-luks2-segment-wrong-type.img.sh +++ b/tests/generators/generate-luks2-segment-wrong-type.img.sh @@ -16,7 +16,7 @@ generate() { # remove mandatory encryption field - json_str=$(jq -c '.segments."0".type = 42' $TMPDIR/json0) + json_str=$(_jq '.segments."0".type = 42' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -29,7 +29,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if .segments."0".type != 42 + _jq 'if .segments."0".type != 42 then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-uint64-max-segment-size.img.sh b/tests/generators/generate-luks2-uint64-max-segment-size.img.sh index ac0c7ee04..d15dbd2d8 100755 --- a/tests/generators/generate-luks2-uint64-max-segment-size.img.sh +++ b/tests/generators/generate-luks2-uint64-max-segment-size.img.sh @@ -17,7 +17,7 @@ generate() { # UINT64_MAX - 511 (so that it's sector aligned) - json_str=$(jq -c '.segments."0".size = "18446744073709551104"' $TMPDIR/json0) + json_str=$(_jq '.segments."0".size = "18446744073709551104"' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -30,7 +30,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if .segments."0".size != "18446744073709551104" + _jq 'if .segments."0".size != "18446744073709551104" then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-uint64-overflow-segment-size.img.sh b/tests/generators/generate-luks2-uint64-overflow-segment-size.img.sh index 9a3ada618..a16723054 100755 --- a/tests/generators/generate-luks2-uint64-overflow-segment-size.img.sh +++ b/tests/generators/generate-luks2-uint64-overflow-segment-size.img.sh @@ -15,7 +15,7 @@ generate() { - json_str=$(jq -c '.segments."0".size = "18446744073709551616"' $TMPDIR/json0) + json_str=$(_jq '.segments."0".size = "18446744073709551616"' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -28,7 +28,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if .segments."0".size != "18446744073709551616" + _jq 'if .segments."0".size != "18446744073709551616" then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/generate-luks2-uint64-signed-segment-size.img.sh b/tests/generators/generate-luks2-uint64-signed-segment-size.img.sh index 2f16e7069..6e40e1c9b 100755 --- a/tests/generators/generate-luks2-uint64-signed-segment-size.img.sh +++ b/tests/generators/generate-luks2-uint64-signed-segment-size.img.sh @@ -16,7 +16,7 @@ generate() { # UINT64_MAX + 1 (it's 512 sector aligned) - json_str=$(jq -c '.segments."0".size = "-512"' $TMPDIR/json0) + json_str=$(_jq '.segments."0".size = "-512"' $TMPDIR/json0) test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2 write_luks2_json "$json_str" $TMPDIR/json0 @@ -29,7 +29,7 @@ check() lib_hdr1_killed || exit 2 read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 - jq -c 'if .segments."0".size != "-512" + _jq 'if .segments."0".size != "-512" then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5 } diff --git a/tests/generators/lib.sh b/tests/generators/lib.sh index 07365d7bc..51d387006 100644 --- a/tests/generators/lib.sh +++ b/tests/generators/lib.sh @@ -175,6 +175,11 @@ _dd() dd $@ status=none } +_jq() +{ + jq -c "$@" +} + write_bin_hdr_size() { printf '%016x' $2 | xxd -r -p -l 16 | _dd of=$1 bs=8 count=1 seek=1 conv=notrunc } From 6298269486354834d4037ba294c91452dec4c2f5 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Fri, 17 Apr 2026 18:02:12 +0200 Subject: [PATCH 074/244] ci: Fix jq no longer handling 0x00 characters Due to jq fix for CVE-2026-33948, we cannot use json with trailing 0x00. Just remove them and parse through jq. Fixes: #989 --- tests/generators/lib.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/generators/lib.sh b/tests/generators/lib.sh index 51d387006..440dff7c5 100644 --- a/tests/generators/lib.sh +++ b/tests/generators/lib.sh @@ -175,9 +175,12 @@ _dd() dd $@ status=none } +# Remove all trailing 0x00 characters +# Last parameter must be an input file _jq() { - jq -c "$@" + local last="${!#}" + sed 's/\x00*$//' "$last" | jq -c "${@:1:$#-1}" } write_bin_hdr_size() { From bccf4da7e5a3e7da40bf7bb8fedbe13147583d85 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Wed, 10 Dec 2025 15:44:14 +0100 Subject: [PATCH 075/244] reencrypt: update internal reencryption error state descriptions. --- lib/luks2/luks2_reencrypt.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/luks2/luks2_reencrypt.c b/lib/luks2/luks2_reencrypt.c index 96749f7d3..dcf349fe5 100644 --- a/lib/luks2/luks2_reencrypt.c +++ b/lib/luks2/luks2_reencrypt.c @@ -840,7 +840,22 @@ static crypt_reencrypt_direction_info reencrypt_direction(struct luks2_hdr *hdr) return di; } -typedef enum { REENC_OK = 0, REENC_ERR, REENC_ROLLBACK, REENC_FATAL } reenc_status_t; +typedef enum { REENC_OK = 0, + /* to be removed in next commit */ + REENC_ERR, + /* + * The state not requiring LUKS2 reencryption recovery. We can rollback + * to last known safe state (hold in memory since last metadata write) + * and teardown reencryption device stack (if used). + * The reencryption fails but does not require recovery + */ + REENC_ROLLBACK, + /* + * Error while writing hotzone (short write or sync fail) or failed metadata + * update post hotzone write. + */ + REENC_FATAL +} reenc_status_t; void LUKS2_reencrypt_protection_erase(struct reenc_protection *rp) { From f26218bfc08d7882a6bc814235d1f0f7c3f4997f Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Wed, 10 Dec 2025 16:14:36 +0100 Subject: [PATCH 076/244] reencrypt: merge REENC_ERR and REENC_ROLLBACK errors in one. The REENC_ERR was unused for anything meaningful and also the error recovery from non-fatal reencryption failures will be managed by same code in future commits. --- lib/luks2/luks2_reencrypt.c | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/lib/luks2/luks2_reencrypt.c b/lib/luks2/luks2_reencrypt.c index dcf349fe5..5977a6e96 100644 --- a/lib/luks2/luks2_reencrypt.c +++ b/lib/luks2/luks2_reencrypt.c @@ -841,8 +841,6 @@ static crypt_reencrypt_direction_info reencrypt_direction(struct luks2_hdr *hdr) } typedef enum { REENC_OK = 0, - /* to be removed in next commit */ - REENC_ERR, /* * The state not requiring LUKS2 reencryption recovery. We can rollback * to last known safe state (hold in memory since last metadata write) @@ -2381,7 +2379,8 @@ static int reencrypt_init_device_stack(struct crypt_device *cd, * usually it would hint some collision with another userspace process touching * dm devices directly. */ -static int reenc_refresh_helper_devices(struct crypt_device *cd, const char *overlay, const char *hotzone) +static reenc_status_t reenc_refresh_helper_devices(struct crypt_device *cd, const char *overlay, + const char *hotzone) { int r; @@ -2395,25 +2394,27 @@ static int reenc_refresh_helper_devices(struct crypt_device *cd, const char *ove r = dm_suspend_device(cd, overlay, DM_SUSPEND_SKIP_LOCKFS | DM_SUSPEND_NOFLUSH); if (r) { log_err(cd, _("Failed to suspend device %s."), overlay); - return r; + return REENC_ROLLBACK; } /* suspend HZ device */ r = dm_suspend_device(cd, hotzone, DM_SUSPEND_SKIP_LOCKFS | DM_SUSPEND_NOFLUSH); if (r) { log_err(cd, _("Failed to suspend device %s."), hotzone); - return r; + return REENC_ROLLBACK; } /* resume overlay device: inactive table (with hotozne) -> live */ r = dm_resume_device(cd, overlay, DM_RESUME_PRIVATE); - if (r) + if (r) { log_err(cd, _("Failed to resume device %s."), overlay); + return REENC_ROLLBACK; + } - return r; + return REENC_OK; } -static int reencrypt_refresh_overlay_devices(struct crypt_device *cd, +static reenc_status_t reencrypt_refresh_overlay_devices(struct crypt_device *cd, struct luks2_hdr *hdr, const char *overlay, const char *hotzone, @@ -2425,16 +2426,14 @@ static int reencrypt_refresh_overlay_devices(struct crypt_device *cd, int r = reencrypt_load_overlay_device(cd, hdr, overlay, hotzone_device, vks, device_size, flags); if (r) { log_err(cd, _("Failed to reload device %s."), overlay); - return REENC_ERR; + return REENC_ROLLBACK; } r = reenc_refresh_helper_devices(cd, overlay, hotzone); - if (r) { + if (r != REENC_OK) log_err(cd, _("Failed to refresh reencryption devices stack.")); - return REENC_ROLLBACK; - } - return REENC_OK; + return r; } static int reencrypt_move_data(struct crypt_device *cd, @@ -4070,12 +4069,12 @@ static reenc_status_t reencrypt_step(struct crypt_device *cd, /* in memory only */ r = reencrypt_make_segments(cd, hdr, rh, device_size); if (r) - return REENC_ERR; + return REENC_ROLLBACK; r = reencrypt_assign_segments(cd, hdr, rh, 1, 0); if (r) { log_err(cd, _("Failed to set device segments for next reencryption hotzone.")); - return REENC_ERR; + return REENC_ROLLBACK; } log_dbg(cd, "Reencrypting chunk starting at offset: %" PRIu64 ", size :%" PRIu64 ".", rh->offset, rh->length); @@ -4162,7 +4161,7 @@ static reenc_status_t reencrypt_step(struct crypt_device *cd, r = dm_resume_device(cd, rh->hotzone_name, DM_RESUME_PRIVATE); if (r) { log_err(cd, _("Failed to resume device %s."), rh->hotzone_name); - return REENC_ERR; + return REENC_ROLLBACK; } } @@ -4392,7 +4391,7 @@ int crypt_reencrypt_run( r = reencrypt_context_update(cd, rh); if (r) { log_err(cd, _("Failed to update reencryption context.")); - rs = REENC_ERR; + rs = REENC_ROLLBACK; break; } From 3d49f68bfb6c14c88db260d498d63c306fa6173a Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Wed, 10 Dec 2025 16:18:54 +0100 Subject: [PATCH 077/244] reencrypt: better name error values to match the description. --- lib/luks2/luks2_reencrypt.c | 38 ++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/lib/luks2/luks2_reencrypt.c b/lib/luks2/luks2_reencrypt.c index 5977a6e96..544e78b8c 100644 --- a/lib/luks2/luks2_reencrypt.c +++ b/lib/luks2/luks2_reencrypt.c @@ -847,12 +847,12 @@ typedef enum { REENC_OK = 0, * and teardown reencryption device stack (if used). * The reencryption fails but does not require recovery */ - REENC_ROLLBACK, + REENC_ERR_ROLLBACK_MEMORY, /* * Error while writing hotzone (short write or sync fail) or failed metadata * update post hotzone write. */ - REENC_FATAL + REENC_ERR_FATAL } reenc_status_t; void LUKS2_reencrypt_protection_erase(struct reenc_protection *rp) @@ -2394,21 +2394,21 @@ static reenc_status_t reenc_refresh_helper_devices(struct crypt_device *cd, cons r = dm_suspend_device(cd, overlay, DM_SUSPEND_SKIP_LOCKFS | DM_SUSPEND_NOFLUSH); if (r) { log_err(cd, _("Failed to suspend device %s."), overlay); - return REENC_ROLLBACK; + return REENC_ERR_ROLLBACK_MEMORY; } /* suspend HZ device */ r = dm_suspend_device(cd, hotzone, DM_SUSPEND_SKIP_LOCKFS | DM_SUSPEND_NOFLUSH); if (r) { log_err(cd, _("Failed to suspend device %s."), hotzone); - return REENC_ROLLBACK; + return REENC_ERR_ROLLBACK_MEMORY; } /* resume overlay device: inactive table (with hotozne) -> live */ r = dm_resume_device(cd, overlay, DM_RESUME_PRIVATE); if (r) { log_err(cd, _("Failed to resume device %s."), overlay); - return REENC_ROLLBACK; + return REENC_ERR_ROLLBACK_MEMORY; } return REENC_OK; @@ -2426,7 +2426,7 @@ static reenc_status_t reencrypt_refresh_overlay_devices(struct crypt_device *cd, int r = reencrypt_load_overlay_device(cd, hdr, overlay, hotzone_device, vks, device_size, flags); if (r) { log_err(cd, _("Failed to reload device %s."), overlay); - return REENC_ROLLBACK; + return REENC_ERR_ROLLBACK_MEMORY; } r = reenc_refresh_helper_devices(cd, overlay, hotzone); @@ -4069,12 +4069,12 @@ static reenc_status_t reencrypt_step(struct crypt_device *cd, /* in memory only */ r = reencrypt_make_segments(cd, hdr, rh, device_size); if (r) - return REENC_ROLLBACK; + return REENC_ERR_ROLLBACK_MEMORY; r = reencrypt_assign_segments(cd, hdr, rh, 1, 0); if (r) { log_err(cd, _("Failed to set device segments for next reencryption hotzone.")); - return REENC_ROLLBACK; + return REENC_ERR_ROLLBACK_MEMORY; } log_dbg(cd, "Reencrypting chunk starting at offset: %" PRIu64 ", size :%" PRIu64 ".", rh->offset, rh->length); @@ -4092,7 +4092,7 @@ static reenc_status_t reencrypt_step(struct crypt_device *cd, rh->wflags1); if (r) { log_err(cd, _("Failed to initialize old segment storage wrapper.")); - return REENC_ROLLBACK; + return REENC_ERR_ROLLBACK_MEMORY; } if (rh->rp_moved_segment.type != REENC_PROTECTION_NOT_SET) { @@ -4104,7 +4104,7 @@ static reenc_status_t reencrypt_step(struct crypt_device *cd, r = reencrypt_hotzone_protect_ready(cd, rp); if (r) { log_err(cd, _("Failed to initialize hotzone protection.")); - return REENC_ROLLBACK; + return REENC_ERR_ROLLBACK_MEMORY; } if (online) { @@ -4119,7 +4119,7 @@ static reenc_status_t reencrypt_step(struct crypt_device *cd, if (rh->read < 0) { /* severity normal */ log_err(cd, _("Failed to read hotzone area starting at %" PRIu64 "."), rh->offset); - return REENC_ROLLBACK; + return REENC_ERR_ROLLBACK_MEMORY; } /* metadata commit point */ @@ -4127,24 +4127,24 @@ static reenc_status_t reencrypt_step(struct crypt_device *cd, if (r < 0) { /* severity normal */ log_err(cd, _("Failed to write reencryption resilience metadata.")); - return REENC_ROLLBACK; + return REENC_ERR_ROLLBACK_MEMORY; } r = crypt_storage_wrapper_decrypt(rh->cw1, rh->offset, rh->reenc_buffer, rh->read); if (r) { /* severity normal */ log_err(cd, _("Decryption failed.")); - return REENC_ROLLBACK; + return REENC_ERR_ROLLBACK_MEMORY; } if (rh->read != crypt_storage_wrapper_encrypt_write(rh->cw2, rh->offset, rh->reenc_buffer, rh->read)) { /* severity fatal */ log_err(cd, _("Failed to write hotzone area starting at %" PRIu64 "."), rh->offset); - return REENC_FATAL; + return REENC_ERR_FATAL; } if (rp->type != REENC_PROTECTION_NONE && crypt_storage_wrapper_datasync(rh->cw2)) { log_err(cd, _("Failed to sync data.")); - return REENC_FATAL; + return REENC_ERR_FATAL; } /* metadata commit safe point */ @@ -4152,7 +4152,7 @@ static reenc_status_t reencrypt_step(struct crypt_device *cd, if (r) { /* severity fatal */ log_err(cd, _("Failed to update metadata after current reencryption hotzone completed.")); - return REENC_FATAL; + return REENC_ERR_FATAL; } if (online) { @@ -4161,7 +4161,7 @@ static reenc_status_t reencrypt_step(struct crypt_device *cd, r = dm_resume_device(cd, rh->hotzone_name, DM_RESUME_PRIVATE); if (r) { log_err(cd, _("Failed to resume device %s."), rh->hotzone_name); - return REENC_ROLLBACK; + return REENC_ERR_ROLLBACK_MEMORY; } } @@ -4317,7 +4317,7 @@ static int reencrypt_teardown(struct crypt_device *cd, struct luks2_hdr *hdr, progress(rh->device_size, rh->progress, usrptr); r = reencrypt_teardown_ok(cd, hdr, rh); break; - case REENC_FATAL: + case REENC_ERR_FATAL: reencrypt_teardown_fatal(cd, rh); /* fall-through */ default: @@ -4391,7 +4391,7 @@ int crypt_reencrypt_run( r = reencrypt_context_update(cd, rh); if (r) { log_err(cd, _("Failed to update reencryption context.")); - rs = REENC_ROLLBACK; + rs = REENC_ERR_ROLLBACK_MEMORY; break; } From ab4753756a2084928174b97b5b6a6abe970712d9 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Wed, 10 Dec 2025 17:12:28 +0100 Subject: [PATCH 078/244] reencrypt: refactor overlay devices teardown. --- lib/luks2/luks2_reencrypt.c | 64 +++++++++++++++++++++++++++---------- 1 file changed, 47 insertions(+), 17 deletions(-) diff --git a/lib/luks2/luks2_reencrypt.c b/lib/luks2/luks2_reencrypt.c index 544e78b8c..21bd6674f 100644 --- a/lib/luks2/luks2_reencrypt.c +++ b/lib/luks2/luks2_reencrypt.c @@ -4232,6 +4232,48 @@ static int reencrypt_wipe_unused_device_area(struct crypt_device *cd, struct luk return r; } +static int replace_hotzone_device_with_error(struct crypt_device *cd, struct luks2_reencrypt *rh) +{ + log_dbg(cd, "Replacing device %s with dm-error.", rh->hotzone_name); + if (dm_error_device(cd, rh->hotzone_name)) { + log_err(cd, _("Failed to replace suspended device %s with dm-error target."), rh->hotzone_name); + log_err(cd, _("Do not resume the device unless replaced with error target manually.")); + return -EIO; + } + + return 0; +} + +static int teardown_overlay_devices(struct crypt_device *cd, struct luks2_reencrypt *rh) +{ + int r; + + /* Reload device with current LUKS2 segments */ + r = LUKS2_reload(cd, rh->device_name, rh->vks, rh->device_size, rh->flags); + if (r) { + log_err(cd, _("Failed to reload device %s."), rh->device_name); + return r; + } + + /* Now we can switch original top level device away from overlay device */ + r = dm_resume_device(cd, rh->device_name, DM_SUSPEND_SKIP_LOCKFS | DM_SUSPEND_NOFLUSH); + if (r) { + log_err(cd, _("Failed to resume device %s."), rh->device_name); + return r; + } + + /* + * This should not affect teardown return value. There may be other processes + * touching those devices despite being private. + */ + if (dm_remove_device(cd, rh->overlay_name, 0)) + log_dbg(cd, "Failed to remove unused device %s", rh->overlay_name); + if (dm_remove_device(cd, rh->hotzone_name, 0)) + log_dbg(cd, "Failed to remove unused device %s", rh->hotzone_name); + + return 0; +} + static int reencrypt_teardown_ok(struct crypt_device *cd, struct luks2_hdr *hdr, struct luks2_reencrypt *rh) { int i, r; @@ -4245,18 +4287,11 @@ static int reencrypt_teardown_ok(struct crypt_device *cd, struct luks2_hdr *hdr, } if (rh->online) { - r = LUKS2_reload(cd, rh->device_name, rh->vks, rh->device_size, rh->flags); + r = teardown_overlay_devices(cd, rh); if (r) - log_err(cd, _("Failed to reload device %s."), rh->device_name); - if (!r) { - r = dm_resume_device(cd, rh->device_name, DM_SUSPEND_SKIP_LOCKFS | DM_SUSPEND_NOFLUSH); - if (r) - log_err(cd, _("Failed to resume device %s."), rh->device_name); - } - dm_remove_device(cd, rh->overlay_name, 0); - dm_remove_device(cd, rh->hotzone_name, 0); + return r; - if (!r && finished && rh->mode == CRYPT_REENCRYPT_DECRYPT && + if (finished && rh->mode == CRYPT_REENCRYPT_DECRYPT && !dm_flags(cd, DM_LINEAR, &dmt_flags) && (dmt_flags & DM_DEFERRED_SUPPORTED)) dm_remove_device(cd, rh->device_name, CRYPT_DEACTIVATE_DEFERRED); } @@ -4294,13 +4329,8 @@ static void reencrypt_teardown_fatal(struct crypt_device *cd, struct luks2_reenc if (rh->online) { log_err(cd, _("Online reencryption failed.")); - if (dm_status_suspended(cd, rh->hotzone_name) > 0) { - log_dbg(cd, "Hotzone device %s suspended, replacing with dm-error.", rh->hotzone_name); - if (dm_error_device(cd, rh->hotzone_name)) { - log_err(cd, _("Failed to replace suspended device %s with dm-error target."), rh->hotzone_name); - log_err(cd, _("Do not resume the device unless replaced with error target manually.")); - } - } + if (dm_status_suspended(cd, rh->hotzone_name) > 0) + replace_hotzone_device_with_error(cd, rh); } } From 303b319488b652efc68472e1580f5ec0df3e8eba Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Wed, 10 Dec 2025 16:37:20 +0100 Subject: [PATCH 079/244] reencrypt: add more gracefull reencryption error path. This adds proper reencryption error path for non critical failures not requiring full LUKS2 reencryption recovery. While non-critical reencryption failures were properly identified in former code the graceful recovery was never implemented. This affected the state of live device mappings after failed reencription. For example, read error on data device did not trigger LUKS2 recovery scenario (correctly), but the overlay reencryption device stack for online reencryption remained stuck with hotzone layer suspended. This patch addresses the issue. --- lib/luks2/luks2_reencrypt.c | 86 +++++++++++++++++++++++++++++++++---- 1 file changed, 78 insertions(+), 8 deletions(-) diff --git a/lib/luks2/luks2_reencrypt.c b/lib/luks2/luks2_reencrypt.c index 21bd6674f..1845a7824 100644 --- a/lib/luks2/luks2_reencrypt.c +++ b/lib/luks2/luks2_reencrypt.c @@ -2374,11 +2374,6 @@ static int reencrypt_init_device_stack(struct crypt_device *cd, return r; } -/* TODO: - * 1) audit error path. any error in this routine is fatal and should be unlikely. - * usually it would hint some collision with another userspace process touching - * dm devices directly. - */ static reenc_status_t reenc_refresh_helper_devices(struct crypt_device *cd, const char *overlay, const char *hotzone) { @@ -4125,14 +4120,24 @@ static reenc_status_t reencrypt_step(struct crypt_device *cd, /* metadata commit point */ r = reencrypt_hotzone_protect_final(cd, hdr, rh->reenc_keyslot, rp, rh->reenc_buffer, rh->read); if (r < 0) { - /* severity normal */ + /* + * Nothing was written in hotzone area yet. Even if metadata write failed the previous + * state is still valid. If the metadata write passed and there was another + * error it's harmless to do recovery. Recovery may be run several times with no + * negative side effect. + */ log_err(cd, _("Failed to write reencryption resilience metadata.")); return REENC_ERR_ROLLBACK_MEMORY; } r = crypt_storage_wrapper_decrypt(rh->cw1, rh->offset, rh->reenc_buffer, rh->read); if (r) { - /* severity normal */ + /* + * Ideally, this would be specific error (REENC_ERR_ROLLBACK_METADATA) case where + * it would rollback on-disk metadata to the last valid state (still no write in + * hotzone area). But it's not worth the effort. This will trigger full LUKS2 + * reencryption recovery despite not being necessary. + */ log_err(cd, _("Decryption failed.")); return REENC_ERR_ROLLBACK_MEMORY; } @@ -4156,7 +4161,6 @@ static reenc_status_t reencrypt_step(struct crypt_device *cd, } if (online) { - /* severity normal */ log_dbg(cd, "Resuming device %s", rh->hotzone_name); r = dm_resume_device(cd, rh->hotzone_name, DM_RESUME_PRIVATE); if (r) { @@ -4246,6 +4250,7 @@ static int replace_hotzone_device_with_error(struct crypt_device *cd, struct luk static int teardown_overlay_devices(struct crypt_device *cd, struct luks2_reencrypt *rh) { + bool overlay_suspended, hotzone_suspended; int r; /* Reload device with current LUKS2 segments */ @@ -4255,6 +4260,44 @@ static int teardown_overlay_devices(struct crypt_device *cd, struct luks2_reencr return r; } + overlay_suspended = dm_status_suspended(cd, rh->overlay_name) > 0; + hotzone_suspended = dm_status_suspended(cd, rh->hotzone_name) > 0; + + /* + * The overlay (if suspended) may hold already queued I/Os. + * Reload the overlay device with the table identical to the one + * loaded to the top level device. The overlay device will dropped + * shortly after successful top level device resume. + */ + if (overlay_suspended) { + log_dbg(cd, "Reverting suspended device %s to previous metadata segments", rh->overlay_name); + r = LUKS2_reload(cd, rh->overlay_name, rh->vks, rh->device_size, rh->flags); + if (r) { + log_err(cd, _("Failed to reload device %s."), rh->overlay_name); + return r; + } + } + + /* + * if the hotzone is suspended we must error all pending I/O waiting in the device. The + * reencryption step was not completed and the pending I/O would corrupt the data on data + * device. + * + * If the hotzone table replacement fails we must abort! + */ + if (hotzone_suspended && (r = replace_hotzone_device_with_error(cd, rh))) + return r; + + if (overlay_suspended) { + /* Resume will pass since the hotzone (if previously suspended) is now + * replaced with live dm-error table */ + r = dm_resume_device(cd, rh->overlay_name, DM_RESUME_PRIVATE); + if (r) { + log_err(cd, _("Failed to resume device %s."), rh->overlay_name); + return r; + } + } + /* Now we can switch original top level device away from overlay device */ r = dm_resume_device(cd, rh->device_name, DM_SUSPEND_SKIP_LOCKFS | DM_SUSPEND_NOFLUSH); if (r) { @@ -4322,6 +4365,29 @@ static int reencrypt_teardown_ok(struct crypt_device *cd, struct luks2_hdr *hdr, return 0; } +static void reencrypt_teardown_rollback(struct crypt_device *cd, struct luks2_hdr *hdr, + struct luks2_reencrypt *rh) +{ + /* + * We cannot rollback for REENC_PROTECTION_NONE. It does not commit metadata as + * it progresses. In this case, the device stack is intentionally left as-is. + */ + if (rh->rp.type <= REENC_PROTECTION_NONE) + return; + + /* + * If metadata rollback fails, we cannot proceed with device teardown + * as we do not have proper metadata snapshot for LUKS2_reload(). + */ + if (LUKS2_hdr_rollback(cd, hdr)) + return; + + if (!rh->online) + return; + + teardown_overlay_devices(cd, rh); +} + static void reencrypt_teardown_fatal(struct crypt_device *cd, struct luks2_reencrypt *rh) { log_err(cd, _("Fatal error while reencrypting chunk starting at %" PRIu64 ", %" PRIu64 " sectors long."), @@ -4347,6 +4413,10 @@ static int reencrypt_teardown(struct crypt_device *cd, struct luks2_hdr *hdr, progress(rh->device_size, rh->progress, usrptr); r = reencrypt_teardown_ok(cd, hdr, rh); break; + case REENC_ERR_ROLLBACK_MEMORY: + reencrypt_teardown_rollback(cd, hdr, rh); + r = -EINVAL; + break; case REENC_ERR_FATAL: reencrypt_teardown_fatal(cd, rh); /* fall-through */ From 667bc74b83afd158c8d6a92316f20cdad98f694c Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Mon, 1 Dec 2025 16:59:08 +0100 Subject: [PATCH 080/244] tests: Add reencryption error path tests. --- tests/luks2-reencryption-test | 289 ++++++++++++++++++++++++++++++++-- 1 file changed, 274 insertions(+), 15 deletions(-) diff --git a/tests/luks2-reencryption-test b/tests/luks2-reencryption-test index d1d30c33d..f277483e8 100755 --- a/tests/luks2-reencryption-test +++ b/tests/luks2-reencryption-test @@ -20,6 +20,9 @@ OVRDEV="123reenc321" DEVBIG="reenc2134" DEV_NAME=reenc9768 DEV_NAME2=reenc97682 +DEV_HOTZONE_FORWARD="$DEV_NAME-hotzone-forward" +DEV_HOTZONE_BACKWARD="$DEV_NAME-hotzone-backward" +DEV_OVERLAY=$DEV_NAME-overlay IMG=reenc-data IMG_HDR=$IMG.hdr HEADER_LUKS2_PV=blkid-luks2-pv.img @@ -317,6 +320,30 @@ error_io() { # $1 dmdev, $2 data dev, $3 offset, $4 size blockdev --setra 0 /dev/mapper/$1 } +error_reads() { # $1 dmdev, $2 data dev, $3 offset, $4 size + local _dev_size=$(blockdev --getsz /dev/mapper/$1) + local _offset=$(($3+$4)) + local _size=$((_dev_size-_offset)) + local _err=$1-err + local _table= + dmsetup create $_err --table "0 $_dev_size error" || fail + + if [ $3 -ne 0 ]; then + _table="0 $3 linear $2 0\n" + fi + + _table=$_table"$3 $4 delay /dev/mapper/$_err $3 0 $2 $3 0" + + if [ $_size -ne 0 ]; then + _table="$_table\n$_offset $_size linear $2 $_offset" + fi + + echo -e "$_table" | dmsetup load $1 || fail + dmsetup resume $1 || fail + blockdev --setra 0 /dev/mapper/$1 + blockdev --setra 0 /dev/mapper/$_err +} + error_writes() { # $1 dmdev, $2 data dev, $3 offset, $4 size local _dev_size=$(blockdev --getsz /dev/mapper/$1) local _offset=$(($3+$4)) @@ -341,7 +368,7 @@ error_writes() { # $1 dmdev, $2 data dev, $3 offset, $4 size blockdev --setra 0 /dev/mapper/$_err } -fix_writes() { # $1 dmdev, $2 data dev +fix_ios() { # $1 dmdev, $2 data dev local _dev_size=$(blockdev --getsz /dev/mapper/$1) dmsetup load $1 --table "0 $_dev_size linear $2 0" || fail dmsetup resume $1 || fail @@ -379,6 +406,23 @@ get_error_offsets() # $1 devsize, $2 minimal offset, $3 sector_size [512 if omit ERROFFSET=$(($ERROFFSET-($ERROFFSET%$_sector_size))) } +reencrypt_recover_read_error() { # $1 sector size, $2 resilience, $3 digest, [$4 header] + echo -n "resilience mode: $2 ..." + local _hdr="" + test -z "$4" || _hdr="--header $4" + + error_reads $OVRDEV $OLD_DEV $ERROFFSET $ERRLENGTH + echo $PWD1 | $CRYPTSETUP reencrypt $DEV $_hdr --hotzone-size 1M --resilience $2 --sector-size $1 --force-offline-reencrypt -q $FAST_PBKDF_ARGON >/dev/null 2>&1 && fail + fix_ios $OVRDEV $OLD_DEV + + check_hash $PWD1 $3 $4 + + echo $PWD1 | $CRYPTSETUP reencrypt $DEV $_hdr --resilience $2 --sector-size $1 -q $FAST_PBKDF_ARGON || fail + check_hash $PWD1 $3 $4 + + echo "[OK]" +} + reencrypt_recover() { # $1 sector size, $2 resilience, $3 digest, [$4 header] echo -n "resilience mode: $2 ..." local _hdr="" @@ -386,7 +430,7 @@ reencrypt_recover() { # $1 sector size, $2 resilience, $3 digest, [$4 header] error_writes $OVRDEV $OLD_DEV $ERROFFSET $ERRLENGTH echo $PWD1 | $CRYPTSETUP reencrypt $DEV $_hdr --hotzone-size 1M --resilience $2 --sector-size $1 --force-offline-reencrypt -q $FAST_PBKDF_ARGON >/dev/null 2>&1 && fail - fix_writes $OVRDEV $OLD_DEV + fix_ios $OVRDEV $OLD_DEV echo $PWD1 | $CRYPTSETUP -q repair $DEV $_hdr || fail @@ -409,7 +453,7 @@ reencrypt_recover_online() { # $1 sector size, $2 resilience, $3 digest, [$4 hea echo $PWD1 | $CRYPTSETUP reencrypt --active-name $DEV_NAME $_hdr --hotzone-size 1M --resilience $2 --sector-size $1 -q $FAST_PBKDF_ARGON >/dev/null 2>&1 && fail $CRYPTSETUP status $DEV_NAME $_hdr | grep -q "reencryption: in-progress" || fail $CRYPTSETUP close $DEV_NAME || fail - fix_writes $OVRDEV $OLD_DEV + fix_ios $OVRDEV $OLD_DEV # recovery during activation echo $PWD1 | $CRYPTSETUP open $DEV $_hdr $DEV_NAME || fail @@ -426,6 +470,61 @@ reencrypt_recover_online() { # $1 sector size, $2 resilience, $3 digest, [$4 hea echo "[OK]" } +check_device_removed() { # $1 dm device name + # ignore racy udev or udev-like hacks in some distributions + dmsetup status $1 >/dev/null 2>&1 + if [ $? -eq 0 ]; then + local msg="Device $1 is still active" + + local ret=$(dmsetup info -C --nohead $1 | cut -d ':' -f 4) + + [ ${#ret} -eq 4 ] || fail + [ ${ret:2:1} = "s" ] && msg="$msg and suspended." + + fail "$msg" + fi +} + +reencrypt_recover_read_error_online() { # $1 sector size, $2 resilience, $3 digest, [$4 header] + echo -n "resilience mode: $2 ..." + local _hdr="" + test -z "$4" || _hdr="--header $4" + + echo $PWD1 | $CRYPTSETUP open $DEV $_hdr $DEV_NAME || fail + + error_reads $OVRDEV $OLD_DEV $ERROFFSET $ERRLENGTH + echo $PWD1 | $CRYPTSETUP reencrypt --active-name $DEV_NAME $_hdr --hotzone-size 1M --resilience $2 --sector-size $1 -q $FAST_PBKDF_ARGON >/dev/null 2>&1 && fail + + # less severe reencryption errors should not leave helper devices behind + check_device_removed $DEV_HOTZONE_FORWARD + check_device_removed $DEV_OVERLAY + + # The read error may have failed the reencryption initialization (blkid scans are mandatory). + # Check if device is in reencryption state + $CRYPTSETUP luksDump ${4:-$DEV} | grep -q "in-reencryption" + if [ $? -eq 0 ]; then + # the device is expected in interrupted reencryption + $CRYPTSETUP status $DEV_NAME $_hdr | grep -q "reencryption: in-progress" || fail + + fix_ios $OVRDEV $OLD_DEV + + check_hash_dev /dev/mapper/$DEV_NAME $3 + $CRYPTSETUP close $DEV_NAME || fail + + # verify it does correct segment mappings (LUKS2 contains correct state description) + echo $PWD1 | $CRYPTSETUP open $DEV $_hdr $DEV_NAME || fail + check_hash_dev /dev/mapper/$DEV_NAME $3 + + echo $PWD1 | $CRYPTSETUP reencrypt --active-name $DEV_NAME $_hdr --resilience $2 --resume-only -q || fail + check_hash_dev /dev/mapper/$DEV_NAME $3 + else + fix_ios $OVRDEV $OLD_DEV + fi + + $CRYPTSETUP close $DEV_NAME || fail + echo "[OK]" +} + reencrypt_recover_online_vk() { # $1 sector size, $2 resilience, $3 digest, [$4 header] echo -n "resilience mode: $2 ..." local _hdr="" @@ -441,7 +540,7 @@ reencrypt_recover_online_vk() { # $1 sector size, $2 resilience, $3 digest, [$4 echo $PWD1 | $CRYPTSETUP reencrypt --active-name $DEV_NAME $_hdr --hotzone-size 1M --resilience $2 --sector-size $1 -q $FAST_PBKDF_ARGON >/dev/null 2>&1 && fail $CRYPTSETUP status $DEV_NAME $_hdr | grep -q "reencryption: in-progress" || fail $CRYPTSETUP close $DEV_NAME || fail - fix_writes $OVRDEV $OLD_DEV + fix_ios $OVRDEV $OLD_DEV # recovery during activation $CRYPTSETUP open --volume-key-keyring $KEY_NAME1 --volume-key-keyring $KEY_NAME2 $DEV $_hdr $DEV_NAME || fail @@ -468,7 +567,7 @@ encrypt_recover() { # $1 sector size, $2 reduce size, $3 digest, $4 device size error_writes $OVRDEV $OLD_DEV $ERROFFSET $ERRLENGTH echo $PWD1 | $CRYPTSETUP reencrypt $DEV -q >/dev/null 2>&1 && fail - fix_writes $OVRDEV $OLD_DEV + fix_ios $OVRDEV $OLD_DEV echo $PWD1 | $CRYPTSETUP -q repair $DEV || fail @@ -483,6 +582,26 @@ encrypt_recover() { # $1 sector size, $2 reduce size, $3 digest, $4 device size echo "[OK]" } +encrypt_recover_read_error() { # $1 sector size, $2 reduce size, $3 digest, $4 device size in sectors, $5 origin digest + wipe_dev $DEV + check_hash_dev $DEV $5 + + echo -n "resilience mode: datashift ..." + + echo $PWD1 | $CRYPTSETUP reencrypt $DEV --encrypt --reduce-device-size $2 --sector-size $1 -q $FAST_PBKDF_ARGON --init-only >/dev/null 2>&1 || fail + + error_reads $OVRDEV $OLD_DEV $ERROFFSET $ERRLENGTH + echo $PWD1 | $CRYPTSETUP reencrypt $DEV -q >/dev/null 2>&1 && fail + fix_ios $OVRDEV $OLD_DEV + check_hash $PWD1 $3 + + echo $PWD1 | $CRYPTSETUP reencrypt $DEV --resume-only --sector-size $1 -q $FAST_PBKDF_ARGON || fail + + check_hash_head $PWD1 $4 $3 + + echo "[OK]" +} + encrypt_recover_online() { # $1 sector size, $2 reduce size, $3 digest, $4 device size in sectors, $5 origin digest wipe_dev $DEV check_hash_dev $DEV $5 @@ -496,7 +615,7 @@ encrypt_recover_online() { # $1 sector size, $2 reduce size, $3 digest, $4 devic echo $PWD1 | $CRYPTSETUP reencrypt $DEV -q >/dev/null 2>&1 && fail $CRYPTSETUP status $DEV_NAME | grep -q "reencryption: in-progress" || fail $CRYPTSETUP close $DEV_NAME || fail - fix_writes $OVRDEV $OLD_DEV + fix_ios $OVRDEV $OLD_DEV # recovery in activation echo $PWD1 | $CRYPTSETUP open $DEV $DEV_NAME || fail @@ -514,6 +633,41 @@ encrypt_recover_online() { # $1 sector size, $2 reduce size, $3 digest, $4 devic echo "[OK]" } +encrypt_recover_read_error_online() { # $1 sector size, $2 reduce size, $3 digest, $4 device size in sectors, $5 origin digest + wipe_dev $DEV + check_hash_dev $DEV $5 + + echo -n "resilience mode: datashift ..." + + echo $PWD1 | $CRYPTSETUP reencrypt $DEV --encrypt --reduce-device-size $2 --sector-size $1 -q $FAST_PBKDF_ARGON --init-only > /dev/null || fail + echo $PWD1 | $CRYPTSETUP open $DEV $DEV_NAME || fail + + error_reads $OVRDEV $OLD_DEV $ERROFFSET $ERRLENGTH + echo $PWD1 | $CRYPTSETUP reencrypt --resume-only --active-name $DEV_NAME -q >/dev/null 2>&1 && fail + + # less severe reencryption errors should not leave helper devices behind + check_device_removed $DEV_HOTZONE_BACKWARD + check_device_removed $DEV_OVERLAY + + $CRYPTSETUP status $DEV_NAME | grep -q "reencryption: in-progress" || fail + $CRYPTSETUP luksDump $DEV | grep -q "in-reencryption" && fail + fix_ios $OVRDEV $OLD_DEV + + check_hash_dev /dev/mapper/$DEV_NAME $3 + $CRYPTSETUP close $DEV_NAME || fail + + # recovery in activation + echo $PWD1 | $CRYPTSETUP open $DEV $DEV_NAME || fail + check_hash_dev /dev/mapper/$DEV_NAME $3 + + echo $PWD1 | $CRYPTSETUP reencrypt --resume-only --active-name $DEV_NAME -q || fail + + $CRYPTSETUP close $DEV_NAME || fail + check_hash_head $PWD1 $4 $3 + + echo "[OK]" +} + encrypt_recover_detached() { # $1 sector size, $2 resilience, $3 digest, $4 hdr wipe_dev $DEV check_hash_dev $DEV $3 @@ -522,7 +676,7 @@ encrypt_recover_detached() { # $1 sector size, $2 resilience, $3 digest, $4 hdr error_writes $OVRDEV $OLD_DEV $ERROFFSET $ERRLENGTH echo $PWD1 | $CRYPTSETUP reencrypt $DEV --encrypt --hotzone-size 1M --header $4 --resilience $2 --sector-size $1 -q $FAST_PBKDF_ARGON 2>/dev/null && fail - fix_writes $OVRDEV $OLD_DEV + fix_ios $OVRDEV $OLD_DEV echo $PWD1 | $CRYPTSETUP repair $DEV --header $4 || fail @@ -549,7 +703,7 @@ encrypt_recover_detached_online() { # $1 sector size, $2 resilience, $3 digest, echo $PWD1 | $CRYPTSETUP reencrypt -q $DEV --header $4 --hotzone-size 1M 2>/dev/null && fail $CRYPTSETUP status $DEV_NAME --header $4 | grep -q "reencryption: in-progress" || fail $CRYPTSETUP close $DEV_NAME || fail - fix_writes $OVRDEV $OLD_DEV + fix_ios $OVRDEV $OLD_DEV echo $PWD1 | $CRYPTSETUP open $DEV --header $4 $DEV_NAME || fail check_hash_dev /dev/mapper/$DEV_NAME $3 @@ -577,7 +731,7 @@ decrypt_recover_detached() { # $1 sector size, $2 resilience, $3 digest, $4 hdr error_writes $OVRDEV $OLD_DEV $ERROFFSET $ERRLENGTH echo $PWD1 | $CRYPTSETUP reencrypt $DEV --decrypt --hotzone-size 1M --header $4 --resilience $2 -q 2>/dev/null && fail - fix_writes $OVRDEV $OLD_DEV + fix_ios $OVRDEV $OLD_DEV echo $PWD1 | $CRYPTSETUP repair $DEV --header $4 || fail @@ -594,6 +748,29 @@ decrypt_recover_detached() { # $1 sector size, $2 resilience, $3 digest, $4 hdr echo "[OK]" } +decrypt_recover_read_error_detached() { # $1 sector size, $2 resilience, $3 digest, $4 hdr + echo $PWD1 | $CRYPTSETUP -q luksFormat --type luks2 --sector-size $1 --header $4 $FAST_PBKDF_ARGON $DEV || fail + wipe $PWD1 $4 + check_hash $PWD1 $3 $4 + + echo -n "resilience mode: $2 ..." + + error_reads $OVRDEV $OLD_DEV $ERROFFSET $ERRLENGTH + echo $PWD1 | $CRYPTSETUP reencrypt $DEV --decrypt --hotzone-size 1M --header $4 --resilience $2 -q 2>/dev/null && fail + fix_ios $OVRDEV $OLD_DEV + $CRYPTSETUP luksDump $4 | grep -q "in-reencryption" && fail + + check_hash $PWD1 $3 $4 + + echo $PWD1 | $CRYPTSETUP reencrypt $DEV --resume-only --header $4 --resilience $2 -q || fail + + check_hash_dev $DEV $3 + + [ -f $4 ] && rm -f $4 + + echo "[OK]" +} + decrypt_recover_detached_online() { # $1 sector size, $2 resilience, $3 digest, $4 hdr echo $PWD1 | $CRYPTSETUP -q luksFormat --type luks2 --sector-size $1 --header $4 $FAST_PBKDF_ARGON $DEV || fail echo $PWD1 | $CRYPTSETUP open $DEV --header $4 $DEV_NAME || fail @@ -606,7 +783,7 @@ decrypt_recover_detached_online() { # $1 sector size, $2 resilience, $3 digest, echo $PWD1 | $CRYPTSETUP reencrypt $DEV --decrypt --hotzone-size 1M --header $4 --resilience $2 -q 2>/dev/null && fail $CRYPTSETUP status $DEV_NAME --header $4 | grep -q "reencryption: in-progress" || fail $CRYPTSETUP close $DEV_NAME || fail - fix_writes $OVRDEV $OLD_DEV + fix_ios $OVRDEV $OLD_DEV # recovery during activation echo $PWD1 | $CRYPTSETUP open $DEV --header $4 $DEV_NAME || fail @@ -626,6 +803,35 @@ decrypt_recover_detached_online() { # $1 sector size, $2 resilience, $3 digest, echo "[OK]" } +decrypt_recover_read_error_detached_online() { # $1 sector size, $2 resilience, $3 digest, $4 hdr + echo $PWD1 | $CRYPTSETUP -q luksFormat --type luks2 --sector-size $1 --header $4 $FAST_PBKDF_ARGON $DEV || fail + echo $PWD1 | $CRYPTSETUP open $DEV --header $4 $DEV_NAME || fail + wipe_dev /dev/mapper/$DEV_NAME + check_hash_dev /dev/mapper/$DEV_NAME $3 + + echo -n "resilience mode: $2 ..." + + error_reads $OVRDEV $OLD_DEV $ERROFFSET $ERRLENGTH + echo $PWD1 | $CRYPTSETUP reencrypt $DEV --decrypt --hotzone-size 1M --header $4 --resilience $2 -q 2>/dev/null && fail + $CRYPTSETUP status $DEV_NAME --header $4 | grep -q "reencryption: in-progress" || fail + fix_ios $OVRDEV $OLD_DEV + check_hash_dev /dev/mapper/$DEV_NAME $3 + + $CRYPTSETUP close $DEV_NAME || fail + echo $PWD1 | $CRYPTSETUP open $DEV --header $4 $DEV_NAME || fail + + $CRYPTSETUP status $DEV_NAME --header $4 | grep -q "reencryption: in-progress" || fail + check_hash_dev /dev/mapper/$DEV_NAME $3 + echo $PWD1 | $CRYPTSETUP reencrypt $DEV --resume-only --header $4 --resilience $2 -q || fail + + $CRYPTSETUP status $DEV_NAME >/dev/null 2>&1 && fail + check_hash_dev $DEV $3 + + [ -f $4 ] && rm -f $4 + + echo "[OK]" +} + decrypt_recover() { # $1 hash, $2 hdr, $3 dev size, $4 resilience, $5 hotzone size local _res="" local _maxhz="" @@ -637,7 +843,7 @@ decrypt_recover() { # $1 hash, $2 hdr, $3 dev size, $4 resilience, $5 hotzone si error_writes $OVRDEV $OLD_DEV $ERROFFSET $ERRLENGTH echo $PWD1 | $CRYPTSETUP reencrypt $DEV --header $2 -q $_res >/dev/null 2>&1 && fail - fix_writes $OVRDEV $OLD_DEV + fix_ios $OVRDEV $OLD_DEV echo $PWD1 | $CRYPTSETUP -q repair $DEV --header $2 || fail @@ -667,7 +873,7 @@ decrypt_recover_online() { # $1 hash, $2 hdr, $3 dev size echo $PWD1 | $CRYPTSETUP reencrypt $DEV --header $2 -q $_res >/dev/null 2>&1 && fail $CRYPTSETUP status $DEV_NAME --header $2 | grep -q "reencryption: in-progress" || fail $CRYPTSETUP close $DEV_NAME || fail - fix_writes $OVRDEV $OLD_DEV + fix_ios $OVRDEV $OLD_DEV # recovery during activation echo $PWD1 | $CRYPTSETUP open $DEV --header $2 $DEV_NAME || fail @@ -696,7 +902,7 @@ decrypt_recover_online_moved() { # $1 hash, $2 hdr, $3 dev size echo $PWD1 | $CRYPTSETUP reencrypt $DEV --header $2 -q $_res >/dev/null 2>&1 && fail $CRYPTSETUP status $DEV_NAME --header $2 | grep -q "reencryption: in-progress" || fail $CRYPTSETUP close $DEV_NAME || fail - fix_writes $OVRDEV $OLD_DEV + fix_ios $OVRDEV $OLD_DEV # recovery but activation fails due to last segment recovery makes it plaintext device echo $PWD1 | $CRYPTSETUP open $DEV --header $2 $DEV_NAME 2>/dev/null && fail @@ -1258,7 +1464,7 @@ ERROFFSET=34816 ERRLENGTH=65536 error_io $OVRDEV $OLD_DEV $ERROFFSET $ERRLENGTH echo $PWD1 | $CRYPTSETUP reencrypt $DEV --encrypt --device-size 1M --reduce-device-size 32M -q $FAST_PBKDF_ARGON || fail -fix_writes $OVRDEV $OLD_DEV +fix_ios $OVRDEV $OLD_DEV check_hash_head $PWD1 2048 $HASH2 wipe_dev_head $DEV 43 @@ -1268,7 +1474,7 @@ ERRLENGTH=12288 # data device: [ reduce-device-size / 2 ] [ device-size ] [ error minefield ] [ reduce-device-size / 2] error_io $OVRDEV $OLD_DEV $ERROFFSET $ERRLENGTH echo $PWD1 | $CRYPTSETUP reencrypt $DEV --encrypt --device-size 43M --reduce-device-size 16M -q $FAST_PBKDF_ARGON || fail -fix_writes $OVRDEV $OLD_DEV +fix_ios $OVRDEV $OLD_DEV check_hash_head $PWD1 88064 $HASH6 echo "[3] Encryption with detached header" @@ -1431,6 +1637,9 @@ echo "ERR writes to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" reencrypt_recover 512 checksum $HASH1 reencrypt_recover 512 journal $HASH1 +echo "ERR reads to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" +reencrypt_recover_read_error 512 checksum $HASH1 + if [ -n "$DM_SECTOR_SIZE" ]; then echo "sector size 512->4096" @@ -1443,6 +1652,11 @@ if [ -n "$DM_SECTOR_SIZE" ]; then echo $PWD1 | $CRYPTSETUP -q luksFormat --type luks2 --sector-size 512 --offset $OFFSET $FAST_PBKDF_ARGON $DEV || fail wipe $PWD1 reencrypt_recover 4096 journal $HASH1 + echo $PWD1 | $CRYPTSETUP -q luksFormat --type luks2 --sector-size 512 --offset $OFFSET $FAST_PBKDF_ARGON $DEV || fail + wipe $PWD1 + + echo "ERR reads to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" + reencrypt_recover_read_error 4096 checksum $HASH1 echo "sector size 4096->4096" @@ -1453,6 +1667,8 @@ if [ -n "$DM_SECTOR_SIZE" ]; then echo "ERR writes to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" reencrypt_recover 4096 checksum $HASH1 reencrypt_recover 4096 journal $HASH1 + echo "ERR reads to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" + reencrypt_recover_read_error 4096 checksum $HASH1 fi echo "[7] Reencryption recovery (online i/o error)" @@ -1466,6 +1682,8 @@ wipe $PWD1 echo "ERR writes to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" reencrypt_recover_online 512 checksum $HASH1 reencrypt_recover_online 512 journal $HASH1 +echo "ERR reads to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" +reencrypt_recover_read_error_online 512 checksum $HASH1 if [ -n "$DM_SECTOR_SIZE" ]; then echo "sector size 512->4096" @@ -1479,6 +1697,10 @@ if [ -n "$DM_SECTOR_SIZE" ]; then echo $PWD1 | $CRYPTSETUP -q luksFormat --type luks2 --sector-size 512 --offset $OFFSET $FAST_PBKDF_ARGON $DEV || fail wipe $PWD1 reencrypt_recover_online 4096 journal $HASH1 + echo $PWD1 | $CRYPTSETUP -q luksFormat --type luks2 --sector-size 512 --offset $OFFSET $FAST_PBKDF_ARGON $DEV || fail + wipe $PWD1 + echo "ERR reads to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" + reencrypt_recover_read_error_online 4096 checksum $HASH1 echo "sector size 4096->4096" @@ -1489,6 +1711,8 @@ if [ -n "$DM_SECTOR_SIZE" ]; then echo "ERR writes to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" reencrypt_recover_online 4096 checksum $HASH1 reencrypt_recover_online 4096 journal $HASH1 + echo "ERR reads to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" + reencrypt_recover_read_error_online 4096 checksum $HASH1 fi if [ $HAVE_KEYRING -eq 1 ]; then @@ -1540,6 +1764,8 @@ check_hash $PWD1 $HASH7 $IMG_HDR echo "ERR writes to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" reencrypt_recover 512 checksum $HASH7 $IMG_HDR reencrypt_recover 512 journal $HASH7 $IMG_HDR +echo "ERR reads to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" +reencrypt_recover_read_error 512 checksum $HASH7 $IMG_HDR if [ -n "$DM_SECTOR_SIZE" ]; then echo "sector size 512->4096" @@ -1553,6 +1779,11 @@ if [ -n "$DM_SECTOR_SIZE" ]; then echo $PWD1 | $CRYPTSETUP -q luksFormat --type luks2 --sector-size 512 --header $IMG_HDR $FAST_PBKDF_ARGON $DEV || fail wipe $PWD1 $IMG_HDR reencrypt_recover 4096 journal $HASH7 $IMG_HDR + echo $PWD1 | $CRYPTSETUP -q luksFormat --type luks2 --sector-size 512 --header $IMG_HDR $FAST_PBKDF_ARGON $DEV || fail + wipe $PWD1 $IMG_HDR + + echo "ERR reads to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" + reencrypt_recover_read_error 4096 checksum $HASH7 $IMG_HDR echo "sector size 4096->4096" @@ -1563,6 +1794,8 @@ if [ -n "$DM_SECTOR_SIZE" ]; then echo "ERR writes to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" reencrypt_recover 4096 checksum $HASH7 $IMG_HDR reencrypt_recover 4096 journal $HASH7 $IMG_HDR + echo "ERR reads to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" + reencrypt_recover_read_error 4096 checksum $HASH7 $IMG_HDR fi echo "[9] Reencryption with detached header recovery (online i/o error)" @@ -1576,6 +1809,8 @@ wipe $PWD1 $IMG_HDR echo "ERR writes to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" reencrypt_recover_online 512 checksum $HASH7 $IMG_HDR reencrypt_recover_online 512 journal $HASH7 $IMG_HDR +echo "ERR reads to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" +reencrypt_recover_read_error_online 512 checksum $HASH7 $IMG_HDR if [ -n "$DM_SECTOR_SIZE" ]; then echo "sector size 512->4096" @@ -1590,6 +1825,11 @@ if [ -n "$DM_SECTOR_SIZE" ]; then wipe $PWD1 $IMG_HDR reencrypt_recover_online 4096 journal $HASH7 $IMG_HDR + echo $PWD1 | $CRYPTSETUP -q luksFormat --type luks2 --sector-size 512 --header $IMG_HDR $FAST_PBKDF_ARGON $DEV || fail + wipe $PWD1 $IMG_HDR + echo "ERR reads to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" + reencrypt_recover_read_error_online 4096 checksum $HASH7 $IMG_HDR + echo "sector size 4096->4096" get_error_offsets 31 0 4096 @@ -1599,6 +1839,8 @@ if [ -n "$DM_SECTOR_SIZE" ]; then echo "ERR writes to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" reencrypt_recover_online 4096 checksum $HASH7 $IMG_HDR reencrypt_recover_online 4096 journal $HASH7 $IMG_HDR + echo "ERR reads to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" + reencrypt_recover_read_error_online 4096 checksum $HASH7 $IMG_HDR fi echo "[10] Encryption recovery" @@ -1611,6 +1853,8 @@ get_error_offsets 64 $OFFSET 512 $((62*1024*2)) echo "ERR writes to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" encrypt_recover 512 4M $HASH8 $((60*1024*2)) $HASH4 +echo "ERR reads to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" +encrypt_recover_read_error 512 4M $HASH8 $((60*1024*2)) $HASH4 if [ -n "$DM_SECTOR_SIZE" ]; then echo "sector size 4096" @@ -1619,6 +1863,8 @@ if [ -n "$DM_SECTOR_SIZE" ]; then echo "ERR writes to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" encrypt_recover 4096 4M $HASH8 $((60*1024*2)) $HASH4 + echo "ERR reads to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" + encrypt_recover_read_error 4096 4M $HASH8 $((60*1024*2)) $HASH4 fi echo "[11] Encryption recovery (online i/o error)" @@ -1629,6 +1875,8 @@ get_error_offsets 64 $OFFSET 512 $((62*1024*2)) echo "ERR writes to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" encrypt_recover_online 512 4M $HASH8 $((60*1024*2)) $HASH4 +echo "ERR reads to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" +encrypt_recover_read_error_online 512 4M $HASH8 $((60*1024*2)) $HASH4 if [ -n "$DM_SECTOR_SIZE" ]; then echo "sector size 4096" @@ -1637,6 +1885,9 @@ if [ -n "$DM_SECTOR_SIZE" ]; then echo "ERR writes to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" encrypt_recover_online 4096 4M $HASH8 $((60*1024*2)) $HASH4 + + echo "ERR reads to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" + encrypt_recover_read_error_online 4096 4M $HASH8 $((60*1024*2)) $HASH4 fi echo "[12] Encryption with detached header recovery" @@ -1690,6 +1941,8 @@ get_error_offsets 31 2049 echo "ERR writes to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" decrypt_recover_detached 512 journal $HASH7 $IMG_HDR decrypt_recover_detached 512 checksum $HASH7 $IMG_HDR +echo "ERR reads to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" +decrypt_recover_read_error_detached 512 checksum $HASH7 $IMG_HDR if [ -n "$DM_SECTOR_SIZE" ]; then echo "sector size 4096" @@ -1700,6 +1953,8 @@ if [ -n "$DM_SECTOR_SIZE" ]; then echo "ERR writes to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" decrypt_recover_detached 4096 checksum $HASH7 $IMG_HDR decrypt_recover_detached 4096 journal $HASH7 $IMG_HDR + echo "ERR reads to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" + decrypt_recover_read_error_detached 4096 checksum $HASH7 $IMG_HDR fi echo "[15] Decryption with detached header recovery (online i/o error)" @@ -1712,6 +1967,8 @@ get_error_offsets 31 2049 echo "ERR writes to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" decrypt_recover_detached_online 512 journal $HASH7 $IMG_HDR decrypt_recover_detached_online 512 checksum $HASH7 $IMG_HDR +echo "ERR reads to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" +decrypt_recover_read_error_detached_online 512 checksum $HASH7 $IMG_HDR if [ -n "$DM_SECTOR_SIZE" ]; then echo "sector size 4096" @@ -1722,6 +1979,8 @@ if [ -n "$DM_SECTOR_SIZE" ]; then echo "ERR writes to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" decrypt_recover_detached_online 4096 checksum $HASH7 $IMG_HDR decrypt_recover_detached_online 4096 journal $HASH7 $IMG_HDR + echo "ERR reads to sectors [$ERROFFSET,$(($ERROFFSET+$ERRLENGTH-1))]" + decrypt_recover_read_error_detached_online 4096 checksum $HASH7 $IMG_HDR fi echo "[16] Offline reencryption with fixed device size." From 3676b8d6c5c451bf99552f0ce04257ad7a0cfb90 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Mon, 13 Apr 2026 15:54:56 +0200 Subject: [PATCH 081/244] tests: add temporary debug output. One of keyring related reencryption tests fails occasionally. Add debug output to better understand what leads to the fail when it happens. --- tests/luks2-reencryption-test | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tests/luks2-reencryption-test b/tests/luks2-reencryption-test index f277483e8..28a26f51d 100755 --- a/tests/luks2-reencryption-test +++ b/tests/luks2-reencryption-test @@ -2950,8 +2950,16 @@ $CRYPTSETUP close $DEV_NAME || fail reformat_reencrypt_device $CRYPTSETUP -q luksErase $DEV || fail +# run the test with additional debug output +echo "Key before truncate:" +keyctl describe %user:$KEY_NAME_VK2 +keyctl print %user:$KEY_NAME_VK2 head -c 63 $VKEY2 | keyctl padd user $KEY_NAME_VK2 %:$KEYRING > /dev/null || fail -$CRYPTSETUP -q reencrypt --init-only --volume-key-keyring $KEY_NAME_VK2 --new-volume-key-keyring $KEY_NAME_VK1 $DEV <&- 2>/dev/null && fail +echo "Key after truncate:" +keyctl describe %user:$KEY_NAME_VK2 +keyctl print %user:$KEY_NAME_VK2 +$CRYPTSETUP -q reencrypt --init-only --volume-key-keyring $KEY_NAME_VK2 --new-volume-key-keyring $KEY_NAME_VK1 $DEV --debug <&- && fail +#$CRYPTSETUP -q reencrypt --init-only --volume-key-keyring $KEY_NAME_VK2 --new-volume-key-keyring $KEY_NAME_VK1 $DEV <&- 2>/dev/null && fail $CRYPTSETUP luksDump $DEV | grep -q "online-reencrypt" && fail "Failed initialization with reencryption flag" head -c 64 $VKEY2 | keyctl padd user $KEY_NAME_VK2 %:$KEYRING > /dev/null || fail From 4b9400fd7bfc81e390c16766779069043be34649 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Mon, 30 Mar 2026 16:20:10 +0200 Subject: [PATCH 082/244] Update valgrind suppression file There are some not suppressed references in ssh plugin test. Also remove explicit object reference as it is not working as expected in some distros. --- tests/cryptsetup-valg-supps | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/tests/cryptsetup-valg-supps b/tests/cryptsetup-valg-supps index 19349ada1..9b8f86e2b 100644 --- a/tests/cryptsetup-valg-supps +++ b/tests/cryptsetup-valg-supps @@ -33,7 +33,6 @@ fun:_dl_map_new_object fun:dl_open_worker_begin ... - obj:*lib*/libc.so.* } { reachable_libc_dl_map_object @@ -44,7 +43,6 @@ fun:_dl_map_object fun:dl_open_worker_begin ... - obj:*lib*/libc.so.* } { reachable_libc_dl_new_object @@ -55,7 +53,6 @@ fun:_dl_new_object fun:_dl_map_object_from_fd ... - obj:*lib*/libc.so.* } { reachable_libc_dl_check_map_versions @@ -66,5 +63,24 @@ fun:_dl_check_map_versions fun:dl_open_worker_begin ... - obj:*lib*/libc.so.* +} + +# libc plugins load +{ + reachable_libc_dl_load_cache_lookup + Memcheck:Leak + match-leak-kinds: reachable + ... + fun:_dl_load_cache_lookup + fun:_dl_map_new_object + ... +} +{ + reachable_libc_dl_close_worker + Memcheck:Leak + match-leak-kinds: reachable + ... + fun:_dl_close_worker + fun:_dl_close + ... } From d2d0b25ec30112ad4bd4a28ca2c97a4f880c7e5d Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Fri, 20 Mar 2026 13:21:10 +0100 Subject: [PATCH 083/244] fuzz: Remove proto buffer fuzzer After several years this fuzzer found nothing, but eat a lot of time with maintenance. Remove it. In future we will go simpler way, as it looks like a better approach. --- meson.build | 29 - tests/fuzz/LUKS2.proto | 366 ----------- tests/fuzz/LUKS2_plain_JSON.proto | 177 ------ tests/fuzz/Makefile.am | 89 +-- tests/fuzz/README.md | 6 +- tests/fuzz/crypt2_load_proto_fuzz.cc | 38 -- .../fuzz/crypt2_load_proto_plain_json_fuzz.cc | 38 -- .../crypt2_load_proto_plain_json_fuzz.dict | 72 --- tests/fuzz/json_proto_converter.cc | 75 --- tests/fuzz/json_proto_converter.h | 32 - tests/fuzz/meson.build | 90 --- tests/fuzz/oss-fuzz-build.sh | 29 +- tests/fuzz/plain_json_proto_to_luks2.cc | 62 -- .../plain_json_proto_to_luks2_converter.cc | 147 ----- .../plain_json_proto_to_luks2_converter.h | 45 -- tests/fuzz/proto_to_luks2.cc | 62 -- tests/fuzz/proto_to_luks2_converter.cc | 591 ------------------ tests/fuzz/proto_to_luks2_converter.h | 78 --- ...oison-mutated-buffers-from-libfuzzer.patch | 29 - 19 files changed, 6 insertions(+), 2049 deletions(-) delete mode 100644 tests/fuzz/LUKS2.proto delete mode 100644 tests/fuzz/LUKS2_plain_JSON.proto delete mode 100644 tests/fuzz/crypt2_load_proto_fuzz.cc delete mode 100644 tests/fuzz/crypt2_load_proto_plain_json_fuzz.cc delete mode 100644 tests/fuzz/crypt2_load_proto_plain_json_fuzz.dict delete mode 100644 tests/fuzz/json_proto_converter.cc delete mode 100644 tests/fuzz/json_proto_converter.h delete mode 100644 tests/fuzz/plain_json_proto_to_luks2.cc delete mode 100644 tests/fuzz/plain_json_proto_to_luks2_converter.cc delete mode 100644 tests/fuzz/plain_json_proto_to_luks2_converter.h delete mode 100644 tests/fuzz/proto_to_luks2.cc delete mode 100644 tests/fuzz/proto_to_luks2_converter.cc delete mode 100644 tests/fuzz/proto_to_luks2_converter.h delete mode 100644 tests/fuzz/unpoison-mutated-buffers-from-libfuzzer.patch diff --git a/meson.build b/meson.build index 66623e4f1..b587111ff 100644 --- a/meson.build +++ b/meson.build @@ -287,35 +287,6 @@ if get_option('fuzz-targets') else fuzzing_engine = declare_dependency(link_args: get_option('fuzzing-engine').split()) endif - - protobuf = dependency('protobuf', - required: false) - protoc = find_program('protoc', - required: false) - if not protoc.found() - protoc = find_program('tests/fuzz/build/static_lib_deps/bin/protoc', - required: false) - endif - if not protoc.found() or not protobuf.found() - error('protoc tool and/or protobuf pkg-config dependency not found') - endif - - libprotobuf_mutator = dependency('libprotobuf-mutator', - required: false) - if not libprotobuf_mutator.found() - error('libprotobuf-mutator not found') - endif - - protoc_generator = generator(protoc, - output: [ - '@BASENAME@.pb.cc', - '@BASENAME@.pb.h', - ], - arguments: [ - '--proto_path=@CURRENT_SOURCE_DIR@', - '--cpp_out=@BUILD_DIR@', - '@INPUT@', - ]) endif # ========================================================================== diff --git a/tests/fuzz/LUKS2.proto b/tests/fuzz/LUKS2.proto deleted file mode 100644 index 3e4c564d6..000000000 --- a/tests/fuzz/LUKS2.proto +++ /dev/null @@ -1,366 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later -/* - * cryptsetup LUKS2 custom mutator - * - * Copyright (C) 2022-2025 Daniel Zatovic - * Copyright (C) 2022-2025 Red Hat, Inc. All rights reserved. - */ - -syntax = "proto2"; - -package LUKS2_proto; - -// --------------------------------------------------------------------------- -// ----------------------------- GENERIC OBJECTS ----------------------------- -// --------------------------------------------------------------------------- - -message object_id { - oneof id { - // int_id will be mapped to range -16 to 16 (mod 33) - // this way iy should be easier to generate valid - // object cross-references - uint32 int_id = 1; - string string_id = 2; - } -} - -message string_uint64 { - required bool negative = 1; - oneof number { - uint32 uint_num = 2; - string string_num = 3; - } -} - -enum hash_algorithm { - HASH_ALG_SHA1 = 1; - HASH_ALG_SHA256 = 2; -} - - -// --------------------------------------------------------------------------- -// ----------------------------- BINARY HEADER ------------------------------- -// --------------------------------------------------------------------------- - -enum luks2_magic { - INVALID = 0; - FIRST = 1; - SECOND = 2; -} - -enum luks_version { - ONE = 1; - TWO = 2; - THREE = 3; -} - -// we limit the size to 64KiB to make the fuzzing faster -// because the checksum needs to be calculated for the whole image -enum hdr_size { - size_16_KB = 16384; - size_32_KB = 32768; - size_64_KB = 65536; -// size_128_KB = 131072; -// size_256_KB = 262144; -// size_512_KB = 524288; -// size_1_MB = 1048576; -// size_2_MB = 2097152; -// size_4_MB = 4194304; -} - -enum seqid_description { - PRIMARY_GREATER = 0; - SECONDARY_GREATER = 1; - EQUAL = 2; -} - -// message luks2_hdr_disk { -// char magic[LUKS2_MAGIC_L]; -// //uint16_t version; /* Version 2 */ -// uint64_t hdr_size; /* in bytes, including JSON area */ -// uint64_t seqid; /* increased on every update */ -// char label[LUKS2_LABEL_L]; -// char checksum_alg[LUKS2_CHECKSUM_ALG_L]; -// uint8_t salt[LUKS2_SALT_L]; /* unique for every header/offset */ -// char uuid[LUKS2_UUID_L]; -// char subsystem[LUKS2_LABEL_L]; /* owner subsystem label */ -// uint64_t hdr_offset; /* offset from device start in bytes */ -// char _padding[184]; -// uint8_t csum[LUKS2_CHECKSUM_L]; -// } -message LUKS2_header { - required luks_version version = 1; - required luks2_magic magic = 2; - required hdr_size hdr_size = 3; - required bool use_correct_checksum = 4; - - optional uint64 selected_offset = 5; -} - -message LUKS2_both_headers { - required LUKS2_header primary_header = 1; - required LUKS2_header secondary_header = 2; - - required seqid_description seqid = 3; - required json_area_description json_area = 4; -} - -message json_area_description { - optional config_description config = 1; - repeated keyslot_description keyslots = 2; - repeated digest_description digests = 3; - repeated segment_description segments = 4; - repeated token_description tokens = 5; -} - -// --------------------------------------------------------------------------- -// ----------------------------- KEYSLOT OBJECT ------------------------------ -// --------------------------------------------------------------------------- - -enum keyslot_type { - KEYSLOT_TYPE_LUKS2 = 1; - KEYSLOT_TYPE_REENCRYPT = 2; - KEYSLOT_TYPE_PLACEHOLDER = 3; -} - -enum reencrypt_keyslot_mode { - MODE_REENCRYPT = 1; - MODE_ENCRYPT = 2; - MODE_DECRYPT = 3; -} - -enum reencrypt_keyslot_direction { - DIRECTION_FORWARD = 1; - DIRECTION_BACKWARD = 2; -} - -// The area object contains these mandatory fields: -// - type [string] the area type. -// - offset [string-uint64] the offset from the device start to the beginning of the binary area (in bytes). -// - size [string-uint64] the area size (in bytes). -// -// Area type raw contains these additional fields: -// - encryption [string] the area encryption algorithm, in dm-crypt notation (for example aes-xts-plain64). -// - key_size [integer] the area encryption key size. -// -// Area type none and journal (used only for reencryption optional extension) contain only mandatory fields. -// -// Area type checksum (used only for reencryption optional extension) contains these additional fields: -// - hash [string] The hash algorithm for the checksum resilience mode. -// - sector_size [integer] The data unit size for digest checksum calculated with the hash algorithm. -// -// Area type datashift (used only for reencryption optional extension) contains this additional field: -// - shift_size [string-uint64] The data shift (in bytes) performed during reencryption (shift direction is according to direction field). - -enum keyslot_area_type { - KEYSLOT_AREA_TYPE_RAW = 1; - KEYSLOT_AREA_TYPE_NONE = 2; - KEYSLOT_AREA_TYPE_JOURNAL = 3; - KEYSLOT_AREA_TYPE_CHECKSUM = 4; - KEYSLOT_AREA_TYPE_DATASHIFT = 5; -} - -message keyslot_area_description { - // mandatory fields - optional keyslot_area_type type = 1; - optional string_uint64 offset = 2; - optional string_uint64 size = 3; - - // raw type fields - optional string encryption = 4; - optional int32 key_size = 5; - - // checksum type field - optional hash_algorithm hash = 6; - optional int32 sector_size = 7; - - // datashift type fields - optional string_uint64 shift_size = 8; -} - -// The object describes PBKDF attributes used for the keyslot. -// The kdf object mandatory fields are: -// - type [string] the PBKDF type. -// - salt [base64] the salt for PBKDF (binary data). -// -// The pbkdf2 type (compatible with LUKS1) contains these additional fields: -// - hash [string] the hash algorithm for the PBKDF2 (SHA-256). -// - iterations [integer] the PBKDF2 iterations count. -// -// The argon2i and argon2id type contains these additional fields: -// - time [integer] the time cost (in fact the iterations count for Argon2). -// - memory [integer] the memory cost, in kilobytes. If not available, the keyslot cannot be unlocked. -// - cpus [integer] the required number of threads (CPU cores number cost). If not available, unlocking will be slower. - -enum keyslot_kdf_type { - KEYSLOT_KDF_TYPE_PBKDF2 = 1; - KEYSLOT_KDF_TYPE_ARGON2I = 2; - KEYSLOT_KDF_TYPE_ARGON2ID = 3; -} - -message keyslot_kdf_description { - optional keyslot_kdf_type type = 1; - optional string salt = 2; - - // pbkdf2 type - optional hash_algorithm hash = 3; - optional int32 iterations = 4; - - // argon2i and argon2id types - optional int32 time = 5; - optional int32 memory = 6; - optional int32 cpus = 7; -} - -enum keyslot_af_type { - KEYSLOT_AF_TYPE_LUKS1 = 1; -} - -// The af (anti-forensic splitter) object contains this mandatory field: -// - type [string] the anti-forensic function type. -// AF type luks1 (compatible with LUKS1 [1]) contains these additional fields: -// - stripes [integer] the number of stripes, for historical reasons only the 4000 value is supported. -// - hash [string] the hash algorithm used. - -message keyslot_af_description { - optional keyslot_af_type type = 1; - optional int32 stripes = 2; - optional hash_algorithm hash = 3; -} - -// - type [string] the keyslot type. -// - key_size [integer] the key size (in bytes) stored in keyslot. -// - priority [integer,optional] the keyslot priority. Here 0 means ignore (the slot should be used only if explicitly stated), 1 means normal priority and 2 means high priority (tried before normal priority). - -// REENCRYPT -// The key size field must be set to 1. The area type must be none, checksum, -// journal or datashift. -// The reencrypt object must contain these additional fields: -// - mode [string] the reencryption mode. reencrypt, encrypt and decrypt -// - direction [string] the reencryption direction. forward backward - -// - area [object] the allocated area in the binary keyslots area. -// LUKS2 object must contain these additional fields: -// - kdf [object] the PBKDF type and parameters used. -// - af [object] the anti-forensic splitter [1] (only the luks1 type is currently -// used). - -message keyslot_description { - // type - required object_id oid = 1; - - optional keyslot_type type = 2; - optional int32 key_size = 3; - optional int32 priority = 4; - - // reencrypt extension - optional reencrypt_keyslot_mode mode = 5; - optional reencrypt_keyslot_direction direction = 6; - - // objects - optional keyslot_area_description area = 7; - optional keyslot_kdf_description kdf = 8; - optional keyslot_af_description af = 9; -} - -// --------------------------------------------------------------------------- -// ------------------------------ DIGEST OBJECT ------------------------------ -// --------------------------------------------------------------------------- - -message digest_description { - required object_id oid = 1; - - optional keyslot_kdf_type type = 2; - repeated object_id keyslots = 3; - repeated object_id segments = 4; - optional string salt = 5; - optional string digest = 6; - - // pbkdf2 digest fields - optional hash_algorithm hash = 7; - optional int32 iterations = 8; -} - -// --------------------------------------------------------------------------- -// ----------------------------- SEGMENT OBJECT ------------------------------ -// --------------------------------------------------------------------------- - -enum segment_type { - SEGMENT_TYPE_LINEAR = 1; - SEGMENT_TYPE_CRYPT = 2; -} - -enum segment_flag { - IN_REENCRYPTION = 1; - BACKUP_FINAL = 2; - BACKUP_PREVIOUS = 3; - BACKUP_MOVED_SEGMENT = 4; -} - -message segment_integrity_description { - optional string type = 1; - optional string journal_encryption = 2; - optional string journal_integrity = 3; -} - -message segment_description { - required object_id oid = 1; - optional segment_type type = 2; - optional string_uint64 offset = 3; - optional string_uint64 size = 4; - repeated segment_flag flags = 5; - - // segment type crypt - optional string_uint64 iv_tweak = 6; - optional string encryption = 7; - optional int32 sector_size = 8; - optional segment_integrity_description integrity = 9; -} - -// --------------------------------------------------------------------------- -// ------------------------------ TOKEN OBJECT ------------------------------- -// --------------------------------------------------------------------------- - -message token_description { - required object_id oid = 1; - - optional string type = 2; - repeated object_id keyslots = 3; - optional string key_description = 4; -} - -// --------------------------------------------------------------------------- -// ------------------------------ CONFIG OBJECT ------------------------------ -// --------------------------------------------------------------------------- - -// - allow-discards allows TRIM (discards) on the active device. -// - same-cpu-crypt compatibility performance flag for dm-crypt [3] to per- form encryption using the same CPU that originated the request. -// - submit-from-crypt-cpus compatibility performance flag for dm-crypt [3] to disable offloading write requests to a separate thread after encryption. -// - no-journal disable data journalling for dm-integrity [10]. -// - no-read-workqueue compatibility performance flag for dm-crypt [3] to bypass dm-crypt read workqueue and process read requests synchronously. -// - no-write-workqueue compatibility performance flag for dm-crypt [3] to bypass dm-crypt write workqueue and process write requests synchronously. -enum config_flag { - CONFIG_FLAG_ALLOW_DISCARDS = 1; - CONFIG_FLAG_SAME_CPU_CRYPT = 2; - CONFIG_FLAG_SUBMIT_FROM_CRYPT_CPUS = 3; - CONFIG_FLAG_NO_JOURNAL = 4; - CONFIG_FLAG_NO_READ_WORKQUEUE = 5; - CONFIG_FLAG_NO_WRITE_WORKQUEUE = 6; -} - -enum config_requirement { - CONFIG_REQUIREMENT_OFFLINE_REENCRYPT = 1; - CONFIG_REQUIREMENT_ONLINE_REENCRYPT_V2 = 2; -} - -// - json_size [string-uint64] the JSON area size (in bytes). Must match the binary header. -// - keyslots_size [string-uint64] the binary keyslot area size (in bytes). Must be aligned to 4096 bytes. -// - flags [array, optional] the array of string objects with persistent flags for the device. -// - requirements [array, optional] the array of string objects with additional required features for the LUKS device. - -message config_description { - required bool use_primary_hdr_size = 2; - - repeated config_flag config_flags = 3; - repeated config_requirement requirements = 4; -} diff --git a/tests/fuzz/LUKS2_plain_JSON.proto b/tests/fuzz/LUKS2_plain_JSON.proto deleted file mode 100644 index d825f74b4..000000000 --- a/tests/fuzz/LUKS2_plain_JSON.proto +++ /dev/null @@ -1,177 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later -/* - * cryptsetup LUKS2 custom mutator - * - * Copyright (C) 2022-2025 Daniel Zatovic - * Copyright (C) 2022-2025 Red Hat, Inc. All rights reserved. - */ - -syntax = "proto2"; - -package json_proto; - -// --------------------------------------------------------------------------- -// ----------------------------- GENERIC OBJECTS ----------------------------- -// --------------------------------------------------------------------------- - -message object_id { - oneof id { - // int_id will be mapped to range -16 to 16 (mod 33) - // this way iy should be easier to generate valid - // object cross-references - uint32 int_id = 1; - string string_id = 2; - } -} - -message string_uint64 { - required bool negative = 1; - oneof number { - uint32 uint_num = 2; - string string_num = 3; - } -} - -enum hash_algorithm { - HASH_ALG_SHA1 = 1; - HASH_ALG_SHA256 = 2; -} - - -// --------------------------------------------------------------------------- -// ----------------------------- BINARY HEADER ------------------------------- -// --------------------------------------------------------------------------- - -enum luks2_magic { - INVALID = 0; - FIRST = 1; - SECOND = 2; -} - -enum luks_version { - ONE = 1; - TWO = 2; - THREE = 3; -} - -// we limit the size to 64KiB to make the fuzzing faster -// because the checksum needs to be calculated for the whole image -enum hdr_size { - size_16_KB = 16384; - size_32_KB = 32768; - size_64_KB = 65536; -// size_128_KB = 131072; -// size_256_KB = 262144; -// size_512_KB = 524288; -// size_1_MB = 1048576; -// size_2_MB = 2097152; -// size_4_MB = 4194304; -} - -enum seqid_description { - PRIMARY_GREATER = 0; - SECONDARY_GREATER = 1; - EQUAL = 2; -} - -// message luks2_hdr_disk { -// char magic[LUKS2_MAGIC_L]; -// //uint16_t version; /* Version 2 */ -// uint64_t hdr_size; /* in bytes, including JSON area */ -// uint64_t seqid; /* increased on every update */ -// char label[LUKS2_LABEL_L]; -// char checksum_alg[LUKS2_CHECKSUM_ALG_L]; -// uint8_t salt[LUKS2_SALT_L]; /* unique for every header/offset */ -// char uuid[LUKS2_UUID_L]; -// char subsystem[LUKS2_LABEL_L]; /* owner subsystem label */ -// uint64_t hdr_offset; /* offset from device start in bytes */ -// char _padding[184]; -// uint8_t csum[LUKS2_CHECKSUM_L]; -// } -message LUKS2_header { - required luks_version version = 1; - required luks2_magic magic = 2; - required hdr_size hdr_size = 3; - required bool use_correct_checksum = 4; - - optional uint64 selected_offset = 5; -} - -message LUKS2_both_headers { - required LUKS2_header primary_header = 1; - required LUKS2_header secondary_header = 2; - - required seqid_description seqid = 3; - required JsonObject json_area = 4; -} - -message JsonObject { - required string name = 1; - required JsonValue value = 2; -} - -message JsonValue { - oneof value { - // Json value types: - - // null: null, will be used when 'oneof' contains nothing - - // object: another json object of any type - JsonObject object_value = 1; - - // array: an array of values - ArrayValue array_value = 2; - - // number: can be an integer, a float, an exponent - NumberValue number_value = 3; - - // string: unicode string - StringValue string_value = 4; - - // boolean: true or talse - BooleanValue boolean_value = 5; - } -} - -message ArrayValue { - repeated JsonValue value = 1; -} - -message NumberInteger { - required int64 value = 1; -} - -message NumberFloat { - required double value = 1; -} - -message NumberExponent { - required int32 base = 1; - required int32 exponent = 2; - required bool use_uppercase = 3; -} - -message NumberExponentFrac { - required float base = 1; - required int32 exponent = 2; - required bool use_uppercase = 3; -} - -message NumberValue { - required NumberInteger integer_value = 1; - - // integer_value is used when oneof field below has nothing. - oneof value { - NumberFloat float_value = 2; - NumberExponent exponent_value = 3; - NumberExponentFrac exponent_frac_value = 4; - } -} - -message StringValue { - required string value = 1; -} - -message BooleanValue { - required bool value = 1; -} diff --git a/tests/fuzz/Makefile.am b/tests/fuzz/Makefile.am index c7a6cdf0f..114d03943 100644 --- a/tests/fuzz/Makefile.am +++ b/tests/fuzz/Makefile.am @@ -1,16 +1,4 @@ EXTRA_DIST = README.md oss-fuzz-build.sh -dist_noinst_DATA = \ - LUKS2.proto \ - LUKS2_plain_JSON.proto \ - crypt2_load_fuzz.dict \ - crypt2_load_ondisk_fuzz.dict \ - crypt2_load_proto_plain_json_fuzz.dict \ - unpoison-mutated-buffers-from-libfuzzer.patch -CLEANFILES = \ - LUKS2.pb.h \ - LUKS2.pb.cc \ - LUKS2_plain_JSON.pb.h \ - LUKS2_plain_JSON.pb.cc distclean-local: -rm -rf out build @@ -37,85 +25,10 @@ test-environment-m: fi test-environment: | test-environment-m $(DEPS_PATH) -LUKS2.pb.h: LUKS2.proto - $(DEPS_PATH)/bin/protoc LUKS2.proto --cpp_out=. -LUKS2.pb.cc: LUKS2.pb.h - -LUKS2_plain_JSON.pb.h: LUKS2_plain_JSON.proto - $(DEPS_PATH)/bin/protoc LUKS2_plain_JSON.proto --cpp_out=. -LUKS2_plain_JSON.pb.cc: LUKS2_plain_JSON.pb.h - -crypt2_load_proto_fuzz-crypt2_load_proto_fuzz.$(OBJEXT): LUKS2.pb.cc -crypt2_load_proto_plain_json_fuzz-crypt2_load_proto_plain_json_fuzz.$(OBJEXT): LUKS2_plain_JSON.pb.cc - -nodist_crypt2_load_proto_fuzz_SOURCES = LUKS2.pb.h LUKS2.pb.cc -crypt2_load_proto_fuzz_SOURCES = FuzzerInterface.h \ - crypt2_load_proto_fuzz.cc \ - proto_to_luks2_converter.h \ - proto_to_luks2_converter.cc -crypt2_load_proto_fuzz_LDADD = \ - ../../libcryptsetup.la \ - ../../libcrypto_backend.la \ - -L$(DEPS_PATH)/lib -lprotobuf-mutator-libfuzzer -lprotobuf-mutator -lprotobuf -crypt2_load_proto_fuzz_LDFLAGS = $(AM_LDFLAGS) $(LIB_FUZZING_ENGINE) $(SANITIZER) -crypt2_load_proto_fuzz_CXXFLAGS = $(AM_CXXFLAGS) \ - -I$(top_srcdir)/lib \ - -I$(top_srcdir)/tests/fuzz \ - -I$(DEPS_PATH)/include \ - -I$(DEPS_PATH)/include/libprotobuf-mutator -I$(DEPS_PATH)/include/libprotobuf-mutator/src - -nodist_crypt2_load_proto_plain_json_fuzz_SOURCES = LUKS2_plain_JSON.pb.h LUKS2_plain_JSON.pb.cc -crypt2_load_proto_plain_json_fuzz_SOURCES = FuzzerInterface.h \ - crypt2_load_proto_plain_json_fuzz.cc \ - json_proto_converter.h \ - json_proto_converter.cc \ - plain_json_proto_to_luks2_converter.h \ - plain_json_proto_to_luks2_converter.cc -crypt2_load_proto_plain_json_fuzz_LDADD = \ - ../../libcryptsetup.la \ - ../../libcrypto_backend.la \ - -L$(DEPS_PATH)/lib -lprotobuf-mutator-libfuzzer -lprotobuf-mutator -lprotobuf -crypt2_load_proto_plain_json_fuzz_LDFLAGS = $(AM_LDFLAGS) $(LIB_FUZZING_ENGINE) $(SANITIZER) -crypt2_load_proto_plain_json_fuzz_CXXFLAGS = $(AM_CXXFLAGS) \ - -I$(top_srcdir)/lib \ - -I$(top_srcdir)/tests/fuzz \ - -I$(DEPS_PATH)/include \ - -I$(DEPS_PATH)/include/libprotobuf-mutator -I$(DEPS_PATH)/include/libprotobuf-mutator/src - -nodist_proto_to_luks2_SOURCES = LUKS2.pb.h LUKS2.pb.cc -proto_to_luks2_SOURCES = \ - proto_to_luks2.cc \ - proto_to_luks2_converter.h \ - proto_to_luks2_converter.cc -proto_to_luks2_LDADD = ../../libcryptsetup.la ../../libcrypto_backend.la -L$(DEPS_PATH)/lib -lprotobuf -proto_to_luks2_LDFLAGS = $(AM_LDFLAGS) -fsanitize=fuzzer-no-link $(SANITIZER) -proto_to_luks2_CXXFLAGS = $(AM_CXXFLAGS) \ - -I$(top_srcdir)/lib \ - -I$(top_srcdir)/tests/fuzz \ - -I$(DEPS_PATH)/include - -nodist_plain_json_proto_to_luks2_SOURCES = LUKS2_plain_JSON.pb.h LUKS2_plain_JSON.pb.cc -plain_json_proto_to_luks2_SOURCES = \ - plain_json_proto_to_luks2.cc \ - plain_json_proto_to_luks2_converter.h \ - plain_json_proto_to_luks2_converter.cc \ - json_proto_converter.h \ - json_proto_converter.cc -plain_json_proto_to_luks2_LDADD = ../../libcryptsetup.la ../../libcrypto_backend.la -L$(DEPS_PATH)/lib -lprotobuf -plain_json_proto_to_luks2_LDFLAGS = $(AM_LDFLAGS) -fsanitize=fuzzer-no-link $(SANITIZER) -plain_json_proto_to_luks2_CXXFLAGS = $(AM_CXXFLAGS) \ - -I$(top_srcdir)/lib \ - -I$(top_srcdir)/tests/fuzz \ - -I$(DEPS_PATH)/include - if ENABLE_FUZZ_TARGETS noinst_PROGRAMS = \ crypt2_load_fuzz \ - crypt2_load_ondisk_fuzz \ - crypt2_load_proto_fuzz \ - crypt2_load_proto_plain_json_fuzz \ - proto_to_luks2 \ - plain_json_proto_to_luks2 + crypt2_load_ondisk_fuzz fuzz-targets: test-environment $(noinst_PROGRAMS) .PHONY: fuzz-targets diff --git a/tests/fuzz/README.md b/tests/fuzz/README.md index fdcfa2755..7fafc90e5 100644 --- a/tests/fuzz/README.md +++ b/tests/fuzz/README.md @@ -1,6 +1,6 @@ # Fuzzing target for cryptsetup project -This directory contains experimental targets for fuzzing testing. +This directory contains targets for fuzzing testing. It can be run in the OSS-Fuzz project but also compiled separately. # Requirements @@ -34,9 +34,9 @@ sudo chcon -Rt svirt_sandbox_file_t build/ ``` # Run LUKS2 fuzzer -`FUZZER_NAME` can be one of: `crypt2_load_fuzz`, `crypt2_load_proto_fuzz`, `crypt2_load_proto_plain_json_fuzz` +`FUZZER_NAME` can be one of: `crypt2_load_fuzz`, `crypt2_load_ondisk_fuzz` ``` -FUZZER_NAME="crypt2_load_proto_plain_json_fuzz" +FUZZER_NAME="crypt2_load_fuzz" sudo mkdir -p build/corpus/cryptsetup/$FUZZER_NAME sudo python infra/helper.py run_fuzzer --corpus-dir build/corpus/cryptsetup/$FUZZER_NAME/ --sanitizer address cryptsetup $FUZZER_NAME '-jobs=8 -workers=8' ``` diff --git a/tests/fuzz/crypt2_load_proto_fuzz.cc b/tests/fuzz/crypt2_load_proto_fuzz.cc deleted file mode 100644 index def3cf0ad..000000000 --- a/tests/fuzz/crypt2_load_proto_fuzz.cc +++ /dev/null @@ -1,38 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later -/* - * cryptsetup LUKS2 custom mutator fuzz target - * - * Copyright (C) 2022-2025 Daniel Zatovic - * Copyright (C) 2022-2025 Red Hat, Inc. All rights reserved. - */ - -#include "LUKS2.pb.h" -#include "proto_to_luks2_converter.h" -#include "libfuzzer/libfuzzer_macro.h" -#include "FuzzerInterface.h" - -extern "C" { -#include -#include -#include -#include -} - -DEFINE_PROTO_FUZZER(const LUKS2_proto::LUKS2_both_headers &headers) { - struct crypt_device *cd = NULL; - char name[] = "/tmp/test-proto-fuzz.XXXXXX"; - int fd = mkostemp(name, O_RDWR|O_CREAT|O_EXCL|O_CLOEXEC); - - if (fd < 0) - err(EXIT_FAILURE, "mkostemp() failed"); - - LUKS2_proto::LUKS2ProtoConverter converter; - converter.convert(headers, fd); - - if (crypt_init(&cd, name) == 0) - (void)crypt_load(cd, CRYPT_LUKS2, NULL); - crypt_free(cd); - - close(fd); - unlink(name); -} diff --git a/tests/fuzz/crypt2_load_proto_plain_json_fuzz.cc b/tests/fuzz/crypt2_load_proto_plain_json_fuzz.cc deleted file mode 100644 index c1f0f43eb..000000000 --- a/tests/fuzz/crypt2_load_proto_plain_json_fuzz.cc +++ /dev/null @@ -1,38 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later -/* - * cryptsetup LUKS2 custom mutator fuzz target - * - * Copyright (C) 2022-2025 Daniel Zatovic - * Copyright (C) 2022-2025 Red Hat, Inc. All rights reserved. - */ - -#include "LUKS2_plain_JSON.pb.h" -#include "plain_json_proto_to_luks2_converter.h" -#include "libfuzzer/libfuzzer_macro.h" -#include "FuzzerInterface.h" - -extern "C" { -#include -#include -#include -#include -} - -DEFINE_PROTO_FUZZER(const json_proto::LUKS2_both_headers &headers) { - struct crypt_device *cd = NULL; - char name[] = "/tmp/test-proto-fuzz.XXXXXX"; - int fd = mkostemp(name, O_RDWR|O_CREAT|O_EXCL|O_CLOEXEC); - - if (fd < 0) - err(EXIT_FAILURE, "mkostemp() failed"); - - json_proto::LUKS2ProtoConverter converter; - converter.convert(headers, fd); - - if (crypt_init(&cd, name) == 0) - (void)crypt_load(cd, CRYPT_LUKS2, NULL); - crypt_free(cd); - - close(fd); - unlink(name); -} diff --git a/tests/fuzz/crypt2_load_proto_plain_json_fuzz.dict b/tests/fuzz/crypt2_load_proto_plain_json_fuzz.dict deleted file mode 100644 index 7d831518a..000000000 --- a/tests/fuzz/crypt2_load_proto_plain_json_fuzz.dict +++ /dev/null @@ -1,72 +0,0 @@ -# LUKS2 keywords by Daniel Zatovic - -"1024" -"2048" -"4096" -"512" -"aegis128-random" -"aes-cbc:essiv:sha256" -"aes-xts-plain64" -"af" -"allow-discards" -"area" -"argon2i" -"argon2id" -"backup-final" -"backup-moved-segment" -"backup-previous" -"checksum" -"config" -"cpus" -"crypt" -"datashift" -"digest" -"digests" -"direction" -"encryption" -"flags" -"hash" -"in-reencryption" -"integrity" -"iterations" -"iv_tweak" -"journal" -"journal_encryption" -"journal_integrity" -"json_size" -"kdf" -"key_description" -"key_size" -"keyslots" -"keyslots_size" -"linear" -"luks2" -"luks2-keyring" -"LUKS\xBA\xBE" -"memory" -"mode" -"no-journal" -"none" -"no-read-workqueue" -"no-write-workqueue" -"offline-reencrypt" -"offset" -"online-reencrypt-v2" -"pbkdf2" -"priority" -"raw" -"reencrypt" -"requirements" -"salt" -"same-cpu-crypt" -"sector_size" -"segments" -"serpent-xts-plain64" -"shift_size" -"size" -"SKUL\xBA\xBE" -"stripes" -"submit-from-crypt-cpus" -"time" -"tokens" -"twofish-xts-plain64" diff --git a/tests/fuzz/json_proto_converter.cc b/tests/fuzz/json_proto_converter.cc deleted file mode 100644 index 3da143608..000000000 --- a/tests/fuzz/json_proto_converter.cc +++ /dev/null @@ -1,75 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// -// Copyright 2020 Google Inc. - -#include "json_proto_converter.h" - -namespace json_proto { - -void JsonProtoConverter::AppendArray(const ArrayValue& array_value) { - data_ << '['; - bool need_comma = false; - for (const auto& value : array_value.value()) { - // Trailing comma inside of an array makes JSON invalid, avoid adding that. - if (need_comma) - data_ << ','; - else - need_comma = true; - - AppendValue(value); - } - data_ << ']'; -} - -void JsonProtoConverter::AppendNumber(const NumberValue& number_value) { - if (number_value.has_float_value()) { - data_ << number_value.float_value().value(); - } else if (number_value.has_exponent_value()) { - auto value = number_value.exponent_value(); - data_ << value.base(); - data_ << (value.use_uppercase() ? 'E' : 'e'); - data_ << value.exponent(); - } else if (number_value.has_exponent_frac_value()) { - auto value = number_value.exponent_value(); - data_ << value.base(); - data_ << (value.use_uppercase() ? 'E' : 'e'); - data_ << value.exponent(); - } else { - data_ << number_value.integer_value().value(); - } -} - -void JsonProtoConverter::AppendObject(const JsonObject& json_object) { - data_ << '{' << '"' << json_object.name() << '"' << ':'; - AppendValue(json_object.value()); - data_ << '}'; -} - -void JsonProtoConverter::AppendValue(const JsonValue& json_value) { - if (json_value.has_object_value()) { - AppendObject(json_value.object_value()); - } else if (json_value.has_array_value()) { - AppendArray(json_value.array_value()); - } else if (json_value.has_number_value()) { - AppendNumber(json_value.number_value()); - } else if (json_value.has_string_value()) { - data_ << '"' << json_value.string_value().value() << '"'; - } else if (json_value.has_boolean_value()) { - data_ << (json_value.boolean_value().value() ? "true" : "false"); - } else { - data_ << "null"; - } -} - -std::string JsonProtoConverter::Convert(const JsonObject& json_object) { - AppendObject(json_object); - return data_.str(); -} - -std::string JsonProtoConverter::Convert( - const json_proto::ArrayValue& json_array) { - AppendArray(json_array); - return data_.str(); -} - -} // namespace json_proto diff --git a/tests/fuzz/json_proto_converter.h b/tests/fuzz/json_proto_converter.h deleted file mode 100644 index dd2969a92..000000000 --- a/tests/fuzz/json_proto_converter.h +++ /dev/null @@ -1,32 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// -// Copyright 2020 Google Inc. -// - -#ifndef JSON_PROTO_CONVERTER_H_ -#define JSON_PROTO_CONVERTER_H_ - -#include -#include - -#include "LUKS2_plain_JSON.pb.h" - -namespace json_proto { - -class JsonProtoConverter { - public: - std::string Convert(const json_proto::JsonObject&); - std::string Convert(const json_proto::ArrayValue&); - - private: - std::stringstream data_; - - void AppendArray(const json_proto::ArrayValue&); - void AppendNumber(const json_proto::NumberValue&); - void AppendObject(const json_proto::JsonObject&); - void AppendValue(const json_proto::JsonValue&); -}; - -} // namespace json_proto - -#endif // TESTING_LIBFUZZER_PROTO_JSON_PROTO_CONVERTER_H_ diff --git a/tests/fuzz/meson.build b/tests/fuzz/meson.build index 95ea3823e..fc45d4f48 100644 --- a/tests/fuzz/meson.build +++ b/tests/fuzz/meson.build @@ -34,94 +34,4 @@ if get_option('fuzz-targets') link_args, ], include_directories: includes_tools) - - luks2_generated = protoc_generator.process('LUKS2.proto') - crypt2_load_proto_fuzz = executable('crypt2_load_proto_fuzz', - [ - 'crypt2_load_proto_fuzz.cc', - 'proto_to_luks2_converter.cc', - luks2_generated, - ], - dependencies: [ - devmapper, - protobuf, - libprotobuf_mutator, - fuzzing_engine, - ], - link_with: [ - libcryptsetup, - libcrypto_backend, - libutils_io, - ], - link_args: [ - link_args, - ], - include_directories: includes_tools) - - luks2_plain_json_generated = protoc_generator.process('LUKS2_plain_JSON.proto') - crypt2_load_proto_plain_fuzz = executable('crypt2_load_proto_plain_fuzz', - [ - 'crypt2_load_proto_plain_json_fuzz.cc', - 'json_proto_converter.cc', - 'plain_json_proto_to_luks2_converter.cc', - luks2_plain_json_generated, - ], - dependencies: [ - devmapper, - protobuf, - libprotobuf_mutator, - fuzzing_engine, - ], - link_with: [ - libcryptsetup, - libcrypto_backend, - libutils_io, - ], - link_args: [ - link_args, - ], - include_directories: includes_tools) - - proto_to_luks2 = executable('proto_to_luks2', - [ - 'proto_to_luks2.cc', - 'proto_to_luks2_converter.cc', - luks2_generated, - ], - dependencies: [ - devmapper, - protobuf, - libprotobuf_mutator, - ], - link_with: [ - libcryptsetup, - libcrypto_backend, - libutils_io, - ], - link_args: [ - link_args, - ], - include_directories: includes_tools) - - plain_json_proto_to_luks2 = executable('plain_json_proto_to_luks2', - [ - 'plain_json_proto_to_luks2.cc', - 'plain_json_proto_to_luks2_converter.cc', - 'json_proto_converter.cc', - luks2_plain_json_generated, - ], - dependencies: [ - devmapper, - protobuf, - libprotobuf_mutator, - ], - link_with: [ - libcryptsetup, - libcrypto_backend, - libutils_io, - ], - link_args: [ - link_args, - ], - include_directories: includes_tools) endif diff --git a/tests/fuzz/oss-fuzz-build.sh b/tests/fuzz/oss-fuzz-build.sh index b3c6e04c4..3ef8c81cf 100755 --- a/tests/fuzz/oss-fuzz-build.sh +++ b/tests/fuzz/oss-fuzz-build.sh @@ -34,7 +34,7 @@ export CFLAGS="${CFLAGS:-$flags} -I$DEPS_PATH/include" export CXXFLAGS="${CXXFLAGS:-$flags} -I$DEPS_PATH/include" export LDFLAGS="${LDFLAGS-} -L$DEPS_PATH/lib" -ENABLED_FUZZERS=${ENABLED_FUZZERS:-crypt2_load_fuzz crypt2_load_ondisk_fuzz crypt2_load_proto_plain_json_fuzz} +ENABLED_FUZZERS=${ENABLED_FUZZERS:-crypt2_load_fuzz crypt2_load_ondisk_fuzz} mkdir -p $SRC mkdir -p $OUT @@ -42,13 +42,10 @@ mkdir -p $DEPS_PATH cd $SRC echo "Installing dependencies" -LIBFUZZER_PATCH="$XPWD/unpoison-mutated-buffers-from-libfuzzer.patch" -in_oss_fuzz && LIBFUZZER_PATCH="$XPWD/cryptsetup/tests/fuzz/unpoison-mutated-buffers-from-libfuzzer.patch" in_oss_fuzz && apt-get update && apt-get install -y \ make autoconf automake autopoint libtool pkg-config \ - sharutils gettext expect keyutils ninja-build \ - bison flex + sharutils gettext expect keyutils bison flex echo "Cloning git repositories" # FIXME: temporary use branch master instead of develop @@ -68,13 +65,6 @@ last_commit lvm2 [ ! -d popt ] && git clone -q --depth 1 https://github.com/rpm-software-management/popt.git last_commit popt -# FIXME: temporary fix until libprotobuf stops shuffling C++ requirements -# [ ! -d libprotobuf-mutator ] && git clone --depth 1 https://github.com/google/libprotobuf-mutator.git \ -[ ! -d libprotobuf-mutator ] && git clone -q --depth 1 --branch v1.1 -c advice.detachedHead=false \ - https://github.com/google/libprotobuf-mutator.git && - [ "$SANITIZER" == "memory" ] && ( cd libprotobuf-mutator; patch -p1 < $LIBFUZZER_PATCH ) -last_commit libprotobuf-mutator - [ ! -d openssl ] && git clone -q --depth 1 https://github.com/openssl/openssl last_commit openssl @@ -139,21 +129,6 @@ make -j make install cd ../.. -cd libprotobuf-mutator -mkdir -p build -rm -fr build/* -cd build -cmake .. -GNinja \ - -DCMAKE_INSTALL_PREFIX="$DEPS_PATH" \ - -DPKG_CONFIG_PATH="$PKG_CONFIG_PATH" \ - -DLIB_PROTO_MUTATOR_TESTING=OFF \ - -DLIB_PROTO_MUTATOR_DOWNLOAD_PROTOBUF=ON -ninja -ninja install -cd external.protobuf; -cp -Rf bin lib include "$DEPS_PATH"; -cd ../../.. - echo "Building cryptsetup fuzzers" if in_oss_fuzz; then mkdir -p cryptsetup/tests/fuzz/build diff --git a/tests/fuzz/plain_json_proto_to_luks2.cc b/tests/fuzz/plain_json_proto_to_luks2.cc deleted file mode 100644 index 04d33f85d..000000000 --- a/tests/fuzz/plain_json_proto_to_luks2.cc +++ /dev/null @@ -1,62 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later -/* - * cryptsetup LUKS2 protobuf to image converter - * - * Copyright (C) 2022-2025 Daniel Zatovic - * Copyright (C) 2022-2025 Red Hat, Inc. All rights reserved. - */ - -#include -#include - -#include -#include - -#include -#include - -#include "plain_json_proto_to_luks2_converter.h" - -using namespace json_proto; - -int main(int argc, char *argv[]) { - LUKS2_both_headers headers; - LUKS2ProtoConverter converter; - int fd; - - std::string out_img_name; - - if (argc != 2) { - std::cerr << "Usage: " << argv[0] << " \n"; - return EXIT_FAILURE; - } - - fd = open(argv[1], O_RDONLY); - if (fd < 0) { - std::cerr << "Failed to open " << argv[1] << std::endl; - return EXIT_FAILURE; - } - - google::protobuf::io::FileInputStream fileInput(fd); - - if (!google::protobuf::TextFormat::Parse(&fileInput, &headers)) { - std::cerr << "Failed to parse protobuf " << argv[1] << std::endl; - close(fd); - return EXIT_FAILURE; - } - close(fd); - - out_img_name = argv[1]; - out_img_name += ".img"; - - fd = open(out_img_name.c_str(), O_RDWR|O_CREAT|O_EXCL|O_CLOEXEC|O_TRUNC, 0644); - if (fd < 0) { - std::cerr << "Failed to open output file " << out_img_name << std::endl; - return EXIT_FAILURE; - } - converter.set_write_headers_only(false); - converter.convert(headers, fd); - - close(fd); - return EXIT_SUCCESS; -} diff --git a/tests/fuzz/plain_json_proto_to_luks2_converter.cc b/tests/fuzz/plain_json_proto_to_luks2_converter.cc deleted file mode 100644 index 60d2e1ddf..000000000 --- a/tests/fuzz/plain_json_proto_to_luks2_converter.cc +++ /dev/null @@ -1,147 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later -/* - * cryptsetup LUKS2 custom mutator fuzz target - * - * Copyright (C) 2022-2025 Daniel Zatovic - * Copyright (C) 2022-2025 Red Hat, Inc. All rights reserved. - */ - -#include "plain_json_proto_to_luks2_converter.h" -#include "json_proto_converter.h" - -extern "C" { -#include "src/cryptsetup.h" -#include "luks2/luks2.h" -#include -} - -namespace json_proto { - -void LUKS2ProtoConverter::emit_luks2_binary_header(const LUKS2_header &header_proto, int fd, uint64_t offset, uint64_t seqid, const std::string &json_text) { - struct luks2_hdr_disk hdr = {}; - size_t hdr_json_area_len, write_size; - uint8_t csum[LUKS2_CHECKSUM_L]; - int r; - - if (hd) - crypt_hash_destroy(hd); - if (crypt_hash_init(&hd, "sha256")) - err(EXIT_FAILURE, "crypt_hash_init failed"); - - - r = lseek(fd, offset, SEEK_SET); - if (r == -1) - err(EXIT_FAILURE, "lseek failed"); - - switch (header_proto.magic()) { - case INVALID: - memset(&hdr.magic, 0, LUKS2_MAGIC_L); - break; - case FIRST: - memcpy(&hdr.magic, LUKS2_MAGIC_1ST, LUKS2_MAGIC_L); - break; - case SECOND: - memcpy(&hdr.magic, LUKS2_MAGIC_2ND, LUKS2_MAGIC_L); - break; - } - hdr.version = cpu_to_be16(header_proto.version()); - hdr.hdr_size = cpu_to_be64(header_proto.hdr_size()); - hdr.seqid = cpu_to_be64(seqid); - strncpy(hdr.checksum_alg, "sha256", LUKS2_CHECKSUM_ALG_L); - hdr.checksum_alg[LUKS2_CHECKSUM_ALG_L - 1] = '\0'; - strncpy(hdr.uuid, "af7f64ea-3233-4581-946b-6187d812841e", LUKS2_UUID_L); - memset(hdr.salt, 1, LUKS2_SALT_L); - - if (header_proto.has_selected_offset()) - hdr.hdr_offset = cpu_to_be64(header_proto.selected_offset()); - else - hdr.hdr_offset = cpu_to_be64(offset); - - if (write_buffer(fd, &hdr, LUKS2_HDR_BIN_LEN) != LUKS2_HDR_BIN_LEN) - err(EXIT_FAILURE, "write_buffer failed"); - if (crypt_hash_write(hd, (char*)&hdr, LUKS2_HDR_BIN_LEN)) - err(EXIT_FAILURE, "crypt_hash_write failed"); - - if (header_proto.hdr_size() <= LUKS2_HDR_BIN_LEN || - header_proto.hdr_size() > LUKS2_DEFAULT_HDR_SIZE) - hdr_json_area_len = LUKS2_DEFAULT_HDR_SIZE - LUKS2_HDR_BIN_LEN; - else - hdr_json_area_len = header_proto.hdr_size() - LUKS2_HDR_BIN_LEN; - - write_size = json_text.length() > hdr_json_area_len - 1 ? hdr_json_area_len - 1 : json_text.length(); - if (write_buffer(fd, json_text.c_str(), write_size) != (ssize_t)write_size) - err(EXIT_FAILURE, "write_buffer failed"); - if (crypt_hash_write(hd, json_text.c_str(), write_size)) - err(EXIT_FAILURE, "crypt_hash_write failed"); - - for (size_t i = 0; i < (hdr_json_area_len - write_size); i++) { - if (crypt_hash_write(hd, "\0", 1)) - err(EXIT_FAILURE, "crypt_hash_write failed"); - } - - if (header_proto.use_correct_checksum()) { - if (lseek(fd, offset + offsetof(luks2_hdr_disk, csum), SEEK_SET) == -1) - err(EXIT_FAILURE, "lseek failed"); - - int hash_size = crypt_hash_size("sha256"); - if (hash_size <= 0) - err(EXIT_FAILURE, "crypt_hash_size failed"); - - if (crypt_hash_final(hd, (char*)csum, (size_t)hash_size)) - err(EXIT_FAILURE, "crypt_hash_final failed"); - if (write_buffer(fd, csum, hash_size) != hash_size) - err(EXIT_FAILURE, "write_buffer failed"); - } -} - -void LUKS2ProtoConverter::set_write_headers_only(bool headers_only) { - write_headers_only = headers_only; -} - -void LUKS2ProtoConverter::convert(const LUKS2_both_headers &headers, int fd) { - uint64_t primary_seqid, secondary_seqid; - int result; - - size_t out_size = headers.primary_header().hdr_size() + headers.secondary_header().hdr_size(); - - if (out_size < 4096 || out_size > 2 * LUKS2_DEFAULT_HDR_SIZE) - out_size = LUKS2_DEFAULT_HDR_SIZE; - - if (!write_headers_only) - out_size += KEYSLOTS_SIZE + DATA_SIZE; - - result = ftruncate(fd, out_size); - if (result == -1) - err(EXIT_FAILURE, "truncate failed"); - - result = lseek(fd, 0, SEEK_SET); - if (result == -1) - err(EXIT_FAILURE, "lseek failed"); - - switch (headers.seqid()) { - case EQUAL: - primary_seqid = 1; - secondary_seqid = 1; - break; - case PRIMARY_GREATER: - primary_seqid = 2; - secondary_seqid = 1; - break; - case SECONDARY_GREATER: - primary_seqid = 1; - secondary_seqid = 2; - break; - } - - JsonProtoConverter converter; - std::string json_text = converter.Convert(headers.json_area()); - - emit_luks2_binary_header(headers.primary_header(), fd, 0, primary_seqid, json_text); - emit_luks2_binary_header(headers.secondary_header(), fd, headers.primary_header().hdr_size(), secondary_seqid, json_text); -} - -LUKS2ProtoConverter::~LUKS2ProtoConverter() { - if (hd) - crypt_hash_destroy(hd); -} -} // namespace LUKS2_proto diff --git a/tests/fuzz/plain_json_proto_to_luks2_converter.h b/tests/fuzz/plain_json_proto_to_luks2_converter.h deleted file mode 100644 index 74aced52e..000000000 --- a/tests/fuzz/plain_json_proto_to_luks2_converter.h +++ /dev/null @@ -1,45 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later -/* - * cryptsetup LUKS2 custom mutator fuzz target - * - * Copyright (C) 2022-2025 Daniel Zatovic - * Copyright (C) 2022-2025 Red Hat, Inc. All rights reserved. - */ - -#ifndef LUKS2_PROTO_CONVERTER_H_ -#define LUKS2_PROTO_CONVERTER_H_ - -#include -#include -#include - -#include "LUKS2_plain_JSON.pb.h" -extern "C" { -#include "crypto_backend/crypto_backend.h" -} - -namespace json_proto { - -class LUKS2ProtoConverter { - public: - ~LUKS2ProtoConverter(); - void create_jobj(const LUKS2_both_headers &headers, uint64_t hdr_size); - void convert(const LUKS2_both_headers &headers, int fd); - void create_jobj(const LUKS2_both_headers &headers); - void emit_luks2_binary_header(const LUKS2_header &header_proto, int fd, uint64_t offset, uint64_t seqid, const std::string &json_text); - - void set_write_headers_only(bool headers_only); - - const uint8_t *get_out_buffer(); - size_t get_out_size(); - - static const uint64_t KEYSLOTS_SIZE = 3 * 1024 * 1024; - static const uint64_t DATA_SIZE = 16 * 1024 * 1024; - private: - bool write_headers_only = false; - struct crypt_hash *hd = NULL; -}; - -} // namespace LUKS2_proto - -#endif // LUKS2_PROTO_CONVERTER_H_ diff --git a/tests/fuzz/proto_to_luks2.cc b/tests/fuzz/proto_to_luks2.cc deleted file mode 100644 index bd5ff7996..000000000 --- a/tests/fuzz/proto_to_luks2.cc +++ /dev/null @@ -1,62 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later -/* - * cryptsetup LUKS2 protobuf to image converter - * - * Copyright (C) 2022-2025 Daniel Zatovic - * Copyright (C) 2022-2025 Red Hat, Inc. All rights reserved. - */ - -#include -#include - -#include -#include - -#include -#include - -#include "proto_to_luks2_converter.h" - -using namespace LUKS2_proto; - -int main(int argc, char *argv[]) { - LUKS2_both_headers headers; - LUKS2ProtoConverter converter; - int fd; - - std::string out_img_name; - - if (argc != 2) { - std::cerr << "Usage: " << argv[0] << " \n"; - return EXIT_FAILURE; - } - - fd = open(argv[1], O_RDONLY); - if (fd < 0) { - std::cerr << "Failed to open " << argv[1] << std::endl; - return EXIT_FAILURE; - } - - google::protobuf::io::FileInputStream fileInput(fd); - - if (!google::protobuf::TextFormat::Parse(&fileInput, &headers)) { - std::cerr << "Failed to parse protobuf " << argv[1] << std::endl; - close(fd); - return EXIT_FAILURE; - } - close(fd); - - out_img_name = argv[1]; - out_img_name += ".img"; - - fd = open(out_img_name.c_str(), O_RDWR|O_CREAT|O_EXCL|O_CLOEXEC|O_TRUNC, 0644); - if (fd < 0) { - std::cerr << "Failed to open output file " << out_img_name << std::endl; - return EXIT_FAILURE; - } - converter.set_write_headers_only(false); - converter.convert(headers, fd); - - close(fd); - return EXIT_SUCCESS; -} diff --git a/tests/fuzz/proto_to_luks2_converter.cc b/tests/fuzz/proto_to_luks2_converter.cc deleted file mode 100644 index 17a2cb428..000000000 --- a/tests/fuzz/proto_to_luks2_converter.cc +++ /dev/null @@ -1,591 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later -/* - * cryptsetup LUKS2 custom mutator fuzz target - * - * Copyright (C) 2022-2025 Daniel Zatovic - * Copyright (C) 2022-2025 Red Hat, Inc. All rights reserved. - */ - -#include "proto_to_luks2_converter.h" -#include - -extern "C" { -#include "src/cryptsetup.h" -#include "luks2/luks2.h" -#include -} - -namespace LUKS2_proto { - -std::string LUKS2ProtoConverter::string_uint64_to_string(const string_uint64 &str_u64) { - std::ostringstream os; - - if (str_u64.negative()) - os << "-"; - - if (str_u64.has_uint_num()) - os << str_u64.uint_num(); - else if (str_u64.has_string_num()) - os << str_u64.string_num(); - - return os.str(); -} - -std::string LUKS2ProtoConverter::object_id_to_string(const object_id &oid) { - std::ostringstream os; - - if (oid.has_int_id()) { - os << (oid.int_id() % 33) - 16; - } else if (oid.has_string_id()) { - os << oid.string_id(); - } - - return os.str(); -} - -std::string LUKS2ProtoConverter::hash_algorithm_to_string(const hash_algorithm type) { - switch (type) { - case HASH_ALG_SHA1: - return "sha1"; - case HASH_ALG_SHA256: - return "sha256"; - } -} - -std::string LUKS2ProtoConverter::keyslot_area_type_to_string(const keyslot_area_type type) { - switch (type) { - case KEYSLOT_AREA_TYPE_RAW: - return "raw"; - case KEYSLOT_AREA_TYPE_NONE: - return "none"; - case KEYSLOT_AREA_TYPE_JOURNAL: - return "journal"; - case KEYSLOT_AREA_TYPE_CHECKSUM: - return "checksum"; - case KEYSLOT_AREA_TYPE_DATASHIFT: - return "datashift"; - } -} - -void LUKS2ProtoConverter::generate_keyslot_area(struct json_object *jobj_area, const keyslot_area_description &keyslot_area_desc) { - // mandatory fields - if (keyslot_area_desc.has_type()) - json_object_object_add(jobj_area, "type", json_object_new_string(keyslot_area_type_to_string(keyslot_area_desc.type()).c_str())); - if (keyslot_area_desc.has_offset()) - json_object_object_add(jobj_area, "offset", json_object_new_string(string_uint64_to_string(keyslot_area_desc.offset()).c_str())); - if (keyslot_area_desc.has_size()) - json_object_object_add(jobj_area, "size", json_object_new_string(string_uint64_to_string(keyslot_area_desc.size()).c_str())); - - // raw type fields - if (keyslot_area_desc.has_encryption()) - json_object_object_add(jobj_area, "encryption", json_object_new_string(keyslot_area_desc.encryption().c_str())); - if (keyslot_area_desc.has_key_size()) - json_object_object_add(jobj_area, "key_size", json_object_new_int(keyslot_area_desc.key_size())); - - // checksum type fields - if (keyslot_area_desc.has_hash()) - json_object_object_add(jobj_area, "hash", json_object_new_string(hash_algorithm_to_string(keyslot_area_desc.hash()).c_str())); - if (keyslot_area_desc.has_sector_size()) - json_object_object_add(jobj_area, "sector_size", json_object_new_int(keyslot_area_desc.sector_size())); - - // datashift type fields - if (keyslot_area_desc.has_shift_size()) - json_object_object_add(jobj_area, "shift_size", json_object_new_string(string_uint64_to_string(keyslot_area_desc.shift_size()).c_str())); -} - -std::string LUKS2ProtoConverter::keyslot_kdf_type_to_string(const keyslot_kdf_type type) { - switch (type) { - case KEYSLOT_KDF_TYPE_PBKDF2: - return "pbkdf2"; - case KEYSLOT_KDF_TYPE_ARGON2I: - return "argon2i"; - case KEYSLOT_KDF_TYPE_ARGON2ID: - return "argon2id"; - } -} - -void LUKS2ProtoConverter::generate_keyslot_kdf(struct json_object *jobj_kdf, const keyslot_kdf_description &keyslot_kdf_desc) { - // mandatory fields - if (keyslot_kdf_desc.has_type()) - json_object_object_add(jobj_kdf, "type", json_object_new_string(keyslot_kdf_type_to_string(keyslot_kdf_desc.type()).c_str())); - - if (keyslot_kdf_desc.has_salt()) - json_object_object_add(jobj_kdf, "salt", json_object_new_string(keyslot_kdf_desc.salt().c_str())); - else - json_object_object_add(jobj_kdf, "salt", json_object_new_string("6vz4xK7cjan92rDA5JF8O6Jk2HouV0O8DMB6GlztVk=")); - - // pbkdf2 type - if (keyslot_kdf_desc.has_hash()) - json_object_object_add(jobj_kdf, "hash", json_object_new_string(hash_algorithm_to_string(keyslot_kdf_desc.hash()).c_str())); - if (keyslot_kdf_desc.has_iterations()) - json_object_object_add(jobj_kdf, "iterations", json_object_new_int(keyslot_kdf_desc.iterations())); - - // argon2i and argon2id types - if (keyslot_kdf_desc.has_time()) - json_object_object_add(jobj_kdf, "time", json_object_new_int(keyslot_kdf_desc.time())); - if (keyslot_kdf_desc.has_memory()) - json_object_object_add(jobj_kdf, "memory", json_object_new_int(keyslot_kdf_desc.memory())); - if (keyslot_kdf_desc.has_cpus()) - json_object_object_add(jobj_kdf, "cpus", json_object_new_int(keyslot_kdf_desc.cpus())); -} - -std::string LUKS2ProtoConverter::keyslot_af_type_to_string(const keyslot_af_type type) { - switch (type) { - case KEYSLOT_AF_TYPE_LUKS1: - return "luks1"; - } -} - -void LUKS2ProtoConverter::generate_keyslot_af(struct json_object *jobj_af, const keyslot_af_description &keyslot_af_desc) { - if (keyslot_af_desc.has_type()) - json_object_object_add(jobj_af, "type", json_object_new_string(keyslot_af_type_to_string(keyslot_af_desc.type()).c_str())); - if (keyslot_af_desc.has_stripes()) - json_object_object_add(jobj_af, "stripes", json_object_new_int(keyslot_af_desc.stripes())); - if (keyslot_af_desc.has_hash()) - json_object_object_add(jobj_af, "hash", json_object_new_string(hash_algorithm_to_string(keyslot_af_desc.hash()).c_str())); -} - -std::string LUKS2ProtoConverter::keyslot_type_to_string(const keyslot_type type) { - switch (type) { - case KEYSLOT_TYPE_LUKS2: - return "luks2"; - case KEYSLOT_TYPE_REENCRYPT: - return "reencrypt"; - case KEYSLOT_TYPE_PLACEHOLDER: - return "placeholder"; - } -} - -std::string LUKS2ProtoConverter::reencrypt_keyslot_mode_to_string(const reencrypt_keyslot_mode mode) { - switch (mode) { - case MODE_REENCRYPT: - return "reencrypt"; - case MODE_ENCRYPT: - return "encrypt"; - case MODE_DECRYPT: - return "decrypt"; - } -} - -std::string LUKS2ProtoConverter::reencrypt_keyslot_direction_to_string(const reencrypt_keyslot_direction direction) { - switch (direction) { - case DIRECTION_FORWARD: - return "forward"; - case DIRECTION_BACKWARD: - return "backward"; - } -} - -void LUKS2ProtoConverter::generate_keyslot(struct json_object *jobj_keyslots, const keyslot_description &keyslot_desc) { - struct json_object *jobj_keyslot, *jobj_area, *jobj_kdf, *jobj_af; - - jobj_keyslot = json_object_new_object(); - if (keyslot_desc.has_type()) - json_object_object_add(jobj_keyslot, "type", json_object_new_string(keyslot_type_to_string(keyslot_desc.type()).c_str())); - if (keyslot_desc.has_key_size()) - json_object_object_add(jobj_keyslot, "key_size", json_object_new_int(keyslot_desc.key_size())); - if (keyslot_desc.has_priority()) - json_object_object_add(jobj_keyslot, "priority", json_object_new_int(keyslot_desc.priority())); - if (keyslot_desc.has_mode()) - json_object_object_add(jobj_keyslot, "mode", json_object_new_int(keyslot_desc.mode())); - if (keyslot_desc.has_direction()) - json_object_object_add(jobj_keyslot, "direction", json_object_new_int(keyslot_desc.direction())); - - /* Area object */ - if (keyslot_desc.has_area()) { - jobj_area = json_object_new_object(); - generate_keyslot_area(jobj_area, keyslot_desc.area()); - json_object_object_add(jobj_keyslot, "area", jobj_area); - } - - /* KDF object */ - if (keyslot_desc.has_kdf()) { - jobj_kdf = json_object_new_object(); - generate_keyslot_kdf(jobj_kdf, keyslot_desc.kdf()); - json_object_object_add(jobj_keyslot, "kdf", jobj_kdf); - } - - /* AF object */ - if (keyslot_desc.has_af()) { - jobj_af = json_object_new_object(); - generate_keyslot_af(jobj_af, keyslot_desc.af()); - json_object_object_add(jobj_keyslot, "af", jobj_af); - } - - json_object_object_add(jobj_keyslots, object_id_to_string(keyslot_desc.oid()).c_str(), jobj_keyslot); -} - -void LUKS2ProtoConverter::generate_token(struct json_object *jobj_tokens, const token_description &token_desc) { - struct json_object *jobj_token, *jobj_keyslots; - jobj_token = json_object_new_object(); - - if (token_desc.has_type()) - json_object_object_add(jobj_token, "type", json_object_new_string(token_desc.type().c_str())); - - if (token_desc.has_key_description()) - json_object_object_add(jobj_token, "key_description", json_object_new_string(token_desc.key_description().c_str())); - - if (!token_desc.keyslots().empty()) { - jobj_keyslots = json_object_new_array(); - - for (const object_id& oid : token_desc.keyslots()) { - json_object_array_add(jobj_keyslots, - json_object_new_string(object_id_to_string(oid).c_str())); - } - - /* Replace or add new keyslots array */ - json_object_object_add(jobj_token, "keyslots", jobj_keyslots); - } - - json_object_object_add(jobj_tokens, object_id_to_string(token_desc.oid()).c_str(), jobj_token); -} - -void LUKS2ProtoConverter::generate_digest(struct json_object *jobj_digests, const digest_description &digest_desc) { - struct json_object *jobj_digest, *jobj_keyslots, *jobj_segments; - - jobj_digest = json_object_new_object(); - - if (digest_desc.has_type()) - json_object_object_add(jobj_digest, "type", json_object_new_string(keyslot_kdf_type_to_string(digest_desc.type()).c_str())); - - if (!digest_desc.keyslots().empty()) { - jobj_keyslots = json_object_new_array(); - - for (const object_id& oid : digest_desc.keyslots()) { - json_object_array_add(jobj_keyslots, - json_object_new_string(object_id_to_string(oid).c_str())); - } - - /* Replace or add new keyslots array */ - json_object_object_add(jobj_digest, "keyslots", jobj_keyslots); - } - - if (!digest_desc.segments().empty()) { - jobj_segments = json_object_new_array(); - - for (const object_id& oid : digest_desc.segments()) { - json_object_array_add(jobj_segments, - json_object_new_string(object_id_to_string(oid).c_str())); - } - - /* Replace or add new segments array */ - json_object_object_add(jobj_digest, "segments", jobj_segments); - } - - if (digest_desc.has_salt()) - json_object_object_add(jobj_digest, "salt", json_object_new_string(digest_desc.salt().c_str())); - if (digest_desc.has_digest()) - json_object_object_add(jobj_digest, "digest", json_object_new_string(digest_desc.digest().c_str())); - if (digest_desc.has_hash()) - json_object_object_add(jobj_digest, "hash", json_object_new_string(hash_algorithm_to_string(digest_desc.hash()).c_str())); - if (digest_desc.has_iterations()) - json_object_object_add(jobj_digest, "iterations", json_object_new_int(digest_desc.iterations())); - - json_object_object_add(jobj_digests, object_id_to_string(digest_desc.oid()).c_str(), jobj_digest); -} - -std::string LUKS2ProtoConverter::segment_type_to_string(segment_type type) { - switch (type) { - case SEGMENT_TYPE_LINEAR: - return "linear"; - case SEGMENT_TYPE_CRYPT: - return "crypt"; - } -} - -std::string LUKS2ProtoConverter::segment_flag_to_string(segment_flag flag) { - switch (flag) { - case IN_REENCRYPTION: - return "in-reencryption"; - case BACKUP_FINAL: - return "backup-final"; - case BACKUP_PREVIOUS: - return "backup-previous"; - case BACKUP_MOVED_SEGMENT: - return "backup-moved-segment"; - } -} - -void LUKS2ProtoConverter::generate_segment_integrity(struct json_object *jobj_integrity, const segment_integrity_description &segment_integrity_desc) { - if (segment_integrity_desc.has_type()) - json_object_object_add(jobj_integrity, "type", json_object_new_string(segment_integrity_desc.type().c_str())); - if (segment_integrity_desc.has_journal_encryption()) - json_object_object_add(jobj_integrity, "journal_encryption", json_object_new_string(segment_integrity_desc.journal_encryption().c_str())); - if (segment_integrity_desc.has_journal_integrity()) - json_object_object_add(jobj_integrity, "journal_integrity", json_object_new_string(segment_integrity_desc.journal_integrity().c_str())); -} - -void LUKS2ProtoConverter::generate_segment(struct json_object *jobj_segments, const segment_description &segment_desc) { - json_object *jobj_flags, *jobj_integrity; - json_object *jobj_segment = json_object_new_object(); - - if (segment_desc.has_type()) - json_object_object_add(jobj_segment, "type", json_object_new_string(segment_type_to_string(segment_desc.type()).c_str())); - - if (segment_desc.has_offset()) - json_object_object_add(jobj_segment, "offset", json_object_new_string(string_uint64_to_string(segment_desc.offset()).c_str())); - if (segment_desc.has_size()) - json_object_object_add(jobj_segment, "size", json_object_new_string(string_uint64_to_string(segment_desc.size()).c_str())); - - if (!segment_desc.flags().empty()) { - jobj_flags = json_object_new_array(); - - for (const int flag : segment_desc.flags()) { - json_object_array_add(jobj_flags, - json_object_new_string(segment_flag_to_string(segment_flag(flag)).c_str())); - } - - /* Replace or add new flags array */ - json_object_object_add(jobj_segment, "flags", jobj_flags); - } - - if (segment_desc.has_iv_tweak()) - json_object_object_add(jobj_segment, "iv_tweak", json_object_new_string(string_uint64_to_string(segment_desc.iv_tweak()).c_str())); - if (segment_desc.has_encryption()) - json_object_object_add(jobj_segment, "encryption", json_object_new_string(segment_desc.encryption().c_str())); - if (segment_desc.has_sector_size()) - json_object_object_add(jobj_segment, "sector_size", json_object_new_int(segment_desc.sector_size())); - - if (segment_desc.has_integrity()) { - jobj_integrity = json_object_new_object(); - generate_segment_integrity(jobj_integrity, segment_desc.integrity()); - json_object_object_add(jobj_segment, "integrity", jobj_integrity); - } - - json_object_object_add(jobj_segments, object_id_to_string(segment_desc.oid()).c_str(), jobj_segment); -} - -void LUKS2ProtoConverter::create_jobj(const LUKS2_both_headers &headers) { - json_object *jobj_keyslots = NULL; - json_object *jobj_digests = NULL; - json_object *jobj_segments = NULL; - json_object *jobj_tokens = NULL; - - const json_area_description &json_desc = headers.json_area(); - - jobj = json_object_new_object(); - if (!jobj) - return; - - jobj_keyslots = json_object_new_object(); - for (const keyslot_description &keyslot_desc : json_desc.keyslots()) { - generate_keyslot(jobj_keyslots, keyslot_desc); - } - json_object_object_add(jobj, "keyslots", jobj_keyslots); - - jobj_digests = json_object_new_object(); - for (const digest_description &digest_desc : json_desc.digests()) { - generate_digest(jobj_digests, digest_desc); - } - json_object_object_add(jobj, "digests", jobj_digests); - - jobj_segments = json_object_new_object(); - for (const segment_description &segment_desc : json_desc.segments()) { - generate_segment(jobj_segments, segment_desc); - } - json_object_object_add(jobj, "segments", jobj_segments); - - jobj_tokens = json_object_new_object(); - for (const token_description &token_desc : json_desc.tokens()) { - generate_token(jobj_tokens, token_desc); - } - json_object_object_add(jobj, "tokens", jobj_tokens); - - if (json_desc.has_config()) { - uint64_t hdr_size = json_desc.config().use_primary_hdr_size() ? headers.primary_header().hdr_size() : headers.secondary_header().hdr_size(); - generate_config(json_desc.config(), hdr_size - LUKS2_HDR_BIN_LEN, KEYSLOTS_SIZE); - } -} - -void LUKS2ProtoConverter::emit_luks2_binary_header(const LUKS2_header &header_proto, int fd, uint64_t offset, uint64_t seqid) { - struct luks2_hdr_disk hdr = {}; - int r; - - if (hd) - crypt_hash_destroy(hd); - if (crypt_hash_init(&hd, "sha256")) - err(EXIT_FAILURE, "crypt_hash_init failed"); - - - r = lseek(fd, offset, SEEK_SET); - if (r == -1) - err(EXIT_FAILURE, "lseek failed"); - - switch (header_proto.magic()) { - case INVALID: - memset(&hdr.magic, 0, LUKS2_MAGIC_L); - break; - case FIRST: - memcpy(&hdr.magic, LUKS2_MAGIC_1ST, LUKS2_MAGIC_L); - break; - case SECOND: - memcpy(&hdr.magic, LUKS2_MAGIC_2ND, LUKS2_MAGIC_L); - break; - } - hdr.version = cpu_to_be16(header_proto.version()); - hdr.hdr_size = cpu_to_be64(header_proto.hdr_size()); - hdr.seqid = cpu_to_be64(seqid); - strncpy(hdr.checksum_alg, "sha256", LUKS2_CHECKSUM_ALG_L); - hdr.checksum_alg[LUKS2_CHECKSUM_ALG_L - 1] = '\0'; - strncpy(hdr.uuid, "af7f64ea-3233-4581-946b-6187d812841e", LUKS2_UUID_L); - memset(hdr.salt, 1, LUKS2_SALT_L); - - - if (header_proto.has_selected_offset()) - hdr.hdr_offset = cpu_to_be64(header_proto.selected_offset()); - else - hdr.hdr_offset = cpu_to_be64(offset); - - if (write_buffer(fd, &hdr, LUKS2_HDR_BIN_LEN) != LUKS2_HDR_BIN_LEN) - err(EXIT_FAILURE, "write_buffer failed"); - if (crypt_hash_write(hd, (char*)&hdr, LUKS2_HDR_BIN_LEN)) - err(EXIT_FAILURE, "crypt_hash_write failed"); - - size_t hdr_json_area_len = header_proto.hdr_size() - LUKS2_HDR_BIN_LEN; - size_t json_text_len; - const char *json_text; - uint8_t csum[LUKS2_CHECKSUM_L]; - - if (jobj) { - json_text = json_object_to_json_string_ext((struct json_object *)jobj, JSON_C_TO_STRING_PLAIN | JSON_C_TO_STRING_NOSLASHESCAPE); - if (!json_text || !*json_text) - err(EXIT_FAILURE, "json_object_to_json_string_ext failed"); - - json_text_len = strlen(json_text); - - size_t write_size = json_text_len > hdr_json_area_len - 1 ? hdr_json_area_len - 1 : json_text_len; - if (write_buffer(fd, json_text, write_size) != (ssize_t)write_size) - err(EXIT_FAILURE, "write_buffer failed"); - if (crypt_hash_write(hd, json_text, write_size)) - err(EXIT_FAILURE, "crypt_hash_write failed"); - - for (size_t i = 0; i < (hdr_json_area_len - write_size); i++) { - if (crypt_hash_write(hd, "\0", 1)) - err(EXIT_FAILURE, "crypt_hash_write failed"); - } - } - - if (header_proto.use_correct_checksum()) { - if (lseek(fd, offset + offsetof(luks2_hdr_disk, csum), SEEK_SET) == -1) - err(EXIT_FAILURE, "lseek failed"); - - int hash_size = crypt_hash_size("sha256"); - if (hash_size <= 0) - err(EXIT_FAILURE, "crypt_hash_size failed"); - - if (crypt_hash_final(hd, (char*)csum, (size_t)hash_size)) - err(EXIT_FAILURE, "crypt_hash_final failed"); - if (write_buffer(fd, csum, hash_size) != hash_size) - err(EXIT_FAILURE, "write_buffer failed"); - } -} - -void LUKS2ProtoConverter::set_write_headers_only(bool headers_only) { - write_headers_only = headers_only; -} - -void LUKS2ProtoConverter::convert(const LUKS2_both_headers &headers, int fd) { - uint64_t primary_seqid, secondary_seqid; - int result; - - size_t out_size = headers.primary_header().hdr_size() + headers.secondary_header().hdr_size(); - - if (!write_headers_only) - out_size += KEYSLOTS_SIZE + DATA_SIZE; - - result = ftruncate(fd, out_size); - if (result == -1) - err(EXIT_FAILURE, "truncate failed"); - - result = lseek(fd, 0, SEEK_SET); - if (result == -1) - err(EXIT_FAILURE, "lseek failed"); - - switch (headers.seqid()) { - case EQUAL: - primary_seqid = 1; - secondary_seqid = 1; - break; - case PRIMARY_GREATER: - primary_seqid = 2; - secondary_seqid = 1; - break; - case SECONDARY_GREATER: - primary_seqid = 1; - secondary_seqid = 2; - break; - } - - create_jobj(headers); - emit_luks2_binary_header(headers.primary_header(), fd, 0, primary_seqid); - emit_luks2_binary_header(headers.secondary_header(), fd, headers.primary_header().hdr_size(), secondary_seqid); -} - -std::string LUKS2ProtoConverter::config_flag_to_string(config_flag flag) { - switch (flag) { - case CONFIG_FLAG_ALLOW_DISCARDS: - return "allow-discards"; - case CONFIG_FLAG_SAME_CPU_CRYPT: - return "same-cpu-crypt"; - case CONFIG_FLAG_SUBMIT_FROM_CRYPT_CPUS: - return "submit-from-crypt-cpus"; - case CONFIG_FLAG_NO_JOURNAL: - return "no-journal"; - case CONFIG_FLAG_NO_READ_WORKQUEUE: - return "no-read-workqueue"; - case CONFIG_FLAG_NO_WRITE_WORKQUEUE: - return "no-write-workqueue"; - } -} - -std::string LUKS2ProtoConverter::config_requirement_to_string(config_requirement requirement) { - switch (requirement) { - case CONFIG_REQUIREMENT_OFFLINE_REENCRYPT: - return "offline-reencrypt"; - case CONFIG_REQUIREMENT_ONLINE_REENCRYPT_V2: - return "online-reencrypt-v2"; - } -} - -void LUKS2ProtoConverter::generate_config(const config_description &config_desc, uint64_t json_size, uint64_t keyslots_size) { - json_object *jobj_config, *jobj_flags, *jobj_requirements, *jobj_mandatory; - jobj_config = json_object_new_object(); - - json_object_object_add(jobj_config, "json_size", json_object_new_string(std::to_string(json_size).c_str())); - json_object_object_add(jobj_config, "keyslots_size", json_object_new_string(std::to_string(keyslots_size).c_str())); - - if (!config_desc.config_flags().empty()) { - jobj_flags = json_object_new_array(); - - for (const int flag : config_desc.config_flags()) { - json_object_array_add(jobj_flags, - json_object_new_string(config_flag_to_string(config_flag(flag)).c_str())); - } - - /* Replace or add new flags array */ - json_object_object_add(jobj_config, "flags", jobj_flags); - } - - if (!config_desc.requirements().empty()) { - jobj_requirements = json_object_new_object(); - jobj_mandatory = json_object_new_array(); - - for (const int requirement : config_desc.requirements()) { - json_object_array_add(jobj_mandatory, - json_object_new_string(config_requirement_to_string(config_requirement(requirement)).c_str())); - } - - /* Replace or add new requirements array */ - json_object_object_add(jobj_requirements, "mandatory", jobj_mandatory); - json_object_object_add(jobj_config, "requirements", jobj_requirements); - } - - json_object_object_add(jobj, "config", jobj_config); -} - -LUKS2ProtoConverter::~LUKS2ProtoConverter() { - json_object_put(jobj); - if (hd) - crypt_hash_destroy(hd); -} -} // namespace LUKS2_proto diff --git a/tests/fuzz/proto_to_luks2_converter.h b/tests/fuzz/proto_to_luks2_converter.h deleted file mode 100644 index 873a28ad2..000000000 --- a/tests/fuzz/proto_to_luks2_converter.h +++ /dev/null @@ -1,78 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later -/* - * cryptsetup LUKS2 custom mutator fuzz target - * - * Copyright (C) 2022-2025 Daniel Zatovic - * Copyright (C) 2022-2025 Red Hat, Inc. All rights reserved. - */ - -#ifndef LUKS2_PROTO_CONVERTER_H_ -#define LUKS2_PROTO_CONVERTER_H_ - -#include -#include -#include - -#include "LUKS2.pb.h" -extern "C" { -#include "crypto_backend/crypto_backend.h" -} - -namespace LUKS2_proto { - -class LUKS2ProtoConverter { - public: - ~LUKS2ProtoConverter(); - std::string string_uint64_to_string(const string_uint64 &str_u64); - std::string hash_algorithm_to_string(const hash_algorithm type); - std::string object_id_to_string(const object_id &oid); - - std::string keyslot_area_type_to_string(const keyslot_area_type type); - std::string keyslot_kdf_type_to_string(const keyslot_kdf_type type); - std::string reencrypt_keyslot_mode_to_string(const reencrypt_keyslot_mode mode); - std::string keyslot_type_to_string(const keyslot_type type); - std::string reencrypt_keyslot_direction_to_string(const reencrypt_keyslot_direction direction); - std::string keyslot_af_type_to_string(const keyslot_af_type type); - - std::string config_flag_to_string(config_flag flag); - std::string config_requirement_to_string(config_requirement requirements); - - std::string segment_type_to_string(segment_type type); - std::string segment_flag_to_string(segment_flag flag); - - void generate_keyslot(struct json_object *jobj_keyslots, const keyslot_description &keyslot_desc); - void generate_keyslot_area(struct json_object *jobj_area, const keyslot_area_description &keyslot_area_desc); - void generate_keyslot_kdf(struct json_object *jobj_kdf, const keyslot_kdf_description &keyslot_kdf_desc); - void generate_keyslot_af(struct json_object *jobj_af, const keyslot_af_description &keyslot_af_desc); - - void generate_token(struct json_object *jobj_tokens, const token_description &token_desc); - - void generate_digest(struct json_object *jobj_digests, const digest_description &digest_desc); - - void generate_segment_integrity(struct json_object *jobj_integrity, const segment_integrity_description &segment_integrity_desc); - void generate_segment(struct json_object *jobj_segments, const segment_description &segment_desc); - - void generate_config(const config_description &config_desc, uint64_t json_size, uint64_t keyslots_size); - - void create_jobj(const LUKS2_both_headers &headers, uint64_t hdr_size); - void emit_luks2_binary_header(uint64_t offset, uint64_t seqid, bool is_primary, uint64_t hdr_size); - void convert(const LUKS2_both_headers &headers, int fd); - void create_jobj(const LUKS2_both_headers &headers); - void emit_luks2_binary_header(const LUKS2_header &header_proto, int fd, uint64_t offset, uint64_t seqid); - - void set_write_headers_only(bool headers_only); - - const uint8_t *get_out_buffer(); - size_t get_out_size(); - - static const uint64_t KEYSLOTS_SIZE = 3 * 1024 * 1024; - static const uint64_t DATA_SIZE = 16 * 1024 * 1024; - private: - bool write_headers_only = false; - struct crypt_hash *hd = NULL; - struct ::json_object *jobj = NULL; -}; - -} // namespace LUKS2_proto - -#endif // LUKS2_PROTO_CONVERTER_H_ diff --git a/tests/fuzz/unpoison-mutated-buffers-from-libfuzzer.patch b/tests/fuzz/unpoison-mutated-buffers-from-libfuzzer.patch deleted file mode 100644 index 1f483397b..000000000 --- a/tests/fuzz/unpoison-mutated-buffers-from-libfuzzer.patch +++ /dev/null @@ -1,29 +0,0 @@ -diff --git a/src/libfuzzer/libfuzzer_mutator.cc b/src/libfuzzer/libfuzzer_mutator.cc -index 34d144c..b671fd4 100644 ---- a/src/libfuzzer/libfuzzer_mutator.cc -+++ b/src/libfuzzer/libfuzzer_mutator.cc -@@ -14,6 +14,8 @@ - - #include "src/libfuzzer/libfuzzer_mutator.h" - -+#include -+ - #include - - #include -@@ -64,6 +66,7 @@ template - T MutateValue(T v) { - size_t size = - LLVMFuzzerMutate(reinterpret_cast(&v), sizeof(v), sizeof(v)); -+ __msan_unpoison(reinterpret_cast(&v), size); - memset(reinterpret_cast(&v) + size, 0, sizeof(v) - size); - return v; - } -@@ -93,6 +96,7 @@ std::string Mutator::MutateString(const std::string& value, - result.resize(std::max(1, new_size)); - result.resize(LLVMFuzzerMutate(reinterpret_cast(&result[0]), - value.size(), result.size())); -+ __msan_unpoison(reinterpret_cast(&result[0]), result.size()); - return result; - } - From 5da712ab32ed759c44e3e4014b1906c1a2b194ca Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Fri, 20 Mar 2026 14:51:55 +0100 Subject: [PATCH 084/244] fuzz: Fix compilation warnings with recent compilers --- tests/fuzz/crypt2_load_fuzz.cc | 2 +- tests/fuzz/crypt2_load_ondisk_fuzz.cc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/fuzz/crypt2_load_fuzz.cc b/tests/fuzz/crypt2_load_fuzz.cc index db365b683..84343b4ff 100644 --- a/tests/fuzz/crypt2_load_fuzz.cc +++ b/tests/fuzz/crypt2_load_fuzz.cc @@ -43,7 +43,7 @@ static bool calculate_checksum(const char *data, size_t size, struct luks2_hdr_d if (sizeof(*hdr_rw) > size) return false; - hdr_size = be64_to_cpu(((struct luks2_hdr_disk *)data)->hdr_size); + hdr_size = be64_to_cpu(((struct luks2_hdr_disk *)(uintptr_t)data)->hdr_size); if (hdr_size > size || hdr_size <= sizeof(*hdr_rw)) return false; diff --git a/tests/fuzz/crypt2_load_ondisk_fuzz.cc b/tests/fuzz/crypt2_load_ondisk_fuzz.cc index a883d3e04..45c25bdc6 100644 --- a/tests/fuzz/crypt2_load_ondisk_fuzz.cc +++ b/tests/fuzz/crypt2_load_ondisk_fuzz.cc @@ -11,7 +11,7 @@ extern "C" { #include "crypto_backend/crypto_backend.h" #include "FuzzerInterface.h" -void empty_log(int level, const char *msg, void *usrptr) {} +static void empty_log(int level, const char *msg, void *usrptr) {} int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { int fd, r; From bac75a6fe7c9e12f1b61ed2311ae38a90ec36e38 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Fri, 20 Mar 2026 14:52:56 +0100 Subject: [PATCH 085/244] fuzz: Fix Makefile to build fuzzers only with fuzz-targets Fuzz dependeces are complicated, the only target that builds fuzzers shoudl be fuzz-targets, not "make all". Scripts should be written with this expectationa already, so fix only Autoconf Makefiles. --- Makefile.am | 3 ++- tests/fuzz/Makefile.am | 12 ++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/Makefile.am b/Makefile.am index 688cb772c..f457499e5 100644 --- a/Makefile.am +++ b/Makefile.am @@ -86,5 +86,6 @@ check-programs: libcryptsetup.la if ENABLE_FUZZ_TARGETS fuzz-targets: libcryptsetup.la libcrypto_backend.la - $(MAKE) -C tests/fuzz $@ + $(MAKE) -C tests/fuzz fuzz-targets $@ +.PHONY: fuzz-targets endif diff --git a/tests/fuzz/Makefile.am b/tests/fuzz/Makefile.am index 114d03943..88ce1ddd1 100644 --- a/tests/fuzz/Makefile.am +++ b/tests/fuzz/Makefile.am @@ -3,6 +3,10 @@ EXTRA_DIST = README.md oss-fuzz-build.sh distclean-local: -rm -rf out build +if ENABLE_FUZZ_TARGETS +EXTRA_PROGRAMS = crypt2_load_fuzz crypt2_load_ondisk_fuzz +CLEANFILES = $(EXTRA_PROGRAMS) + LIB_FUZZING_ENGINE := $(if $(LIB_FUZZING_ENGINE),$(LIB_FUZZING_ENGINE),"-fsanitize=fuzzer") SANITIZER := $(if $(SANITIZER),,"-fsanitize=address") @@ -25,11 +29,7 @@ test-environment-m: fi test-environment: | test-environment-m $(DEPS_PATH) -if ENABLE_FUZZ_TARGETS -noinst_PROGRAMS = \ - crypt2_load_fuzz \ - crypt2_load_ondisk_fuzz +fuzz-targets: test-environment $(EXTRA_PROGRAMS) -fuzz-targets: test-environment $(noinst_PROGRAMS) -.PHONY: fuzz-targets +.PHONY: test-environment test-environment-m fuzz-targets endif From ae7ca35c2d8fc03d236135f4ac3f0604514f2040 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Fri, 8 May 2026 21:55:40 +0200 Subject: [PATCH 086/244] tcrypt: Use safe alloc for password pool and derived key As key derivation run for a long time, these buffers should be locked in memory. Also remove aligned malloc, decryption should work with non-aligned memory. Fixes: #991 --- lib/tcrypt/tcrypt.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/lib/tcrypt/tcrypt.c b/lib/tcrypt/tcrypt.c index fdfa37e86..c29ca2ede 100644 --- a/lib/tcrypt/tcrypt.c +++ b/lib/tcrypt/tcrypt.c @@ -519,14 +519,18 @@ static int TCRYPT_init_hdr(struct crypt_device *cd, struct tcrypt_phdr *hdr, struct crypt_params_tcrypt *params) { - unsigned char pwd[VCRYPT_KEY_POOL_LEN] = {}; + unsigned char *pwd = NULL; size_t passphrase_size, max_passphrase_size; - char *key; + char *key = NULL; unsigned int i, skipped = 0, iterations; int r = -EPERM, keyfiles_pool_length; - if (posix_memalign((void*)&key, crypt_getpagesize(), TCRYPT_HDR_KEY_LEN)) - return -ENOMEM; + pwd = crypt_safe_alloc(VCRYPT_KEY_POOL_LEN); + key = crypt_safe_alloc(TCRYPT_HDR_KEY_LEN); + if (!pwd || !key) { + r = -ENOMEM; + goto out; + } if (params->flags & CRYPT_TCRYPT_VERA_MODES && params->passphrase_size > TCRYPT_KEY_POOL_LEN) { @@ -626,10 +630,8 @@ static int TCRYPT_init_hdr(struct crypt_device *cd, params->cipher, params->mode, params->key_size); } out: - crypt_safe_memzero(pwd, VCRYPT_KEY_POOL_LEN); - if (key) - crypt_safe_memzero(key, TCRYPT_HDR_KEY_LEN); - free(key); + crypt_safe_free(pwd); + crypt_safe_free(key); return r; } From 1d673f733fe363c1fcc9875c4c5d9494591190e3 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Tue, 5 May 2026 11:15:34 +0200 Subject: [PATCH 087/244] Do not memlock test_key in LUKS2_check_cipher. It's the test key only used to verify if the cipher can be properly initialized with provided key size parameter. Also do not force erase of test buffer, it contains encrypted zeroes. --- lib/luks2/luks2_luks1_convert.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/luks2/luks2_luks1_convert.c b/lib/luks2/luks2_luks1_convert.c index 9a32f114d..73ff8c3ac 100644 --- a/lib/luks2/luks2_luks1_convert.c +++ b/lib/luks2/luks2_luks1_convert.c @@ -23,7 +23,7 @@ int LUKS2_check_cipher(struct crypt_device *cd, log_dbg(cd, "Checking if cipher %s-%s is usable (storage wrapper).", cipher, cipher_mode); - empty_key = crypt_safe_alloc(keylength); + empty_key = malloc(keylength); if (!empty_key) return -ENOMEM; @@ -40,8 +40,7 @@ int LUKS2_check_cipher(struct crypt_device *cd, r = crypt_storage_decrypt(s, 0, sizeof(buf), buf); crypt_storage_destroy(s); out: - crypt_safe_free(empty_key); - crypt_safe_memzero(buf, sizeof(buf)); + free(empty_key); return r; } From d3491ae1a8d8ed375cae8fbad6f967f503097062 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Wed, 13 May 2026 12:52:15 +0200 Subject: [PATCH 088/244] Allow cached volume key in activation with CRYPT_KC_TYPE_KEY only. Allow use of cached volume key (key cached immediately after crypt_format()) for device activation only with raw key keyslot context type. --- lib/setup.c | 2 +- tests/api-test-2.c | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/setup.c b/lib/setup.c index f7d21c2d4..49ee72ee8 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -5548,7 +5548,7 @@ int crypt_activate_by_keyslot_context(struct crypt_device *cd, if (kc->get_integrity_volume_key) r = kc->get_integrity_volume_key(cd, kc, &vk); } - if (r < 0 && (r != -ENOENT || kc->type == CRYPT_KC_TYPE_TOKEN)) + if (r < 0 && (r != -ENOENT || kc->type != CRYPT_KC_TYPE_KEY)) goto out; unlocked_keyslot = r; diff --git a/tests/api-test-2.c b/tests/api-test-2.c index 3cf28e187..ed5375903 100644 --- a/tests/api-test-2.c +++ b/tests/api-test-2.c @@ -3303,6 +3303,8 @@ static void Luks2KeyslotAdd(void) EQ_(crypt_keyslot_add_by_key(cd, 0, key, key_size, PASSPHRASE, strlen(PASSPHRASE), 0), 0); /* keyslot 1, unbound key, digest 1 */ EQ_(crypt_keyslot_add_by_key(cd, 1, key2, key_size, PASSPHRASE1, strlen(PASSPHRASE1), CRYPT_VOLUME_KEY_NO_SEGMENT), 1); + // the cached volume key must not suppress the wrong (unbound) keyslot being used + FAIL_(crypt_activate_by_passphrase(cd, CDEVICE_1, 1, PASSPHRASE1, strlen(PASSPHRASE1), 0), "Keyslot unusable for activation."); /* keyslot 2, unbound key, digest 1 */ EQ_(crypt_keyslot_add_by_key(cd, 2, key2, key_size, PASSPHRASE1, strlen(PASSPHRASE1), CRYPT_VOLUME_KEY_NO_SEGMENT | CRYPT_VOLUME_KEY_DIGEST_REUSE), 2); /* keyslot 3, unbound key, digest 2 */ From d826e084c1b2df5fe515fd3a1f52e34a651c7cd3 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 9 May 2026 09:42:55 +0200 Subject: [PATCH 089/244] Add some asserts() for device locking Adding assert() silences cppcheck warnings but also prevents code misuse in the future. --- lib/utils_device_locking.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lib/utils_device_locking.c b/lib/utils_device_locking.c index 885922393..f6995859e 100644 --- a/lib/utils_device_locking.c +++ b/lib/utils_device_locking.c @@ -135,6 +135,9 @@ static int acquire_lock_handle(struct crypt_device *cd, struct device *device, s int dev_fd, fd; struct stat st; + assert(device); + assert(h); + dev_fd = open(device_path(device), O_RDONLY | O_NONBLOCK | O_CLOEXEC); if (dev_fd < 0) return -EINVAL; @@ -182,6 +185,9 @@ static int acquire_lock_handle_by_name(struct crypt_device *cd, const char *name char res[PATH_MAX]; int fd; + assert(name); + assert(h); + h->u.name.name = strdup(name); if (!h->u.name.name) return -ENOMEM; @@ -208,6 +214,8 @@ static void release_lock_handle(struct crypt_device *cd, struct crypt_lock_handl char res[PATH_MAX]; struct stat buf_a, buf_b; + assert(h); + if ((h->mode == DEV_LOCK_NAME) && /* was it name lock */ !flock(h->flock_fd, LOCK_EX | LOCK_NB) && /* lock to drop the file */ !resource_by_name(res, sizeof(res), h->u.name.name, true) && /* acquire lock resource name */ @@ -252,6 +260,8 @@ static int verify_lock_handle(struct crypt_lock_handle *h) char res[PATH_MAX]; struct stat lck_st, res_st; + assert(h); + /* we locked a regular file, check during device_open() instead. No reason to check now */ if (h->mode == DEV_LOCK_FILE) return 0; From 8e15aafdbffa162f523647a69805d3b4fd437cca Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 9 May 2026 10:01:57 +0200 Subject: [PATCH 090/244] Fix reencryption name helper check The test for hotzone device layer was wrong, use explicit names during the check. --- lib/luks2/luks2_json_metadata.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/luks2/luks2_json_metadata.c b/lib/luks2/luks2_json_metadata.c index 9e35a8d46..f078bea88 100644 --- a/lib/luks2/luks2_json_metadata.c +++ b/lib/luks2/luks2_json_metadata.c @@ -2827,9 +2827,16 @@ static bool is_reencryption_helper(const char *name) return false; len = strlen(name); - return (len >= 9 && (!strncmp(name + len - 8, "-hotzone-", 9) || - !strcmp(name + len - 8, "-overlay"))); + if (len > 8 && !strcmp(name + len - 8, "-overlay")) + return true; + + if (len > 16 && !strcmp(name + len - 16, "-hotzone-forward")) + return true; + if (len > 17 && !strcmp(name + len - 17, "-hotzone-backward")) + return true; + + return false; } static bool contains_reencryption_helper(char **names) From 2c1ca668f1ea4d237245151f0478cdc832112609 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 9 May 2026 11:40:29 +0200 Subject: [PATCH 091/244] Check for strdup() failure in crypt_init_by_name_and_header --- lib/setup.c | 37 +++++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/lib/setup.c b/lib/setup.c index 49ee72ee8..7a3e43a77 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -1506,6 +1506,7 @@ int crypt_init_by_name_and_header(struct crypt_device **cd, crypt_status_info ci; struct crypt_dm_active_device dmd; struct dm_target *tgt = &dmd.segment; + const char *type = NULL; int r; if (!cd || !name) @@ -1548,28 +1549,36 @@ int crypt_init_by_name_and_header(struct crypt_device **cd, if (dmd.uuid) { if (!strncmp(CRYPT_PLAIN, dmd.uuid, sizeof(CRYPT_PLAIN)-1)) - (*cd)->type = strdup(CRYPT_PLAIN); + type = CRYPT_PLAIN; else if (!strncmp(CRYPT_LOOPAES, dmd.uuid, sizeof(CRYPT_LOOPAES)-1)) - (*cd)->type = strdup(CRYPT_LOOPAES); + type = CRYPT_LOOPAES; else if (!strncmp(CRYPT_LUKS1, dmd.uuid, sizeof(CRYPT_LUKS1)-1)) - (*cd)->type = strdup(CRYPT_LUKS1); + type = CRYPT_LUKS1; else if (!strncmp(CRYPT_LUKS2, dmd.uuid, sizeof(CRYPT_LUKS2)-1)) - (*cd)->type = strdup(CRYPT_LUKS2); + type = CRYPT_LUKS2; else if (!strncmp(CRYPT_VERITY, dmd.uuid, sizeof(CRYPT_VERITY)-1)) - (*cd)->type = strdup(CRYPT_VERITY); + type = CRYPT_VERITY; else if (!strncmp(CRYPT_TCRYPT, dmd.uuid, sizeof(CRYPT_TCRYPT)-1)) - (*cd)->type = strdup(CRYPT_TCRYPT); + type = CRYPT_TCRYPT; else if (!strncmp(CRYPT_INTEGRITY, dmd.uuid, sizeof(CRYPT_INTEGRITY)-1)) - (*cd)->type = strdup(CRYPT_INTEGRITY); + type = CRYPT_INTEGRITY; else if (!strncmp(CRYPT_BITLK, dmd.uuid, sizeof(CRYPT_BITLK)-1)) - (*cd)->type = strdup(CRYPT_BITLK); + type = CRYPT_BITLK; else if (!strncmp(CRYPT_FVAULT2, dmd.uuid, sizeof(CRYPT_FVAULT2)-1)) - (*cd)->type = strdup(CRYPT_FVAULT2); + type = CRYPT_FVAULT2; else log_dbg(NULL, "Unknown UUID set, some parameters are not set."); } else log_dbg(NULL, "Active device has no UUID set, some parameters are not set."); + if (type) { + (*cd)->type = strdup(type); + if (!(*cd)->type) { + r = -ENOMEM; + goto out; + } + } + if (header_device) { r = crypt_set_data_device(*cd, device_path(tgt->data_device)); if (r < 0) @@ -1585,12 +1594,16 @@ int crypt_init_by_name_and_header(struct crypt_device **cd, else if (tgt->type == DM_INTEGRITY) r = _init_by_name_integrity(*cd, name); out: + if (r == 0 && !(*cd)->type) { + /* For anonymous device (no header found) remember initialized name */ + (*cd)->u.none.active_name = strdup(name); + if (!(*cd)->u.none.active_name) + r = -ENOMEM; + } + if (r < 0) { crypt_free(*cd); *cd = NULL; - } else if (!(*cd)->type) { - /* For anonymous device (no header found) remember initialized name */ - (*cd)->u.none.active_name = strdup(name); } free(CONST_CAST(void*)dmd.uuid); From 85e27559636e77667b6b8258cc7c7351230a3e6f Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 9 May 2026 14:20:51 +0200 Subject: [PATCH 092/244] Check strdup() failure in libcryptsetup --- lib/bitlk/bitlk.c | 8 ++++++-- lib/libdevmapper.c | 7 ++++++- lib/luks2/luks2_token.c | 6 ++++++ lib/setup.c | 31 +++++++++++++++++++++++++++---- 4 files changed, 45 insertions(+), 7 deletions(-) diff --git a/lib/bitlk/bitlk.c b/lib/bitlk/bitlk.c index 34ae0b554..eaba010a3 100644 --- a/lib/bitlk/bitlk.c +++ b/lib/bitlk/bitlk.c @@ -774,10 +774,14 @@ int BITLK_read_sb(struct crypt_device *cd, struct bitlk_metadata *params) memset(vmk, 0, sizeof(struct bitlk_vmk)); guid_to_string(&entry_vmk.guid, guid_buf); - vmk->guid = strdup (guid_buf); + vmk->guid = strdup(guid_buf); + if (!vmk->guid) { + BITLK_bitlk_vmk_free(vmk); + r = -ENOMEM; + goto out; + } vmk->name = NULL; - vmk->protection = get_vmk_protection(le16_to_cpu(entry_vmk.protection)); /* more data in another entry list */ diff --git a/lib/libdevmapper.c b/lib/libdevmapper.c index c2ac9f36a..0533b0296 100644 --- a/lib/libdevmapper.c +++ b/lib/libdevmapper.c @@ -2919,8 +2919,13 @@ static int _dm_query_device(struct crypt_device *cd, const char *name, if (!tmp_uuid) dmd->flags |= CRYPT_ACTIVATE_NO_UUID; else if (get_flags & DM_ACTIVE_UUID) { - if (!strncmp(tmp_uuid, DM_UUID_PREFIX, DM_UUID_PREFIX_LEN)) + if (!strncmp(tmp_uuid, DM_UUID_PREFIX, DM_UUID_PREFIX_LEN)) { dmd->uuid = strdup(tmp_uuid + DM_UUID_PREFIX_LEN); + if (!dmd->uuid) { + r = -ENOMEM; + goto out; + } + } } dmd->holders = 0; diff --git a/lib/luks2/luks2_token.c b/lib/luks2/luks2_token.c index 89e768230..e4952ac4c 100644 --- a/lib/luks2/luks2_token.c +++ b/lib/luks2/luks2_token.c @@ -184,6 +184,12 @@ crypt_token_load_external(struct crypt_device *cd, const char *name, struct cryp dlerror(); token->name = strdup(name); + if (!token->name) { + dlclose(h); + memset(token, 0, sizeof(*token)); + return -ENOMEM; + } + token->open = token_dlvsym(cd, h, CRYPT_TOKEN_ABI_OPEN, CRYPT_TOKEN_ABI_VERSION1); token->buffer_free = token_dlvsym(cd, h, CRYPT_TOKEN_ABI_BUFFER_FREE, CRYPT_TOKEN_ABI_VERSION1); token->validate = token_dlvsym(cd, h, CRYPT_TOKEN_ABI_VALIDATE, CRYPT_TOKEN_ABI_VERSION1); diff --git a/lib/setup.c b/lib/setup.c index 7a3e43a77..66eb707c4 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -1338,6 +1338,10 @@ static int _init_by_name_crypt(struct crypt_device *cd, const char *name) cd->u.plain.hdr.sector_size = tgt->u.crypt.sector_size; cd->u.plain.key_size = crypt_volume_key_length(tgt->u.crypt.vk); cd->u.plain.cipher = strdup(cipher); + if (!cd->u.plain.cipher) { + r = -ENOMEM; + goto out; + } MOVE_REF(cd->u.plain.cipher_spec, cipher_spec); cd->u.plain.cipher_mode = cd->u.plain.cipher_spec + strlen(cipher) + 1; if (dmd.flags & CRYPT_ACTIVATE_KEYRING_KEY) @@ -1345,6 +1349,10 @@ static int _init_by_name_crypt(struct crypt_device *cd, const char *name) } else if (isLOOPAES(cd->type) && single_segment(&dmd) && tgt->type == DM_CRYPT) { cd->u.loopaes.hdr.offset = tgt->u.crypt.offset; cd->u.loopaes.cipher = strdup(cipher); + if (!cd->u.loopaes.cipher) { + r = -ENOMEM; + goto out; + } MOVE_REF(cd->u.loopaes.cipher_spec, cipher_spec); cd->u.loopaes.cipher_mode = cd->u.loopaes.cipher_spec + strlen(cipher) + 1; /* version 3 uses last key for IV */ @@ -1682,18 +1690,25 @@ static int _crypt_format_plain(struct crypt_device *cd, return -ENOMEM; } cd->u.plain.cipher = strdup(cipher); + if (!cd->u.plain.cipher) + return -ENOMEM; + cd->u.plain.cipher_mode = cd->u.plain.cipher_spec + strlen(cipher) + 1; - if (params && params->hash) + if (params && params->hash) { cd->u.plain.hdr.hash = strdup(params->hash); + if (!cd->u.plain.hdr.hash) { + free(cd->u.plain.cipher); + cd->u.plain.cipher = NULL; + return -ENOMEM; + } + } cd->u.plain.hdr.offset = params ? params->offset : 0; cd->u.plain.hdr.skip = params ? params->skip : 0; cd->u.plain.hdr.size = params ? params->size : 0; cd->u.plain.hdr.sector_size = sector_size; - if (!cd->u.plain.cipher) - return -ENOMEM; return 0; } @@ -2709,9 +2724,17 @@ static int _crypt_format_loopaes(struct crypt_device *cd, cd->u.loopaes.key_size = volume_key_size; cd->u.loopaes.cipher = strdup(cipher ?: DEFAULT_LOOPAES_CIPHER); + if (!cd->u.loopaes.cipher) + return -ENOMEM; - if (params && params->hash) + if (params && params->hash) { cd->u.loopaes.hdr.hash = strdup(params->hash); + if (!cd->u.loopaes.hdr.hash) { + free(cd->u.loopaes.cipher); + cd->u.loopaes.cipher = NULL; + return -ENOMEM; + } + } cd->u.loopaes.hdr.offset = params ? params->offset : 0; cd->u.loopaes.hdr.skip = params ? params->skip : 0; From f47a4774bb98c272c0f9f3093e8d74cd11494876 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 9 May 2026 14:21:31 +0200 Subject: [PATCH 093/244] Check strdup() failure in tool reencrypt helper --- src/utils_reencrypt_luks1.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/utils_reencrypt_luks1.c b/src/utils_reencrypt_luks1.c index 157f2b885..6d960a488 100644 --- a/src/utils_reencrypt_luks1.c +++ b/src/utils_reencrypt_luks1.c @@ -932,16 +932,17 @@ static int initialize_uuid(struct reenc_ctx *rc) if (ARG_SET(OPT_ENCRYPT_ID)) { rc->device_uuid = strdup(NO_UUID); - return 0; + return rc->device_uuid ? 0 : -ENOMEM; } if (ARG_SET(OPT_DECRYPT_ID) && ARG_SET(OPT_UUID_ID)) { r = uuid_parse(ARG_STR(OPT_UUID_ID), device_uuid); - if (!r) + if (!r) { rc->device_uuid = strdup(ARG_STR(OPT_UUID_ID)); - else - log_err(_("Provided UUID is invalid.")); + return rc->device_uuid ? 0 : -ENOMEM; + } + log_err(_("Provided UUID is invalid.")); return r; } @@ -950,9 +951,11 @@ static int initialize_uuid(struct reenc_ctx *rc) return r; crypt_set_log_callback(cd, _quiet_log, NULL); r = crypt_load(cd, CRYPT_LUKS1, NULL); - if (!r) + if (!r) { rc->device_uuid = strdup(crypt_get_uuid(cd)); - else + if (!rc->device_uuid) + r =-ENOMEM; + } else /* Reencryption already in progress - magic header? */ r = device_check(rc, hdr_device(rc), CHECK_UNUSABLE, true); From 1f2b247f8e1459c8d776098fbf66e15a0ee48563 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 9 May 2026 14:43:49 +0200 Subject: [PATCH 094/244] Explicitly check for length overflow in OpenSSL backend Cryptsetup should never issue large encryption, but the backend should check potential overflow in size_t -> int conversion. --- lib/crypto_backend/crypto_openssl.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/crypto_backend/crypto_openssl.c b/lib/crypto_backend/crypto_openssl.c index 229698997..acf342806 100644 --- a/lib/crypto_backend/crypto_openssl.c +++ b/lib/crypto_backend/crypto_openssl.c @@ -794,17 +794,20 @@ void crypt_cipher_destroy(struct crypt_cipher *ctx) } static int _cipher_encrypt(struct crypt_cipher *ctx, const unsigned char *in, unsigned char *out, - int length, const unsigned char *iv, size_t iv_length) + size_t length, const unsigned char *iv, size_t iv_length) { int len; + if (length > INT_MAX) + return -EINVAL; + if (ctx->u.lib.iv_length != iv_length) return -EINVAL; if (EVP_EncryptInit_ex(ctx->u.lib.hd_enc, NULL, NULL, NULL, iv) != 1) return -EINVAL; - if (EVP_EncryptUpdate(ctx->u.lib.hd_enc, out, &len, in, length) != 1) + if (EVP_EncryptUpdate(ctx->u.lib.hd_enc, out, &len, in, (int)length) != 1) return -EINVAL; if (EVP_EncryptFinal(ctx->u.lib.hd_enc, out + len, &len) != 1) @@ -814,17 +817,20 @@ static int _cipher_encrypt(struct crypt_cipher *ctx, const unsigned char *in, un } static int _cipher_decrypt(struct crypt_cipher *ctx, const unsigned char *in, unsigned char *out, - int length, const unsigned char *iv, size_t iv_length) + size_t length, const unsigned char *iv, size_t iv_length) { int len; + if (length > INT_MAX) + return -EINVAL; + if (ctx->u.lib.iv_length != iv_length) return -EINVAL; if (EVP_DecryptInit_ex(ctx->u.lib.hd_dec, NULL, NULL, NULL, iv) != 1) return -EINVAL; - if (EVP_DecryptUpdate(ctx->u.lib.hd_dec, out, &len, in, length) != 1) + if (EVP_DecryptUpdate(ctx->u.lib.hd_dec, out, &len, in, (int)length) != 1) return -EINVAL; if (EVP_DecryptFinal(ctx->u.lib.hd_dec, out + len, &len) != 1) From af5b88175c93022976e5062beaca347e4305efb9 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 9 May 2026 14:53:06 +0200 Subject: [PATCH 095/244] Use common error path in dm-verity query. While data_device should not be allocated in this path, the code is more readable this way. --- lib/libdevmapper.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/libdevmapper.c b/lib/libdevmapper.c index 0533b0296..6febe9755 100644 --- a/lib/libdevmapper.c +++ b/lib/libdevmapper.c @@ -2277,6 +2277,8 @@ static int _dm_target_query_verity(struct crypt_device *cd, return -EINVAL; if (get_flags & DM_ACTIVE_DEVICE) { str2 = crypt_lookup_dev(str); + if (!str2) + return -EINVAL; r = device_alloc(cd, &data_device, str2); free(str2); if (r < 0 && r != -ENOTBLK) From 4dd8b3c9a0ded5ebf391163671cc44a5ace79d66 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 9 May 2026 16:48:22 +0200 Subject: [PATCH 096/244] Avoid possible leak of json keyslot object on error path --- lib/luks2/luks2_keyslot.c | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/luks2/luks2_keyslot.c b/lib/luks2/luks2_keyslot.c index 907257096..318555794 100644 --- a/lib/luks2/luks2_keyslot.c +++ b/lib/luks2/luks2_keyslot.c @@ -968,6 +968,7 @@ int LUKS2_keyslot_swap(struct crypt_device *cd, struct luks2_hdr *hdr, json_object_object_del_by_uint(jobj_keyslots, keyslot); r = json_object_object_add_by_uint(jobj_keyslots, keyslot, jobj_keyslot2); if (r < 0) { + json_object_put(jobj_keyslot); json_object_put(jobj_keyslot2); log_dbg(cd, "Failed to swap keyslot %d.", keyslot); return r; From fe63d5ee8d316447438b3fb811134e18078c335f Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 9 May 2026 17:01:55 +0200 Subject: [PATCH 097/244] Check return values for old OpenSSL < 3 HMAC API. --- lib/crypto_backend/crypto_openssl.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/lib/crypto_backend/crypto_openssl.c b/lib/crypto_backend/crypto_openssl.c index acf342806..50a6a159e 100644 --- a/lib/crypto_backend/crypto_openssl.c +++ b/lib/crypto_backend/crypto_openssl.c @@ -478,7 +478,12 @@ int crypt_hmac_init(struct crypt_hmac **ctx, const char *name, return -EINVAL; } - HMAC_Init_ex(h->md, key, key_length, h->hash_id, NULL); + if (HMAC_Init_ex(h->md, key, key_length, h->hash_id, NULL) != 1) { + hash_id_free(h->hash_id); + HMAC_CTX_free(h->md); + free(h); + return -EINVAL; + } h->hash_len = EVP_MD_size(h->hash_id); #endif @@ -494,7 +499,8 @@ static int crypt_hmac_restart(struct crypt_hmac *ctx) if (!ctx->md) return -EINVAL; #else - HMAC_Init_ex(ctx->md, NULL, 0, ctx->hash_id, NULL); + if (HMAC_Init_ex(ctx->md, NULL, 0, ctx->hash_id, NULL) != 1) + return -EINVAL; #endif return 0; } @@ -504,8 +510,7 @@ int crypt_hmac_write(struct crypt_hmac *ctx, const char *buffer, size_t length) #if OPENSSL3_API return EVP_MAC_update(ctx->md, (const unsigned char *)buffer, length) == 1 ? 0 : -EINVAL; #else - HMAC_Update(ctx->md, (const unsigned char *)buffer, length); - return 0; + return HMAC_Update(ctx->md, (const unsigned char *)buffer, length) == 1 ? 0 : -EINVAL; #endif } @@ -526,7 +531,8 @@ int crypt_hmac_final(struct crypt_hmac *ctx, char *buffer, size_t length) if (length > (size_t)ctx->hash_len) return -EINVAL; - HMAC_Final(ctx->md, tmp, &tmp_len); + if (HMAC_Final(ctx->md, tmp, &tmp_len) != 1) + return -EINVAL; #endif crypt_backend_memcpy(buffer, tmp, length); crypt_backend_memzero(tmp, sizeof(tmp)); From d4d542f04a99995aefcdce9c922c8b75ebfee0fd Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 9 May 2026 17:06:37 +0200 Subject: [PATCH 098/244] Add check before cast from size_t to int in OpenSSL < 3 PBKDF2. --- lib/crypto_backend/crypto_openssl.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/crypto_backend/crypto_openssl.c b/lib/crypto_backend/crypto_openssl.c index 50a6a159e..78220e690 100644 --- a/lib/crypto_backend/crypto_openssl.c +++ b/lib/crypto_backend/crypto_openssl.c @@ -614,6 +614,9 @@ static int openssl_pbkdf2(const char *password, size_t password_length, if (iterations > INT_MAX) return -EINVAL; + if (password_length > INT_MAX || salt_length > INT_MAX || key_length > INT_MAX) + return -EINVAL; + r = PKCS5_PBKDF2_HMAC(password, (int)password_length, (const unsigned char *)salt, (int)salt_length, iterations, hash_id, (int)key_length, (unsigned char*) key); #endif From 55e962acb1eada8b740a7e7e6f6568b4db68e661 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 9 May 2026 17:49:57 +0200 Subject: [PATCH 099/244] Remove VLA from AF_ALG cipher. Also remove note about page alignment that is not correct for this use of AF_ALG. --- lib/crypto_backend/crypto_cipher_kernel.c | 31 +++++++++++++++-------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/lib/crypto_backend/crypto_cipher_kernel.c b/lib/crypto_backend/crypto_cipher_kernel.c index fd4635a74..e572edd16 100644 --- a/lib/crypto_backend/crypto_cipher_kernel.c +++ b/lib/crypto_backend/crypto_cipher_kernel.c @@ -113,7 +113,6 @@ static inline struct cmsghdr *_CMSG_NXTHDR(struct msghdr* mhdr, struct cmsghdr* #endif } -/* The in/out should be aligned to page boundary */ /* coverity[ -taint_source : arg-3 ] */ static int _crypt_cipher_crypt(struct crypt_cipher_kernel *ctx, const char *in, size_t in_length, @@ -131,10 +130,9 @@ static int _crypt_cipher_crypt(struct crypt_cipher_kernel *ctx, .iov_len = in_length, }; int iv_msg_size = iv ? CMSG_SPACE(sizeof(*alg_iv) + iv_length) : 0; - char buffer[CMSG_SPACE(sizeof(*type)) + iv_msg_size]; + int buffer_size = CMSG_SPACE(sizeof(*type)) + iv_msg_size; + char *buffer = NULL; struct msghdr msg = { - .msg_control = buffer, - .msg_controllen = sizeof(buffer), .msg_iov = &iov, .msg_iovlen = 1, }; @@ -145,12 +143,20 @@ static int _crypt_cipher_crypt(struct crypt_cipher_kernel *ctx, if ((!iv && iv_length) || (iv && !iv_length)) return -EINVAL; - memset(buffer, 0, sizeof(buffer)); + buffer = malloc(buffer_size); + if (!buffer) + return -ENOMEM; + crypt_backend_memzero(buffer, buffer_size); + + msg.msg_control = buffer; + msg.msg_controllen = buffer_size; /* Set encrypt/decrypt operation */ header = CMSG_FIRSTHDR(&msg); - if (!header) - return -EINVAL; + if (!header) { + r = -EINVAL; + goto out; + } header->cmsg_level = SOL_ALG; header->cmsg_type = ALG_SET_OP; @@ -161,8 +167,10 @@ static int _crypt_cipher_crypt(struct crypt_cipher_kernel *ctx, /* Set IV */ if (iv) { header = _CMSG_NXTHDR(&msg, header); - if (!header) - return -EINVAL; + if (!header) { + r = -EINVAL; + goto out; + } header->cmsg_level = SOL_ALG; header->cmsg_type = ALG_SET_IV; @@ -180,8 +188,9 @@ static int _crypt_cipher_crypt(struct crypt_cipher_kernel *ctx, if (len != (ssize_t)out_length) r = -EIO; } - - crypt_backend_memzero(buffer, sizeof(buffer)); +out: + crypt_backend_memzero(buffer, buffer_size); + free(buffer); return r; } From 65239e38b829affdcc1c3634aa562fb664759c5c Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 9 May 2026 18:05:37 +0200 Subject: [PATCH 100/244] Add check for plain mode sector size and offset calculation. Check for multiplication overflow and device offset underflow. --- lib/setup.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/setup.c b/lib/setup.c index 66eb707c4..303a58c43 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -1668,8 +1668,13 @@ static int _crypt_format_plain(struct crypt_device *cd, } if (sector_size > SECTOR_SIZE && !device_size(cd->device, &dev_size)) { - if (params && params->offset) + if (params && params->offset) { + if (params->offset > (UINT64_MAX / SECTOR_SIZE)) + return -EINVAL; + if (dev_size < (params->offset * SECTOR_SIZE)) + return -EINVAL; dev_size -= (params->offset * SECTOR_SIZE); + } if (dev_size % sector_size) { log_err(cd, _("Device size is not aligned to requested sector size.")); return -EINVAL; From f27ceb86ac0630b6dd65b8a0a909cc6817a32ca8 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 9 May 2026 18:11:05 +0200 Subject: [PATCH 101/244] Do not copy partial buffer if buffer size is too small in OpenSSL backend Move the length check before the final buffer copy and do not send partial buffer to the caller. --- lib/crypto_backend/crypto_openssl.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/lib/crypto_backend/crypto_openssl.c b/lib/crypto_backend/crypto_openssl.c index 78220e690..92dc4e501 100644 --- a/lib/crypto_backend/crypto_openssl.c +++ b/lib/crypto_backend/crypto_openssl.c @@ -393,12 +393,14 @@ int crypt_hash_final(struct crypt_hash *ctx, char *buffer, size_t length) if (EVP_DigestFinal_ex(ctx->md, tmp, &tmp_len) != 1) return -EINVAL; + if (tmp_len < length) { + crypt_backend_memzero(tmp, sizeof(tmp)); + return -EINVAL; + } + crypt_backend_memcpy(buffer, tmp, length); crypt_backend_memzero(tmp, sizeof(tmp)); - if (tmp_len < length) - return -EINVAL; - if (crypt_hash_restart(ctx)) return -EINVAL; @@ -534,12 +536,14 @@ int crypt_hmac_final(struct crypt_hmac *ctx, char *buffer, size_t length) if (HMAC_Final(ctx->md, tmp, &tmp_len) != 1) return -EINVAL; #endif + if (tmp_len < length) { + crypt_backend_memzero(tmp, sizeof(tmp)); + return -EINVAL; + } + crypt_backend_memcpy(buffer, tmp, length); crypt_backend_memzero(tmp, sizeof(tmp)); - if (tmp_len < length) - return -EINVAL; - if (crypt_hmac_restart(ctx)) return -EINVAL; From dbb6f8cca377ea36b104f98aa645a4c4cafe18ce Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 9 May 2026 18:42:38 +0200 Subject: [PATCH 102/244] Wipe all function pointers on tokens unload Just a code hardening. --- lib/luks2/luks2_token.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/luks2/luks2_token.c b/lib/luks2/luks2_token.c index e4952ac4c..b924e97aa 100644 --- a/lib/luks2/luks2_token.c +++ b/lib/luks2/luks2_token.c @@ -219,18 +219,24 @@ crypt_token_load_external(struct crypt_device *cd, const char *name, struct cryp void crypt_token_unload_external_all(struct crypt_device *cd) { + struct crypt_token_handler_v2 *token; int i; for (i = LUKS2_TOKENS_MAX - 1; i >= 0; i--) { if (token_handlers[i].version < 2) continue; - log_dbg(cd, "Unloading %s token handler.", token_handlers[i].u.v2.name); + token = &token_handlers[i].u.v2; + + log_dbg(cd, "Unloading %s token handler.", token->name); - free(CONST_CAST(void *)token_handlers[i].u.v2.name); + free(CONST_CAST(void *)token->name); - if (dlclose(CONST_CAST(void *)token_handlers[i].u.v2.dlhandle)) + if (dlclose(token->dlhandle)) log_dbg(cd, "%s", dlerror()); + + memset(token, 0, sizeof(*token)); + token_handlers[i].version = 0; } } From fa6e244657d6bc09295c4628252d4f8d4970c2d2 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 9 May 2026 18:47:14 +0200 Subject: [PATCH 103/244] Check for snprintf truncation in libdevmapper The snprintf can return larger size than requested, fix the condition. --- lib/libdevmapper.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/libdevmapper.c b/lib/libdevmapper.c index 6febe9755..53f9bfa0c 100644 --- a/lib/libdevmapper.c +++ b/lib/libdevmapper.c @@ -529,9 +529,9 @@ static int cipher_dm2c(const char *org_c, const char *org_i, unsigned tag_size, c_size = snprintf(c_dm, c_dm_size, "capi:authenc(%s,%s)-%s", org_i, capi, iv); } - if (c_size < 0 || c_size == c_dm_size) + if (c_size < 0 || c_size >= c_dm_size) return -EINVAL; - if (i_size < 0 || i_size == i_dm_size) + if (i_size < 0 || i_size >= i_dm_size) return -EINVAL; return 0; From 6256d7f7ebd84cfd6a965bafc0ea831acbc1dca0 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 9 May 2026 18:52:19 +0200 Subject: [PATCH 104/244] Use crypt_zalloc instead of malloc+memset in crypt_init --- lib/setup.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/setup.c b/lib/setup.c index 303a58c43..0160b1e83 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -599,11 +599,9 @@ int crypt_init(struct crypt_device **cd, const char *device) log_dbg(NULL, "Running without O_CLOEXEC."); #endif - if (!(h = malloc(sizeof(struct crypt_device)))) + if (!(h = crypt_zalloc(sizeof(struct crypt_device)))) return -ENOMEM; - memset(h, 0, sizeof(*h)); - r = device_alloc(NULL, &h->device, device); if (r < 0) { free(h); From a365173d1c6c2a869b82e168d434c6d085e7831c Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 14 Mar 2026 18:56:11 +0100 Subject: [PATCH 105/244] Add crypt_get_hw_opal_sum_enabled API to check SUM status This function detects if LUKS2 metadata use OPAL2 SUM mode. If can be used for testing that LUKS2 device actually uses SUM (as HW can support it but it can be intentionally disabled). --- lib/libcryptsetup.h | 8 ++++++++ lib/libcryptsetup.sym | 1 + lib/luks2/luks2.h | 1 + lib/luks2/luks2_json_metadata.c | 20 ++++++++++++++++---- lib/setup.c | 17 +++++++++++++++++ src/cryptsetup.c | 6 ++++-- tests/compat-test-opal | 10 ++++++++-- 7 files changed, 55 insertions(+), 8 deletions(-) diff --git a/lib/libcryptsetup.h b/lib/libcryptsetup.h index 987fc45e6..365c9a8e1 100644 --- a/lib/libcryptsetup.h +++ b/lib/libcryptsetup.h @@ -455,6 +455,14 @@ const char *crypt_get_default_type(void); */ int crypt_get_hw_encryption_type(struct crypt_device *cd); +/** + * Get OPAL Single User Mode (SUM) configuration + * + * @return @e 1 if OPAL in SUM is used, @e 0 if OPAL without SUM is used + * or negative errno value otherwise. + */ +int crypt_get_hw_opal_sum_enabled(struct crypt_device *cd); + /** * Get HW encryption (like OPAL) key size (in bytes) * diff --git a/lib/libcryptsetup.sym b/lib/libcryptsetup.sym index e7cfa0891..61432c144 100644 --- a/lib/libcryptsetup.sym +++ b/lib/libcryptsetup.sym @@ -199,4 +199,5 @@ CRYPTSETUP_2.8 { CRYPTSETUP_2.9 { global: crypt_get_verity_repaired; + crypt_get_hw_opal_sum_enabled; } CRYPTSETUP_2.8; diff --git a/lib/luks2/luks2.h b/lib/luks2/luks2.h index 703185a41..261bd79d7 100644 --- a/lib/luks2/luks2.h +++ b/lib/luks2/luks2.h @@ -445,6 +445,7 @@ int LUKS2_config_set_requirements(struct crypt_device *cd, struct luks2_hdr *hdr int LUKS2_config_set_requirement_version(struct crypt_device *cd, struct luks2_hdr *hdr, uint32_t req_id, uint8_t req_version, bool commit); int LUKS2_config_get_reencrypt_version(struct luks2_hdr *hdr, uint8_t *version); +int LUKS2_config_get_opal_version(struct luks2_hdr *hdr, uint8_t *version); bool LUKS2_reencrypt_requirement_candidate(struct luks2_hdr *hdr); diff --git a/lib/luks2/luks2_json_metadata.c b/lib/luks2/luks2_json_metadata.c index f078bea88..79ba37ba8 100644 --- a/lib/luks2/luks2_json_metadata.c +++ b/lib/luks2/luks2_json_metadata.c @@ -1704,7 +1704,7 @@ bool LUKS2_reencrypt_requirement_candidate(struct luks2_hdr *hdr) return false; } -int LUKS2_config_get_reencrypt_version(struct luks2_hdr *hdr, uint8_t *version) +static int LUKS2_config_get_requirement_version(struct luks2_hdr *hdr, uint8_t *version, const char *name) { json_object *jobj_mandatory, *jobj; int i, len; @@ -1712,6 +1712,7 @@ int LUKS2_config_get_reencrypt_version(struct luks2_hdr *hdr, uint8_t *version) assert(hdr); assert(version); + assert(name); jobj_mandatory = mandatory_requirements_jobj(hdr); if (!jobj_mandatory) @@ -1724,8 +1725,8 @@ int LUKS2_config_get_reencrypt_version(struct luks2_hdr *hdr, uint8_t *version) for (i = 0; i < len; i++) { jobj = json_object_array_get_idx(jobj_mandatory, i); - /* search for requirements prefixed with "online-reencrypt" */ - if (strncmp(json_object_get_string(jobj), "online-reencrypt", 16)) + /* search for requirements prefixed with name */ + if (strncmp(json_object_get_string(jobj), name, strlen(name))) continue; /* check current library is aware of the requirement */ @@ -1741,6 +1742,16 @@ int LUKS2_config_get_reencrypt_version(struct luks2_hdr *hdr, uint8_t *version) return -ENOENT; } +int LUKS2_config_get_reencrypt_version(struct luks2_hdr *hdr, uint8_t *version) +{ + return LUKS2_config_get_requirement_version(hdr, version, "online-reencrypt"); +} + +int LUKS2_config_get_opal_version(struct luks2_hdr *hdr, uint8_t *version) +{ + return LUKS2_config_get_requirement_version(hdr, version, "opal"); +} + static const struct requirement_flag *stored_requirement_name_by_id(struct luks2_hdr *hdr, uint32_t req_id) { json_object *jobj_mandatory, *jobj; @@ -2149,7 +2160,8 @@ static void hdr_dump_segments(struct crypt_device *cd, json_object *hdr_jobj) json_object_object_get_ex(jobj_segment, "type", &jobj1); if (!strncmp(json_object_get_string(jobj1), "hw-opal", 7)) { - log_std(cd, "\tHW OPAL encryption:\n"); + log_std(cd, "\tHW OPAL%s encryption:\n", + crypt_get_hw_opal_sum_enabled(cd) > 0 ? " (Single User Mode)" : ""); json_object_object_get_ex(jobj_segment, "opal_segment_number", &jobj1); log_std(cd, "\t\tOPAL segment number: %" PRIu32 "\n", crypt_jobj_get_uint32(jobj1)); json_object_object_get_ex(jobj_segment, "opal_key_size", &jobj1); diff --git a/lib/setup.c b/lib/setup.c index 0160b1e83..eb8201632 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -6849,6 +6849,23 @@ int crypt_get_hw_encryption_type(struct crypt_device *cd) return CRYPT_SW_ONLY; } +int crypt_get_hw_opal_sum_enabled(struct crypt_device* cd) +{ + uint8_t version; + + if (!cd) + return -EINVAL; + + if (!isLUKS2(cd->type)) + return -ENOTSUP; + + /* No Opal flag present */ + if (LUKS2_config_get_opal_version(&cd->u.luks2.hdr, &version) < 0) + return -ENOTSUP; + + return version > 1 ? 1 : 0; +} + int crypt_get_verity_info(struct crypt_device *cd, struct crypt_params_verity *vp) { diff --git a/src/cryptsetup.c b/src/cryptsetup.c index 2aa24ec9a..317710285 100644 --- a/src/cryptsetup.c +++ b/src/cryptsetup.c @@ -996,10 +996,12 @@ static int action_status(void) log_std(" keysize: %d [bits]\n", crypt_get_volume_key_size(cd) * 8); log_std(" key location: %s\n", (cad.flags & CRYPT_ACTIVATE_KEYRING_KEY) ? "keyring" : "dm-crypt"); } else if (hw_enc == CRYPT_OPAL_HW_ONLY) { - log_std(" encryption: HW OPAL only\n"); + log_std(" encryption: HW OPAL%s only\n", + crypt_get_hw_opal_sum_enabled(cd) > 0 ? " (Single User Mode)" : ""); log_std(" OPAL keysize: %d [bits]\n", crypt_get_hw_encryption_key_size(cd) * 8); } else if (hw_enc == CRYPT_SW_AND_OPAL_HW) { - log_std(" encryption: dm-crypt over HW OPAL\n"); + log_std(" encryption: dm-crypt over HW OPAL%s\n", + crypt_get_hw_opal_sum_enabled(cd) > 0 ? " (Single User Mode)" : ""); log_std(" OPAL keysize: %d [bits]\n", crypt_get_hw_encryption_key_size(cd) * 8); log_std(" cipher: %s-%s\n", crypt_get_cipher(cd), crypt_get_cipher_mode(cd)); log_std(" keysize: %d [bits]\n", (crypt_get_volume_key_size(cd) - crypt_get_hw_encryption_key_size(cd)) * 8); diff --git a/tests/compat-test-opal b/tests/compat-test-opal index 021c2a915..2c2cccd91 100755 --- a/tests/compat-test-opal +++ b/tests/compat-test-opal @@ -413,7 +413,10 @@ test_device() #opal_mode, #format_params, #--integrity-no-wipe { echo -e "$PWD1\n$OPAL2_ADMIN_PIN" | $CRYPTSETUP luksFormat --type luks2 $1 $2 $3 -q $FAST_PBKDF_OPT $OPAL2_DEV || fail echo $PWD1 | $CRYPTSETUP open $OPAL2_DEV $DEV_NAME || fail - test -z "$3" || dd if=/dev/zero of=/dev/mapper/$DEV_NAME bs=1M count=1 oflag=direct >/dev/null 2>&1 || fail + if [ $HAVE_SUM -eq 1 ]; then + $CRYPTSETUP -q status $DEV_NAME | grep -q "(Single User Mode)" || fail + fi + test -z "$3" || dd if=/dev/zero of=/dev/mapper/$DEV_NAME bs=1M count=1 oflag=direct >/dev/null 2>&1 || fail $CRYPTSETUP luksSuspend $DEV_NAME || fail dd if=$OPAL2_DEV of=/dev/zero bs=1M skip=16 count=1 iflag=direct >/dev/null 2>&1 && fail echo $PWD1 | $CRYPTSETUP luksResume $DEV_NAME || fail @@ -429,7 +432,10 @@ test_device_detached_header() #hdr, #opal_mode, #format_params, #--integrity-no- { echo -e "$PWD1\n$OPAL2_ADMIN_PIN" | $CRYPTSETUP luksFormat --type luks2 --header $1 $2 $3 $4 -q $FAST_PBKDF_OPT $OPAL2_DEV || fail echo $PWD1 | $CRYPTSETUP open $OPAL2_DEV $DEV_NAME --header $1 || fail - test -z "$4" || dd if=/dev/zero of=/dev/mapper/$DEV_NAME bs=1M count=1 oflag=direct >/dev/null 2>&1 || fail + if [ $HAVE_SUM -eq 1 ]; then + $CRYPTSETUP -q status $DEV_NAME --header $1 | grep -q "(Single User Mode)" || fail + fi + test -z "$4" || dd if=/dev/zero of=/dev/mapper/$DEV_NAME bs=1M count=1 oflag=direct >/dev/null 2>&1 || fail $CRYPTSETUP luksSuspend $DEV_NAME || fail dd if=$OPAL2_DEV of=/dev/zero bs=1M count=1 iflag=direct >/dev/null 2>&1 && fail echo $PWD1 | $CRYPTSETUP luksResume $DEV_NAME 2>/dev/null && fail From 8cf635d483f2b40cfed0ad36ca5fad9e5b94e6ba Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Mon, 16 Mar 2026 08:08:11 +0100 Subject: [PATCH 106/244] Add crypt_status_hw_encryption() API call to check HW for OPAL This call tries to primarily use Discovery0, that is mandatory for all TCG-compatible drives. In debuig mode it printas features, this can be useful to show that drive is i.e. Pyrite version and not Opal. --- lib/libcryptsetup.h | 19 ++++++ lib/libcryptsetup.sym | 1 + lib/luks2/hw_opal/hw_opal.c | 119 +++++++++++++++++++++++++++++++++++- 3 files changed, 138 insertions(+), 1 deletion(-) diff --git a/lib/libcryptsetup.h b/lib/libcryptsetup.h index 365c9a8e1..6ad052e73 100644 --- a/lib/libcryptsetup.h +++ b/lib/libcryptsetup.h @@ -1961,6 +1961,25 @@ typedef enum { */ crypt_status_info crypt_status(struct crypt_device *cd, const char *name); +/** + * Device HW encryption status + */ +typedef enum { + CRYPT_HW_INVALID, /**< cannot get the status info or possible missing support in kernel */ + CRYPT_HW_OTHER, /**< device support only non-OPAL subsystems */ + CRYPT_HW_OPAL, /**< device claims OPAL2 support */ + CRYPT_HW_OPAL_SUM /**< device claims OPAL2 with SUM (Single User Mode) option */ +} crypt_status_hw_encryption_info; + +/** + * Get status info about supported HW encryption + * + * @param cd crypt device handle + * + * @return value defined by crypt_status_hw_encryption_info. + */ +crypt_status_hw_encryption_info crypt_status_hw_encryption(struct crypt_device *cd); + /** * Dump text-formatted information about crypt or verity device to log output. * diff --git a/lib/libcryptsetup.sym b/lib/libcryptsetup.sym index 61432c144..5c2192b32 100644 --- a/lib/libcryptsetup.sym +++ b/lib/libcryptsetup.sym @@ -200,4 +200,5 @@ CRYPTSETUP_2.9 { global: crypt_get_verity_repaired; crypt_get_hw_opal_sum_enabled; + crypt_status_hw_encryption; } CRYPTSETUP_2.8; diff --git a/lib/luks2/hw_opal/hw_opal.c b/lib/luks2/hw_opal/hw_opal.c index b14601479..62e72cb35 100644 --- a/lib/luks2/hw_opal/hw_opal.c +++ b/lib/luks2/hw_opal/hw_opal.c @@ -146,6 +146,7 @@ static const char *opal_status_to_string(int t) static const char *opal_ioctl_to_string(unsigned long rq) { switch(rq) { + case IOC_OPAL_DISCOVERY: return "DISCOVERY"; case IOC_OPAL_GET_STATUS: return "GET_STATUS"; case IOC_OPAL_GET_GEOMETRY: return "GET_GEOMETRY"; case IOC_OPAL_GET_LR_STATUS: return "GET_LR_STATUS"; @@ -178,12 +179,17 @@ static void opal_ioctl_debug(struct crypt_device *cd, { const char *cmd = opal_ioctl_to_string(rq); - if (ret) { + /* Discovery ioctl returns response size */ + if (ret < 0 || (ret && rq != IOC_OPAL_DISCOVERY)) { log_dbg(cd, "OPAL %s failed: %s", cmd, opal_status_to_string(ret)); return; } if (post) switch(rq) { + case IOC_OPAL_DISCOVERY: { /* OUT */ + log_dbg(cd, "OPAL %s", cmd); + }; + break; case IOC_OPAL_GET_STATUS: { /* OUT */ struct opal_status *st = args; log_dbg(cd, "OPAL %s: flags:%" PRIu32, cmd, st->flags); @@ -1563,6 +1569,112 @@ void opal_exclusive_unlock(struct crypt_device *cd, struct crypt_lock_handle *op crypt_unlock_internal(cd, opal_lock); } +struct level_0_discovery_header { + uint32_t length; + uint32_t revision; + uint8_t reserved[8]; + uint8_t vendor_specific[32]; +} __attribute__ ((packed)); + +struct level_0_discovery_feature_shared { + uint16_t feature_code; + uint8_t reserved_minor : 4; + uint8_t descriptor_version : 4; + uint8_t length; +} __attribute__ ((packed)); + +static crypt_status_hw_encryption_info opal_discovery0(struct crypt_device *cd) +{ + int fd; + int r, feat_length; + struct opal_discovery discovery; + struct level_0_discovery_header *dh; + struct level_0_discovery_feature_shared *feat_hdr; + char buf[4096]; + const char *feature; + void *feat_ptr, *feat_end; + crypt_status_hw_encryption_info hw_enc, hw_enc_final; + + fd = device_open(cd, crypt_data_device(cd), O_RDONLY); + if (fd < 0) + return CRYPT_HW_INVALID; + + discovery.data = (uintptr_t)buf; + discovery.size = sizeof(buf); + memset(buf, 0, sizeof(buf)); + + r = opal_ioctl(cd, fd, IOC_OPAL_DISCOVERY, &discovery); + if (r < 0) + return CRYPT_HW_INVALID; + + dh = (struct level_0_discovery_header *)buf; + feat_ptr = buf + sizeof(*dh); + feat_end = buf + be32_to_cpu(dh->length); + + hw_enc = hw_enc_final = CRYPT_HW_INVALID; + while (feat_ptr < feat_end) { + feat_hdr = feat_ptr; + /* Length defines data following the header [3.3.6 Core spec] */ + feat_length = feat_hdr->length + sizeof(*feat_hdr); + + switch (be16_to_cpu(feat_hdr->feature_code)) { + /* 0x0000: reserved */ + case 0x0001: feature = "TPer"; break; + case 0x0002: feature = "Locking"; break; + case 0x0003: feature = "Geometry"; break; + case 0x0004: feature = "Secure messaging"; break; + case 0x0005: feature = "SIIS"; break; + /* 0x00ff: reserved */ + /* 0x0100 - 0x03ff: SSCs */ + case 0x0100: feature = "Enterprise"; hw_enc = CRYPT_HW_OTHER; break; + case 0x0200: feature = "Opal1"; hw_enc = CRYPT_HW_OTHER; break; + case 0x0201: feature = "SUM"; hw_enc = CRYPT_HW_OPAL_SUM; break; + case 0x0202: feature = "Data store"; break; + case 0x0203: feature = "Opal2"; hw_enc = CRYPT_HW_OPAL; break; + case 0x0301: feature = "Opalite"; hw_enc = CRYPT_HW_OTHER; break; + case 0x0302: feature = "Pyrite1"; hw_enc = CRYPT_HW_OTHER; break; + case 0x0303: feature = "Pyrite2"; hw_enc = CRYPT_HW_OTHER; break; + case 0x0304: feature = "Ruby"; hw_enc = CRYPT_HW_OTHER; break; + case 0x0305: feature = "KPIO"; break; + /* 0x0400 - 0xbfff reserved */ + case 0x0401: feature = "Locking LBA ranges"; break; + case 0x0402: feature = "Block SID"; break; + case 0x0403: feature = "NS locking"; break; + case 0x0404: feature = "Data removal"; break; + case 0x0405: feature = "NS geometry"; break; + case 0x0407: feature = "NS Shadow MBR"; break; + case 0x0409: feature = "CPIN"; break; + case 0x040a: feature = "NS KPIO"; break; + /* 0xC000 - 0xffff vendor specific */ + default: feature = "(unknown)"; break; + } + + log_dbg(cd, "Feature 0x%03x %s", be16_to_cpu(feat_hdr->feature_code), feature); + + feat_ptr = (char *)feat_ptr + feat_length; + if (hw_enc > hw_enc_final) + hw_enc_final = hw_enc; + } + + return hw_enc_final; +} + +crypt_status_hw_encryption_info crypt_status_hw_encryption(struct crypt_device *cd) +{ + int r; + + r = opal_discovery0(cd); + if (r > CRYPT_HW_INVALID) + return r; + + /* Fallback if Discovery is not available */ + if (opal_supported(cd, crypt_data_device(cd)) <= 0) + return CRYPT_HW_INVALID; + + r = opal_sum_supported(cd, crypt_data_device(cd)); + return r > 0 ? CRYPT_HW_OPAL_SUM : CRYPT_HW_OPAL; +} + #else #pragma GCC diagnostic ignored "-Wunused-parameter" @@ -1647,4 +1759,9 @@ void opal_exclusive_unlock(struct crypt_device *cd, struct crypt_lock_handle *op { } +crypt_status_hw_encryption_info crypt_status_hw_encryption(struct crypt_device *cd) +{ + return CRYPT_HW_INVALID; +} + #endif From 78689d7369908a1d0589c906b18a34adfdbf5014 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 16 May 2026 18:02:09 +0200 Subject: [PATCH 107/244] tcrypt: Remove logic for AF_ALG dependence TCRYPT (TrueCrypt/VeraCrypt) format initially required kernel AF_ALG interface for decryption of header. This is no longer true as crypto backend tries userspace crypto library first. As there is internal fallback to AF_ALG if available, these conditions can be remove. It makes also pass test with --disable-kernel-crypto. --- lib/tcrypt/tcrypt.c | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/lib/tcrypt/tcrypt.c b/lib/tcrypt/tcrypt.c index c29ca2ede..d23cc0630 100644 --- a/lib/tcrypt/tcrypt.c +++ b/lib/tcrypt/tcrypt.c @@ -444,8 +444,6 @@ static int TCRYPT_decrypt_hdr(struct crypt_device *cd, struct tcrypt_phdr *hdr, if (r < 0) { log_dbg(cd, "TCRYPT: returned error %d, skipped.", r); - if (r == -ENOTSUP) - break; r = -ENOENT; continue; } @@ -522,7 +520,7 @@ static int TCRYPT_init_hdr(struct crypt_device *cd, unsigned char *pwd = NULL; size_t passphrase_size, max_passphrase_size; char *key = NULL; - unsigned int i, skipped = 0, iterations; + unsigned int i, iterations; int r = -EPERM, keyfiles_pool_length; pwd = crypt_safe_alloc(VCRYPT_KEY_POOL_LEN); @@ -592,7 +590,6 @@ static int TCRYPT_init_hdr(struct crypt_device *cd, if (r < 0) { log_verbose(cd, _("PBKDF2 hash algorithm %s not available, skipping."), tcrypt_kdf[i].hash); - skipped++; r = -EPERM; continue; } @@ -600,7 +597,6 @@ static int TCRYPT_init_hdr(struct crypt_device *cd, /* Decrypt header */ r = TCRYPT_decrypt_hdr(cd, hdr, key, params); if (r == -ENOENT) { - skipped++; r = -EPERM; continue; } @@ -608,13 +604,6 @@ static int TCRYPT_init_hdr(struct crypt_device *cd, break; } - if ((r < 0 && skipped && skipped == i) || r == -ENOTSUP) { - log_err(cd, _("Required kernel crypto interface not available.")); -#if ENABLE_AF_ALG - log_err(cd, _("Ensure you have algif_skcipher kernel module loaded.")); -#endif - r = -ENOTSUP; - } if (r < 0) goto out; From 4921256304d27dc1b9dd56a84e41a6cbe0effdd5 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 16 May 2026 18:18:30 +0200 Subject: [PATCH 108/244] luks2: Remove logic for AF_ALG dependence Initially with disabled AF_ALG, LUKS2 keyslot code has no way to encrypt keyslot, so old fallback to kernel dm-crypt temporary device was used. Now crypto backend already uses userpsace library (with fallback to AF_ALG), so this code is no longer needed. --- lib/luks2/luks2_keyslot_luks2.c | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/lib/luks2/luks2_keyslot_luks2.c b/lib/luks2/luks2_keyslot_luks2.c index ec68236cb..119fe6478 100644 --- a/lib/luks2/luks2_keyslot_luks2.c +++ b/lib/luks2/luks2_keyslot_luks2.c @@ -24,9 +24,6 @@ static int luks2_encrypt_to_storage(char *src, size_t srcLength, struct volume_key *vk, unsigned int sector, struct crypt_device *cd) { -#if !ENABLE_AF_ALG /* Support for old kernel without Crypto API */ - return LUKS_encrypt_to_storage(src, srcLength, cipher, cipher_mode, vk, sector, cd); -#else struct crypt_storage *s; int devfd, r; struct device *device = crypt_metadata_device(cd); @@ -67,7 +64,6 @@ static int luks2_encrypt_to_storage(char *src, size_t srcLength, log_err(cd, _("IO error while encrypting keyslot.")); return r; -#endif } static int luks2_decrypt_from_storage(char *dst, size_t dstLength, @@ -75,16 +71,6 @@ static int luks2_decrypt_from_storage(char *dst, size_t dstLength, unsigned int sector, struct crypt_device *cd) { struct device *device = crypt_metadata_device(cd); -#if !ENABLE_AF_ALG /* Support for old kernel without Crypto API */ - int r = device_read_lock(cd, device); - if (r) { - log_err(cd, _("Failed to acquire read lock on device %s."), device_path(device)); - return r; - } - r = LUKS_decrypt_from_storage(dst, dstLength, cipher, cipher_mode, vk, sector, cd); - device_read_unlock(cd, crypt_metadata_device(cd)); - return r; -#else struct crypt_storage *s; int devfd, r; @@ -129,7 +115,6 @@ static int luks2_decrypt_from_storage(char *dst, size_t dstLength, crypt_storage_destroy(s); return r; -#endif } static int luks2_keyslot_get_pbkdf_params(json_object *jobj_keyslot, From df1fe53746153a1298ba48971f1b83d071e885e9 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 16 May 2026 18:42:01 +0200 Subject: [PATCH 109/244] Do not print specific AF_ALG info in cryptsetup ciper benchmark. If AF_ALG is not available, cipher test does not work. One day it can uise different interface, let's remove special handling for now. If no cipher is available, just print info to user. --- src/cryptsetup.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/cryptsetup.c b/src/cryptsetup.c index 317710285..bc4cc3722 100644 --- a/src/cryptsetup.c +++ b/src/cryptsetup.c @@ -1167,6 +1167,7 @@ static int action_benchmark(void) double enc_mbr = 0, dec_mbr = 0; int key_size = (ARG_UINT32(OPT_KEY_SIZE_ID) ?: DEFAULT_PLAIN_KEYBITS) / 8; int skipped = 0, width, mode_len; + bool head_printed = false; char *c; int i, r; @@ -1216,13 +1217,17 @@ static int action_benchmark(void) r = benchmark_cipher_loop(bciphers[i].cipher, bciphers[i].mode, bciphers[i].key_size, &enc_mbr, &dec_mbr); check_signal(&r); - if (r == -ENOTSUP || r == -EINTR) + if (r == -EINTR) break; - if (r == -ENOENT) + if (r == -ENOENT || r == -ENOTSUP) { skipped++; - if (i == 0) + continue; + } + if (!head_printed) { /* TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. */ log_std(_("# Algorithm | Key | Encryption | Decryption\n")); + head_printed = true; + } if (snprintf(cipher, MAX_CIPHER_LEN, "%s-%s", bciphers[i].cipher, bciphers[i].mode) < 0) @@ -1236,15 +1241,9 @@ static int action_benchmark(void) bciphers[i].key_size*8, _("N/A"), _("N/A")); } if (skipped && skipped == i) - r = -ENOTSUP; + log_std(_("# Cipher speed test is not available.\n")); } - if (r == -ENOTSUP) { - log_err(_("Required kernel crypto interface not available.")); -#if ENABLE_AF_ALG - log_err( _("Ensure you have algif_skcipher kernel module loaded.")); -#endif - } return r; } From 0d6bfeed13268287178be0d06a25c0e097f51e15 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 16 May 2026 20:55:56 +0200 Subject: [PATCH 110/244] Make compat-test run without AF_ALG compat-test used benchmark to test avail;ability of cipher, this no longer works wirth AF_ALG disabled. Add kernel check to crypto-check and use it instead to guard benchmark test. Also fix backend lying about kernel check. --- lib/crypto_backend/crypto_cipher_kernel.c | 3 +-- lib/setup.c | 2 +- tests/compat-test | 21 +++++++++------------ tests/crypto-check.c | 22 ++++++++++++++++------ 4 files changed, 27 insertions(+), 21 deletions(-) diff --git a/lib/crypto_backend/crypto_cipher_kernel.c b/lib/crypto_backend/crypto_cipher_kernel.c index e572edd16..da5b88205 100644 --- a/lib/crypto_backend/crypto_cipher_kernel.c +++ b/lib/crypto_backend/crypto_cipher_kernel.c @@ -364,8 +364,7 @@ int crypt_cipher_decrypt_kernel(struct crypt_cipher_kernel *ctx, int crypt_cipher_check_kernel(const char *name, const char *mode, const char *integrity, size_t key_length) { - /* Cannot check, expect success. */ - return 0; + return -ENOTSUP; } int crypt_bitlk_decrypt_key_kernel(const void *key, size_t key_length, const char *in, char *out, size_t length, diff --git a/lib/setup.c b/lib/setup.c index eb8201632..4892be0a5 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -1889,7 +1889,7 @@ static int LUKS2_check_encryption_params(struct crypt_device *cd, /* FIXME: allow this later also for normal ciphers (check AF_ALG availability. */ if (integrity && integrity_key_size == 0) { r = crypt_cipher_check_kernel(cipher, cipher_mode, integrity, volume_key_size); - if (r < 0) { + if (r < 0 && r != -ENOTSUP) { log_err(cd, _("Cipher %s-%s (key size %zd bits) is not available."), cipher, cipher_mode, volume_key_size * 8); return r; diff --git a/tests/compat-test b/tests/compat-test index bfd089867..ed7a0d23e 100755 --- a/tests/compat-test +++ b/tests/compat-test @@ -227,12 +227,6 @@ export LANG=C [ ! -x "$CRYPTSETUP" ] && skip "Cannot find $CRYPTSETUP, test skipped." valgrind_setup -# LUKS non-root-tests -if [ $(id -u) != 0 ]; then - $CRYPTSETUP benchmark -c aes-xts-plain64 >/dev/null 2>&1 || \ - skip "WARNING: Cannot run test without kernel userspace crypto API, test skipped." -fi - prepare "Image in file tests (root capabilities not required)" file echo "[1] format" echo $PWD1 | $CRYPTSETUP luksFormat --type luks1 -c 'capi:xts(aes)-plain64' $IMG $FAST_PBKDF_OPT || fail @@ -311,12 +305,15 @@ echo "[10] uuid" echo $PWD1 | $CRYPTSETUP -q luksFormat --type luks1 $FAST_PBKDF_OPT --uuid $TEST_UUID $IMG || fail $CRYPTSETUP -q luksUUID $IMG | grep -q $TEST_UUID || fail -echo "[11] benchmark" -$CRYPTSETUP benchmark -c aes-xts --key-size 128 >/dev/null 2>&1 && fail -$CRYPTSETUP benchmark -c aes-xts >/dev/null || fail -$CRYPTSETUP benchmark -c aes-xts-plain64 >/dev/null || fail -$CRYPTSETUP benchmark -c capi:xts\(aes\) >/dev/null || fail -$CRYPTSETUP benchmark -c capi:xts\(aes\)-plain64 >/dev/null || fail +./crypto-check cipher-kernel aes xts 256 +if [ $? -eq 0 ] ; then + echo "[11] benchmark" + $CRYPTSETUP benchmark -c aes-xts --key-size 128 >/dev/null 2>&1 && fail + $CRYPTSETUP benchmark -c aes-xts >/dev/null || fail + $CRYPTSETUP benchmark -c aes-xts-plain64 >/dev/null || fail + $CRYPTSETUP benchmark -c capi:xts\(aes\) >/dev/null || fail + $CRYPTSETUP benchmark -c capi:xts\(aes\)-plain64 >/dev/null || fail +fi [ $(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." diff --git a/tests/crypto-check.c b/tests/crypto-check.c index 04725c4f9..cb34bc9c5 100644 --- a/tests/crypto-check.c +++ b/tests/crypto-check.c @@ -20,13 +20,19 @@ static int check_cipher(const char *alg, const char *mode, unsigned long key_bit if (key_bits % 8 || (key_bits / 8) > sizeof(key)) return EXIT_FAILURE; - /* Userspace crypto */ crypt_backend_rng(key, sizeof(key), CRYPT_RND_NORMAL, 0); if (crypt_cipher_init(&cipher, alg, mode, key, key_bits / 8)) return EXIT_FAILURE; crypt_cipher_destroy(cipher); - /* Kernel crypto */ + return EXIT_SUCCESS; +} + +static int check_cipher_kernel(const char *alg, const char *mode, unsigned long key_bits) +{ + if (key_bits % 8) + return EXIT_FAILURE; + if (crypt_cipher_check_kernel(alg, mode, NULL, key_bits / 8)) return EXIT_FAILURE; @@ -49,7 +55,7 @@ static int check_hash(const char *hash) static void __attribute__((noreturn)) exit_help(bool destroy_backend) { - printf("Use: crypto_check version | fips_mode | fips_mode_kernel | hash | cipher [key_bits]\n"); + printf("Use: crypto_check version | fips_mode | fips_mode_kernel | hash | cipher[-kernel] [key_bits]\n"); if (destroy_backend) crypt_backend_destroy(); exit(EXIT_FAILURE); @@ -57,7 +63,7 @@ static void __attribute__((noreturn)) exit_help(bool destroy_backend) int main(int argc, char *argv[]) { - int r = EXIT_SUCCESS; + int r = EXIT_FAILURE; if (argc < 2) exit_help(false); @@ -77,11 +83,12 @@ int main(int argc, char *argv[]) printf("%s%s%s\n", crypt_backend_version(), crypt_fips_mode() ? " (FIPS mode)" : "", crypt_fips_mode_kernel() ? " (FIPS kernel)" : ""); + r = EXIT_SUCCESS; } else if (!strcmp(argv[1], "hash")) { if (argc != 3) exit_help(true); r = check_hash(argv[2]); - } else if (!strcmp(argv[1], "cipher")) { + } else if (!strcmp(argv[1], "cipher") || !strcmp(argv[1], "cipher-kernel")) { unsigned long ul = 256; char *ptr; if (argc < 4 || argc > 5) @@ -91,7 +98,10 @@ int main(int argc, char *argv[]) if (*ptr) exit_help(true); } - r = check_cipher(argv[2], argv[3], ul); + if (strcmp(argv[1], "cipher-kernel")) + r = check_cipher(argv[2], argv[3], ul); + else + r = check_cipher_kernel(argv[2], argv[3], ul); } crypt_backend_destroy(); From 9ebdb9491acbe17db31fb780b379b42fba1050e6 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 16 May 2026 21:25:46 +0200 Subject: [PATCH 111/244] ci: Add test with disabled AF_ALG --- .gitlab/ci/fedora-opal.yml | 1 + .gitlab/ci/fedora.yml | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.gitlab/ci/fedora-opal.yml b/.gitlab/ci/fedora-opal.yml index be5f78f2e..368724164 100644 --- a/.gitlab/ci/fedora-opal.yml +++ b/.gitlab/ci/fedora-opal.yml @@ -13,6 +13,7 @@ script: - sudo dnf install -y -q nvme-cli - sudo nvme list + - ./configure - make -j - make -j -C tests check-programs - sudo -E make check TESTS="00modules-test compat-test-opal" diff --git a/.gitlab/ci/fedora.yml b/.gitlab/ci/fedora.yml index b17111866..c0f879da9 100644 --- a/.gitlab/ci/fedora.yml +++ b/.gitlab/ci/fedora.yml @@ -17,7 +17,6 @@ - (r=3;while ! sudo dnf -y -q install $PKGS ; do ((--r))||exit;sleep 5;echo "Retrying";done) - sudo -E git clean -xdf - ./autogen.sh - - ./configure --enable-fips --enable-pwquality --enable-libargon2 --with-crypto_backend=openssl --enable-asciidoc test-main-commit-job-rawhide: extends: @@ -32,11 +31,15 @@ test-main-commit-job-rawhide: RUN_SSH_PLUGIN_TEST: "1" RUN_KEYRING_TRUSTED_TEST: "1" RUN_SYSTEMD_PLUGIN_TEST: "1" + parallel: + matrix: + - OPTION: [ "--enable-kernel_crypto", "--disable-kernel_crypto" ] rules: - if: $CI_PROJECT_PATH != "cryptsetup/cryptsetup" when: never - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_BRANCH =~ /v2\..\.x$/ script: + - ./configure --enable-fips --enable-pwquality $OPTION - make -j - make -j -C tests check-programs - sudo -E make check @@ -54,11 +57,15 @@ test-mergerq-job-rawhide: RUN_SSH_PLUGIN_TEST: "1" RUN_KEYRING_TRUSTED_TEST: "1" RUN_SYSTEMD_PLUGIN_TEST: "1" + parallel: + matrix: + - OPTION: [ "--enable-kernel_crypto", "--disable-kernel_crypto" ] rules: - if: $CI_PROJECT_PATH != "cryptsetup/cryptsetup" when: never - if: $CI_PIPELINE_SOURCE == "merge_request_event" script: + - ./configure --enable-fips --enable-pwquality $OPTION - make -j - make -j -C tests check-programs - sudo -E make check From c757eeb1943652533a6da50c0fff54a22f889425 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Thu, 14 May 2026 15:05:02 +0200 Subject: [PATCH 112/244] Minor keyslot_add_by_key refactoring. Prepare code for further code clarity improvements. --- lib/setup.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/setup.c b/lib/setup.c index 4892be0a5..f4166d510 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -7396,12 +7396,14 @@ static int keyslot_add_by_key(struct crypt_device *cd, assert(new_passphrase); assert(vk); - if (!flags) - return is_luks1 ? luks1_keyslot_add_by_volume_key(cd, keyslot_new, new_passphrase, new_passphrase_size, vk) : - luks2_keyslot_add_by_volume_key(cd, keyslot_new, new_passphrase, new_passphrase_size, vk); + if (is_luks1) { + if (flags) + return -EINVAL; + return luks1_keyslot_add_by_volume_key(cd, keyslot_new, new_passphrase, new_passphrase_size, vk); + } - if (is_luks1) - return -EINVAL; + if (!flags) + return luks2_keyslot_add_by_volume_key(cd, keyslot_new, new_passphrase, new_passphrase_size, vk); digest = LUKS2_digest_verify_by_segment(cd, &cd->u.luks2.hdr, CRYPT_DEFAULT_SEGMENT, vk); if (digest >= 0) /* if key matches volume key digest tear down new vk flag */ From 1043e124d759bab2c604add09595134f60f8c997 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Wed, 13 May 2026 12:50:55 +0200 Subject: [PATCH 113/244] Optionally exclude default segment digest from verification. Provide option to exclude default segment key digest from LUKS2_digest_verify_by_any_matching verification routine. --- lib/luks2/luks2.h | 3 ++- lib/luks2/luks2_digest.c | 14 ++++++++++---- lib/setup.c | 4 ++-- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/lib/luks2/luks2.h b/lib/luks2/luks2.h index 261bd79d7..50c5abe41 100644 --- a/lib/luks2/luks2.h +++ b/lib/luks2/luks2.h @@ -319,7 +319,8 @@ void crypt_token_unload_external_all(struct crypt_device *cd); * Generic LUKS2 digest */ int LUKS2_digest_verify_by_any_matching(struct crypt_device *cd, - const struct volume_key *vk); + const struct volume_key *vk, + bool exclude_default_segment); int LUKS2_digest_verify_by_segment(struct crypt_device *cd, struct luks2_hdr *hdr, diff --git a/lib/luks2/luks2_digest.c b/lib/luks2/luks2_digest.c index fb9a902d0..8429c912e 100644 --- a/lib/luks2/luks2_digest.c +++ b/lib/luks2/luks2_digest.c @@ -144,13 +144,19 @@ int LUKS2_digest_dump(struct crypt_device *cd, int digest) } int LUKS2_digest_verify_by_any_matching(struct crypt_device *cd, - const struct volume_key *vk) + const struct volume_key *vk, + bool exclude_default_segment) { - int digest; + int digest, default_segment_digest = -1; + + if (exclude_default_segment) + default_segment_digest = LUKS2_digest_by_segment(crypt_get_hdr(cd, CRYPT_LUKS2), CRYPT_DEFAULT_SEGMENT); - for (digest = 0; digest < LUKS2_DIGEST_MAX; digest++) - if (LUKS2_digest_verify_by_digest(cd, digest, vk) == digest) + for (digest = 0; digest < LUKS2_DIGEST_MAX; digest++) { + if (digest != default_segment_digest && + LUKS2_digest_verify_by_digest(cd, digest, vk) == digest) return digest; + } return -ENOENT; } diff --git a/lib/setup.c b/lib/setup.c index f4166d510..d301384dc 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -5384,7 +5384,7 @@ static int _verify_key(struct crypt_device *cd, return -EINVAL; if (unbound_key) - r = LUKS2_digest_verify_by_any_matching(cd, vk); + r = LUKS2_digest_verify_by_any_matching(cd, vk, /* exclude_default_segment= */ false); else r = LUKS2_digest_verify_by_segment(cd, &cd->u.luks2.hdr, CRYPT_DEFAULT_SEGMENT, vk); } else if (isVERITY(cd->type)) @@ -7411,7 +7411,7 @@ static int keyslot_add_by_key(struct crypt_device *cd, else if (digest == -EPERM) { /* if key matches any existing digest, do not create new digest */ if ((flags & CRYPT_VOLUME_KEY_DIGEST_REUSE)) - digest = LUKS2_digest_verify_by_any_matching(cd, vk); + digest = LUKS2_digest_verify_by_any_matching(cd, vk, /* exclude_default_segment= */ false); /* Anything other than -EPERM or -ENOENT suggests broken metadata. Abort */ if (digest < 0 && digest != -ENOENT && digest != -EPERM) From e08eb1854c352a88f85a93b473b5164107edeb44 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Tue, 19 May 2026 09:40:43 +0200 Subject: [PATCH 114/244] Clarify usage of CRYPT_VOLUME_KEY_DIGEST_REUSE flag. The use of CRYPT_VOLUME_KEY_DIGEST_REUSE flag does not make sense without CRYPT_VOLUME_KEY_NO_SEGMENT or CRYPT_VOLUME_KEY_SET flags. Clarify the use case in documentation and also drop the flag if use stand alone in crypt_keyslot_add_by_* API calls. --- lib/libcryptsetup.h | 6 +++++- lib/setup.c | 9 +++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/libcryptsetup.h b/lib/libcryptsetup.h index 6ad052e73..3e312773b 100644 --- a/lib/libcryptsetup.h +++ b/lib/libcryptsetup.h @@ -1171,7 +1171,11 @@ int crypt_keyslot_add_by_volume_key(struct crypt_device *cd, /** create keyslot with new volume key and assign it to current dm-crypt segment */ #define CRYPT_VOLUME_KEY_SET (UINT32_C(1) << 1) -/** Assign key to first matching digest before creating new digest */ +/** + * Assign key to first matching digest not associated with current dm-crypt segment + * before creating new digest. The flag is effective only with + * CRYPT_VOLUME_KEY_NO_SEGMENT or CRYPT_VOLUME_KEY_SET flag set. + */ #define CRYPT_VOLUME_KEY_DIGEST_REUSE (UINT32_C(1) << 2) /** diff --git a/lib/setup.c b/lib/setup.c index d301384dc..7b8c77542 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -7402,6 +7402,15 @@ static int keyslot_add_by_key(struct crypt_device *cd, return luks1_keyslot_add_by_volume_key(cd, keyslot_new, new_passphrase, new_passphrase_size, vk); } + /* + * Drop CRYPT_VOLUME_KEY_DIGEST_REUSE flag if used without CRYPT_VOLUME_KEY_SET + * or CRYPT_VOLUME_KEY_NO_SEGMENT flags. The standalone CRYPT_VOLUME_KEY_DIGEST_REUSE flag + * is otherwise equivalent to adding new keyslot with current volume key. + */ + if ((flags & CRYPT_VOLUME_KEY_DIGEST_REUSE) && + !(flags & (CRYPT_VOLUME_KEY_SET | CRYPT_VOLUME_KEY_NO_SEGMENT))) + flags &= ~CRYPT_VOLUME_KEY_DIGEST_REUSE; + if (!flags) return luks2_keyslot_add_by_volume_key(cd, keyslot_new, new_passphrase, new_passphrase_size, vk); From 14c1f719354d3293cf556ebe22d9cf96af2cc4fe Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Wed, 13 May 2026 12:53:17 +0200 Subject: [PATCH 115/244] CRYPT_VOLUME_KEY_NO_SEGMENT flag must always create unbound keyslot. The keyslot created with CRYPT_VOLUME_KEY_NO_SEGMENT flag must always be unbound (not assigned to default data segment). This also applies if caller would pass real volume key as a function parameter. Also if the CRYPT_VOLUME_KEY_DIGEST_REUSE flag is used, we have to reuse only digests assigned to unbound keyslots. --- lib/setup.c | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/lib/setup.c b/lib/setup.c index 7b8c77542..1ed7387f4 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -7402,6 +7402,15 @@ static int keyslot_add_by_key(struct crypt_device *cd, return luks1_keyslot_add_by_volume_key(cd, keyslot_new, new_passphrase, new_passphrase_size, vk); } + /* if passed key matches volume key digest tear down new vk flag */ + if (flags & CRYPT_VOLUME_KEY_SET) { + digest = LUKS2_digest_verify_by_segment(cd, &cd->u.luks2.hdr, CRYPT_DEFAULT_SEGMENT, vk); + if (digest >= 0) + flags &= ~CRYPT_VOLUME_KEY_SET; + else if (digest != -EPERM) /* Anything other than -EPERM suggests broken metadata. Abort */ + return digest; + } + /* * Drop CRYPT_VOLUME_KEY_DIGEST_REUSE flag if used without CRYPT_VOLUME_KEY_SET * or CRYPT_VOLUME_KEY_NO_SEGMENT flags. The standalone CRYPT_VOLUME_KEY_DIGEST_REUSE flag @@ -7414,31 +7423,22 @@ static int keyslot_add_by_key(struct crypt_device *cd, if (!flags) return luks2_keyslot_add_by_volume_key(cd, keyslot_new, new_passphrase, new_passphrase_size, vk); - digest = LUKS2_digest_verify_by_segment(cd, &cd->u.luks2.hdr, CRYPT_DEFAULT_SEGMENT, vk); - if (digest >= 0) /* if key matches volume key digest tear down new vk flag */ - flags &= ~CRYPT_VOLUME_KEY_SET; - else if (digest == -EPERM) { - /* if key matches any existing digest, do not create new digest */ - if ((flags & CRYPT_VOLUME_KEY_DIGEST_REUSE)) - digest = LUKS2_digest_verify_by_any_matching(cd, vk, /* exclude_default_segment= */ false); - - /* Anything other than -EPERM or -ENOENT suggests broken metadata. Abort */ - if (digest < 0 && digest != -ENOENT && digest != -EPERM) - return digest; + digest = -ENOENT; + /* check if passed key matches any existing unbound digest */ + if (flags & CRYPT_VOLUME_KEY_DIGEST_REUSE) + digest = LUKS2_digest_verify_by_any_matching(cd, vk, /* exclude_default_segment= */ true); - /* no segment flag or new vk flag requires new key digest */ - if (flags & (CRYPT_VOLUME_KEY_NO_SEGMENT | CRYPT_VOLUME_KEY_SET)) { - if (digest < 0 || !(flags & CRYPT_VOLUME_KEY_DIGEST_REUSE)) - digest = LUKS2_digest_create(cd, "pbkdf2", &cd->u.luks2.hdr, vk); - } - } else /* Anything other than -EPERM suggests broken metadata. Abort */ + /* Anything other than -EPERM or -ENOENT suggests broken metadata. Abort */ + if (digest < 0 && digest != -ENOENT && digest != -EPERM) return digest; + /* no segment flag or new vk flag requires new key digest */ + if (digest < 0 && (flags & (CRYPT_VOLUME_KEY_NO_SEGMENT | CRYPT_VOLUME_KEY_SET))) + digest = LUKS2_digest_create(cd, "pbkdf2", &cd->u.luks2.hdr, vk); + r = digest; - if (r < 0) { - log_err(cd, _("Volume key does not match the volume.")); + if (r < 0) return r; - } crypt_volume_key_set_id(vk, digest); From 276ecb5f1e9907be715b1ff2259cac5144611e0e Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Tue, 5 May 2026 14:32:18 +0200 Subject: [PATCH 116/244] Refactor digest verification functions. --- lib/luks2/luks2_digest.c | 53 ++++++++++++++++++++++++++++++---------- 1 file changed, 40 insertions(+), 13 deletions(-) diff --git a/lib/luks2/luks2_digest.c b/lib/luks2/luks2_digest.c index 8429c912e..f72dabdfa 100644 --- a/lib/luks2/luks2_digest.c +++ b/lib/luks2/luks2_digest.c @@ -97,17 +97,13 @@ int LUKS2_digest_by_keyslot(struct luks2_hdr *hdr, int keyslot) return -ENOENT; } -int LUKS2_digest_verify_by_digest(struct crypt_device *cd, +static int digest_verify(struct crypt_device *cd, + const digest_handler *h, int digest, const struct volume_key *vk) { - const digest_handler *h; int r; - h = LUKS2_digest_handler(cd, digest); - if (!h) - return -EINVAL; - r = h->verify(cd, digest, crypt_volume_key_get_key(vk), crypt_volume_key_length(vk)); if (r < 0) { log_dbg(cd, "Digest %d (%s) verify failed with %d.", digest, h->name, r); @@ -117,20 +113,46 @@ int LUKS2_digest_verify_by_digest(struct crypt_device *cd, return digest; } -int LUKS2_digest_verify(struct crypt_device *cd, +int LUKS2_digest_verify_by_digest(struct crypt_device *cd, + int digest, + const struct volume_key *vk) +{ + const digest_handler *h; + + h = LUKS2_digest_handler(cd, digest); + if (!h) + return -EINVAL; + + return digest_verify(cd, h, digest, vk); +} + +static int digest_verify_by_keyslot(struct crypt_device *cd, struct luks2_hdr *hdr, const struct volume_key *vk, int keyslot) { + const digest_handler *h; int digest; digest = LUKS2_digest_by_keyslot(hdr, keyslot); if (digest < 0) return digest; + h = LUKS2_digest_handler(cd, digest); + if (!h) + return -EINVAL; + log_dbg(cd, "Verifying key from keyslot %d, digest %d.", keyslot, digest); - return LUKS2_digest_verify_by_digest(cd, digest, vk); + return digest_verify(cd, h, digest, vk); +} + +int LUKS2_digest_verify(struct crypt_device *cd, + struct luks2_hdr *hdr, + const struct volume_key *vk, + int keyslot) +{ + return digest_verify_by_keyslot(cd, hdr, vk, keyslot); } int LUKS2_digest_dump(struct crypt_device *cd, int digest) @@ -166,7 +188,8 @@ int LUKS2_digest_verify_by_segment(struct crypt_device *cd, int segment, const struct volume_key *vk) { - int r; + const digest_handler *h; + int digest, r; unsigned s; if (segment == CRYPT_ANY_SEGMENT) { @@ -178,11 +201,15 @@ int LUKS2_digest_verify_by_segment(struct crypt_device *cd, return -EPERM; } - r = LUKS2_digest_by_segment(hdr, segment); - if (r < 0) - return r; + digest = LUKS2_digest_by_segment(hdr, segment); + if (digest < 0) + return digest; + + h = LUKS2_digest_handler(cd, digest); + if (!h) + return -EINVAL; - return LUKS2_digest_verify_by_digest(cd, r, vk); + return digest_verify(cd, h, digest, vk); } /* FIXME: segment can have more digests */ From d8d0e3cb0a1ccc8b6e23796af359e5bc0bcf93a3 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Tue, 5 May 2026 14:34:01 +0200 Subject: [PATCH 117/244] Minor cleanup in LUKS2_digest_verify_by_segment. --- lib/luks2/luks2_digest.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/luks2/luks2_digest.c b/lib/luks2/luks2_digest.c index f72dabdfa..a098dfea3 100644 --- a/lib/luks2/luks2_digest.c +++ b/lib/luks2/luks2_digest.c @@ -194,7 +194,7 @@ int LUKS2_digest_verify_by_segment(struct crypt_device *cd, if (segment == CRYPT_ANY_SEGMENT) { for (s = 0; s < json_segments_count(LUKS2_get_segments_jobj(hdr)); s++) { - if ((r = LUKS2_digest_verify_by_digest(cd, LUKS2_digest_by_segment(hdr, s), vk)) >= 0) + if ((r = LUKS2_digest_verify_by_segment(cd, hdr, s, vk)) >= 0) return r; } From af75260f0e26dd38a27dc636793c665c6d9dcbd1 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Tue, 5 May 2026 14:39:37 +0200 Subject: [PATCH 118/244] Add LUKS2_get_volume_key_size_by_digest helper. The function returns expected key size based on digest the candidate key would be verified against. If there's no keyslot associated with the digest, the function returns -ENOENT. --- lib/luks2/luks2_internal.h | 2 ++ lib/luks2/luks2_json_metadata.c | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/lib/luks2/luks2_internal.h b/lib/luks2/luks2_internal.h index 1cdc1d236..77838d141 100644 --- a/lib/luks2/luks2_internal.h +++ b/lib/luks2/luks2_internal.h @@ -363,6 +363,8 @@ int LUKS2_last_segment_by_type(struct luks2_hdr *hdr, int LUKS2_get_default_segment(struct luks2_hdr *hdr); +int LUKS2_get_volume_key_size_by_digest(struct luks2_hdr *hdr, int digest); + int LUKS2_reencrypt_digest_new(struct luks2_hdr *hdr); int LUKS2_reencrypt_digest_old(struct luks2_hdr *hdr); int LUKS2_reencrypt_segment_new(struct luks2_hdr *hdr); diff --git a/lib/luks2/luks2_json_metadata.c b/lib/luks2/luks2_json_metadata.c index 79ba37ba8..792d961ad 100644 --- a/lib/luks2/luks2_json_metadata.c +++ b/lib/luks2/luks2_json_metadata.c @@ -2452,6 +2452,24 @@ int LUKS2_get_keyslot_stored_key_size(struct luks2_hdr *hdr, int keyslot) return LUKS2_keyslot_get_volume_key_size(hdr, keyslot_name); } +int LUKS2_get_volume_key_size_by_digest(struct luks2_hdr *hdr, int digest) +{ + json_object *jobj_digest, *jobj_digest_keyslots; + + jobj_digest = LUKS2_get_digest_jobj(hdr, digest); + if (!jobj_digest) + return -ENOENT; + + if (!json_object_object_get_ex(jobj_digest, "keyslots", &jobj_digest_keyslots)) + return -EINVAL; + + if (json_object_array_length(jobj_digest_keyslots) <= 0) + return -ENOENT; + + return LUKS2_keyslot_get_volume_key_size(hdr, + json_object_get_string(json_object_array_get_idx(jobj_digest_keyslots, 0))); +} + int LUKS2_get_volume_key_size(struct luks2_hdr *hdr, int segment) { json_object *jobj_digests, *jobj_digest_segments, *jobj_digest_keyslots, *jobj1; From cb63f5cf847684f2f48012cfe80e21360e4abb19 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Tue, 5 May 2026 14:45:16 +0200 Subject: [PATCH 119/244] Verify key size before digest verification. Verify expected volume key size before digest verification. This is a best-effort measure to avoid false matches for truncated candidate keys when the actual volume key has trailing zero bytes. With HMAC, if the truncated candidate key is missing exactly the same number of bytes from the end as the genuine volume key has in trailing zero bytes, digest verification of the truncated candidate key will incorrectly succeed. This is because HMAC pads messages shorter than the hash internal block size with zeroes, so the truncated candidate key gets padded with the same zeroes before entering the HMAC digest. Unfortunately, this issue cannot be fully suppressed in LUKS2 when the proper volume key size is unknown. This happens when the LUKS2 header contains no keyslots and the volume key size information is missing. In that case, false matches with truncated candidate keys can still occur. --- lib/luks1/keymanage.c | 3 ++ lib/luks2/luks2_digest.c | 57 ++++++++++++++++++++++++++---- lib/luks2/luks2_internal.h | 5 +++ lib/luks2/luks2_reencrypt_digest.c | 3 +- 4 files changed, 60 insertions(+), 8 deletions(-) diff --git a/lib/luks1/keymanage.c b/lib/luks1/keymanage.c index 37929810b..e08a3a5bc 100644 --- a/lib/luks1/keymanage.c +++ b/lib/luks1/keymanage.c @@ -991,6 +991,9 @@ int LUKS_verify_volume_key(const struct luks_phdr *hdr, if (crypt_backend_memeq(checkHashBuf, hdr->mkDigest, LUKS_DIGESTSIZE)) return -EPERM; + if (hdr->keyBytes != crypt_volume_key_length(vk)) + return -EPERM; + return 0; } diff --git a/lib/luks2/luks2_digest.c b/lib/luks2/luks2_digest.c index a098dfea3..2ced2c601 100644 --- a/lib/luks2/luks2_digest.c +++ b/lib/luks2/luks2_digest.c @@ -118,21 +118,32 @@ int LUKS2_digest_verify_by_digest(struct crypt_device *cd, const struct volume_key *vk) { const digest_handler *h; + int key_size, r; h = LUKS2_digest_handler(cd, digest); if (!h) return -EINVAL; - return digest_verify(cd, h, digest, vk); + r = digest_verify(cd, h, digest, vk); + if (r < 0) + return r; + + key_size = LUKS2_get_volume_key_size_by_digest(crypt_get_hdr(cd, CRYPT_LUKS2), digest); + + if (key_size > 0 && (size_t)key_size != crypt_volume_key_length(vk)) + return -EPERM; + + return r; } static int digest_verify_by_keyslot(struct crypt_device *cd, struct luks2_hdr *hdr, const struct volume_key *vk, - int keyslot) + int keyslot, + bool check_key_size) { const digest_handler *h; - int digest; + int digest, key_size, r; digest = LUKS2_digest_by_keyslot(hdr, keyslot); if (digest < 0) @@ -144,7 +155,18 @@ static int digest_verify_by_keyslot(struct crypt_device *cd, log_dbg(cd, "Verifying key from keyslot %d, digest %d.", keyslot, digest); - return digest_verify(cd, h, digest, vk); + r = digest_verify(cd, h, digest, vk); + if (r < 0 || !check_key_size) + return r; + + key_size = LUKS2_get_keyslot_stored_key_size(hdr, keyslot); + if (key_size < 0) + return -EINVAL; + + if ((size_t)key_size != crypt_volume_key_length(vk)) + return -EPERM; + + return r; } int LUKS2_digest_verify(struct crypt_device *cd, @@ -152,7 +174,15 @@ int LUKS2_digest_verify(struct crypt_device *cd, const struct volume_key *vk, int keyslot) { - return digest_verify_by_keyslot(cd, hdr, vk, keyslot); + return digest_verify_by_keyslot(cd, hdr, vk, keyslot, /* check_key_size= */ true); +} + +int LUKS2_reencrypt_keyslot_digest_verify(struct crypt_device *cd, + struct luks2_hdr *hdr, + const struct volume_key *vk, + int keyslot) +{ + return digest_verify_by_keyslot(cd, hdr, vk, keyslot, /* check_key_size= */ false); } int LUKS2_digest_dump(struct crypt_device *cd, int digest) @@ -189,7 +219,7 @@ int LUKS2_digest_verify_by_segment(struct crypt_device *cd, const struct volume_key *vk) { const digest_handler *h; - int digest, r; + int digest, key_size, r; unsigned s; if (segment == CRYPT_ANY_SEGMENT) { @@ -209,7 +239,20 @@ int LUKS2_digest_verify_by_segment(struct crypt_device *cd, if (!h) return -EINVAL; - return digest_verify(cd, h, digest, vk); + r = digest_verify(cd, h, digest, vk); + if (r < 0) + return r; + + if (segment == CRYPT_DEFAULT_SEGMENT) + /* use default segment key size or fallback to the cached key size */ + key_size = crypt_get_volume_key_size(cd); + else + key_size = LUKS2_get_volume_key_size(hdr, segment); + + if (key_size > 0 && (size_t)key_size != crypt_volume_key_length(vk)) + return -EPERM; + + return r; } /* FIXME: segment can have more digests */ diff --git a/lib/luks2/luks2_internal.h b/lib/luks2/luks2_internal.h index 77838d141..2603f0ea0 100644 --- a/lib/luks2/luks2_internal.h +++ b/lib/luks2/luks2_internal.h @@ -386,6 +386,11 @@ int LUKS2_digest_verify_by_digest(struct crypt_device *cd, int digest, const struct volume_key *vk); +int LUKS2_reencrypt_keyslot_digest_verify(struct crypt_device *cd, + struct luks2_hdr *hdr, + const struct volume_key *vk, + int keyslot); + void LUKS2_digests_erase_unused(struct crypt_device *cd, struct luks2_hdr *hdr); diff --git a/lib/luks2/luks2_reencrypt_digest.c b/lib/luks2/luks2_reencrypt_digest.c index 9db88a483..6dd7a1478 100644 --- a/lib/luks2/luks2_reencrypt_digest.c +++ b/lib/luks2/luks2_reencrypt_digest.c @@ -392,7 +392,8 @@ int LUKS2_reencrypt_digest_verify(struct crypt_device *cd, if (r < 0) return r; - r = LUKS2_digest_verify(cd, hdr, data, keyslot_reencrypt); + /* We can not check key size since reencryption keyslot contains bogus key_size=1 */ + r = LUKS2_reencrypt_keyslot_digest_verify(cd, hdr, data, keyslot_reencrypt); crypt_free_volume_key(data); if (r < 0) { From 04dc3fff85d5bcd8e4c968d98792d82a8aa070ef Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Tue, 5 May 2026 15:07:35 +0200 Subject: [PATCH 120/244] tests: drop cached volume key before reencryption. --- tests/api-test-2.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/api-test-2.c b/tests/api-test-2.c index ed5375903..ee17e91d4 100644 --- a/tests/api-test-2.c +++ b/tests/api-test-2.c @@ -5161,6 +5161,11 @@ static void Luks2Reencryption(void) OK_(crypt_format(cd, CRYPT_LUKS2, "aes", "cbc-essiv:sha256", NULL, key, key_size, &(struct crypt_params_luks2){ .sector_size = 512 })); OK_(crypt_set_pbkdf_type(cd, &pbkdf)); EQ_(crypt_keyslot_add_by_volume_key(cd, 21, key, key_size, PASSPHRASE, strlen(PASSPHRASE)), 21); + /* FIXME: We have to drop cached volume key from cd handle before/during any + * crypt_reencrypt_init* function */ + CRYPT_FREE(cd); + OK_(crypt_init(&cd, DMDIR L_DEVICE_OK)); + OK_(crypt_load(cd, CRYPT_LUKS2, NULL)); /* add unbound key */ EQ_(crypt_keyslot_add_by_key(cd, 12, key2, key_size2, PASSPHRASE1, strlen(PASSPHRASE1), CRYPT_VOLUME_KEY_NO_SEGMENT), 12); From 8dcf4eb19561982526155993ce514f00698f3897 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Tue, 5 May 2026 15:59:52 +0200 Subject: [PATCH 121/244] Revert "tests: add temporary debug output." The bug was identified and the debug helper is no longer needed. This reverts commit 3676b8d6c5c451bf99552f0ce04257ad7a0cfb90. --- tests/luks2-reencryption-test | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/tests/luks2-reencryption-test b/tests/luks2-reencryption-test index 28a26f51d..f277483e8 100755 --- a/tests/luks2-reencryption-test +++ b/tests/luks2-reencryption-test @@ -2950,16 +2950,8 @@ $CRYPTSETUP close $DEV_NAME || fail reformat_reencrypt_device $CRYPTSETUP -q luksErase $DEV || fail -# run the test with additional debug output -echo "Key before truncate:" -keyctl describe %user:$KEY_NAME_VK2 -keyctl print %user:$KEY_NAME_VK2 head -c 63 $VKEY2 | keyctl padd user $KEY_NAME_VK2 %:$KEYRING > /dev/null || fail -echo "Key after truncate:" -keyctl describe %user:$KEY_NAME_VK2 -keyctl print %user:$KEY_NAME_VK2 -$CRYPTSETUP -q reencrypt --init-only --volume-key-keyring $KEY_NAME_VK2 --new-volume-key-keyring $KEY_NAME_VK1 $DEV --debug <&- && fail -#$CRYPTSETUP -q reencrypt --init-only --volume-key-keyring $KEY_NAME_VK2 --new-volume-key-keyring $KEY_NAME_VK1 $DEV <&- 2>/dev/null && fail +$CRYPTSETUP -q reencrypt --init-only --volume-key-keyring $KEY_NAME_VK2 --new-volume-key-keyring $KEY_NAME_VK1 $DEV <&- 2>/dev/null && fail $CRYPTSETUP luksDump $DEV | grep -q "online-reencrypt" && fail "Failed initialization with reencryption flag" head -c 64 $VKEY2 | keyctl padd user $KEY_NAME_VK2 %:$KEYRING > /dev/null || fail From 382e3003398e12faea041db2bf4954da3c573c4b Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Tue, 5 May 2026 16:03:59 +0200 Subject: [PATCH 122/244] tests: leave at least one keyslot to verify key size. --- tests/luks2-reencryption-test | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tests/luks2-reencryption-test b/tests/luks2-reencryption-test index f277483e8..5a8fe68ae 100755 --- a/tests/luks2-reencryption-test +++ b/tests/luks2-reencryption-test @@ -2948,7 +2948,12 @@ $CRYPTSETUP close $DEV_NAME || fail # test b0rked kernel keys reformat_reencrypt_device -$CRYPTSETUP -q luksErase $DEV || fail +# erase all but one keyslot so that we verify original volume key size +$CRYPTSETUP luksKillSlot -q $DEV 4 || fail +$CRYPTSETUP luksKillSlot -q $DEV 6 || fail +$CRYPTSETUP luksKillSlot -q $DEV 8 || fail +$CRYPTSETUP luksKillSlot -q $DEV 10 || fail +$CRYPTSETUP luksKillSlot -q $DEV 12 || fail head -c 63 $VKEY2 | keyctl padd user $KEY_NAME_VK2 %:$KEYRING > /dev/null || fail $CRYPTSETUP -q reencrypt --init-only --volume-key-keyring $KEY_NAME_VK2 --new-volume-key-keyring $KEY_NAME_VK1 $DEV <&- 2>/dev/null && fail From 3da919f8509761ce808ca08c4dc90e960b396997 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Mon, 11 May 2026 17:23:20 +0200 Subject: [PATCH 123/244] tests: test truncated keys with trailing zero byte(s). It tests hardening for pbkdf2(hmac-sha256) digest verification in LUKS for keys (hmac input message) shorter than the hash internal block size. Any shorter message is padded with zeroes (up to internal block hash size) before the digest is calculated. --- tests/api-test-2.c | 144 +++++++++++++++++++++++++++++++++++++++++++++ tests/api-test.c | 80 +++++++++++++++++++++++++ tests/compat-test | 40 ++++++++++++- tests/compat-test2 | 46 ++++++++++++++- 4 files changed, 308 insertions(+), 2 deletions(-) diff --git a/tests/api-test-2.c b/tests/api-test-2.c index ee17e91d4..34525f978 100644 --- a/tests/api-test-2.c +++ b/tests/api-test-2.c @@ -6067,6 +6067,149 @@ static void KeyslotContextAndKeyringLink(void) #endif } +static void TruncatedKeys(void) +{ + char key[64], key2[64], key3[64], key4[64]; + const char *passphrase = PASSPHRASE; + + /* test key with trailing zero bytes susceptible to padding conflict in pbkdf2(hmac) */ + const char *vk_hex = "bb21158c733229347bd4e681891e213d94c685be6a5b84818afe7a78a6de7a00"; + const char *vk_hex2 = "bb21158c733229347bd4e681891e213d00000000000000000000000000000000"; + + const char *vk_hex3 = "8ca7689d9d422cd87f86b18cbb6aa834a632e8d74a43ccfd86415bb9c65979c3" \ + "2636b79b74458807fffbda615f6fe5d5deeefef5c890879d66fc6b5ce1105d00"; + const char *vk_hex4 = "8ca7689d9d422cd87f86b18cbb6aa834a632e8d74a43ccfd86415bb9c65979c3" \ + "0000000000000000000000000000000000000000000000000000000000000000"; + size_t key_size = strlen(vk_hex) / 2, key_size2 = strlen(vk_hex3) / 2; + const char *cipher = "aes"; + const char *cbc_mode = "cbc-essiv:sha256", *xts_mode = "xts-plain64"; + uint64_t r_payload_offset; + + OK_(crypt_decode_key(key, vk_hex, key_size)); + OK_(crypt_decode_key(key2, vk_hex2, key_size)); + OK_(crypt_decode_key(key3, vk_hex3, key_size2)); + OK_(crypt_decode_key(key4, vk_hex4, key_size2)); + + // init test devices + OK_(get_luks2_offsets(0, 0, 0, NULL, &r_payload_offset)); + OK_(create_dmdevice_over_loop(H_DEVICE, r_payload_offset + 1)); + + // cbc mode + // format with trailing zero byte key + OK_(crypt_init(&cd, DMDIR H_DEVICE)); + OK_(set_fast_pbkdf(cd)); + OK_(crypt_format(cd, CRYPT_LUKS2, cipher, cbc_mode, NULL, key, key_size, NULL)); + // the truncated key (cut off zero byte) must not pass verification + FAIL_(crypt_volume_key_verify(cd, key, key_size - 1), "Key does not match the volume."); + FAIL_(crypt_keyslot_add_by_volume_key(cd, CRYPT_ANY_SLOT, key, key_size - 1, passphrase, strlen(passphrase)), "Key does not match the volume."); + // add keyslot so LUKS2 can verify key size properly later + EQ_(crypt_keyslot_add_by_volume_key(cd, 0, key, key_size, passphrase, strlen(passphrase)), 0); + // no need to test activation since AES will not accept short keys + CRYPT_FREE(cd); + + // test again with cached volume key dropped + OK_(crypt_init(&cd, DMDIR H_DEVICE)); + OK_(crypt_load(cd, CRYPT_LUKS2, NULL)); + FAIL_(crypt_volume_key_verify(cd, key, key_size - 1), "Key does not match the volume."); + FAIL_(crypt_keyslot_add_by_volume_key(cd, CRYPT_ANY_SLOT, key, key_size - 1, passphrase, strlen(passphrase)), "Key does not match the volume."); + CRYPT_FREE(cd); + + // format device with zeroed second half of the key + OK_(crypt_init(&cd, DMDIR H_DEVICE)); + OK_(set_fast_pbkdf(cd)); + OK_(crypt_format(cd, CRYPT_LUKS2, cipher, cbc_mode, NULL, key2, key_size, NULL)); + FAIL_(crypt_volume_key_verify(cd, key2, key_size / 2), "Key does not match the volume."); + FAIL_(crypt_keyslot_add_by_volume_key(cd, CRYPT_ANY_SLOT, key2, key_size / 2, passphrase, strlen(passphrase)), "Key does not match the volume."); + // activation must fail, we test with 128 bits AES key (the original key was 256 bits) + FAIL_(crypt_activate_by_volume_key(cd, CDEVICE_1, key2, key_size / 2, 0), "Key does not match the volume."); + EQ_(crypt_keyslot_add_by_volume_key(cd, 0, key2, key_size, passphrase, strlen(passphrase)), 0); + CRYPT_FREE(cd); + + // test again with cached volume key dropped + OK_(crypt_init(&cd, DMDIR H_DEVICE)); + OK_(crypt_load(cd, CRYPT_LUKS2, NULL)); + FAIL_(crypt_volume_key_verify(cd, key2, key_size / 2), "Key does not match the volume."); + FAIL_(crypt_keyslot_add_by_volume_key(cd, CRYPT_ANY_SLOT, key2, key_size / 2, passphrase, strlen(passphrase)), "Key does not match the volume."); + // activation must fail, we test with 128 bits AES key (the original key was 256 bits) + FAIL_(crypt_activate_by_volume_key(cd, CDEVICE_1, key2, key_size / 2, 0), "Key does not match the volume."); + CRYPT_FREE(cd); + + // xts mode + // format with trailing zero byte key + OK_(crypt_init(&cd, DMDIR H_DEVICE)); + OK_(set_fast_pbkdf(cd)); + OK_(crypt_format(cd, CRYPT_LUKS2, cipher, xts_mode, NULL, key3, key_size2, NULL)); + // the truncated key (cut off zero byte) must not pass verification + FAIL_(crypt_volume_key_verify(cd, key3, key_size2 - 1), "Key does not match the volume."); + FAIL_(crypt_keyslot_add_by_volume_key(cd, CRYPT_ANY_SLOT, key3, key_size2 - 1, passphrase, strlen(passphrase)), "Key does not match the volume."); + // add keyslot so LUKS2 can verify key size properly later + EQ_(crypt_keyslot_add_by_volume_key(cd, 0, key3, key_size2, passphrase, strlen(passphrase)), 0); + // no need to test activation since AES will not accept short keys + CRYPT_FREE(cd); + + // test again with cached volume key dropped + OK_(crypt_init(&cd, DMDIR H_DEVICE)); + OK_(crypt_load(cd, CRYPT_LUKS2, NULL)); + FAIL_(crypt_volume_key_verify(cd, key3, key_size2 - 1), "Key does not match the volume."); + FAIL_(crypt_keyslot_add_by_volume_key(cd, CRYPT_ANY_SLOT, key3, key_size2 - 1, passphrase, strlen(passphrase)), "Key does not match the volume."); + CRYPT_FREE(cd); + + // format device with zeroed second half of the key + OK_(crypt_init(&cd, DMDIR H_DEVICE)); + OK_(set_fast_pbkdf(cd)); + OK_(crypt_format(cd, CRYPT_LUKS2, cipher, xts_mode, NULL, key4, key_size2, NULL)); + FAIL_(crypt_volume_key_verify(cd, key4, key_size2 / 2), "Key does not match the volume."); + FAIL_(crypt_keyslot_add_by_volume_key(cd, CRYPT_ANY_SLOT, key4, key_size2 / 2, passphrase, strlen(passphrase)), "Key does not match the volume."); + // activation must fail, we test with (doubled for xts) 128 bits AES key (the original key was 256 bits) + FAIL_(crypt_activate_by_volume_key(cd, CDEVICE_1, key4, key_size2 / 2, 0), "Key does not match the volume."); + EQ_(crypt_keyslot_add_by_volume_key(cd, 0, key4, key_size2, passphrase, strlen(passphrase)), 0); + CRYPT_FREE(cd); + + // test again with cached volume key dropped + OK_(crypt_init(&cd, DMDIR H_DEVICE)); + OK_(crypt_load(cd, CRYPT_LUKS2, NULL)); + FAIL_(crypt_volume_key_verify(cd, key4, key_size2 / 2), "Key does not match the volume."); + FAIL_(crypt_keyslot_add_by_volume_key(cd, CRYPT_ANY_SLOT, key4, key_size2 / 2, passphrase, strlen(passphrase)), "Key does not match the volume."); + // activation must fail, we test with (doubled for xts) 128 bits AES key (the original key was 256 bits) + FAIL_(crypt_activate_by_volume_key(cd, CDEVICE_1, key4, key_size2 / 2, 0), "Key does not match the volume."); + CRYPT_FREE(cd); + + // check unbound key verification + OK_(crypt_init(&cd, DMDIR H_DEVICE)); + OK_(set_fast_pbkdf(cd)); + OK_(crypt_format(cd, CRYPT_LUKS2, cipher, xts_mode, NULL, key3, key_size2, NULL)); + // keyslot must always be unbound if created with CRYPT_VOLUME_KEY_NO_SEGMENT + EQ_(crypt_keyslot_add_by_key(cd, 1, key3, key_size2 - 1, passphrase, strlen(passphrase), CRYPT_VOLUME_KEY_NO_SEGMENT), 1); + EQ_(crypt_keyslot_status(cd, 1), CRYPT_SLOT_UNBOUND); + FAIL_(crypt_activate_by_passphrase(cd, CDEVICE_1, 1, passphrase, strlen(passphrase), 0), "Keyslot unusable for device activation."); + CRYPT_FREE(cd); + + // check unbound key verification with CRYPT_VOLUME_KEY_DIGEST_REUSE + OK_(crypt_init(&cd, DMDIR H_DEVICE)); + OK_(set_fast_pbkdf(cd)); + OK_(crypt_format(cd, CRYPT_LUKS2, cipher, xts_mode, NULL, key4, key_size2, NULL)); + // drop cached volume key + CRYPT_FREE(cd); + OK_(crypt_init(&cd, DMDIR H_DEVICE)); + OK_(crypt_load(cd, CRYPT_LUKS2, NULL)); + EQ_(crypt_keyslot_add_by_key(cd, 0, key4, key_size2 - 1, passphrase, strlen(passphrase), CRYPT_VOLUME_KEY_NO_SEGMENT), 0); + EQ_(crypt_keyslot_add_by_key(cd, 1, key4, key_size2 - 2, passphrase, strlen(passphrase), CRYPT_VOLUME_KEY_NO_SEGMENT | CRYPT_VOLUME_KEY_DIGEST_REUSE), 1); + /* it must not reuse default segment digest */ + EQ_(crypt_keyslot_status(cd, 1), CRYPT_SLOT_UNBOUND); + FAIL_(crypt_activate_by_passphrase(cd, CDEVICE_1, 1, passphrase, strlen(passphrase), 0), "Keyslot unusable for device activation."); + EQ_(crypt_keyslot_add_by_key(cd, 2, key4, key_size2 - 3, passphrase, strlen(passphrase), CRYPT_VOLUME_KEY_NO_SEGMENT | CRYPT_VOLUME_KEY_DIGEST_REUSE), 2); + EQ_(crypt_keyslot_add_by_key(cd, 3, key4, key_size2 - 4, passphrase, strlen(passphrase), CRYPT_VOLUME_KEY_NO_SEGMENT | CRYPT_VOLUME_KEY_DIGEST_REUSE), 3); + EQ_(crypt_keyslot_add_by_key(cd, 4, key4, key_size2 - 5, passphrase, strlen(passphrase), CRYPT_VOLUME_KEY_NO_SEGMENT | CRYPT_VOLUME_KEY_DIGEST_REUSE), 4); + EQ_(crypt_keyslot_add_by_key(cd, 5, key4, key_size2 - 6, passphrase, strlen(passphrase), CRYPT_VOLUME_KEY_NO_SEGMENT | CRYPT_VOLUME_KEY_DIGEST_REUSE), 5); + EQ_(crypt_keyslot_add_by_key(cd, 6, key4, key_size2 - 7, passphrase, strlen(passphrase), CRYPT_VOLUME_KEY_NO_SEGMENT | CRYPT_VOLUME_KEY_DIGEST_REUSE), 6); + // It must run out of free digests by now + FAIL_(crypt_keyslot_add_by_key(cd, 7, key4, key_size2 - 8, passphrase, strlen(passphrase), CRYPT_VOLUME_KEY_NO_SEGMENT | CRYPT_VOLUME_KEY_DIGEST_REUSE), "No free digest slot."); + CRYPT_FREE(cd); + + _remove_keyfiles(); + _cleanup_dmdevices(); +} + static int _crypt_load_check(struct crypt_device *_cd) { #if HAVE_BLKID @@ -6195,6 +6338,7 @@ int main(int argc, char *argv[]) RUN_(LuksKeyslotAdd, "Adding keyslot via new API"); RUN_(VolumeKeyGet, "Getting volume key via keyslot context API"); RUN_(KeyslotContextAndKeyringLink, "Activate via keyslot context API and linking VK to a keyring"); + RUN_(TruncatedKeys, "Test truncated candidate keys."); RUN_(Luks2Repair, "LUKS2 repair"); // test disables metadata locking. Run always last! _cleanup(); diff --git a/tests/api-test.c b/tests/api-test.c index 9b31c286a..fe8bcfc39 100644 --- a/tests/api-test.c +++ b/tests/api-test.c @@ -2373,6 +2373,85 @@ static void VolumeKeyGet(void) _cleanup_dmdevices(); } +static void TruncatedKeys(void) +{ + enum { OFFSET_1M = 2048 }; + struct crypt_params_luks1 params = { + .hash = "sha256", + .data_alignment = OFFSET_1M, // 4M, data offset will be 4096 + }; + const struct crypt_pbkdf_type fast_pbkdf = { + .type = "pbkdf2", + .hash = "sha256", + .iterations = 1000, + .flags = CRYPT_PBKDF_NO_BENCHMARK + }; + char key[64], key2[64]; + + const char *passphrase = PASSPHRASE; + + /* test key with trailing zero bytes susceptible to padding conflict in pbkdf2(hmac) */ + const char *vk_hex = "bb21158c733229347bd4e681891e213d94c685be6a5b84818afe7a78a6de7a00"; + const char *vk_hex2 = "bb21158c733229347bd4e681891e213d00000000000000000000000000000000"; + size_t key_size = strlen(vk_hex) / 2; + const char *cipher = "aes"; + const char *cipher_mode = "cbc-essiv:sha256"; + uint64_t r_payload_offset, r_header_size; + + OK_(crypt_decode_key(key, vk_hex, key_size)); + OK_(crypt_decode_key(key2, vk_hex2, key_size)); + + // init test devices + OK_(get_luks_offsets(0, key_size, params.data_alignment, 0, &r_header_size, &r_payload_offset)); + OK_(create_dmdevice_over_loop(H_DEVICE, r_payload_offset + 1)); + + // format with key containing last trailing zero byte + OK_(crypt_init(&cd, DMDIR H_DEVICE)); + OK_(crypt_set_pbkdf_type(cd, &fast_pbkdf)); + OK_(crypt_format(cd, CRYPT_LUKS1, cipher, cipher_mode, NULL, key, key_size, ¶ms)); + // the truncated key (cut off zero byte) must not pass verification + FAIL_(crypt_volume_key_verify(cd, key, key_size - 1), "Key does not match the volume."); + FAIL_(crypt_keyslot_add_by_volume_key(cd, CRYPT_ANY_SLOT, key, key_size - 1, passphrase, strlen(passphrase)), "Key does not match the volume."); + CRYPT_FREE(cd); + + // same test as above, but with cached volume key dropped + OK_(crypt_init(&cd, DMDIR H_DEVICE)); + OK_(crypt_load(cd, CRYPT_LUKS1, NULL)); + // the truncated key (cut off zero byte) must not pass verification + FAIL_(crypt_volume_key_verify(cd, key, key_size - 1), "Key does not match the volume."); + FAIL_(crypt_keyslot_add_by_volume_key(cd, CRYPT_ANY_SLOT, key, key_size - 1, passphrase, strlen(passphrase)), "Key does not match the volume."); + // no need to test activation since AES will not accept short keys + CRYPT_FREE(cd); + + /* + * Format with key in second half containing only zero bytes. + * Due to hmac zero padding of messages shorter than internal hash block size, + * we could use only first half of the key, pass the verification and upload + * the key in dm-crypt successfully. We pass 128 bits instead of 256 bits used + * in crypt_format(). + */ + OK_(crypt_init(&cd, DMDIR H_DEVICE)); + OK_(crypt_set_pbkdf_type(cd, &fast_pbkdf)); + OK_(crypt_format(cd, CRYPT_LUKS1, cipher, cipher_mode, NULL, key2, key_size, ¶ms)); + // the truncated key (cut off zero byte) must not pass verification + FAIL_(crypt_volume_key_verify(cd, key2, key_size / 2), "Key does not match the volume."); + FAIL_(crypt_keyslot_add_by_volume_key(cd, CRYPT_ANY_SLOT, key2, key_size / 2, passphrase, strlen(passphrase)), "Key does not match the volume."); + // activation must fail + FAIL_(crypt_activate_by_volume_key(cd, CDEVICE_1, key2, key_size / 2, 0), "Key does not match the volume."); + CRYPT_FREE(cd); + + // same test as above, but with cached volume key dropped + OK_(crypt_init(&cd, DMDIR H_DEVICE)); + OK_(crypt_load(cd, CRYPT_LUKS1, NULL)); + FAIL_(crypt_volume_key_verify(cd, key2, key_size / 2), "Key does not match the volume."); + FAIL_(crypt_keyslot_add_by_volume_key(cd, CRYPT_ANY_SLOT, key2, key_size / 2, passphrase, strlen(passphrase)), "Key does not match the volume."); + FAIL_(crypt_activate_by_volume_key(cd, CDEVICE_1, key2, key_size / 2, 0), "Key does not match the volume."); + CRYPT_FREE(cd); + + _remove_keyfiles(); + _cleanup_dmdevices(); +} + // Check that gcrypt is properly initialised in format static void NonFIPSAlg(void) { @@ -2469,6 +2548,7 @@ int main(int argc, char *argv[]) RUN_(WipeTest, "Wipe device"); RUN_(LuksKeyslotAdd, "Adding keyslot via new API"); RUN_(VolumeKeyGet, "Getting volume key via keyslot context API"); + RUN_(TruncatedKeys, "Test truncated candidate keys."); _cleanup(); return 0; diff --git a/tests/compat-test b/tests/compat-test index ed7a0d23e..b70e5b8e9 100755 --- a/tests/compat-test +++ b/tests/compat-test @@ -24,6 +24,8 @@ KEY1=key1 KEY2=key2 KEY5=key5 KEYE=keye +KEY_TZERO=key_trailing_zero +KEY_HALF_ZERO=key_half_zeroes PWD0="compatkey" PWD1="93R4P4pIqAH8" PWD2="mymJeD8ivEhE" @@ -57,7 +59,7 @@ remove_mapping() [ -b /dev/mapper/$DEV_NAME2 ] && dmsetup remove --retry $DEV_NAME2 >/dev/null 2>&1 [ -b /dev/mapper/$DEV_NAME ] && dmsetup remove --retry $DEV_NAME >/dev/null 2>&1 losetup -d $LOOPDEV >/dev/null 2>&1 - rm -f $ORIG_IMG $IMG $IMG10 $KEY1 $KEY2 $KEY5 $KEYE $HEADER_IMG $VK_FILE missing-file >/dev/null 2>&1 + rm -f $ORIG_IMG $IMG $IMG10 $KEY1 $KEY2 $KEY5 $KEYE $KEY_TZERO $KEY_HALF_ZERO $HEADER_IMG $VK_FILE missing-file >/dev/null 2>&1 rmmod scsi_debug >/dev/null 2>&1 scsi_debug_teardown $DEV } @@ -137,6 +139,18 @@ prepare() echo -n $'\x9c\x03\x5e\x1b\x4d\x0f\x9a\x75\xb3\x90\x70\x32\x0a\xf8\xae\xc4'>>$KEY1 fi + if [ ! -e $KEY_TZERO ]; then + echo -ne '\xa6\x32\x09\x5f\xdb\xbe\xf3\xc6\xa7\x4c\xe5\x85\x73\xac\xa8\xfb' >$KEY_TZERO + echo -ne '\x09\xd4\x38\xfd\x58\x24\x17\x1b\x98\xa3\xef\x1e\xe4\x4b\xbc\x00'>>$KEY_TZERO + fi + + if [ ! -e $KEY_HALF_ZERO ]; then + echo -ne '\xa6\x32\x09\x5f\xdb\xbe\xf3\xc6\xa7\x4c\xe5\x85\x73\xac\xa8\xfb' >$KEY_HALF_ZERO + echo -ne '\x09\xd4\x38\xfd\x58\x24\x17\x1b\x98\xa3\xef\x1e\xe4\x4b\xbc\xc9'>>$KEY_HALF_ZERO + echo -ne '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'>>$KEY_HALF_ZERO + echo -ne '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'>>$KEY_HALF_ZERO + fi + if [ ! -e $KEY2 ]; then dd if=/dev/urandom of=$KEY2 count=1 bs=16 >/dev/null 2>&1 fi @@ -1158,5 +1172,29 @@ echo $PWD1 | $CRYPTSETUP luksFormat --type luks1 $FAST_PBKDF_OPT $LOOPDEV || fai echo $PWD1 | $CRYPTSETUP luksOpen $LOOPDEV $DM_BAD_NAME 2>/dev/null && fail echo $PWD1 | $CRYPTSETUP luksOpen $LOOPDEV $DM_LONG_NAME 2>/dev/null && fail +prepare "[41] Truncated keys." wipe +echo "$PWD1" | $CRYPTSETUP luksFormat -q --type luks1 $FAST_PBKDF_OPT --volume-key-file $KEY_TZERO -s256 $IMG || fail +$CRYPTSETUP open -q --test-passphrase $IMG --volume-key-file $KEY_TZERO -s248 2>/dev/null && fail +# cut the trailing zero byte +truncate -c -s 31 $KEY_TZERO || fail +echo $PWD3 | $CRYPTSETUP luksAddKey -q $FAST_PBKDF_OPT -S5 --volume-key-file $KEY_TZERO $IMG 2>/dev/null && fail +$CRYPTSETUP luksErase -q $IMG || fail +echo $PWD3 | $CRYPTSETUP luksAddKey -q $FAST_PBKDF_OPT -S5 --volume-key-file $KEY_TZERO $IMG 2>/dev/null && fail + +echo "$PWD1" | $CRYPTSETUP luksFormat -q --type luks1 $FAST_PBKDF_OPT --volume-key-file $KEY_HALF_ZERO -s512 $IMG || fail +$CRYPTSETUP open -q --test-passphrase $IMG --volume-key-file $KEY_HALF_ZERO -s496 2>/dev/null && fail +$CRYPTSETUP open -q --test-passphrase $IMG --volume-key-file $KEY_HALF_ZERO -s256 2>/dev/null && fail +# cut the trailing zero byte +truncate -c -s 63 $KEY_HALF_ZERO || fail +echo $PWD3 | $CRYPTSETUP luksAddKey -q $FAST_PBKDF_OPT -S5 --volume-key-file $KEY_HALF_ZERO $IMG 2>/dev/null && fail +# cut all remaining zero bytes down to 256bits key +truncate -c -s 32 $KEY_HALF_ZERO || fail +echo $PWD3 | $CRYPTSETUP luksAddKey -q $FAST_PBKDF_OPT -S5 --volume-key-file $KEY_HALF_ZERO $IMG 2>/dev/null && fail +$CRYPTSETUP luksErase -q $IMG || fail +truncate -c -s 63 $KEY_HALF_ZERO || fail +echo $PWD3 | $CRYPTSETUP luksAddKey -q $FAST_PBKDF_OPT -S5 --volume-key-file $KEY_HALF_ZERO $IMG 2>/dev/null && fail +truncate -c -s 32 $KEY_HALF_ZERO || fail +echo $PWD3 | $CRYPTSETUP luksAddKey -q $FAST_PBKDF_OPT -S5 --volume-key-file $KEY_HALF_ZERO $IMG 2>/dev/null && fail + remove_mapping exit 0 diff --git a/tests/compat-test2 b/tests/compat-test2 index 97cb68d34..9e74cc37d 100755 --- a/tests/compat-test2 +++ b/tests/compat-test2 @@ -26,6 +26,8 @@ KEY1=key1 KEY2=key2 KEY5=key5 KEYE=keye +KEY_TZERO=key_trailing_zero +KEY_HALF_ZERO=key_half_zeroes PWD0="compatkey" PWD1="93R4P4pIqAH8" PWD2="mymJeD8ivEhE" @@ -66,7 +68,7 @@ remove_mapping() [ -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 \ + rm -f $ORIG_IMG $IMG $IMG10 $KEY1 $KEY2 $KEY5 $KEYE $KEY_TZERO $KEY_HALF_ZERO $HEADER_IMG $HEADER_KEYU $VK_FILE \ $HEADER_LUKS2_PV $HEADER_LUKS2_INV missing-file $TOKEN_FILE0 $TOKEN_FILE1 test_image_* \ $KEY_FILE0 $KEY_FILE1 >/dev/null 2>&1 @@ -188,6 +190,18 @@ prepare() touch $KEYE fi + if [ ! -e $KEY_TZERO ]; then + echo -ne '\xa6\x32\x09\x5f\xdb\xbe\xf3\xc6\xa7\xac\xed\x85\x73\xac\xa8\xfb' >$KEY_TZERO + echo -ne '\x09\xd4\x38\xfd\x58\x24\x17\x1b\x98\xa3\xef\x1e\xe4\x4b\xbc\x00'>>$KEY_TZERO + fi + + if [ ! -e $KEY_HALF_ZERO ]; then + echo -ne '\xa6\x32\x09\x5f\xdb\xbe\xf3\xc6\xa7\xac\xed\x85\x73\xac\xa8\xfb' >$KEY_HALF_ZERO + echo -ne '\x09\xd4\x38\xfd\x58\x24\x17\x1b\x98\xa3\xef\x1e\xe4\x4b\xbc\xc9'>>$KEY_HALF_ZERO + echo -ne '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'>>$KEY_HALF_ZERO + echo -ne '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'>>$KEY_HALF_ZERO + fi + cp $IMG $ORIG_IMG [ -n "$1" ] && echo "CASE: $1" } @@ -1735,5 +1749,35 @@ if ! fips_mode -a -d $LUKS2_LOCKING_DIR; then test -f $LUKS2_LOCKING_DIR/$MEMORY_HARD_LOCK_FILE && fail "The --serialize-memory-hard-pbkdf option did not remove the locking file (did not use the file)." fi +prepare "[53] Truncated keys." wipe +echo "$PWD1" | $CRYPTSETUP luksFormat -q --type luks2 $FAST_PBKDF_OPT --volume-key-file $KEY_TZERO -s256 $LOOPDEV || fail +$CRYPTSETUP open -q --test-passphrase $LOOPDEV --volume-key-file $KEY_TZERO -s248 2>/dev/null && fail +# cut the trailing zero byte +truncate -c -s 31 $KEY_TZERO || fail +echo $PWD1 | $CRYPTSETUP luksAddKey -q $FAST_PBKDF_OPT --volume-key-file $KEY_TZERO $LOOPDEV 2>/dev/null && fail +echo $PWD3 | $CRYPTSETUP luksAddKey -q $FAST_PBKDF_OPT -S5 --unbound --volume-key-file $KEY_TZERO -s248 $LOOPDEV || fail +echo $PWD3 | $CRYPTSETUP open --test-passphrase -S5 $LOOPDEV || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "5: luks2 (unbound)" || fail + +# test (doubled) AES-256-XTS key with second half of the buffer with zero bytes +echo "$PWD1" | $CRYPTSETUP luksFormat -q --type luks2 $FAST_PBKDF_OPT --volume-key-file $KEY_HALF_ZERO -s512 $LOOPDEV || fail +$CRYPTSETUP open -q --test-passphrase $LOOPDEV --volume-key-file $KEY_HALF_ZERO -s504 2>/dev/null && fail +$CRYPTSETUP open -q --test-passphrase $LOOPDEV --volume-key-file $KEY_HALF_ZERO -s256 2>/dev/null && fail + +# cut the trailing zero byte +truncate -c -s 63 $KEY_HALF_ZERO || fail +echo $PWD2 | $CRYPTSETUP luksAddKey -q $FAST_PBKDF_OPT --volume-key-file $KEY_HALF_ZERO $LOOPDEV 2>/dev/null && fail +echo $PWD2 | $CRYPTSETUP luksAddKey -q $FAST_PBKDF_OPT -S5 --unbound --volume-key-file $KEY_HALF_ZERO -s504 $LOOPDEV || fail +echo $PWD2 | $CRYPTSETUP open --test-passphrase -S5 $LOOPDEV || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "5: luks2 (unbound)" || fail + +# truncate entire zeroed part +truncate -c -s 32 $KEY_HALF_ZERO || fail +echo $PWD2 | $CRYPTSETUP luksAddKey -q $FAST_PBKDF_OPT --volume-key-file $KEY_HALF_ZERO $LOOPDEV 2>/dev/null && fail +echo $PWD3 | $CRYPTSETUP luksAddKey -q $FAST_PBKDF_OPT -S6 --unbound --volume-key-file $KEY_HALF_ZERO -s256 $LOOPDEV || fail +$CRYPTSETUP luksDump $LOOPDEV | grep -q "6: luks2 (unbound)" || fail +echo $PWD3 | $CRYPTSETUP open --test-passphrase -S6 $LOOPDEV || fail +echo $PWD3 | $CRYPTSETUP open -S6 $LOOPDEV $DEV_NAME 2>/dev/null && fail + remove_mapping exit 0 From 35b42abef4e5f613b0df28d679c4e4cc3a1d21a8 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 23 May 2026 17:56:48 +0200 Subject: [PATCH 124/244] fuzz: Fix build for broken json-c repo Current json-c master branch cannot be compiled with clang, until upstream merges the fix, use the last stable branch for fuzzers build. --- tests/fuzz/oss-fuzz-build.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/fuzz/oss-fuzz-build.sh b/tests/fuzz/oss-fuzz-build.sh index 3ef8c81cf..9a5123093 100755 --- a/tests/fuzz/oss-fuzz-build.sh +++ b/tests/fuzz/oss-fuzz-build.sh @@ -56,7 +56,8 @@ last_commit zlib [ ! -d xz ] && git clone -q --depth 1 https://github.com/tukaani-project/xz last_commit xz -[ ! -d json-c ] && git clone -q --depth 1 https://github.com/json-c/json-c.git +# Master branch is broken, use json-c-0.18 for now +[ ! -d json-c ] && git clone -q --depth 1 --branch json-c-0.18 https://github.com/json-c/json-c.git last_commit json-c [ ! -d lvm2 ] && git clone -q --depth 1 https://gitlab.com/lvmteam/lvm2 From 645d5726345efb03126199a2e774b45152d24514 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Mon, 25 May 2026 14:11:42 +0200 Subject: [PATCH 125/244] Revert "fuzz: Fix build for broken json-c repo" This reverts commit 35b42abef4e5f613b0df28d679c4e4cc3a1d21a8. Fixed upstream now. --- tests/fuzz/oss-fuzz-build.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/fuzz/oss-fuzz-build.sh b/tests/fuzz/oss-fuzz-build.sh index 9a5123093..3ef8c81cf 100755 --- a/tests/fuzz/oss-fuzz-build.sh +++ b/tests/fuzz/oss-fuzz-build.sh @@ -56,8 +56,7 @@ last_commit zlib [ ! -d xz ] && git clone -q --depth 1 https://github.com/tukaani-project/xz last_commit xz -# Master branch is broken, use json-c-0.18 for now -[ ! -d json-c ] && git clone -q --depth 1 --branch json-c-0.18 https://github.com/json-c/json-c.git +[ ! -d json-c ] && git clone -q --depth 1 https://github.com/json-c/json-c.git last_commit json-c [ ! -d lvm2 ] && git clone -q --depth 1 https://gitlab.com/lvmteam/lvm2 From 6139f3ce461ac25b9407f5dde980161e6e08ed73 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Wed, 27 May 2026 09:56:45 +0200 Subject: [PATCH 126/244] tests: Fix systemd dump to stderr For some reason, systemd now uses stderr for part of the metadata dump. Just merrge stdout+stderr in test. --- tests/systemd-test-plugin | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/systemd-test-plugin b/tests/systemd-test-plugin index 9ddc4afc8..3079b3c72 100755 --- a/tests/systemd-test-plugin +++ b/tests/systemd-test-plugin @@ -177,7 +177,7 @@ echo $PASSWD | $CRYPTSETUP luksFormat --type luks2 $FAST_PBKDF_OPT $IMG --force- echo "Enrolling the device to TPM 2 using systemd-cryptenroll.." LD_PRELOAD="$LD_PRELOAD:$CRYPTENROLL_LD_PRELOAD" PASSWORD="$PASSWD" $SYSTEMD_CRYPTENROLL $IMG --tpm2-device=$TPM_PATH >/dev/null 2>&1 -$CRYPTSETUP luksDump $CRYPTSETUP_EXTERNAL_PATH_PARAM $IMG | grep -q "tpm2-blob" || fail "Failed to dump $IMG using systemd_tpm2 token (no tpm2-blob in output)." +$CRYPTSETUP luksDump $CRYPTSETUP_EXTERNAL_PATH_PARAM $IMG 2>&1 | grep -q "tpm2-blob" || fail "Failed to dump $IMG using systemd_tpm2 token (no tpm2-blob in output)." echo "Activating the device via TPM2 external token.." $CRYPTSETUP open $CRYPTSETUP_EXTERNAL_PATH_PARAM --token-only $IMG $MAP >/dev/null 2>&1 || fail "Failed to open $IMG using systemd_tpm2 token." $CRYPTSETUP close $MAP >/dev/null 2>&1 || fail "Failed to close $MAP." From 2397e92d37d84552ed299e258644959f9e31fb74 Mon Sep 17 00:00:00 2001 From: Anton Lundin Date: Mon, 1 Jun 2026 22:37:01 +0200 Subject: [PATCH 127/244] Add mbedtls to PKGMODULES When cryptsetup is built with --with-crypto_backend=mbedtls, the pkg-config file for libcryptsetup should include mbedtls. --- configure.ac | 1 + 1 file changed, 1 insertion(+) diff --git a/configure.ac b/configure.ac index 52ddf11b3..260b0ab6f 100644 --- a/configure.ac +++ b/configure.ac @@ -741,6 +741,7 @@ case $with_crypto_backend in openssl) PKGMODULES="$PKGMODULES openssl" ;; nss) PKGMODULES="$PKGMODULES nss" ;; nettle) PKGMODULES="$PKGMODULES nettle" ;; + mbedtls) PKGMODULES="$PKGMODULES mbedtls" ;; esac if test "x$enable_libargon2" = "xyes"; then PKGMODULES="$PKGMODULES libargon2" From 2a3734b2f013a090dab7edb0cb002defeefb5533 Mon Sep 17 00:00:00 2001 From: Kristina Hanicova Date: Fri, 17 Apr 2026 15:59:54 +0200 Subject: [PATCH 128/244] Add API reporting default cryptographic values Function crypt_get_device_defaults() fills the structure crypt_device_defaults with default cryptographic values for LUKS devices. Fixes: #788 --- lib/libcryptsetup.h | 28 ++++++++++++++++++++++++++++ lib/libcryptsetup.sym | 1 + lib/setup.c | 19 +++++++++++++++++++ tests/api-test-2.c | 33 +++++++++++++++++++++++++++++++++ 4 files changed, 81 insertions(+) diff --git a/lib/libcryptsetup.h b/lib/libcryptsetup.h index 3e312773b..cb4ed79a0 100644 --- a/lib/libcryptsetup.h +++ b/lib/libcryptsetup.h @@ -434,6 +434,34 @@ const char *crypt_get_type(struct crypt_device *cd); */ const char *crypt_get_default_type(void); +/** + * Structure representing default cryptographic parameters for a device type. + * + * @see crypt_get_type_defaults + */ +struct crypt_type_defaults { + const char *cipher; /**< cipher algorithm (e.g., "aes") */ + const char *cipher_mode; /**< cipher_mode cipher mode and IV (e.g. "xts-plain64") */ + const char *hash; /**< hash algorithm */ + uint32_t key_size; /**< key size in bits */ + + /* LUKS2 Authenticated Encryption (AEAD) specific */ + const char *integrity; /**< integrity algorithm or @e NULL */ + uint32_t tag_size; /**< authentication tag size in bytes or @e 0 */ +}; + +/** + * Get default cryptographic values for a specific device type. + * + * @param type requested type (CRYPT_LUKS1 or CRYPT_LUKS2) + * @param defaults pointer to the structure to be filled + * + * @return @e 0 on success or negative errno value otherwise. + * + * @note Available for CRYPT_LUKS1 and CRYPT_LUKS2 only. + */ +int crypt_get_type_defaults(const char *type, struct crypt_type_defaults *defaults); + /** * @defgroup crypt-hw-encryption-types HW encryption type * @addtogroup crypt-hw-encryption-types diff --git a/lib/libcryptsetup.sym b/lib/libcryptsetup.sym index 5c2192b32..51f0bfef7 100644 --- a/lib/libcryptsetup.sym +++ b/lib/libcryptsetup.sym @@ -201,4 +201,5 @@ CRYPTSETUP_2.9 { crypt_get_verity_repaired; crypt_get_hw_opal_sum_enabled; crypt_status_hw_encryption; + crypt_get_type_defaults; } CRYPTSETUP_2.8; diff --git a/lib/setup.c b/lib/setup.c index 1ed7387f4..7281415c7 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -6834,6 +6834,25 @@ const char *crypt_get_default_type(void) return DEFAULT_LUKS_FORMAT; } +int crypt_get_type_defaults(const char *type, struct crypt_type_defaults *defaults) +{ + if (!type || !isLUKS(type) || !defaults) + return -EINVAL; + + memset(defaults, 0, sizeof(*defaults)); + + defaults->cipher = DEFAULT_LUKS1_CIPHER; + defaults->cipher_mode = DEFAULT_LUKS1_MODE; + defaults->hash = DEFAULT_LUKS1_HASH; + defaults->key_size = DEFAULT_LUKS1_KEYBITS; + + if (isLUKS2(type)) { + defaults->integrity = "hmac-sha256"; + defaults->tag_size = 32; + } + return 0; +} + int crypt_get_hw_encryption_type(struct crypt_device *cd) { if (!cd) diff --git a/tests/api-test-2.c b/tests/api-test-2.c index 34525f978..e11841d2f 100644 --- a/tests/api-test-2.c +++ b/tests/api-test-2.c @@ -3193,6 +3193,38 @@ static void Pbkdf(void) _cleanup_dmdevices(); } +static void TypeDefaults(void) +{ + struct crypt_type_defaults defaults; + + // test valid LUKS1 defaults + OK_(crypt_get_type_defaults(CRYPT_LUKS1, &defaults)); + OK_(strcmp(defaults.cipher, DEFAULT_LUKS1_CIPHER)); + OK_(strcmp(defaults.cipher_mode, DEFAULT_LUKS1_MODE)); + OK_(strcmp(defaults.hash, default_luks1_hash)); + EQ_(defaults.key_size, DEFAULT_LUKS1_KEYBITS); + NULL_(defaults.integrity); + EQ_(defaults.tag_size, 0); + + // test valid LUKS2 defaults + OK_(crypt_get_type_defaults(CRYPT_LUKS2, &defaults)); + OK_(strcmp(defaults.cipher, DEFAULT_LUKS1_CIPHER)); + OK_(strcmp(defaults.cipher_mode, DEFAULT_LUKS1_MODE)); + OK_(strcmp(defaults.hash, default_luks1_hash)); + EQ_(defaults.key_size, DEFAULT_LUKS1_KEYBITS); + OK_(strcmp(defaults.integrity, "hmac-sha256")); + EQ_(defaults.tag_size, 32); + + // test invalid type (non-LUKS) + FAIL_(crypt_get_type_defaults(CRYPT_PLAIN, &defaults), "Invalid type"); + FAIL_(crypt_get_type_defaults(CRYPT_LOOPAES, &defaults), "Invalid type"); + FAIL_(crypt_get_type_defaults(CRYPT_VERITY, &defaults), "Invalid type"); + + // test NULL pointer + FAIL_(crypt_get_type_defaults(NULL, &defaults), "Invalid type"); + FAIL_(crypt_get_type_defaults(CRYPT_LUKS1, NULL), "NULL defaults pointer"); +} + static void Luks2KeyslotAdd(void) { char key[128], key2[128], key_ret[128]; @@ -6325,6 +6357,7 @@ int main(int argc, char *argv[]) RUN_(TokenActivationByKeyring, "Builtin kernel keyring token"); RUN_(LuksConvert, "LUKS1 <-> LUKS2 conversions"); RUN_(Pbkdf, "Default PBKDF manipulation routines"); + RUN_(TypeDefaults, "Device type default cryptographic parameters"); RUN_(Luks2KeyslotParams, "Add a new keyslot with different encryption"); RUN_(Luks2KeyslotAdd, "Add a new keyslot by unused key"); RUN_(Luks2ActivateByKeyring, "LUKS2 activation by passphrase in keyring"); From 87faff225cd2eb00619f5caf9f04a2da440513f6 Mon Sep 17 00:00:00 2001 From: Kristina Hanicova Date: Thu, 23 Apr 2026 16:47:03 +0200 Subject: [PATCH 129/244] help: use crypt_device_defaults --- src/cryptsetup.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/cryptsetup.c b/src/cryptsetup.c index bc4cc3722..853de5cb3 100644 --- a/src/cryptsetup.c +++ b/src/cryptsetup.c @@ -3537,6 +3537,8 @@ static void help(poptContext popt_context, struct action_type *action; const struct crypt_pbkdf_type *pbkdf_luks1, *pbkdf_luks2; + struct crypt_type_defaults luks_defaults = {}; + tools_package_version(PACKAGE_NAME, true); poptPrintHelp(popt_context, stdout, 0); @@ -3580,13 +3582,15 @@ static void help(poptContext popt_context, pbkdf_luks2->type, pbkdf_luks2->time_ms, pbkdf_luks2->max_memory_kb, pbkdf_luks2->parallel_threads); + crypt_get_type_defaults(CRYPT_LUKS1, &luks_defaults); + log_std(_("\nDefault compiled-in device cipher parameters:\n" "\tloop-AES: %s, Key %d bits\n" "\tplain: %s, Key: %d bits, Password hashing: %s\n" - "\tLUKS: %s, Key: %d bits, LUKS header hashing: %s, RNG: %s\n"), + "\tLUKS: %s-%s, Key: %d bits, LUKS header hashing: %s, RNG: %s\n"), DEFAULT_LOOPAES_CIPHER, DEFAULT_LOOPAES_KEYBITS, DEFAULT_CIPHER(PLAIN), DEFAULT_PLAIN_KEYBITS, DEFAULT_PLAIN_HASH, - DEFAULT_CIPHER(LUKS1), DEFAULT_LUKS1_KEYBITS, DEFAULT_LUKS1_HASH, + luks_defaults.cipher, luks_defaults.cipher_mode, luks_defaults.key_size, luks_defaults.hash, DEFAULT_RNG); #if ENABLE_LUKS_ADJUST_XTS_KEYSIZE && DEFAULT_LUKS1_KEYBITS != 512 log_std(_("\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n")); From f32f13dd8bf89b2a3d91b8d790fabc28b18dba95 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sun, 24 May 2026 21:14:58 +0200 Subject: [PATCH 130/244] Include storage wrappers header only where needed. --- lib/internal.h | 1 - lib/luks2/luks2_reencrypt.c | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/internal.h b/lib/internal.h index 56efa46b2..bedc5d9f2 100644 --- a/lib/internal.h +++ b/lib/internal.h @@ -29,7 +29,6 @@ #include "utils_keyring.h" #include "utils_io.h" #include "crypto_backend/crypto_backend.h" -#include "utils_storage_wrappers.h" #include "libcryptsetup.h" diff --git a/lib/luks2/luks2_reencrypt.c b/lib/luks2/luks2_reencrypt.c index 1845a7824..d06d579ef 100644 --- a/lib/luks2/luks2_reencrypt.c +++ b/lib/luks2/luks2_reencrypt.c @@ -9,6 +9,7 @@ #include "luks2_internal.h" #include "utils_device_locking.h" #include "keyslot_context.h" +#include "utils_storage_wrappers.h" struct luks2_reencrypt { /* reencryption window attributes */ From a83069184cc15465ee78bf46fdb4989202b3f66c Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sun, 24 May 2026 21:15:53 +0200 Subject: [PATCH 131/244] Add prefix to storage wrapper flags and dremove unused DISABLE_USPACE Userspace wrapper must be always enabled anyway. --- lib/luks2/luks2_reencrypt.c | 6 +++--- lib/utils_storage_wrappers.c | 8 ++++---- lib/utils_storage_wrappers.h | 9 ++++----- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/lib/luks2/luks2_reencrypt.c b/lib/luks2/luks2_reencrypt.c index d06d579ef..0f80eff24 100644 --- a/lib/luks2/luks2_reencrypt.c +++ b/lib/luks2/luks2_reencrypt.c @@ -1411,7 +1411,7 @@ static int reencrypt_init_storage_wrappers(struct crypt_device *cd, { int r; struct volume_key *vk; - uint32_t wrapper_flags = (getuid() || geteuid()) ? 0 : DISABLE_KCAPI; + uint32_t wrapper_flags = (getuid() || geteuid()) ? 0 : CSW_DISABLE_KCAPI; vk = crypt_volume_key_by_id(vks, rh->digest_old); r = crypt_storage_wrapper_init(cd, &rh->cw1, crypt_data_device(cd), @@ -1419,12 +1419,12 @@ static int reencrypt_init_storage_wrappers(struct crypt_device *cd, crypt_get_iv_offset(cd), reencrypt_get_sector_size_old(hdr), reencrypt_segment_cipher_old(hdr), - vk, wrapper_flags | OPEN_READONLY); + vk, wrapper_flags | CSW_OPEN_READONLY); if (r) { log_err(cd, _("Failed to initialize old segment storage wrapper.")); return r; } - rh->wflags1 = wrapper_flags | OPEN_READONLY; + rh->wflags1 = wrapper_flags | CSW_OPEN_READONLY; log_dbg(cd, "Old cipher storage wrapper type: %d.", crypt_storage_wrapper_get_type(rh->cw1)); vk = crypt_volume_key_by_id(vks, rh->digest_new); diff --git a/lib/utils_storage_wrappers.c b/lib/utils_storage_wrappers.c index 9b25b71ef..1104f204d 100644 --- a/lib/utils_storage_wrappers.c +++ b/lib/utils_storage_wrappers.c @@ -51,11 +51,11 @@ static int crypt_storage_backend_init(struct crypt_device *cd, /* iv_start, sector_size */ r = crypt_storage_init(&s, sector_size, cipher, cipher_mode, crypt_volume_key_get_key(vk), - crypt_volume_key_length(vk), flags & LARGE_IV); + crypt_volume_key_length(vk), flags & CSW_LARGE_IV); if (r) return r; - if ((flags & DISABLE_KCAPI) && crypt_storage_kernel_only(s)) { + if ((flags & CSW_DISABLE_KCAPI) && crypt_storage_kernel_only(s)) { log_dbg(cd, "Could not initialize userspace block cipher and kernel fallback is disabled."); crypt_storage_destroy(s); return -ENOTSUP; @@ -159,7 +159,7 @@ int crypt_storage_wrapper_init(struct crypt_device *cd, if (crypt_parse_name_and_mode(cipher, _cipher, NULL, mode)) return -EINVAL; - open_flags = O_CLOEXEC | ((flags & OPEN_READONLY) ? O_RDONLY : O_RDWR); + open_flags = O_CLOEXEC | ((flags & CSW_OPEN_READONLY) ? O_RDONLY : O_RDWR); w = malloc(sizeof(*w)); if (!w) @@ -202,7 +202,7 @@ int crypt_storage_wrapper_init(struct crypt_device *cd, log_dbg(cd, "Failed to initialize userspace block cipher."); - if ((r != -ENOTSUP && r != -ENOENT) || (flags & DISABLE_DMCRYPT)) + if ((r != -ENOTSUP && r != -ENOENT) || (flags & CSW_DISABLE_DMCRYPT)) goto err; r = crypt_storage_dmcrypt_init(cd, w, device, data_offset >> SECTOR_SHIFT, iv_start, diff --git a/lib/utils_storage_wrappers.h b/lib/utils_storage_wrappers.h index 86986f407..6d2959f2b 100644 --- a/lib/utils_storage_wrappers.h +++ b/lib/utils_storage_wrappers.h @@ -17,11 +17,10 @@ struct device; struct volume_key; struct crypt_device; -#define DISABLE_USPACE (1 << 0) -#define DISABLE_KCAPI (1 << 1) -#define DISABLE_DMCRYPT (1 << 2) -#define OPEN_READONLY (1 << 3) -#define LARGE_IV (1 << 4) +#define CSW_DISABLE_KCAPI (1 << 0) +#define CSW_DISABLE_DMCRYPT (1 << 1) +#define CSW_OPEN_READONLY (1 << 2) +#define CSW_LARGE_IV (1 << 3) typedef enum { NONE = 0, From 095fff15737f26348bc6313985ec2208bf098ff3 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sun, 24 May 2026 21:30:28 +0200 Subject: [PATCH 132/244] Add fallback to dmcrypt in LUKS21 keyslot processing Basically just use existing storage wrapper. The change need locked access to device. --- lib/luks2/luks2_keyslot_luks2.c | 126 ++++++++++++-------------------- lib/utils_storage_wrappers.c | 5 +- lib/utils_storage_wrappers.h | 1 + 3 files changed, 52 insertions(+), 80 deletions(-) diff --git a/lib/luks2/luks2_keyslot_luks2.c b/lib/luks2/luks2_keyslot_luks2.c index 119fe6478..92b4788e2 100644 --- a/lib/luks2/luks2_keyslot_luks2.c +++ b/lib/luks2/luks2_keyslot_luks2.c @@ -8,6 +8,7 @@ #include #include "luks2_internal.h" +#include "utils_storage_wrappers.h" /* FIXME: move keyslot encryption to crypto backend */ #include "../luks1/af.h" @@ -20,100 +21,73 @@ /* coverity[ -taint_source : arg-0 ] */ static int luks2_encrypt_to_storage(char *src, size_t srcLength, - const char *cipher, const char *cipher_mode, - struct volume_key *vk, unsigned int sector, + const char *cipher, + struct volume_key *vk, uint64_t offset, struct crypt_device *cd) { - struct crypt_storage *s; - int devfd, r; struct device *device = crypt_metadata_device(cd); + struct crypt_storage_wrapper *csw; + uint32_t csw_flags = CSW_OPEN_LOCKED; + ssize_t written; + int r; - /* Only whole sector writes supported */ - if (MISALIGNED_512(srcLength)) - return -EINVAL; - - /* Encrypt buffer */ - r = crypt_storage_init(&s, SECTOR_SIZE, cipher, cipher_mode, - crypt_volume_key_get_key(vk), crypt_volume_key_length(vk), false); - if (r) { - log_err(cd, _("Cannot use %s-%s cipher for keyslot encryption."), cipher, cipher_mode); - return r; - } + /* dm-crypt backend requires root access */ + if (getuid() || geteuid()) + csw_flags |= CSW_DISABLE_DMCRYPT; - r = crypt_storage_encrypt(s, 0, srcLength, src); - crypt_storage_destroy(s); + r = crypt_storage_wrapper_init(cd, &csw, device, offset, 0, SECTOR_SIZE, cipher, vk, csw_flags); if (r) { - log_err(cd, _("IO error while encrypting keyslot.")); + log_err(cd, _("Cannot use %s cipher for keyslot encryption."), cipher); return r; } - devfd = device_open_locked(cd, device, O_RDWR); - if (devfd >= 0) { - if (write_lseek_blockwise(devfd, device_block_size(cd, device), - device_alignment(device), src, - srcLength, sector * SECTOR_SIZE) < 0) - r = -EIO; - else - r = 0; - - device_sync(cd, device); - } else + written = crypt_storage_wrapper_encrypt_write(csw, 0, src, srcLength); + if (written < 0 || (size_t)written != srcLength) { r = -EIO; - - if (r) log_err(cd, _("IO error while encrypting keyslot.")); + } else + r = 0; + crypt_storage_wrapper_destroy(csw); return r; } static int luks2_decrypt_from_storage(char *dst, size_t dstLength, - const char *cipher, const char *cipher_mode, struct volume_key *vk, - unsigned int sector, struct crypt_device *cd) + const char *cipher, struct volume_key *vk, + uint64_t offset, struct crypt_device *cd) { struct device *device = crypt_metadata_device(cd); - struct crypt_storage *s; - int devfd, r; + struct crypt_storage_wrapper *csw; + uint32_t csw_flags = CSW_OPEN_LOCKED | CSW_OPEN_READONLY; + ssize_t read; + int r; - /* Only whole sector writes supported */ - if (MISALIGNED_512(dstLength)) - return -EINVAL; + /* dm-crypt backend requires root access */ + if (getuid() || geteuid()) + csw_flags |= CSW_DISABLE_DMCRYPT; - r = crypt_storage_init(&s, SECTOR_SIZE, cipher, cipher_mode, - crypt_volume_key_get_key(vk), - crypt_volume_key_length(vk), false); + r = device_read_lock(cd, device); if (r) { - log_err(cd, _("Cannot use %s-%s cipher for keyslot encryption."), cipher, cipher_mode); + log_err(cd, _("Failed to acquire read lock on device %s."), device_path(device)); return r; } - r = device_read_lock(cd, device); + r = crypt_storage_wrapper_init(cd, &csw, device, offset, 0, SECTOR_SIZE, cipher, vk, csw_flags); if (r) { - log_err(cd, _("Failed to acquire read lock on device %s."), - device_path(device)); - crypt_storage_destroy(s); + log_err(cd, _("Cannot use %s cipher for keyslot encryption."), cipher); + device_read_unlock(cd, device); return r; } - devfd = device_open_locked(cd, device, O_RDONLY); - if (devfd >= 0) { - if (read_lseek_blockwise(devfd, device_block_size(cd, device), - device_alignment(device), dst, - dstLength, sector * SECTOR_SIZE) < 0) - r = -EIO; - else - r = 0; - } else + read = crypt_storage_wrapper_read_decrypt(csw, 0, dst, dstLength); + if (read < 0 || (size_t)read != dstLength) { r = -EIO; - - device_read_unlock(cd, device); - - /* Decrypt buffer */ - if (!r) - r = crypt_storage_decrypt(s, 0, dstLength, dst); - else log_err(cd, _("IO error while decrypting keyslot.")); + } else + r = 0; - crypt_storage_destroy(s); + device_read_unlock(cd, device); + crypt_storage_wrapper_destroy(csw); return r; } @@ -177,9 +151,9 @@ static int luks2_keyslot_set_key(struct crypt_device *cd, const char *password, size_t passwordLen, const char *volume_key, size_t volume_key_len) { - char *salt = NULL, cipher[MAX_CIPHER_LEN], cipher_mode[MAX_CIPHER_LEN]; + char *salt = NULL; char *AfKey = NULL; - const char *af_hash = NULL; + const char *af_hash = NULL, *cipher; size_t AFEKSize, keyslot_key_len; json_object *jobj2, *jobj_kdf, *jobj_af, *jobj_area; uint64_t area_offset; @@ -205,9 +179,7 @@ static int luks2_keyslot_set_key(struct crypt_device *cd, if (!json_object_object_get_ex(jobj_area, "encryption", &jobj2)) return -EINVAL; - r = crypt_parse_name_and_mode(json_object_get_string(jobj2), cipher, NULL, cipher_mode); - if (r < 0) - return r; + cipher = json_object_get_string(jobj2); if (!json_object_object_get_ex(jobj_area, "key_size", &jobj2)) return -EINVAL; @@ -272,9 +244,8 @@ static int luks2_keyslot_set_key(struct crypt_device *cd, } log_dbg(cd, "Updating keyslot area [0x%04" PRIx64 "].", area_offset); - /* FIXME: sector_offset should be size_t, fix LUKS_encrypt... accordingly */ - r = luks2_encrypt_to_storage(AfKey, AFEKSize, cipher, cipher_mode, - derived_vk, (unsigned)(area_offset / SECTOR_SIZE), cd); + + r = luks2_encrypt_to_storage(AfKey, AFEKSize, cipher, derived_vk, area_offset, cd); out: crypt_safe_free(AfKey); crypt_safe_free(derived_key); @@ -293,8 +264,8 @@ static int luks2_keyslot_get_key(struct crypt_device *cd, struct crypt_pbkdf_type pbkdf; char *AfKey = NULL; size_t AFEKSize; - const char *af_hash = NULL; - char *salt = NULL, cipher[MAX_CIPHER_LEN], cipher_mode[MAX_CIPHER_LEN]; + const char *af_hash = NULL, *cipher; + char *salt = NULL; json_object *jobj2, *jobj_af, *jobj_area; uint64_t area_offset; size_t keyslot_key_len; @@ -317,9 +288,8 @@ static int luks2_keyslot_get_key(struct crypt_device *cd, if (!json_object_object_get_ex(jobj_area, "encryption", &jobj2)) return -EINVAL; - r = crypt_parse_name_and_mode(json_object_get_string(jobj2), cipher, NULL, cipher_mode); - if (r < 0) - return r; + + cipher = json_object_get_string(jobj2); /* Allow only empty passphrase with null cipher */ if (crypt_is_cipher_null(cipher) && passwordLen) @@ -380,10 +350,8 @@ static int luks2_keyslot_get_key(struct crypt_device *cd, } log_dbg(cd, "Reading keyslot area [0x%04" PRIx64 "].", area_offset); - /* FIXME: sector_offset should be size_t, fix LUKS_decrypt... accordingly */ - r = luks2_decrypt_from_storage(AfKey, AFEKSize, cipher, cipher_mode, - derived_vk, (unsigned)(area_offset / SECTOR_SIZE), cd); + r = luks2_decrypt_from_storage(AfKey, AFEKSize, cipher, derived_vk, area_offset, cd); if (r == 0) { r = crypt_hash_size(af_hash); if (r < 0) diff --git a/lib/utils_storage_wrappers.c b/lib/utils_storage_wrappers.c index 1104f204d..7a2420859 100644 --- a/lib/utils_storage_wrappers.c +++ b/lib/utils_storage_wrappers.c @@ -175,7 +175,10 @@ int crypt_storage_wrapper_init(struct crypt_device *cd, goto err; } - w->dev_fd = device_open(cd, device, open_flags); + if (flags & CSW_OPEN_LOCKED) + w->dev_fd = device_open_locked(cd, device, open_flags); + else + w->dev_fd = device_open(cd, device, open_flags); if (w->dev_fd < 0) { r = -EINVAL; goto err; diff --git a/lib/utils_storage_wrappers.h b/lib/utils_storage_wrappers.h index 6d2959f2b..23a963070 100644 --- a/lib/utils_storage_wrappers.h +++ b/lib/utils_storage_wrappers.h @@ -21,6 +21,7 @@ struct crypt_device; #define CSW_DISABLE_DMCRYPT (1 << 1) #define CSW_OPEN_READONLY (1 << 2) #define CSW_LARGE_IV (1 << 3) +#define CSW_OPEN_LOCKED (1 << 4) typedef enum { NONE = 0, From fb6b9480fa519c70366d6743ec84cb0f3afcc8c7 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 6 Jun 2026 22:32:07 +0200 Subject: [PATCH 133/244] Update copyright for 2026. --- docs/examples/crypt_log_usage.c | 2 +- docs/examples/crypt_luks_usage.c | 2 +- lib/bitlk/bitlk.c | 6 +++--- lib/bitlk/bitlk.h | 6 +++--- lib/crypt_plain.c | 4 ++-- lib/crypto_backend/argon2_generic.c | 4 ++-- lib/crypto_backend/base64.c | 2 +- lib/crypto_backend/cipher_check.c | 4 ++-- lib/crypto_backend/cipher_generic.c | 4 ++-- lib/crypto_backend/crypto_backend.h | 4 ++-- lib/crypto_backend/crypto_backend_internal.h | 4 ++-- lib/crypto_backend/crypto_cipher_kernel.c | 4 ++-- lib/crypto_backend/crypto_gcrypt.c | 4 ++-- lib/crypto_backend/crypto_kernel.c | 4 ++-- lib/crypto_backend/crypto_nettle.c | 4 ++-- lib/crypto_backend/crypto_nss.c | 4 ++-- lib/crypto_backend/crypto_openssl.c | 4 ++-- lib/crypto_backend/crypto_storage.c | 2 +- lib/crypto_backend/memutils.c | 2 +- lib/crypto_backend/pbkdf2_generic.c | 4 ++-- lib/crypto_backend/pbkdf_check.c | 4 ++-- lib/crypto_backend/utf8.c | 2 +- lib/integrity/integrity.c | 2 +- lib/integrity/integrity.h | 2 +- lib/internal.h | 4 ++-- lib/keyslot_context.c | 4 ++-- lib/keyslot_context.h | 4 ++-- lib/libcryptsetup.h | 4 ++-- lib/libcryptsetup_macros.h | 4 ++-- lib/libcryptsetup_symver.h | 2 +- lib/libdevmapper.c | 4 ++-- lib/loopaes/loopaes.c | 4 ++-- lib/loopaes/loopaes.h | 4 ++-- lib/luks1/af.c | 2 +- lib/luks1/af.h | 2 +- lib/luks1/keyencryption.c | 4 ++-- lib/luks1/keymanage.c | 4 ++-- lib/luks1/luks.h | 2 +- lib/luks2/hw_opal/hw_opal.c | 4 ++-- lib/luks2/hw_opal/hw_opal.h | 4 ++-- lib/luks2/luks2.h | 4 ++-- lib/luks2/luks2_digest.c | 4 ++-- lib/luks2/luks2_digest_pbkdf2.c | 4 ++-- lib/luks2/luks2_disk_metadata.c | 4 ++-- lib/luks2/luks2_internal.h | 4 ++-- lib/luks2/luks2_json_format.c | 4 ++-- lib/luks2/luks2_json_metadata.c | 6 +++--- lib/luks2/luks2_keyslot.c | 4 ++-- lib/luks2/luks2_keyslot_luks2.c | 4 ++-- lib/luks2/luks2_keyslot_reenc.c | 4 ++-- lib/luks2/luks2_luks1_convert.c | 6 +++--- lib/luks2/luks2_reencrypt.c | 4 ++-- lib/luks2/luks2_reencrypt_digest.c | 6 +++--- lib/luks2/luks2_segment.c | 4 ++-- lib/luks2/luks2_token.c | 4 ++-- lib/luks2/luks2_token_keyring.c | 4 ++-- lib/random.c | 2 +- lib/setup.c | 4 ++-- lib/tcrypt/tcrypt.c | 4 ++-- lib/tcrypt/tcrypt.h | 4 ++-- lib/utils.c | 4 ++-- lib/utils_benchmark.c | 4 ++-- lib/utils_blkid.c | 2 +- lib/utils_blkid.h | 2 +- lib/utils_crypt.c | 4 ++-- lib/utils_crypt.h | 4 ++-- lib/utils_device.c | 4 ++-- lib/utils_device_locking.c | 4 ++-- lib/utils_device_locking.h | 4 ++-- lib/utils_devpath.c | 4 ++-- lib/utils_dm.h | 4 ++-- lib/utils_io.c | 4 ++-- lib/utils_io.h | 4 ++-- lib/utils_keyring.c | 4 ++-- lib/utils_keyring.h | 4 ++-- lib/utils_loop.c | 4 ++-- lib/utils_loop.h | 4 ++-- lib/utils_pbkdf.c | 4 ++-- lib/utils_safe_memory.c | 4 ++-- lib/utils_storage_wrappers.c | 2 +- lib/utils_storage_wrappers.h | 2 +- lib/utils_wipe.c | 4 ++-- lib/verity/rs.h | 2 +- lib/verity/rs_decode_char.c | 2 +- lib/verity/rs_encode_char.c | 2 +- lib/verity/verity.c | 2 +- lib/verity/verity.h | 2 +- lib/verity/verity_fec.c | 2 +- lib/verity/verity_hash.c | 2 +- lib/volumekey.c | 2 +- src/cryptsetup.c | 4 ++-- src/cryptsetup.h | 4 ++-- src/cryptsetup_arg_list.h | 4 ++-- src/cryptsetup_args.h | 4 ++-- src/integritysetup.c | 4 ++-- src/integritysetup_arg_list.h | 4 ++-- src/integritysetup_args.h | 4 ++-- src/utils_arg_macros.h | 4 ++-- src/utils_arg_names.h | 4 ++-- src/utils_args.c | 4 ++-- src/utils_blockdev.c | 4 ++-- src/utils_key_description.c | 6 +++--- src/utils_keyslot_check.c | 2 +- src/utils_luks.c | 6 +++--- src/utils_luks.h | 6 +++--- src/utils_password.c | 4 ++-- src/utils_progress.c | 4 ++-- src/utils_reencrypt.c | 6 +++--- src/utils_reencrypt_luks1.c | 4 ++-- src/utils_tools.c | 4 ++-- src/veritysetup.c | 4 ++-- src/veritysetup_arg_list.h | 4 ++-- src/veritysetup_args.h | 4 ++-- tests/all-symbols-test.c | 2 +- tests/api-test-2.c | 6 +++--- tests/api-test.c | 6 +++--- tests/api_test.h | 6 +++--- tests/crypto-check.c | 2 +- tests/crypto-vectors.c | 2 +- tests/differ.c | 2 +- tests/fuzz/crypt2_load_fuzz.cc | 2 +- tests/test_utils.c | 4 ++-- tests/unit-utils-crypt.c | 2 +- tests/unit-utils-io.c | 2 +- tests/unit-wipe.c | 2 +- tokens/ssh/cryptsetup-ssh.c | 4 ++-- tokens/ssh/libcryptsetup-token-ssh.c | 4 ++-- tokens/ssh/ssh-utils.c | 4 ++-- tokens/ssh/ssh-utils.h | 4 ++-- 129 files changed, 236 insertions(+), 236 deletions(-) diff --git a/docs/examples/crypt_log_usage.c b/docs/examples/crypt_log_usage.c index de8d45cb5..491bdf4c4 100644 --- a/docs/examples/crypt_log_usage.c +++ b/docs/examples/crypt_log_usage.c @@ -2,7 +2,7 @@ /* * libcryptsetup API log example * - * Copyright (C) 2011-2025 Red Hat, Inc. All rights reserved. + * Copyright (C) 2011-2026 Red Hat, Inc. All rights reserved. */ #include diff --git a/docs/examples/crypt_luks_usage.c b/docs/examples/crypt_luks_usage.c index 784d36827..8c63ed53a 100644 --- a/docs/examples/crypt_luks_usage.c +++ b/docs/examples/crypt_luks_usage.c @@ -2,7 +2,7 @@ /* * libcryptsetup API - using LUKS device example * - * Copyright (C) 2011-2025 Red Hat, Inc. All rights reserved. + * Copyright (C) 2011-2026 Red Hat, Inc. All rights reserved. */ #include diff --git a/lib/bitlk/bitlk.c b/lib/bitlk/bitlk.c index eaba010a3..84bb1c51a 100644 --- a/lib/bitlk/bitlk.c +++ b/lib/bitlk/bitlk.c @@ -2,9 +2,9 @@ /* * BITLK (BitLocker-compatible) volume handling * - * Copyright (C) 2019-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2019-2025 Milan Broz - * Copyright (C) 2019-2025 Vojtech Trefny + * Copyright (C) 2019-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2019-2026 Milan Broz + * Copyright (C) 2019-2026 Vojtech Trefny */ #include diff --git a/lib/bitlk/bitlk.h b/lib/bitlk/bitlk.h index dde32bf0f..c5d44d82f 100644 --- a/lib/bitlk/bitlk.h +++ b/lib/bitlk/bitlk.h @@ -2,9 +2,9 @@ /* * BITLK (BitLocker-compatible) header definition * - * Copyright (C) 2019-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2019-2025 Milan Broz - * Copyright (C) 2019-2025 Vojtech Trefny + * Copyright (C) 2019-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2019-2026 Milan Broz + * Copyright (C) 2019-2026 Vojtech Trefny */ #ifndef _CRYPTSETUP_BITLK_H diff --git a/lib/crypt_plain.c b/lib/crypt_plain.c index 21e008efe..21f665853 100644 --- a/lib/crypt_plain.c +++ b/lib/crypt_plain.c @@ -3,8 +3,8 @@ * cryptsetup plain device helper functions * * Copyright (C) 2004 Jana Saout - * Copyright (C) 2010-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2010-2025 Milan Broz + * Copyright (C) 2010-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2010-2026 Milan Broz */ #include diff --git a/lib/crypto_backend/argon2_generic.c b/lib/crypto_backend/argon2_generic.c index d50bb9b3f..094d0cfc0 100644 --- a/lib/crypto_backend/argon2_generic.c +++ b/lib/crypto_backend/argon2_generic.c @@ -2,8 +2,8 @@ /* * Argon2 PBKDF2 library wrapper * - * Copyright (C) 2016-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2016-2025 Milan Broz + * Copyright (C) 2016-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2016-2026 Milan Broz */ #include diff --git a/lib/crypto_backend/base64.c b/lib/crypto_backend/base64.c index d9733a096..8d517c433 100644 --- a/lib/crypto_backend/base64.c +++ b/lib/crypto_backend/base64.c @@ -5,7 +5,7 @@ * Copyright (C) 2010 Lennart Poettering * * cryptsetup related changes - * Copyright (C) 2021-2025 Milan Broz + * Copyright (C) 2021-2026 Milan Broz */ #include diff --git a/lib/crypto_backend/cipher_check.c b/lib/crypto_backend/cipher_check.c index d8c7a6040..336a3d981 100644 --- a/lib/crypto_backend/cipher_check.c +++ b/lib/crypto_backend/cipher_check.c @@ -2,8 +2,8 @@ /* * Cipher performance check * - * Copyright (C) 2018-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2018-2025 Milan Broz + * Copyright (C) 2018-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2018-2026 Milan Broz */ #include diff --git a/lib/crypto_backend/cipher_generic.c b/lib/crypto_backend/cipher_generic.c index ab1fac064..d20e011b4 100644 --- a/lib/crypto_backend/cipher_generic.c +++ b/lib/crypto_backend/cipher_generic.c @@ -2,8 +2,8 @@ /* * Linux kernel cipher generic utilities * - * Copyright (C) 2018-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2018-2025 Milan Broz + * Copyright (C) 2018-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2018-2026 Milan Broz */ #include diff --git a/lib/crypto_backend/crypto_backend.h b/lib/crypto_backend/crypto_backend.h index ea1ba3ec7..5e25bb09c 100644 --- a/lib/crypto_backend/crypto_backend.h +++ b/lib/crypto_backend/crypto_backend.h @@ -2,8 +2,8 @@ /* * crypto backend implementation * - * Copyright (C) 2010-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2010-2025 Milan Broz + * Copyright (C) 2010-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2010-2026 Milan Broz */ #ifndef _CRYPTO_BACKEND_H diff --git a/lib/crypto_backend/crypto_backend_internal.h b/lib/crypto_backend/crypto_backend_internal.h index 532609454..e00a5fa40 100644 --- a/lib/crypto_backend/crypto_backend_internal.h +++ b/lib/crypto_backend/crypto_backend_internal.h @@ -2,8 +2,8 @@ /* * crypto backend implementation * - * Copyright (C) 2010-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2010-2025 Milan Broz + * Copyright (C) 2010-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2010-2026 Milan Broz */ #ifndef _CRYPTO_BACKEND_INTERNAL_H diff --git a/lib/crypto_backend/crypto_cipher_kernel.c b/lib/crypto_backend/crypto_cipher_kernel.c index da5b88205..fed4ae86d 100644 --- a/lib/crypto_backend/crypto_cipher_kernel.c +++ b/lib/crypto_backend/crypto_cipher_kernel.c @@ -2,8 +2,8 @@ /* * Linux kernel userspace API crypto backend implementation (skcipher) * - * Copyright (C) 2012-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2012-2025 Milan Broz + * Copyright (C) 2012-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2012-2026 Milan Broz */ #include diff --git a/lib/crypto_backend/crypto_gcrypt.c b/lib/crypto_backend/crypto_gcrypt.c index 8e214d436..73795c4ac 100644 --- a/lib/crypto_backend/crypto_gcrypt.c +++ b/lib/crypto_backend/crypto_gcrypt.c @@ -2,8 +2,8 @@ /* * GCRYPT crypto backend implementation * - * Copyright (C) 2010-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2010-2025 Milan Broz + * Copyright (C) 2010-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2010-2026 Milan Broz */ #include diff --git a/lib/crypto_backend/crypto_kernel.c b/lib/crypto_backend/crypto_kernel.c index 43a4f2561..199ad6570 100644 --- a/lib/crypto_backend/crypto_kernel.c +++ b/lib/crypto_backend/crypto_kernel.c @@ -2,8 +2,8 @@ /* * Linux kernel userspace API crypto backend implementation * - * Copyright (C) 2010-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2010-2025 Milan Broz + * Copyright (C) 2010-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2010-2026 Milan Broz */ #include diff --git a/lib/crypto_backend/crypto_nettle.c b/lib/crypto_backend/crypto_nettle.c index e1f12dd6a..eb864d638 100644 --- a/lib/crypto_backend/crypto_nettle.c +++ b/lib/crypto_backend/crypto_nettle.c @@ -2,8 +2,8 @@ /* * Nettle crypto backend implementation * - * Copyright (C) 2011-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2011-2025 Milan Broz + * Copyright (C) 2011-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2011-2026 Milan Broz */ #include diff --git a/lib/crypto_backend/crypto_nss.c b/lib/crypto_backend/crypto_nss.c index ca989d627..a9e1faa31 100644 --- a/lib/crypto_backend/crypto_nss.c +++ b/lib/crypto_backend/crypto_nss.c @@ -2,8 +2,8 @@ /* * NSS crypto backend implementation * - * Copyright (C) 2010-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2010-2025 Milan Broz + * Copyright (C) 2010-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2010-2026 Milan Broz */ #include diff --git a/lib/crypto_backend/crypto_openssl.c b/lib/crypto_backend/crypto_openssl.c index 92dc4e501..0aff4e27d 100644 --- a/lib/crypto_backend/crypto_openssl.c +++ b/lib/crypto_backend/crypto_openssl.c @@ -2,8 +2,8 @@ /* * OPENSSL crypto backend implementation * - * Copyright (C) 2010-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2010-2025 Milan Broz + * Copyright (C) 2010-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2010-2026 Milan Broz */ #include diff --git a/lib/crypto_backend/crypto_storage.c b/lib/crypto_backend/crypto_storage.c index edd4db7dd..8991949b8 100644 --- a/lib/crypto_backend/crypto_storage.c +++ b/lib/crypto_backend/crypto_storage.c @@ -3,7 +3,7 @@ * Generic wrapper for storage encryption modes and Initial Vectors * (reimplementation of some functions from Linux dm-crypt kernel) * - * Copyright (C) 2014-2025 Milan Broz + * Copyright (C) 2014-2026 Milan Broz */ #include diff --git a/lib/crypto_backend/memutils.c b/lib/crypto_backend/memutils.c index a041b3e60..39a466ff3 100644 --- a/lib/crypto_backend/memutils.c +++ b/lib/crypto_backend/memutils.c @@ -2,7 +2,7 @@ /* * Safe memory utilities * - * Copyright (C) 2024-2025 Milan Broz + * Copyright (C) 2024-2026 Milan Broz */ #include "crypto_backend_internal.h" diff --git a/lib/crypto_backend/pbkdf2_generic.c b/lib/crypto_backend/pbkdf2_generic.c index e5e5a9c7d..ccb09bc1e 100644 --- a/lib/crypto_backend/pbkdf2_generic.c +++ b/lib/crypto_backend/pbkdf2_generic.c @@ -5,8 +5,8 @@ * Copyright (C) 2004 Free Software Foundation * * cryptsetup related changes - * Copyright (C) 2012-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2012-2025 Milan Broz + * Copyright (C) 2012-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2012-2026 Milan Broz */ #include diff --git a/lib/crypto_backend/pbkdf_check.c b/lib/crypto_backend/pbkdf_check.c index 5eb21f331..452424036 100644 --- a/lib/crypto_backend/pbkdf_check.c +++ b/lib/crypto_backend/pbkdf_check.c @@ -1,8 +1,8 @@ // SPDX-License-Identifier: LGPL-2.1-or-later /* * PBKDF performance check - * Copyright (C) 2012-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2012-2025 Milan Broz + * Copyright (C) 2012-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2012-2026 Milan Broz * Copyright (C) 2016-2020 Ondrej Mosnacek */ diff --git a/lib/crypto_backend/utf8.c b/lib/crypto_backend/utf8.c index 1a4079afb..13528c18f 100644 --- a/lib/crypto_backend/utf8.c +++ b/lib/crypto_backend/utf8.c @@ -5,7 +5,7 @@ * Copyright (C) 2010 Lennart Poettering * * cryptsetup related changes - * Copyright (C) 2021-2025 Vojtech Trefny + * Copyright (C) 2021-2026 Vojtech Trefny * Parts of the original systemd implementation are based on the GLIB utf8 * validation functions. diff --git a/lib/integrity/integrity.c b/lib/integrity/integrity.c index d92d97976..c1e050acf 100644 --- a/lib/integrity/integrity.c +++ b/lib/integrity/integrity.c @@ -2,7 +2,7 @@ /* * Integrity volume handling * - * Copyright (C) 2016-2025 Milan Broz + * Copyright (C) 2016-2026 Milan Broz */ #include diff --git a/lib/integrity/integrity.h b/lib/integrity/integrity.h index ff1293fa4..fb0eebdf4 100644 --- a/lib/integrity/integrity.h +++ b/lib/integrity/integrity.h @@ -2,7 +2,7 @@ /* * Integrity header definition * - * Copyright (C) 2016-2025 Milan Broz + * Copyright (C) 2016-2026 Milan Broz */ #ifndef _CRYPTSETUP_INTEGRITY_H diff --git a/lib/internal.h b/lib/internal.h index bedc5d9f2..3d88ace89 100644 --- a/lib/internal.h +++ b/lib/internal.h @@ -4,8 +4,8 @@ * * Copyright (C) 2004 Jana Saout * Copyright (C) 2004-2007 Clemens Fruhwirth - * Copyright (C) 2009-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2009-2025 Milan Broz + * Copyright (C) 2009-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2009-2026 Milan Broz */ #ifndef INTERNAL_H diff --git a/lib/keyslot_context.c b/lib/keyslot_context.c index 1b137823a..fee5aa539 100644 --- a/lib/keyslot_context.c +++ b/lib/keyslot_context.c @@ -2,8 +2,8 @@ /* * LUKS - Linux Unified Key Setup, keyslot unlock helpers * - * Copyright (C) 2022-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2022-2025 Ondrej Kozina + * Copyright (C) 2022-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2022-2026 Ondrej Kozina */ #include diff --git a/lib/keyslot_context.h b/lib/keyslot_context.h index a2e42b20e..c07c171eb 100644 --- a/lib/keyslot_context.h +++ b/lib/keyslot_context.h @@ -2,8 +2,8 @@ /* * LUKS - Linux Unified Key Setup, keyslot unlock helpers * - * Copyright (C) 2022-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2022-2025 Ondrej Kozina + * Copyright (C) 2022-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2022-2026 Ondrej Kozina */ #ifndef KEYSLOT_CONTEXT_H diff --git a/lib/libcryptsetup.h b/lib/libcryptsetup.h index cb4ed79a0..6d51e9173 100644 --- a/lib/libcryptsetup.h +++ b/lib/libcryptsetup.h @@ -4,8 +4,8 @@ * * Copyright (C) 2004 Jana Saout * Copyright (C) 2004-2007 Clemens Fruhwirth - * Copyright (C) 2009-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2009-2025 Milan Broz + * Copyright (C) 2009-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2009-2026 Milan Broz */ /** diff --git a/lib/libcryptsetup_macros.h b/lib/libcryptsetup_macros.h index 4c1bc1bdd..a2dfba3c6 100644 --- a/lib/libcryptsetup_macros.h +++ b/lib/libcryptsetup_macros.h @@ -2,8 +2,8 @@ /* * Definitions of common constant and generic macros of libcryptsetup * - * Copyright (C) 2009-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2009-2025 Milan Broz + * Copyright (C) 2009-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2009-2026 Milan Broz */ #ifndef _LIBCRYPTSETUP_MACROS_H diff --git a/lib/libcryptsetup_symver.h b/lib/libcryptsetup_symver.h index 6d18ab537..b42ea01e8 100644 --- a/lib/libcryptsetup_symver.h +++ b/lib/libcryptsetup_symver.h @@ -2,7 +2,7 @@ /* * Helpers for defining versioned symbols * - * Copyright (C) 2021-2025 Red Hat, Inc. All rights reserved. + * Copyright (C) 2021-2026 Red Hat, Inc. All rights reserved. */ #ifndef _LIBCRYPTSETUP_SYMVER_H diff --git a/lib/libdevmapper.c b/lib/libdevmapper.c index 53f9bfa0c..42fc52047 100644 --- a/lib/libdevmapper.c +++ b/lib/libdevmapper.c @@ -4,8 +4,8 @@ * * Copyright (C) 2004 Jana Saout * Copyright (C) 2004-2007 Clemens Fruhwirth - * Copyright (C) 2009-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2009-2025 Milan Broz + * Copyright (C) 2009-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2009-2026 Milan Broz */ #include diff --git a/lib/loopaes/loopaes.c b/lib/loopaes/loopaes.c index bdd9ded7f..029468593 100644 --- a/lib/loopaes/loopaes.c +++ b/lib/loopaes/loopaes.c @@ -2,8 +2,8 @@ /* * loop-AES compatible volume handling * - * Copyright (C) 2011-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2011-2025 Milan Broz + * Copyright (C) 2011-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2011-2026 Milan Broz */ #include diff --git a/lib/loopaes/loopaes.h b/lib/loopaes/loopaes.h index 425ca222e..5f7a35e60 100644 --- a/lib/loopaes/loopaes.h +++ b/lib/loopaes/loopaes.h @@ -2,8 +2,8 @@ /* * loop-AES compatible volume handling * - * Copyright (C) 2011-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2011-2025 Milan Broz + * Copyright (C) 2011-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2011-2026 Milan Broz */ #ifndef _LOOPAES_H diff --git a/lib/luks1/af.c b/lib/luks1/af.c index 7ab153d9e..3da43e16c 100644 --- a/lib/luks1/af.c +++ b/lib/luks1/af.c @@ -3,7 +3,7 @@ * AFsplitter - Anti forensic information splitter * * Copyright (C) 2004 Clemens Fruhwirth - * Copyright (C) 2009-2025 Red Hat, Inc. All rights reserved. + * Copyright (C) 2009-2026 Red Hat, Inc. All rights reserved. * * AFsplitter diffuses information over a large stripe of data, * therefore supporting secure data destruction. diff --git a/lib/luks1/af.h b/lib/luks1/af.h index 08f3757f5..6dd24450b 100644 --- a/lib/luks1/af.h +++ b/lib/luks1/af.h @@ -3,7 +3,7 @@ * AFsplitter - Anti forensic information splitter * * Copyright (C) 2004 Clemens Fruhwirth - * Copyright (C) 2009-2025 Red Hat, Inc. All rights reserved. + * Copyright (C) 2009-2026 Red Hat, Inc. All rights reserved. */ #ifndef INCLUDED_CRYPTSETUP_LUKS_AF_H diff --git a/lib/luks1/keyencryption.c b/lib/luks1/keyencryption.c index de8aa30e3..fa551074a 100644 --- a/lib/luks1/keyencryption.c +++ b/lib/luks1/keyencryption.c @@ -3,8 +3,8 @@ * LUKS - Linux Unified Key Setup * * Copyright (C) 2004-2006 Clemens Fruhwirth - * Copyright (C) 2009-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2012-2025 Milan Broz + * Copyright (C) 2009-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2012-2026 Milan Broz */ #include diff --git a/lib/luks1/keymanage.c b/lib/luks1/keymanage.c index e08a3a5bc..7fb132dbc 100644 --- a/lib/luks1/keymanage.c +++ b/lib/luks1/keymanage.c @@ -3,8 +3,8 @@ * LUKS - Linux Unified Key Setup * * Copyright (C) 2004-2006 Clemens Fruhwirth - * Copyright (C) 2009-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2013-2025 Milan Broz + * Copyright (C) 2009-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2013-2026 Milan Broz */ #include diff --git a/lib/luks1/luks.h b/lib/luks1/luks.h index 80f654456..f1545f401 100644 --- a/lib/luks1/luks.h +++ b/lib/luks1/luks.h @@ -3,7 +3,7 @@ * LUKS - Linux Unified Key Setup * * Copyright (C) 2004-2006 Clemens Fruhwirth - * Copyright (C) 2009-2025 Red Hat, Inc. All rights reserved. + * Copyright (C) 2009-2026 Red Hat, Inc. All rights reserved. */ #ifndef INCLUDED_CRYPTSETUP_LUKS_LUKS_H diff --git a/lib/luks2/hw_opal/hw_opal.c b/lib/luks2/hw_opal/hw_opal.c index 62e72cb35..0d14e909d 100644 --- a/lib/luks2/hw_opal/hw_opal.c +++ b/lib/luks2/hw_opal/hw_opal.c @@ -3,8 +3,8 @@ * OPAL utilities * * Copyright (C) 2022-2023 Luca Boccassi - * Copyright (C) 2023-2025 Ondrej Kozina - * Copyright (C) 2024-2025 Milan Broz + * Copyright (C) 2023-2026 Ondrej Kozina + * Copyright (C) 2024-2026 Milan Broz */ #include diff --git a/lib/luks2/hw_opal/hw_opal.h b/lib/luks2/hw_opal/hw_opal.h index 427c598c9..0ab254d51 100644 --- a/lib/luks2/hw_opal/hw_opal.h +++ b/lib/luks2/hw_opal/hw_opal.h @@ -3,8 +3,8 @@ * OPAL utilities * * Copyright (C) 2022-2023 Luca Boccassi - * Copyright (C) 2023-2025 Ondrej Kozina - * Copyright (C) 2024-2025 Milan Broz + * Copyright (C) 2023-2026 Ondrej Kozina + * Copyright (C) 2024-2026 Milan Broz */ #ifndef _UTILS_OPAL diff --git a/lib/luks2/luks2.h b/lib/luks2/luks2.h index 50c5abe41..d4f1624cb 100644 --- a/lib/luks2/luks2.h +++ b/lib/luks2/luks2.h @@ -2,8 +2,8 @@ /* * LUKS - Linux Unified Key Setup v2 * - * Copyright (C) 2015-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2015-2025 Milan Broz + * Copyright (C) 2015-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2015-2026 Milan Broz */ #ifndef _CRYPTSETUP_LUKS2_ONDISK_H diff --git a/lib/luks2/luks2_digest.c b/lib/luks2/luks2_digest.c index 2ced2c601..f1fdfc9e5 100644 --- a/lib/luks2/luks2_digest.c +++ b/lib/luks2/luks2_digest.c @@ -2,8 +2,8 @@ /* * LUKS - Linux Unified Key Setup v2, digest handling * - * Copyright (C) 2015-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2015-2025 Milan Broz + * Copyright (C) 2015-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2015-2026 Milan Broz */ #include "luks2_internal.h" diff --git a/lib/luks2/luks2_digest_pbkdf2.c b/lib/luks2/luks2_digest_pbkdf2.c index e5e06eee2..ecc526342 100644 --- a/lib/luks2/luks2_digest_pbkdf2.c +++ b/lib/luks2/luks2_digest_pbkdf2.c @@ -2,8 +2,8 @@ /* * LUKS - Linux Unified Key Setup v2, PBKDF2 digest handler (LUKS1 compatible) * - * Copyright (C) 2015-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2015-2025 Milan Broz + * Copyright (C) 2015-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2015-2026 Milan Broz */ #include "luks2_internal.h" diff --git a/lib/luks2/luks2_disk_metadata.c b/lib/luks2/luks2_disk_metadata.c index f9497b1e4..ee88b71d7 100644 --- a/lib/luks2/luks2_disk_metadata.c +++ b/lib/luks2/luks2_disk_metadata.c @@ -2,8 +2,8 @@ /* * LUKS - Linux Unified Key Setup v2 * - * Copyright (C) 2015-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2015-2025 Milan Broz + * Copyright (C) 2015-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2015-2026 Milan Broz */ #include "luks2_internal.h" diff --git a/lib/luks2/luks2_internal.h b/lib/luks2/luks2_internal.h index 2603f0ea0..b9244ea7a 100644 --- a/lib/luks2/luks2_internal.h +++ b/lib/luks2/luks2_internal.h @@ -2,8 +2,8 @@ /* * LUKS - Linux Unified Key Setup v2 (with JSON internals) * - * Copyright (C) 2015-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2015-2025 Milan Broz + * Copyright (C) 2015-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2015-2026 Milan Broz */ #ifndef _CRYPTSETUP_LUKS2_INTERNAL_H diff --git a/lib/luks2/luks2_json_format.c b/lib/luks2/luks2_json_format.c index 7937f77f7..9b249977f 100644 --- a/lib/luks2/luks2_json_format.c +++ b/lib/luks2/luks2_json_format.c @@ -2,8 +2,8 @@ /* * LUKS - Linux Unified Key Setup v2, LUKS2 header format code * - * Copyright (C) 2015-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2015-2025 Milan Broz + * Copyright (C) 2015-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2015-2026 Milan Broz */ #include "luks2_internal.h" diff --git a/lib/luks2/luks2_json_metadata.c b/lib/luks2/luks2_json_metadata.c index 792d961ad..d9755c70c 100644 --- a/lib/luks2/luks2_json_metadata.c +++ b/lib/luks2/luks2_json_metadata.c @@ -2,9 +2,9 @@ /* * LUKS - Linux Unified Key Setup v2 * - * Copyright (C) 2015-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2015-2025 Milan Broz - * Copyright (C) 2015-2025 Ondrej Kozina + * Copyright (C) 2015-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2015-2026 Milan Broz + * Copyright (C) 2015-2026 Ondrej Kozina */ #include "luks2_internal.h" diff --git a/lib/luks2/luks2_keyslot.c b/lib/luks2/luks2_keyslot.c index 318555794..5947fe17a 100644 --- a/lib/luks2/luks2_keyslot.c +++ b/lib/luks2/luks2_keyslot.c @@ -2,8 +2,8 @@ /* * LUKS - Linux Unified Key Setup v2, keyslot handling * - * Copyright (C) 2015-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2015-2025 Milan Broz + * Copyright (C) 2015-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2015-2026 Milan Broz */ #include "luks2_internal.h" diff --git a/lib/luks2/luks2_keyslot_luks2.c b/lib/luks2/luks2_keyslot_luks2.c index 92b4788e2..0b7d8d4b2 100644 --- a/lib/luks2/luks2_keyslot_luks2.c +++ b/lib/luks2/luks2_keyslot_luks2.c @@ -2,8 +2,8 @@ /* * LUKS - Linux Unified Key Setup v2, LUKS2 type keyslot handler * - * Copyright (C) 2015-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2015-2025 Milan Broz + * Copyright (C) 2015-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2015-2026 Milan Broz */ #include diff --git a/lib/luks2/luks2_keyslot_reenc.c b/lib/luks2/luks2_keyslot_reenc.c index 180ac56b8..e2806f6ae 100644 --- a/lib/luks2/luks2_keyslot_reenc.c +++ b/lib/luks2/luks2_keyslot_reenc.c @@ -2,8 +2,8 @@ /* * LUKS - Linux Unified Key Setup v2, reencryption keyslot handler * - * Copyright (C) 2016-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2016-2025 Ondrej Kozina + * Copyright (C) 2016-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2016-2026 Ondrej Kozina */ #include "luks2_internal.h" diff --git a/lib/luks2/luks2_luks1_convert.c b/lib/luks2/luks2_luks1_convert.c index 73ff8c3ac..8e4d46ecb 100644 --- a/lib/luks2/luks2_luks1_convert.c +++ b/lib/luks2/luks2_luks1_convert.c @@ -2,9 +2,9 @@ /* * LUKS - Linux Unified Key Setup v2, LUKS1 conversion code * - * Copyright (C) 2015-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2015-2025 Ondrej Kozina - * Copyright (C) 2015-2025 Milan Broz + * Copyright (C) 2015-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2015-2026 Ondrej Kozina + * Copyright (C) 2015-2026 Milan Broz */ #include "luks2_internal.h" diff --git a/lib/luks2/luks2_reencrypt.c b/lib/luks2/luks2_reencrypt.c index 0f80eff24..5c4cf58da 100644 --- a/lib/luks2/luks2_reencrypt.c +++ b/lib/luks2/luks2_reencrypt.c @@ -2,8 +2,8 @@ /* * LUKS - Linux Unified Key Setup v2, reencryption helpers * - * Copyright (C) 2015-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2015-2025 Ondrej Kozina + * Copyright (C) 2015-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2015-2026 Ondrej Kozina */ #include "luks2_internal.h" diff --git a/lib/luks2/luks2_reencrypt_digest.c b/lib/luks2/luks2_reencrypt_digest.c index 6dd7a1478..aee907147 100644 --- a/lib/luks2/luks2_reencrypt_digest.c +++ b/lib/luks2/luks2_reencrypt_digest.c @@ -2,9 +2,9 @@ /* * LUKS - Linux Unified Key Setup v2, reencryption digest helpers * - * Copyright (C) 2022-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2022-2025 Ondrej Kozina - * Copyright (C) 2022-2025 Milan Broz + * Copyright (C) 2022-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2022-2026 Ondrej Kozina + * Copyright (C) 2022-2026 Milan Broz */ #include "luks2_internal.h" diff --git a/lib/luks2/luks2_segment.c b/lib/luks2/luks2_segment.c index 6284ca8ba..0990f0ed2 100644 --- a/lib/luks2/luks2_segment.c +++ b/lib/luks2/luks2_segment.c @@ -2,8 +2,8 @@ /* * LUKS - Linux Unified Key Setup v2, internal segment handling * - * Copyright (C) 2018-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2018-2025 Ondrej Kozina + * Copyright (C) 2018-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2018-2026 Ondrej Kozina */ #include "luks2_internal.h" diff --git a/lib/luks2/luks2_token.c b/lib/luks2/luks2_token.c index b924e97aa..9244a9522 100644 --- a/lib/luks2/luks2_token.c +++ b/lib/luks2/luks2_token.c @@ -2,8 +2,8 @@ /* * LUKS - Linux Unified Key Setup v2, token handling * - * Copyright (C) 2016-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2016-2025 Milan Broz + * Copyright (C) 2016-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2016-2026 Milan Broz */ #include diff --git a/lib/luks2/luks2_token_keyring.c b/lib/luks2/luks2_token_keyring.c index c8a33a526..63f6a452a 100644 --- a/lib/luks2/luks2_token_keyring.c +++ b/lib/luks2/luks2_token_keyring.c @@ -2,8 +2,8 @@ /* * LUKS - Linux Unified Key Setup v2, kernel keyring token * - * Copyright (C) 2016-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2016-2025 Ondrej Kozina + * Copyright (C) 2016-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2016-2026 Ondrej Kozina */ #include "luks2_internal.h" diff --git a/lib/random.c b/lib/random.c index 06d2713ae..28a184a8b 100644 --- a/lib/random.c +++ b/lib/random.c @@ -2,7 +2,7 @@ /* * cryptsetup kernel RNG access functions * - * Copyright (C) 2010-2025 Red Hat, Inc. All rights reserved. + * Copyright (C) 2010-2026 Red Hat, Inc. All rights reserved. */ #include diff --git a/lib/setup.c b/lib/setup.c index 7281415c7..5b91c492a 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -4,8 +4,8 @@ * * Copyright (C) 2004 Jana Saout * Copyright (C) 2004-2007 Clemens Fruhwirth - * Copyright (C) 2009-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2009-2025 Milan Broz + * Copyright (C) 2009-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2009-2026 Milan Broz */ #include diff --git a/lib/tcrypt/tcrypt.c b/lib/tcrypt/tcrypt.c index d23cc0630..9e99a6151 100644 --- a/lib/tcrypt/tcrypt.c +++ b/lib/tcrypt/tcrypt.c @@ -2,8 +2,8 @@ /* * TCRYPT (TrueCrypt-compatible) and VeraCrypt volume handling * - * Copyright (C) 2012-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2012-2025 Milan Broz + * Copyright (C) 2012-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2012-2026 Milan Broz */ #include diff --git a/lib/tcrypt/tcrypt.h b/lib/tcrypt/tcrypt.h index db3b723cf..266b8b8c6 100644 --- a/lib/tcrypt/tcrypt.h +++ b/lib/tcrypt/tcrypt.h @@ -2,8 +2,8 @@ /* * TCRYPT (TrueCrypt-compatible) header definition * - * Copyright (C) 2012-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2012-2025 Milan Broz + * Copyright (C) 2012-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2012-2026 Milan Broz */ #ifndef _CRYPTSETUP_TCRYPT_H diff --git a/lib/utils.c b/lib/utils.c index afde5689d..3f5fddfe0 100644 --- a/lib/utils.c +++ b/lib/utils.c @@ -4,8 +4,8 @@ * * Copyright (C) 2004 Jana Saout * Copyright (C) 2004-2007 Clemens Fruhwirth - * Copyright (C) 2009-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2009-2025 Milan Broz + * Copyright (C) 2009-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2009-2026 Milan Broz */ #include diff --git a/lib/utils_benchmark.c b/lib/utils_benchmark.c index 3694f2722..7c5ca0381 100644 --- a/lib/utils_benchmark.c +++ b/lib/utils_benchmark.c @@ -2,8 +2,8 @@ /* * libcryptsetup - cryptsetup library, cipher benchmark * - * Copyright (C) 2012-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2012-2025 Milan Broz + * Copyright (C) 2012-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2012-2026 Milan Broz */ #include diff --git a/lib/utils_blkid.c b/lib/utils_blkid.c index c65d51ffa..c2bcb40ae 100644 --- a/lib/utils_blkid.c +++ b/lib/utils_blkid.c @@ -2,7 +2,7 @@ /* * blkid probe utilities * - * Copyright (C) 2018-2025 Red Hat, Inc. All rights reserved. + * Copyright (C) 2018-2026 Red Hat, Inc. All rights reserved. */ #include diff --git a/lib/utils_blkid.h b/lib/utils_blkid.h index 211257510..87caeed7c 100644 --- a/lib/utils_blkid.h +++ b/lib/utils_blkid.h @@ -2,7 +2,7 @@ /* * blkid probe utilities * - * Copyright (C) 2018-2025 Red Hat, Inc. All rights reserved. + * Copyright (C) 2018-2026 Red Hat, Inc. All rights reserved. */ #ifndef _UTILS_BLKID_H diff --git a/lib/utils_crypt.c b/lib/utils_crypt.c index 76bcfac2b..b2da0e721 100644 --- a/lib/utils_crypt.c +++ b/lib/utils_crypt.c @@ -3,8 +3,8 @@ * utils_crypt - cipher utilities for cryptsetup * * Copyright (C) 2004-2007 Clemens Fruhwirth - * Copyright (C) 2009-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2009-2025 Milan Broz + * Copyright (C) 2009-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2009-2026 Milan Broz */ #include diff --git a/lib/utils_crypt.h b/lib/utils_crypt.h index 21cf4b5c1..2183cf121 100644 --- a/lib/utils_crypt.h +++ b/lib/utils_crypt.h @@ -3,8 +3,8 @@ * utils_crypt - cipher utilities for cryptsetup * * Copyright (C) 2004-2007 Clemens Fruhwirth - * Copyright (C) 2009-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2009-2025 Milan Broz + * Copyright (C) 2009-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2009-2026 Milan Broz */ #ifndef _UTILS_CRYPT_H diff --git a/lib/utils_device.c b/lib/utils_device.c index c24cf0a6c..a26707883 100644 --- a/lib/utils_device.c +++ b/lib/utils_device.c @@ -4,8 +4,8 @@ * * Copyright (C) 2004 Jana Saout * Copyright (C) 2004-2007 Clemens Fruhwirth - * Copyright (C) 2009-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2009-2025 Milan Broz + * Copyright (C) 2009-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2009-2026 Milan Broz */ #include diff --git a/lib/utils_device_locking.c b/lib/utils_device_locking.c index f6995859e..6b34ecf2d 100644 --- a/lib/utils_device_locking.c +++ b/lib/utils_device_locking.c @@ -2,8 +2,8 @@ /* * Metadata on-disk locking for processes serialization * - * Copyright (C) 2016-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2016-2025 Ondrej Kozina + * Copyright (C) 2016-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2016-2026 Ondrej Kozina */ #include diff --git a/lib/utils_device_locking.h b/lib/utils_device_locking.h index 9cc25cac4..f0949de10 100644 --- a/lib/utils_device_locking.h +++ b/lib/utils_device_locking.h @@ -2,8 +2,8 @@ /* * Metadata on-disk locking for processes serialization * - * Copyright (C) 2016-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2016-2025 Ondrej Kozina + * Copyright (C) 2016-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2016-2026 Ondrej Kozina */ #ifndef _CRYPTSETUP_UTILS_LOCKING_H diff --git a/lib/utils_devpath.c b/lib/utils_devpath.c index 28039f0d9..972277393 100644 --- a/lib/utils_devpath.c +++ b/lib/utils_devpath.c @@ -4,8 +4,8 @@ * * Copyright (C) 2004 Jana Saout * Copyright (C) 2004-2007 Clemens Fruhwirth - * Copyright (C) 2009-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2009-2025 Milan Broz + * Copyright (C) 2009-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2009-2026 Milan Broz */ #include diff --git a/lib/utils_dm.h b/lib/utils_dm.h index f76ff2f4a..7b8cb4658 100644 --- a/lib/utils_dm.h +++ b/lib/utils_dm.h @@ -4,8 +4,8 @@ * * Copyright (C) 2004 Jana Saout * Copyright (C) 2004-2007 Clemens Fruhwirth - * Copyright (C) 2009-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2009-2025 Milan Broz + * Copyright (C) 2009-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2009-2026 Milan Broz */ #ifndef _UTILS_DM_H diff --git a/lib/utils_io.c b/lib/utils_io.c index 801f6d6fb..509e85419 100644 --- a/lib/utils_io.c +++ b/lib/utils_io.c @@ -4,8 +4,8 @@ * * Copyright (C) 2004 Jana Saout * Copyright (C) 2004-2007 Clemens Fruhwirth - * Copyright (C) 2009-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2009-2025 Milan Broz + * Copyright (C) 2009-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2009-2026 Milan Broz */ #include diff --git a/lib/utils_io.h b/lib/utils_io.h index f80cf17fa..a6f36ab64 100644 --- a/lib/utils_io.h +++ b/lib/utils_io.h @@ -4,8 +4,8 @@ * * Copyright (C) 2004 Jana Saout * Copyright (C) 2004-2007 Clemens Fruhwirth - * Copyright (C) 2009-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2009-2025 Milan Broz + * Copyright (C) 2009-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2009-2026 Milan Broz */ #ifndef _CRYPTSETUP_UTILS_IO_H diff --git a/lib/utils_keyring.c b/lib/utils_keyring.c index 73df3461b..da1ccd85c 100644 --- a/lib/utils_keyring.c +++ b/lib/utils_keyring.c @@ -2,8 +2,8 @@ /* * kernel keyring utilities * - * Copyright (C) 2016-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2016-2025 Ondrej Kozina + * Copyright (C) 2016-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2016-2026 Ondrej Kozina */ #include diff --git a/lib/utils_keyring.h b/lib/utils_keyring.h index 67debf62a..5809f70d0 100644 --- a/lib/utils_keyring.h +++ b/lib/utils_keyring.h @@ -2,8 +2,8 @@ /* * kernel keyring syscall wrappers * - * Copyright (C) 2016-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2016-2025 Ondrej Kozina + * Copyright (C) 2016-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2016-2026 Ondrej Kozina */ #ifndef _UTILS_KEYRING diff --git a/lib/utils_loop.c b/lib/utils_loop.c index 4e5d8e0f4..7fe1bfdac 100644 --- a/lib/utils_loop.c +++ b/lib/utils_loop.c @@ -2,8 +2,8 @@ /* * loopback block device utilities * - * Copyright (C) 2009-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2009-2025 Milan Broz + * Copyright (C) 2009-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2009-2026 Milan Broz */ #include diff --git a/lib/utils_loop.h b/lib/utils_loop.h index a966a02cd..bd8de20a2 100644 --- a/lib/utils_loop.h +++ b/lib/utils_loop.h @@ -2,8 +2,8 @@ /* * loopback block device utilities * - * Copyright (C) 2009-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2009-2025 Milan Broz + * Copyright (C) 2009-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2009-2026 Milan Broz */ #ifndef _UTILS_LOOP_H diff --git a/lib/utils_pbkdf.c b/lib/utils_pbkdf.c index 87e941973..36cfa2f1c 100644 --- a/lib/utils_pbkdf.c +++ b/lib/utils_pbkdf.c @@ -2,8 +2,8 @@ /* * utils_pbkdf - PBKDF settings for libcryptsetup * - * Copyright (C) 2009-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2009-2025 Milan Broz + * Copyright (C) 2009-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2009-2026 Milan Broz */ #include diff --git a/lib/utils_safe_memory.c b/lib/utils_safe_memory.c index 5ee68d2d4..a8d0e1067 100644 --- a/lib/utils_safe_memory.c +++ b/lib/utils_safe_memory.c @@ -2,8 +2,8 @@ /* * utils_safe_memory - safe memory helpers * - * Copyright (C) 2009-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2009-2025 Milan Broz + * Copyright (C) 2009-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2009-2026 Milan Broz */ #include diff --git a/lib/utils_storage_wrappers.c b/lib/utils_storage_wrappers.c index 7a2420859..09283b9e9 100644 --- a/lib/utils_storage_wrappers.c +++ b/lib/utils_storage_wrappers.c @@ -3,7 +3,7 @@ * Generic wrapper for storage functions * (experimental only) * - * Copyright (C) 2018-2025 Ondrej Kozina + * Copyright (C) 2018-2026 Ondrej Kozina */ #include diff --git a/lib/utils_storage_wrappers.h b/lib/utils_storage_wrappers.h index 23a963070..4f830294a 100644 --- a/lib/utils_storage_wrappers.h +++ b/lib/utils_storage_wrappers.h @@ -3,7 +3,7 @@ * Generic wrapper for storage functions * (experimental only) * - * Copyright (C) 2018-2025 Ondrej Kozina + * Copyright (C) 2018-2026 Ondrej Kozina */ #ifndef _UTILS_STORAGE_WRAPPERS_H diff --git a/lib/utils_wipe.c b/lib/utils_wipe.c index 6a26dedfd..67a3e01fc 100644 --- a/lib/utils_wipe.c +++ b/lib/utils_wipe.c @@ -3,8 +3,8 @@ * utils_wipe - wipe a device * * Copyright (C) 2004-2007 Clemens Fruhwirth - * Copyright (C) 2009-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2009-2025 Milan Broz + * Copyright (C) 2009-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2009-2026 Milan Broz */ #include diff --git a/lib/verity/rs.h b/lib/verity/rs.h index 195e00c7c..72479108f 100644 --- a/lib/verity/rs.h +++ b/lib/verity/rs.h @@ -4,7 +4,7 @@ * * Copyright (C) 2004 Phil Karn, KA9Q * libcryptsetup modifications - * Copyright (C) 2017-2025 Red Hat, Inc. All rights reserved. + * Copyright (C) 2017-2026 Red Hat, Inc. All rights reserved. */ #ifndef _LIBFEC_RS_H diff --git a/lib/verity/rs_decode_char.c b/lib/verity/rs_decode_char.c index f819dea09..3f2541f57 100644 --- a/lib/verity/rs_decode_char.c +++ b/lib/verity/rs_decode_char.c @@ -4,7 +4,7 @@ * * Copyright (C) 2002, Phil Karn, KA9Q * libcryptsetup modifications - * Copyright (C) 2017-2025 Red Hat, Inc. All rights reserved. + * Copyright (C) 2017-2026 Red Hat, Inc. All rights reserved. */ #include diff --git a/lib/verity/rs_encode_char.c b/lib/verity/rs_encode_char.c index 8d1b6c3d5..ef3c3be3f 100644 --- a/lib/verity/rs_encode_char.c +++ b/lib/verity/rs_encode_char.c @@ -4,7 +4,7 @@ * * Copyright (C) 2002, Phil Karn, KA9Q * libcryptsetup modifications - * Copyright (C) 2017-2025 Red Hat, Inc. All rights reserved. + * Copyright (C) 2017-2026 Red Hat, Inc. All rights reserved. */ #include diff --git a/lib/verity/verity.c b/lib/verity/verity.c index ce19dac05..c5f7c3fd3 100644 --- a/lib/verity/verity.c +++ b/lib/verity/verity.c @@ -2,7 +2,7 @@ /* * dm-verity volume handling * - * Copyright (C) 2012-2025 Red Hat, Inc. All rights reserved. + * Copyright (C) 2012-2026 Red Hat, Inc. All rights reserved. */ #include diff --git a/lib/verity/verity.h b/lib/verity/verity.h index 7d7981026..328150fe9 100644 --- a/lib/verity/verity.h +++ b/lib/verity/verity.h @@ -2,7 +2,7 @@ /* * dm-verity volume handling * - * Copyright (C) 2012-2025 Red Hat, Inc. All rights reserved. + * Copyright (C) 2012-2026 Red Hat, Inc. All rights reserved. */ #ifndef _VERITY_H diff --git a/lib/verity/verity_fec.c b/lib/verity/verity_fec.c index 2dfb4ac1b..bd15feb28 100644 --- a/lib/verity/verity_fec.c +++ b/lib/verity/verity_fec.c @@ -3,7 +3,7 @@ * dm-verity Forward Error Correction (FEC) support * * Copyright (C) 2015 Google, Inc. All rights reserved. - * Copyright (C) 2017-2025 Red Hat, Inc. All rights reserved. + * Copyright (C) 2017-2026 Red Hat, Inc. All rights reserved. */ #include diff --git a/lib/verity/verity_hash.c b/lib/verity/verity_hash.c index 2949afdde..8bcc39aa2 100644 --- a/lib/verity/verity_hash.c +++ b/lib/verity/verity_hash.c @@ -2,7 +2,7 @@ /* * dm-verity volume handling * - * Copyright (C) 2012-2025 Red Hat, Inc. All rights reserved. + * Copyright (C) 2012-2026 Red Hat, Inc. All rights reserved. */ #include diff --git a/lib/volumekey.c b/lib/volumekey.c index afa0cb898..bcd8349ae 100644 --- a/lib/volumekey.c +++ b/lib/volumekey.c @@ -3,7 +3,7 @@ * cryptsetup volume key implementation * * Copyright (C) 2004-2006 Clemens Fruhwirth - * Copyright (C) 2010-2025 Red Hat, Inc. All rights reserved. + * Copyright (C) 2010-2026 Red Hat, Inc. All rights reserved. */ #include diff --git a/src/cryptsetup.c b/src/cryptsetup.c index 853de5cb3..ba2bb7981 100644 --- a/src/cryptsetup.c +++ b/src/cryptsetup.c @@ -4,8 +4,8 @@ * * Copyright (C) 2004 Jana Saout * Copyright (C) 2004-2007 Clemens Fruhwirth - * Copyright (C) 2009-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2009-2025 Milan Broz + * Copyright (C) 2009-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2009-2026 Milan Broz */ #include diff --git a/src/cryptsetup.h b/src/cryptsetup.h index c0cd88a61..2485d9d05 100644 --- a/src/cryptsetup.h +++ b/src/cryptsetup.h @@ -4,8 +4,8 @@ * * Copyright (C) 2004 Jana Saout * Copyright (C) 2004-2007 Clemens Fruhwirth - * Copyright (C) 2009-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2009-2025 Milan Broz + * Copyright (C) 2009-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2009-2026 Milan Broz */ #ifndef CRYPTSETUP_H diff --git a/src/cryptsetup_arg_list.h b/src/cryptsetup_arg_list.h index 674d37475..1f470c2d4 100644 --- a/src/cryptsetup_arg_list.h +++ b/src/cryptsetup_arg_list.h @@ -2,8 +2,8 @@ /* * Cryptsetup command line arguments list * - * Copyright (C) 2020-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2020-2025 Ondrej Kozina + * Copyright (C) 2020-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2020-2026 Ondrej Kozina */ /* long name, short name, popt type, help description, units, internal argument type, default value, allowed actions (empty=global) */ diff --git a/src/cryptsetup_args.h b/src/cryptsetup_args.h index 2009e24f3..696cbd148 100644 --- a/src/cryptsetup_args.h +++ b/src/cryptsetup_args.h @@ -2,8 +2,8 @@ /* * Command line arguments helpers * - * Copyright (C) 2020-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2020-2025 Ondrej Kozina + * Copyright (C) 2020-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2020-2026 Ondrej Kozina */ #ifndef CRYPTSETUP_ARGS_H diff --git a/src/integritysetup.c b/src/integritysetup.c index 037fe7116..cebf92d95 100644 --- a/src/integritysetup.c +++ b/src/integritysetup.c @@ -2,8 +2,8 @@ /* * integritysetup - setup integrity protected volumes for dm-integrity * - * Copyright (C) 2017-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2017-2025 Milan Broz + * Copyright (C) 2017-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2017-2026 Milan Broz */ #include diff --git a/src/integritysetup_arg_list.h b/src/integritysetup_arg_list.h index ada8e2803..8f6d325b6 100644 --- a/src/integritysetup_arg_list.h +++ b/src/integritysetup_arg_list.h @@ -2,8 +2,8 @@ /* * Integritysetup command line arguments list * - * Copyright (C) 2020-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2020-2025 Ondrej Kozina + * Copyright (C) 2020-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2020-2026 Ondrej Kozina */ /* long name, short name, popt type, help description, units, internal argument type, default value */ diff --git a/src/integritysetup_args.h b/src/integritysetup_args.h index 1f4cb7d39..adb18c2e3 100644 --- a/src/integritysetup_args.h +++ b/src/integritysetup_args.h @@ -2,8 +2,8 @@ /* * Command line arguments helpers * - * Copyright (C) 2020-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2020-2025 Ondrej Kozina + * Copyright (C) 2020-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2020-2026 Ondrej Kozina */ #ifndef INTEGRITYSETUP_ARGS_H diff --git a/src/utils_arg_macros.h b/src/utils_arg_macros.h index a92468bbc..21120b44f 100644 --- a/src/utils_arg_macros.h +++ b/src/utils_arg_macros.h @@ -2,8 +2,8 @@ /* * Command line arguments parsing helpers * - * Copyright (C) 2020-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2020-2025 Ondrej Kozina + * Copyright (C) 2020-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2020-2026 Ondrej Kozina */ #ifndef UTILS_ARG_MACROS_H diff --git a/src/utils_arg_names.h b/src/utils_arg_names.h index 89d8b75df..e8777a834 100644 --- a/src/utils_arg_names.h +++ b/src/utils_arg_names.h @@ -2,8 +2,8 @@ /* * Command line arguments name list * - * Copyright (C) 2020-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2020-2025 Ondrej Kozina + * Copyright (C) 2020-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2020-2026 Ondrej Kozina */ #ifndef UTILS_ARG_NAMES_H diff --git a/src/utils_args.c b/src/utils_args.c index e2a60857e..6984941d7 100644 --- a/src/utils_args.c +++ b/src/utils_args.c @@ -2,8 +2,8 @@ /* * Command line arguments parsing helpers * - * Copyright (C) 2020-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2020-2025 Ondrej Kozina + * Copyright (C) 2020-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2020-2026 Ondrej Kozina */ #include "cryptsetup.h" diff --git a/src/utils_blockdev.c b/src/utils_blockdev.c index dab541d37..7393c3016 100644 --- a/src/utils_blockdev.c +++ b/src/utils_blockdev.c @@ -2,8 +2,8 @@ /* * Linux block devices helpers * - * Copyright (C) 2018-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2018-2025 Ondrej Kozina + * Copyright (C) 2018-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2018-2026 Ondrej Kozina */ #include "cryptsetup.h" diff --git a/src/utils_key_description.c b/src/utils_key_description.c index 610e578e5..96c14d326 100644 --- a/src/utils_key_description.c +++ b/src/utils_key_description.c @@ -2,9 +2,9 @@ /* * Password quality check wrapper * - * Copyright (C) 2023-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2023-2025 Ondrej Kozina - * Copyright (C) 2023-2025 Milan Broz + * Copyright (C) 2023-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2023-2026 Ondrej Kozina + * Copyright (C) 2023-2026 Milan Broz */ #include "cryptsetup.h" diff --git a/src/utils_keyslot_check.c b/src/utils_keyslot_check.c index 7db6d6039..79ecdf46c 100644 --- a/src/utils_keyslot_check.c +++ b/src/utils_keyslot_check.c @@ -2,7 +2,7 @@ /* * cryptsetup - keyslot randomness check * - * Copyright (C) 2024-2025 Milan Broz + * Copyright (C) 2024-2026 Milan Broz */ #include diff --git a/src/utils_luks.c b/src/utils_luks.c index e9a29890c..64474b3de 100644 --- a/src/utils_luks.c +++ b/src/utils_luks.c @@ -2,9 +2,9 @@ /* * Helper utilities for LUKS2 features * - * Copyright (C) 2018-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2018-2025 Milan Broz - * Copyright (C) 2018-2025 Ondrej Kozina + * Copyright (C) 2018-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2018-2026 Milan Broz + * Copyright (C) 2018-2026 Ondrej Kozina */ #include "cryptsetup.h" diff --git a/src/utils_luks.h b/src/utils_luks.h index 7ef597778..3ea9a0229 100644 --- a/src/utils_luks.h +++ b/src/utils_luks.h @@ -2,9 +2,9 @@ /* * Helper utilities for LUKS in cryptsetup * - * Copyright (C) 2018-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2018-2025 Milan Broz - * Copyright (C) 2018-2025 Ondrej Kozina + * Copyright (C) 2018-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2018-2026 Milan Broz + * Copyright (C) 2018-2026 Ondrej Kozina */ #ifndef UTILS_LUKS_H diff --git a/src/utils_password.c b/src/utils_password.c index 2e1178e16..52db9d00e 100644 --- a/src/utils_password.c +++ b/src/utils_password.c @@ -2,8 +2,8 @@ /* * Password quality check wrapper * - * Copyright (C) 2012-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2012-2025 Milan Broz + * Copyright (C) 2012-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2012-2026 Milan Broz */ #include "cryptsetup.h" diff --git a/src/utils_progress.c b/src/utils_progress.c index 26ba6574f..929b9edc4 100644 --- a/src/utils_progress.c +++ b/src/utils_progress.c @@ -2,8 +2,8 @@ /* * cryptsetup - progress output utilities * - * Copyright (C) 2009-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2009-2025 Milan Broz + * Copyright (C) 2009-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2009-2026 Milan Broz */ #include diff --git a/src/utils_reencrypt.c b/src/utils_reencrypt.c index b42a1d258..910cb94d7 100644 --- a/src/utils_reencrypt.c +++ b/src/utils_reencrypt.c @@ -2,9 +2,9 @@ /* * cryptsetup - action re-encryption utilities * - * Copyright (C) 2009-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2009-2025 Milan Broz - * Copyright (C) 2021-2025 Ondrej Kozina + * Copyright (C) 2009-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2009-2026 Milan Broz + * Copyright (C) 2021-2026 Ondrej Kozina */ #include diff --git a/src/utils_reencrypt_luks1.c b/src/utils_reencrypt_luks1.c index 6d960a488..b90f5add7 100644 --- a/src/utils_reencrypt_luks1.c +++ b/src/utils_reencrypt_luks1.c @@ -2,8 +2,8 @@ /* * cryptsetup - LUKS1 utility for offline re-encryption * - * Copyright (C) 2012-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2012-2025 Milan Broz + * Copyright (C) 2012-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2012-2026 Milan Broz */ #include diff --git a/src/utils_tools.c b/src/utils_tools.c index d96d1d462..e4c1dad5e 100644 --- a/src/utils_tools.c +++ b/src/utils_tools.c @@ -4,8 +4,8 @@ * * Copyright (C) 2004 Jana Saout * Copyright (C) 2004-2007 Clemens Fruhwirth - * Copyright (C) 2009-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2009-2025 Milan Broz + * Copyright (C) 2009-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2009-2026 Milan Broz */ #include "cryptsetup.h" diff --git a/src/veritysetup.c b/src/veritysetup.c index d95db09ba..9ea2696be 100644 --- a/src/veritysetup.c +++ b/src/veritysetup.c @@ -2,8 +2,8 @@ /* * veritysetup - setup cryptographic volumes for dm-verity * - * Copyright (C) 2012-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2012-2025 Milan Broz + * Copyright (C) 2012-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2012-2026 Milan Broz */ #include "cryptsetup.h" diff --git a/src/veritysetup_arg_list.h b/src/veritysetup_arg_list.h index 826044f06..adc918123 100644 --- a/src/veritysetup_arg_list.h +++ b/src/veritysetup_arg_list.h @@ -2,8 +2,8 @@ /* * Veritysetup command line arguments list * - * Copyright (C) 2020-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2020-2025 Ondrej Kozina + * Copyright (C) 2020-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2020-2026 Ondrej Kozina */ /* long name, short name, popt type, help description, units, internal argument type, default value, allowed actions (empty=global) */ diff --git a/src/veritysetup_args.h b/src/veritysetup_args.h index 6a056118e..b6fa6fe54 100644 --- a/src/veritysetup_args.h +++ b/src/veritysetup_args.h @@ -2,8 +2,8 @@ /* * Command line arguments helpers * - * Copyright (C) 2020-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2020-2025 Ondrej Kozina + * Copyright (C) 2020-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2020-2026 Ondrej Kozina */ #ifndef VERITYSETUP_ARGS_H diff --git a/tests/all-symbols-test.c b/tests/all-symbols-test.c index 14120cad5..6c0e40ba7 100644 --- a/tests/all-symbols-test.c +++ b/tests/all-symbols-test.c @@ -2,7 +2,7 @@ /* * Test utility checking symbol versions in libcryptsetup. * - * Copyright (C) 2021-2025 Red Hat, Inc. All rights reserved. + * Copyright (C) 2021-2026 Red Hat, Inc. All rights reserved. */ #include diff --git a/tests/api-test-2.c b/tests/api-test-2.c index e11841d2f..0523e11df 100644 --- a/tests/api-test-2.c +++ b/tests/api-test-2.c @@ -2,9 +2,9 @@ /* * cryptsetup library LUKS2 API check functions * - * Copyright (C) 2009-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2009-2025 Milan Broz - * Copyright (C) 2016-2025 Ondrej Kozina + * Copyright (C) 2009-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2009-2026 Milan Broz + * Copyright (C) 2016-2026 Ondrej Kozina */ #include diff --git a/tests/api-test.c b/tests/api-test.c index fe8bcfc39..fa30d9b19 100644 --- a/tests/api-test.c +++ b/tests/api-test.c @@ -2,9 +2,9 @@ /* * cryptsetup library API check functions * - * Copyright (C) 2009-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2009-2025 Milan Broz - * Copyright (C) 2016-2025 Ondrej Kozina + * Copyright (C) 2009-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2009-2026 Milan Broz + * Copyright (C) 2016-2026 Ondrej Kozina */ #include diff --git a/tests/api_test.h b/tests/api_test.h index afaae22e1..5533e0b31 100644 --- a/tests/api_test.h +++ b/tests/api_test.h @@ -2,9 +2,9 @@ /* * cryptsetup library API check functions * - * Copyright (C) 2009-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2009-2025 Milan Broz - * Copyright (C) 2016-2025 Ondrej Kozina + * Copyright (C) 2009-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2009-2026 Milan Broz + * Copyright (C) 2016-2026 Ondrej Kozina */ #ifndef API_TEST_H diff --git a/tests/crypto-check.c b/tests/crypto-check.c index cb34bc9c5..99772f6ea 100644 --- a/tests/crypto-check.c +++ b/tests/crypto-check.c @@ -2,7 +2,7 @@ /* * Test utility checking availability of crypto primitive in crypto backend. * - * Copyright (C) 2024-2025 Milan Broz + * Copyright (C) 2024-2026 Milan Broz */ #include diff --git a/tests/crypto-vectors.c b/tests/crypto-vectors.c index e06722f4e..0e7b29909 100644 --- a/tests/crypto-vectors.c +++ b/tests/crypto-vectors.c @@ -2,7 +2,7 @@ /* * cryptsetup crypto backend test vectors * - * Copyright (C) 2018-2025 Milan Broz + * Copyright (C) 2018-2026 Milan Broz */ #include diff --git a/tests/differ.c b/tests/differ.c index a713893f1..b116bdeee 100644 --- a/tests/differ.c +++ b/tests/differ.c @@ -2,7 +2,7 @@ /* * cryptsetup file differ check (rewritten Clemens' fileDiffer in Python) * - * Copyright (C) 2010-2025 Red Hat, Inc. All rights reserved. + * Copyright (C) 2010-2026 Red Hat, Inc. All rights reserved. */ #include diff --git a/tests/fuzz/crypt2_load_fuzz.cc b/tests/fuzz/crypt2_load_fuzz.cc index 84343b4ff..e1eb776a1 100644 --- a/tests/fuzz/crypt2_load_fuzz.cc +++ b/tests/fuzz/crypt2_load_fuzz.cc @@ -3,7 +3,7 @@ * cryptsetup LUKS2 fuzz target * * Copyright (C) 2022-2025 Daniel Zatovic - * Copyright (C) 2022-2025 Red Hat, Inc. All rights reserved. + * Copyright (C) 2022-2026 Red Hat, Inc. All rights reserved. */ extern "C" { diff --git a/tests/test_utils.c b/tests/test_utils.c index a9a730960..7fc787bb9 100644 --- a/tests/test_utils.c +++ b/tests/test_utils.c @@ -2,8 +2,8 @@ /* * cryptsetup library API test utilities * - * Copyright (C) 2009-2025 Red Hat, Inc. All rights reserved. - * Copyright (C) 2009-2025 Milan Broz + * Copyright (C) 2009-2026 Red Hat, Inc. All rights reserved. + * Copyright (C) 2009-2026 Milan Broz */ #include diff --git a/tests/unit-utils-crypt.c b/tests/unit-utils-crypt.c index e2e90125e..6876a09e8 100644 --- a/tests/unit-utils-crypt.c +++ b/tests/unit-utils-crypt.c @@ -2,7 +2,7 @@ /* * cryptsetup crypto name and hex conversion helper test vectors * - * Copyright (C) 2022-2025 Milan Broz + * Copyright (C) 2022-2026 Milan Broz */ #include diff --git a/tests/unit-utils-io.c b/tests/unit-utils-io.c index eaa7e8f20..0bdb74076 100644 --- a/tests/unit-utils-io.c +++ b/tests/unit-utils-io.c @@ -2,7 +2,7 @@ /* * simple unit test for utils_io.c (blockwise low level functions) * - * Copyright (C) 2018-2025 Red Hat, Inc. All rights reserved. + * Copyright (C) 2018-2026 Red Hat, Inc. All rights reserved. */ #include diff --git a/tests/unit-wipe.c b/tests/unit-wipe.c index cd0fd3784..dda9532db 100644 --- a/tests/unit-wipe.c +++ b/tests/unit-wipe.c @@ -2,7 +2,7 @@ /* * unit test helper for crypt_wipe API call * - * Copyright (C) 2022-2025 Milan Broz + * Copyright (C) 2022-2026 Milan Broz */ #include diff --git a/tokens/ssh/cryptsetup-ssh.c b/tokens/ssh/cryptsetup-ssh.c index f3c34e363..c65e7aa56 100644 --- a/tokens/ssh/cryptsetup-ssh.c +++ b/tokens/ssh/cryptsetup-ssh.c @@ -2,8 +2,8 @@ /* * Example of LUKS2 token storing third party metadata (EXPERIMENTAL EXAMPLE) * - * Copyright (C) 2016-2025 Milan Broz - * Copyright (C) 2021-2025 Vojtech Trefny + * Copyright (C) 2016-2026 Milan Broz + * Copyright (C) 2021-2026 Vojtech Trefny * * Use: * - generate ssh example token diff --git a/tokens/ssh/libcryptsetup-token-ssh.c b/tokens/ssh/libcryptsetup-token-ssh.c index cb13e777e..c42a49b94 100644 --- a/tokens/ssh/libcryptsetup-token-ssh.c +++ b/tokens/ssh/libcryptsetup-token-ssh.c @@ -2,8 +2,8 @@ /* * Example of LUKS2 ssh token handler (EXPERIMENTAL) * - * Copyright (C) 2016-2025 Milan Broz - * Copyright (C) 2020-2025 Vojtech Trefny + * Copyright (C) 2016-2026 Milan Broz + * Copyright (C) 2020-2026 Vojtech Trefny * * Use: * - generate LUKS device diff --git a/tokens/ssh/ssh-utils.c b/tokens/ssh/ssh-utils.c index 5005e52ba..cb72dc0c1 100644 --- a/tokens/ssh/ssh-utils.c +++ b/tokens/ssh/ssh-utils.c @@ -2,8 +2,8 @@ /* * ssh plugin utilities * - * Copyright (C) 2016-2025 Milan Broz - * Copyright (C) 2020-2025 Vojtech Trefny + * Copyright (C) 2016-2026 Milan Broz + * Copyright (C) 2020-2026 Vojtech Trefny */ #include diff --git a/tokens/ssh/ssh-utils.h b/tokens/ssh/ssh-utils.h index 6c0a5e054..e4d47a6af 100644 --- a/tokens/ssh/ssh-utils.h +++ b/tokens/ssh/ssh-utils.h @@ -2,8 +2,8 @@ /* * ssh plugin utilities * - * Copyright (C) 2016-2025 Milan Broz - * Copyright (C) 2020-2025 Vojtech Trefny + * Copyright (C) 2016-2026 Milan Broz + * Copyright (C) 2020-2026 Vojtech Trefny */ #ifndef SSH_UTILS_H From e9a99bec07bd7a5e06eac73805c27c33563edba6 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Fri, 5 Jun 2026 17:26:12 +0200 Subject: [PATCH 134/244] storage wrappers: Add option to use DMCRYPT wrapper only. --- lib/utils_storage_wrappers.c | 21 +++++++++++++-------- lib/utils_storage_wrappers.h | 1 + 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/lib/utils_storage_wrappers.c b/lib/utils_storage_wrappers.c index 09283b9e9..4d1371638 100644 --- a/lib/utils_storage_wrappers.c +++ b/lib/utils_storage_wrappers.c @@ -152,6 +152,9 @@ int crypt_storage_wrapper_init(struct crypt_device *cd, char _cipher[MAX_CIPHER_LEN], mode[MAX_CIPHER_LEN]; struct crypt_storage_wrapper *w; + if ((flags & CSW_DISABLE_DMCRYPT) && (flags & CSW_DMCRYPT_ONLY)) + return -EINVAL; + /* device-mapper restrictions */ if (data_offset & ((1 << SECTOR_SHIFT) - 1)) return -EINVAL; @@ -197,16 +200,18 @@ int crypt_storage_wrapper_init(struct crypt_device *cd, goto err; } - r = crypt_storage_backend_init(cd, w, iv_start, sector_size, _cipher, mode, vk, flags); - if (!r) { - *cw = w; - return 0; - } + if (!(flags & CSW_DMCRYPT_ONLY)) { + r = crypt_storage_backend_init(cd, w, iv_start, sector_size, _cipher, mode, vk, flags); + if (!r) { + *cw = w; + return 0; + } - log_dbg(cd, "Failed to initialize userspace block cipher."); + log_dbg(cd, "Failed to initialize userspace block cipher."); - if ((r != -ENOTSUP && r != -ENOENT) || (flags & CSW_DISABLE_DMCRYPT)) - goto err; + if ((r != -ENOTSUP && r != -ENOENT) || (flags & CSW_DISABLE_DMCRYPT)) + goto err; + } r = crypt_storage_dmcrypt_init(cd, w, device, data_offset >> SECTOR_SHIFT, iv_start, sector_size, cipher, vk, open_flags); diff --git a/lib/utils_storage_wrappers.h b/lib/utils_storage_wrappers.h index 4f830294a..0101fed2a 100644 --- a/lib/utils_storage_wrappers.h +++ b/lib/utils_storage_wrappers.h @@ -22,6 +22,7 @@ struct crypt_device; #define CSW_OPEN_READONLY (1 << 2) #define CSW_LARGE_IV (1 << 3) #define CSW_OPEN_LOCKED (1 << 4) +#define CSW_DMCRYPT_ONLY (1 << 5) typedef enum { NONE = 0, From a29e251478ea91f74e8fc59d92433ddf8a38f616 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Fri, 5 Jun 2026 17:23:06 +0200 Subject: [PATCH 135/244] Improve LUKS_check_cipher and move it in core library. Rename the function to generic crypt_check_cipher and remove LUKS1 specific bits and use more general approach. The function checks if cipher is available in userspace crypto library or in kernel KCAPI. Only if the above does not work and we run with super user, fallback to use dm-crypt wrapper. --- lib/internal.h | 5 ++++ lib/luks1/keymanage.c | 23 +-------------- lib/luks1/luks.h | 5 ---- lib/setup.c | 4 +-- lib/utils.c | 68 +++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 76 insertions(+), 29 deletions(-) diff --git a/lib/internal.h b/lib/internal.h index 3d88ace89..24b5bd865 100644 --- a/lib/internal.h +++ b/lib/internal.h @@ -287,4 +287,9 @@ static inline bool uint64_mult_overflow(uint64_t *u, uint64_t b, size_t size) size_t crypt_safe_alloc_size(const void *data); +int crypt_check_cipher(struct crypt_device *cd, + size_t keylength, + const char *cipher, + const char *cipher_mode); + #endif /* INTERNAL_H */ diff --git a/lib/luks1/keymanage.c b/lib/luks1/keymanage.c index 7fb132dbc..269d55df2 100644 --- a/lib/luks1/keymanage.c +++ b/lib/luks1/keymanage.c @@ -420,7 +420,7 @@ static int _keyslot_repair(struct luks_phdr *phdr, struct crypt_device *ctx) need_write = 1; } - r = LUKS_check_cipher(ctx, phdr->keyBytes, phdr->cipherName, phdr->cipherMode); + r = crypt_check_cipher(ctx, phdr->keyBytes, phdr->cipherName, phdr->cipherMode); if (r < 0) return -EINVAL; @@ -701,27 +701,6 @@ int LUKS_write_phdr(struct luks_phdr *hdr, return r; } -/* Check that kernel supports requested cipher by decryption of one sector */ -int LUKS_check_cipher(struct crypt_device *ctx, size_t keylength, const char *cipher, const char *cipher_mode) -{ - int r; - struct volume_key *empty_key; - char buf[SECTOR_SIZE]; - - log_dbg(ctx, "Checking if cipher %s-%s is usable.", cipher, cipher_mode); - - /* No need to get KEY quality random but it must avoid known weak keys. */ - empty_key = crypt_generate_volume_key(ctx, keylength, KEY_QUALITY_NORMAL); - if (!empty_key) - return -ENOMEM; - - r = LUKS_decrypt_from_storage(buf, sizeof(buf), cipher, cipher_mode, empty_key, 0, ctx); - - crypt_free_volume_key(empty_key); - crypt_safe_memzero(buf, sizeof(buf)); - return r; -} - int LUKS_generate_phdr(struct luks_phdr *header, const struct volume_key *vk, const char *cipherName, diff --git a/lib/luks1/luks.h b/lib/luks1/luks.h index f1545f401..69cf9c9b9 100644 --- a/lib/luks1/luks.h +++ b/lib/luks1/luks.h @@ -89,11 +89,6 @@ struct luks_phdr { int LUKS_verify_volume_key(const struct luks_phdr *hdr, const struct volume_key *vk); -int LUKS_check_cipher(struct crypt_device *ctx, - size_t keylength, - const char *cipher, - const char *cipher_mode); - int LUKS_generate_phdr(struct luks_phdr *header, const struct volume_key *vk, const char *cipherName, diff --git a/lib/setup.c b/lib/setup.c index 5b91c492a..560b5e1f1 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -1799,7 +1799,7 @@ static int _crypt_format_luks1(struct crypt_device *cd, &required_alignment, &alignment_offset, DEFAULT_DISK_ALIGNMENT); - r = LUKS_check_cipher(cd, volume_key_size, cipher, cipher_mode); + r = crypt_check_cipher(cd, volume_key_size, cipher, cipher_mode); if (r < 0) return r; @@ -1898,7 +1898,7 @@ static int LUKS2_check_encryption_params(struct crypt_device *cd, if ((!integrity || integrity_key_size) && !crypt_cipher_wrapped_key(cipher, cipher_mode) && !INTEGRITY_tag_size(NULL, cipher, cipher_mode)) { - r = LUKS_check_cipher(cd, volume_key_size - integrity_key_size, + r = crypt_check_cipher(cd, volume_key_size - integrity_key_size, cipher, cipher_mode); if (r < 0) return r; diff --git a/lib/utils.c b/lib/utils.c index 3f5fddfe0..b827059a9 100644 --- a/lib/utils.c +++ b/lib/utils.c @@ -16,6 +16,7 @@ #include #include "internal.h" +#include "utils_storage_wrappers.h" size_t crypt_getpagesize(void) { @@ -381,3 +382,70 @@ int crypt_strcmp(const char *a, const char *b) return 1; return strcmp(a, b); } + +int crypt_check_cipher(struct crypt_device *cd, + size_t keylength, + const char *cipher, + const char *cipher_mode) +{ + int r; + char cipher_spec[2*MAX_CAPI_ONE_LEN], buf[SECTOR_SIZE], *empty_key; + struct crypt_storage *s = NULL; + struct volume_key *empty_vk = NULL; + struct crypt_storage_wrapper *csw = NULL; + + log_dbg(cd, "Checking if cipher %s-%s is usable (storage wrapper).", cipher, cipher_mode); + + empty_key = malloc(keylength); + if (!empty_key) + return -ENOMEM; + + /* No need to get KEY quality random but it must avoid known weak keys. */ + r = crypt_random_get(cd, empty_key, keylength, CRYPT_RND_NORMAL); + if (r < 0) + goto out; + + r = crypt_storage_init(&s, SECTOR_SIZE, cipher, cipher_mode, empty_key, keylength, false); + if (!r) { + memset(buf, 0, sizeof(buf)); + r = crypt_storage_decrypt(s, 0, sizeof(buf), buf); + } + + /* dm-crypt backend requires root access */ + if (!r || (getuid() || geteuid())) + goto out; + + if (*cipher_mode != '\0') + r = snprintf(cipher_spec, sizeof(cipher_spec), "%s-%s", cipher, cipher_mode); + else + r = snprintf(cipher_spec, sizeof(cipher_spec), "%s", cipher); + if (r < 0 || (size_t)r >= sizeof(cipher_spec)) { + r = -EINVAL; + goto out; + } + + empty_vk = crypt_alloc_volume_key(keylength, empty_key); + if (!empty_vk) { + r = -ENOMEM; + goto out; + } + + r = crypt_storage_wrapper_init(cd, &csw, crypt_metadata_device(cd), 0, 0, SECTOR_SIZE, + cipher_spec, empty_vk, CSW_DMCRYPT_ONLY | CSW_OPEN_READONLY); + if (r) + goto out; + + memset(buf, 0, sizeof(buf)); + r = crypt_storage_wrapper_read_decrypt(csw, 0, &buf, sizeof(buf)); + crypt_safe_memzero(buf, sizeof(buf)); + if (r < 0 || (size_t)r != sizeof(buf)) + r = -EIO; + else + r = 0; +out: + crypt_storage_destroy(s); + free(empty_key); + crypt_storage_wrapper_destroy(csw); + crypt_free_volume_key(empty_vk); + return r; +} From 3504525854c6f2ac5117f746589ef53da93bdd3a Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Fri, 5 Jun 2026 17:27:44 +0200 Subject: [PATCH 136/244] Switch LUKS2 reencryption to more capable LUKS_check_cipher check. --- lib/luks2/luks2_reencrypt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/luks2/luks2_reencrypt.c b/lib/luks2/luks2_reencrypt.c index 5c4cf58da..169ad625c 100644 --- a/lib/luks2/luks2_reencrypt.c +++ b/lib/luks2/luks2_reencrypt.c @@ -3898,7 +3898,7 @@ static int reencrypt_init_by_keyslot_context(struct crypt_device *cd, } if (r < 0) return r; - r = LUKS2_check_cipher(cd, key_length, cipher, cipher_mode); + r = crypt_check_cipher(cd, key_length, cipher, cipher_mode); if (r < 0) { log_err(cd, _("Unable to use cipher specification %s-%s for LUKS2."), cipher, cipher_mode); return r; From 4288880dac37931d00f5d604cc486b9a10ac2c97 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Fri, 5 Jun 2026 17:28:40 +0200 Subject: [PATCH 137/244] Switch LUKS2 convert code to LUKS_check_cipher check. --- lib/luks2/luks2_internal.h | 5 ----- lib/luks2/luks2_luks1_convert.c | 35 +-------------------------------- 2 files changed, 1 insertion(+), 39 deletions(-) diff --git a/lib/luks2/luks2_internal.h b/lib/luks2/luks2_internal.h index b9244ea7a..0c15fa920 100644 --- a/lib/luks2/luks2_internal.h +++ b/lib/luks2/luks2_internal.h @@ -226,11 +226,6 @@ int LUKS2_find_area_max_gap(struct crypt_device *cd, struct luks2_hdr *hdr, uint64_t LUKS2_hdr_and_areas_size_jobj(json_object *jobj); -int LUKS2_check_cipher(struct crypt_device *cd, - size_t keylength, - const char *cipher, - const char *cipher_mode); - static inline const char *crypt_reencrypt_mode_to_str(crypt_reencrypt_mode_info mi) { if (mi == CRYPT_REENCRYPT_REENCRYPT) diff --git a/lib/luks2/luks2_luks1_convert.c b/lib/luks2/luks2_luks1_convert.c index 8e4d46ecb..5d1234252 100644 --- a/lib/luks2/luks2_luks1_convert.c +++ b/lib/luks2/luks2_luks1_convert.c @@ -11,39 +11,6 @@ #include "../luks1/luks.h" #include "../luks1/af.h" -/* This differs from LUKS_check_cipher() that it does not check dm-crypt fallback. */ -int LUKS2_check_cipher(struct crypt_device *cd, - size_t keylength, - const char *cipher, - const char *cipher_mode) -{ - int r; - struct crypt_storage *s; - char buf[SECTOR_SIZE], *empty_key; - - log_dbg(cd, "Checking if cipher %s-%s is usable (storage wrapper).", cipher, cipher_mode); - - empty_key = malloc(keylength); - if (!empty_key) - return -ENOMEM; - - /* No need to get KEY quality random but it must avoid known weak keys. */ - r = crypt_random_get(cd, empty_key, keylength, CRYPT_RND_NORMAL); - if (r < 0) - goto out; - - r = crypt_storage_init(&s, SECTOR_SIZE, cipher, cipher_mode, empty_key, keylength, false); - if (r < 0) - goto out; - - memset(buf, 0, sizeof(buf)); - r = crypt_storage_decrypt(s, 0, sizeof(buf), buf); - crypt_storage_destroy(s); -out: - free(empty_key); - return r; -} - static int json_luks1_keyslot(const struct luks_phdr *hdr_v1, int keyslot, json_object **keyslot_object) { char *base64_str, cipher[LUKS_CIPHERNAME_L+LUKS_CIPHERMODE_L]; @@ -585,7 +552,7 @@ int LUKS2_luks1_to_luks2(struct crypt_device *cd, struct luks_phdr *hdr1, struct return -EINVAL; } - if (LUKS2_check_cipher(cd, hdr1->keyBytes, hdr1->cipherName, hdr1->cipherMode)) { + if (crypt_check_cipher(cd, hdr1->keyBytes, hdr1->cipherName, hdr1->cipherMode)) { log_err(cd, _("Unable to use cipher specification %s-%s for LUKS2."), hdr1->cipherName, hdr1->cipherMode); return -EINVAL; From ea34c8ae85408b5d6d77f568d80f9268345ae1d4 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Wed, 10 Jun 2026 10:32:57 +0200 Subject: [PATCH 138/244] Move crypt_capi_to_cipher in lib utils. The function is never used in tools or tests so let's move it to lib exclusive utils file. --- lib/utils.c | 88 +++++++++++++++++++++++++++++++++++++++++++++++ lib/utils_crypt.c | 88 ----------------------------------------------- 2 files changed, 88 insertions(+), 88 deletions(-) diff --git a/lib/utils.c b/lib/utils.c index b827059a9..fadf1a055 100644 --- a/lib/utils.c +++ b/lib/utils.c @@ -18,6 +18,8 @@ #include "internal.h" #include "utils_storage_wrappers.h" +#define MAX_CAPI_LEN_STR "143" /* for sscanf of crypto API string + 16 + \0 */ + size_t crypt_getpagesize(void) { long r = sysconf(_SC_PAGESIZE); @@ -449,3 +451,89 @@ int crypt_check_cipher(struct crypt_device *cd, crypt_free_volume_key(empty_vk); return r; } + +int crypt_capi_to_cipher(char **org_c, char **org_i, const char *c_dm, const char *i_dm) +{ + char cipher[MAX_CAPI_ONE_LEN], mode[MAX_CAPI_ONE_LEN], iv[MAX_CAPI_ONE_LEN], + auth[MAX_CAPI_ONE_LEN], tmp[MAX_CAPI_LEN], dmcrypt_tmp[MAX_CAPI_LEN*2], + capi[MAX_CAPI_LEN+1]; + size_t len; + int i; + + if (!c_dm) + return -EINVAL; + + /* legacy mode */ + if (strncmp(c_dm, "capi:", 5)) { + if (!(*org_c = strdup(c_dm))) + return -ENOMEM; + if (i_dm) { + if (!(*org_i = strdup(i_dm))) { + free(*org_c); + *org_c = NULL; + return -ENOMEM; + } + } else + *org_i = NULL; + return 0; + } + + /* modes with capi: prefix */ + i = sscanf(c_dm, "capi:%" MAX_CAPI_LEN_STR "[^-]-%" MAX_CAPI_ONE_LEN_STR "s", tmp, iv); + if (i != 2) + return -EINVAL; + + /* non-cryptsetup compatible mode (generic driver with dash?) */ + if (strrchr(iv, ')')) { + if (i_dm) + return -EINVAL; + if (!(*org_c = strdup(c_dm))) + return -ENOMEM; + return 0; + } + + len = strlen(tmp); + if (len < 2) + return -EINVAL; + + if (tmp[len-1] == ')') + tmp[len-1] = '\0'; + + if (sscanf(tmp, "rfc4309(%" MAX_CAPI_LEN_STR "s", capi) == 1) { + if (!(*org_i = strdup("aead"))) + return -ENOMEM; + } else if (sscanf(tmp, "rfc7539(%" MAX_CAPI_LEN_STR "[^,],%" MAX_CAPI_ONE_LEN_STR "s", capi, auth) == 2) { + if (!(*org_i = strdup(auth))) + return -ENOMEM; + } else if (sscanf(tmp, "authenc(%" MAX_CAPI_ONE_LEN_STR "[^,],%" MAX_CAPI_LEN_STR "s", auth, capi) == 2) { + if (!(*org_i = strdup(auth))) + return -ENOMEM; + } else { + if (i_dm) { + if (!(*org_i = strdup(i_dm))) + return -ENOMEM; + } else + *org_i = NULL; + memset(capi, 0, sizeof(capi)); + strncpy(capi, tmp, sizeof(capi)-1); + } + + i = sscanf(capi, "%" MAX_CAPI_ONE_LEN_STR "[^(](%" MAX_CAPI_ONE_LEN_STR "[^)])", mode, cipher); + if (i == 2) + i = snprintf(dmcrypt_tmp, sizeof(dmcrypt_tmp), "%s-%s-%s", cipher, mode, iv); + else + i = snprintf(dmcrypt_tmp, sizeof(dmcrypt_tmp), "%s-%s", capi, iv); + if (i < 0 || (size_t)i >= sizeof(dmcrypt_tmp)) { + free(*org_i); + *org_i = NULL; + return -EINVAL; + } + + if (!(*org_c = strdup(dmcrypt_tmp))) { + free(*org_i); + *org_i = NULL; + return -ENOMEM; + } + + return 0; +} diff --git a/lib/utils_crypt.c b/lib/utils_crypt.c index b2da0e721..da6ae275a 100644 --- a/lib/utils_crypt.c +++ b/lib/utils_crypt.c @@ -18,8 +18,6 @@ #include "libcryptsetup.h" #include "utils_crypt.h" -#define MAX_CAPI_LEN_STR "143" /* for sscanf of crypto API string + 16 + \0 */ - int crypt_parse_name_and_mode(const char *s, char *cipher, int *key_nums, char *cipher_mode) { @@ -285,89 +283,3 @@ bool crypt_is_cipher_null(const char *cipher_spec) return false; return (strstr(cipher_spec, "cipher_null") || !strcmp(cipher_spec, "null")); } - -int crypt_capi_to_cipher(char **org_c, char **org_i, const char *c_dm, const char *i_dm) -{ - char cipher[MAX_CAPI_ONE_LEN], mode[MAX_CAPI_ONE_LEN], iv[MAX_CAPI_ONE_LEN], - auth[MAX_CAPI_ONE_LEN], tmp[MAX_CAPI_LEN], dmcrypt_tmp[MAX_CAPI_LEN*2], - capi[MAX_CAPI_LEN+1]; - size_t len; - int i; - - if (!c_dm) - return -EINVAL; - - /* legacy mode */ - if (strncmp(c_dm, "capi:", 5)) { - if (!(*org_c = strdup(c_dm))) - return -ENOMEM; - if (i_dm) { - if (!(*org_i = strdup(i_dm))) { - free(*org_c); - *org_c = NULL; - return -ENOMEM; - } - } else - *org_i = NULL; - return 0; - } - - /* modes with capi: prefix */ - i = sscanf(c_dm, "capi:%" MAX_CAPI_LEN_STR "[^-]-%" MAX_CAPI_ONE_LEN_STR "s", tmp, iv); - if (i != 2) - return -EINVAL; - - /* non-cryptsetup compatible mode (generic driver with dash?) */ - if (strrchr(iv, ')')) { - if (i_dm) - return -EINVAL; - if (!(*org_c = strdup(c_dm))) - return -ENOMEM; - return 0; - } - - len = strlen(tmp); - if (len < 2) - return -EINVAL; - - if (tmp[len-1] == ')') - tmp[len-1] = '\0'; - - if (sscanf(tmp, "rfc4309(%" MAX_CAPI_LEN_STR "s", capi) == 1) { - if (!(*org_i = strdup("aead"))) - return -ENOMEM; - } else if (sscanf(tmp, "rfc7539(%" MAX_CAPI_LEN_STR "[^,],%" MAX_CAPI_ONE_LEN_STR "s", capi, auth) == 2) { - if (!(*org_i = strdup(auth))) - return -ENOMEM; - } else if (sscanf(tmp, "authenc(%" MAX_CAPI_ONE_LEN_STR "[^,],%" MAX_CAPI_LEN_STR "s", auth, capi) == 2) { - if (!(*org_i = strdup(auth))) - return -ENOMEM; - } else { - if (i_dm) { - if (!(*org_i = strdup(i_dm))) - return -ENOMEM; - } else - *org_i = NULL; - memset(capi, 0, sizeof(capi)); - strncpy(capi, tmp, sizeof(capi)-1); - } - - i = sscanf(capi, "%" MAX_CAPI_ONE_LEN_STR "[^(](%" MAX_CAPI_ONE_LEN_STR "[^)])", mode, cipher); - if (i == 2) - i = snprintf(dmcrypt_tmp, sizeof(dmcrypt_tmp), "%s-%s-%s", cipher, mode, iv); - else - i = snprintf(dmcrypt_tmp, sizeof(dmcrypt_tmp), "%s-%s", capi, iv); - if (i < 0 || (size_t)i >= sizeof(dmcrypt_tmp)) { - free(*org_i); - *org_i = NULL; - return -EINVAL; - } - - if (!(*org_c = strdup(dmcrypt_tmp))) { - free(*org_i); - *org_i = NULL; - return -ENOMEM; - } - - return 0; -} From 379a64853e6db72b853f4f8765b7c3d7ac421f86 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 20 Jun 2026 21:22:24 +0200 Subject: [PATCH 139/244] Use "IEEE" variant for SM4-XTS in OpenSSL backend OpenSSL defines two versions of SM4-XTS; we have to use IEEE version to match kernel. Otherwise encryptin/decryption in userspace can corrupt data. Unfortunately, this change could make some existing configurations no longer usable. --- configure.ac | 1 + lib/crypto_backend/crypto_openssl.c | 36 +++++++++++++++++++++++++++-- meson.build | 3 +++ 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 260b0ab6f..f195b7874 100644 --- a/configure.ac +++ b/configure.ac @@ -346,6 +346,7 @@ AC_DEFUN([CONFIGURE_OPENSSL], [ saved_LIBS=$LIBS AC_CHECK_DECLS([OSSL_get_max_threads], [], [], [#include ]) AC_CHECK_DECLS([OSSL_KDF_PARAM_ARGON2_VERSION], [use_internal_argon2=0], [], [#include ]) + AC_CHECK_DECLS([OSSL_CIPHER_PARAM_XTS_STANDARD], [], [], [#include ]) LIBS=$saved_LIBS ]) diff --git a/lib/crypto_backend/crypto_openssl.c b/lib/crypto_backend/crypto_openssl.c index 0aff4e27d..33658a592 100644 --- a/lib/crypto_backend/crypto_openssl.c +++ b/lib/crypto_backend/crypto_openssl.c @@ -716,20 +716,47 @@ static void _cipher_destroy(EVP_CIPHER_CTX **hd_enc, EVP_CIPHER_CTX **hd_dec, co *cipher_type = NULL; } +/* + * SM4-XTS can have two variants of tweak calculation: + * "GB": GB/T 17964-2021 tweak multiplication + * "IEEE": IEEE Std 1619-2007 tweak multiplication (as used by AES-XTS) + * + * "GB" is the default, but we need to use mode implemented by the kernel here (IEEE). + */ +static int _cipher_xts_ieee(EVP_CIPHER_CTX **hd_enc, EVP_CIPHER_CTX **hd_dec) +{ +#if OPENSSL3_API && HAVE_DECL_OSSL_CIPHER_PARAM_XTS_STANDARD + OSSL_PARAM p[] = { + OSSL_PARAM_construct_utf8_string(OSSL_CIPHER_PARAM_XTS_STANDARD, CONST_CAST(char*)"IEEE", 0), + OSSL_PARAM_construct_end() + }; + + if (EVP_CIPHER_CTX_set_params(*hd_enc, p) != 1 || + EVP_CIPHER_CTX_set_params(*hd_dec, p) != 1) + return -EINVAL; +#else + UNUSED(hd_enc); + UNUSED(hd_dec); +#endif + return 0; +} + static int _cipher_init(EVP_CIPHER_CTX **hd_enc, EVP_CIPHER_CTX **hd_dec, const EVP_CIPHER **cipher_type, const char *name, const char *mode, const void *key, size_t key_length, size_t *iv_length) { char cipher_name[256]; const EVP_CIPHER *type; int r, key_bits; + bool set_xts_ieee = false; key_bits = key_length * 8; if (!strcmp(mode, "xts")) key_bits /= 2; - if ((!strcmp(name, "sm4")) && key_bits == 128) + if ((!strcmp(name, "sm4")) && key_bits == 128) { + set_xts_ieee = true; r = snprintf(cipher_name, sizeof(cipher_name), "%s-%s", name, mode); - else + } else r = snprintf(cipher_name, sizeof(cipher_name), "%s-%d-%s", name, key_bits, mode); if (r < 0 || (size_t)r >= sizeof(cipher_name)) return -EINVAL; @@ -758,6 +785,11 @@ static int _cipher_init(EVP_CIPHER_CTX **hd_enc, EVP_CIPHER_CTX **hd_dec, const return -EINVAL; } + if (set_xts_ieee && _cipher_xts_ieee(hd_enc, hd_dec) < 0) { + _cipher_destroy(hd_enc, hd_dec, &type); + return -EINVAL; + } + if (EVP_CIPHER_CTX_set_padding(*hd_enc, 0) != 1 || EVP_CIPHER_CTX_set_padding(*hd_dec, 0) != 1) { _cipher_destroy(hd_enc, hd_dec, &type); diff --git a/meson.build b/meson.build index b587111ff..338d2c8b6 100644 --- a/meson.build +++ b/meson.build @@ -499,6 +499,9 @@ elif get_option('crypto-backend') == 'openssl' if _have_ossl_argon2 use_internal_argon2 = false endif + conf.set10('HAVE_DECL_OSSL_CIPHER_PARAM_XTS_STANDARD', + cc.has_header_symbol('openssl/core_names.h', 'OSSL_CIPHER_PARAM_XTS_STANDARD', + dependencies: crypto_backend_library)) elif get_option('crypto-backend') == 'nss' if get_option('fips') error('nss crypto backend is not supported with FIPS enabled') From b9c84635b7851ad527db12ac3fcddcb553c46340 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 20 Jun 2026 21:26:41 +0200 Subject: [PATCH 140/244] Support Aria and Camellia ciphers in libgcrypt backend. These ciphers cannot be used with generic name, add compat translation table. --- lib/crypto_backend/crypto_gcrypt.c | 44 +++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/lib/crypto_backend/crypto_gcrypt.c b/lib/crypto_backend/crypto_gcrypt.c index 73795c4ac..8bf2c8cdb 100644 --- a/lib/crypto_backend/crypto_gcrypt.c +++ b/lib/crypto_backend/crypto_gcrypt.c @@ -43,6 +43,12 @@ struct hash_alg { const char *gcrypt_name; }; +struct cipher_alg { + const char *name; + size_t key_bytes; + const char *gcrypt_name; +}; + /* * Test for wrong Whirlpool variant, * Ref: https://lists.gnupg.org/pipermail/gcrypt-devel/2014-January/002889.html @@ -186,6 +192,37 @@ static const char *crypt_hash_compat_name(const char *name, unsigned int *flags) return hash_name; } +static const char *crypt_cipher_compat_name(const char *name, const char *mode, size_t key_bytes) +{ + const char *cipher_name = name; + int i; + static struct cipher_alg cipher_algs[] = { + { "aria", 16, "aria128" }, + { "aria", 24, "aria192" }, + { "aria", 32, "aria256" }, + { "camellia", 16, "camellia128" }, + { "camellia", 24, "camellia192" }, + { "camellia", 32, "camellia256" }, + { NULL, 0, NULL }}; + + if (!name) + return NULL; + + if (mode && !strcmp(mode, "xts")) + key_bytes /= 2; + + i = 0; + while (cipher_algs[i].name) { + if (!strcasecmp(name, cipher_algs[i].name) && cipher_algs[i].key_bytes == key_bytes) { + cipher_name = cipher_algs[i].gcrypt_name; + break; + } + i++; + } + + return cipher_name; +} + /* HASH */ int crypt_hash_size(const char *name) { @@ -529,8 +566,13 @@ static int _cipher_init(gcry_cipher_hd_t *hd, const char *name, const char *mode, const void *buffer, size_t length) { int cipher_id, mode_id; + const char *gcrypt_name; + + if (!name) + return -EINVAL; - cipher_id = gcry_cipher_map_name(name); + gcrypt_name = crypt_cipher_compat_name(name, mode, length); + cipher_id = gcry_cipher_map_name(gcrypt_name); if (cipher_id == GCRY_CIPHER_MODE_NONE) return -ENOENT; From 68cb74fe6170a45afa60cfe963e436d8e06d0fe2 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 20 Jun 2026 21:27:46 +0200 Subject: [PATCH 141/244] tests: Add test vectors for Twofish, Aria, Camellia and SM4 ciphers Add optional test vectors for other ciphers so we can easily detect possible incompatibility of crypto backend. --- tests/crypto-vectors.c | 119 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 118 insertions(+), 1 deletion(-) diff --git a/tests/crypto-vectors.c b/tests/crypto-vectors.c index 0e7b29909..77f54b37e 100644 --- a/tests/crypto-vectors.c +++ b/tests/crypto-vectors.c @@ -545,7 +545,7 @@ struct cipher_test_vector { const char *name; const char *mode; const char *ciphertext; - } out[2]; + } out[6]; }; static struct cipher_test_vector cipher_test_vectors[] = { @@ -568,6 +568,30 @@ static struct cipher_test_vector cipher_test_vectors[] = { "\x4b\xc6\x04\x29\x3a\x81\xa6\xa6\xe4\xcb\xa7\x8d\x1a\x32\xa2\x9e" "\xcf\xc2\x8e\x50\x97\xdd\x6b\x49\xa9\x38\xb1\x51\x5e\xbc\x5a\xac" "\xfe\xd2\xc4\x95\x92\xf9\x1c\x0c\x9f\x17\xcd\x86\x38\x65\x29\xeb" + },{ + "twofish", "ecb", + "\x29\x1e\xd1\x1a\x7b\x14\x1a\x06\x7e\x77\x39\x59\xf1\x39\x74\xdf" + "\x9b\x05\xaa\x1e\xcb\xb6\x65\x0f\xe3\x08\x0a\xa1\x0c\x23\x33\xd3" + "\x69\xe2\x55\xa5\x4a\xf4\x61\x74\x52\xa6\x5f\xf0\x63\x75\xab\x73" + "\xec\x93\x91\x50\xdf\x26\xb2\x4d\x37\x79\x43\xe2\x13\x33\x2f\x47" + },{ + "aria", "ecb", + "\xba\xf0\x7d\x1f\x1c\x72\xb4\x92\x6a\x29\xa5\xe2\xf5\x36\xe4\x7a" + "\x73\xb6\x9c\x74\x88\x18\xe3\x6b\x67\x81\x10\x4c\x93\xa7\xb1\x0a" + "\xd4\xd8\x96\xf3\x2e\xd0\xed\x91\x2d\x8c\x6d\xc7\xb2\x87\xfb\xe1" + "\x93\x82\x52\xae\x53\xaa\xa0\x8a\xb8\x02\x68\x31\x02\x43\x42\x09" + },{ + "camellia", "ecb", + "\x43\x2f\xc5\xdc\xd6\x28\x11\x5b\x7c\x38\x8d\x77\x0b\x27\x0c\x96" + "\x0b\xe1\xf1\x40\x23\x78\x2a\x22\xe8\x38\x4c\x5a\xbb\x7f\xab\x2b" + "\xa0\xa1\xab\xcd\x18\x93\xab\x6f\xe0\xfe\x5b\x65\xdf\x5f\x86\x36" + "\xe6\x19\x25\xe0\xd5\xdf\xaa\x9b\xb2\x9f\x81\x5b\x30\x76\xe5\x1a" + },{ + "sm4", "ecb", + "\xa5\x14\x11\xff\x04\xa7\x11\x44\x38\x91\xfc\xe7\xab\x84\x2a\x29" + "\xd5\xb5\x0f\x46\xa9\xa7\x30\xa0\xf5\x90\xff\xa7\x76\xd9\x98\x55" + "\xc9\xa8\x6a\x4d\x71\x44\x7f\x4e\x87\x3a\xda\x4f\x38\x8a\xf9\xb9" + "\x2b\x25\x55\x7b\x50\x51\x4d\x15\x59\x39\xe6\xec\x94\x0a\xd9\x0e" }, }},{ // NIST SP 800-38A "\x2b\x7e\x15\x16\x28\xae\xd2\xa6\xab\xf7\x15\x88\x09\xcf\x4f\x3c", 16, @@ -588,6 +612,30 @@ static struct cipher_test_vector cipher_test_vectors[] = { "\xa9\xb5\xd9\xdb\x20\xfb\x8b\x82\x51\x40\xbf\xe6\x4d\xf2\x1c\xa8" "\x5f\x48\xbc\x29\xff\x62\x27\xda\x09\x7c\xaa\x22\x75\x6f\x43\xff" "\x31\xd8\x3e\x83\x4d\x92\x48\xeb\x49\x1c\xf8\x26\x80\x4e\xb9\x02" + },{ + "twofish", "cbc", + "\xc2\x06\x7a\xc0\xf3\x66\x92\xc1\x5e\x0f\xbb\xef\x48\xac\xf4\xab" + "\x9a\xc6\x7b\xe6\x45\xe8\xa1\x62\x6f\xb2\xac\x79\x85\x82\x52\x4e" + "\x83\xe6\x98\xc4\x76\x34\x39\xf9\xa2\xcd\xa9\x83\x61\x30\x11\x58" + "\x0a\x01\xda\x9b\xce\xa1\x24\x4c\x09\x91\x71\x4e\xed\x75\xf5\xcd" + },{ + "aria", "cbc", + "\xa9\xf7\xb5\xdc\xca\xdd\xf6\xb4\x3a\x50\x81\x69\x29\x1d\xd5\xfb" + "\x10\x39\x34\x26\x5c\x51\xb3\x6f\x27\x01\x31\x39\x75\xbc\x27\xd4" + "\x47\x41\x69\x1d\xc6\xd5\x0e\x03\xcd\x1f\xeb\xa0\x1c\x65\xc1\x03" + "\x1f\x88\x20\xd5\x56\x91\x2e\xbf\x2f\x03\x3e\x45\x9f\xe2\xd5\x2a" + },{ + "camellia", "cbc", + "\x16\x07\xcf\x49\x4b\x36\xbb\xf0\x0d\xae\xb0\xb5\x03\xc8\x31\xab" + "\xa2\xf2\xcf\x67\x16\x29\xef\x78\x40\xc5\xa5\xdf\xb5\x07\x48\x87" + "\x0f\x06\x16\x50\x08\xcf\x8b\x8b\x5a\x63\x58\x63\x62\x54\x3e\x54" + "\xe7\x20\x8a\x2c\xa8\x9c\xc2\x1a\xac\xd5\x6a\xaa\x6f\xb9\x82\x59" + },{ + "sm4", "cbc", + "\xac\x52\x9a\xf9\x89\xa6\x2f\xce\x9c\xdd\xc5\xff\xb8\x41\x25\xca" + "\xb1\x68\xdd\x69\xdb\x3c\x0e\xea\x1a\xb1\x6d\xe6\xae\xa4\x3c\x59" + "\x2c\x15\x56\x7b\xff\x8f\x70\x74\x86\xc2\x02\xc7\xbe\x59\x10\x1f" + "\x74\xa6\x29\xb3\x50\xcd\x7e\x11\xbe\x99\x99\x8a\xf5\x20\x6d\x6c" }, }},{ // NIST SP 800-38A "\x60\x3d\xeb\x10\x15\xca\x71\xbe\x2b\x73\xae\xf0\x85\x7d\x77\x81" @@ -609,6 +657,24 @@ static struct cipher_test_vector cipher_test_vectors[] = { "\x50\x5d\xf1\x68\x92\x40\x8e\xf6\x9c\x3b\x9e\xa6\x67\xd9\xdd\xb8" "\xb9\x5f\xc8\x20\x76\x52\x1d\xce\x60\xe4\xfc\xac\xe3\xd3\x91\x51" "\x09\x22\x62\xde\x62\x6d\xc5\x7b\x4c\x87\x0c\x65\xe7\x1f\xc7\x13" + },{ + "twofish", "ecb", + "\xe1\xb4\x5f\x5f\x5b\xd0\xc9\xea\x0d\xe7\x74\x24\x05\x42\x22\xa4" + "\x34\x1a\x84\x1d\x6f\xff\x65\xc9\x6f\x79\x24\xf8\xbf\x48\x10\x72" + "\x8c\x03\x97\x1e\xdb\x3f\xc7\x96\xf8\x61\x99\x85\x49\xb7\x05\x5d" + "\xf8\xc5\xa1\xe7\x8e\xba\x66\x29\x2b\x59\xd0\xba\xaa\x23\x5d\x07" + },{ + "aria", "ecb", + "\xb1\xf6\x6e\x8e\x5c\x78\xc8\x3b\x8e\xda\xfa\x0d\xbe\xf3\x82\x27" + "\x54\x84\x40\x9c\x7a\xb5\xcf\xa9\x64\xa7\x55\xc5\x90\x3b\xa7\xb6" + "\x78\x97\x33\xaf\x91\x4b\x45\xac\xf3\x31\x3a\x09\x81\xe2\x02\x8d" + "\xfb\x36\xde\x3d\xb8\xa0\x9a\xe4\x48\xd3\x3e\x2c\xc3\xef\xcb\x34" + },{ + "camellia", "ecb", + "\xbe\xfd\x21\x9b\x11\x2f\xa0\x00\x98\x91\x9c\xd1\x01\xc9\xcc\xfa" + "\xc9\x1d\x3a\x8f\x1a\xea\x08\xa9\x38\x6c\xf4\xb6\x6c\x01\x69\xea" + "\xa6\x23\xd7\x11\xdc\x5f\x25\xa5\x1b\xb8\xa8\x0d\x56\x39\x7d\x28" + "\x79\x60\x10\x9f\xb6\xdc\x42\x94\x7f\xcf\xe5\x9e\xa3\xc5\xeb\x6b" }, }},{ // NIST SP 800-38A "\x60\x3d\xeb\x10\x15\xca\x71\xbe\x2b\x73\xae\xf0\x85\x7d\x77\x81" @@ -630,6 +696,24 @@ static struct cipher_test_vector cipher_test_vectors[] = { "\x37\x61\xc5\xf8\x34\x4d\xe9\x10\x91\xd3\x87\x80\x42\xcc\x70\x95" "\x40\x95\xa3\x2c\xdb\x38\xe2\x6f\x03\x91\xf5\xd3\x51\x7e\x52\xb0" "\x8a\x1c\x2d\x7f\x04\x59\x13\x93\x31\xa9\x82\xc9\x4e\xd9\x11\x0c" + },{ + "twofish", "cbc", + "\xe0\x22\x7c\x3c\xc8\x0f\x3c\xb1\xb2\xed\x84\x7c\xc6\xf5\x7d\x3c" + "\x65\x7b\x1e\x79\x60\xb3\x0f\xb7\xc8\xd6\x2e\x72\xae\x37\xc3\xa0" + "\xa8\xbc\x94\xf8\x26\xca\x27\x7d\x18\xe9\x58\x20\x3c\x1a\x70\xe7" + "\x15\x67\x7b\x55\x07\x93\x33\xd6\xa0\xa2\x34\x08\x08\x01\xeb\xb6" + },{ + "aria", "cbc", + "\x9b\x1d\xba\x5f\xcc\xc6\xd5\xa5\x9a\xdc\x17\xca\x70\xff\x65\xb4" + "\x2c\x6f\xb9\xc8\xf2\xb6\x11\x6a\x2b\xdb\x26\xea\x87\xaf\x6b\x47" + "\xd1\xa2\x2f\x86\xcc\x84\x33\xbf\xc6\xb9\x52\x1d\xb2\x9b\xa7\xc0" + "\x9f\x9b\xe5\x30\xa7\xdd\x13\xe4\x8e\x79\x54\xca\x40\x9e\xfa\x9a" + },{ + "camellia", "cbc", + "\xe6\xcf\xa3\x5f\xc0\x2b\x13\x4a\x4d\x2c\x0b\x67\x37\xac\x3e\xda" + "\x36\xcb\xeb\x73\xbd\x50\x4b\x40\x70\xb1\xb7\xde\x2b\x21\xeb\x50" + "\xe3\x1a\x60\x55\x29\x7d\x96\xca\x33\x30\xcd\xf1\xb1\x86\x0a\x83" + "\x5d\x56\x3f\x6d\x1c\xcc\xf2\x36\x05\x1c\x0c\x5c\x1c\x58\xf2\x8f" }, }},{ // CAVS XTSGenAES128,101 "\xb7\xb9\x3f\x51\x6a\xef\x29\x5e\xff\x3a\x29\xd8\x37\xcf\x1f\x13" @@ -645,6 +729,22 @@ static struct cipher_test_vector cipher_test_vectors[] = { "serpent", "xts", "\x6d\xa2\xa4\x2b\x18\x71\x57\xdc\x03\xaf\x8b\x82\x28\x66\x3d\xf1" "\x70\x8b\x75\x98\xd2\xdd\xbf\x72\x9e\xb3\xb4\xc2\x3f\x18\xdf\xa1" + },{ + "twofish", "xts", + "\x26\x95\xfa\x03\x81\x6b\xb6\x22\x1a\x0a\x8a\x44\x0c\x15\x05\xe7" + "\x74\xa3\xae\x6f\xbe\x3c\x12\x44\xf5\x1b\x41\x87\x6f\xc2\xc6\x2b" + },{ + "aria", "xts", + "\x2e\x95\x9f\x26\xb4\x52\x68\x3c\x48\x47\x3d\x08\x18\x1e\x94\x98" + "\xf2\x70\x3f\x6e\x73\x4c\x00\x46\x86\xa5\xae\x60\x75\x77\xce\xbd" + },{ + "camellia", "xts", + "\xaa\x0e\x72\xdd\x49\x1a\x32\x54\x38\x7e\x20\x49\x47\x5b\xc5\x6a" + "\x4d\x58\x48\x02\x9d\xaa\x24\x9c\x9a\x31\x94\xe1\x08\x99\xad\x90" + },{ + "sm4", "xts", + "\xd9\x1e\xbe\xf3\x08\x65\xe2\x52\x9e\x3b\xdb\x48\x85\x23\xa2\x1f" + "\xf6\x38\xdd\xdc\xb7\xf2\x16\x86\x91\x5c\x26\x10\xf3\xe8\xb6\xbb" }, }},{ // CAVS XTSGenAES256,101 "\x26\x6c\x33\x6b\x3b\x01\x48\x9f\x32\x67\xf5\x28\x35\xfd\x92\xf6" @@ -665,6 +765,21 @@ static struct cipher_test_vector cipher_test_vectors[] = { "\x37\xe4\xc0\xa9\xf1\x49\xe5\x3e\x73\xb9\x1f\xec\xdc\xe0\xbd\xc5" "\x31\xd7\xef\x08\x65\x20\xe3\xad\xd9\x84\x60\xdc\x61\x6f\x26\x86" "\xb8\xd5\x29\x4b\x04\x41\x52\x59\x05\x00\xb0\xc2\x9b\x30\xda\x48" + },{ + "twofish", "xts", + "\xe6\xf0\x02\x06\xe7\x42\x63\xb7\x1f\x22\xa9\xc3\xe1\x8f\x0b\x05" + "\xa4\xb4\x9c\x38\x35\x0e\x82\xfe\x78\x2f\x05\xf6\x24\xbd\x44\x11" + "\x28\xda\x44\x69\xf5\x0d\xcd\x7f\xc6\x6a\x36\x3a\xe4\x8f\xf1\x51" + },{ + "aria", "xts", + "\xea\x72\x7f\xff\xb7\xb1\x86\x05\xa4\x5e\x60\x9b\x6f\xaa\xa6\xf0" + "\x66\xe9\x5d\xb0\xaf\x9b\x7f\xe1\xba\x9e\x85\x99\xc2\xfd\x0a\x4c" + "\xb8\x2a\x70\x7f\x86\x64\x09\xf4\xd3\x2f\xdc\x01\x58\x34\x7f\x5f" + },{ + "camellia", "xts", + "\x69\x88\x42\x11\x49\xdf\x25\xcc\x89\xc6\xab\xe7\xc8\x67\x5c\xee" + "\x3b\x33\x14\xd5\x70\x3a\x12\x42\x27\xfa\x9b\x2a\x62\x51\xaa\x3d" + "\x89\xdc\xd4\x45\xad\x33\xb1\x74\xf7\x0c\x0e\xa6\x91\xe1\x6b\x04" }, }},{ "\xa5\x28\x24\x34\x1a\x3c\xd8\xf7\x05\x91\x8f\xee\x85\x1f\x35\x7f" @@ -1231,6 +1346,8 @@ static int cipher_test(void) printf("CIPHER vector %02d: ", i); for (j = 0; j < ARRAY_SIZE(vector->out); j++) { + if (!vector->out[j].name) + break; if (vector->iv_length && crypt_cipher_ivsize(vector->out[j].name, vector->out[j].mode) != (int)vector->iv_length) return EXIT_FAILURE; From a13bead61a7142568c74ccbfeb345c2a56fbd0b0 Mon Sep 17 00:00:00 2001 From: Arthur Chan Date: Tue, 9 Jun 2026 20:29:20 +0100 Subject: [PATCH 142/244] OSS-Fuzz: Add new fuzzer targets general crypto loading Signed-off-by: Arthur Chan --- tests/fuzz/Makefile.am | 7 ++++- tests/fuzz/crypt_load_misc_fuzz.cc | 48 ++++++++++++++++++++++++++++++ tests/fuzz/meson.build | 18 +++++++++++ tests/fuzz/oss-fuzz-build.sh | 2 +- 4 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 tests/fuzz/crypt_load_misc_fuzz.cc diff --git a/tests/fuzz/Makefile.am b/tests/fuzz/Makefile.am index 88ce1ddd1..c0dfd3d72 100644 --- a/tests/fuzz/Makefile.am +++ b/tests/fuzz/Makefile.am @@ -4,7 +4,7 @@ distclean-local: -rm -rf out build if ENABLE_FUZZ_TARGETS -EXTRA_PROGRAMS = crypt2_load_fuzz crypt2_load_ondisk_fuzz +EXTRA_PROGRAMS = crypt2_load_fuzz crypt2_load_ondisk_fuzz crypt_load_misc_fuzz CLEANFILES = $(EXTRA_PROGRAMS) LIB_FUZZING_ENGINE := $(if $(LIB_FUZZING_ENGINE),$(LIB_FUZZING_ENGINE),"-fsanitize=fuzzer") @@ -22,6 +22,11 @@ crypt2_load_ondisk_fuzz_LDADD = ../../libcryptsetup.la -L$(DEPS_PATH)/lib crypt2_load_ondisk_fuzz_LDFLAGS = $(AM_LDFLAGS) $(LIB_FUZZING_ENGINE) $(SANITIZER) crypt2_load_ondisk_fuzz_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/lib -I$(top_srcdir)/tests/fuzz +crypt_load_misc_fuzz_SOURCES = FuzzerInterface.h crypt_load_misc_fuzz.cc +crypt_load_misc_fuzz_LDADD = ../../libcryptsetup.la -L$(DEPS_PATH)/lib +crypt_load_misc_fuzz_LDFLAGS = $(AM_LDFLAGS) $(LIB_FUZZING_ENGINE) $(SANITIZER) +crypt_load_misc_fuzz_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/lib -I$(top_srcdir)/tests/fuzz + test-environment-m: @ if test ! -d $(DEPS_PATH); then \ echo "You need to build static libraries first; use oss-fuzz-build.sh script."; \ diff --git a/tests/fuzz/crypt_load_misc_fuzz.cc b/tests/fuzz/crypt_load_misc_fuzz.cc new file mode 100644 index 000000000..f32863956 --- /dev/null +++ b/tests/fuzz/crypt_load_misc_fuzz.cc @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * cryptsetup VERITY, INTEGRITY fuzz target + */ + +extern "C" { +#define FILESIZE (16777216) +#include "src/cryptsetup.h" +#include +#include "verity/verity.h" +#include "integrity/integrity.h" +#include "crypto_backend/crypto_backend.h" +#include "FuzzerInterface.h" + +static void empty_log(int level, const char *msg, void *usrptr) {} + +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { + int fd, r; + struct crypt_device *cd = NULL; + char name[] = "/tmp/test-script-fuzz.XXXXXX"; + + fd = mkostemp(name, O_RDWR | O_CREAT | O_EXCL | O_CLOEXEC); + if (fd == -1) + err(EXIT_FAILURE, "mkostemp() failed"); + + /* enlarge header */ + if (ftruncate(fd, FILESIZE) == -1) + goto out; + + if (write_buffer(fd, data, size) != (ssize_t) size) + goto out; + + crypt_set_log_callback(NULL, empty_log, NULL); + + if (crypt_init(&cd, name) == 0) { + r = crypt_load(cd, CRYPT_VERITY, NULL); + if (r == 0) + goto out; + + (void) crypt_load(cd, CRYPT_INTEGRITY, NULL); + } +out: + crypt_free(cd); + close(fd); + unlink(name); + return 0; +} +} diff --git a/tests/fuzz/meson.build b/tests/fuzz/meson.build index fc45d4f48..6bd69d952 100644 --- a/tests/fuzz/meson.build +++ b/tests/fuzz/meson.build @@ -34,4 +34,22 @@ if get_option('fuzz-targets') link_args, ], include_directories: includes_tools) + + crypt_load_misc_fuzz = executable('crypt_load_misc_fuzz', + [ + 'crypt_load_misc_fuzz.cc', + ], + dependencies: [ + devmapper, + fuzzing_engine, + ], + link_with: [ + libcryptsetup, + libcrypto_backend, + libutils_io, + ], + link_args: [ + link_args, + ], + include_directories: includes_tools) endif diff --git a/tests/fuzz/oss-fuzz-build.sh b/tests/fuzz/oss-fuzz-build.sh index 3ef8c81cf..bd90b2760 100755 --- a/tests/fuzz/oss-fuzz-build.sh +++ b/tests/fuzz/oss-fuzz-build.sh @@ -34,7 +34,7 @@ export CFLAGS="${CFLAGS:-$flags} -I$DEPS_PATH/include" export CXXFLAGS="${CXXFLAGS:-$flags} -I$DEPS_PATH/include" export LDFLAGS="${LDFLAGS-} -L$DEPS_PATH/lib" -ENABLED_FUZZERS=${ENABLED_FUZZERS:-crypt2_load_fuzz crypt2_load_ondisk_fuzz} +ENABLED_FUZZERS=${ENABLED_FUZZERS:-crypt2_load_fuzz crypt2_load_ondisk_fuzz crypt_load_misc_fuzz} mkdir -p $SRC mkdir -p $OUT From b6fb6fc0fdc661afba734f4c29350fa6be2ede8f Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Fri, 19 Jun 2026 16:41:47 +0200 Subject: [PATCH 143/244] Add keyring key type. --- lib/utils_keyring.c | 1 + lib/utils_keyring.h | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/utils_keyring.c b/lib/utils_keyring.c index da1ccd85c..86aecfe4a 100644 --- a/lib/utils_keyring.c +++ b/lib/utils_keyring.c @@ -32,6 +32,7 @@ static const struct { { BIG_KEY, "big_key" }, { TRUSTED_KEY, "trusted" }, { ENCRYPTED_KEY, "encrypted" }, + { KEYRING_KEY, "keyring" }, }; #include diff --git a/lib/utils_keyring.h b/lib/utils_keyring.h index 5809f70d0..b910767aa 100644 --- a/lib/utils_keyring.h +++ b/lib/utils_keyring.h @@ -17,7 +17,7 @@ typedef int32_t key_serial_t; #endif -typedef enum { LOGON_KEY = 0, USER_KEY, BIG_KEY, TRUSTED_KEY, ENCRYPTED_KEY, INVALID_KEY } key_type_t; +typedef enum { LOGON_KEY = 0, USER_KEY, BIG_KEY, TRUSTED_KEY, ENCRYPTED_KEY, KEYRING_KEY, INVALID_KEY } key_type_t; const char *key_type_name(key_type_t ktype); key_type_t key_type_by_name(const char *name); From 413a3dd04ec07ad7c3afaed84561cbc7a42f108f Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Thu, 25 Jun 2026 12:05:53 +0200 Subject: [PATCH 144/244] Load volume keys in intermediary keyring linked in thread keyring. Instead of loading volume keys directly in the thread keyring, create an intermediary keyring linked in the thread keyring and load volume keys there. The intermediary keyring is bulk-cleaned on crypt_free(). This avoids undesired pinning of all volume keys (via the thread keyring) through the caller's credentials when the kernel opens a file, as was the case with https://lore.kernel.org/all/20240123-vfs-bdev-file-v2-4-adbd023e19cc@kernel.org/ Fixes: #993. --- lib/internal.h | 6 ++-- lib/setup.c | 83 +++++++++++++++++++++++++++++++++++++------------ lib/volumekey.c | 12 +++---- 3 files changed, 71 insertions(+), 30 deletions(-) diff --git a/lib/internal.h b/lib/internal.h index 24b5bd865..e398d0ae5 100644 --- a/lib/internal.h +++ b/lib/internal.h @@ -74,7 +74,7 @@ struct volume_key *crypt_volume_key_next(struct volume_key *vk); struct volume_key *crypt_volume_key_by_id(struct volume_key *vk, int id); void crypt_volume_key_pass_safe_alloc(struct volume_key *vk, void **safe_alloc); bool crypt_volume_key_is_set(const struct volume_key *vk); -bool crypt_volume_key_upload_kernel_key(struct volume_key *vk); +bool crypt_volume_key_upload_kernel_key(struct volume_key *vk, key_serial_t keyring); void crypt_volume_key_drop_uploaded_kernel_key(struct crypt_device *cd, struct volume_key *vk); void crypt_volume_key_drop_kernel_key(struct crypt_device *cd, struct volume_key *vk); @@ -247,9 +247,9 @@ int crypt_keyring_get_keysize_by_name(struct crypt_device *cd, size_t *r_key_size); int crypt_use_keyring_for_vk(struct crypt_device *cd); -void crypt_unlink_key_from_thread_keyring(struct crypt_device *cd, +void crypt_unlink_key_from_keyring(struct crypt_device *cd, key_serial_t key_id); -void crypt_unlink_key_by_description_from_thread_keyring(struct crypt_device *cd, +void crypt_unlink_key_by_description_from_keyring(struct crypt_device *cd, const char *key_description, key_type_t ktype); void crypt_drop_uploaded_keyring_key(struct crypt_device *cd, struct volume_key *vks); diff --git a/lib/setup.c b/lib/setup.c index 560b5e1f1..4b051e577 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -54,6 +54,9 @@ struct crypt_device { const char *user_key_name2; key_type_t keyring_key_type; + const char *keyring_description; + key_serial_t keyring_id; + uint64_t data_offset; uint64_t metadata_size; /* Used in LUKS2 format */ uint64_t keyslots_size; /* Used in LUKS2 format */ @@ -4141,6 +4144,15 @@ int crypt_header_is_detached(struct crypt_device *cd) return r ? 0 : 1; } +static void crypt_unlink_keyring_from_thread_keyring(struct crypt_device *cd, + key_serial_t keyring_id) +{ + log_dbg(cd, "Unlinking keyring (id: %" PRIi32 ") from thread keyring.", keyring_id); + + if (keyring_unlink_key_from_thread_keyring(keyring_id)) + log_dbg(cd, "keyring_unlink_key_from_thread_keyring failed with errno %d.", errno); +} + void crypt_free(struct crypt_device *cd) { if (!cd) @@ -4151,6 +4163,11 @@ void crypt_free(struct crypt_device *cd) dm_backend_exit(cd); crypt_free_volume_key(cd->volume_key); + if (cd->keyring_description) { + crypt_unlink_keyring_from_thread_keyring(cd, cd->keyring_id); + free(CONST_CAST(void*)cd->keyring_description); + } + crypt_free_type(cd, NULL); device_free(cd, cd->device); @@ -4335,18 +4352,35 @@ static int resume_luks1_by_volume_key(struct crypt_device *cd, return r; } +static bool unlink_key_from_keyring(struct crypt_device *cd, key_serial_t kid, key_serial_t keyring_id) +{ + log_dbg(cd, "Unlinking volume key (id: %" PRIi32 ") from kernel keyring (id: %" PRIi32 ").", + kid, keyring_id); + + if (!keyring_unlink_key_from_keyring(kid, keyring_id)) + return true; + + log_dbg(cd, "keyring_unlink_key_from_keyring failed with errno %d.", errno); + + return false; +} + +/* internal only */ +void crypt_unlink_key_from_keyring(struct crypt_device *cd, + key_serial_t key_id) +{ + (void)unlink_key_from_keyring(cd, key_id, cd->keyring_id); +} + static void crypt_unlink_key_from_custom_keyring(struct crypt_device *cd, key_serial_t kid) { assert(cd); assert(cd->keyring_to_link_vk); - log_dbg(cd, "Unlinking volume key (id: %" PRIi32 ") from kernel keyring (id: %" PRIi32 ").", - kid, cd->keyring_to_link_vk); - if (!keyring_unlink_key_from_keyring(kid, cd->keyring_to_link_vk)) + if (unlink_key_from_keyring(cd, kid, cd->keyring_to_link_vk)) return; - log_dbg(cd, "keyring_unlink_key_from_keyring failed with errno %d.", errno); log_err(cd, _("Failed to unlink volume key from user specified keyring.")); } @@ -7638,6 +7672,8 @@ int crypt_volume_key_keyring(struct crypt_device *cd __attribute__((unused)), in /* internal only */ int crypt_volume_key_load_in_keyring(struct crypt_device *cd, struct volume_key *vk) { + key_serial_t keyring_id; + if (!vk || !cd) return -EINVAL; @@ -7646,14 +7682,31 @@ int crypt_volume_key_load_in_keyring(struct crypt_device *cd, struct volume_key return -EINVAL; } - log_dbg(cd, "Loading key (type logon, name %s) in thread keyring.", - crypt_volume_key_description(vk)); + if (!cd->keyring_description) { + cd->keyring_description = strdup("cryptsetup-keyring"); + if (!cd->keyring_description) + return -ENOMEM; + + log_dbg(cd, "Loading key (type keyring, name %s) in thread keyring.", cd->keyring_description); + keyring_id = keyring_add_key_in_thread_keyring(KEYRING_KEY, cd->keyring_description, NULL, 0); + if (keyring_id < 0) { + free(CONST_CAST(void*)cd->keyring_description); + cd->keyring_description = NULL; + log_dbg(cd, "keyring_add_key_in_thread_keyring failed (error %d)", errno); + log_err(cd, _("Failed to load key in kernel keyring.")); + return -EINVAL; + } + cd->keyring_id = keyring_id; + } + + log_dbg(cd, "Loading key (type logon, name %s) in %s keyring.", + crypt_volume_key_description(vk), cd->keyring_description); - if (crypt_volume_key_upload_kernel_key(vk)) { + if (crypt_volume_key_upload_kernel_key(vk, cd->keyring_id)) { crypt_set_key_in_keyring(cd, 1); return 0; } else { - log_dbg(cd, "keyring_add_key_in_thread_keyring failed (error %d)", errno); + log_dbg(cd, "keyring_add_key_to_keyring failed (error %d)", errno); log_err(cd, _("Failed to load key in kernel keyring.")); return -EINVAL; } @@ -7769,17 +7822,7 @@ void crypt_set_key_in_keyring(struct crypt_device *cd, unsigned key_in_keyring) cd->key_in_keyring = key_in_keyring; } -/* internal only */ -void crypt_unlink_key_from_thread_keyring(struct crypt_device *cd, - key_serial_t key_id) -{ - log_dbg(cd, "Unlinking volume key (id: %" PRIi32 ") from thread keyring.", key_id); - - if (keyring_unlink_key_from_thread_keyring(key_id)) - log_dbg(cd, "keyring_unlink_key_from_thread_keyring failed with errno %d.", errno); -} - -void crypt_unlink_key_by_description_from_thread_keyring(struct crypt_device *cd, +void crypt_unlink_key_by_description_from_keyring(struct crypt_device *cd, const char *key_description, key_type_t ktype) { @@ -7802,7 +7845,7 @@ void crypt_unlink_key_by_description_from_thread_keyring(struct crypt_device *cd return; } - crypt_unlink_key_from_thread_keyring(cd, kid); + crypt_unlink_key_from_keyring(cd, kid); } int crypt_set_keyring_to_link(struct crypt_device *cd, const char *key_description, diff --git a/lib/volumekey.c b/lib/volumekey.c index bcd8349ae..7df622677 100644 --- a/lib/volumekey.c +++ b/lib/volumekey.c @@ -243,14 +243,14 @@ bool crypt_volume_key_is_set(const struct volume_key *vk) return vk && vk->key; } -bool crypt_volume_key_upload_kernel_key(struct volume_key *vk) +bool crypt_volume_key_upload_kernel_key(struct volume_key *vk, key_serial_t keyring) { key_serial_t kid; assert(vk && vk->key && vk->key_description && vk->keyring_key_type != INVALID_KEY); - kid = keyring_add_key_in_thread_keyring(vk->keyring_key_type, vk->key_description, - vk->key, vk->keylength); + kid = keyring_add_key_to_keyring(vk->keyring_key_type, vk->key_description, vk->key, + vk->keylength, keyring); if (kid >= 0) { vk->key_id = kid; return true; @@ -265,9 +265,7 @@ void crypt_volume_key_drop_kernel_key(struct crypt_device *cd, struct volume_key assert(vk->key_description || vk->keyring_key_type == INVALID_KEY); assert(!vk->key_description || vk->keyring_key_type != INVALID_KEY); - crypt_unlink_key_by_description_from_thread_keyring(cd, - vk->key_description, - vk->keyring_key_type); + crypt_unlink_key_by_description_from_keyring(cd, vk->key_description, vk->keyring_key_type); } void crypt_volume_key_drop_uploaded_kernel_key(struct crypt_device *cd, struct volume_key *vk) @@ -277,6 +275,6 @@ void crypt_volume_key_drop_uploaded_kernel_key(struct crypt_device *cd, struct v if (vk->key_id < 0) return; - crypt_unlink_key_from_thread_keyring(cd, vk->key_id); + crypt_unlink_key_from_keyring(cd, vk->key_id); vk->key_id = -1; } From 04ef07a7070fc8f71dc8da57d6cc23423e1b632e Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Fri, 19 Jun 2026 16:45:49 +0200 Subject: [PATCH 145/244] Use unique intermediary keyring name per device. Replace the static "cryptsetup-keyring" name with "cryptsetup--" to avoid collisions when multiple LUKS devices are opened by the same process. Fixes: #993. Co-Authored-By: Claude Opus 4.6 --- lib/setup.c | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/lib/setup.c b/lib/setup.c index 4b051e577..1c0f21e6f 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -7673,6 +7673,9 @@ int crypt_volume_key_keyring(struct crypt_device *cd __attribute__((unused)), in int crypt_volume_key_load_in_keyring(struct crypt_device *cd, struct volume_key *vk) { key_serial_t keyring_id; + char *keyring_description; + char rnd[4]; + const char *uuid; if (!vk || !cd) return -EINVAL; @@ -7683,20 +7686,28 @@ int crypt_volume_key_load_in_keyring(struct crypt_device *cd, struct volume_key } if (!cd->keyring_description) { - cd->keyring_description = strdup("cryptsetup-keyring"); - if (!cd->keyring_description) + uuid = crypt_get_uuid(cd); + if (!uuid) + return -EINVAL; + + if (crypt_random_get(cd, rnd, sizeof(rnd), CRYPT_RND_NORMAL) < 0) + return -EINVAL; + + if (asprintf(&keyring_description, "cryptsetup-%.8s-%02x%02x%02x%02x", + uuid, (unsigned char)rnd[0], (unsigned char)rnd[1], + (unsigned char)rnd[2], (unsigned char)rnd[3]) < 0) return -ENOMEM; - log_dbg(cd, "Loading key (type keyring, name %s) in thread keyring.", cd->keyring_description); - keyring_id = keyring_add_key_in_thread_keyring(KEYRING_KEY, cd->keyring_description, NULL, 0); + log_dbg(cd, "Loading key (type keyring, name %s) in thread keyring.", keyring_description); + keyring_id = keyring_add_key_in_thread_keyring(KEYRING_KEY, keyring_description, NULL, 0); if (keyring_id < 0) { - free(CONST_CAST(void*)cd->keyring_description); - cd->keyring_description = NULL; + free(keyring_description); log_dbg(cd, "keyring_add_key_in_thread_keyring failed (error %d)", errno); log_err(cd, _("Failed to load key in kernel keyring.")); return -EINVAL; } cd->keyring_id = keyring_id; + cd->keyring_description = keyring_description; } log_dbg(cd, "Loading key (type logon, name %s) in %s keyring.", From bb5e8e9f0b34fb8135e948ce60d956c2af7d5c8d Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Fri, 19 Jun 2026 14:58:46 +0200 Subject: [PATCH 146/244] tests: revoke keys instead unlinking from thread keyring. With the intermediary thread keyring we can not simply unlink key from thread keyring. Let's make it simple and invalidate the key instead. --- tests/api-test-2.c | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/tests/api-test-2.c b/tests/api-test-2.c index 0523e11df..c41eb4dc3 100644 --- a/tests/api-test-2.c +++ b/tests/api-test-2.c @@ -427,6 +427,11 @@ static key_serial_t keyctl_unlink(key_serial_t key, key_serial_t keyring) return syscall(__NR_keyctl, KEYCTL_UNLINK, key, keyring); } +static key_serial_t keyctl_revoke(key_serial_t key) +{ + return syscall(__NR_keyctl, KEYCTL_REVOKE, key); +} + static key_serial_t keyctl_link(key_serial_t key, key_serial_t keyring) { return syscall(__NR_keyctl, KEYCTL_LINK, key, keyring); @@ -504,20 +509,14 @@ static int _drop_keyring_key_from_keyring_name(const char *key_description, key_ return keyctl_unlink(kid, keyring); } -static int _drop_keyring_key_from_keyring_type(struct crypt_device *_cd, int segment, - key_serial_t keyring, const char* type) +static int _revoke_keyring_key(struct crypt_device *_cd, int segment) { - key_serial_t kid = _kernel_key_by_segment_and_type(_cd, segment, type); + key_serial_t kid = _kernel_key_by_segment_and_type(_cd, segment, "logon"); if (kid < 0) return -1; - return keyctl_unlink(kid, keyring); -} - -static int _drop_keyring_key(struct crypt_device *_cd, int segment) -{ - return _drop_keyring_key_from_keyring_type(_cd, segment, KEY_SPEC_THREAD_KEYRING, "logon"); + return keyctl_revoke(kid); } #endif @@ -690,11 +689,11 @@ static void UseLuks2Device(void) // repeat previous tests and check kernel keyring is released when not needed if (t_dm_crypt_keyring_support()) { OK_(crypt_activate_by_passphrase(cd, NULL, CRYPT_ANY_SLOT, KEY1, strlen(KEY1), 0)); - FAIL_(_drop_keyring_key(cd, 0), ""); + FAIL_(_revoke_keyring_key(cd, 0), ""); OK_(crypt_activate_by_passphrase(cd, NULL, CRYPT_ANY_SLOT, KEY1, strlen(KEY1), CRYPT_ACTIVATE_KEYRING_KEY)); - OK_(_drop_keyring_key(cd, 0)); + OK_(_revoke_keyring_key(cd, 0)); OK_(crypt_activate_by_passphrase(cd, CDEVICE_1, CRYPT_ANY_SLOT, KEY1, strlen(KEY1), 0)); - OK_(_drop_keyring_key(cd, 0)); + OK_(_revoke_keyring_key(cd, 0)); FAIL_(crypt_activate_by_passphrase(cd, CDEVICE_1, CRYPT_ANY_SLOT, KEY1, strlen(KEY1), 0), "already open"); FAIL_(_volume_key_in_keyring(cd, 0), ""); OK_(crypt_activate_by_passphrase(cd, NULL, CRYPT_ANY_SLOT, KEY1, strlen(KEY1), 0)); @@ -704,11 +703,11 @@ static void UseLuks2Device(void) if (!_fips_mode) { /* keyslot 0 is PBKDF2, keyslot 1 is Argon2id */ EQ_(crypt_activate_by_passphrase(cd, NULL, 1, KEY2, strlen(KEY2), 0), 1); - FAIL_(_drop_keyring_key(cd, 0), ""); + FAIL_(_revoke_keyring_key(cd, 0), ""); EQ_(crypt_activate_by_passphrase(cd, NULL, 1, KEY2, strlen(KEY2), CRYPT_ACTIVATE_KEYRING_KEY), 1); - OK_(_drop_keyring_key(cd, 0)); + OK_(_revoke_keyring_key(cd, 0)); EQ_(crypt_activate_by_passphrase(cd, CDEVICE_1, 1, KEY2, strlen(KEY2), 0), 1); - OK_(_drop_keyring_key(cd, 0)); + OK_(_revoke_keyring_key(cd, 0)); FAIL_(crypt_activate_by_passphrase(cd, CDEVICE_1, 1, KEY2, strlen(KEY2), 0), "already open"); FAIL_(_volume_key_in_keyring(cd, 0), ""); EQ_(crypt_activate_by_passphrase(cd, NULL, 1, KEY2, strlen(KEY2), 0), 1); @@ -1828,9 +1827,9 @@ static void ResizeDeviceLuks2(void) OK_(crypt_activate_by_volume_key(cd, CDEVICE_1, key, key_size, 0)); // erase volume key from kernel keyring if (t_dm_crypt_keyring_support()) - OK_(_drop_keyring_key(cd, 0)); + OK_(_revoke_keyring_key(cd, 0)); else - FAIL_(_drop_keyring_key(cd, 0), "key not found"); + FAIL_(_revoke_keyring_key(cd, 0), "key not found"); // same size is ok OK_(crypt_resize(cd, CDEVICE_1, 0)); // kernel fails to find the volume key in keyring From aa214c098a11297f1669fd4d30d2b9c98cbd365e Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Wed, 24 Jun 2026 11:21:27 +0200 Subject: [PATCH 147/244] tests: verify VK and internal keyring cleanup after process exit. Check that both the intermediary keyring and the volume key logon key are removed from the kernel keyring after the cryptsetup process exits. Verify via search in /proc/keys. Co-Authored-By: Claude Opus 4.6 --- tests/compat-test2 | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/tests/compat-test2 b/tests/compat-test2 index 9e74cc37d..631c8dd53 100755 --- a/tests/compat-test2 +++ b/tests/compat-test2 @@ -531,6 +531,26 @@ test_reencrypt_vk_link_and_reactivate() { echo $PWD1 | $CRYPTSETUP open $LOOPDEV $DEV_NAME --volume-key-keyring "$KEY_DESC" --volume-key-keyring "$KEY_DESC2" > /dev/null 2>&1 && fail } + +# $1 substring to search for in /proc/keys +wait_key_dissapeared() +{ + local ret= + local tries=50 + + grep -q $1 /proc/keys + ret=$? + + while [ $ret -eq 0 -a $tries -gt 0 ]; do + sleep .1 + grep -q $1 /proc/keys + ret=$? + tries=$((tries-1)) + done + + test $ret -ne 0 +} + expect_run() { export INFOSTRING="$(basename ${BASH_SOURCE[1]})-line-${BASH_LINENO[0]}" @@ -1779,5 +1799,20 @@ $CRYPTSETUP luksDump $LOOPDEV | grep -q "6: luks2 (unbound)" || fail echo $PWD3 | $CRYPTSETUP open --test-passphrase -S6 $LOOPDEV || fail echo $PWD3 | $CRYPTSETUP open -S6 $LOOPDEV $DEV_NAME 2>/dev/null && fail +if dm_crypt_keyring_support && dm_crypt_keyring_new_kernel; then + prepare "[54] Intermediary keyring VK cleanup" wipe + echo $PWD1 | $CRYPTSETUP luksFormat $FAST_PBKDF_OPT --type luks2 $LOOPDEV || fail + UUID=$($CRYPTSETUP luksUUID $LOOPDEV) + + echo $PWD1 | $CRYPTSETUP open $LOOPDEV $DEV_NAME || fail + $CRYPTSETUP -q status $DEV_NAME | grep "key location:" | grep -q "keyring" || fail + + # after cryptsetup open exits both the intermediary keyring and VK logon key must be gone + wait_key_dissapeared "keyring.*cryptsetup-${UUID:0:8}" || fail "Intermediary keyring persists in /proc/keys after process exit" + wait_key_dissapeared "logon.*cryptsetup:${UUID}" || fail "VK logon key persists in /proc/keys after process exit" + + $CRYPTSETUP close $DEV_NAME || fail +fi + remove_mapping exit 0 From bfcb0c38eb95c08852c7dcd488c28e26c7775cf0 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Fri, 26 Jun 2026 16:26:45 +0200 Subject: [PATCH 148/244] tests: refactor keyring helpers. --- tests/api-test-2.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/tests/api-test-2.c b/tests/api-test-2.c index c41eb4dc3..3ef0adca5 100644 --- a/tests/api-test-2.c +++ b/tests/api-test-2.c @@ -477,25 +477,27 @@ static key_serial_t add_key_set_perm(const char *type, const char *description, return l == 0 ? kid : -EINVAL; } -static key_serial_t _kernel_key_by_segment_and_type(struct crypt_device *_cd, int segment, - const char* type) +static key_serial_t _kernel_key_by_segment_uuid_and_type(const char *uuid, int segment, + const char *type) + { char key_description[1024]; - if (snprintf(key_description, sizeof(key_description), "cryptsetup:%s-d%u", crypt_get_uuid(_cd), segment) < 1) + if (snprintf(key_description, sizeof(key_description), "cryptsetup:%s-d%u", uuid, segment) < 1) return -1; return request_key(type, key_description, NULL, 0); } -static key_serial_t _kernel_key_by_segment(struct crypt_device *_cd, int segment) +static key_serial_t _kernel_key_by_segment_and_type(struct crypt_device *_cd, int segment, + const char* type) { - return _kernel_key_by_segment_and_type(_cd, segment, "logon"); + return _kernel_key_by_segment_uuid_and_type(crypt_get_uuid(_cd), segment, type); } static int _volume_key_in_keyring(struct crypt_device *_cd, int segment) { - return _kernel_key_by_segment(_cd, segment) >= 0 ? 0 : -1; + return _kernel_key_by_segment_and_type(_cd, segment, "logon") >= 0 ? 0 : -1; } static int _drop_keyring_key_from_keyring_name(const char *key_description, key_serial_t keyring, const char* type) From e6573494f0feee971c8079d2697a2d925c3799a0 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Thu, 25 Jun 2026 15:35:07 +0200 Subject: [PATCH 149/244] tests: verify intermediary keyring cleanup after crypt_free(). Add API-level test that checks both the intermediary keyring and VK logon key are unlinked from the thread keyring after crypt_free(). Unlike the compat-test2 checks (which verify after process exit), this runs in-process where the thread keyring is still alive. Co-Authored-By: Claude Opus 4.6 --- tests/api-test-2.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/tests/api-test-2.c b/tests/api-test-2.c index 3ef0adca5..a6b82d187 100644 --- a/tests/api-test-2.c +++ b/tests/api-test-2.c @@ -520,6 +520,36 @@ static int _revoke_keyring_key(struct crypt_device *_cd, int segment) return keyctl_revoke(kid); } + +static long keyctl_describe(key_serial_t id, char *buffer, size_t buflen) +{ + return syscall(__NR_keyctl, KEYCTL_DESCRIBE, id, buffer, buflen); +} + +static int _intermediary_keyring_in_thread_keyring(const char *uuid) +{ + key_serial_t keys[64]; + char rdesc[256], prefix[20]; + long r; + int i, count; + + r = snprintf(prefix, sizeof(prefix), "cryptsetup-%.8s", uuid); + if (r < 0 || (size_t)r > sizeof(prefix) - 1) + return -1; + + r = keyctl_read(KEY_SPEC_THREAD_KEYRING, (char *)keys, sizeof(keys)); + if (r < 0) + return -1; + + count = r / sizeof(key_serial_t); + for (i = 0; i < count; i++) { + r = keyctl_describe(keys[i], rdesc, sizeof(rdesc)); + if (r > 0 && (size_t)r <= sizeof(rdesc) && strstr(rdesc, prefix)) + return 0; + } + + return -1; +} #endif static void _cleanup(void) @@ -736,8 +766,26 @@ static void UseLuks2Device(void) key[1] = ~key[1]; FAIL_(crypt_volume_key_verify(cd, key, key_size), "key mismatch"); FAIL_(crypt_activate_by_volume_key(cd, CDEVICE_1, key, key_size, 0), "key mismatch"); + CRYPT_FREE(cd); +#if KERNEL_KEYRING + OK_(crypt_init(&cd, DEVICE_1)); + OK_(crypt_load(cd, CRYPT_LUKS2, NULL)); + if (t_dm_crypt_keyring_support()) { + OK_(crypt_activate_by_passphrase(cd, CDEVICE_1, CRYPT_ANY_SLOT, KEY1, strlen(KEY1), 0)); + OK_(_intermediary_keyring_in_thread_keyring(DEVICE_1_UUID)); + OK_(_volume_key_in_keyring(cd, 0)); + } + // All keys uploaded via current device context must be freed. CRYPT_FREE(cd); + if (t_dm_crypt_keyring_support()) { + FAIL_(_intermediary_keyring_in_thread_keyring(DEVICE_1_UUID), "intermediary keyring not cleaned up"); + FAIL_(_kernel_key_by_segment_uuid_and_type(DEVICE_1_UUID, 0, "logon"), "VK not cleaned up"); + } + OK_(crypt_init_by_name(&cd, CDEVICE_1)); + OK_(crypt_deactivate(cd, CDEVICE_1)); + CRYPT_FREE(cd); +#endif } static void SuspendDevice(void) From 1267cab6b6fe65eb6fb9d52db18659850e82101b Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Fri, 27 Jun 2025 13:49:15 +0200 Subject: [PATCH 150/244] tcrypt: Support Argon2id PBKDF introduced in VeraCrypt 1.26.27. It uses Argon2id only, with maximal memory cost 1024 MiB. Parallel cost is always 1. Default parameters (no PIM) is 416 MiB, 6 iterations (same as PIM 12). In PIM mode, iterations and memory costs are calculated according to the specific formula. Memory cost is always limited as above. --- lib/tcrypt/tcrypt.c | 82 ++++++++++++++++++++++++++++++--------------- 1 file changed, 55 insertions(+), 27 deletions(-) diff --git a/lib/tcrypt/tcrypt.c b/lib/tcrypt/tcrypt.c index 9e99a6151..7f187006f 100644 --- a/lib/tcrypt/tcrypt.c +++ b/lib/tcrypt/tcrypt.c @@ -22,25 +22,28 @@ static const struct { const char *name; const char *hash; unsigned int iterations; + uint32_t parallel_cost; + uint32_t memory_cost; uint32_t veracrypt_pim_const; uint32_t veracrypt_pim_mult; } tcrypt_kdf[] = { - { false, false, "pbkdf2", "ripemd160", 2000, 0, 0 }, - { false, false, "pbkdf2", "ripemd160", 1000, 0, 0 }, - { false, false, "pbkdf2", "sha512", 1000, 0, 0 }, - { false, false, "pbkdf2", "whirlpool", 1000, 0, 0 }, - { true, false, "pbkdf2", "sha1", 2000, 0, 0 }, - { false, true, "pbkdf2", "sha512", 500000, 15000, 1000 }, - { false, true, "pbkdf2", "whirlpool", 500000, 15000, 1000 }, - { false, true, "pbkdf2", "sha256", 500000, 15000, 1000 }, // VeraCrypt 1.0f - { false, true, "pbkdf2", "sha256", 200000, 0, 2048 }, // boot only - { false, true, "pbkdf2", "blake2s-256", 500000, 15000, 1000 }, // VeraCrypt 1.26.2 - { false, true, "pbkdf2", "blake2s-256", 200000, 0, 2048 }, // boot only - { false, true, "pbkdf2", "ripemd160", 655331, 15000, 1000 }, - { false, true, "pbkdf2", "ripemd160", 327661, 0, 2048 }, // boot only - { false, true, "pbkdf2", "stribog512",500000, 15000, 1000 }, -// { false, true, "pbkdf2", "stribog512",200000, 0, 2048 }, // boot only - { false, false, NULL, NULL, 0, 0, 0 } + { false, false, "pbkdf2", "ripemd160", 2000, 0, 0, 0, 0 }, + { false, false, "pbkdf2", "ripemd160", 1000, 0, 0, 0, 0 }, + { false, false, "pbkdf2", "sha512", 1000, 0, 0, 0, 0 }, + { false, false, "pbkdf2", "whirlpool", 1000, 0, 0, 0, 0 }, + { true, false, "pbkdf2", "sha1", 2000, 0, 0, 0, 0 }, + { false, true, "pbkdf2", "sha512", 500000, 0, 0, 15000, 1000 }, + { false, true, "pbkdf2", "whirlpool", 500000, 0, 0, 15000, 1000 }, + { false, true, "pbkdf2", "sha256", 500000, 0, 0, 15000, 1000 }, // VeraCrypt 1.0f + { false, true, "pbkdf2", "sha256", 200000, 0, 0, 0, 2048 }, // boot only + { false, true, "argon2id", NULL, 6, 1, 425984, 0, 0 }, // VeraCrypt 1.26.27 + { false, true, "pbkdf2", "blake2s-256", 500000, 0, 0, 15000, 1000 }, // VeraCrypt 1.26.2 + { false, true, "pbkdf2", "blake2s-256", 200000, 0, 0, 0, 2048 }, // boot only + { false, true, "pbkdf2", "ripemd160", 655331, 0, 0, 15000, 1000 }, + { false, true, "pbkdf2", "ripemd160", 327661, 0, 0, 0, 2048 }, // boot only + { false, true, "pbkdf2", "stribog512", 500000, 0, 0, 15000, 1000 }, +// { false, true, "pbkdf2", "stribog512", 200000, 0, 0, 0, 2048 }, // boot only + { false, false, NULL, NULL, 0, 0, 0, 0, 0 } }; struct tcrypt_alg { @@ -239,7 +242,8 @@ static int TCRYPT_hdr_from_disk(struct crypt_device *cd, /* Set params */ params->passphrase = NULL; params->passphrase_size = 0; - params->hash_name = tcrypt_kdf[kdf_index].hash; + /* For Argon2, overload hash_name */ + params->hash_name = tcrypt_kdf[kdf_index].hash ?: tcrypt_kdf[kdf_index].name; params->key_size = tcrypt_cipher[cipher_index].chain_key_size; params->cipher = tcrypt_cipher[cipher_index].long_name; params->mode = tcrypt_cipher[cipher_index].mode; @@ -520,7 +524,8 @@ static int TCRYPT_init_hdr(struct crypt_device *cd, unsigned char *pwd = NULL; size_t passphrase_size, max_passphrase_size; char *key = NULL; - unsigned int i, iterations; + unsigned int i; + uint32_t iterations, memory; int r = -EPERM, keyfiles_pool_length; pwd = crypt_safe_alloc(VCRYPT_KEY_POOL_LEN); @@ -563,7 +568,9 @@ static int TCRYPT_init_hdr(struct crypt_device *cd, pwd[i] += params->passphrase[i]; for (i = 0; tcrypt_kdf[i].name; i++) { - if (params->hash_name && !strstr(tcrypt_kdf[i].hash, params->hash_name)) + if (params->hash_name && tcrypt_kdf[i].hash && !strstr(tcrypt_kdf[i].hash, params->hash_name)) + continue; + if (params->hash_name && !tcrypt_kdf[i].hash && !strstr(tcrypt_kdf[i].name, params->hash_name)) continue; if (!(params->flags & CRYPT_TCRYPT_LEGACY_MODES) && tcrypt_kdf[i].legacy) continue; @@ -574,19 +581,36 @@ static int TCRYPT_init_hdr(struct crypt_device *cd, if (!tcrypt_kdf[i].veracrypt) continue; /* adjust iterations to given PIM cmdline parameter */ - iterations = tcrypt_kdf[i].veracrypt_pim_const + - (tcrypt_kdf[i].veracrypt_pim_mult * params->veracrypt_pim); - } else + if (!strcmp(tcrypt_kdf[i].name, "argon2id")) { + if (params->veracrypt_pim <= 31) { + iterations = (params->veracrypt_pim - 1) / 3 + 3; + memory = 1024 * (64 + (params->veracrypt_pim - 1) * 32); + } else{ + iterations = params->veracrypt_pim - 18; + memory = 1024 * 1024; + } + } else { + iterations = tcrypt_kdf[i].veracrypt_pim_const + + (tcrypt_kdf[i].veracrypt_pim_mult * params->veracrypt_pim); + memory = 0; + } + } else { iterations = tcrypt_kdf[i].iterations; + memory = tcrypt_kdf[i].memory_cost; + } /* Derive header key */ - log_dbg(cd, "TCRYPT: trying KDF: %s-%s-%d%s.", - tcrypt_kdf[i].name, tcrypt_kdf[i].hash, tcrypt_kdf[i].iterations, - params->veracrypt_pim && tcrypt_kdf[i].veracrypt ? "-PIM" : ""); + if (!strcmp(tcrypt_kdf[i].name, "argon2id")) + log_dbg(cd, "TCRYPT: trying KDF: %s%s.", tcrypt_kdf[i].name, + params->veracrypt_pim && tcrypt_kdf[i].veracrypt ? "-PIM" : ""); + else + log_dbg(cd, "TCRYPT: trying KDF: %s-%s-%d%s.", + tcrypt_kdf[i].name, tcrypt_kdf[i].hash, tcrypt_kdf[i].iterations, + params->veracrypt_pim && tcrypt_kdf[i].veracrypt ? "-PIM" : ""); r = crypt_pbkdf(tcrypt_kdf[i].name, tcrypt_kdf[i].hash, (char*)pwd, passphrase_size, hdr->salt, TCRYPT_HDR_SALT_LEN, key, TCRYPT_HDR_KEY_LEN, - iterations, 0, 0); + iterations, memory, tcrypt_kdf[i].parallel_cost); if (r < 0) { log_verbose(cd, _("PBKDF2 hash algorithm %s not available, skipping."), tcrypt_kdf[i].hash); @@ -1180,7 +1204,11 @@ int TCRYPT_dump(struct crypt_device *cd, log_std(cd, "Volume size:\t%" PRIu64 " [bytes]\n", hdr->d.volume_size); if (hdr->d.hidden_volume_size) log_std(cd, "Hidden size:\t%" PRIu64 " [bytes]\n", hdr->d.hidden_volume_size); - log_std(cd, "PBKDF2 hash:\t%s\n", params->hash_name); + if (strcmp(params->hash_name, "argon2id")) { + log_std(cd, "PBKDF:\t\tPBKDF2\n"); + log_std(cd, "PBKDF2 hash:\t%s\n", params->hash_name); + } else + log_std(cd, "PBKDF:\t\tArgon2id\n"); } log_std(cd, "Cipher chain:\t%s\n", params->cipher); log_std(cd, "Cipher mode:\t%s\n", params->mode); From 4e0c3c87d7b2c2a52f14796a5da0308e0d2597b4 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Fri, 27 Jun 2025 13:56:11 +0200 Subject: [PATCH 151/244] tests: Add PBKDF check for crypto helper. This can be used in FIPS mode to skip Argon2 if not available. --- tests/crypto-check.c | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/tests/crypto-check.c b/tests/crypto-check.c index 99772f6ea..e39bb2973 100644 --- a/tests/crypto-check.c +++ b/tests/crypto-check.c @@ -53,9 +53,36 @@ static int check_hash(const char *hash) return EXIT_SUCCESS; } +static int check_pbkdf(const char *pbkdf) +{ + const char *hash; + uint32_t iterations, memory, parallel; + char out[32]; + + if (!strcmp(pbkdf, "pbkdf2")) { + hash = "sha256"; + iterations = 1000; + memory = 0; + parallel = 0; + } else if (!strncmp(pbkdf, "argon2", 6)) { + hash = NULL; + iterations = 3; + memory = 256; + parallel = 1; + } else + return EXIT_FAILURE; + + if (!crypt_pbkdf(pbkdf, hash, "01234567890abcdef01234567890abcdef", 32, + "11234567890abcdef11234567890abcdef", 32, out, sizeof(out), + iterations, memory, parallel)) + return EXIT_SUCCESS; + + return EXIT_FAILURE; +} + static void __attribute__((noreturn)) exit_help(bool destroy_backend) { - printf("Use: crypto_check version | fips_mode | fips_mode_kernel | hash | cipher[-kernel] [key_bits]\n"); + printf("Use: crypto_check version | fips_mode | fips_mode_kernel | hash | cipher[-kernel] [key_bits] | pbkdf \n"); if (destroy_backend) crypt_backend_destroy(); exit(EXIT_FAILURE); @@ -102,6 +129,10 @@ int main(int argc, char *argv[]) r = check_cipher(argv[2], argv[3], ul); else r = check_cipher_kernel(argv[2], argv[3], ul); + } else if (!strcmp(argv[1], "pbkdf")) { + if (argc != 3) + exit_help(true); + r = check_pbkdf(argv[2]); } crypt_backend_destroy(); From ee1c86745a7333a8e97c85b63541b92af9a2e331 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Fri, 27 Jun 2025 13:57:20 +0200 Subject: [PATCH 152/244] tests: Add new trcypt images for Argon2 PBKDF. Also modify test to use longer PIM password, as VeraCrypt requires at least 20 character password with lower PIM values. --- tests/tcrypt-compat-test | 77 ++++++++++++++++++++++++------------- tests/tcrypt-images.tar.xz | Bin 351900 -> 364528 bytes 2 files changed, 50 insertions(+), 27 deletions(-) diff --git a/tests/tcrypt-compat-test b/tests/tcrypt-compat-test index d22d1a979..36b0942e1 100755 --- a/tests/tcrypt-compat-test +++ b/tests/tcrypt-compat-test @@ -9,7 +9,7 @@ MAP=tctst PASSWORD="aaaaaaaaaaaa" PASSWORD_HIDDEN="bbbbbbbbbbbb" PASSWORD_72C="aaaaaaaaaaaabbbbbbbbbbbbccccccccccccddddddddddddeeeeeeeeeeeeffffffffffff" -PIM=1234 +PASSWORD_PIM="cccccccccccccccccccc" LOOP_SYS="" PART_IMG=tctst-part-img @@ -77,11 +77,40 @@ test_kdf() # hash img_hash fi } -get_HASH_CIPHER() # filename +test_pbkdf() # pbkdf img_hash +{ + $CRYPTOCHECK pbkdf $1 + if [ $? -ne 0 ] ; then + echo "$1 [N/A]" + IMGS=$(ls $TST_DIR/[tv]c* | grep "$2") + [ -n "$IMGS" ] && rm $IMGS + else + echo "$1 [OK]" + fi +} + +get_PARAMS() # filename { # speed up the test by limiting options for hash and (first) cipher HASH=$(echo $file | cut -d'-' -f3) CIPHER=$(echo $file | cut -d'-' -f5) + + if [[ $file =~ vcpim.* ]] ; then + PIM=$(echo $file | sed -r s/.*vcpim_1_\([[:digit:]]+\).*/\\1/) + PIM_OPT="--veracrypt-pim $PIM" + PWD=$PASSWORD_PIM + else + PIM="" + PIM_OPT="" + PWD=$PASSWORD + fi + + SYS_OPT="" + if [[ $file =~ sys_.* ]] ; then + SYS_OPT="--tcrypt-system" + else + SYS_OPT="" + fi } test_required() @@ -97,6 +126,8 @@ test_required() test_kdf whirlpool whirlpool test_kdf stribog512 stribog + test_pbkdf argon2id argon2id + echo "REQUIRED CIPHERS TEST" test_one aes cbc 256 cbc-aes test_one aes lrw 384 lrw-aes @@ -155,16 +186,12 @@ test_required echo "HEADER CHECK" for file in $(ls $TST_DIR/[tv]c_* $TST_DIR/vcpim_* $TST_DIR/sys_[tv]c_*) ; do echo -n " $file" - PIM_OPT="" - [[ $file =~ vcpim.* ]] && PIM_OPT="--veracrypt-pim $PIM" - SYS_OPT="" - [[ $file =~ sys_.* ]] && SYS_OPT="--tcrypt-system" - get_HASH_CIPHER $file - echo $PASSWORD | $CRYPTSETUP tcryptDump $SYS_OPT $PIM_OPT -h $HASH -c $CIPHER $file >/dev/null || fail + get_PARAMS $file + echo $PWD | $CRYPTSETUP tcryptDump $SYS_OPT $PIM_OPT -h $HASH -c $CIPHER $file >/dev/null || fail if [[ $file =~ .*-sha512-xts-aes$ ]] ; then - echo $PASSWORD | $CRYPTSETUP tcryptDump $SYS_OPT $PIM_OPT -h sha512 -c aes $file >/dev/null || fail - echo $PASSWORD | $CRYPTSETUP tcryptDump $SYS_OPT $PIM_OPT -h xxxx $file 2>/dev/null && fail - echo $PASSWORD | $CRYPTSETUP tcryptDump $SYS_OPT $PIM_OPT -h sha512 -c xxx $file 2>/dev/null && fail + echo $PWD | $CRYPTSETUP tcryptDump $SYS_OPT $PIM_OPT -h sha512 -c aes $file >/dev/null || fail + echo $PWD | $CRYPTSETUP tcryptDump $SYS_OPT $PIM_OPT -h xxxx $file 2>/dev/null && fail + echo $PWD | $CRYPTSETUP tcryptDump $SYS_OPT $PIM_OPT -h sha512 -c xxx $file 2>/dev/null && fail fi echo " [OK]" done @@ -172,17 +199,15 @@ done echo "HEADER CHECK (TCRYPT only)" for file in $(ls $TST_DIR/vc_* $TST_DIR/vcpim_*) ; do echo -n " $file" - PIM_OPT="" - [[ $file =~ vcpim.* ]] && PIM_OPT="--veracrypt-pim $PIM" - get_HASH_CIPHER $file - echo $PASSWORD | $CRYPTSETUP tcryptDump --disable-veracrypt $PIM_OPT -h $HASH -c $CIPHER $file >/dev/null 2>&1 && fail + get_PARAMS $file + echo $PWD | $CRYPTSETUP tcryptDump --disable-veracrypt $PIM_OPT -h $HASH -c $CIPHER $file >/dev/null 2>&1 && fail echo " [OK]" done echo "HEADER CHECK (HIDDEN)" for file in $(ls $TST_DIR/[tv]c_*-hidden) ; do echo -n " $file (hidden)" - get_HASH_CIPHER $file + get_PARAMS $file echo $PASSWORD_HIDDEN | $CRYPTSETUP tcryptDump --tcrypt-hidden -h $HASH -c $CIPHER $file >/dev/null || fail echo " [OK]" done @@ -190,10 +215,10 @@ done echo "HEADER KEYFILES CHECK" for file in $(ls $TST_DIR/[tv]ck_*) ; do echo -n " $file" + get_PARAMS $file PWD=$PASSWORD [[ $file =~ vck_1_nopw.* ]] && PWD="" [[ $file =~ vck_1_pw72.* ]] && PWD=$PASSWORD_72C - get_HASH_CIPHER $file echo $PWD | $CRYPTSETUP tcryptDump -d $TST_DIR/keyfile1 -d $TST_DIR/keyfile2 -h $HASH -c $CIPHER $file >/dev/null || fail echo " [OK]" done @@ -207,10 +232,8 @@ fi echo "ACTIVATION FS UUID CHECK" for file in $(ls $TST_DIR/[tv]c_* $TST_DIR/vcpim_*) ; do echo -n " $file" - PIM_OPT="" - [[ $file =~ vcpim.* ]] && PIM_OPT="--veracrypt-pim $PIM" - get_HASH_CIPHER $file - out=$(echo $PASSWORD | $CRYPTSETUP tcryptOpen $PIM_OPT -r -h $HASH -c $CIPHER $file $MAP 2>&1) + get_PARAMS $file + out=$(echo $PWD | $CRYPTSETUP tcryptOpen $PIM_OPT -r -h $HASH -c $CIPHER $file $MAP 2>&1) ret=$? [ $ret -eq 1 ] && ( echo "$out" | grep -q -e "TCRYPT legacy mode" ) && echo " [N/A]" && continue [ $ret -eq 1 ] && ( echo "$out" | grep -q -e "TCRYPT compatible mapping" ) && echo " [N/A]" && continue @@ -241,28 +264,28 @@ for file in $(ls $TST_DIR/sys_[tv]c_*) ; do LOOP_SYS="" continue fi - get_HASH_CIPHER $file + get_PARAMS $file # map through partition name echo -n " [PART]" - echo $PASSWORD | $CRYPTSETUP tcryptOpen --tcrypt-system -r -h $HASH -c $CIPHER $LOOP_PART $MAP || fail + echo $PWD | $CRYPTSETUP tcryptOpen --tcrypt-system -r -h $HASH -c $CIPHER $LOOP_PART $MAP || fail check_uuid DEAD-BABE $CRYPTSETUP close $MAP || fail if [[ $file =~ _part ]]; then # map through image only (TCRYPT hdr contains partition offset and size) echo -n "[IMG]" - echo $PASSWORD | $CRYPTSETUP tcryptOpen --tcrypt-system -r -h $HASH -c $CIPHER $file $MAP 2>/dev/null || fail + echo $PWD | $CRYPTSETUP tcryptOpen --tcrypt-system -r -h $HASH -c $CIPHER $file $MAP 2>/dev/null || fail check_uuid DEAD-BABE $CRYPTSETUP close $MAP || fail # map through full device (TCRYPT hdr contains partition offset and size) echo -n "[DRIVE]" - echo $PASSWORD | $CRYPTSETUP tcryptOpen --tcrypt-system -r -h $HASH -c $CIPHER $LOOP_SYS $MAP || fail + echo $PWD | $CRYPTSETUP tcryptOpen --tcrypt-system -r -h $HASH -c $CIPHER $LOOP_SYS $MAP || fail check_uuid DEAD-BABE $CRYPTSETUP close $MAP || fail elif [[ $file =~ _full ]]; then # map through image + header in real partition (whole system) dd if=$LOOP_PART of=$PART_IMG bs=1M >/dev/null 2>&1 echo -n "[PART+IMG]" - echo $PASSWORD | $CRYPTSETUP tcryptOpen --tcrypt-system -r -h $HASH -c $CIPHER --header $LOOP_PART $PART_IMG $MAP || fail + echo $PWD | $CRYPTSETUP tcryptOpen --tcrypt-system -r -h $HASH -c $CIPHER --header $LOOP_PART $PART_IMG $MAP || fail check_uuid DEAD-BABE $CRYPTSETUP close $MAP || fail rm $PART_IMG @@ -275,7 +298,7 @@ done echo "ACTIVATION FS UUID (HIDDEN) CHECK" for file in $(ls $TST_DIR/[tv]c_*-hidden) ; do echo -n " $file" - get_HASH_CIPHER $file + get_PARAMS $file out=$(echo $PASSWORD_HIDDEN | $CRYPTSETUP tcryptOpen -r -h $HASH -c $CIPHER $file $MAP --tcrypt-hidden 2>&1) ret=$? [ $ret -eq 1 ] && ( echo "$out" | grep -q -e "TCRYPT legacy mode" ) && echo " [N/A]" && continue diff --git a/tests/tcrypt-images.tar.xz b/tests/tcrypt-images.tar.xz index 388c142663a75bd01391e411ea717ed94603a756..f431393ad321749da327f6362be1a7348d2421f3 100644 GIT binary patch literal 364528 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 uz3s>jP~1>cU^Jbh_bspTLbw&uGJsJ%E^Sw+uR4 z_Vz19UZ);nT(UwfVd*Z4ny(eQnj={Vx?|yyi96e*i3cBsRu4S`XtSPleBR&nuBLCx zg!=q^uO$PqnL$5Q`s+*x*10}gKLr-DHG6(xJ7uW#-H`YVIcu)Sp)C^i`%LxG=DB!4 zrcL?9h{Yq1}6iW^x}mOG6|)bURko0(M0q$o9nhhl@jUrq+6Kx7>S6^3*Bumz{G2NI)9HSZ4_ed!XYX3+(CZ$ThDZHCL*3T zTV#?_pnLT|KGXBqWYg+s2AvAbb)4mb((?Pd(d?{IWrh3T8(sN%guPA;xUt{+@S`L`%+r5JZUWvLVGY}h!?QrFC*9z4v(5u zGv$JpZhTUCk=ETPM8W3=phq@aU?eC08x4~_)LHxeKFWpgWo5Qo@EWe5Ii%s)!=62N zIJ+8WMxLWWxd-y6Q59o#i<$eEK>Non^rrs91s6vsyQ9PI={WjMD=Pt z+Ai1)H>IZX8|Zv(R>yY7JirK8=yIIBIn~Iv9!ZM%PbrGS6Ja+InrS z+y7xgujWr10-w6HFxMzgu;ki03{Vv zb>jXqJn&&u=>T>>(fr-Uv>kqG*Y*J_R zOgg1;lRPlhKiMR@!6|wKfkBp^h1`AH>kMDk^-{bU(I=b|@;D<`8W50HmG9)M4=v0t z`y$PCX~x0Iej0&~S~;a(*Jn!Y?$7&|2*$Mtx70h~;z>Xi!jj8;Ix$4&SCyd(-Hess z0X_H567ZfQ5v1)c+n+Tb{zjH%+^^;b!{C8#@$LBC#P-wL={Deixt zUokD7XWzhGl!j!%*6WlGNyM6WKQJA6a+sy`0pfaYE`zGZ3)_iI2Ai=r|JPxWli?k<9N|8Gun*56}Lbtx)Uf>4@C>@mARG?7tv$Ck2 z2$J}#*ch0HaaC^|Xllgz4Z9v?l6fD-5LD9ew5qizn&yx-@Jh~(1EynHdqud01;2HB zCR@S4SAc^;DY+t5Kxuw*x!+N~d~%zt(id@l$9-E9iAl>KIH!-sIgDvM$=%T@3_(^P z4m6jB&wTDp+kJ{`n*T@fz@(n)q-iRx09u^f&p@V&w2=?$x3pV=`sDssit!3wSj z7D=&?7F98Lw~y7#x94%*>mv+xHoRbMyfMW7u|qAxe1_eJHCk-Z95A_>!tMG}TNMj5 zj4e~?NPNW(g7TE5o($fY`qFMqBq_z_C3=dq10>MigdH2k5Y%mJKCN-lT3Jao8VI!!(mM*Il!%VwETm zzp(^`gOH3`ex z<2FmZzW3IIX;0xNa}sRN`i#I**Zw%7?6Z?xf7$txgfQv-ZUw3w25Tq zy^{;%%Tuj`0Pa^3A5mnTVz{zCH+^!*n%FdoWImyo44NDy9jaY0M zXF2|GBz=6GMp}Q>R2KHGp<*o(W-bXXw<%Pe!+1WBBalkTtZOShi&UT@+VQBN(VTzx znkDFC^Khao5Jg`}<1a;t4feK=3jp8dT}gQM1Ry|9`S~VK4`-TuV<1oVpf;CS`HcbM zY?T6jv}Z&tGS(!F=Tr)JP1MLzV7#VFwV@frX`AF95;dVZ$JR}}4{nGbE|~HVeUkF9 z@YHgSL>LqD0B*fbEcGbNW-X3Q2va!8z8Buk7YD@3$np1*U^t=m_&_(3x`6@C9}&)* z`ZHwH0{_s=dV$X9NxS~Mpx?GGbNfLuw#4Qfu@7Y9+ln$K>#UIUxD!nufJ@ogvDcpr zo-rp35(E<+&;|VEL9e()89(-3$E@BRKA6Mhjtd!5)Ad&R?!kC%#q5e?E?|VR!Q`j@ zWgZxtzkW1vu_xf7T-YFDpH}b=&n8v(OiL*f=bp%*WkJUk9!r@B<`R+zo}Ng5>4V^X zS?y$+bJ%CY7InsWWV7>*qFW&;CvIQw;*(B$yNFqSC(w!8ER6^u>%fl%I>O>g0atjS z2rbUKM~os&&OibI{7ZnXeYCk|MqQJHlZwxEXQcp4&GE1tDkvWaIR((gCOw``Wl7?oSGRr$bz@-*=f+XU_dbt6lbk#J{+`q0j{C zo-!$@O{McL8G-xgZ%MfDS|v&_P0%9t-dR^561K(0#aqL;{lm2sUTY=)5(2xjh<`Nv zbno_5LXD=X@i%@Fr9lg}pw2cFU=LQKSWr?K4PaKiI@@;sHPO))1{EggJ;#Ai_9Pbv zp_xTGUcakr0pq?gPynqrwCBpS1-RO^7!KHcbq^wc0rzyZ zioIZw4%YcqXRb4FKb(1?dBLX5v|ri!+Qt_TTi_$U7@{G6C9$xm{F+Vr1X6xrA8B3v z*-V{V2(V2zE=OPug9Bnz4n*^=O+b07V%lk7g~wqM6wwY3v%KvsZo%UR6^^TYn8NW6 zsVG#la3_n1nI#<%VnUci?@jrjVJ_}mF8~B=LrC?GFOC-G!AEV4t@U<3dYD%K#8FH1w#Aq4a1?NII%qJ}cf zV{%de7x(kLEQM&$cR=)1_O00l3)5$Y9xEwMHhK=y=)6*K7m&IcWcKYX+(DEecWkH? zZ+*;u7IBR%UDWlIJenLWCrnMtRt)y`g3$!Ee7^C!coS9OU?Y!%;!~EdlDOfAr75J; zLe2p_2zPflba=rOlY(SL`?Si6Rjr?2wJX8#@RZVwRThVO55^3qITBY+>>)G>7VL`j zn}Q!)SAFf4YN$5XsJcxk#Wfc&`ad5(G)DYih!wm~YU}vjgmhK*ZOKld=v!4*1T`=f zhWkq~cc2yE7ek;*1y#2qM%zQdV57``P%Io$%{x#Zrd93G%w+GCh{u3{kg^kM8BY|pjt#y+s^Lo zP@9zHfx%xqSuBa`Iszp_ zFXaZqF`IySa$TZf;_fk)RT+wP2y@6`z)$T*bV46m_l@Z!7tWv@^QzLXM9m2PdiqS+Ug9F;z z5b^9FK35)ZqEOQDrJSbtOcbInE`d&{*4PWQAc0m`7d$4~A@Qw(cuzTGg}vS5Wk~<~ z0%GVzs;i0*=upuDP(rTi1o zI=1cR*Cy-fMi@<{Y^l$|)@5=G(hEx2=KYr(Y=az^_6P3nRov#2xaJ1uZ2=GmFuaZp ziZ0ye`B&-DS7R?JA0(|zZfoxM{yb>b_{2>otPd}0%);FVb=}=Kk0e9Im0@Ln`QjC23gJU=qGO<+Y1MA7|Wy)nqmo2x%;O%^EuVUjSg)0o% z2$B+>C>j}$xEp=|STMHfmFYrSdT!iuMV;D70Gp~Zfe_?+WE1pI83Rk3+GD4~A~nnL z#eu*?@#7$g)Xxp-Z0x#`9lTp!^-ogSXo*7*BF0XGPWy?%#kpiQcye99>w?$U zewS{^G^19gm@}2b(Y8XJmF~H;f7NQ^>xrXlJ6JD)QJbM#n=Y{fe$}NrBm1B5AyzYa zfkyF2jfm)-l<%cK-hizXr^H3XjD712dNnp*&5`k#Ay@=dpM`c8#eZHN)KxqP;f!VL zow6+K&{+!S)uIJresN1JMe67329i4>!-jGOpal+Rnls7-%|aQS_}BBAepiC_5Vc=KK5y=czMr0|n%6Jz{+;-qD)$=0V5ZPpBTd-7LKn-j1z>b%B1XW#MQl7tD;d?14?g%iz@lK*EJNS9dE5*wJqZ0K%#p6} z=P>=tim6|DC3epP`=%5|k@(Ic9joztORoockLjQcU%6Z~C!AY5lFQOlxM- z{|H0QhRnW_46$S9?Xg$hOGmQYjOSPXaxLI0J(t|kom@zMyvlDOnDG*HX2TPEpmnqf zE&lWeOv4?!LI%=$m{zgfNcCCx>OkAsJwkMrqOUbU3C%&f33uFfaBi;KlRu`-Hq`Z# zNKG7f|H@-a{#;xm8wgiA93xL1aVB69n)w@3*mz^M=cbDU2bK6qYK7byy8EAPWfE9= zB^Wec4*FN$2@I8!Fo|M8FrAow7Kp!n{vTbD=&CCDU4saAO~hj^Y$&4vpv`xp~S zf2zh~`w?+CnXDjf(#jBBt*BhX(AT43tp=6)kM!nvA{&d%UZ!V6B5op=qxhfH9BRQ) z3pZYW4EcX>MxX4%X$Ab8%H>PuP%p;PZ_mX2=-HWB1B_7m_Dr&~{>EL*ph}3OuDZOY z&5koATbw6%B5&&`9b(^MUEHb+(JX(}BJmHPP4As=UdN<3vKF90oD@#aus!%#+IdTz zk4+*>McA3|>Kqz9a5zAcVKj_*m;rjs>;ut#Q7ZlW+$npgQ!uUs7{vaixG_7SM1N9% zdj}cBf0u*W<-iJXFj`$Wea+*uSkR8Km6ST1GY`v)V5WBG3u*NjZ8!B1427A{XM)ky zL>xRDvMiLz1Gh1SPJ*{@B;DMrT;u@hJriAVJUu5Thz9ABSRRW^sNd1gcevPCG z4h-$fb3?a;Cf3Jvt)HTZ)dkfnTy8(Z=C7G;qgbV@S3YO2N*|~PhwuFEt^Z03l`qA; zhunb{YQ*2^&l^uceZ@wk7XNv=tDRsxL5x4ThpQIpRcWM;ZMcz{top7H1cG^60lZAkuIF|ifdptg0_#7X( zBjG(NLXPlIG$YQ`oz`?o5<=FG{G8=j1sv16Bn+?CFY}^B>>6zGw;~Xq*w&5OC`&i= z$C^Xo6pq19micP?LL%l@PDxCCCyz=*=ajP{HD~3ER5~yFWPtQiObmDlb)2HjDvP6i zp%x#S?7WXE4_L!QmuB0tOu38L31eS3p?Dmy8-P{Q+@%l(KSt_so>>X|@FeGScXGGA1+jC&m|r ziu+LXpJi#L4|dKb?7!BQY;tQ+&$E>ZbIswib7{N`vN>|bfIH4W?WDU@3C^%H?k^WT z+4kL&0|-m9baEmns`<1}sD{o8rkiOK&=De zQwGSH^RVi;g#p46;>hnN<+k)l|? z!#$r$%GKt;&m!~7Y+0#qE)Zo;lUVSaIJst2q*8eIU&vF*KVsM!nEPa4F~I~$j!0l22Z}tVdNz|?ZjS?P2l^OH&kZdh?Q8mb z;^Qj8bD3}n$0bcV1jH@Mkle%K*MGidPFuUs1^Dk?BUKSUc6Ntx?q;?>+^H} zawoo|ND3R4Va|=K{4S2vtwKCR;nKkP=YN~=QqyxX^v>hc!o z@8;hBFs$b)Mf~wW45*+yPkZm!G~}cpGdHJI;H-NBhg6Iz8-v*pe-bTU$nV1a9RE|> zV?jz;tWVhp;=`+8Q<-CZyeY)rtsUq~lw9`Ct&9ybTfC5fm=YbLlH0P%6WhYu~vP8hubNpd2}T%yqnqF=?95Ln=g#u?)~TspY}cIMAsbHNSq-?|(CZ=gr7gd}{B z#8p-i!SO}Wg(^AdS;7GS*QMo0zGB2ij2$>g;n)Yt6b=H(a!a9l zf|)PU0TY>hNAT8$&!9#xWkS0=hn%ri$}y{(>1p{-mgTOBLfs>KIY7ka>WkbTLu%YA zKUEW*UkA$A*AE?}`;ke>0_s=iluK}?IKA`xn7AZkk+ReltGfBepGjJc^h6G}+=Y5rP2=leKv9p183D&~htTzTe0WHB$5yc*_< zaaGUvnm|9O{G$f??;kh%kd&{FSHj7JUG?MTSTDgJV37j^U*3pvrAbMH$i&>~@{FdE z>vd#-A^s6A`ZBj8^b8UgB8HFHyI9%PptRM>blwk0r>tUckJ8_b^Afg%x8A=C5oz2m z?;d80A(12hcTI2oz+;>bsumwnrt4NI&#ah>&jm3f*{5OGn#f+=ePu%H4=crmg6$E@0zXM#m4An_6N6>A|Pqo-qKU zd?)U+NPYEb4xz#FLA~^sa@Wpa8Br>1?GgOYvw$({=^yz4JzojdC&-!KkcYx8qIuhV zC1N^7upLQ-TOC}cY<_)EB*PcbzX;p*R1X*%#%zx8wh+ngBC2f!fL zAopct9okKV)TO|}#Yv#?4z48d>n!N0yzkALLgJ zliSqb|a9$e9g&rK4b3us>Q-vV9ObP|NGE}|xf zA`$lMDBs{BUUAwD-;&5(5wYjAUEg6kf6LR~bJw9v^MV%!|RDH%Ug! zO1SE+gBb=(Ce;o5=DhR%|0KtkVeMMlwjK z5Hv%g`iM^~$`((Pey6@$b3O{@`Yp&Xu$|t%PibTcb43gRW(h}}Xa*?S9i9W|A{8X= zQ089ErctGPn?z?D;Yok>I?NQMsOl`=SI?pc zq|E-nl(+K-o|rI52glK?^HopQNEnqt?6;o~mLny|e5w(^utmuhe#`$t{r@H2rRN6L zUF4=}XT(GodCp4anotH=gv;MDYiIBoIj$F3t_+nQgmKrzRyp&H48?3xBHzZOcC3+h z=6X~$BvB;lz454wdTeX52^ClnwVt;-I8dM?Nm_qlvNXS?={hQcD?8;gR{WSHO3F&g2)}@X_)?h-QGuYp+tl?*K{L?PBnEhN48T z{M^4akM#C0$hsG{QD%_SJUQM+Kra0xqoq5Fb>fPOW-WY9X~IbE`%-U+S>?69@Q6Ee$7a$4= zXPc6WKTcTapWRJT)&y+iBy=9Lx&2`pB>*X0lJ@i&IS~W<>FZIiGkbsBcy2>y*p4+) z^iL3?1v8f}_V(y|Ru?y3&*&4mD`h!L^f8M%_2t=j1=$Cn z^5+JqJkd(Nr&D*FC|;?!GQXU==tVwM|M2QnvoRICO>qU}T*7GBn)&A1@rSccYytkd ztscA`1YNVr>Pr96#+bZbohl4@rAUN#t|x&c_8>PWjyh<6Q!=|-bA zaAIcZ&~{vP*t!*dA5VoeUKynhK9}@DZ7i$Hwlc}=PuGV{Z7QJU>d87~rz&oIFU#FO z-K-;84&0)O(Z247>$xWaH90xW-IgVf0HiPU^yMQm>>O($_qh7zg_|6JFrQW^QLq-a z`Fxwv!va?)iPE6V+$y8{ZaVfrCGxDN&H$a76dpz4lEzeo5-|dh7u#yeNcjbY(PsU5 z^D3RoaxJeaMld}#?%RUFXTQO8ct0nirK_yy)4Lh>{fL_Q8{YMADb`Tn|MFY%{MPSO zidG9X)P9RY_i1F>n*Nd@edLvz%B5~)yQY#HiB*#O7r?pQcj^&P= z_?T{GqQN?5Nov=;ng-jXaFFNWCa!zwgHFg4VB^cegNE@kTmO5#U&8D;YRjN;XHEUZ zelzZl(22bd`~HbUQX%P7(a@Yzgd`6unNf=`7NX~a#_K*IAw8xKlAM~UZdmH_Bp2|+ z=D@Z~M3FhbsSEcAXi64gUutryS46Q_XEQj|_Uj-%2~4xz3%aE5af7Ag9f!E`zSCRJ zY%q)u_^TW}D`upf*UL(zvlm8ztYMNg5_KzjxtctBE^UrViU^2y`07V?+j9J*aU41e zl>7_eLshc{#H0SdhoGkm0^w@QX{`C_QFtLrJjAZT*|=i!hNixu+HX+9n|^H<8@Ac` z!#5YzOF7{w1Kx5a3!FL)i@C+546(R^QtqYPCm8ywQ?Y&8K5hrZCzZh3jN`rapX$Q`sgRfer9k-qzbcrgoYWIjw&0Q#6#<1lILkf#?@yyjH zEec8}_DD0mkwG}tZh&~+p3CyTa>yQzo!HhtH^dtf7kmeQAFBSCr~H7~XaWXT&RV(?23rQ2JdFZZza^L%;O0THs0#;xJ+CH*N3p^#m|WL zbZT=V%etkUTqFseoiJ|FAQ;+WcP3Jr)}C2UW6iUIpKgh$Hm&tHz$=R+rgCxwJt3lA z>i2#bDx;qm#r)uN_MTe(#3ft!9!|p7Z_Zl5|Hj_@cQB!aBi@0sCsLr+nf(7f!{qQg z+GhdNWQ$$1D&ceJP=r1cgFB8BgBWDBOo10AAoTh|?X=ZIa@rf8WbMhjf5yHgYy98( z&!+U7pjC;077O&A$?rhieJ&`Ez(2bO*@G%&FgPS#3vFb`%+)~xtVZsXJ3zk7dDS5R z%-afpI(lO5y$2-6UuDS}tz-?3VCN zljTUSy+&on!|M{QN5fnx-TsjlJs=Va8s|wajxBv&kUjOiz^IkJ?cC=mmU4z3FQfF7$#lIE<0gWq5#a;|43nX?QmtgKUestx&>m`AihLW8h4XIk`g z)1zX)+LFBs?`H@i5xUkHBasm)YVY%dYzsdeq_t|0i-Z=ffx@-l=L{GrjfPgg5r*vi zt7=n=jO0btXwJP~mCYaUC#uONBEF?}mH5R8zFNpr0ax4! zPuRcD43pswaJrOmbaAP-2Q1)=c}r=pnYOYHTxc$v@#I#F~6 z6fh37YwK^q7Mfg23ttANtc=fB|J|L4x*Vk** zi88gg=>WDKcTxpH=~#4EB2KFIr(*%@@tf%;ub|tw120nxewi+n#fXxmfsQrjp24uOaOB)rHe1`M4^Lm$5b`7;x#+y!h7)#aU=V{(^))Bk9(>WjT8tPTyhGkxt zyd&PdNG9)?3rB8WS}UXIE<>_n2X6YlA(rU4eekrrDCTMywN*hq($PE z`1t32N?vrY&a#)kkzXdx1j?WIpGKKSqX05{FtklcM*=9TMMg6ix&;iG$#;tCfoL1N zy0Hm}Whi{Cnrd$D;UBa$NWxN|I5*sN=_}Z?5r1zJUPQ2;KK+#z5{9N_TP=slXQH`B zuH`?RY!RCoJU4VQY@wT`#h6TO!y>CxGW0u0CJ(4XeD~njswHJu1bJmKmgbFVc=3OT zEgdJd7M3r#5_VF>A>d`!aURpthjbC$J0uAbVc+H(+d!5z1e4Jn=j+L5Irf$73MXP% zr9>W?-zbnwaH6eC8gs_Fg=fpJI3N=(KTK$E=K^82tA&aPYFylKScr`eKr{+Y3~s^e zeoG=g;t(f-qeq%hZ!|PYHg)YUQc5^U;#?JQ3lyVBbFZhGktn2-Xy!(`iFU#&VoYz+ znzY7CWk%qF&L*W}34idD1sQr=Yy_Ix%<*14$#H5ASnoXo z^uhI;pvTzwick4h3;~l;Kx6*y*5Ifh>CfX1$7@riDV1wCMHy!p*v`|35VrfAUc>EG z+_1ZcLb%1QLE>@$wNFfwjUf_)R3#KOCj3AD29bwl**Oq;4^Or>3z+y%>E`_iC=s0SIKq772Dq%u-6f6Fz>PlyVUtKzB?j|KiOXXT52P5?)~&4GV84k<#J>fyqsZ^ z@^fpRZrSU2xpCF*%3I+BZkDGi30r1#pLrVd?opS)eF0nCGIbI-AZoq7(KzN@6j-mY!2C!u+4^D5f(&|y!`=7G!K=M$c;OJ0ct zuivlKbWsTl41u8*eS5(N0L~y=+4fWWON@GSOeA^36Jp5tiK=U8!o;3}&KW!R$%({w za_J{UFPIi#Wm)MbTdh&Dr(_USr!%+9EW))~dg^|hlp9~FP0_O^`740da4t=^#9+Zk z#WP(VC?9VgwBh1wWPGGXV4P9SQMhf14UVF&-~td)3R(GvdgdIK&ARxmly~`{ZJN8C zC>58u2TJI5e=vfeIMVn_WrnW~EG>$@xla-eE0#(4cmXFzR4D&4jl>O&dg_eT(?i_C zURbdfNW&tO_x>E2kP&{{v$^*p7|cZw*(UP|%R*vQiHtNtPWrBY!d1=|rHo$tgge6e zVjZCtMKCqoE8;8w&O)aED-3l~H)0@57&T61QiH{hG%b34FEhbEU9&|C7;4l2s=;au zCDA9q(FSyZfp>Luv0k*A8MAttQLyO;q8?jsl&Pt_H72|-LZ+u}Lnw;2BHx+LjuxmuE&YYpMm@HH9vQ0#0b1CPy>w&M&8<3A-k`K z{t2K=)gkv=6fMK=J?0O5@ttxOk-8RfUCYgi?z*`Zd$0Ux&DE}p%uommZ#4N^$u?t1 z#;==sjJk+S$AvRJ#=!t2P+l|+y{pP}O={#C-qyIHx2C|PS~*(|bcV%*m3H5l)LDig z^*_ikoQrm}(gscN6jn^%jMy>8BS3siU`^?eNEF*AHFfSw*?^WC;YHMnriE2r2HVVL zHP(kala?XA6aw67`p+}a0zY#J? zSq?}CA|1IeWk)(*W#}V9J>xt{W#LI|Wy*6>37c&|pQas8$L;Y-w+Z(k-SHQ8?T}DE zWx}+6q`g;g+)*1$X1gsnJtlP}7YQ)pl#zNwYKy}AZTEeIzsHYF222xcwKg&pO8*H< z+?rT3@)Y_E;kfMk=HCH-1L%N3v<+8c*47&; z+Bx79HwqLazL;x!NKPipskOAFFsidC<%}Z2M|n+L6chRU75BrM13blh&SlX`I$9Pu z^1b_`tT)R#GUE4tmM^P%&q$ziRQ;!8ecxm-xDWV|A_UA0S2ZbvwcYcbmAQEynbX0m zeGgi2!A--%qu}*};-J3x5ByV-Ui9DzxE7ljux?wG6p>|Z@ z%-mZqok008I5h3{XcW)gyNXR0sk)+38%vpo9Kj3N|f}4veMB6rt195JK#z# zuDjYjvCWD_C~#JhO_#GJ*moDP$WnE1@$-8RKO8qC9kE!~=tICw*|(Z1LIfN7Dog!F zNd3_!D+Ba_F2UTQg_Wf^;(Ch3hiTbaa!J6ip%a~{BKF2sZB{d4BwhrRm}ehKHDJ>U z|FPL06VAo<{j7 zn)Sdyj^%%}qt*>)_L00tAL8`JY}Mz-R7XnHu7$z&!C<(AEk%G?A>y%vOlD!D!hzNf z7&*7XBApZ#_>I30&ysZdJ=d3n2?ax8Je5!jIq(mxih^aI$0=Azd@E(B8b&AnsWhue zK)<_!?4h>?AAN(>xuq^LX#UmJNw6~g3H7ff}j;R&de#fA_K%VRvSnacO6^aJ# z>KoAY78yOJd8o}ATLwMI1EUyAOks4WH`GNUW%h=qfHIii68j2NEMr@0O*P8Y_9)J) z5a9EXke&^TqyCh)8kv21#So;e`xkG)7J?S+yody42;DWX8zX@(>*7F}XD+!Ou*RPV z$)R8PxGIvK5=3SC`>X7?VqGQ3kQ`z$FY>$r14o_4h?#}FMrt}0eXuQ8&PVRqV~8h~ zOdrz)%Q3jziBkB+C}{hJZ_+ZAJL(KY8=e6zzv!MOpX0q>mQoafoP=d}@!dqMosi25 zHp(97b|dpv$caJa8rc{mrj-}6GpQt~k$E6m7M2J_=MheMg9UfOz&t>&?UyS0Fk1x6 zh(CMl&_gEyTCCRQY18!Uw-l{?!jAeDP7{)iAH)LTh1^v#e`Cq%md>Bi&@&Uj4)K}Q zbz>>u_#^$h#(D^5GmEU7pPFb~QD8+lkcYs!6UX<5ht<7Pwb_V5YqBQz{pK%Yd6sui(9)XibP@3vIM&uqaND zX%Z5$Gl{X!vWa8C)9jqMif*=lgoHe;rw-k-?1x-fAwe;=vK!*Oo&HW zZ{L7UQ{_j#i{vrNupyO$x)u-1@eiN`yw-=|>lRq@HL7mc#l!v^YUOJ^l#)rY<+|p7 z{nQW!4|a3K6QhKpEKXlVja5T?P8Ffe%}8h&2R_bpVU-nIi}KH+i-_{UcT9=b2)O-L zJ})d-*_a`5;+;cRGbvMtjN6>kg4^P_#BT};1%3U64>e9|(^iHOwCqsFx>Q`Hue(lc15%VG43xnPcURP)k{z`N0G=^L)WFoVapLAkp6 zh*_=*nSLTE7htG)BRSEcy(G|wIIGy4_n`~Yda`=(J*#8Tdov2Rg_i_20(5cV_OqYA zhz>Sq9x^T^FH4GP6p`X?t2Xw*JkzN0!6K*o5^EyiL8F||6+@d~>4*)MsfG!7DZR4i zs&dt^3C)F3wLd0{SK9X?V-$Jn02IDh zcN<99k&u(6SCW(fNo3(0bn)f)6Vvd$~LTzC&iP>lYq8%6N#xCsiu(nY>_F z>&`+qz>lV31|Dwqq07#a@z8`OrjMd4G9_#CPwQ`|IvqG30qkSC8l<@0FquQ;ev zx3Q*0=9iWuPAA%4UH2Y4#(hqBcmX5YJxmZoz}bxYpgIepgzYw9)Tn}CX}nIIKURdh z!tMZrQFQcEs3?kJ4&xm%sf|*u?xiLsW-zG#nEpYxfv{$9W>g0=6;6)eEs8$301K__ z;;L5x(LZf@@N?do;)dz2|6aVO87d_7WXAqz3#9?cvbjBsp8lX6gux*G=}xc=(62Xk z`0ZA=Vdxq6Y7Ft2*SX+`l6z)MbyR*nB<@BAOSu2-?>bKT`jbvt`~NPhGR&9-Ei*;7 zHK+SiN$jKYA7e3p#f)UOK-XNMF!`7qG7<{eeNHFi@LgK^1zznf((QOZJ`~&N1((=D znD5&cKlr5WmhL9hFdGz@H9e|K6~X7JeT6~&^tkR!_=ln$DW(@=65(Q!G`g6)Gr(Xo zf-&X0F8ts9nxmmQz^NNXKf04%{jC~r$#t6cm(KL-q$iPLSTG_XU_+WyKt*R$VKhFd z*ocW)cMxnr;V3&?0iOMva|8UJsj`ye8z!^TBX3RZ?vsD&Yt)n+^^cdgrGtpG6FF4H zv{+6IE|Je5@RB03*8y`YSe(#lxgqcUy!s_#i*?#1<&HD4P;n^L{hBild!7vMXY59 zux^dRxMC#XsZ>ee0^2WZQohTp%Fiff^x4Z;&+vMjgk5MZ8p_)7m1S*dtgGNWdm_zU zK4ay#5-7n;pW{g!|3>Y48iE0c2fP9FlY4XUcmr^n2-Y_}N%4mnSQVey)xA^-7Kh7f zYU<sEAl~ZH{_r;e$ekFC~)K<^A z2#u>%bE54ZN4M!cR!giNpDkjq(_b5nBIf+-^(rr@lFCdxHrA<(hqRSmUUks`u4vSK zOOHl7LC_#+s~_JmQ;&;38qR9D2hE9S!p!t$`yxYLfEKkNqvB{>+fcgUxj*mwGug$e zITw9UXvt`$i zNB}dKB~6*Z**5$Af07HVkti4_gLYvo z0}VHpE{xZ1MJy=BK2TW{Rz73(8c~77eY}8;l7DE z>oe+DXCTLJY&1^vZTNanRB?T{o50m&Xk z(I#+x!|D)A<&ayhPOZ^wK#!xIn{EO7cJncZ;j)Fj$??QS^)9Z@fBn%FhbIWue&Mg4 zCEdhz>lXBKS@cicp^yv#$X?QtpF!sn4Gx@M1FoVd!>s2V?zas8_E$)aoWg4%ailV^ z8V$v2GJ+{OTW4PP#2qf1-$ahYP>Ydn4SLHeefqbl%QW{|3WwFdt-T9#GeZ(z1lKquqqo zkF$?_*{@8w?H=tdBsTCDJnq)Lh>g|`tEjMHrQbKjCm6sy(QC0Mnaq$j1)ZMG)1Pig zWwS;ELt9H}<(Q4`yEQ&kKAf+jt!zvw@I69`>)nDATUNb^knVhTyTokPibQfLh6Z8G z$~e5)ni{{;24c%`_MyJcS3-sU7#HmdF-_Qud~94sos1P}QPFgd`F^WFl_Mgc_CE&t z|C60}=ajUi&(H+4>Zt?UN~v0I(h&$J@j}tfy{(|u(N>ZO;xQ#)mw^O&Ffu|2W>3KD zR^ZHa2kHv?*~w9849O}Gt?vUn<GbRTL|;GF4%9=Wp?hJNn1mVE1ksnH3`zPN`t_Ji6ryZX-_(2NM~CThC8x8=UJyT=DZGlt{RU6bBmYaP#eTXo@>^)t(sT)0Q1{zb zmHJlOX`kktjvI^-6C}1|-k@~M+h)y!3DI~D)gVsNmesVKO1+_W6lrHs1c%}hx!JKv z1E^(nf98#B9bZNm>G=CTxOsLU2C9jSB@}jnCWCb~WxmPP;c@u{ORUAGlf1P4UA%XU zHGZclb%0I7vz!b~07uUG&68XV^}G=|Gy{fDO8p~K0&9US6y{;cRb!-&z>?%RliP&H zA993Rz~7=Gc@qY&L?3W(B#(*mU$g6`lY@5AU|a;|$G#%j4%E9V!zTssg?n$7^sbB( zk`fkOl%{i5a|t8r2mzO#qUURZTNR{WS462T4XkdJ)^f&%)=iwK-Dfc_G&O4p2SXxS zrP0rXk~Gff)nO0iim1z1-<)=S#=?S!MPR^)7P8U=O)ycVA&TMh)sX~%5XF3vg%l>}~QLP%0^F8~tS`I0PSmZ5Vz z)Jy|0y5rxF3Vz08%~JHdUrR!EG@V2YK5`u3yU^7Dw~dl)d%kbl$k{pWmW)TUjl=2# z?A5L9m!=DzN@`OnYD~+9ZRbXqK`HOasBM#?i=R4{laT^ULBKfwdk@ z8e5Dp**#(h1T(cY7QC#LqfhZ_oi0)K8dU5ma{gq6RGp@o-F?sN(vcnA9bj>CZBm^V z9?MLvkM#cMR0(kpoHgp}nbcVya4K|Gnt8ApH)6_E<~~Z`u9r9oML0zCSkHm+?kVJ> zb=H)%_mc((GiKcu)C(5>GG`tRaSm3wN4|A zpi#*@9o&ZfplV8Ix#3nF=0{>rE7h|GyEoe${BvVcF1h3MP9vuj&^Np1q#5D^zE5Kk z7`|WIU7GVs#TF-_olM^NX`4|lir9z^eRX5TxMEJhrxIDtu92 zq*Q|b-GN3E&>N6=mkl=soLsD;(8TE9efnubQ+ST%wQk@`Ad>@@Q#(O-db{23?-=!f z4GQS?yC(l-peb!TkDp9Nahj#vRU*Py_#%9e<>S{+M|<2%JCf>R;vkZG&IDDyCvOspy& z+RXT%xJ7{Q&26Fq0pea%di zz;T3x;t`nO`91dW3PVG4=#wSGBfySHlCYlFCy-T9h9Ikr$}7aoj?3?;e1xVUTu6MY zGN6Q8tlNP)FDY4p!G_ALdz_v~G@4K%(CRJ^q*!HBzVZhu_iKn#hv1^RfD3CJ#nDjE zpk*OvU)Q7s%hnfVggy?(C9IVYWi_BQM4CK2U1e($RMiLBY_>2`(kS`w4R&vDohF=f zfXvg_qVU88Y$?9J1jIFfo5l>RJ6gj13;e5?+U>2k$V99H)ySbE#6Vu^o9M<(- zokRD)3wGAn;2W{rzqhpC2jZy2JC$_UUC$`+%J>HdJ_X1By8GQrLEy`XldB{v?#l#rslH!SjgNXy?_r zoU9TWQzRc{S zmOkm;;?E=2&ZZ()@<}zX7se>PlHZ2?c~!F>D2C3nO0;<;EWwXQ#tGZFvVV{Gd}URZ zh>eDr{%ne0&ZBR9Iodg8SihFjp81>VT71y4z3#X z?RjtoBFfbawk@gJ+qClbV~($RV?2+Nh_}}B7PXLaqFaEmOsbzXS$dDBm!Hz(M1cC` za$^;a2L>H*IQ&aF6Xz`BD4KqV2y!T$qun;%*9>*8^ha!eyix=9f|&x{{)R#6?;Y(( zrkY@#Vg)W&U7CYCA2XXn>x0Kr-?5@$wzTH-Mq9+4`@OZV4ph8vstnFGF#%uDDJ~~GX|Vj#^BfyTN<~!(pr<`&Tj}aUY7|F zIZPW+g-{za#ztaMXdyFgBi5>&-95cRxAl;Ssq?rgBf{{R%9CHNiI9c#sA(8N>&D8E z(m%GUopzzbvM-q|a5E{RVZ|H_I{sdS_ue*O{SjqB0?M)&Jiz~26vhW?D-E|%xof0b z7D%g8KNA|np@Is^ghSyucZt02RDsD@E}?xD-+3rd%-mM;cy`Nnc=Gdd@`=%Yu0HFgtJN+ z*jVycyl-oGh?F#aI1m$+i35HhYClKUU27+pL49_!glhjBSfWql+K9(L^53BlgHm%- zd%(e*U>>G=!x({eza1WtR%exl`AcFYMIxTyO#EUs3rF9EX(z4SoY}EG@7zHiEsO#} zo*U_}JTZj^0dg+0IA?82tb@GOU(hP3$A z2|V6xBaOs~82NcWc=eTA^HnZXLwg{tpZqA20t)UOdqM|C55^)z&ia!O?qDFU=^Ho% zMdI>=tJjlBLt^D3>ctLfKz71TWsL?QL(H1+3L|S3f8QMNrc160R}q7Z(S@8hJ2%J7 zs+_ip2|f_%D#nSZW4wrJ5t{sOjV**xt; zM~qH)uTTL9*tPScLq9_9i$fdTJTutYJynd>e)_Ba*%B2K(d0Hi7azYw|K?<;G+)7n z5N3^JZ>zHPzMhwyB!Km8t$(^5=6Nzj=7nFV%)cfLxsZEwNh-WoI!~5Ge~z)^Pb&(G zc0Il|3~x>R;u6fu**-l{QVfiq2PVp}b_Q5u;QvCh4us;yZ3pq$P*F;6CKi{;D4way z)WkUo96gVCSl+J@}T_iT0Pn&Zhw|7D9Ce5GXPOXk?KAj^C6_s| z4wIlU@YVvEM?5{DLbourPElHvO!ae{GZ8@wt5crhgm7ij7Q#E@X_5p%hrWv_Uky3& z$YC+;2=WhRp|myKm_k52bQB)o?}EUnW3n~**}^dx54l1_ah;`Jt4S>c0FLXys4x=m zwJbYJJBMry%5S=@C_#%~pj0#bV}%U=Ezr61uQQvh>;qE%v`7?+5lEa7=ij82Ro4nG6ko&msrs5< zM0hhHH!u}6k7x}Zp}ZF^t0ntojPbH6+Q#IW5c8_pYRFDw;QY?1GAwBuxz=*X^Vf6kb})h`=A#x& z5#w8G4k1APe8eZ5&NNz_Iz{!bW-5nI>z^!9`?apO&>sW6#ar6iG1U*FgqEkk0jd%rBYV+vokRjmWKEUgt9a8Y~Tm z#)dhP{(KPr)=0!zpp{~HrLW2hk%=DC3oX35jQF|knF(1?I!-5kl;61+XevBahXWR2 zbo@N(5on_TjM1CuCCP1sV`s?wXj(fU$UsqAsw()H^;^S`osv|q3x5Nfj$@@TS6rKM zGIJdu`}&(hMtdGBj4A~e$@_hwiscq!!_P1JZry~vYPXtTG<{*COq=IQoB`R{2|th1 zICHM^E}2-#IQG8}dM3j+Dw@x}T&-UOKY|pe)2-jh~Srvo0X)w?c9% zw$*28WsN*S`Y$^Wcvi}h9%7KP;>JjYRI#HepuZDA*?B>5_JB06YY3$vxi$AxVMWno z=8UU^0^}Tceam!&!K^{Q#_ARoDEP%}ioRHBA6{y+DZ6^UJ52~kau~`(lE&_P>w(fx z$s$NtSbKa|F|ZwO*J%*5IA)_rHQFnLbxXpX>Pefb%NE(Wl5l}lS# zWy>nS0P@Pcm$@8j_M@_eLqg!vmyAX-b~w6ap9W~@x|9jnn}e=TOe!{a}bDK|6i z5z+WvDsQ@4l&Z^a1#Bqlp%C`W#7jT1&Lwb`C%5@AjkULRnq@z8&EkDkT#4i9bL&HO zz`WXHd{a1h^5b6;72{>{JR(cD3_`X7wOxzUzqEEUFx#TZ^>|R=w1Hiz`S&C2ZeX4T zB0~QyxP6<`^$G4z6dF(rHm+QfXAMsHeYW%H<>XIIUxU8O`XcMP-@D;?y+1ir*$K8% zheZwFw&W);?f9I2&}28)N2%oewpYv6BxR~aw}srUB8)LW3y@B>WfA~)BQ6(iV1IV_ z*M=k(3VD|`yxlF3rfKGL(kxx4krn0}RgdiQraNy|?7=ht9HH%M4G#Z|_6GVpJm9x7 zY4_AjfwPgbg1uWmdXcU6g(<)l>%IRoS9dIUr|(qZ=g{EewG}E@c~+-gnoodsgF4P_ zi;$JSEc4O$dOM8%sh;`TgbXd|GoKeF$a1tz^An&-vC2p@1m}l^syy0hQ1})bq~=R zbmy(=Nx^?K<#^Zy4z@&Ns#JV!Lwx?!n(mf5%SpNIvd9$BRm%xBrY4Zv6v6j8go@93 zw7|$QL1B}*pKJn9)`W^g5yn{n__mYewfLC%SgkiU}IZJ?#n85`XUMxcq4%PhG zIqz1$5n$v-!F(dMpWS~&5`FBD%Wg$|0p#0aaMq-ay)P*BWp%Afx~Zc4)tp?RC(e&7 zKo0(8*0uNFT$K4~vE1e)QttSAv)Fk8D?n?YKdu==d@4HWEjsxgm@idfh|N^;uVyp3 zTwEoImf(cND^!7DLDd+>kvYe(Oi#4{4aG0RD%zWnhk*6lV z>?7w3w9WkJyDBNyJg>>DfBpkQ2tsn~d+s0MwanL0rd(*|Q&M%S zMziQ+YmC32izyBfQr*B$?i^bO9j8Lj$p9dOxuT5A-*P$ATOhDvR{%MTqNF4?_PLMk zf_}uvy5H*~RTWKMulU?rF~hNS5bdwY6Xbsow;Agi@Pk+_s#X)mLJcv}QM+~x?c${f z;Q^sNKK71H)8=B`^_3YwVMZ))66m**Gk7&}(s{kf9LBr_PHcC5(QQNcHV5rQcaCjp zbYE?hN<)W1BvaVvsd}r&?sM!2(1g@-U8sjmw0-Tb_jP0=1u<1F+gYx05b_%q)YNe* za(FV37Z)a#U?bGYbGnecIl&UM2Mw42Hdxk(e1kY1bZ|KnNyp!9C zv{N)w`X~a)k?0<$&n`kD+wl6PvMINH1klhfW((>|3*u?_5rHwy>o-{oOGj!}<)93t zPZ#(A|Ct2S3wyf39is|W)pt%8+H?;8?e!s_ouSt0!6rQBv$a1IORHT%)z$diPtk~X zO@E8qFvK|c!nw-N-yWHm!%8n0)-XlgUrk30lvw84n`;t_>(NLhuLv-vpwN-M_h0}b z9w^vf_w>oH?NZySo;=nFMJdc$IZ&lNVlK$Okvzm zWw;n0S&+WQ~9pvo2Fy_zl(0D7%8gS`cB*@5Ddcv zfaxC!>eL4b);018g0I6S4jVKSt6S&_Hg?wUK0hkf@X9Yo4KbI%B7H#q$G{fq@?Wc& z1$eFsdWU#prCWg;Tw_o!*Kd*Oq$DV zCV50kNkqi>35!d~yzYV~LO*Nod*D4xL3jUA#FF&}fV3e&TVeRbHu|gOQBg$n`fJBr z!GW3D2vm)|t%}s8$>mzKNv%eutO(}w{{lzr)t+_v6opjlX0~>12TXBGP0Ww!k!Fq> zD{PnCr1397GLBE^5|>yQU9s6aA_*n#qw9>ZKA&COQsgeg)-bhYT96^Gf8Nb$)2YOu z(=^Oswg(OaleSjVC{--|;Ctt6#a}!%!V&b+FCS)j`@mh?zkQu7%{>OE!tZN`rOH~m z$k&ipY;<;*olo=F*HvUYw<7?MVe{scWvYri_x7{Rn%y-#c#4HDbeV{Qb4eKSGEsJZ zd*J>@S*@r;7bbZY0<8ZTHMCUbf%>u^lUI2M>bwgxFZ2qjuSbjsr2?b*4wk zN8D7gF!;!J!uP<~;FVc# z>&_Hp7C)>QvgG`JT6ny00B@w`8POBL)VK3&!b}Ux6uOr4q3JM-)JspBT=Rmv9ZEfe zM6Xgc+BZGLEW0o@LN5}rcs=2vV1u+AsI1n{%#e=jqAKpxjHeZv)_eMTXAatXZ&W!L z)#qPUo)C|J+1V#g1v-)~#|W4(2t4x5yW2GUIDYk*Dud_U3;lfi{HbaCHN&}R>WaD^OL+v zfT+cR#1HFeqjHH*jAE@r;UOyGS$Tr}`k}OFss6WB^;3RBt#5S?_{kZWwwHK(1Rv10 zd5YRC)Fp2mXi~S)jA9@!@pgUGb4OUUen{CX*MDGo{L=VN0)fT*`n?z5FEgkMcDozA zrMh&_ezSYXY(dynMK>b#(V!g8^d}Y3FsLn{BgqcOjArtB3^NEbpsexU%AKw2@O9eQ zn98}^mC#H!YPoDweW{evW?N%Aa_T?=e1o*aS*T?7CVQI4x;#>CM%kphq4R?Hol-o4 zmtw|Fw53CB3I^$xsVc-WS{n*7Sz=@^eB zt~?~y@{PP^lMl_EU4XZ%!9T+pGQxH+E(grRFRmv?C6m|-iG2n7fena@XN>AcYj6X> z!2Wq3;?3b}wMNzIYxP)fjNz^8IwOJnHkp29WapktvZaSmN@FhefX_Nv?Bb`_pE9?j z0?hfcDtw}hgG>hS!L&dzW*bk}UINc`X?%DEd#t=#t)Scx?$t=|8wIpQ2QIylX16{U1uk8G~P3p%x zfe}}uGs}y20xqReD=zgLGE;(=tu}fOEt`_ylghE1j9h+TDO&XsC?5&zF{MW*eSehK zg5a%AbEGptDzSEw$rjHO*r4y=Oh24L6$1H6ND3*u_WTF-BqlejbP||Zl62TlB_UvH zEjFa=!?6=d)=+dmWyyGsp(x9V)L$qkTd`9w3=ZRZB}=xt6?X|(=XNGbZB3Ly%-l*A zWR(1K0e8}ZvU_3UwWLBaW5Lz-y4(+K{CbcGXWXbR0!?#bXd$ozu$J(;9OT60=j}Mb zwZbMTsB%ZRS;*kI2B5{2eym!gb0*_`%SbM4oD3I! zJ#;{BmQJ>jw|)*6UN8VpjA@QTAEZXpc8AT`_Eb}{-5gJ+Bu$KF1wu^x&JxJ)w+_l2 zpZwDVe)2swEYU!bXNXJ~YmBnr96B|aX zVIr{p|K8b36J}77Y$GvaS zyzOuw;FuWP z&JEOfz*%~h=?gKPc&$OqrqlgRZKOh|iCP$kVi}o&xCJMpbol2btsp9Ayq90pLXQ|1 zn~dz6n{2yOT;2}T#t+)Iv{x5?t#bIit3j29n<(-jBQ@&fqSbp8&O~F1d3%ssfXlHG zv+ZN=I-(5#MQkM&sj8p+dxYcHRP3M)zb5*>m+PmSQ@DvPJx3F{#OCyOSz0iKlrx4N zrVRC{{LvR!b1r10(tKNHzs0`*hb%s257q?e_meS;bUc(+pRs@O><{l5*9KccKq4Xa z_6ceDxQrgx)B*$mr%Wr%MGZw5BXFU|^LQk*cNQ-zPZ@87WnlBpF2uhsQ3<|&{nP2U+3M7-hLvA(pm+!`$C#P1-0c@0i2N`x%MJL`Fqk_qp!<3+AUt*1UtEr z?+=+xP{?(BP(yPtyd+@-wtu|#LOe-J%+YH2DHO1(An++34Uyu6t`&PM;ah({Qvx8R zC3o;WtQ)IR+7jkX8$9K2ov}WGgKL5?K>A1CP<3=P(eej)mTp=<4_nf=d2q2r_FOdEQ_uDAHO)kT)a7L<2U1GXd_a<_R{I6}9D}40o zvwRz>~+t#RJrhxqF0LeV@EM$@mr~nPAG2$T`=32G1z*-(~fIe zvB?d0T&_VGY(M-Q1dt)7K4gfSlSnmPmo)PWbVcqat>yC$OO~1gnD&DV-dB zrvYIw^_&5jp>s1F>J<;==#@x;jUTzr>z!m`dyExhdyIzjs0e5Guz+XfzNHz!p%|LW zeQNNH>XEhfiasfh+Y#HIZm;WT z&DL6~UyPT{{;;cp?G-4d5p5$y@vHO_p`lv%cNx|Q49Ma@7AZS!e5oR;Tu4(ex0WQ5 zC|{tcPsN2GCGbIYamnoZCRO|MXv#f?T}AbCmaGk3Gi)Q$_QqH$a=p4v1o?UTTt9@N z&066yrr`;&m;L9tXp7Uoux3Y!nQwVrAO_43do1K?c4~URqOl-SRxo1gGSz>r35Ft+iZt#c8>T$uRn>D)+@O%sEYXAthYTM z(6r?D4Va0)-|Kw8jarPBWN4L@{(7jgk)iqM=MZ6=jEX1w&zGxjD9ed(35@Bd@T}~{ z8^xiNme&w+smF#N)NzC$?}jINfM1?bgWL2xbe>z~FhDhB*%e>sPy&mPOOrSd>VlzY z@Dt!#@=Ul{;|~jGl?|3{mfcSuY(%`baELb@>#+hVL>e~K1?i^3JlF$7VG7`H0BOS2 zd;#?p7ck~$E1*-CS(E~_qE~xMfk3QcJ=Ibm6zMjqDFO$({{*NN1690h@$%F$G!BlM zsAnLr+@nPR3|&D6m*AgbtNTkWVt)Xw{CfY!!1wv|e4Z4fCpw2XDSrvdgHL%oivoGs z;r=%|sW0FReuyiLdZUc^z;nxh0=k*wngOtGF|(ndqcpm)9HRl@3|V|)Oent`+dEE8 zxX#9imf@bz$g{J8=Jg=1wpHyp^)L`hLySgp2*RTUYc>QNo=76mMxAP~*FUm336y5> zJ-FdU56VsHvkU#4CwpjatHQeYlyzEWKxV{DG+i6KQUKlWNfVh?l#Y6!Oz3HbEjuml zhMS*PeYXEbfaYN8WE$Czf*)+GIFJ2C$Wbb1i5~GY0^&LHxg9Hd)Vnfmk*vwa!I6tt zT|8ukgd12@TuQPN`l(Uc?a5b{L|!^c_WP*LW|@)pw>LQNheK^}?+fWk$$OK#S;Twg zIT6Uf7Yl4qb67r&$g9J#<-3uWTeOl-d%>XtbdElSTKC!CDA-cJ_teDtYwp*59aPhr zJR#R(Nss-;-+u@v1d6V64m|i80lp8pmd*a78%Y0CMiAa0P*y#JgUSrN3e?q0=BPfE zOimcb?%c4x#fv*Xwk4?23I)wv8`7#7v%a$Yc2A$u+Z+U(bv0!QneI3%`HmAf=B#qM z+uAdo2Va!RAlT9*($!r#brZ+^%*Cq@RqeM)W1gotNVxub5-$E$zRd$Z(cSuYiiWyykA zAza;Zdjw~_v`1SD^0AKU{0`~(PNyo2t>>HrS)SEcnGbl8p1}-3^%Bp+;d6G-t)(hyEvEkgsAnueQ`kBhmU&DQt91*@oo?U zaTCg7+G;(K)EJ;K?MolsG zrlQ9j+#^D7fk{?M(_+JUj8m}gNrK%VKF7x=viT!qw;opc+7oicQh876lN`%Ie0AWT z6)JS`@yJ~|r&(jawoDww0`d-e(E9Li!LLQ*3N(V|QH4qDncOVL>b>}KU!qhB)b-09 zL;vX@A~6Cv-r7-*yZoSLGLL936_jko9_v%9v=8UNWs*|XU0PyTB8bp+?9%{;`ZTD* zgUrdWbHczr&`{mg!^SaQt3CiaDnK|Xm8v@JR|zpz90Vp!H88PHsgGmolP0H-jGd?l zJu1$5noDq$IzHqG)4ntp)gq>%2;9+$c9ojgU@LPAj?NV4;aRIN^J-+J26RF5uYuFz z9U#YMxh&TBQ)JC|i(7tA#kT(I=HE%b-}*+`SRb2eTB>KePmEO$rAaUi5XQbSXmyn` zV>Aw*XsUcuA|7Wxkx7_Se+$AA6tkh7ufY*PG{X3tnrkEdih`IW3(zk5#aJG0VjH*O`}p__vWPa5&BzQ9vQ%DY;gS zK?l3&PJ$z)-AiUeDp>Z+noh$WMm3JVV?}gmW{vjU0E~D6sXsiWI3Lo{aAh>4j0dY@m@ zA|#z`dRdEsEph(h!vvc3h`#tB%%n=nREE@Z+DNH>`{s2x)(KnkNcry+TprvII#3lk zqRLX2&g8-??t0I1Aa7~nd{STwrZPZsgaBHT)o7?idTWC zl>qD4a{cC?s{E180yD79{1BMBzM&+4LWsw%8A*!UiU2wp;)RBN!A z+{okXerjPaYh82-R*v-!ak6<=?ELbh|CtU%Bad=>d=?^gwI-p__9cq!>%aT>;0LgG z*7+n+4yzzOk@BpK=8Z67#nSYbp6{ZR9Atc~vZy9zAZO%#wc3}5)ttvMsfxz)_bw_j z4ZHWxmblK0uh?U_vO^HN(AbkAUK`Zu@nL+4!8qodE&^m?i=S=6pxReLqS7nI{Y;Jl z4^-Hgt-M zwB)vJ+qP}nwr$(Cb+&EWINP>uTXTNFt-230^YZ06RjI66mGnw_bt_FWrDOGt=Z`tH zadjI$WrkJ94RddOXEU5agSc9D^p(5=I{#7*WHGhRZJA#u>-!l=NDerb`+!|i%<$1j)hhvq{@!qG@Od>|C4tB-R53!F#E?u137;CP1 ztCuT5j}Oke4es8rx(}vobCvIE4Pr6KX$FijLzh5AQ}p?RsWyuwhz2`te{|+Ke`3z&HyB_vBaPUYWiz zYA;bPhqc&!UB8&1=p}FRiMac@MH&EhZ(7KJ+FA)}<9S>t;3hex>qPonBspsJl-k88 zr>@G1DdMki|Bqyq1c^Ea-)l&+ZO^cCI5w6(_g`s)l#1niDyM1ABS zRVn;{aT`NOiE)V`WC_%Y2*>9>8e|tFlrFb8hMh>7*AryT&hQBEcpIo3^ccHBy`D}y z3I^QuQGo&>vI@LtS_x&!*t@Qy(7HT$hF~UI|6EB-97J&Ft&i1Uo1;;c=i%X z@rIq;NcPF=a(dkLpfj>{<^D9%%=hjg*59669yiUBSW2*pJ4yPa#k3Uz1LjjNzk+jl z^ChWsa-V+0F%d^4JjK<6HorC=)}gtUE-~6*HL(+xP^5{cpQ2AgE#lus6@AZ6Fsk>f zFN{CHKbMZozZg{}jX&Fh=aX;9 zl+{(~tE+(=(OvD|%)eAi_i@m>q8EMGnQy&&LOhj!VUH_K{@t@{ez*IOM~j5_;xc}r z;GUlR4?sKNB?8_oQJ{?)**qORP5xo%ZzX1MdNYQdHw2_7-iRU!#eU~d8e$(jr2Svy zw3tw;V*t(QsA*Dtd|82!E#-c()k8e!_{Y-#K=gd0Jhb3pFp3g=MAoRG^kA%gHrS&1 zC%-`g!D#&{fo$Z+A>rVPIN2|t_0mrC;|iDD8iWm6t$0I>Rcn9^BXdBGOU3E^sr~hO zU+xVzK@J}=qmVY&k3=Lkbv}4r{>}hIKMP&-HT-Nkmv%Uc0ez6(dE9ab(IlpCKBUP? z=gL;{uRve|;Djetwa!GUkYw^lxBMux``Kvqb#5L8;A9iM{)EkXx{k9E>NpACIO*$Z ziz$PbTYMZF@HnfUkb;SX_mjlK2}jm2n1^+_D|~-`ii7wWG)rz-d}!_CmOzu1zlXkN215%-F@}MP z4_?2G!7O#=yoZaQkT&Nf#zY|$U`CFi{pZhLE^;YuJx`%cG=>f${NIi-Y`3769f7}7 zd#M3Yy@9$lcOwU5auS1(E;V1y|1cyg3Mq>EHe)k0&KfN6$|KXBN@&sFLW^=}88RG5 zkq3(KxbzPA9lC?MN|H?M-t)uJJ<5lx+^ksy>jpdp8jPP}9p5hx@YhE1;|!E08#6vQ=6g_&|rqElO7^pW~$o7NrR~k3{XQx70(-{+x^XOH!t2 zmE-JcSf`=?q9M@A$fusj2deo(;Ktxq#l+M0)R8t!g)x17(@vJDCX_7yur3%={tke2 zV!*&(DYxKhdULBS3A$iY`d|9)wPxdR94Cv_&cJsnucb9fX=(tv%6$j+mj`R&#CKur z3+j8l$RI^JKWCGzxF~$aMj(m73pxlH9cm?lT(d5SH*H2sBU7qrck2+*+2yNI zY0YATeJ@q=Nrn-}UFqbZTAi$z>tVpcDPkSJw9v}l?E>hMRm6N#*3$^ny6RDdoW2li zIB!z^@wVL2iYJ6YTkP=}?owqc(2{RZuAU20Um<(eAo%C&*JYM9PNDS>UsprbCU@2Q z(u!`$4W?{qr(E*W=$|ecW6tc1yW2)$so`wJ=vPJ?$B&h)FDJSmoiEIVQbF99iPjCg z*qr*?x?{y{sCla`Fb~arAAcj}@UFtC-Y_yweRA0}G;335W$oqa2ru29?1oql%UJ2X zCQ6(X+|^TuBss}Rn_NN1(eNQ+9!2@Oi=Qma^OH+lweFgZLmf%#V4y3kh5hz1h{K+p zIcr3_eO~XTOciqffnX;DI%*|1#D57EN$ayl)hc!wqm-M^i;J=;LDt*ozvT>ve4kWs zIuN!xz^VRV5|bu1?7(eRbip31d*|45pE%~gN+FXI7Et6wsLB?6k*3xZ#2WFIC}#bj z*$6qoQ8uk>+MV%Pc}bLnTMK)jdPji0{#cxAmT0>vjumaT#3F)?xxm8Zi}SH>46ius z7%?h>s~=q1G>b$e4!7kG!sR`K=Z#+jeevgMmL6o2|67Bwh7?tl^`et)|KkkYz|TD6 zVq)~sz7jiv70|t6{_zjIg-471?xJNQa7U|uqEwuG;%kYq5Q8<|+gn%dFa@b7bB$rB zlZ%&^+Q9T+arVnp<_;VdTAg1i(2Jf*9$p~-d+DQM*vHi%ooDLKGLQCr1w|1A?E88y zI=}!Z)>>`ADLUskS+2pl5Cof!ZkVylqoSi&4|X~v+;IM#5juUqe6p<@QG-Guv~I!L z2m#FrYLYnYE_yWy6$RIBIWM9{CrS##>?WB5+V5sXszaR(6>88saV6A*kLdZt40ey; zA-UPZT7*ZimIytF|NXmtcnivmH6&#uuPd5DqJmN~x8EQ^+iSMK#kpJ7B{~OrfB&!0 z3ejpEuS7^?l%i2HK3w?9&mbt==+9NVK}oI0VHYP{^O_X0*_T6SPr6G=%FOR)0lSM= z7LNeeSd3TMxZN_gRHm-cLV#IA(KgN;CzVL8wH5J+&gbIiIi?PWQT4Au+H>zE81>>F z^^c)n29!~MJ5t1Vx&1w{VJNj%sC@5(bIc`C$`BOoGH32;WDPfC=P~Q;guMa3b)m*i z$X_1yT*r9<@Xf{~<;;+S&P1C%_LXfW52|1G5-8~opU&AMxB>gS8FZjUZ-U5R@T)BH zM)rI-tH$bi4(uyr#YQzBT_>#qs(xkHM2WbL>9gxOPpY;_QtAb$q#qgY5=ZqMUydQ` zO$4BoPOAk?ZXF}`@`Y_iDff`US~aG=nw)(dQwY#I{>PKta@(t-%{Degep6oaW!|`ts!L#7U`JkCu@c0_@IvB zn{fVY9@Uq(C!IRg;CRc(AJ+QzMibv>?s;KY3#X7z>Fls7)Tu?bzL)iWH&x(=ur*V^5p_`nw|%zwp_w>y6F-! ze#-rLoK_%h#gaK3(zq?uk?k}=@e#I2fET&+n!CB>Uc!Q}(yxlW7YYwCv6^MreE{Mb z4HQVe?fUZw%}F0%3FX+?3(tMSyE}D>7PI8s_D1C_{=e?|ZNd)SC6n8h{n>>o1LysJ zdl3|t_32^+;b#%3MLTE`a~~rcqb=m6M#_DGf{#8-4< z;Al&~k3)nR)@LrYAATkaos3oTTiN-e*OwBAwxr_YPe{YgS5ri_#m481J?u13f-h#(`<}#SF+)Bz^tp`25I?rP~WfqI&5Y_0H*v2$V0Uqxn9f z^`tGeW(_EZ%Z>?@yZhr%W3WMO{aqAUlvnwtAkN{((Zt+*YNboRODnS^=GKbpnJNK% zr-gJ0&>rPOwe6h|kef46Txg#?aTO3|1;MsFV|HgtpG}|O zcZ*w@H7FtNZ@RbIa*Q=&?%bu~-dOd5nMJbW4769Xfq9H}?$4+*=p<-%Nj{^t+Jxl! zvGs>mv;#EO`}?5l4JMzO5+g=34ctK@op~F2p3@4y{P4BUFRE)Qk#IkXzkctWyP?>A zg9?xAna2H^?nls!_Sp0>a;d;$S(g9`n*`Eq)#4~U)ZD9 zCelYl$&{A7mA7%GVZ*s){0wv-n`0QK;TC-CBe%$nNe&`LD~oi(j5=-(RrMLkBewQW zl@h8XtGI*=&UF@~6z`X{1gD=`u0DU&Z%opU&??KR*HwvvTg5Jp%}8y=A*TgW54gia zAA;;%p=0Jrg63hXs-d-;Fd?>L)>yxYNGxcSd0ahZB(+59%TV)<*eghZBt1d(bysrJ z$blG@ht;1?zyw{4x`aEj_0KgD^wvC{&Cs!gK7e3nvC_;Qf)weBx%{K^BQ<|H5?(6Y z(8If-({fmcsGesD$kvP#IJb(~Hc6dMKyl@^kE;k=EFlXKMDxKGI%TfA#;=sm_1EJ zr@qU35@=3u5pMeqy-=aE!G(MtPAEUcPs;#b`J6T*sBUnsuA+(2$TZU;uij^C5HR6! zLDJY9t>@>gTyV`SrU5pq2J)=gJX~wQu!9StIiP_%t)XjY*zb3~*B2YiPkevyBqCdI z05;r23I}%gg7GY(ypSOE{@8<1k$S-zEf@S{_@~cfM5AF6f`U}tRlr8BskB4XzS5wR z_=pUaO=z9G!`0b5?B*ivCgf`xFz&d&e=!~UNwQso;VRV7p6fB$9i1MObpkAC2$4}&;VKU{SXi;-B&`bBEdGkv`N(AP)(|VAE58~Sv6Tz4 z_^#R6EpMBXr(p%51-iW>XKZa(TBoy8(D-2isp$LA$OrCWCN zeR-NOZR-{VD!Zm3Be+>u{`?KCF*1J;acKu{&UN@E$WS}0ij3NmAGaBGxMYB_|uven~B zHI#a2-&P$ODb~V+B7eleBB%gWu`y^-gj3iVr_L=C86zh&*jaFJy>NXL@sis=XJr_cC=Yu>6H4FCT^5 znOoNS#Tb=AO5!1YS@GsLxBBuegj>M=Abs0hQ_o5ZO}R^XhP*N-f_N6}sSV1QUNkuF zv#FI%+Sq=p7eJ$5zI*j&v(TE}>?pmQ?7c+!5aNR5+S3!Rg}L3UR^+scIVEiw6Nagf z(5kF-Endw_(}c)o@gy7Jd6qz>;CNUhcN3KCQEb^SoT14;;Js|ufiHrbjS)9&7zkZ5(tpv;DfTht31L?CEA*FN% z2czs7xNSF-fGa1pcs>xTg+JsY2c*j}&q~vRfI23Ln2h zb^;E|bVRD4W6rGQ5Zw%YgEYu%4|FMQYBm?U6X5Is-{gjF;(UxGe`oDAus8CGEjZ~_ z(`ot1Vnmi^Mj@*hTj!}HnEmR5!X_A}g8tfwRI3tfC&dE15avJLY9?i1!K+ALlPPwL z`rE6Z194+J9rLWzLd!bvP<}g!2o;YU7?6%QvN$Kl^$0cc_rIMd*%4MM+e1XZUikJ~X-1k>=V(md+yd!`_?E^z^=vSWqQI8FYsOBa^yb&8mP@s^p4l z(#~f3_GdXvnQDv-NKus3s=FcF*)sQSrBkNE==?!<8qHItmY!mz;f{UZB+OC!3ok_T zfw9+~|Hj*8jx^IaB2Ej&Q=TSXHO-K11ki-o`>=(M-ea=*MYOGqwhbf;c%wjI0vXZv zG<)pEPpE8Pm#1YhKP`<=eM!S^AgGNNNSRkqtN3P)%x6moiCK%$ODb!E?_-Of_*ROn zj5|cukFzCa6tZ1yAc2K?zsxZ|4;zD`$uJHE3exLYRiOA3)l@AQZ%oGJ#(d>{3(_e1 z_2?SuY7mxLZ-wld|7%Nt25`kU1?Ql~aLs)=k8)4i_=RwZC%L->#^A-drB<{z(!H$Q zP{_RZZOE3MJI|+WstflpvTzl;-VQ{MM4B<*&}Fe(1Ga5*VH53%z7F!wD5^~mxgnqY z1f$8)jr3#Q8*YB`pA*cD4FmYULT>qV_{tOy_k3JumnvR)f)PXShqX|-s{r^C+dYS^ zxXvF2ABn##y!Fe2FO9aM@X%9T_&}Q=b%ts43 z5n?5X=P-<$AwC#?u-Nw07jlL-6zc8q9PwqbrNCTcH=SpkzAoDJj~a)`)jo1q&;<4v}HW`(Y!j_Z+JWT`w+`D2GwEF*er8q zdf5Pm3$z~7FcFleT1KS!k__7?nzk;^P+tdAcYy;b)hQLTQWkRy94Au=L3OR!8fz<& znip2k@+66?MrrPawCQ?^ChFDgvpqJq`fP^14&~spJtcVPTUYrYq|wXV?I0O)65IX* zC1p`}(7b}q!*1Lub|5-UIU^Ns3IJ;;2b!LIAIcY;O85|wKRp?ETf2gV7otXZaO@1U z#xbKiKuWY=poX%{dPM3hz{1&nvIog>+D!XpF+ieWiJp%e6P`7py^g`6Hm;SU^uEeg zl=*S%z4lkIu_bO?oj^+uDMi1)RDw5}_@Yp(PJ*!t^GVAP7R~|QInxpf5 z^ui;J&Y;lYuP7AdpSo^?E_LOw*dQmoljHV%$uz0&m5Mp`{y+y?Ff9*8Ow8o!^U765 zFXr{fHEaK?Tps+MRZtUkQSE7tz5&J%CFsV__G}fCti`;zyl`}8yc6#?L!Xo&LXRv2 zU`1DYB@W_79mqoPP~1cjlt{kiLjEhk6Qgt;?ljvj5^zt0daRCaGvUReVz)vre}wuu z#!c1MTV!U5q54kKuiePlD;m&f^}nl&+B#&sTW~KVb9i1%m&b#yHY(y*a*!w}5D4`K ze6nLsh*rxPA4V}&0gwXj+KS^ogYShX?NJZ*V14|Vi|MO#sY?^1-6rE=dHS9?`%%r_ zqvH}rhDnwcC7spi8#9&1R^yh)dF(zkjJbpmM{|L1eEe*B)~8S-Z@qaA#v}eC(CwabCKsoxul8{0EeyA3vcqE*AdK-K4dy=g}Gg{8L{(y6yT5p+=T>Q=XlS88W z><<&znz6W%yJ`MOM&2-TDzxftS!p2{?xuv6z1*)Q@AKCdLABfzmwoYgjwEY^Z4bvE zCH!X}Q}|y)IKgfsJg<5(LePw(Iuyx%p6;=QdPv207%293e`|q)_Ey}bv`Ml&#nuA< z=A-Gk@pT3r4Olm>=29V`OKmtc*<<%sc0ctaQ`U~%9;dTF<(L{Higps>K-GN~7?fWs z=0?F2xC0yaeQ`pz&TwnotBAIpPh?gGevj?D5U9_1;B6COHWYeR8T)!uVqoQ{)%=XU zwkE)-lDC5qn&v->5Rnj1WNh;w8Fg(CR>u{e7e+65AXYL*rz1fK1e+rus?J~!oXl|m z!E@?q#~t7G4T@pa_c70Ks4LKcFQEo=eZ%NNOubeK>04rm9s6#gQ#vg{!g+-_lF->W zwyrE4YE>2QgcN@PP=UxD(^wNTA$Bi=Y7B%@t~QOsk-}K1zUos&La)ovHB_?x-Z^0; zFKt}zhER}1e9;i0T;v>e3rt`DH5Y8#SUOMBCvLq$Pr1*bwoO;PN@15?)1;sKd=>*|w%xUZlsIFwAH$3Wnp`M?XU? zqR7XQ1_c(l$b+z%Bt$4R?quvDw=tHXrN&|^_3?AQtSJa{aABb;-rO43Y+2_mXgSu8 z3D) z#lq8bJ_+VfYr2gf?6{GrB0L|q+xFep)X>xMwrM)Gv)MSPvtS=&#tu8&>t$C=_Ki)x zGlTO`$Kvrej9212gHg#-S=SItL1N5ZL#~4@{anEbi!?jn_TB;Ig{T*Ly=0|QM`9>r zdNmBiKdAmVI*OV$R3MhVZC*n6!(FnjN8MU3o<~ZsN3bD&$+NR9ctsCG0e7w~u+3~= zCC%^zbR-c~&(f9&9dA*9b_go)cHE`6-+i0pydYuPBtnd=R)M(c&p_tYWwQF@=sC6* z>%m6+PScA*B0Q-%`JE$^A^f@ThH|>2B}$>`p;A!bJt}B$AVvRmA(jCj!rb%_d&`(n zV)B*UCj+zrI?CGMSP)>2htv61DG0cXPKtVLKVe>H4cml{INPR;~q8a&N2fFRx ziFY~e`ZK2=vWPW1?p41Nr$z&kg2R(V?Sg=@so$mP3j)?P31vu#(~rS}&FjEG$#x_@ zgE~uYyAz17&;A^6QkKSGBzp|s~w)e|@p-A?Vq}r~ z2A*`;kBF)PqX{zH0QIJ>sHYk!(4BE3XT>U$Sq(Vn z*DYxw=KR5x8P@P0&^SP8qbtgD&bC7}o9tYH{i^kT*Nx6pky=sMUz&NXn0(K++@{XSj5n{>y{mO9qydEIXDljI@0_oMyBZXiL$f4Le1w3;);LdS~%9Mg>izeu}U9{+H>m$*800#^68cu+BW zcO=)BxrLKZ^brMLhm)#D@j&dHdP*Zv@)K6=o&W9AM-_tGk?5G!kL3}xcvaZVN z2#r%zhK9YS|8@W!?b52vJ%E3NE7 z#kiOGuUG!JeZZ@t?RONp@i+E_l}g3~UzP-VrGDv-0?&~=Tu#wS8-MPcQLD8N*B&-f zhJHAkkxjV13UHPJ{cL$!ZfS3#5xf3L=U)$UhO@OWc_wP`d9i}+TbgKyl)C?dp|gzZ zs-*3+j`(&+6OY@*L=hniv)?kFa`Y&qoJIZLx9cjJ3nxMH|zbfBPAS9pnYbl z*DkE)a;SyMrk1o?tS@8JX8%~}b~^o?sv!1{y1Ls)cqR94ltIb%pA2AKt-9X#jBP`a zo`4^?HHJc^!>18KVj!y3?=wXD+TE4BD*0u>>`=SVx5y!a+1+Im_UVa*h8TzYhZBFV}#L8 zuXn)6)D7cIDU+75-pX);hBic~ECMstj@T=mZ_C1cN;fg$$)#*mRakslD>Rd3f8g)X zsJC(e6N+r^XlFGd9_5t&aF=k@#5`R{#IzDHM_s_Y8;j&Fl_2}ri zkNb#azqv^q(k(WrZ-<3%VzkiN&mjNIpo4D71pVlFdG0ox9pp@)jnwxvz2yLH z`}h=nghPi6a&yG=$fQE_d&h>Sma|a_&K!&=;t(@?|W0;}WX>*#?>I5=X8()G93BwSASVtu9_cShC z+v~hC6P@YRQ&-%iPP>nT!wvEfiqxCbD?hcaU=gKbjTeG;N+j=}fZkIPG|q2afWruI zF=lO5B?xhf{^f^aOAm#RJE@qDa8PKHqfFtx=|CboJJCi$Xd_cc(ct=X2omw4Xi?5u zgamR6=jqny(7QCY3?lBC^w$v&$}rx{+y_qDsPrbpV&$LX@VkVE$~iOKHPZxb-0&dV zMu8x1WDO4hNv=^Kx~2SsqnS&H*E865%4T zVGX<4gkyUYNb4#JTdL{^Ql3BEzAcR|pa}D77H-mkRj`RqU)DOv9Lq#V$g%H}ND^Bv ziNa_I3w&oA<{&0m=?@$EiGAQ=uWxeu)o9;$DXklD?E`>0s=Ei%B$IJ?I5{fvBSDC( z*PY1rNe?*l&p5@9v!@;7>Bwu}kHoh9ga9ri;s(V{B2rd0~M zI@RyL`buO}Xk+d3gecSxohEe&AnMV2^x}w(+Zm{5_K5({$T6C+s7UgR2#oK@a50XZ zp996Q4T8sI56}2%W*<+Baj_(H_|wbPxB6dUdz~Vy0~`mIJxMNko4><;la|y!W8u^} zf4br1Uy=FxWC3jg)1-&bo2!|+z~tt&&s|_ov=X+~5^n1bLGoAVYgaC5_D51L%dpX% zGr^^NN|YgKSEuY8?xxlxf8G&}hZb;1YB|yhq^mtgB8fi5yvPXHA@t;VJsKBESD}^5 zx$9+xJ-S9DCgW(9GLEz-g!M*~(*05;++i|b$w(vlmFAg7LJeQP80(4HxB>U0Rs8PO zw!I#Rz<~N2wJ_P5PAv<)3mY@i3ejzxnMCO!XBaQHUIMm!W|}xL9&-1rM zk+OQKTF)3p-Ab2Iv+s=prH={d1q_m=fs3h<)+DxIfzm0$SpDDfW~v~>-?G(0fl{O)V?g%Kb>4eW8;>kpQdd>+L z{rG)aLI3nKiOicPEuj9>ge1SIwfiz=IPI|IcN$>*DSq>v<2$dsMboQnJr|EgF*?Of z+!JA-H>?OSDwgVIIcTO8(!OmOipi4JkY$r2Zbyzx zBx$2?E@~M8;XpLR&|dlmC5clyLzlH z0e0a9wkGon>h=1>5%zTp{=tjpY+4i1{OvVVZuL$65xZE*BurgU>NIw%VDg6>;*{5o zWBDqZTn|Q53);q-?|#tg>U3lXNqYbc!U3WYu1JnEwB=b-%e0XUK`j`R!}y+JFUH=0 z6Arwo+2-Kh`bCv{MI3WzVom{&PSM(4{bBai>ho=?_SuCLU1 z#-b>7jXN#)oIZI-OMwKl{|KdJcW) z?2(?G*Ny@s9uFt?J1}aFp-h=)mP<+hg4IEvS*hdeAO5P%;j(7kxZj967{4$7sp*E) zq2QugWs?~lNGXZah_5^KvFcEWGP;CYr>y6Fjqf7yf)CMqTo$}GXDuV#hB5}&Zi!u# zfuZ;1Tp7d)Ug3UwB}GW^E9P;U>T*{kHN&Byk~2{>9m3PjXN|VyKoD_u2v*NBODO=2 zt8h{d{BY(5$c?_GXKYgn0p%8xt2gK`@Fha4`QR7e1Nt@PeUm?L|OMx}aU<0))grbGE3E>oq%s#>Q z)MdC%ZVT{Iq?d1yj&zCXa^nlm@Bb}DSI06*pfvCYl1_KF^legmQvKIR|L??K-M=~i zP=QS(-7||;NGDzKwYigkl1A^jTearVu{J2g``AX!*QXM-%QT)gfzbQ5GVdFu2_$#G zB$dr>3-{e{51oD`JfF0gPy#aCFGBL0qle}j^z?5kg&2Irm(R{;76YAHe|+d;aA3db zFsbs}b0QlfXi5Ez{eZ(iIg|NB#L5~2+|HQ>at!Q$1U9{9A$?i-Qzs2y`c!qDo?TFZ zAZBc62Qqd2vsc_J3ZZtU$O2HCyFF7AU`F)({$`r6q`d?Nble5~Z`pY}@4phiD}5VoWzYT?Vv zRV-Nu?;jOm;$LI=DCxHNqw_`^PXdE>etS$9X<7XVEIr+HJirn|oWXARl?ao{Z>sr9 zeGt*qXF5-b1OTbtW4jTHyHi41gHlzWh&K5^KHPei=52S7WB(}AXX7;;@>$XB3jyHF zG&=Nu?D-@CCF&CU3h=dE`|o;C@Tw`DBkJA4$lFEaIk*MI$CdcB+(b~ znsRP0?#XmlbHr;;qpJCPGW?O&`^-tYL98mQE<7d7-4sNL!F_FRBQEx_39{LoyYVt4 zz%wmH?AcKN!i0m8lOAYCq%A$qLHm)?-Y><4_b17q=izA)DWoMfox4I3s za>rJFx4N{E232N{Z}C(r%NF^yPgcdyHjcR4>33D@5e%H`wBCrE%j-Bx=CFNvW3csN4$zP2m;fev}xt27<&CVYd->~w1t^h_0aF6q-;d1T!) zXY#K%^|NB}v%<8z#KiV>`JZswbyMi4@Ql)W83%I;vlO#GP`6&_4vDY2~DS6OQl?9_V*en?vNzQV8VM=Ic zVi_u9?n*Op&x;3#ra8`!y1el&KxOu=7~Rw$-^=3FZ0f*H=P9!AgYcsxi1z}%2OvA= zI8~~izRlQ}Y_8TLq~(UCwW8&_pX_UL>~pwww*<;+mGXsE+=j1%c?)+N0s zf1vR}QMlf&=vxe1C^AeaacaRmB})-%8Rxi=Zdf7kY07x|Ql{NbA}G~FLNb2doXJ(w zPb!V~_<}ApHG|8B%62ShG)!QlO3p(qmktZsQq4&dX9;6Zz?&Y#fW+Hd7ZX8ecvBV> z;N}X!-;_@=2w}qC81VgWPy>ddepN=m9yl=_GylA zodsI%c;L`WX=It*x3#qgBQbK z1Hxs}b{2=-8(SfYY?+#(z`i3Nygc0XTqM|2Dj(g5Hd$4V4r|T~wor8&WqjB28;LP| zv@n~ynYqk&U#L8Fx}b}sHt`-cCk=}WQbr)O<_XNkb+2$oT58gD`v9RGwG-fLkBwOQ zT#+Z(S>YWf0Pcd;iCiv72NwAVmu|LPobiT8x7+HeWMM$%e<>23xxUR7d;SwZxAs)SmndKc-ZVlj3 zT`Fe(^L;ACbOSQW=gf;6{Xa5<2y>w*x&iEp&6@G(W^)PFmf9U*%u<<4zufz$V*IF>#kq#3S(62c z`4?F6U(@}&uZuA_fuAGJTotgb2b|ga##j$^HXYZO&07PxnI)c95;2%B8yru`aX><2 zh&@&sD3x2=vusNx{tD(#HVJIQebkxj!UV;iz4Pp>ve0AiW^OoF8Bjz(XtBLqJ;KZw zGrL=Kq(>E}zMhg^?}O-0&xvZml)%%eoAQ9dY8s2CPk_|S4_wBsl4jQ7viiR+5@7iQ zz+qGCNx@HY%h2^>bgx`gzHa1q2|Q}Hm9QKcL0OJfMIUy?uOTzwt*&Wp6e(@Z^2fSX z=I8BNA%+-DLosRW8$yi2*0vju^xq)Sl~n#>SLoOG0FHmnXLJ!J*}Z!?QLj~qm_+o$ zZ_6kQLuCO1?9sLUPN6YwQnO{YdLF z@zP6p!j{v32W4SlbM^rpweZsR5)1>^|E47?FYJ6Ymh-G+R7eXpTs4M6)(P^44JFKV zO>4=WOcH}@wiZ;WeGOiUmX>Ll*-t~l`B=i8VyJOTavnui*Ewk3U;L#mo(#k@JDsnV z*_A!&vC3q(8cE7%3?%Sj+el7-Swfv0oMh>;VruYn6mx_i2DC+1XOYLt@2&M=#L91r zWwdk1DVwPtAz(qe^^0H6Sp{|3v_#2DoxoF8lr;W|F(UV)lb&$Yy-6)h#E$ z|IdgFi)?Eep#`oFxiB0PWNe*ybn0N?)t_P?wY{tMWD0sFsueEyeV|7F;J8TP+> zqxpXTD*~Y006+nz*MFQl02FOM(E$F9&#_2~-(R3~cU=Gg z`|sc1qPAagJ_%GOPD91^B#M)wF!1-ABfOwR`VlT3KZL6e*7Qyz$s*cAS={0G${u3e(YDu1Me&WuGi(<23oEy{xOq;yyuq zf8_<+a77)WeEo@u@Pa<`bM6-%|?lbQOLt)Nm2g4kyhi9K~z724{lWv6l(LLsx3VNcW5>+jBTomHkivQO0@$@7PbYtaruwdaDCtg3ff?eU@`*-dR$Dv+k@T44c>r}q>=*knaIvRtF;;-c8ZRkw&D597 zyxcUP(^Mrb;Y95EY+$G|H?JV$PCpOS!W~w>MR-XGH#YsK;NFdIMwKUqBWf+T*S!zJ z<7H@Kqw=kejW-gn1MK6*`8{@RtZ;A_6qYYdp#%WRBm22kG3si&QpTpDjL1cOyvl`{ zllFBhL@(oZ$|RkgaLjxDR-&95a_R9q@ger`kB3GQkHl(KAlTdSX0B3u2MjJzVvc#5 z=-BM3W|9?4;F`%yu+z84hh8bD01m62bruGB`EX>-w538?Sp>9U#aazGJrrlu1#R>N zdS>j^#RV80LT}D;Cvp+!1M}L;WE}$<2ZGc@QA!15bB!DrS}|7Zux3|xEON?94BNJN zt4XVW!bz{xc($c|2@ArvRSY#^;=IYIa&pO*BN3}kqI)3+5_ zRlQNo4th{T*r5;dUQV4@&Xik^iIgD1&u>1$)iqZxtEvp{D|jpf7*e&_mESV%hUxBk z&(ACI-CL*GpYsL3T_o98OVCifo3>|-v%S&)2$BW)Zk`lb+ zLMB(C0~VUU2ybBiCAU$yc*;wZ!|oDyTvAFf*shV##U)NP7=_{~rusryfi5qFde2&T z5g-D!7cZc0A}$9srYmH0@M@yDhqsxRB)+KU!P8vJpP~%8m$zV}{&p{@--8SS*iXGO z?WX^5FYKlH=cWe=NTpxkNkGGJS4&h1FG3U98PtpI;;Ij7+A8soA%<0ida8|!EF#j) zGB&j!d&&)=YUlQX7Z?ux+KeYopFYoDEKKpfTxn(3SNnIa@__hdJ2A93(VKn`N<#U_ zEy3`|IF~Dkq>R@3XuSY6Xbd-xC`?~E2W*zc0UQ2G{O@Wt4Yn4d9-xTpFz|CAY}He| zijASmc2k-q$Fb*Ul!8h!pQ}yx5(a(xf)4q?n~GiaXCULorc_R{He_R!PLawQv|i_{ z`)LwLw+iu;#b4Y~5mtmKSd8-KNhsLDAQkNpi0*E|V7MUws0QyIqDc>bglHQ>zO5D+U!Jo&9pCLqXBV_mj26-(E7y6RQ=i|1Bg^8^qi zN&Q*GH;vKJKpdhiOQ@MP<@&h4*g(|+tDLsem8ZHLY5iFFIuP#YV0vynW1XJ#<4a!9 zd$=o9w73_MYhmbz8a2zBa}{+wH+$a3>ApGD0?1?x9dVodgPxpL*T!xPLZHs)|C@d1 z6sg&fB)lqXlZ)%CFCTvhOMUAMXnFbZw-@H;&zE@8I`+moYO+%hx@Zdk5oUtDqx@E` zo3TSR3Q$qLQ`Eh@nz#Xmj!FQmI)^Au`xxGg^Db9#Z1pziRL%DejhPxi$b!bTsx6+w zg4mAJg$@%|mSE8>mQDqd6(rwdV26>4JWYTuR}6iKj@3P~N^G$jkAW@1KiS-W-sJ@# zDRu5g9Iy>DXQWa~jzl`SJhU2|1GO^70-hNJTTNn6iTsm*Rk#G1O4?+47CeP9n!mv9 zPICdZlguCJ=R@G3J`&>AOLUrM+F0O3&7I#j=KUcFH&X8_sA@zxP(?dQJ@vqYlZ~D= zIs`Wm&~7~<#=-0a?_PmSLV}_mYt6uFgY+EH_j;p@G4C=$v9k*f)gD!V`K1frvv=7o zB2UAKUuz61JZZ(#2f6SH*OmNM4EwGP-+Hcs@9U;ChLSPtL7$G}_#h;<@Td`ww>D$7 zNkeq(XN~<+$O+B1%=O3yEtK7)-M+li0#i|ieGdFP*Qo08MI1Z`^F=cQ7c);tY-Jv4 zV!Ao>NRZk$f`y{pF8k>t!M?v@PW>gzhopoED%|P6yI651-b)3tG(cYaP%Y6M1Vhu#a=b+G)A7gyRr=FB?+>#c^ctfLDUR zo{L_JyPXGfTc1>Cw`NCcL6OYK&NII--iou60vs3D51~nl?H5DQE4ruz49xIM0%9GNbJlADq4+&1${`db%AQ?J^uLwXbh@Hecqk)BRp=72hk$54xmf zQ04hIu$rt*C$7Rx`cWm?LPckc=g=*CT9Bm@laD~}_ouAPF;SqZRa&Xp`q;c}q3ye? zbSo5+AB>uQhh%h>g)yFZD$bn8-g9Ow(40qL{~^?23%R;s{N zLUu%R_P#0?*XG)te?RsP$M*;w;Y2JeaZ6!_22KX~>EMiM!0%F(`QJBSB$ zg?!#}Aove@*W63>Ox)yrZ;A!YqY?YrgA~04Hf%Aq)Rs#yf^E_>`1gL*onlkGupp#@ zA%dA6&{t*w*H1(RR#JeH`C#tDc9lMs-maX#GkPn%-)!g(B5dj%ZafCiXG5~CSPWoA z2Ww(EgJY%7^bgZ6(065PEH(B8)=Hf_Shs1=C+w?)JyfKr<97oaZUy;+JlYsKbd~Vx zXz!>6IlMszR2N24^nK!&RlRo&!>%Q&Rc5A+e9hXO(rv0KE!#wkpf<&g2oOw0AHU29 zWPkUZst|G%>kIymI3WV9gic$KjaUB)U43(ZYf4&a)xd>Yi(Jx1sf{BuFOOJsqdEk22{cKSpUVo+)J!ut#VpTa%6~5=)v1tL%Mp<))C)pR zl>?=1y1f;yh1iuB6tZQuxBEwHQ-gES&S{O#3kG2~lc5RHfpadrlI-WsrLCqag{DL` z9Ib(N(a;0FBjQ>rlrd0HW@=YmL=md5wd_bsNaE8$(R<88QL%TAgrV%(x~ER@9L|&* z@u@9+6CCQkSj=w9^d#6Mgh|avrv7irZ?A{4FoUmO9OD(IEtdgy;5~u0@ZohPVTfcq z4s^`BsTrjJJLFG1g(1*-oST{9X^+M>Gp$!eov&;n4^}wVtFhhe55hs@ynfz+ zQcUL#^!7Ew5CnI8o&uWtRa3H%CjS!5T}lSIm&Xz5IT9-;hH*qm!kPi*!_sr7LNFvc z)D?0r)_5TOu2LOCkQ|#Dy0}*w2?*9Z%a6s|G_e-yNi734RCl;SwRrF@fKuA*Uw1(`GUMV?= z4kWN$KrQ4QiJ>&Kd`-CrQ7B22ZS>`&8RR#2!%t9pa&PS2A!KFDC26K zaBj(Dpz;OskWi|UbS`P11`MR~*KWDxo7h7#GHE~bPpl|&(2GL*k7@@41T}{~rG-`E zIS01$Kkdp6&pH<|$+Of?w9Tlv8!+TvmP(}&e9uC0s~_hOj89Pp8R(hMP$RWpiNcOL zJDz1)B4cf^X!>cBpOCp_U#5qMuLf%w$U)V(QrJXh6L!*HX1<%)q%asA+VDKAgngoD zm?)vEv{a4DNOi^LH59mc2O(B$D0S3@Q7t?i>2s*k?fC-(HpF`-9M!6DJ>$TDH)sVQ zVTQOQ^BU4*x6uikbuYIEM)C+)*O(3v3PeRSYwQT&i4p^eBXga+SdRNW)le~=Lc#rr z?m)3QA;0kAQX=mxEes>SrR{gFC)gX};4=hFK}lT5D7eZ#zuAfy=##vb;e!sdpU#4P zMW%H<2tcWpCq zse~rYG6kO&`IU1;?1%A>mS5>wxN_v)S{7Byt1Pm+>}oQ!LwJ|M>mxbj-7@c{FGR+k zFX!twzhLJ##_H+jb8trB@or6g?3R(#SneVZ0YPJqx#s}x{DFx?VhwuuOqG_Hj#LN9 zLx=jKkTh@Ip!TW#)rxO&^30onu(fg)3n&Z}o|9LoW%Rj$Jpe<5M!~CL7RB*@7J~~I zi24{fxg+W(yoIFH0WTLYK%ltEt4gx*69qgR4w(B!U0&Xf5PR+x1kHggQ4U=igN1lk zXFj1AXDc;T5Z*%^cATH&EC4?K)EA4~p|h~F$nnRE*F5{Fr4^wJ^C#qjhRQu$S5*O= zL?qPgUBBLsvn>x>e$TdzP0TwWZ462za8G}Oy-mJ{uhndGN@~z^`}W9Ag4V2U~hMz_EW!^8|LD+h#8MCNt9B%PkW?o>AXc?W$z~<7M)?1YyfC=L zKkoB7M6_udbYtKMnEe)Oj=`iEQ=QRoHSf6jK_igtp_u47b%j8h0enCEFsLfxOv<49 zyfg39csMXIEET7lMHkAIR2&nzLHz&|Waxj#+J_C*RbjUt$f^+t5-8;k>j-S zJb19K^Ozuj9M{de+Ab88`!$L6@3#bNUNuE*46A|RJ||9} zOT7L13Z||A$O$B3Mn1y$jv->vrhy#Cx$Z~vc4k^MaH+gna8`;(ME5x&N(H4o-s1e{ z-8k47jw4A<+?=;(cN&M7U3^-?A5qh}9Xb zlfDK9Zftl9wS4%dCY0{ugqcF!a>QcNl5{10X>>LzF+(#DFhk)q<|318B@X8>rwN<2 zSy~A?twQ4prYAU;d0|TD+=wozh)Ya8iFTUk6R}98>;9L$IY!)Oc()Z0b3}@di@|##Rp! zzz1^q7jdSy%FL`5exV7`J+?3>@~PSUaixD=p?irb@F8zp_A~pwJ8a_#s$95Q_rUiY zos6^Ro8yawIbsHn+@C$kN3CWKB-uqi07KrA=ncWCdwD!|NBMx~%@`tnbJ?JFSz z{8O4a{hP&(&1*od%9MV845QR`#9uHC!L+yXtfGp|Y^!k=)fnOO(Y2_y5H5zY3<%7W zm?DO1_h+uaDn7%xWyN~#Z0&q2PpC-V8)?nB_n+sA30nzYj$;e(W1u)-^1YVPe`xyN zB*(^*wF`42hvU`EoyNZxO)=f%@Jh8pGupx^GrrR3x9Er<1v9^MNg{PnXpcupZl*%h zS9GeAP7^CHKlWDt-Khm+=ZQI|@NwwE1AM9TIepad5|C1XsKig9aC3T#oow`hs&bkw zO=M$CX6@QlQSh55g3~gmI{l`iaiZXLv^7+QSUQzAsXQ5M zYoi)!8}I>7zaoM6mtx=rKcrpu@}UGa;Kb7q%w*r@j=(NC1#*kR=X@c^+}3y7_o zfj$=O&C0R?X(i?nqR@5&L>C}k^^g3;*aF6x4?@uAq7%OeoJA;mJFikinV$6!Ew(@E=n0rFuqQl z?J_!)C<{ZM2~T$s{X*a(j<9BkT<28jzz5>@@Iu7@wZJ2BVi}}S8i*c%IP#m_w>zk~ z){GPpi8Q~uNcjm^WId=$a7Q}Ff4-qCD}(eR!5c!a^vKnqV1l&;sga`8)*lTiA1f6H zvw+Y1fMKfi=uN>?ak>te!*_Lm*aNQQGJd@>g`vE?nLEt?vt0Uo=7g6q@tT&Zdp|K~ zQ%?Jb?=ObyXJ&FNFlt?7&?7pcxDoB9h~SS-FE#s1Qi(ukq)_7*TB9NXYH4uy-yaXZ zS%*{e#Y>aGARst$1YPtpp!X&oI$Z?xYmtUbuS& zDLlzc40)NbJ(+VzV5tx#wzg`-@+SLic2Fa1MoI%?#yMP3p^aBdPwf`U1RE8rzb$fL zZf|-4y?9`ATba-xUPY;po8z$q_%J^8OuUi9wPiIoU>(@^1ElhX?0w$=L_24cv$96r znV>%(3amyke>(*GA@wafwZ;kKSE$OZ=$V4==d)#C^=WJ9f=eYr7v`Ej;88JL79J?$ z67}BxFxl*e$Q?a|vw)*GFsW74j8H7<(ZMVgxD6Vl_I#hT&_%t3miJon%Snr&h)<2ZHi?*P`UT)?Pu{Uwz(ftc zuKoBLiUG@G(JL*em2peI(icUbsBQ04X0z?AA+-E?iMTnlw@#`^{m!=;(D)nE95#Pw zUatgU??NkHPD@Gw7qI(T>G#sLMedtw#ly!jKs-;hq4v7e$awAt^TTwf-$-805hz!z zqBXM&OveG1UU@|qD30l$IUiGgU{)B3WjlT;Cjx4Mht*q0dE1r#eru=a>kL+N;-TpB zm?g6W$a=~=8|qSdv!vKCG7)5p(A3@g?;PxhJ#0Pn$-&JFBHDFTAaSm~2HS3;?r#5X zB7V89!P^<^qJW@7w*hb8QYuedjpEj=qxcQdKxQ~OsVCSVq?BQe2v+TDSMsXL<4tOF z>rgU6_P-I*t45>GD;Ui9rV^#(Zyv4xMkb-JWHgavM69Qa}1;>cOsa=XyV^b(7Bbf$7Z{EA{zzIw03G#8zuF) zXNh5!C0ieZ30_5qwa~G~rc+X!@Mg`w06@>-scGNJMet5lSuBdI zE}^CJt%tY$2G6dZ0Vo$Lr#lHQ;9G?@2G<|78Zq>%xzIJnSg6Cd;Fhvzca|y9^So22 zK-OhdDc$}?7!_RE3KtUrpL@u)FKoARk2Kk3JmMDwA*I0~=WB+@q%A7Uo%>CAck{QM_h z{zK{MAfdy6N(9m&^PZecomGa>Ixu9X94>*U2(HPtfzJSDg*%02A4Rq6xFx`TFCC`I zpC#h2uR#Nq5}UMEp;2KFMvl5_vP_e*FrcIdvb;)VS*TEP*8?0YD<|$7I|cJZj2jem z)3|r0A^&M=HcUzpCHcs{82OjD6X)-S2$eC}z0yl@hg1Sgsr&riYlVSP!A!b?%0-=u zec*2hdb6|KMFU88B4ZAr$_Po9V?%ygRlPkXgMD{^lHOGrLQP#Uv387#vh0*_x=cK; z-3M`r_aSRT?f-WkH&HtwTOCkfi8)#ch!dJAfmxzw_rw)d6%Y`5xruomrV>^?5HwVQ zBj|7-Q@$(@4z23gF!w5O5GjIQCt`(Hf2OZ_uQo?{r(O5@4nng|p{A*G&-0(IUG(~C z8hKf#!0eQx)1ohc_a-%+U6Zxw^N&0`(+Ft?2Z{Ae12er?|mmxNH> z4GEWCHP8__#?d^fdw|H?0W+Mm!w7>YQFUBPh=HP*p~luIuFenVA-K zLr{RF-3MF$gM8rf{ejli4i1eDk`)BOd|b*toA|2*HAV>3;D5Y_QB1Lqw^7Vp2T~$s zU-7J#9^QCfn=tSpYB5_X7tLPiFhilW0awVYjSbiRA{KrT@NtJJ#5g%-j)XYs7~Q3O zv>a>BRoTvkFmB0_)n<87yL!8ZB;-7({C;+Rc=+^#palZ|m?qn-q;6`7Fn0 z$+x7n{Bd*dS4plI4mfi=asf z4ROPS@{<-Viu}|3<5B=Z1(~~PFq&C=Jvf-0AR7HFx~=f0)>U!e|MUf6T{a~^*X>lZ zrt-S&d90N6+VP4Nc;Vyo#!FpT+#fZ9W>b?y9*5>E>_*TM%hF4C4 ztoYCqwg}g_*`@9Pd2~Hw<@|QUx$ho0!Vw_Jetg7WFmV_Cas49Vjg1ELCWn%4!p}i+ zT=Qwi6PFBYE0W~V8^V`BY(=yGT%UK!+VDvq!BJVK6?F)hu}OAx0{W@p@C{Fk0<|B|4W@%V_IeP>AO1W|}Ku;z~U`B1;5dQoa5}#&ujIpt1X}GkK(@>BP zU

t+KlQQ^3BsiFhZ%n@edjBC}PX*;%4p~Z@(xbj>OpI@nW9u^uX-&79#Jjv>ZAK zfXYUGcy-h}A2VC{ym(>uD2mAUt|)ED7v2nY;fBFFj@}Z|Z^%M{0XQo;XQ>>HV+slf zJqp*{J8el76WfsLS!d6ms8IXlfNH%pyQjHeMdX7duKURbb-HpQcBIvfGyN(d<=X(E zpQMHg7vboX#muuFq==qv$4}q#pV~Does}8+ll^MgK@oRiDBeqWyD` ziAFzS=PSb%54nZ&iQRZ%+Q=)t53UFk8W#W3S?{66^vFj z?F#9O@G0hmkLT8;hiE~fo;1Ja@wW@R)5b4F{F9}p8C8*=JkDkHSg|>MwZd#*R?aDF zty`bmV_0--F3#?b2r43Xw(}vhlU8}qpxUpU>gnej3cPAuFPL|=l#2Ye9(Zs`2o2Q$ zx-quwQ)Ul#6U7wRVS8M56lqCjNmLgv!3na5H;Bmeu(jO#_eRQP?|2wdBct#+k2&Rrau zRk0>{0qlcG$6V471L8eWZ3(&SXuHai_xv)^y%DBi_4v3?SZjf8>;>=iTsUXj^D76w zETyxqk^vk?H93Ahc!SqZo9kzpV!vKy3#&p-{`upat7J#p>VYC7l(bRV0<>6TXq2Ck zNz#limhKJ+QfYP-Q4{qkIZ(41eN@aAsTu7^^IeSq^AY!vST&b)*0s(LNieMbuFRoN zV_xqGlf@k9xwWUp4EK;*xW&h;=fM2RMIK!D=+qcnl80LoM)SSA-H-)R6N=-p{D(}# ztS}lxFMJDh%9KuSGFxLMy!VFOGkU=Ro+-95KLEO%Xkrhh(F%Pbxki^g3H6i^ky)ERo3AWVJ4N0Jvuh<0@6^?61g{ZFcLjk6EuzpP?1v@a) z`sM|1Pb05>S~jz$uykM;JE`@gdmWgW@3!707)V~(*MnM8%X5u^tqfc$nvo3O-c~c{ zM@tDlEm^HE9AX__@7I?ul5#)x#DRXyxZv>T9Y!uzVP=u%;Lwkgkw=aK-){Pc8el*r zuXxtxa$(d_N-kO?=gbXV6&gLx4pFo;Ds2{q|P5UfCJ<O(5$6SkGrUFB&oy5b ztU3hGf&l)gT|(4sb|^1Fr!rrJW;-&RcEr*sgotZ|{PboYQKp)bS~hu%@lVHd0s_?a zc2$Y^us`#guR$o9Vu^r9Y&*YL4D>7S#gK`Ju}^-UF{C79@3RCuqjZOPn$yGb9qh8Z z^hZ?zKRFPm&O{=H3)@ntv*CBB#f&{^!pieJUIv|ieN;e5nSe)e|mS#+3ryOt6dLOl>LICh!~_ z%ik!GXqp1$Kv$==bub=Zsl4d!qvq*Zsn91k?`2&PES|tSro_J&ysq@QDG{({}|d+u~f zMOLkM{Qp@b*;#iEYSq!RC% z=0eu5r7kAg(ruITDR{L48Gsy93IlptfeOzLad(0r3F{pP%BNlEv^O<@`>e)U^M;fX zY>h2qJ|H=0+6s1fUY3Cg)`X0+sHh%SOB( zvBU&KgR6u7z66zT{E?AntvI7Jm-u=scvD3?s@Gx=g$_{a70oaJ|!PZ z?i;HG_co>Rru(C8atX;Am9WX4OEWpbm9kd;GIYSpyB^k3N@FqPwsZGMa#63@F64&C zjiySi)Oisbvi2r>Ctl%iVD5qbaRr_+u!R!l!v9lrp7tQ8d&l|jn&rt4W!7*zn`loo zTj>e#Beol`|1kGIA?-oc?}T-*mLOTDxky!IAEVuV9uP$#%4e?jBf~W4@?5;5fvX;> z#J-HBuF$b!AerU8K*8yZ0-wNeu`h2iE%-X)S|#s`2Gm_%RDYWBt$W3UzXB3id5MAQ zjOi6aa&?)zuxIZ}tsVhFK{zI+Y4{S7od`*hkqPejPPlLe9gqQD*u3<#oq`fyNy8E+ z?f{TsszO>f1+y+PEKLe`eLvN_1(&g{d%29VBenAhKdO+2g$P55g{L&PvER{$+$QIz zu<|e{qE!Z@l~W$>g2Cqtg~W4OhkQ~TL+{whipEbJm@HVry7{T*hThOtac=V9x{jSq{CQ!)`k&iS6=3grlOEVA`d+4ZC#84gQ_mUx}lXdFVax zlUG&BJF^`mMr8+OZ^>J{Fz}6moL4V<%oKqATqMpAom?mnMJv`Z_le-D$mn4ghHY@s`D2L4F6=pX30c3i=Vhu^ z5h_3QM4L9v{iFP!f8P>g4BROkNq${gfsZ4NgU}Jpp=Bll#_R2AnuqoWx{YgD?Xc0qj$WjtQplmH7_$PCht-Un_8?XA<9K2qJFY zB$eyA;gxWXGrYm95>xcZzGtvfua56Ga8>5P745I1LTo+Sdb_bcbS>GJNTXGN{KKcWc1mbr ztVM;`nB%zEr)61y-o$iUOIw+i+~b8k4anOunNRs>WVs;#Tg!_8 zgzj5(WHPJ9)o=D~W10`QLM2#e2_RHWTwk1}ILW_%cUuppA(Pafg~~g$a-*)NHDVa8B4E@PSEJ6%i<|b9eLCvAz{$MQ-QL z$8=o9r#PoqU>0kGrc987l)4;|Jo+NIdpy9sm*=(}3p5bgOepyuyb3H)r{!V`m(MCy zNIUr1D$#w3erq4Dm0Oz{l+TD?u!InKg}4yp&)7lcvOGIHI!GLqIOG!T^=wH5Hq;Op z@Xm-MgnF=1knXst>$fz?7wOs@fKv`OWa+GQs1T2xGfM^eXMB{Y!c~NA0$#MY5@@=! zS+(Cq&DEhzupu2yaDu11?dme-QioVTTTRF}8(gwFOKyYjclUGmQ%6Z0F5VPjO%<15 zR~tTSuNhfx9=Q;>s}HCeU`;^Y4+d;~abYxhm6m92?!mo^#c7@l*V=B~g>dkqed#Qd zi!AC_!4hy9MveaOJEqEJ$BWEO9wY8gST$wvc879g zq(cDr%DO1TCi7~RNG%PCbEI2(F$S-drw*Ema6rP3T4IH!FqY-0!R;Ol7%@z&YI?9G z*N7fHq|aJgxBm{ini7|OB$Km1&yb?F?bE~nZt}^6GTq#xNVphzrTISqT54myc~6_( z$l>#^J#B&HQ$8S{>ke|Tt{Q3UvP=z~FhTc3$Bm0vliC;NPLS!CQjD_}s#nv#NczjFtpwlQ$SWvvR&auLHk{Dp& z;l@`4pq1=9b1n2`z`#rr1vAVCfro60q%AiuIM=PS_h^PQH@lDBfzGlE7|<}PRL2lL zL!o2@^c3_8s5Y`brB;mWQF6s?LFPOTtnT((0)+S$V@g6x$g!?(O+4?+kZcInTV1~z-3Dk3qr@&HcV19K5`-bQe%1H3Jjd6XKNp9=E7TmHsQ6|Zqa#+=!_yttg)?PD&m)=^oT_api?lZA#}g-7$o22K?%hb*BAz@ z(1}@`h92|y+?!D{oX;(_X?|{i-c;tUnF^OW)vNEoRrZ;~7<08)04DN|@-(r+A zO9L2YZL=hMT)hzT=)Ag>!+QTiRrfVLVhg9Bhl@CAjTv`~-S1#7xzBH!O5$zf4AD$e z*S(~VPfi}QwBR&i;h{|syjorj(=jmb(_+!A$hoW>X-Qiposs%KHA@vgjkF?@W7x`A z`zJ~$4Sl3HaZd0{N55_=-1Y;IGyYUIUH|*9aUtNDr@usI)fp)6gcvp59%bO2a;8$p zr>EYfTKX-Ur2%SydreR%-S$2v@GF?(XKdXapJxJY<*wRadCr1B7SL=Rjiwu=6DbY( zOQq(n@{?lnLiqh`iNSgmI!J&2qd#7z?MmQzcgzx#!iU+rr(4=01u78;09hm_(9=iZ@k! zkDQ^Z3KCHE!|Vtj@+FaKhqv!O`f-j0-Wt(Rytj#;0x|MF@zmQp7bEi&0G2vJ6!>1$ z(EFWjTtvBAv|cyS(NF(m;n7u6>(orJF=QW$=~QY)x8qzRrh45e5^QY}lQQB_6?pET4<63ah3U~;Y%IK_;-=WeAQ zJ~w{x=xXO0737fczc;F6YYJ&*GPiatD+SiCWHApF`ic?uBo@7l2NS=}Cbgn3zW&3? zYDB5JT{V+3`BN`X-=LkGQj5)#Riwl`Zd;#!t1o+xzMy^kczuu2OoG2l&I_L)ntPB*ja~jCRUT1?|)Eh`2NVc>|ukl2y9R$WU%O z!K}k54;T*Utvmfrynt0W!@Pq8A2ff$ZfV&w!e6EMfg3xYHJrq|fT%008A)Cp_m8FB z*}5~pD&y0Z!--W_u6O^9&KEiwDTzNVq(sJLoVT>RYP_#~;RtsR9(YP_44Bzl6Dz-P zdy#o_8}kr(GQZ1GKE11RA&n05KF8&ek#%+(6bpIHUMqOOm@b3)=AC5FX>=<3&Li4+^;C zP*wc`t$M`3W1uE8rP#32G(32Z8;~O4Vndg)uZg4IHIQ~cB*=r{FlJ!yd{md6!(`su z_}t@@M^`A(4IhmKR7MF%33T1OVaGjsYyj40n3esi%a>SQE+>;)E(qOf!HxUn@`6V= zJ1Z;k2v}q%@OEa40c`a>XsY9z|5?OwgqDXYZJvXrjPYKL1eTbbn8?+G4Y@_@=#lYk zzlN$xQz1wRWBgz89pWDSl>RL#viWmdqZf2Xq}}Y5ZCKZ}H|g1!pSx`n^S# zm(OM=@gUOBZRX+gYBe{`7&IYUK(FPh`y`E0UTbKwUC_M=Rz-FaI}Q<{HVBcHWa2fnoq1Ph=h|? zGui_EY12x8z&xC@uA_BQ+_51`zW@pgeuV~#DIRP$Zz1M_}Z`cSX>OJN4gF zw4H~R)dpw1L#jVrV4Fz53u0IX0u((*tQEQDr8bC$uR4%VHSfFoE0x19i|4tS{NXAc zZrD7aL71``D%3niuD>R4yGgExL^0ll28HmL5Ue_5w+CaiSq$hA1}Wb|uDq5VxiCZu zL*Rb)|JHdm2&>aubE%M?8ZE}?O^Z(AAZqroT#ZLt!OVIQS1gT&HlDV?yXz7MlD_h}r%;<|q;-1vZmQwOGb%0J#`~WTw z2cssNjWlz1n>j>|gj5hygLAsfw#MuL0&pw-(8P{?i}PA&?-BV7Qk^V6D)GKgN@bG@ zYFQ;xd03}aTWuZq19_YRK%o<4h_#Ihw2VUNn6G)NkV|(C*!42s7!N*=-xppN~beTQ`rivcQ{wF$y zA>f*XW$2!(x8Z%_5<3ykhKcW?v40-Yoyjv>M5k zM#cbYwpIQO`*s)HNXx@!XPL~ac}6WETUcR2M;w&RMBv!5Y8d5;86|11fp;eC#V~H8 zer!O#&^kkf7esTjdfmpLNt%zMZCixDJoPPV5mr(0T11DltsqQE`VPu)Eh`q1^vbB> z-L?4HMhzuk(0jO^g)B_LjR*>Lv!})WGc*v=Z8zK&MG@T8HV_~K#alhrJ_aMxM4xf7 z530_vW%L;B&thgbL&O)(&;w>8kt*02x$_cAU7W=jc#AU=MLGO5K8YERdX#-}>pB+J zTBK9WF>7F?vm2wtXofQVS+AeuJ%ec3zB<9+n57Qw#>O#cbhKC`JfqrN#R>(#kAN-ZaT%{SbAkXH5i{Wt8}mJde(CZrU&2M*Wo? zPp~i)+O=Fwsm@jdZzH6*TvZ8>Iivyje4(H=Aq(djh_3gO+j}NGs9d@-C$QoX|HNy) z^F?fFXPY5W#X7&nDWb~5QxWq!P@-mQRm-6;j8Rn1TOSmA z*@)t+27yATkOO`?OtnQg@Mt;+($xabY=s!lkjT#G$K!#@{1U0OLqv=x6=N(M+ zWp*ctd0hUwe9LN#F#K8I#AfNUb#0)tAaBdB&PsdxMOQ zKFjo5sjQqqY%*2C-fE{jgON;1AX+@U|Naga;op07i7ewk;O47FUIC^aBaLb6HN+#L zX#8{R@I){P?dz*BF`@qubP|A3yTI1KA=i?j$7bwDCE>K1-rDu5?a{!sb<1IcYJs#T;M-7g z=LF|zr*r&jW7U}q@She5YIm@kCHG=Qb0{1WwscLcWlPTNv(|w1+EQg_s(Qu2seaQx zFVz(dxo3h#+6vvi16c%<9DqPj1{wO@Es}NJUG#p4c&9jh--r$gnb}COQ&0#a;=uF@X$JPNl2s)F;~V zrOIrQ9-dhIHjBi*yI@DPDS`L3h^D= zcZ!O_hjTMcaja7E=r?v$H=S*|l*#5(%|~btb>c5EC>x_N*{{pWW>Q-e5zJuZu37xo z_DP`Es`5aD-yZgrwb@v&Teq46uY@LesFPstmnD(By54d$Uk&+n0228c(@3lW4B~E{C3w)(_de~X#b0t zb3Gw6(e)gMLos2vlKOk?UG*#IzHwvy_%TC*dgI3X7x?%2_%_#JRGlVaC2Q#}AJ5Zb z%Yc*~wtTmAr_Guxe;1Df72&d)go7WoCK3%b{>5E6<0GKcm6P2<1hw&^e{v12e2mz7 z2Axl5!41ZZ^2iuG(Tm2M2p=~?mwT>`nwdUQIcWcBycr_JqPQnJILpxbIvmuD6 z#*-n_7UMyRJRY(_N~Tv6scCBe-+;!0M0XwGN6tuGYG zFr&R&<_{sjIS8V3f6UkmlvRC4VO?BQzjE_b_ydB(5|`4*9L@b5Nmb&Xil)u*qv0ys zXIoPEH4VFgCPS5(@Fh0;>=*_4RMw(yfp>>=r1TSqq2$-tNNOlE(#XdO6{^K7Dvj^Y zex0g~e>2RW8wWf$+ZO31dc8^zOQ_>RD(14DJoW8PF-wCgVcW>LQO|3)36VG4_sTN4 zUSHUm>Ex`C%tQ1=wSRjoJLEMNHY)k4{aFSx=iPlbb|K4qMIc~9HlDe$MR^RQVTJ3_ zh|UPZn&6fZXuC)Y&JG-AMx4IdOhXdJWl6rSK~er+)Udeec4-)cNacH}pA} zMxqMr_QSTo2G+Rie%?y0@b2PQ9m6%3UsQItel3}?Lm3nO67dURD)4{mU7ETa(f(Lw z;3t&c75#FPvv7b>34h0#R$T$IHY)mo0yqx&nOc_VV*-v|dlXpS3F$ON-c$cBddL4` zVyLRdy(i?r3R%8zLfVu{<{c|B89K#}0zSTt^r`j72wq_VUJ7M7Xv5&C5PQrR#<)RX z;|aGrg_+vSpl3*%AwN+hRBnsq#>a?+o;NwnemuiP2EX05*YTBYC_&aHKq>tt-;I-R z7}J~bDDYvn-vgrWtL&;=X`06|_vg!zX!9f<9r_mBtYS8dwOfg&dTf2HEYz_l^m zf`TZ{2rm(_FoBW--2@{~2-i#glf&6;vga)ZSh|-(nfVgH;q4S;h3gCGMkr zZP#X>jl@#XV8aHGaooIJ!1Rhb{)N7< zGR_Z(YTZ-M2wh)@S#kj#9QgNgFh}>2=FB^+P=%|VxBt&r$@~8l+XCH%pf<%{V?B6) zZ|+C;yMmzjFJu4X@{|<8v3S09f64FxTd;pAy3=*H1ya3+zU{|3r&=x z=p?Geqfo|ps2B1tuJS5dueX#^G#=kk&KGg(}8?8A^TZqPKKF}_% zdCT&|Zl;n$P@?gyn45NZ$Ei5SUVyJiI7FDk83^cXjO?^har@ugw;NVGq1`P{PlO)u z0hP%v{6x6;O7V2Gf9p3p=xoxzm4KES?AkJ_YitRajlTZB7HRNvmvuF0Nh^Xqx&Rtz z`WNWSL*P#|7q7#oj(IOCsT+?faDMixqH6Qoq3o`c!^7;s{WLnz|0sL<--+F8yblby zo~4pk&+-Agy_NYyoe}hflb=7DURXWna*#b`=gJof_y)uf2q*Pq%PhcYW~`HrI^Er6 zGRsFlWItz|cSs)ke%i*dM~So%nggpeJumyZcYrMf49jILR~A>Itk_?Qi|U`T-y{GZ z86Q>_3_P_kP$(=C1Fjp9H1Qv6}T37v=BNc zk9#aLPAkcAQwk#mWY0oJTIja&#w@v8b+8rMwI+d&=9T3JIGvyjcl}MqU_*0)jCV!b zPu4fUD;(`QbiXoGLR2gI`*WMQ0#QVK%x^cvBjkBe6kjId_6m@;sU8dozeB#v`gh}3 z;O>49TJN=>78oq6NgJ&az8veusqkFJ- zvn>9{={JVu4UwUT8F91cG#uXSc`lvPF&LaMShAmAJLt?F2?HUgz>j;p7NHX#zA;TP z_^Mmxf^BJ}pxY&3{mB|9h`N;l!kcd?FT2Uj0=o{w!VCs0l*yS}yL1B`#UFW+nb)<+ zNaxWzRG!0~^YKtZo@vrDIVPSHlqcb- zTb-GRp3(sNn$lLL8gxp^IOVWlwy{YqJZ#(=6;Wx-=OREb6M^ZTpIx(Gtd-x%RA%!S zg(xwf=+*n-tw_bjZvLxv9??jo$g@@m@hxGKn(58(PfrkPl>a(#M3HP5#OjA%P??Jp z8_YGiQlBhQ_C1xEms@E`RDHyOvWbc^rc+ksn&)VV_O#jw za?C94p_gy>`S~Amf%*`zNWhb_FImtJp!_w!(`jX85<0-;KuzjsVNAMYj<3Cei3IC5 zdkGaegeOjO#m^%|j;Cq`;dS1)?`2tp4*`Ub{p?V9!4gcaVHuCt4GNru0Z4j?;>5MN z6CCDSj)yrBrP4vOoc+q-=sz)#W0ydunVRTbSx>Y<620#VE!=kO+rhyMUXbpC*?KDFcw~K(Zem z)w~+>^=s5rZ9?5=@|5nm6;A<{rF+US5UIgf--97_Ptc0w-tX(_E_FlqFut-k5SQUV8*06p$hS@1;7Fy3{?%i@D zm@CocJ8HEgi_}S92vQAZYpsjU0-3_dlVY4xr5c)%DX6I0Pppsg1@i2M3_%Mht=qy0 z|6mA5+%%b6d~|6RnZCe$AZKg50S&hlxdII8QY3T72vej>rg*WR(T`(0&Dn=sy)9tx zcOsMxkjUQLty=K|w{la)mK&>k0vWycZnY%D3uw+IsPJ+FztNJHWrdAc$-mfYXmYuUQ@&F^e_(>K`6j9@xf6>@_su)W2j-D=s-5tl#kUB62!^Kd2{y z9VKBu6FCb-_=_(Bs!t3;y83GqrgOC7k;oou|286Bsl<5Jhf|Y(x@;=(9MCiB?tR}f zWb<1KNz`syemM^x(3yYt%;wx%x*Hsq)54wq~#k4u;|ol+Qj123hAiT-K{4; zC2XEQ@zRi=E749D%D`_V%LcCmB~sm!blU8fObxB;k_yib0OumNrm`ik^gNA6x@j|A zd0w7#c(Xhf4kI$Sn|reFJ*IF0y!1D%YM&pPR5UjerdZJuq0xsW9>w2G(?Yf)J&$MzZ~CMp8gr}x4EFE=@1 zZiE!qh(W*LPhZhY)yau|1t?*L4bEl8Mf!vvuTyqBF;lKiX#rm{X}iwhj(vLQOzh(I z@(k?I7nZ%A^ENiz-R3$-5kK_JIPY8Ixuwpqj#YeC1*cJ_#Gi%)bHpFrw4zU!f}`k< zNRbp8{wRPVj?zN@4xj`mI6sL*W3o5%)Ha|J#`1qJY9Msw@b*>aj;l*&vc6&>1y)Yu z*ARcvw=x@j>TS)r)kcULatd~{a zcwD08mLURxzp!O^Ww~Hj4Db}yy$9SPz$?THcXMpBr!2X@s{e(ad;{`S(>qQ5$&er2 z29bMF8E8OrFJ3J+RK*#K;Vd3==B{divzpswK@&b%$ObY{zuFClsogA%Uyp(^^L2Ra zY1W3DHfCju3>bvEM-)37`yvVnMcUp}UJ`a%{@884_)_932siDfy-qXB_>3SsESn0w zpRcefUO`NaRs734)v9e__i~xWlih3gqGSEpWfemKNmGY`*B@suJp11M7?NqTIpjCv z?PM>jmz6Obl$@)i>!+KbE7P6+JxLV*(XhTADuM)gxQ-{#t?i*Z`jL+a%@WNPwfe#m zJCP|?bI}b@M!w^GWmPfLsn~b*!R#&J_f9f{Uz{{f!^tTujnxMaTmh@#ExNq(WLzV?M(m1_+}Ng5MAW zaDmTh7hXQKtNWM+xMBLb>DJq0uMTCYhn0}A&j+CQ)oh^2Q|2Q#FGS=7VX0SswzvX# zJ>~3?CBd{=LP+m$GnkQ~jzY^;ciz1ztiB4zAn~vEt*qMG7NCw6CY}NYc7>ObmWCvA{-) z*gWm@B=bWGzy$9`nbo%U)o)teGU0Z zfuE#)ub4s3MD=;uM5V9vpF~m)IbahKe-jf6R-Zz(=n^t&81<62MsO z+toAb`@E7VQ&&5(o9`KmA2{0~UqW}%3G;teF2;{AZHeRvq#YcWhSt(eMMzX+!ekEp zZt}Oh2(`Q%#N}fb!LOq0OPzh}B>onEDaffjt!mcOz^v7SL_SsZ)r>mc$~%%-8fe{E zu~CoMU5ZXa1y{>?pPGP_ef4BQG$L#@JCk%Gu;uba9`g6F$K~h2hD@z-!555@#A7fh z!C|Y*jT+h-nn{3Ow*yTZUost!*#b!g?rbtOW;%&vW(Vnb)8v)MrVioM8}zW?b}fBt zJ2BQH6$ds3x?SXO+M9Fa0E|E&fTA4$ZMk-%W@$fXp}cY|s#FLfXN^*IrAjLOBUd;#-?DF7 zZk+s#gkI2LR4l*%=JZCw_)$o^fj{)B=o^n;iA1T?_+6RD32PB${|n1!QrxuV)B~Zy z5gasnRg6Jfp3{8ZT`ZV3VDWlww$GYBIr^XVr=+|>lJ6%fgstaoC|7V_1dVSI_C#ko z8dJsv6c7c2COerDmf?>8C@z6|DfhGi3gC`=pIdecC#nD-TII!AK~{gF z?g0dpprFOH8!mYMMQ4~{y-j~zxqfthGXl@cs(PJLv!NZi4mAbgP|!>sT(gQ&&GI+V zo@S3#I{a1T98EpCD3YS3=o~B%ZZ=|dVreSXEwtVr`0UCl(l74C9rvw&>={tz3x7!l zy%^C>3YlJYqK;X+Y~peOJm9Us8F>N52j5SIj(z;X3|#+on^5bY%er@QBIiVfX%CC zT_f8~cyBZ=eML`s^#mQ3L@jQ=OYC3kz>n)=A}kecNLYp#`n{ujLZTdn?Wj<=;-w|o zun2FC6TRg)zHDXt=<}W?oT_dyuc~H%wCH9kAmTI8fQmv<1+O>(K481sE&N}jteD3l zCd;Cr#ugEftke25D$e58C-IEL<@w48&{17Jgm85Ve_>#uRweE1UWq6@e*c`%l6$vp z?Wpkbo(wPKE0)fmAe}u*{KV`Prd7# z>eVk6491lE`fS2$E!u)gzO3Uoh69!?{}e;PIgaO}Vu@$!Sjf~CP-ug~!tf~P?;|vE zsL*>?XQzb@i4#V+jFH@ddr?FRqN)p)koU6<0mR~#^A)B{sXjKBUUv$Ye1_xCPOmd% zvkS7D45_f>D4H6mLAC1GTv>z=!HBHxkOw z_9kMT7i(;MQj9vARGzuAZ~fmVs>rUb-bn-i;hq8k9Mptit-UnL3HRHTf67ZBo5&3S zbbFp;m5=cse3r{+eV0M#RU0`-`$toOKHz6vi7J0-()bktQZ}W`42lLmgJuN|$eJ-&m)443X{$-)3YCUDLMVaee;EGf1$Gvpe|H9MVjog%GabFt1Xsf=j=g{MiEyTk!^IK>M03oaRWUy@Krkh#9@+WQg zceuiJNAHCb_y8f{C5e1k$1ikqY`)DmskGKrTu0j_+iJLMP|bQ41vs$L_N^BCLl$%u z!O#NAX9-9B2WHQ%PxfcDtZdexJ;2ntjo~=d8dr_LB7YhEPl(psyC&NtaC_H^Q$&f{ zPX^ohw>FwkpU6pP*AEA?jgZ^ok4{IRtQZ<1d{nZhHR-X0(trf+_@j`h4?QJujN!cY zZlyD--Fx?o2}L^V#F)`Zp0sW$H~zJllxCiR*=RP#4I~?V>ntJ${%%n=3)87`AZp0Z zekyDOA5Lb4lX_vb2SzyW-%+~Z#`6rCR+023ZfP{tfjo=)e`Dr4UAXI- zPAiVD^#$dSCN%yXwy=kyim@(+;3KgV^t$5k7c(cF-1%gOIeGhFUsj%Y!X%q~e6cY< z7r4c$xiQk}rR2sBzig>FIVdB0#lqQr#uBZy>%Q0D1$dlx?dwd|*d{42T#$q~T5=&W z+A!S=4M;1?4i3-Tod!2_aRkH9pyShj&t&kg{7M$ori80C{X3y$Rw*r%3S}AAKz;hE z89}WpG~GD-=fYew#D9SrETPLt`?RI2UW!_gCD?fefvXHlZn}ajr(XpCFzt=R^S2R3 z3|(6d@7<4E>;jpP_=!`A2sTsQq8RUgO+V_IZR#V#!9SDCQcbMbMp;&tjSqF2HCOsR z3FaMJ0MU1D zW=RICE8>FiwV4gRk;s4FNN)$DWQdtamd^35Qk1iYqnS&m#Ovgq=87mOF6kt`4yg?c zVIp2fxz04`7oP0US#~&1z$Nmc8D-S8D?aaBR*wRodZptpfb}*l_}DUB^T zFMwUw<+D)>0<34@FZnxPWO;y>Cu^SxM|2%*viTYxIvEHPH@r13%eh+@AxbEae%*PK z$@Z@+z|45w%oEzcTGF{&V<%GTRvq~Tf1Q+Myx2zd=WZ=-x3L}r-Sr7}2m#7t#Bc;d zwsbSk;rOBM6|HnP{0KDA=s&1QwRCn0E|YF*>Oxw4O6iZw_>DLT)HpgJ8Re50PmR{x zT3~sDUu8=gs?;I=8M`_s8&GP;Agwh&cLP&|dkwH5l`S%v7K-{YerX<6Q;TW(v+*N+ z0x(Z!kpuN>x+q6Y>jb$v#Zmacaa=UfHW)&^1{i;4s_c2P5$ zjfP}nOxx%X)#F3^^9Qd$_ha-_7gNp8FVvseG~xCD(_Wfs+V7I zUR7H7|NgROcf)exqmz3SssmvJum?iI5-M4zJD_JX?2s>w0w*o{0pp8PiRsz+&gLda zNE{uGc!{t7e6SS;SF#})MU1@_V@2r0vGd_rRzQx>1XJAJJJ>;gw#X`%$U=a|#K+V| zbFTe*6Y>TgUAaqNCKh{;7Rip``5}N;ivioG0-s13!t+If%5A-+{xQZ^A7N=4)1gGy znv~1)(CfM~*d1FJy=TF@RNgq0N;j?Nhy+_s&w}6LiJd&gWkJseA!Hmm-m+Ycq9d+ zZw#7)nOW^Ac!xAq@Kv49;Vbfif|N0*^ROXM_tq*W+xiXyA4P+3KpA%*3x$^$tYJX1 z4)+!Vh2a7HgCP9)`R|1HPaTgPM$5cuHoh!~bw;Jbq*=$vZh21;W?^S}eO-Hna6sar zDw=wj?jR~wQ;VXbX=kMY(RCy$8H&yS?Q%$g2d-Q!Xv~De)rJ34iUGb(FA}`uc3#Bc zd^9e2wfoj`!%#kH9L(HV8F;M+EX(*}fE>L0PZKDdhXrWV0S>uS;{SosIljs9skE;y z&VX(;u2U-e;1VZ$OzXBcXO)bFdIJJ_^2xrO0HT2M7i^XWT=orX(wS2lDP}8onp{7Z z4nZ+6vbo}PvM2qgP5<5Gf25g}sb0tG^KU^U{IDrKOoNiB74u7dh=2KrtBb|pM^*ru z{eH{Y3{=E!rp4i>mFDn%*S7}x{eTr)`x}9HdplTezXj8zrN9YhfOp@#4)F$VyNh))r#>re{0k@rKHd_Os%)(Su!d0Oz)KL^qSzwfLu231i zY*GciL1a(uT`C%6UXdP@!7Ef#l&JXyQ3mk(zRkjy0J1!g<=iUXNYLlx9_T_natJz) zhXZ}WMEQNS*3D%ID5(eRf+CP{c+DMyQ^PhE)%RVtuT4^23h$vc5}wMvRL3Y4l~lZt z=hm3>TDPdbB0{@5XVwf3^yRmT3|1v#ktgu}oBuuy2VriSA&z?$3FsaTPH!3|!2j=7 zkcp3^T$eW%tR=bE^ygSS1!?9lM#+YwbGM~ib4!Q7Gn{)#nuj|4j7rk&5z`DZI27x` zH-;#`xTDHGtA7U@^^~2iw=w>g0D?Tj;<~IS_wch=D*Qmz!0A^1XsrT#Xpa|&d zfPs;nH`znFiL71>8|BCg3*o?&MPQB<2^VMjorBh@L*GBRX4=dbu5J)V7fi;?a!|4h z?T2yZY=XqV{yE!e#uM!ia>w}s&&Pz|~wyOswO2tE1w!kgOPIP$lX#Wg?sB8cHE=bJ ztL6v1qKa7XKnDnw#XZscEB#|l$IFbj|FWx%ml<6J70rh%&c*SNNK zxx9A|@JL>?H)T6@I1x1!uE^8N4RpUrD9hTPWE#ge1df@FrPR`#P(T&+T`lCN#s_e{@_ZcNvS~+q7ZRJQAU}PswIion8aqWoOu=WRb}OzlaI0S zCK&g06*%Q5nHoRQh-M0wZ(Y!Ld?j|EohL>7<1Y5pjVm1oD7aTSfXa~%xDyR}ZMrwg<+iZSM zDsOMMCw-4TtrLi#S=sYdRmY*f_GhVAjl5lrU-*GVf5j++0!KYshr;A+$`>A(4F)=@ zn{s$KE0(hqSo|9CYrNG*JJoq?j?Tzjoh&QT%<95HlH<=wz{$DK0l#nfO(DVYC5*#yK^7JO!QRW;e*~8sN4AnH$a{X=7}i zV65)X{dtrF8sC)<#()CDdWI1DciDe4J~ZBB<}=sZeJ~Y zJr?ZN)}?@W0#@+6DT6k3od;J>a!~N9o9t8oLm}dMcuxv|iHzB3SD$r0_NF*?r~w#5 zwkPCk<<-!o3>I!fB;PuNq2v#@RWI#vzXK@d#0XYBuKh6aV$~Urn#2R3jKCM=DK_dy zNl5ZXXc+27|E!JsLato@(3dQzu4k>5S&eK=(WOe>)mX1S^_!Y8<3yeDb`R!9c&m39 zZRldXUvWcYBAZ=`h);!{==V+pd=n&4wh5;7kiM(pZ2t;$K<`n zJ55^8!T@qy-%CZ|Jyc@P4B@zh`>)@TeJ1Mm)02bG!|PSMiM(kjou`gq4txnwAcyac zm%JFM0f^!LJk{Lt2|$fWF3WVeJf#aX=hFLzuSGAkpCZ6uwPrFL2hIbS;gVXr;|<+B zBn)R9;oJa}?tgIcaf#kCY`fi|R>a|8slI?>j&W!+p@Z+w{HRfPqQ&GjAi9eGGY*Y+ zP*Pq0Z+Wk831iwq@omba5~!hQ-d{|k9c2}>EB*N|C{r|)w&B+@7g6Mf#@<8yP@-3z zv+wM$3^k4Ml&B5SpXM2O8@<3bEf3#${mb?EzIxsUet zCYFWrgys_*HyU+^!PIe7az|B@GKz25YUAmswWuir^C7zx^QN zEQ-)9!0)@QY~{w#FbT;)^!ERrXqN2aYz}aG4@(>AbRk!6`%~%ZXh>p`>tmX z5A?%*RQ50mDTx9Dz>Y!C0$eHys4BrS!BS0^zFpZ6JgS^2Q>7K?7Vi}(i81`4hd+T& zqY0ET_JES}!2t-xStwWohZvP3knrq!+pU4w`?a(n_w)}#E6a{M-YnDxN>Il5^ zb4zP;?bvcfvtt%aL+@}Z4_1HDikfrbj--yZ@8G9B{NW(X4dGcV2n3uHOC}3bbAJ+@ zdm}l_2~=Q4nz_YoS2VG`HdLuM_=5>_cbJQ9J0i~%(&;`6fVT$BkJZmNh`Z{4W!i1E#+}j*>@WL zc&e!x6|=@A;}S#P3*|P1WmbW|-uI`H_iqo!rR)U7nkvo6+=WXmjE4!eG`06G=lSEC zz#y0M_M|NPh7}(DE~GzzNAHPPX#r{ub3zggdA7c7KY28qi>*%dTDqd_g*PviaD~ks{=G0UsG-rD zaLyy|YL$t*?pi#g;o(s(rw=S6oRRxUC(2E;?B$69!tob(vpRZ|nO3V|WH^o*Q?1rI znSA?;o8Hmk?{jYl16zUL2%MU+TQ!ZKT#Jn&QQy2pvfUT{#??Z)iM0&1YZB)G=x)WN zb8rVt!rljuPU@(NUX7+FBT4AtrRZiMY8y-eFkE@Et03j5-yF=@r4hVqZT_|6R5}~n z)oapwrS5+9)Lm1L2x~^waV)7^wLO&;f6W0vuMmu$L>DfUhicTO6OE&dvL;kcl5?Al ze}Ds|v(~nJEtp>TGHA5DW${@o#Uj?^A~?si^_>xL9XMh1H~bk^BBJNXT7<}m&%pdKv3;VP>gKab8<(-^8Hf+C#6kfVG zOt{O{x2CA5IP;L_fD$ySNaCJ#1Sw!ERX?@3u!>n@?jNH^2_iM9Kq>NfwyF~T(q&Y` zcMQ~6isKwayb6u?eqoD}@`u!xO$nSID;s2-gPku!4%V(_&;TU7F?Gs45;_bx^DsJp z@##zfxprG1P5bSt_8Tgdfx^5|lk2+1&B%*tTE1SxZEP7lsI0fJ%E35#((n`0#tkLYRK;nOOm<3cF9RAcRm4^p7DGiW~mVccrmh>}n`dU2|vXg(&f9G(2&L za?L|83~7*koXtw0gI(K5*(rcxQHCP;u1&cmgGWk7Rbk1%XClot7*o4cJCu!N)f;og zn_~9^G%#gEy%sW-a`K629DQL@gbFi+eBBs=iQ9^xDG;SWIxL6gDs-o;f|+$(-SYLS6u-`` zXZ+I9PGc+5(12WT0+pz&_pNV@q35l0M_+N*A0z-bMxohOC?wDuyTXUfg9^OD&OePHIXRaX-_xg1u%<3o!LN=?fMwmTG+d#1q%=67Z4taaN%;mX97l*kga8OkL?KU? zl0y7Z6I~mfkKvRjv3vX4+1(THw5L!0XDEu_si)lYGBeX(6hW zqVu`TYrF)CIragnQCK~6jSqnmI{SOg)X~j%rId6-FG`z7B7ZZZPwCOGBiUSnCD-na zouj}MFvNBfoobKnag$mdYk~Weo^WP7kxUs_5TN;=Z&itNTM~4Ynb5lG$IzdE$snc3 zC1RGC4MT#*Fd$g}Pq`o_dK3h*Zc9-EI76?BD5R?|Mr>+P+tFl_jC1xaBXTWEIIZ|B zs9ebPj*NP_c$UrP!~6j2V7w^ImGg?yR7!k4_K&e zEBMgJm;tzL0P5)YC6Oa159c!CGtSr3_N~h>E3b^5bLHEAO+_++7ycw8#1Yszf#8zWa=~O<<11 z(YX%(9*Q85t&Y-qLp^IrV5zH2>jSW~4aEv+ryFI-<2#>E>?+xS%$^SsLxZ7n<4me*G#~iHu7@V7OFy%Ii&_T?Nq6F#7;y(V^@`=w%KAPFzrt z^ib!3s%N%rQI~>$w&aUw>=ToEy;(pA49W$U@lw&zYE)37I0i%O8P@fNCXz10Qc1Ep z<_Q8d_!&nMY|x?)yAYH2)Zp)aV_eXd?ePIc&(z}gvMvjMXi&U)2@pImEtObBMWa;R z@Hh;Omhn{RTP%p1Ta1`rU1nF=;Qs$4d&0#QEmc`MfMN~#)!J3ggpE7|fX;+zcc8nGvy;b)w&b4~2L)uz3LP|zQlxaC=hddMooK4UKZ`*pxGVQV z$edV;QJp0k&Qth29TD!E#UfL0ZGKEvt1ko+SK^596wO$JX>vu9`1aVFgyinn{$I_7 zBvUcG<#D=dg>NwM6tP8zs10oW@*2EbZeT8h3YV}pg5kvk<~gG?|3h6MXsaDLMPe%q z7HQ&IWOw^4wWOcQJB3nnXn+8Pb*3d4UpPtTejM{N?WBJAnCtf~t0CjA$(|w>X462L zhH({FI(xjcpyj)ly~im_!##H$whLhGsXedDs@GZd=gvOO<)>imzPeKQMdYI`&Z^-E>uWLIfW;F2@X0aY$egF? z?UiMXwopTWi1&NWfpizX$8-GX{jNn+!+$LL!H|sE`XpqkIaR-i1Y;1I7S;GUjaKyt zzy*YJv$C03_)|r1i4@XX8zoD@F^Zu}1IM=yuvHbf$*Mb0m_AO|KNwTpdg=ecCYN>X zjNeSOu4#ZR*Iu#1TQzT;_bjL6MMz^_Hn5wAG&`~x%YtTHM=Gukw|?6M{<`s+a%!2W zlt%1WEnI8#YVzQM?9*c^23rc1Wjsu=^n_#^21b+VX}1Rb{YV&XR{AlMUGZZkEkp9N z5ySHTef|p<1x=ixJAZ_TV4$6GgqeCloYA=CS%d0Rm3c=yFZt>$QVV0H>D(iS2FYI; zW2}=mK1;3v`jLtjIdeb^iz!(V`a(IqFC?$>MhdW^iSFYdlT<4K7n~>oTGBaRn6M~O zs(t$B2e|&y|2$f!Ly2LH{g%KJy|3vP*PcJUk#yCpSF7LDEsd z-ZCd9@R42966>u{Gt}0^uV-q!d``}0nYo2)3>Qb`v<+*&0mY` zwIvc08FGP-Wkl~H6N?r%2{T%u52c)4eDp{Ho$BoTZ>m#pWm*}mayrxR0Nw<8mr+~O zTiR|^WnIFP5{Q|SUq79;|8E^I4stU91Op7Vy@2XLnzGoym}$(Bnx7jN;~YQ=&(R2bz~#+HItb56E#-Vft9ur zwSLI^PBU;RQW)-DlD6EH5DiX>2*{ZX?G3R}^%SwW6tKY|!jeE=p172OkM@Qe?Gvuw z;~i$+(=b?`hTiGWB!WkJc$8k~qApeUxU}UyV|x8B*2L>@Dc$v%P&&Vt$}AN7@j2|% zb{V@PExZ!i`k8WURY)dzE%|ty)p$B;4PUapZ*S5j5nOP~NEZMb1f2(|x$#rQynovG zJZFEOI!qLNj4(GZU44d4F^c$sA;Lny4oc1vi+%LWlL3lbn#4q@@NmlB>|l|e>8ahJ zQn!mj3mogEh|yt4bpR&NO0G=}>Vk*chrpk)>?m?fY`5loT3)AUK7k1dVb=2V&gk;P zhy!CNbw3%VcT^ow6d9`2(hF?tkgG&wS+k_SXzgCb|n&PusbuZhZ?VaL}yExH^TxJPRqu z^ghSB9(+}hhyEZw_g?xC$LMZzweQ*nl1?~=816ENxPrINUIv_DA1w~GXX- z+eXrT)KusU4;J5Hp(3+(f>~0(AxXuY;K5WYTj@pApwhGY%decRgwM ztNugMjx!ul9l~5ca5JkrV3=}%lf^!nX26teSLZlCiLi_`$&+%bE2_~XDT9?p;yZ8E zLWF91HQY?8E5OKX5Y*DQ(XUS(0OOQL6dU%lBAmR~tUmYUaFXl7aUpWYrPp1O1%)-z zj>s&-=_YwzM1mbETPqP0bO`ANbX26`Yqj?zSe`Ax##I2{HP@+GK<1@e`SyQOv#B28 z_)KOw-IjrD=lr}ynIm#Z-?#`!|9IOCCL(7s&tW#8(p-UAVy;CpI4K z#!6Z${I2iYCA+zzRCBboyY;iewD~{~iF0Q^yHkezHq!pu5`mc^@>eLv!#4*ln?dZk z0HhQn6sQMjbGu@Q9I}t99~6vWB2gG@io#!m)yCSl=)v{QQ6_!?-J<&McFmRCLN@&Y zs=Zw)5=Xo=5+SQMSv_@K%O3Fag7u{poU%|C&beNy8MFQI&`OSZtnZ5xTky z*!e1otoDm#J-)b{$LYdzO}5oQIlbbRR#I=i zyvRyRv`}+4Dg{8;cGj%n+z^!hK~Lh?yKTmtO=AF5)0Dt${wpn^zXB|#_FVSt{+Jax zui9__yD(rBqV-No4=?=!XxZaz!(AOhm5rDtn8M&EK%f3;c|Qb5{(KySNWPI(WEn$` zEeW@Lbk`_@T>n_M8|`TS$8@p6=TNaEuRr|lss0{{>I;`aX%+9NXc2J+&^mtlu?!w| z^FtD;@9E5n*C>-{yECBDWxx@xlr@@lE}~psU)6x$vlY;God6sKgOR!MH4RxnoR)>> z=G2@DW`gi#(+V`9>M|`6df{~ut42-}^$F~{n&4+W)rCFE@BuAS!G7K2r@vw~ZmzvI zFyAUl-uwRAVmjeBh2gjYFgjwOZLvAgix1jIP3$mxL7YowkrO|Wkz7-+1wsW5%-CK8 z|K6t^V-#X;w1px)xOUST%R!!>^*0f%njq9RBE{u<8-Vs3(paL8O{_~cJOFxRuA^EAT?OQeHkjXEq~OzFF!$qtc#~I843NDO_#H^eEI)?HeL1_P?+;GLbg*M92@fHS_BU~l41u~^&&*1g|20D-SO~_=po-*0r*yp`XED}CThqn z7s&q1z&O~BXK+Ukx!jQ`J{zzAmhXZ|(~)hQJ7rdGUj>sImY3x{{6@YFX9Et*GIoj+ z^4*_J%Sy(7N3~#%(i?T1?>CKq*yc!T9PGH28R>tVC6j)dpF(r)q-rJ}h~^SivZp ze#bahv{;lWW*U0tRB}k7BPIhoy?tAg7eI4ikFoeaVt(?xsgqpNOYu9;A&ljJoYg+^-T`-7Uhk zb=~8NO#ATMS0neiz&{02Q{bu!O!s71P5K=d0bJ+Di&o?8cX*RE0TzJGl~V;{f)u@> z3`DZs*j<&`wbvs@6NohZJ>F8ElSh=Fq8Ag=spVmg>(Da7;1Lm}8!|9{CzugIJXtePp zb()$@7CIUJM(ev3XD8Owpr;8V5FM5W^YZv*!t06gf9(&UAIXWc9+dZghh=|Y!!bJG zSKz-L{jw@8i>=q>*>`^Q9XWuu_h+7g_k`#WBRWE%F+xrroz#*wTqLR{bP$Yt=bz`l zihpElVh2wGD;mjm{LswC_U#ov(Ig~Wt}2m%ouJcK*A+f?D;mkr_x4hhNgy`=xdC91 zjngphWeg(9jj}%UVT}1GnpoN8NRUkyb8Z6KIA`a%Mx2Hi41wYbj?3^XALViXp+tHU zGB7U0bUIteNuGq!YPU$9EH1cDsB9-&%p5r{G){)|q?*ea!V&8RVgSrO?62K7xN-(G zZa8dIe>UcMZoGpPR7P4;8kD5ADCuXa=83{`!t8YY*Z-zIsgnRxVx#JS5OA018p^G_ zc1DachZ+$-ziZAit@gG!w;GLq2zrmgI#h;~>=5}rcd!XIogL+4IM5I!H4ougw`%sq z(gBgb=spGVasI~%aN^iLJ9^)J;8!lflxh+@hBQ&4ITm&)UCfH`5I5|Q@-m*# zOygz(bIV$%a=*qV6^^OKgBIbCU5N{#(RlC9k{?Q5;T-3xCiYCF%7zt#`>#_$&{298S zK-sLOVyYPK{Sm#G@rObIU9-4rw;^?FiLxhyI(Xf!lA zkQ>!i_|x<{kLvVvQ}_aQw%0ahoD>{#NMjEbXS#+VXE1SpoISPdR}oo@7shFA--we- zw!Ur|$*TM|=D=&#BU#|thLs-kVVKlf@qh(^Ey^)ie;y%i9BBRlAm48Wu?y7F%Ef3) z>l`yK!AA`tq+)6&oDbQP5Imx)N$-PrW#r7#_c`p};zvz!Kv;Y!o3i9D*EZ*r3%Pq2 zm}@&|%Wy1HhbfGIEpg~+x%uVjds)V<7L5rwL*(R_zpSezm?a`n;BMUkBb+t-_VmfjiKk`l(^IqYPlx&Ovkh!b*MSp1W1W`k6Ek~ z3iXbzPjq^-+!CJDV>yW4>!Rmfj(L`?C4e$yX^?vE@Qcf=pp!5@-zBPJrwWbD7^@Vn z4TQZ2IpB_Cgz6w~3dQEr5J^D0iDjPpv=k}pZoyNTqlXu`C9gfD89Do&{9=0(X_^ar z8sCj)hYvqLRHmA$}Vv~ED|3JIqW%$O|}p>Z7g;Z0>8cCGv2U$w}2~C zs~|RV(r01jZ`ZZCG|C>S8dYetYmlm}RL0lPD5oaJgHpwb-A;mD@nidUg5@o|bRqtE zY-?_?L~Wy3N_d?g3Jn%k&%;1o85`cV*&1&m$5t6CC20&c_?Q(*{sK<>xG}UcpS4Z1 z4>ai(-S>MWb(xLw%);wc*1$6`ycfzyxx}&f@!}3dYY)=jijmNP8$6~r0;7uZH0Q_e zU;4=jW_qiaM`~t{h_h5c*{gwz0^c_F#P*DojS-Nfgvr77I6k-lnNYBCsM3Ze*x69Oji&47y;(&bB4HhSCm!1-gQJ!~at^h*SVKsiD zlJ7KHM9NJ6#0RPSu_&dR5gU;x3D~;cR&F^yq*_b2K6)gS`ohp;tZ1ue>dluciykrO&+x;!?_fcAj6Z4*wT(}f?;_qYj zyBB`xKW)RD2A{R$sVpH@OZq(|*)$uG=zyo`8ZXL(?f|sDvuO;+UIu|~fXkh+dQGX9 zo+w$5Da*EJ^J4FfW-Gqy$LSfd6U1Il1hi{)Zrs=l_7%0#EE#>~;7=$x23MQF0%3?+ zk1F$_|EZ)Ypw44GU-FO^{cmIGsYF`WIWcT5sF*?%GsSA)fO9Z?R0ID2Dw!?%oP>hd zc3kHqJU|n1KX2y$oJD>8R(#g*>8)EiuB+XE?nJ_^tmV)X;%>RKh>y*%V!{)GyF8I#ZnmSn9)S|Jsk8>nT2Q5Ap9!&`f2tpyt?6%BE z0sANO*wE(W(6>IV+YIU&s0AcSZkQx!%o?(z=lIX)FFCxx79SN!Idt#7kC=7f@Lied zwy~(SEM0@_{K6IaQ@9y)?9<-sDd3q!G;Uz)$ri~pO4=fITDX8vl|tG(Jpw~BIzFSi zD}*w=kKwdk;S_c0O$EdgOhf|%&?o1>G8>!&&Cb=17b38m`fmrO*Ts@v>*i{*#5)rF zVJ&{3$zFb;*72@WoVDQ-nGY40nXD}kArNhf<(#Jq`d9fhV*sYK=A5~dw$YAaCT?22 z##lMZ>5}^8G#I74hvP1_ zeOfhGSl2$N9!Up>LB5j7BcbAuj8qE8HO#7?E?)l}zBHx=&KY~MY+)$?Ug2EdIV|oV z=(`Lux78^J)MihRIEZ6!E`1iocnL*d-2Ls|G0S>d+`<-c(Q#0K%!o@x(FMXfX76rr zJ-nBaPc!tW)_ylKV6Hj;JpHeLn2wvErjD>M{!8{ju0zpaD@8u82_h^`Bl%;O_I#Ot zVYG1M4EcbuO)#i?J~WbXvoKo9)u_ahlV_3ap4h!YYdwcSQ`A1N8QWt*0xnn2q2>f;g|MeB{lFhV^@nkc^<&u50q$$5>iLrg zbZTj%<8wR2LV~oO*nYo zqB=(s44U;|6`vIacUk3q1O}olm=#|U7mr+RMk|oBuv6h;Y194@zY|;>5IE zt=d6v&n$ov?%RXktrGv!YF_-fiw+~;ig(@Rb;%EwXNPe^i@nENAe?{tgG&2kU0z2{ zBbZ;2w4gG{TySEU89JKwt9K`cX-s3G1r_@+bFQqdVkJ)&h?|kJ1Te@>+#{?_bN2Ml zyN+IfPP+bJBf2gO|66Lu(pM7EdevTRI6A6rkNKAD9ZzUt#5EsSKfREU2Ohzl#OhUk zc6{v~%qA_S!6{VWYn9T_{h;xlYCbHOCr;p7YefnrWRu{mciDsfYvPC))i9j2|2+f( zC7uB|&W-ByW2ZwIN8c^m=4yfFw72vI<&Khr*Sb#mO!2t&T0PIZ;3w=;OO-|*h#1}6l5@D{`&prCBN7`53221x55X|##E8;ZTQ>$NSGezW!BX*{#Pf~(1()YU78{nZ%u8O~GhU$ao2 zo4z(IO}Jis-v66NR9%gc`+VE%XR0+-s{AJNuh~T!T5?PwsD<%g{(E`+dxs}#3J5GD zu920kWs#E^01{C&Oe|}GjcoaGl6(*Sz!n4F0xdGj@tu5Fp%#p3Sk<7<1oDDm#0uG# zWz*4f7vZ}>cxkHj|ICQD3Kq^tob)CmR ztFebPK0Q0T1*vCNAkdmxuPUOk z-279=Mhit<^Pq9!X`S;w>mePI?dg0!9FD4(Bh2|0)u6Ier#?{Lb!BrA#}JB>@+-M@ z87{l%?s`SflP+*Wpf|3t`_gS&D7Xat!#%*I+Y#g}On`S*+Bhk`U?t#c8|>OFW%{?Y zOZ7KR5eOULUHb0PxD1w-#o-H}x6R;s?p89adAG$~r+4)A@IZZl*-_2q)M3@Fq1a-y zMMPnoOok_11E(npsT8}&r(}wSCdq0Hr=2N%q{qt5^=^0do}dWzUOgzHNw5B{ZC(5D zMhC@^F*Kl^2zS|Xce8g;!x#1IL#Yet~^We^^6|y$fakbXLUTMgPiGzlVsDz17 zOC-`j*(_3A8U_8_W_{Nzv#m;sgCclf428|dD+%4KIzfJh8GWTtCy6UMa>4ujiMGx$ zk<$Ct2DSD-K$T9G@VP-GXlla5c0M>Sdig+g6xTnZMBVWR)Y`@}JyB*hF%G3n;o z(1q*bafAO~S}(!vgfdQMnpSN{Xpq$SiV^RRVq6LwqyK&c3CDtKoe<2 zQgXUxPpk0j>m~$l#k*r9=?jD;Mu{`}Qnzgzj}~yda;V-2oLtBNji4I__2V`<7!V*A z&ipviZ*Veq3SzGTmpGotj9w5%CxIcCT^Y_}WX41v0ubmqg5g@fb>!1qsn}SWA%&dDxe0@z-1cHQu6uJ%GiqeL5`y!ZeaMA% zhq>GUCG?q*z{pj07ZIA^ECNbnuJ$&dWlcT+{;@ImKdNeE~xs?rc)dtCVRG#8U@+@XN#kYl9C)sNiEW0eU%O`jJ7FF=DGSl?C z(sLHaK)x!W@6C5ojCzB|Lq?9%Wd+jCvtmuiEL?V$3Kw&-p|PV0URl zj04^FO?wccYi2dan;AvdOkx_Y%w-U7I2LkVrzxYqCTyK^Bi2;M5}!G0bm@rAR?w58 zYJ%3~HR&knM5livu*954!0RY%pI99XQ;OXXvV!10GtZwRn?x?|PbYR=h4v=tHglX! z-HyKQV}x*JvC=#pL=_yyz#i4#)^oM|;a8pgKG(JX~zK(a%6z98QFbuOYMOd_T^(aT>9TD7h$`Wi!=BDiR#n3gI$tsr6;Gm%- zk+<@70V!f8Z@5<$$V0{A@u^j9lSEZB4Fs9&U$jrTi*@xBNMth@fbnTzO%Yu*@F?`u zyLRZjFo73p%>7c2h@D!y)yfPF(Rt11(`JVp^(JrWMKe8Nl3{GG$>nr1Mb-3GvTz63 zbDd)eEU0TYo1ms~$*P1Y^fmq7-plk8lE0!4`QQe8A7YW!ktY-$l%E7F zDMecyR|8hg?#9f0i8){+zFgxVeB!a0=883*BS1^o%?%j_y}Wj`n6yM2)jGFuiqcxe zc!9jiPMA+s=Z0L%b`;T-iiCWZBVe|fJXm5W5+5`go7Tuxj*$YjwENCkEykZ+tFsB( zs?5!M<$?bYoI|O`N7ydLS{oLh5D|FxF3)Dr6;753M?g@c5M7B@H!aIaxFAq(i6~&G zGaGrxiKoRYd4Mq`ZHY!qo^f|l>Hx&sEB4V-t#c3GYu>R3@)2}|_ue?1USOguHo~R1 zZTwSlu6KGsKXz{@Eg@wdI%oNp5k^HkXTA+NsNBUM5Y{4ii{t3}^8TQ`*&T753*n(% zr6|StW@s!5w zBq*q54y(#=B)0eQ(JF2G+P|+RpH<}YgN>1|t87W?oT?{YsU6kZ#fOQR64Ydx$`rFr zPU#EXg-Y~W;q0t|NZWgaN(aoaSFtQ5;p?&GfK_@$Li!}We)w1PJH-NMMU@yrw?XMM z49Fyi`uJlh#@cvO72K~9sxRx<&vEy{_d|MRnFL=nG*}ZnqsV|g-sM;8*)dY|Z*IqJ z!Gb{{0fQHd4VQFEpD^T+EE}93g57YY#{XnWt$AK!Yfv zpa1EdV*u;L4c_G{ZN*kJ=#y;tC)Xk36kfs-HJcuB0{MSwTysQc`MQ}-+fo>WIoL_;& zCqH^rXnQUtM*ry>+{~jaoEGouNLHb~M7D2#E@S>Q^Bt$+>ra8hP{r~XPb+R%@-s^Ux zI2Wvvdl+Zr{e>p#Y%9q~91MHj!mM%9emj@tM5CEk|L`=|cYlL{d0mn98Y>+$TPWc8 zv$L8%?VeY!+=D03!|~?ru`^rNdQ%&UjOqzDqP*D!Y-6r2K;&39hsW7*e zgYe2z>)59=2*^G4^7S<^Mj+C_y%nk#s!eW0f#~^&PZaAqe>oo+A>7llsJjki9B(47!UFw% zM+zV!DpzW9l&yFdCI-$33O z@Xd}wp(P?qc}=s3b9)mTL!~xDq zOHNRDjyuPiM{@B#y|=4=|+M2Mkt*j9xSGS||!iUSQY2ry0RS+$;LcN1Z` zNh>*MO7q8vYa&jB#C}7c!zIeZx`>zLX$DC@)4_lJ-p6p)t7QP~yuXaDaXWJL3tCR5 z;Ix#qEJrw$k?C;XR%jUh{>o#Gp7wj7?p=)DrYC70$!&vB*(me5DtDx8*KPEP|1fR= z#uVvpS%ipq{X0 zZ`jVuxQ-1~yc#v#z8I@c^G3>8V{?%XdF4A3o26PF-Pj+wE1)=`C3L?US z60C7@#(+}CzzUn@q@ow%?kejo6Ba-XI+qI{7zhVeqbvZdEdNw!V?@;3p=tx)#y-SH zSn5H4`88CTn1q|o)=+UGX?wy2e>cTfh9fzCFYsc8W)M7%(bX(j6KO&}ITHiU zT=sjo6%@60~}6aJ^+`==r%u~Xg@P7_FPihS(>TZVj--8l#>eP65ACBEr+rP7;KZoxz)GC1?|=8?ae z%?U(io=+)Cw(Ej&uMG7i$<)qV3j7W;-Nw~tZ*w3Tq7b2d#kH30-WUrWh8D6-&1)C! zEmCNno!~@JsL+z(T)3CSs3Cz~tOk!As9%RW-xCt`3QJazV1v&#REIkfeeFmnfANm0 zH)Er6n2vDX%c?u? zXGskbj0^$Vc`Wp%kp2y6$(2yrYkvWfHVp5K*Imf>T=tDhEvN>Lm*fi$0}ZPe#{T4H zPeO_skh+QF1xdq{VsR@KP(30y9v1?4y-?pB2;chC_=g{w586od9;&BMz#&S-T=X&k z{)8Wm>-^~PVxmZbBYo4g(3D<+jceTD`lJNK)me@W`Ar#zMES|XuJgGJ@b7Ro_!C%a z+g#~^;>v)k1elXDhW?6zme$!$&zL(0cvVBFsIA!bP%DGO|3zqthz$O_nlq>&?1q)T zWPBox_9tSK8}N~o;UUeG@`v2Rld}iTZ}f4^qHx8c$#-c5XpT;q@vc2C0$F)9>{LUk zf^9)sqcep`>L0@lg`q8sV=rE;qeKZY2N*FHqS-PI7P)rFxa$ky^^R-+8z1-`jCiJ; zRQk8`a$RnqGj_Y@33{A_Ue%0=7;YY(%N&+Not3NCOOQ1@IfLQt!M$z^ za;)pP4jd3m%yC9~FqwbTTd(5mn5>*yFo~#F;MMeu42`M3U$dxgL*J+&RjtkU;#tSx zLWH-|_?cim6dFlQ2(Yn~`sNP>x{)%hy7#BEgeOK$$*&x7B{u)+{)FEVD+ZS1pMqko zsdox(_N^+2p2Ns_OX+WnLSXsjkX|xl49e4?G1VKdo-~>kuO>Ip(6Kjg{j4tPudT>S z2Fat$v0m=6h^14ij$npS$e^TlX0EYHr|O)^8SG$y&_}&UFyJWuy+zpg4bQ#DH&qtRj0 zH@HRhF9o2wEDL}HKNBk{$U^Hjr&6woo+XBMVnt0^XcR%2?NUT41L*GM^XdUFk2+!q z!aj*W?(!J5zE;$xI#k9?GF&FMrVfWR99qW%GyMkF$34qF$Kw00Et!#+MN zi*81!I}9CZdkd7Tip3U$Z$@N-zVvC!1qGFs5UEws+zdqCGHc&cvDr6-xyEWUajk|5 zQrxq!g~>w!O238)tJ%&_qX7CIaWXK;1P6rIF>dG*FShoQm4N(NcnC~A>9A2I8+dq9 ziOx$;k*>ns>8hw+8rLF?#!n(I8W_tvg~7;Y-utUk0Ka>fae{lmq0S0*;UHr!IA8KW ziyzYhu5&S6hQ$+$X5JPpVoriue|DmP%O;~#R2&e1$EQA9=F@ZY^`#HM?{8jF;j`j^ zo_AmY(f2Q`Ux*p_FW?|7Tk{<^1n3J}+P79Dh?0be{CI18qqbnSJ2^$gMn2PaBFbG< ztGw9j5337bxVs)DdBI5+%*K++sf}+I(IhAR3~U4V5-q57w3|N z(F*i5e}2gM=WC`3SOsvPAtCv;!#Z#`*EAbb@ZX`R1;YEK`xZ~^R4=e8v>Duz5&1i^ z#kjU`)4z6Zk7g)`>F8;AMViMa%c&sLOJ6O&oj79i2sNwQ8A4TsWe= zdH)rMEZ8m97MjdR3h>x9!54Xa*PF~~pBm?_R4b8ToesvzncKM_V9dB8csQOzgYeM< zmHsK-=61{{M^aYUlji2Mpg==X40BNVLd-E^Fm6uoFY>W?zUj@lLAvHGxuPjjhRR`L zk~JjQZXGEzxJg_uQ7x*yGPi|mk|SzBY30M(DRbUpY|sA_+~z+m&xtRHp^xrf0g1aa z@R$(DtapX(9NY7ZUxBMWkOjkF8&woV;nB&DM|F#lTTMeXkVx7_t zJ$IntrVuz+L&bIS@4hv$T)Q-OR9w&trA;Yd!xi)oU*Yn4N&~H;>bJ}JY++XC6ZO3p zedXH6qX?pK_Wy*Iv+Q%Y5CZKiq`k_%hP_z(0y3ykyk#$!Ns>s5kizx(B#xcI zua59J@z>j~0t(cnVuZAD9|f!0W?gcVLtsdbg@%;DG%CH#)ulaM9n|Rj5o6mPFKNc% zD*98^Tw?eH7Gv!Z+Bx8*R)_rZnJ2wR z*jRd2w$?JP7JH;zAG{?sW3#vP)t=q-nhRMtS<79mlybe>Uo&#~TnxP%A}>3+#Tb$TOHflBIU~%o zAbpyigo<(zWFUw*FvQrcp)x5@ol2>dg*qL*%}>k56$G8BD!)VzF&fCy zNaK%gz*~{~g|E*k5HI!6w~rj|)n;pfTTPU0moTzO0+rW#z$KkXqe+SY(!fhn2XRFd z-`RdklFkVU;zE35GD-`Fy~e<`xD4AjEn|s(Tm)q1p-t3`wIdT>CG#~PnY#z?jd$`M zI3DvI;HUu%B!;e%|M(}Wqq>;EOkIJHV50?FW52SPH|E+g;C&9(fx-`Ph#!*a!^xiw z?kmuzm~HkM#@p;NHQLO*SqUqN*kgd|Jp0zEWVsM&ol1E7e7;K`V^3p{Czs~9Me2i} zIxVv2cTxGM89_%l{3WI}M7Py8QKPa~A+$`64=qRW_AZi(a(&xD>i((~?sPMZH-j|q zqf2Q#HCj**yBhBLDAsm$!U15Qrju+hkA8`xN~Z-(PHImC=*OAgcynjvC{RL>R{;0T{hLH6(j|seS&ATtBO^10W^D(3( zOEPat7`n6QTZEPE(UD7 zy1&~r26$tu4Jb~qxY1MkOGEa$_9>n*xg$k%@KQ?tkg5haT+_Yd*eONcJL+UVx4!CK zRMQb0bFb=!h8F}Gn&I@FG?kN9px)46Bqt4txq}MNei+LYHW@7MD!?}xs%3)2q49-& z;MShw2)i-%krUHdz1Lq7+^8sIF_?^v-row35_&T*s5eWvRhf6hjJcL`^7Mf6` z)Vg?V>e|&cf7wZ8zu+Iv{qe_$KYf=bxb1bRl?ufQ&)8(RJK7chg#d@mm$jIPxa(k_ zsqRN5ce3v=MwOzBu~7Kj)qm<$G-`*iJ7+1Zl&_j?!bwA+dL8s!S#-CD5XPq6?);T? zaPdb}nZPYa{QIhyk+JGt?zy!ly&!RV`u%@0U+&XC6ClU(CaZGT(20IMSDA@|UloK8 zNtWDd+WtaIml^nN6wfynsYA(#-urg`fqi}V#o`J^_LUamo(B7~{xg;mZh?hid+b@ag2>1Ez8~<;5uU7|6v>1kF)C9 zF}hPx^V-59(Y0)~1%|J&AL3!asqsrjnHJghG8BM_o-T(YN*%#C?MGRV-)-VCvTTG8 zG*L97=lOWTgD&zc&K1kuE=F{?^~5#sen=(tG-{Lh?uBqjU}z zFH_o2YkMP+s2(*oF0r;h#;@T9B;d48tph6_Zc;0iEl{c`Z`PWv!|$W=Z>0|`ry=@Q zAp?{m7J0-7iHf${4kcPip~Hg51@1=t-mQr)#d}z+w)yTv-vIc#iFWxUE|K8_nN;0& zG0fKW#_XzO8bJjyCb6Dt?V34Svc@1>^-Y~HfXfQ~DFLYpHj4btVNpikd6&n8@~ut5 zt+4^mAH3Mg5rmpW*N_&S_7~P$xIEJcx3gAqWWiSuB=4}omKi5H|e|_lSv2 zFz6gsbq&&ku2D_*)V3&bB*LWb6hMg5lgyi2uab%;fukco*qfx8(c9S-wVB5!2X!79 zJ}x2NYrifvzAW8I>u}x6$kb*@@(!M@E*akR{|nq7jyrZ>;O+iEY-dum9#Ey6C^?Yy zdd~1K;d)zLGX=`Ei%z{ zHe0G@yh<&WFyKA~YK{;szY8;P(xnn~YaRgIH5denQ7dQii=1WA=3*6iI(Q4jtU{pk z#vev8=Jj9?M%!BDnAn#y+-4+W0?3bnN3s$&fco^Tu)EC`IDd32Nuz72mPLvvV>vrh z2{#Mg*-Pk9)bc#Y9~(q&*7A1<)F5@<7rMtDyWnWXP_>`!%`C z3v$i@A98Lf?;ZmN*-_%nJzHBZ#!j9`f0!QxpkHAf2A!j$2b2I@%RnV!rX+>EKSEh@ z&goO5v828ujSbEzbj+XCl0@Cs;LtQL`m5rv0kwbpgVW6@HB5A* z$nybH&BC~)TTvJuL=vMse{E@gmay+x#&}~VLYho;a{4E}Kc)J)Gk0sk*N1E4yPy5%W zxo9m%(#vP7yxNhFw5C_&L zuTUQ=0h!tEcet6i8{a)LrP6OH!uVN0t^fu|4g8x9mZqE&ug=z^Fbx*e+ns^x^}uyi zx4-MsJ~?RsO!m#SlPmAQ%9%ZvYdcAeX0ND`mZeiRBc)vJ~LW>sk3R~-+(y+cehV-z8)T0q$79~ODw!$ zIYA;=a#Ikc3io*jfKx07$8w^N(D!zAzZ8wawWkf#|5ld2 z9V*!Q!)s3}wO9p6*6SMK`lG0FZ*n35wont zs8Nyx1_zlkO_-@?Riyr~&kJjvQHcFo`kxez`#41|JK$%op8yu8?{s+wkFlxJ=lyuh zz>l`eFB-*k+{HsPZTM)51r5$WL$i6aO3>o_UZw^02c^AG8f{!zleNLWh6(|5TwI`* zz8+&<^Xb?YSJhhrnueqiX)=T%A-gK_5dbcdq@^-xq7_$Tb{i^EdN>WY*zP?vZlKKOza1_ z6ZeogSt6GWEmFtpYa$kP2OOx3ft=J6Rv5kh; zsu0~$qhG;_c{HZH61HMs02+KH^i;*-{s$5Ln7mKajJhk*?K?rI% zxCWf!8U~+GkST&6`=s%e-j?f_CpvY9j2=|76<9Pj%iMKJi-6z2=fi}xU8pjh_?@1vIXS{*oxsw0fQW`yq+o%O$@GR zLPt}nsp4CMvqA3DW^prXJj^bPOd}_Cm6q~i|41Y4i$%#=YsK3$in+1v7{VLq>~Eyp zDw|UKd_8@1GsqRUek$CBjod0^1}|Ny%>1I4KY&+Sm$4>fG!1v` zoYSm9hXiL=;N-f;;FYA|sRe@^zJ9U8lf=u1amm0aR}bqy`a8;NUM-2Wbu4DMM5$if z(nBdry`#c$1OiV7VvJy8Ym}_U-`oTs=Ln5FG1ADG2~zy*td;kpNC60bymDS^HS+BtkB%^KaIA5FJGLOcDv;7aGF_ zS4~a7IE0DKe2b`^Rc?WIyC|uG2lF39Qci(ESdu`X&CmFdv;-Jya6-A{dIaq zQg%X^+nFYH1-SS9**rn$0(u4bR(y}IWlz5mpasQOgRHY`dz8vuU$LNJ#srTNL_>_c zu-!*u?W)<)`H>X8#r1;Wb7IySxF%f!|5g3jim6?w53G`9T*|t3DJ{#EU(mH6$fQ$Z8w^-_nvV#{mg$QwBl3mZotOFrcb&=36xAcRavSSt|;knXv%5GWYF@jUu5;d8 zLWBym_}9uKS+$gL&og}q%&)gBNJ2D>>}6{K0gQ~RIYBkZhP`cmEtlY`v;Op@zFDg* z>v6WE4?Rdz^UXKd9=q0Mnay?Y+OYD!@PwEMBQ*n6#S^PvMY@TKZ$DCP2E~LsWC3Nd zeMQiRu!ho?<>A3ET{{q8385nX0#KMautN#y8>yirj+Nlo{W8uUPJf01QGgUFwO4b8 z&Fp@@t>&!1CxT?q-EV9c@-#gmhR5~Ec<0b?+gB>*#d8yn3Rn&ePVaXSSg5n&Ci`&uTHe_wX!GWFc$eKFeVsjbN*495$ zfqlxL<62N1A{*E+BAIi0i@6x#t-zQ7j2)?wqg{Be`c4X*Z10^l}TC`y0>RcRrA=c)Mq2*_QR&aPAw`o}tKiM<$C}@EERts5%Tw(iHYm z{x8Zz59NCi%LHoNsw7LJPRqtM7u8;>hA+SLB%mU0?n~3=G7MBU0MxrO3OLL=FXs}} za?#hf$G(%E&HsugZFxo59-IV<@#*?l9ksb=;TmuZtoj??aQeS+3vFgS;wK=I??!2) z&8CFcc=7(fGa9DSYoC&6vQBj5t#~Uk!((-7_o&Ly?^Z`Zy0`-7V$^LQc&pi)rr-88 zKs6|ouh#{!ONvst27aI6%^V$womiFGI;tK`kQ2OdzHB)Sy^L3z-y5C^rfV$o45q)1 zXcR9{aMLn!phJJ!4lAo{b#+V=Ho4iyaq!%EI51LSHNGP&)HxuyPjUy@4X5r1T^rgv z3j@%3MTTSCFXuCQ2o}Z3x70IF#iCYbQj|F4%_v11u(WM{SjFN%n_o?P_!A=YgdRnx zljxvqta47%70izW0`m@8f4p(EY1Tn+0H5`%};-=52`9}A$iLj+3xk^ z`FOvmiN*9#4GqvB|9vBcd3@M~ozPBM&Qj$yUAI0|wapdvN4c>ATN$ENW`KOUyJ>%w z2N1i17r;Gshi?EUJB&Xn->mun>?c?Md%lXd>>}zX6tg^kGv9%yq3uP7T524AH_>$1?{TOHgJ_N<|@qvMOnw3wF&J*e;uSFJMUSDmxSL3)jaX_jxf2a`~wiTR0FJa~d*~J)w(y=lckQ z*7Jl58Q%k)?jG7Jc8|J;fAL0&t8oblh!ME0L1^-_F^+jCuM>Y>LMY9QCB7({xwz)~ zuYd_}$C;;#g%&|t#GkTC>}h&C6S4I6@8$%ywLNSfKxmH>P@7X#AsSJ+ihVXe3-L*2T%3L<{9} z2zUGc!tt_&{EP9EGC}<*F3Ff)3Y?;}KEA5Y+zZV8#lmP@ixD!RxA?e zQSW`1)Vd;{YP6_1ZFE#G%ibr5en!Af&=c zl#~_TE7V~hx6Eu8{?5aD&fQ=GU7V{^5N+}(M=Hk3|a}}_@c|NAgQKoRhIY*HN1T( zbB9M@P@hbJ)raR-u(OpU!II8o`v%wb{z_|2E^Y&cuTUM;(|B0N6VPnHY_R1-8-D%& z6z!EGo(?(#n%xWs{MB8`oP(!;s8Unp{{N=Y?NTIsET$aUC^?$T#nUAFLVrYqr#FdN zcv;H7GICy>(>e>$;GpIN#Agpp1-F|5Pxsj(qq`0LJ0t8ip)|p~b*y6hT(5;bK&_v6 zsl{Nd9bhc4Jgs4J+lQZ51bkm0077t5#%##tpfqM&$V3jfZls&&QOs!AHB`{q8EZ=! z!~SlNs75a%XlOj$@biNzJy*9rh1+V*wj@C({^copu0nGWztMRuzv8rGp#-Ayah0^0Ri4kn&E)tUNykZNcB8|?5v z4iH68VFkJsg1T*kmYmrJi59+&;4+>HU9N#jeLR2Z^;U_3M=OE(!vK6KP!$;MdsCAW zm{Tkunp;xUVQ}%CCLKniJcMK2pWArGtoxmNz+~z~;QA_sVah*KgMG2> zAH+S#kh&M^vrzo{JIz&E;^V9L>JIQQV3?BHZrjNqrt*Ay0dV^?5bhA@6KWFf2d-1W zkO~=akTjFtWw9B8E9C$@OvY2roq;W`8l#q;&gy=&QiH~K=Lepv_1L9XyPp6EL=QpI zyEt>hNnX9?hm|-Iqd@*=S3Z2v7tGbBC z<6OatkN==JfwA+-UAKdQ?Omz ze9Xr&vy?KR*x{_h#}t8fr(ne`D>w8Qq+yppbGQW(j$=2Aid5|!vL(eo$WQmhr60@t zHN>v6v`H3`U^4JMXIEhc!7zqxJ{ppqtfM-2TT>JdZRujbTFk#4tBLepuA6>rX$ zvrG|I%krVK=aT8hLJ1(j7>U()DVZ4Gr-?0b2aGVycVPH?w)3b-4p(tTbg^M-I$*1* z@b&ef(k!gn+?uKH2Q63BiM#&6@j_YsZ$$Dd;jRz*p?7N(4J*zq$oZ$|t?0)S#dY(> zhU(yVuOUvN9sdEXqoI;oweRy`L0pS@VfpSd6TdgouZ16dTUGU(*YCdTj|j~FVdK`X zdmMT?@N+n`-BcC19eQX>Bd8l!wxLm?1?99t%b>M$lY|d5n5HQ^N@5Y0UjBT@H+?`& z1qNUR^}?n>sjQp`T;^cO4k9vP(8nt(Z<^wwv5Q#_u!woG%Rhe$K)18TO8yuCI%>(E zlj0uO#5v@XgJh$~)FVT5x zppI@LLYxPhFgVI|0c>U$pEc{vz^8X(Q%n2!1 zQ38tRa%TRfc^2yx-9aQ3RB3Xl)Z!vS)KjEcJL?0=b5x0N2P=R38iyITlYR8&%eUMS z6YOE?Qwfk-0zns{{Zl7=PP;>|&PZJ`=nHw;${uNXS>7RnYP0RL>&BVq|3FClcc-nF zB?ovi-qF{GUXA8`OEk&z%@|qf@qCUE#Nl#tWm1kNJOsw}y7;oQ1GCUn(__bm1vLw| zk+BH0%vIx#m0c;TOQ>^fX^aY5>x!q4);P&{eX2WWvDhP}jmZ1e6M7t2H;HDhj4Xfe z++b%|KB0qraXy$s$J|$GW32Qle#g)*fScL~8Lo?kZd8S$tv!t2=yQ^VdrpDrMNo_y zK;ekfsvR|*+VFZt1fY7uSP$BED{PwGhHwZ~696j>%LWM_0e~{d0JMoz66b@Kn6y{T z6t^qLcX1l#m=h31@g*($0BEZ^B$;RG7$NlL`H%j@1#e&R)HQx}^9q>e=u};Sv*ySx z=|y84BRngly;WWbb6`-dsk@Nw1^wG5MWYgqHa-S6(M|LlsPhWr4-vP+SO>{4W?^&5iy+5mvqevAYGRE zt@=oc@C!v*o!<31dE6BBD4|J4Wlb8iI#c>q5N9<%X>D^5rCUQ;<#O4!JQpYNd}p{H z1t*_adGmj&9HVJMG5Ugs6$>pIOKV}on?f9h-fu`jnDf>Ex7H6Hc*oC~c@MO+*!!lG zgrwm1O0k6h?dWeculmnI4cj?GdCEw{hnxp_&Ct>0N|=hl#@N2?9qRW^`YLkg2NINN zg(n3CPWvYaDmTDr>noLD*(DQ+T~}1tz26ms%>97NvG#?JMcZuP)mPdTvCM%67_Z;b zwt=BgQDJL8d_cC8Jx-$ug--54&~?p%aQuW5c}%(Ik;h-0gwiOmb_ce0%sfupND3Hd`p5XZh@k0@AS{wVYS_8D@Dhgr zNkF#0zDz(%@AqfM8_3OBu1g_RaLio{9e+?S)f3(+x0IXGFQZcL5sH1WKVmiF;{HQp zj7fcD25F&TCc9)jg2b*CNQ%_@2)HG{Xh3ZvSv4;fP$@xYZTaO?K*kK;tkh;m&k1R% zguG5A)^`a$O8Hamu8IfnSYP8FL@FV z#VFhkV7_6TM|v77-Yug_Dx=#wzsfdbXo_Qa(_e@unGdtm_L++V_9o*RVOnzK!Ay?G zMsX+bBv;CEerpV&77c*%5#oTERIOZnz$M6Z&Cxi4iFOMk*`k^MLoWf14`P%jX{M6V zzL~ELP92~)G}W*5L}YUD$W#}%*KR;hgyalsRU*pOlFrn9;w#bI;UO;m5$(`iA%=OJ z#-5y=KYjt})E`U#J2OYOt@k6IIj<>@1b|42Bw^_L%szpH`9(;dtrYb31>SkCpx(Z#v@=`A@jcH*x z_aazLUhv)JjI!iMq@RGtiS)Xr!pRy%!SPcPf{tsn}F7lCxKw7zk77_)2xrb%|7#cAvF>t{9VKlN-{<|DWPS&tbN zabo|4_SjlGDZstFzA=gEHvxPO!BwQvr9*~vPLl~I)|3aOqsC)!G84k6kJs|qzzqN$ zobZS-%F@G%ZPSEMR{h!z4pTmRhu<)V%U_2|+kgVPXD}?&F2Zl7$TKzqaojS9wxI39 zMh=I=#GI)3`tXlUxsT#iU>5p{dmVE`pBx_JtRc}(tFz1TcO88yWZ$h~lU)&Xc-p4m zch0zN`h8(f8r&oHT_FO@w~9q7t0TV}meJ_cBn-MPDXi_jNg*Az5?prpu3Mw?=+%#53P0KVTGEq1w*R+JxzqivOQ%_YD6%Cf z8yik@?S3TR_gI0e1x?#W?Ti!R(77zWH?iP%cYSd@-;ntf?g_^a8tOGY$J-Q%mvsk- zdb2*3qqWnXlBn|+k4EFh5*O0$W_#7Ef=M(Zf+SsB^UmbFawSJ+Vj?zfmunddkX)&9 zffRrSa;*LTaO9<#%FEp7rXrxke^F?{DyhZR_oy+pOYob!AZqOYjLiV&kcU5jy5v;{ zul7#}E5@Lg-W$|;YJ;Rxq>H^Pv~WT$$h!t6Ox?T?JMQJsF(A|@%OI{oj6cdIdVUCQ zUL>3ZspW!y%{ZPX;9Q~mw>O&|3qSp@%Rmy){eh1K1AJSzpTevamrDJkG6oFz? zrL9v#$w%WfPY z6+%!~%#|n}DrkFd209e5a9x#9j@PwrozZ;)!*(cv31G!@Lt^K*%I=9;fKzxm_-+{j zMZ7=5xf`dCvlH|h3PxFn&KD4`Ev0o=F=FK3!lahQK91gKGT4bDOO3QW7g&)`iRhdk z`#1f;Va4%)3*~;qfl;Yy-*;@oyjs@kBhHuB>-o zltBUL=ZTn2TZIngO zypDlXVfyo_RAIF$&+H`(opv<#Kj+R5g}$isI&^6UP5Q<=r;KTTz09isTCLP~mz} zZMa39{+I^V@3R4;>e}Lrlu$ZHRc_y3wj~GbU3{-Mb)?rLO_|@L_;QGO$(tqzt0~+x z6Y^<^auv^9u(JBEfK(+c_55|eAo5==%}8Si$|9Iz0*DG8oZu-vA}Zop#f*m@`!!-W zmil?=f_yp5Y1@>rvPw!3KL}>jKc3_(EQ{LnUnz=rB8PdgcoeD8&DURW*ZfO2gRHWR zCQKxQ%d_stMdo#Y9cM$bR#n|2ixti~7DQ@kU~JP8g4sX@Wg5Hr4yM8V=HYA~j~T}J zR}-g^!lJhSf7({Bze88<&znPJP(=@dh9z|s(|TZskC*!S74dP*AcbIv%DB89-i@{c z^_|S=2Kkn5>2FQTFWME7zG!8|nHM4edSyGEI^t-=YnmqC&SrzGM0GY#EGw&N-{FLf2_6Yr7_Z#V>N$ zOlw+#P%A3r&)o~ZmSYXsjvbfug4Np>zOzxnFv7k}VzL6vKWKuG=Xd%_A`)KKZ4x09BCg1v^=u6#K*M{0^it~i&yLr8K%5JgKe2WG|Ey~%f5qJ^fPY)P z<};e^OQCR~YabzxYs_FG=638sKjijp}gd=P} zKjwc)M{ZUV;mBC8OV)MBHZ+Q2U}nlDj-WFnh0J9!Z8R{( zn!SkUM{Q#R8$^Je3fK&(ql;ykslAJnQC@^y2$3s&dJAXT0OEHWJ9dq0D&u^KlUKgv zAg84_PN!VhTuC6%s1<$bX3)rM=&Gc;>OVXQ38?sY3ouE?Iq?w!3`JV5bl-cN(M`kP z>xzfn-UA4t%yNQP#G(*cNodH9qZGb`62|?;crAgVjWt2SnzwxEgv+Db&##op(9hGiGeh%h>j0 zS&Q^rqCl_756xo`#$(JMVt3c9Hlhi+x&}86DZf?9W5&dTx+O=0n1fAZWF>B_!g6N*b zbVhk<@L{_SzCkVV%DboqdV)~{#JxSH8{21jjFVW}P1^_T;{Yl*g(^nVOhU`m<(QP+X zA|`)GS=DHg%)&ILn}C4cVUja-P4y?k@~=j`Ji>Pci<-q-jB~eMBzGuZd&bq_u>H3U z8|Iokr)i&VSS2#m5GKxkhMQ66gN)>~VTfq*hdV43uM5?rP7yrcBpZ%VKF#x~@zYYO znV&ZdPP@`_i&?xh`pH%BI`= zW;g8)Kf6coI<;E4CsClYN`>y$4Fn*`&QGOciE>$UTP5pA-0bv~WT;9(M9O7)q0h>2 zw{3Jh3ef1h}^hLcAzre?#L(-3XirLN>NpU`9yGSo<7O+9O+BaPc4Y zWRUTg^=hjasH50 zi;#e2qx1xg#pCr_-c^_#04#%r^QvQ2pvthsc>k_ z00iN{yZ#V&u`W2+E{wDRx15yS6k{P7FZT3FPDtD>IN<|*PB-R>#<;J8Z1E*u|A zo{JbUAbrXEl=D@1cy)n5!IoOl>UE<7WF?y%LRQ$H(Ei*3*V$pg#1WwqH!)_{{>JyL z^y*a70lf<@M*euxy-V7$hzJEL_Y&fFquj>i^AnZzc)I?ZuTyOlC;A|uO4`(=(pI#& z?T8^EH+3il+kRMgd&V8PYZ&bfrH-BExr{7p2(jG{LT@tC3!mrzYnf!|->-Ms{|||C zws@ak?}TFU@$s0tB>w^4k@+n|oP1>N<<3PO6Ib+o!!)iL9f-;GgiJ!JD$7KaPQsiU_I6&vK7?-$Y}cc$rRQ+uP$Jn;^nobP;nT?9nMj z&0t9`4zZqVs(sTdo)TlrW@?7vXGMKU3t^GjcjRs|Nx(X<`wzc?HNRm{9bx<1#>l;M zL}3wE*bwpfNaf;j#X^MKMb&LdWH1B5Sgu9ORa4zJ@t|-+d-08XaBD2XPw+so?S|Rw z@K33O5+0m996f$lzIlr*bxhYLC6vGFyG*6o(jus>!rWvMmTWoE)-ouN1PYi#ih;Gb ze}+h~4{|}B6gTM-E4+qC_yZu(v6?OjCwrW`kdk0i5Wls7-+muB!jc@oG6gF^=R0C$ zhi$V-G3rGh!1zn&bxpQX?f#uU1(m8crU_ejb#j0#>VaHtl5Cn-S{@xrd7Qef;h|5) zG4$E+TSk=+F$&XV>U>_)<^v3}3di3l#S8PO0kmi{>?*FcuebSGbDt1v5vR={#p2Kd@t(qgCJ3 zIL}z$7-Rw1oVK@XClHO>9>Ee=URO*M6y86jC`-CV`))c#w|KNth50Lf8c)LKw$X)V z-Y)Twtt*0mM65}08U{qkl|4h=km~q3>?9evA1*-G9f^qs66WER;5!WENv2RS^f-np zQ+y+X+!C$dD`|CLC#n9$)U)j@-=`}`aDqJ8_%KXeN%n11R;6T1*Q1k+Fhq}vE`j01 z4s42Os@BfBRE}_sEPgiGOmN$Z=fj%t1&+{5by95r>WTK1!rM4fAd?FinGM4+1|0Vr z2)_maIn=2=-<}Ya#OS^(>E|aw!7}G8DUs(Ce@5is)%zo+fM4d!2OE?dE?mTP){imk zwFkxP0V75%brLHO$oT=ha@5i<+N~c%o7dweL3AVimlTTaqCL!#9 zow;i`lB9HaNW~nIJrut=qJF|bnY^3^aGYxMKuuxvE-n)kL<8111;)+vR)s$Fno|(L zk35cRQ>d@1Ls^;C5%mz#g$QZ89#{F$c#@J7#aac-@+g`)mY z&#O5KM9h>%QCLe<(;r1UrJ7ax-I0b(IJRPY6y`NldR#(nwRoLEToCDM;*k22QKxa5 zrOnCBQ6lDAyS+*I1%sBBL3O*hu!<5Dkv>Z$acYCGsBEi!dX6_AYY0Sq8d0+X`ji7> zVp$l6l#8nKix(ZD60UHc4Ag4Bjyc$)a(?m4U&(6ytGB2%t~AK-9^zpY-2E6EfM+|9 zB-d8U87)v|`H;N}tCBiY9>%`^ywj4!7oiAc#_**FQ0O&B4P1tLh1*PlD>ez|Tt6jy zT4Rg>3yO3_EOXj7A^Q5qN|gQX_bM$l|BAw+Vj!fS#N-UtQ%1W$mFY3>2Kc-UzYqJP@!yiR z4`D+|HX3NxlmIQ~ea>9~e-RIIFht!Jgw9}*)fv<0X3{Ep{+$Xniinhyiv)h>jUFQc zrTWq42Gsx5bJW0kS{g<54&RRuuigSfc^5~HJ!yIfJcs8 z{e)dM7;u^30WTRA)15q2&fTYY)8#KEX>_l2<4k2^O{^Q#7l9Ot<&UpajF4SBo_{{s z^!UvdVErrz-%icvL#T&+th}+Z*pWz8DcW#g|Ab^H?ew@VJzv9~q)^F^8R=_I+Ss98 z?aA|2M)=fqTEA&1g8Thm-OBVV)x_?AIJKc{Ct+X=)mT*~k+3tUqJn>-Z1UT-1k`Q9 z;wv|UIJ$9?C7+3T7&+b-PBbbpmp!{Cd^?du;aMKS(ImOli5kxurV!@d;k<%sQA1B< zbp0Iz6>}|8kP9kUN~u-vlZvj3p7;I7G8BK|b6W>6x+-J~#htuU zsT1xq^yD?l@)w@?J`(2P0T|4~gdB5IHzK{*sfpPO+3Lt~Q-Dd^3dwUu%uR0y2)C$D z-fts4!vRtsEI)zwZMgEB{3APX_)OYr!0o{7)&7e!euYPOR|<3d!ISOgIo^3Wn#3Q$@3JN)kGhekZUC=QM=U#+Q9|E@C?6{h<9E29>rru@ZvCD zj-bKW1{;i$_?`Ebj~oC^!e`GQ#FmI@n|p ztlsR}$N(u^2>RTH&yHh0>Ch_XJ%xCIqK>5z{mahaz=4b4jhV;Z|1@dBY?k8Ird%w7 zGrw>^xP(e+D`VxZ60ke*wG`y26(mIOjMQo)dZP@CE-cGR+*7~2K$z_wG=o=&qtGwe zy?I{0X<-pLDd?*E`IQD&LoP-Fw%aH_$ki&N^PY&2wLUO<)P{)G(oLcTh%dgRSz$)m zb1!Ka5#Tav5A0BH^!gqN6=5f=w#R|5bJ0CK_&n8|>~f~Rfg~^A z0wl9n!Ril1z!5tdK&FGWV$z{mi^#>qkFo>Y_Xn<3PmU5RpH z7A>?!33?t-06~rbDII7| z@f6m7_V#Oxv6^_9xX5p-WV;d@W|P;f4pTm`Ns1q7b3_r#( z)W?qmH+d}LT)m;>XT-)kkko~1(#RlkB_$#;J2J#yKuYbG;h2OaoT>^QrIpr}P`$HL ze4Sfa*iL4{ej0Nf!+zH$2ab0@ALzDigg^hXc#rsQpeyW~6<#@@go?etqx;fTa3y)sEw6#;u<8T7*@tnaO1_zSzbBLq`^OF5+RkNjb#!|p3BeTJfJXDN_&eu zv?pr?lXG4D2@&$jI+n$v;)X+aL4gZVx(54D`Nq|-OG~+oTL_nAn;q&?R^{&7F@`md zIDv_er|sJiKngJNFE?8Tj(-dLXfRkGuxzd6_Ouz`NlGBs%_rOex(y9JJ1p9`X+hJv z5dK3qsouvj*#y)SWW6Lgw?<*Jkw`94&f#C+%H`4?ECA6~ z?HDb``yc$49#*ZiGVnaAtQ+NwCcHL=S(a1T)97Z*?=r#gVk?`R5GPJbB zg$$-yk1bs?T*vwQI}q^Onh}q%IC~k2%b!N{77+OQkq`}i4Apyk^y}B4?cTe<8+eMU zAW^Dx-aiE0w^Ca9Xvf3Tn)33hzoi5S?o<5d$D_;9Pvs%iwypPN;424Y4oB}IJkFmG0^h!yIx4AEGcGXAgCUmVBx*@lK4@^MUxD>X zA9Uh=BhodvF=z_Im0FuD`f2qc$b_0oj6YeD%=M^vq%*@Kj4WV2U`*t^t!yV(`|V~@L46!OhNN*DGr{!Kpum0(AS%+y73_^b_493N}#`L0OC)K zt#pxU+(UzC`^-0KiLp7c%Kp8>tUdsn`stLK z;y(RZj-SP^RZRF(z0f0)cZEzYk%d%B^}_f!+biUaRj??MebR@`)ueTU3$kwV+-fGO z#vvniXKGJSoLV-3&XO>}2$BjWcG5vX$JM zRJpTFyXGdM?by_qc!xmqmW4BpH(bKgWDx$J923I`i-k pB9gGvE1LTJ?TD*h`*6iy#? z(CYYgDjYrj89;zpgJXZLWGE<$pm31n&RDGymm5r06}%=ncu?>Vc>wLv3c<4?uK!&^ zCdaoVmsI#pvz>0ixL*XYDXOe^0BtPWtRk*Qoxvh1Tfr*I4G2xn@O}UK?4v&e z2=7a+eAC3s`c1?T$9@XA4&!!Ttpr-)aU2EtnaYLyjchMQ>m}KaOotW>UpNivC{_QL zpVG5~rmnDErsOy7e9z2TvzfW*UPWJQg zC{us;yql_A2B!jE(&+K>b!HR{ZZl-ycC~3G40490#z8PBWDCEK#JLXlnW@?~VNKAa z;FL=rRjyVHpXZDBhOKM;b@QD@60~!aQ{c22>=~qgo*_m%4~1&iQxl8sJNaBHcmibA;fqm- zUBF%4jVTTBCAQl2<5?NOQvM8p7EVylqZokO^tlCvtk3i!12TB9Sf-kTosHsbT&ze{ z@0dtZ$*Sf*&)Y1Q_^gQbsKE@c#~kyRMDgqKJ2JGEg*kgDu0!}eiUFp8Ak z4~6P-y-l`}h#M8!gY3q^Aqv>quI$ps?#i`zEpcz{LfW1BH8mxE%#-k_x_PTFO#E>z z^CI(hM04a)6?4CNG$V~AFOY+>k33I}N_LQUdw45alkXQozxX(&(wt*~P_*F?N)wpi z*E5ogQKOQ{r`;Y}1c+$tJ#Fl_nit@(AA#T{$l6WKeqUNXF{oAylk+TFc(CWCRb##&0)`Ln#m0 zRd&cfEn}xA;444{Oe))dYq}?k6Qw!6G+A>2QB1TBXh+vnj7hd7D>I7|*)O@e?|;QM zADmdj+i?33PiV;aGZQX7vzCVuLxdb9anNgadHGVn|%276p@H=HO@G`)4Ps?^`I>@ zvI+}?6qgI+0h}Mts9Q2qBott^`o<2u!Ynh)5d}q?X@n6OAW2Am;paDar&PHlBOjRm zI!#R7dI%%X^rye`nOgW}FWc&384ZoJ1r{yc5O9qy(Fywe9X?ouEEIG0F(Y^_K16RW z`AZAYhB|rw(xTV@04Cvoz7!!zuVCPYv72rzv>Bo^ucxb$(U$ec+ddjhR;9uE1uGEs z&Q8kew$jAJy9^+{+P;--gD%$Nqh2vvDvCx^)S54fSQce0VJzZ@_-;TI8b{;!-^P+|x&Xkw8E~Qg9EdqDk6#fLIe~nNdGt;Vd)KUZ%7!k z7nM}?RPH_h9FSNg;dcola;X~c>!d^-tWXRfiOM4L237NJo6`{uz;uKx0D&{flDB3P z35d1$ty#ByXBu8g|9Z^8;iIU7O=n3dG#%aF+9Q_FS3E%H{IWm>qB~r8;07cPd)no- z!df%ZKH`>}{`7Oc_ix(tRzfOPDHUNTnt5$K;`JXbhq}qGRSgQk00_=f&dMW z>6+{?*#@Y(07JkJ?~`ZbD@gQQ?0t~#OD@FZc#TY1PxQmQkJv$654(e&IZ0*Wn*Cq0 zzBB|IoYE=)B%}*|f!`5VPa`lG$Yq`ress#?s1M|Fo#=5`#I9w5eTjnAAHiv}CBRbe z$==Gj^9E^#SA&Ow7JxQxg??-RnXY){3-oBrH|8@-C#@MBWo`x}EI>iRsx?`d=k<;i zeSE>jx4a7N-{KU1CyWD{M%0#7(5JigAXx*bV74ntSwo;LsKVRst@` z~$Nu0Ox2M+;j$3L~=?6ks;Tr(@YH53LvZ{^trFCUq&Mvbd|S5KvO8Jw$aT(~yX8pbptfNwGd{X7+WS*v!tedgyFrI07b zb#&>9;4auVMP}dmmkY6_mTeNV+ilyV$@ET? zK<`MJ2=a^R{0B90N4y>o*I9g7nWBV#@S9}OII|8*}L>IZAW6M~5`I99#=11%D%0IC;zzvDBsvFWb$>(E;EKI&avJ6vIRkcGO?y#eO>gEChGt$=@z zSw}HEPuGbOKEd?G>sRsl0Y@Vb#{(yV0aRx1DDBZCaIaV-dK3^Y8j`L{B}w5x9bAsn z$@H>?AlH;a#GK8yr|L%H<+%YM#6e=GDl9NH>A7Q2Sa~de$QR!xa3`m`YboLDGum}# zIy&M6HbS&P6>l8Q(q(v^htt3Cqr@GMP8w*w7>{%&jKVF%#Oh~_M%%HYph$&$% zK~pqGp*Bn{#oz*U%sPqN5fl$Qwnge@cCmFLrFN@C`#y=-8ryRDH`F}Ly&&QE)c1h_ z8wAMoP}Z~*<*1S%Z2nNDC@27Ph5PfOF``wxS~n;pXCln9wn1>(t73Qg6(D^$Z*w$Kc=t1C$L z7E?4RLd}ael#Bpstlb!}v+Yb9;!05>r7OIEAi(V`^XU7t%9Q$O@|D?oIo`x6N=!IZ zMjuh330!}9})oSrF0 zK~IMI>}4tTZ2&&mJ}HOqQzH&YyBFVb8|M7FqYcI_cjEm-EWL8?3dxSQ8dTy>^4i%B z5!Jk3dKp$%U2;8-^~Qr`-#P@4|31=Xw`Wq_R)s0oFt^Hw*qPW4qyN;a>17~JxcYIX zbBz-oy)m@~5@x6@kQ>^2bcW)xFN1xa_93GrN!~L`4k$#AC=`sbzDu3?iu6>e)`yc- z(Gv&A5MU(JAfIO0mkN%kGOfLTC0$_BzrpQkw8{3^DGG+GBz?OBjD2_Cuj~>aEMmsb zOxctL#2&XEbVF2ZvR(u)n)J25Tj4LJ7Yzazpk+Bn<^w)KqwO_|9jdoj%pZf}Z<<*K8*=@rK0y z=6*el^ZKXn^p_*wN6qV?4(lESJ)gE{YBs|F7poKSbBQjg^Im;sB0__YOM zrumO6B)D(y)3H|CSjz~J+<=pF5Wkn7&J^)jA5hm_sc9JLT}3G}_s+9NSnW3D&?jCA z5&?y|6q1i=V$qq0rWvRx8V_0On0WaAZ(t7Q?$Mq#tGotl^<7!%xLiWHV16k%f@y+4 zW@&sdX|kXD71FvBxHir#_J4B)fXESHBGO}3OMGY!do{qX(pdA$vm^LS$`%q>ob7+$ z+JF)eJ_0YoLzIju1~8V=g$c}VPUBZ&yG@v9oXiiEOq70-xJ=mPwNpW~Gww{|jK_C~F*CrZq56 zsEk{;IcYL__HeDB((HY{ThKbwT!Qa2>B{VPMYmgoyz)SCUwYB{G+xutAH8!Qnst9U z2)z}AEQnRKg=!y>)-H4!}qe!Fpt=b7eDe?zLN72V--Jq~DaUnpPT|9%jQr=EP4_JiK!b>YhE zxDt!f3ZF-5T9!~7KZV%@n6~wM^VIqt*;aZD{KU7Izrw!rL*nb1y3A3n-C}HK>Csad zl)$1z`Cq9O4V5Bw^S-5=xidLU+P_ISRhc{VpvOFV3^urr{REx5yyo#QmlS4%My)SK zi50`~ep59ITE`tK#p*XH;Gj&+k|p0+L$)My=6EO80{Thh_lk%YD#Te7+dGlrdfx*fQ0>p3C{xAdr zbKVxK4UP%9rH!iS7+a3N?K2ZA`_Zp6&*PXL@y}^32^aWGs{XTIZ`)4FDj{%Qv$UPR zMj=m!lf2UWIFwsOU5IfF5Zrb2JG@nUPEce^p>8yKVAg2`}0csEw|k2Xeyp zyCj4`uzA>=sCju}^5S0qxRN90gf+AR79xo3$i%MT9iKsN@ex>70C(Cdx2LTLS=+O@LZKBoG5uTGZ$?ZU$F>SR zNjgbs*%yyC5>L1_$Y|Pvu}0p#P$@*n#H8MwGTV*IUZU+6Ed+3}$fAr3-s|{>qnj>u z47$(D)w7ZG8^)FC*H$9AKoco4Jpp>OC?bf5eRZd zvxAa^X#ezM=rv;~XI*nF>Mwxjx|rP$7Z+3IiSBAHvgi_Os8dVEZ0Cg}&i6FfcLV*H zaA*mR7O8XSvT`T!Rt3qk0>ADj+^7eSl+TfNYKo-B8x~y^^EUD+D4IgajL(VhuIzXE z;uike_?&GA3f9ilSR8+86Q_dXSEnMO@=~y9stlLDxKJYwfQR-}39#00+u7-`A0`!02m2 z2?C{t7ql1};<{u|qWToKZE+e4xzL^qkDOScNLMj{GYA{39N^rHt8*0;hA#Af??Dxn zut2Lh(|C&=819&{a`wCXQE4^dQCf0IC?{p}5xv>A@6ZMXXh{5oExPbl?lV8!50jbn zs+w;6?@vM7m+XIw-sgl2ciy;ltZYrZum1{Xd?iQ7jW729aayXi=j?#RxKf=4}IO?dN zLowg?A8fuLWq@zoE7GW4N-@%~0tR}6*6Vg{sP3c67s7tc)d>T=I^z!wFvQMI)}ie0 z1*@I)%JCEGez?~qfm>$jKUd3y?=l=xFo*oBjyN#jKB4vRGvd<>QA7aw6}a?Tr*@E< zD~@>pPehMDV!0r*dd)RIoP+-`Hgw;W>IGLwnmrF|b{H~cpq4$sSXGWBp{le+?$Sug z7yW$Z4anddWNC#Acnx!52mV0Wg)HG~o$;f1?{o~VO*}anWtpVN-H5*g7CZ{#c&INPd$(G;#s@{E8(yd@QDRF4 zkP<2(V;?w;w*TUn_Je6h)kNL>5G;1qD0xfk7M9|tR|YqX)B`{{hrJmR|eX28j!bgyVdOxi=B8=_Njcq{8l>XwXg%KmW7%pkAnT1Mlx zJPITRN3Z$virpr-pnn^!sbko;GTz@t8|UF_5-EvY?2nk5Uxe<+>#(sJJd?VN9sPG_v^8a_K3=`<~&2L`&Fj{(cUNPz} zgeQZf#;^oS*5UwC-v%0P+QY%OsDT z;sDf7>~v)38+_R$0FQ6`BlF%s3up4R)}+$2sPh&m1W?7-XIv+3j4to-WshaiT(#a0 zXJw4y7k0S15MQo7eorsvJ@NvaGk5(L#it(bjAu=*R7oigy;nX%sheSYZQm9HNB|XK z=C<{7JHonno6UpWAZ;a8Y#x06Ff4W{~r3y8Aq)(+hhfe zr4Ey6^Z)1&$U;!y%^cft&_gr>7SMq)@4jNc#&g@3wyabjLFUeaM>$9cAzi290AqUsvyV%^kB>C*V)mlzY|y|HS+n0HGNS>Pph_+Bb=@ACgfScrLk|&hDK`#yQ=5* zQSFDl2>(T+7BJ6-WCdOWjtnzprj8)BxR&Fto=;8}vo2zzUCzhcbN8TG{b#cAnNrr4 zFmD&IX;R=UYY2&e;=sE*Y?eZ+YSZu=nZP!W`=T8;RNhK_l6an5Df1@LlmD_DcbHs< z=rL_jsp@Z+vTxB z;s2nm$1e6+d0KGBoqsK@`%jZ0fcqST4H~e%kCq z{BXN{G#x7~8y?R!pCGKdQfspc0jipIOuRxq6H39`_bI>A*#xH#06DDWZ;MS$Au6%C z3NP$@yImV5i?NM#()7dt$J@QYWlXk})za1v6@g;&ZYm(nvnQw-p0djKT}}tX0};PH zQ&_AoZGqxgVOv}XH$USqljbtU3sQE%U7^}&Cdx@`t2kj>{~aJwXQlpBtxt_dzr#XB zOhx4IU+07!f#c^pP!yttT_*Ms*Xsd+6sJ-ZNNuGiT0;O$tf#n1KamVB4=6!|6>Azh zQ$HhEJGso`NpGCtd6$tT+t_gpzy5!OUyOTOoUktYI=()XA zCgGqIGNAAXo~p7*G1;*Zi6u2^WkQ}14c82|QG*{J>zd4!ifX0y&@;}20>Z|PS%=4- z0SCW^Sqh7lV17W1c(l~jlQ7U-;XDxz+>#NJGF_5UOnGFl_xE-dc*b$+rBt_+U?;FX zsN}mMBjm^M3GsM}v;qWBCd5AfGBIs*Az{EQ5#damzw%@^YWSKd6dXj~l{@x*&OjMm z`Y)%9#2rPWHnkKIQv5_Wc^+4nXW2S;s3C~$(*Jti2nn)kTA7WGyI+ILFotjUuBlWf z1#~C=t^U3+isullKX;d@nb@T!NBSYEdJH9g&9~zuvHt|V<(pv* z+Ozi!T1HAt1B&~uAu%Apb&-ZhLWvglPWM1aI7H75rDkKy z`06xN>ga;uI&{Rf;-*yQM|*L1M+Zao3d6{ahdhoCzZ*edDya%in`1y7VcN-Kbt2&$ zA?lMJ&zdO zfK44=lMdEw z`G3R@6*23MyG)VYErw6ht8(H#`< znIcd9Fro38HFK8D`)ewoq-MNsOaK$FnUW1}th`zxTAG|CY3w3{slxzK>Yd&YBWBqh zW+o(MgMG{)pC(L*6;6RG{O?wZFu~~9(AY(3Fx;n|`p=jXbh)b*xg~}#N&RkkrT5do z$qtV&JYgF5`v@L`sCNkxp02kiYrYRi|8lY4)(tldW^!ta2JLNZVwn#|M3*PSVomT~ z4_yk|3Y=0E@PgG?WMy`Q8shb!;MZY<)*JXm1)4=6Q%ZV56mfOx{b?-vI1wxbhr?kP zxho)XHxlQ_^${2!pqO8v!i?om=pWw1WeUox)ajs>4UIaa4m`}3<-MAsOOG{8-`LD^ zX&{C>luwA*IUIQd!qiS2l@eaT%N3%ANj-P(J^(d9%D-4}A{L+`X?}@ay1JW0(IZRB zPl~pw=Nzr;MOASowH@T#I{%5Erx`=88#N0e?qEt;Zw4F`mR2ljRz-1azAnQxmNo0i*OF6-q^`N+|b&H*{uXP3)nJ0+(b!|aQop|;rbZOC_ zmJ!4WK{O^=iz41%+#y&nKgyDi&lz1tv-(v8O%Oec5()AiX(IV(LUowAqXe1ABZel^ zzNcUbmd`(kIv`x#BIAaGY2yC#=_c5r>pN-Z?!>AjHsNqGC+RMea;%(+$$X|^!YR$B zKZ%zK&h)6NJ)g=%fW1mDNX$cInfq!zWNOn8J8SDq%kDwgNI5Fxk4QHkR;&j@T%nd6 zPCYU~`KuAe|A1vrmg!Q^92)I8z=5lZ?zkQ7ZchHPV84c{M#D6|GtG%W5H3!xXc3m1(2hpKEz;%<0$~ zOe!hx2Cd^NRkV4i6dNd4zT`AVOkES0B;kYiQGcYsC?mdB<+c{nTfFoQ0t4{DlkUaz z*&Lv9s$j0vAuFCP{#F{(din*EAjQ`4z~nxDW6~XGd3z=?u+boVtu!xhLd1z)V-V!8 zJcI7S2L+Jw*PX*-1&k3E$iY{kVC$a?v;@Ac`gu2#9kX>lYoj}Py`rZL(X_z;<43N9 z4<}W2Fi66DzMTo!k%azXF&x<%4+qMGhFua5AE7zc+X<1&IsNB`X`E%BOs~Iwt3{O# z2?@yKYa&Wcf7Y<9y@_BfSwcB7)GL@M-PyymKU-h$m4dFDB$1s;nDQCo>SeqET8VaX z>P4^1RO`lU?;Q&=0e%4$y|=$M4PEdRMy{Ml%F92^aS*LYUeB6CDzC)SjNg%~j|siV z1l>CmNu1-SrkR(HLMJb)iEuY6bFVq47=EwYwxT@DpQc?X>gP)6Ae4z}{Tp3tz9dyx zG!V??hKzZ|rmylguYi-4*dbY}U6&Kr=mfNg*_ds85dn*p(k2V8?WG6;UP6oV$cRBo3qDks})Xk~$SgU^5Ba^l;GHmeOV5V(lbB6qr9sTNy)ChDO}C_rBjAYKZ~Bn72m&(mR_8s_np%?@=EVP~R1W6WW)2FF@sU+wYKMSz82|b^2HA- z$CkP^nRXi9x<3MiihF1Rido8vKxhO_c(g3JJ;jjZ(cPOuur%p7*C@`?yLbHfSUW_PW9iq>yMCoBg!%6IVsp9%1oJIGHD_BiSz|?tG{JCBcV9Nco@g`H_sZ+GZ8^ooY-c~nZjbNv zo^<0ZU~X8*lA7C%hRFmFuphF_g&x2>(Zj!7sJZvJ)Ev{Sw5RmdCCz?jW2iBhnhRT} zmQ{lDqTdW>+ScqCMNRv4&v}7fA1fF-L_hjOd-%oWZz=b?;!3_{RRgm4Q3Hq zzx?ZPyXq#NUq&O{xl3|J(Ib`wRDKckvMGjSk^ptxVlJYWFjwQiJU;BGj|zX*H^-ig zPfKwj>%ccS!@b6XRE&4=R~0f^FEUGTMV35d4EuNLT#!L8^N$^y1J-Vu)|ZJreT|9- z<^HNVDjMYfg>>*15afVqxyH)p!Gz6X3jce`~A*b1_9`TXD2dYr^mft#HTgJQr@SBvyCbff6E9B?LH-XL(p=e zYi-8B**I)%my9a#$-Kv~aGE88@{`(=!yaPuY6BRAO@dv^qa3|%0(|I4Eb5<|oJmM& zSD!@rq@d|iMj8(`DHCFl(VK>|C4A`(l;6$C;M=2DNkpEC_) zi+&-+@TZ*~LcaTzLa1_}+-~fovxCIEfo@kI6u+3OI+cqYqZ`T0|9*xMuF6FF&ek3h z+!6^c3{+nn0LROTu*H~BIsL>ma`(hBD9=%;$=!KL%DyYQZehyI1kFe<+`EXXot{rR zmHkwe#JvYOJVFc|VYEtc2mHdK@*d4{*nVaE1~_kSnO(*F9%#)NDA6BI&zI%FIyEai?@Sq|cB`TFl)c!P*^d^Y${BTBg1 zV>P}E=2_^ywS_Ah*O!#{_;K2YD+(URyA8--go^4G?sq#7V&`8-y66W3QP!$Cf)DSb ze@_!L@K5NXiwEDI<~y&QiP`a7S~;hmoeb^1ZQ0e~9PBm?`c#DVH5<0DuSvn1>(^>vo7|8Gx4%4FvNWgf1);ZKe2r$Y#M&wsLjOV?~+d=dxO@f0>oAwrYz|LDKFNrJ&p8i`C0Yi_yk zx2XJ$w_Bpd7dCV{I65cb_1R_0O85NSP5hRenWdV#w>eq1ULezWx!W7l{h59AJWxQH zpxck{ELxb8!2(v~V zhymw08vX~~n;BKXNCz=+(B?<#1@VT~TfuMXo{Bw~eYvJokO{e@az!wmjI3;ORmA$Q z`@?{;Iuk0Fp0U(ocqqv=InXv9qsIL{h1mG3XT`_X=QE;l)Crj}69$oji7Y6noeboo zzsXoY1}_^o3$-cYAPG}vdza%e)fiS$^lB>o9GO##7DWy z`p(i~W=ZkAWF(~`ibG8#zPb+gbi1_bcNi1qDv(Bk%o)jsY3gLMnQ5RpocQFdOfw}Iyt7?oB za5DMzO~SCXP)U23*q>{IO&4uF$-0$DRAA}}*HT+?l$^7(P`m7(iaUi7i7};op^{j_ zChetK8=a?nC{i;i=8{sU;+6NiJ3NitS>U)6+{(DDzO5i*Tp*hs>V^_@0SF})9WLx& zYa?T+mcene!YEphe9{+Q*&}`8TO3I5`ttlPc$am|{=i-~xEaF-rHK<*b&Z{wkq5S1VDWrl2JBft}olDDpjq zEx1E=70EX4)rW*@mBD%M-9u}#@5}OQ%7jVRx_KZ{IV6#3m@!RHH{k8t8n53CQ0!HE zVVtsHJos%Y+Mn`92U8oUntY#?ciNV8EQ|*FCIB`PcNzrEkyo0_*5p9xlcc33fLyo6 zUNU27l!=}Q{l8b;(3av?W0XO;4@KyI-3!>AvDGbUs94TXUQYYrK60z;4O$_wv0H%< z7ijy0!HV3SBYB*^poB4U3?yeUN7q`{AXqs62wG`9*uX~(0^V;;2~#~-_@YJ+X*=Bq zR*w-h!p8U8?(AxmoK?xyF8)<)+>7WD*}(jgvGh-$oEu)$!b8joIA@X@PR~GdFskbh z>a*5$Go=OI-}rAg+b&N`W)H3>v13#PvGJ3XDkqGVxApCDZUdT>tn1w0rG@_rLEN*5 zjgrbO2~T2VLDa?rv%{;nS(G@&1Bf;kjGZ=3Tj?V;iPRq651SO@#b+&-*eQ(KII}Vw z;RTiitiuw)LTF4&^7yw)&5rl`n`llJ?N1jTC)Thg>qsPA(NZ~TSPtLJf^wsea>Qza9 zty$tf=Y$vaFvhmKzMD7?uq{ewAGW^*Bd{Gm0*wxpCX;ECob&uUzuVs;azZMH)F33k z`!SW_I2j_prVQFpo6KGnpHIes6QO(Wi9h_*YNC>Di(AJ(O$0LQS@!@|tdb|&#|GM( z6@2|6GR;5aR*O##f;{ssxQC=CHEj5Y;YQ@>-6t`=-Hw=wKC`pj<qEKC;%iGQihQg!M0Z>d?t! z?f;;zUnHXKh7XXs*(NloOuXCdacYmxY9GY>N4xM)Fq?K5C%{H3xB^Ftfx?@r*D8Pf z4)JPmUKpxttu4}_i3r8}vGW2xrvgj`aikU_5QduRv_}KAwR@)hUe*|UVv8L7gO)Z1 zNLRivoeuP055-6WD&a8LCsKyM=h;V*b3@ZlgmbRuNlk^Tgxzn#-&D$ zU-JI+6M08{HR5T;Ww!J&80J-&;)1DO5c}uti$>RQX5x%*V^&QhCh%K?El5$5 z1L?O*N!=)Z0JT_+gtGNv!&z{dlNPYZvcnNd*p z%S5?;P(h}?$KcH?jYVxnKW2KW_RsxV5I9IUut^PM$jIs0TetTHQc9UvYZTcY#hAl= z?~vmDY5Uoz`J6G^dx363?HC4fK-Vg!SF||%Vi2@|U=EgxYhqv;ZB-!BW2`fYk}K^w z7CxK;%GVT6r_H4-Bu1N;T|CiMrrXI5^oN8SSm{4R_JvLt*jCyg&T2^a5$tkwKxU8x zJ98V@$q2!(l~%1Mh*>;2mlX&Mt(Einq;GKzDc9tw!XarA&J4n>`~idw7Kg{=paMz;!49aNaKk$qVpcRU&-1I% z3+nHTs`hRqMC5T|TofE?gaSS?w#KuG&%;?%#X^Ypt z18d`cqGq|7bJz58|IY~6_uqiDGkczK?uE6__<6hj+uSW4(BEw3Tm`Ou#DjINv7gXc zMwoq@Utl_9&~iASeRuO<02S`A*Znz=2QdwX!GcszDb?+^;fU3eQxCmdM%+?5wIY`s zpY`Ldj%?3oI7x5rtZHN7jCMW{Kf!{jjTOcMAD4rRQk?I4Sf#KQp$iys$bQ*VSRmsWCNX2+S|(EU@XTQ0)#>B<@__FrV;r4lMzMm6`l^pNW6 z80?4>y426XAG?qZRYayjnPQF#AH0;yueaBNrxdx!ar*#MIyOGMi!5d3btSO1UNgN` zy&kWFa2PkuRAG3hO;ts7Jpb3T44m#z_n5ns8En`^we|W&L3-pYv zPGEy?Ps&haoJwL4b8(rGMj&c}&JL`IW>r6NACM?A!!4* zFhmeOV?oXT9yJ{~GM|JfU?Xie~q zc3k_$>v|5IrJ<`>v4c`Q4gflGIK<=qkNxR2O!5PRFcNSx1RN#$ODDus3mYR>p~+jd zbag(O#g;YeeD+?E6W4;V$NB=r%8Iuv&eJ}>C7{>ZPMt?-L2h7FXPwt&sq3vs$Pw#> zOa=DbQw0l(2 z1M&Y9Vi-}{(b_xY_@0|uV20jn?aT;;o3e*>O_O@b%Z4xv9LL;gaTS+&d!UH$uNri8 z=3iu*8)5VK8Rz&j59aPN7fq#>oP1DEGqSQatLMH6q{qX=wG}Z%-4R|$qc3?hL(2k< zxg51K%>Tzr#Tq$N5)zK(=Ey_}PrGx?Oqj+8zMW9_H+!dHE0Ly`h3$ z$hyxX)$XokhL42EfTCm{qNbMt!N1k3WqvbyelI17g%4cZyh&>0QUIuSqX>x%N%Sd* zo;LgJF^?(*Xc1DoFG!xFHe~Os&Vh6cr zj8B={>s&C#3ns@4-Rb?9+q+% zFlMbnZ8S7Kx#eTHvj*{lf5Ru;GhVQf-VA(c1D=zB2rAs(wT zUwbqzxp#wl9&YbrZ}h>XH1!f!HwAmX0s>jv^K^*?R%#nO1J9=Xv9IwMhU#bed9u7o zshivd#%wphnTU+=0MJvy1tu;a&EHlYyMu1k!*T72~4XE8IKHeqgc=F_Sh(X<@6^oN3xmx>f(OhgA^9 z@%hdFkj}L$zoU~+ZgI)Xa2PoEkpNd_8TOXz_l0F{MtEj2kdSSTJF9d*y}o)wKWoIRYO|?+G)%tSpL`dqgQt!gC^!HeOS1$=cOfWf*`uQvtVf-^TgrmfflF(Rf;{J8iYCG(kCtE<*3Y z4}Y7`{Yiwm%+8R;*;R1z?G$oYFDGq)>uCsIZXOGX-w042>O}7pa*3V!baEBSvvCzP zql#|`1lYQVIvbsv_*&GP{8^ndbbU}Vq8FhYp`Y(Q^RCQ?Oy*gp=X=SrQa?_Z2ZqvZ zTlX&;j+5=+E68sLs^xxYDB~X_$229nP-}Z+_%*A%D(fhwMMpD61}Q?7qGY z+@vq03ui1PNkwK|N>3x*MAkJ&DiqkgG2T=MV)mBl)T%A9+H0Zj z%a@udyQO;38t+(#I_s|XaBg{s$5RMiWa|?b79bTYxOk?(PAiM%mys~QC3^UR2VQ^p zoA{z$zA?QBefAq_Jx9d`KpIp&DfSAs;@t;Z%rB{0XymTd!UgFn1R`~#iW+4BLM%N6 zEHQQiN68ZFz{4v-(s*DxInf84+e9ErU}E-Li&E!q_&YdN*|1-brRw5#EW!W;c#o6{ zqr*?&v~tN3m5L%Fbx@}%@~)eIbyGfKvq>(E=IZ$mNNxX>eLpSt6~R@r@#EOTX~egrs~E%0+EGiKOzsq7UK( zntKnLHPTA3uU}xo(O{mY6Lpg9Brc$Gv{UKk%s~AH(;E;G8S6T}mg+Ai7fdY)EEZ@O z{RqL+EgjG65CTLKJYKg3`q$f2paD8@Jod-WA!??Yt={DB4?LTz#a-{YDbxGn8LujV z0#^W*0Q!c}p=AJ_K59i$MIWS)VQC$3O;WI8F|vOOtys9lCmk73H+elxLP>q4dT2pFs zp}Pm_U7&^xnX*LjLC{Brj~s7&dI=>`=CWZ<9^6=?ai8%PF(xb+XQZwF3 z5ZR7(Kt4-c!~alsQaE&43z%bwaOV)ZCA_tEoV>o80=Tk$=)y15MP(4xXuvZlP~Dh< z#X@^tZ=z~vyl3mY3(`u-+Ce zE;zgj{g&0061KH+3mgg(Z52hXC99RFHM2|CF-?_&Tk|%8Eh^}5^z?yg%^Evz3;lfH z96%go7yEf6lXD@PhWSgmK#_h4@6HO}-@X!$!4%$_kHZcXP?6G!y!j_{aJny= zZIQ@Rd;@9Eyt3=kXn_=oR!9DFm2^~~28vb~;8cBCtkI#zo_lwVje@QLVv|dI zwTjr5RW7~h_86v1tA(OGb6(6S+6ifD2*RJKVn=|Ht0;q6=c11s@p&dPF41t@CSAKP zuF|@4{JQ|rF~vvlJ@to$CAhM`k`Plj)pijZIhZ+1Xg!4*A_4Kd8O}*oF4TTFqedz2Cnr|Z10A&|7T|l8CaB#G!V^|BdXIQ zd5!=Ur{z5(c$)K_{TKJ&ShyUS1wW)5Wq-L`*WKQg9|4McAL)?|`&LKDd{;z4+TS3N z_g!gb>HRQo&P~PhTeFK1;wz7>OGKMCc(B_$F(hi;=ih|%V{NeJf^P~_p0{0W;)`Wb ztkXfU@x!QOcBshc8%ar&cwqHMlkBvWe`kc;g_vzeup5yt8la2`N}t1K4*B~s*Ij_E zQ}N%50&SR(9JkNoe5UJ^ly!P8ZZ6&xNCVdnAXH7!x8p$YBTA}uZ9=hMuw=xd7;gmS zrj{$9J1ORV!sGCfO9mF$l={;QeYnH3O4GHW8Q@R_%t#Slo!TD8U2Rh0_7Sv)ea0V^c-B*mN34W(x%up}YO+6lsXZjLAoiGO z^jxW#86N!C4q~7)RKA$2sZJKVMOiw&r22cHIn<)zd8=uL8*1}+m{*DY?@VaQMhdR_ z^S5g|A!r3?bcVQ7+a|=N{q|{U((Xvv0`BkoQ7z*>Im33^0$tt5?09NRtV~vGw?gK^ zZ6(wUc(MCjV!hVa)<|Z>2E^8?{#0O!cyWWuBa`Bse^R246WQ!Lwk>hq5(@%UCg+83 zKM%GNaTZxvHhhM_%@|t!11&aR?luGzmr1d}o=@TR%BWXEP55s(cB=5Dd_PW%dUD?& z{oYh;h3)wb_3UfZZP$|XMO)lV38$VvSH%3jknao_JhDSn9O>1nt)=A3Qk^2F z0@dJG#q6gmb*soZg*8%$3{8lV#JHrT-p|XuV1qH>cm3s`0m#QHA^_dNjbwDZZ5N%26bud9MNYqLLPD{p z1Mzb2E(44!NNsBw8a)({{VA7%-htce;$V*A-xBm#to)q?Hm)_M%}y%cg~3;h(5R5n z^n{(T&xCu2x(`>Fq(j38<+pZF9cySzkMiW4l4^n{5`cH$=NI*5PZMMhuuQ#x8D!f! zV&S{~Et$E`H-ppcsw~lQY;nfo{xLILZz>zXjbE!P6ewxlE0@+5vzj%GSENwYk;W<8 z58#WSAymcugq=v(Gd|aL;Xrr9B+=|Q0_&9mgAVoKsR*|)+6Bg_8qB*?|A76Ea!l`! zFxqE@_c3udU1igCGq!&~|IK1o8edZIx2-ZQZzEc~;x;REn%BLW)GD{Vk*~Hc<=`~f zW6e5Ej`_ts;BWT_>k=A_Rl`P`9}}J`;zC^&0)yG4g?E%CM6^7$$=kpg9r)pA13V53 zt#rP0hdwDiY*Yti@Q*l$u&4?b}o&c?2oUw)iZb@Rru^>FY zxr1YaE8x2_96KwE?hxKcyf{U4@P(gVxJ9mv$kAcLm&QOlb0&k#$cmr7)#Y1iR*Dtt zQ6KDUWGCRmAH~4%^e&6W-m6;R|H^#UH4aB$kPpo@!>4f>qpju$?l3 zvMu!v3_$`6&Oy7@_dLDSc$S$uOVQb+rgQ5iN~B14h>Op#hzw}2y~F?caOKzth&wc0 zlO#xJzp#ru8v6*zmLA`v@;k$10yv$rpKQ51H9*&A*64Tnr)3W`mdUn>%-v!BzR%;sWaIQ+IU?`DT+I$Bxa(H-a!xpDwM( zIh#Zv6ZILm0AWU_T7_S+mPHJQhwq>a7!k<*iQ~(&Jd+S_cd&0Z!X+D8iA|rvPm7Uc z(^KCMZLLv9`*W`;2W7POm{E*xY?*?l7hAqLN!$AdqarDn|4^JPU}NZyVX*{hohz{~ zdGmiCae$+)*RoWAsEgx>vTSI4tB`ao#l}1^AxX@0pz!i{B?_m$xq;8Y&3XqHueS8J z!IQW|_UHynL?R-=-fCL?C-&J<*s2SgVMl%R^}(^a)Jb6sOR4`NrOaUM!REiB@Ae1h z;L@uZeGx@G8ZSw~`TwaVX_1`#n^_LJlG_aX(|2o0fC)hToCspJ;u6u6)4$6pAgkn}afFtK!3_bzgmk7YdU7`q7QuO%*(P1uLhyjI^oey_wPOeuV`AUfTYCz-gR z@hXZ6zVDvXY1igXVI#m2!A$n^xH!K4Ul_whect@Hgd71`!L5#5QaUq_m@YXYc!qP9 zx(Kjr+@YBp5<7^UpzS1-?ugG-ocLFFYdzI~9}%AnNUSxtnPAT(NQS%`m6lDLJwkX* z)-WtE9Q#1kV^M>%nJYj=?md73xyEgF2LUHtRH1Y?FBHzPsuV2(Wik#VO?WWk>_g-Zy*;$MRH& ztcSG#Xm|Uc|NN;30PnhG<=~b`c}C{<1q~Kysu>H7c<$3I>7L-3HiRI3e^s{HDM>&} zOH%X>p?eF6mrd|^pq(~tdw;mjSk{V*b^<=}xsWp$sNHCZz&}*r!Wg&r7k{jKB8y4? zii`g01|4TeTs2HEd=@ON+eW&=Qb}ApO#?IsTT^(XC4#1y&3|}@^WTuyc>KLiVeK`` zRm&FX9yBk5P3Nj;&>E_kmFhLsa$}6+b)!Ej(34YkmOumcY66OTiv(jsi=PeJVVKi) zN9 zQzo_7`t@(j0Pm95aq|4{F$?sj=o55tx}7b{!)UKG5({(lQh+8`7;SRl2sH9HbSo+P zKgK&SGy?>qo9X!U=6v}czz`sW+Ue(ZzUv@J_r*U=v8+L~gBQ99DOz!NKIxu$fbm+3TKJpa)l(v; zO8!CNH@dkWLmoS71M7Zz`4Vn$k@tpnDmYpG+S1T-bup0ghv#5}TMJUkr2f#ud zF{6)*C7x;G;#{KQ5~0!o{mEh zN`PD?PiX!#rjco77T?%Hc`-9o?DXmp_7w-Ys+|S$v_z&OhF$)bP@ z&`N4_>;8Gv5*Ja1EU7P=%|F_(I2_5p-EVZK;Ix)r>oR@SSVw*+E{nx5_c1?ZI*d3Z zU`0SYCa2yndmda>hv-ej;#S6;4;rgo*CXD<3DOa#z0Gz20+d55l7K!{|1tG#Jg?J> zW8)}o70;C(VljY0C{8EDoUKfobjo1Y#UKS|bqdg_bi=SU#92 ze5W!MC7!(9&v?fScNj@LK1^a6WsO5@8q3JU3m0Q2xLxzooqEg1OTDg&ETb7$#B49h z)W=`GndQ8##D?r?68N{w?5Sy-Btraa|1MR!-TFaY*>@WWxI zS8RRU4v8locaobyQIODpzv$PjDO-^KND7OJHJrYSZ2fkwj;k-+=>mSz8kikdNK~Pr zCS*(1QiqH=11i>0@6V1A!$Vqwg0EH_ci`-;3QbO3VKZX>C8jh)jY1FwY`BG%rj(EN z3+v>pEF6;|clsS)2oJuRej+_G2Fb-qjCm;`rB0tdUJV*5@5|LxmSUx;N9$o^-*Thm z>qHYu^YkOe+vqbqMoeG@vffpVeE4nV^3%}yCxNq#*+?c;!KaUuF^l%F=e`h18UW?d z*Vn0*%rR9PwvN`95#`+M=SopgRCL0ZWozIJ7$W> zrRUobND2T85-1bqV|5sFEJt{iY-fTYX*3rh7tS*_!%c-y@8}WJ*v{*mOLDxYbdkmL zXapYDYKRL<<&Uv{xFg*ZOXD5nCVJcjsaZr*({IzC-cVl6iHynrNUZO_oog#7v2)b` z*K9vPvaNu?7yCKEfj4Z~QMzpZG1Gs<*;@uoe&f32lvtZ{vnDTortnLBJZhLIyySjYAFj&y?62uE)~b|QTD`ofgln8DhgdTFiEFV zad4v->IDhwYB+*V-VhZz7Ob*B_6=TWlLlzrc$g$AyAj3ERQaVPT_>{J zqdBC%99>^1g_R@M{T+<$IrlOm3Z0mQkc`JqDwJVwWX6OACZUC)PV>3)LcFRN*hhSSSGn*V^e}S#)9v*!7 zlUir9xmkXSY#t7}RMr|P?`mz_FM})68IzCFLsSef7P+at(==tuMqx#~Wdo@dHvqNO z>s@26kD_!8jMqZt%7cWJIKxss*zW9)nl7Iy09$b2r+2^ILV8F1J$^qye0KFq8%saR@!AQ4z3N}hTp#|yW^6c{me8l@@XFr;0^o@fxNT_-(j%;@y zr$wu3?Cz6K-qhjN=bDIqtnjJy*eaCIL3rB#@C`OcYa@uWPnousE7YeU2toVrWBj!dC z^afYCpI$aUEKa<~D~pf*`DjG)RVZUez2|`V>_&G$F!h0h%eSMm4Pq)D9Ey7d7vqVn zOzh(fc&-pr=zrbEKsNseh5CAwcJTSlv`iQ1`v-^@rNHNxrP+?(Q|58P5cDv4tlT0> zKJm`3_Uzo`qI)uS5L_0zUPBi3%J8N(mZ1T3kXWYTF6e(dF8_SBjbl9d9uQJjd-j;; zJNS3mB#)uSUuVF{55wy`w|b?~*L=24OT0WVuw4~S&7f9Ha$Rg~b7y!M7fS$;re#Yj z>=bzx+fXuoxpXdC#&_l*ratrKpxV69B5O5U^2y7(Q_WNp-$+p`H+e^+DGCi<9a$#k z;JojW&YEZr##0{9oY)*KsN0)(D?79`UAKX5)EiIUT%5u2~Vy}95fa|cT>ON1ta{1 zTl9F?nt+EqvXtQ1>;}JMC}5Xc+Tl*OY-D8cb*&!9*?2g{U*7A^!X%zgRX^0lmF?i% z&Q~J;Q^EM1wGn93w8LQPSz2*>-Qtu?9+*a}jN$=@9mS-OWfwrj2Z;H2JFgs*jp6qF z7%7wCbD|$aFGa&@Hb=oCCaM^-hjb{I5;i^{>#+#HvctHpeuv7&??#bUBTL7KUCXVA z*=nA}Rubm|wuz(GeS-t*G_(O#83!3ZUJ9o!%E>_I`+?Qmq!UZKN(X;M{CIzAYbbjKxGDH<_V76}w|t!rF9D*#g8lIo zF`g^Q9A~T^5)RwQJWNIll-chqOcG3p{SLEzFg}y5$J3TWDg@uj#4&VBz6^R3#eLRG zxHyTAAaGwR)Rb3BTWn>!F9prxMhWIr%EN$oq0yMcsNx93yML$hex| zO&Pb@sJg-^Z~92PWBO{%n=HK&C(=@ipN%Uri|+#8UE>nH`n_bq;@sd68fpBe#mMT) zv|Sy+#C+Rob5-svLUEvvG}{D8Z0ak&#HUUpXKeM~%R&*&T>7KZ+D{RVz5j;x#z4=rNpZS4n~e*h zzr%c}`)OuKvDW{69@j_zb1Ilt;S+aL99f4FZ!B z7h%EibC_45h@>G4cYjJ#^jjii6WhCUmLQ#bHQ_4tqIan^dXtt00|~yl6WNMxJufc9*R5>f1 zqkpMydVD9KwWo3)Jg(ijkw`xsz@W>#M`bwors7=~ffge?upBQ9=fDuFev0xU9A@`2 zOSMV*ymJCPCF{_NU!D9%^jV43{YgBD4m^MHczG9{Cs%zYrb@Fg-dVU^>pfF9QoWy= zXg16*8Yf_9tuUfCE|2;Ckv2A+CM5K+{H}7ktM3xnEO${wr-C`I134)W;RJ`)R9p)1g<{dPCG( zq(#@<88m47A(vlSnT?Y3y_YIFoK8+bp{raBksv6)0N;On`#^GWA+NXbJ3p24o!I#Y zL$eg0lcxBJp19Jv3nb{M`)n`k{_>@-C~H!1rNMkjXE(y|7Frs8+n1d?uwCzHGk{JC z&0n67#?80`2d&y9x`IKU0~8(0swtdwDs`AD9fvgga>8iFfL*NDY`8V5v~kjbxl_T< zbtQ_`J!Q3sJAI7x^?GxwjKy04}7Ye$iBCm4mAp75rD z$dQh~c7bpHJKH&-U&+L1Q=8#q>U3hyq?%2fAUNLbvePQvvf)TY;3Vc%;D{94Ie5*KbL z+Q&0;s8%q2W(WHb(GC>U3LkNT_o<7&dDQ~BlV}xhw=-Y3Gj-YPpLX1?snC#4v^_8S z87ZEaLSIlLwn(vdM@WL-(*9(I`LPVM;lGR{Ea(9q!h3UBAkLfj!Tb%LOBm&V<-21| z%KfN8$^vJ3jcEb<*@u^bNvw?{5y>!XQo+a{hR}K2q3oRo$hPP^ir^WvzcEK{!{(J5 z{qg=PYGTzMQ6*0SU6z!}tmoT9TQ(!iDYbeRKilZ5D*5Ndqk!bMItiQSsc$-LL)jcM zfS<0@l>evQ)^<(AJcbCt#mwb`#3z^=EcYTigzMxn0M>Yo*KW0%oOJB>@9~qza$p7Z z$J{Oec}nEsU4^tF2=$ihi`~ijh^HCRYttuQCc^j4Tub#M6=wCj&4_DrjQ|YIjd(lv zWE;n4m&796s@6npDG!J*s2t$98>c*(89ZO#niPWTAyVeogj{^NMEF1k%)&hPZ zuG|5hPF^0frfX*w@R(zpRATt85Z_NH$Sv!XCQsQp&ff=ye{P@vJwU?0unSzI$FzfY zcP?hMr9cQOFYzyoevlhq%|+ z^QrY9i#jm4Te!aPes>#U`GL%Vd%T$KnG+(=M%Id>$uzoAYd}>H27#iYr6l^4pK=wA zr)U7{pOz0H+O)#DrAM;QyRJZ}-cN7(q*u0U^ZdnmdBG${t?#E^c(3&dSe64 z$F|43UV0rh@W9hEnZ3{x(76OJ8T&FbNmpKO1dZx#4m-JQf+YF<-clx62LYf1A@^ft zzBgsY#%(hZc4)qfa^=`|)0T#@9|Bs58GH!fmvz^(aMX#M1YNw~Dm3btAchcn|8{Q_ z+o`ZR@Z);Wy)QCPMWJQ!Hn7ZV!F;c@ZS&Ce9iVA9V9I}nm!yaPGv^33ElkZgu~rGJ zxX;(BCtzeZ_P(8XV#|kZNbHyCjF3skUhqVK9bD)1)rVQ>!N*pbcxAc^GA0vkrmbR3 zAAqymB0YNV{5`R;u^GusISdJ?O>T=-is@QDL-_|0@A#wWgCLB%tr=xfYE|7wqvcwzq`9ps)R` ze{aARy?t5dRVaW^9J zivD6?7*EB)b;rAa&I61mrdU_eZK|{9PP?h=KOh6*S*OG8g%D zQPkVSQA6mwzje~IF7c=Yk5zp<;lh`sBH_Iyw=ihUg+b8+BBTYPhf1VlK0D{4c@T|6 z?=LViTNy&RW+KK!*|mNgwGBOO1Uc@BpHp4woY*=Nr(LaQ@sB6Y7t8Bbs*r+fOwXVP zBY{X46;ux`zr-cZlSddZ}+<{@O*FOBK=X z$eInS9ptduuYW`{A|aNe+P0jRI|io=fToR-Wa^f`XMNk zF)2RfPkl%eI=7}NwgSLag_KZ9St z-~*)_#$!`mQv>|XN*!svWbn5W^oH+V|8R3&XQT zPn;e$8Bq<&PYg}&RT$glBbU;uh5`QIUJrr=(?rrky%SB#q4)F$eepG(H#&hA%8qz8 zyjKyH7C+_2=1q#sU0h@@d4!#3pyNu_Cm^=$fUDISyB#q$h%0qm0S%;8kwhq@HXd2Z zLhu3J=>=z|A@kV&_nwsD<7UbhSOzO;u6jZU_KP9M@M@i_q2Q@%!OV~W+IGp&d52O4 zhp4w0{UUb$<$?)xIBRnmZj4(d+eH)@(G#X+nR@Wh#FIj7*h)LC1c6sL|KkS8Fl^dxL7#V_Tu;LQ#9*ae# zbm(Be;i21%+2f=UU+UbzK)9Xx8s{v zKCfsCHKVzb)SvNvbvG(A+jy17Bge1$sYWOlChq(i1L#T zv%IrfF-bkq2~uc7rwR>M+hD*_IAOU`_nf0{07k`LTMdk9`*bpN-WUBd zaF^*KE6*uE*C@`#C+nnp%!LP#evh~Aus4|7Rnj?m@t|;w%mBp*J6^DQIHX`Y_YM5( zwaNiDG*KAW$883M{^wxlq)4E4NqKdXG%Z?iu2&za;T>J_KDWX(viP?t3iyjH@Mrgt2IXOydzR z*_{KDC7qnrE$O4yGAUpSj`_c7H88{sFK6s?hU(GuIe?%5)Ud2yFBfZ6@i#q?7`4}J zO?gJ9KOH}k9p+fTC9+jiY)JbjNN%5-jTBmVE+wCKCt9+t?#R04hC>(SB2XthwdTNp=(mwCBK7Fpg{Sf+5y!vhd2+kuhwjN)=QS(d)$XshPc> zBv5ir|A0||t|zZ$9gHmY(DP#^*2!Glw3Re({aXqZEF5wdtnNYR(oc*JC2~k89);DW zTvcgWMAk~&`x49~?X=7~;gBmFd*-1)@iC_vZNd8tgD+I%<5g~?sr6C95HS`*puyy8 zc(MEB>fh(inU7cbKn&^S*AJV0h-AL$!n~kMd2nW}lVTLe$#f+Kq%W53>wI!f=mY_A zt%=D|)|#z}u@=^1VCBh~I2?GDNXMs<3ZccA-AO%0Qd&)e=)n)8>V#_9SizSY>L?@? zHIUK`<`pziq`^_C=D8wjnT-2m+`uA+;v_4(=m&0!TO)3ns|ab%N9cB>w=o3BJ8&e~ zR|ZYN1-VzDXAG?R)B;Lv1G0Dk8mdXk#ND9%J0TZWkODNlT@%UJ|9Kf_?Nd&rsGRW9;&Wrjy;IT!u!MQ4af#lrfTF0Ng zZ{?i)ISxLTBd5DA=hXynto+AO>J|pJ^`)J*&?d8;n3wyFP&Vh)&7poB1;Md$a>)); zxOk?jA5QH+fkM_V@cT*ZB|M{$dTgKKCaPsoHKbq z|6U!}?ueBFk#s|)+8$#y2d-_$NM2(g8F|1JAS^b|vsn<=v5anro+SI%yNEj&sM`^i zdWP>PVJoKXvNe$pbb0*p`&w)($dvcNrTXRh)kLI_bR_8k89C zRP7e2|M}w1uiVZ0wc?)CcbBfTm>j>}%-C_J%taYS7n@@5*+dMr{&D?z)ag{5!ovAM z_Se|a15~%_*l5cQXae}NHaiRZzdG@bN0rVS-CJZDuH%xaE0^y9i=Zq3r;4eo7sLE~ ztKBIneuXyX55BYQnk|-HVgH&Rj`>gAz&;T zl`{Mn=)YNa+Bd4kS4RBiERLboUzfAR3ycpY^rb1`(+3=&8L}Wl%;ob`W1V9#FCq=L zLKJJ&9hO=z>WqBGhq8;61zB1BL%I73rs_MDck10b_!wWP4#0L1;yzQK;IE5k0f&8d za=UKXZNw}3g%zVd7wZr5dH!fb@*gOUvd(i0V}yZq1Akcz-I0tmoX!lY)x$!Mrx7&d`58@dx4jSG1p0|aSQ9$& z=`2M^p|vKWpE-!6Ezbhw6K!1PH358tmZr`f{qnDAR}59UnixQ&rKq%NwLJ#xQirca z-?%rnrGC;5u)2ydlU{sj6%i0nNsRX6XKy-CShy69ptuPBr(c{B*?V}*?Ntt-#wVu$ znElK7n9E=E)LY%-TKeAir}m)b*=)=6gsBbi(nGk<*|`s86wFoy79FnRIni{^18~wf zD&6k@l{$sZf)zZIm_MYu6U8!M-h9s^5+NyuF*dS zS08N&y;x*+ei+@lLJamS`KzJ$5giHj?SqhgqN|a0`hMbdf1+xzx zvYmS$a5eIYu}6dF-WO)%u`$sd5HSt4f79;QEHdiGiDk5$=x$IBQ*;8%Ut)@ z9TB_u!~NPtxc?(%H@-D;i_z6t{bc!4hFw8#-}30}7ve1^Hb5KXg(L$OXV{eLf00q3 zNRp)wxKSVA_viXhxQ{=XXR&#q6~y`q%smtd%+ySd2DVhPpJ9uBK0J@KYm%A)){4UQ zqX$rlMCYcLiD6q=0Bp4$_Ut{UGctQsl^KA3w5k}+`8ZFB*>|P~CrI){t}62h&s#X4 z#1u|4KEZyf)iD!a&zUOTey3*p4Qkgmrn$FnetE~;T^SV{=u<}f#5(qcjS+v3AiSwk z_`-!2r49(sLA^xN=x4raKXRmlxfWk710NO!Y}OABH2In|%vt*$ZaJ+#VHOQZZed%*{WTJ?p0L3 zxF7F{gvF(sU=SLT3#4d-l^S;MZ<{U%W5*E-qi=%S=LQ}+_9=L%@83Sb(U??GKAmXl zih(;#x|yGrq3PnTvavS+Mii(84qsiF5Drz6Tl$lU$F`F_Z>ss`?`>jzX~{o59yGBK zu&oQf=$iR7#$SIkz0E)tW@kedNk@^LEwNH}Z%l@aiS1K0*oYO#hMc$9|8FPI1(a?a z%0)z?c-@-H^=FeKBRS!(=9LpD8S3H?iH!R8?qb@kfIX0OEjw)4D|7}Ln)U(AkSG32 zxmREnG3?m3@gXB5Yu;4<%8!D!MUyJ@A-LI|T1+6m`CKY4ug!!SHiC9B(3t6OsE ziO!FAkM^t)YkH|iVa1crxoFhrU=_1!@c0>1f1$5kPMFd(DysCzu%^k)XN4QUH{=hu zwMiqf%h_UEaw8=<(9?ukz4 z5f2%PJY`hr_W@sZ%j!foyg4UEl}7V5Tf|`tsp{KZ&D_x;o&5{i)4N`86jui9^@?>c zKLyQ;mE**IoI`+PTcP1-^JKi+$WFzao`X(!Bw&s#XbQ{VIFui2xa7mI-v;(x>T1)5<5v4bub1G4r%sft6s zHp;tqI&4hP-UF5Z%M*}L`u}-)ANVRjnn2nb!ZHGoboh{i|L!9H{I#?<*_5K%y{2>{ zqTr#Rif-+j|GHw2VmQ;k28W$u^Tx8CP-nw;w0dp2R9L|`OCl&I|CgL{95o2_RUoTv zISf9ci8Q<zarkajxgoyS zq~*t@@-sCbdweSK9JIQ%-+gu|6lh*BuX63vaqsrh8AJ#jP5K)e)Xr^5oi};NmtrAC zh1u^9cSQUVB}V$SUzFll8I45w!F*TPMWpM$1Plinn)v$`5cP}#P{3(k9l|}N>2YF{ zly&)cM^Cwa8wYqQ0?BY5|rjORbv8MZ^M} zI!lv7Ngqq|KsU_`M-FQ>B!fA=9%knPL49;2ZR(AJQ{BRtXobj}o)&D=66{%_t05S}s;pNb+xC=sode|s6|I_&n8~`-k8;+>a@VNKZWd81 zGzK4z)js(^bpsaI3hSO0G$fJz@C$}*Ek6*$4(~M-TDCkvDKvRFi(`G$n-xC3pp@1n;GjVVqQD0ej8H6x)gr@TzEqCKsghBC%}z{WeMeA=5#Tdktm zj@$-hr$}K0y{Nj2CvpaUVlp!&SGN%tx+4dYjhPRZ3MjO$jMjCJ`G|hIY*<^s#W=W~ zQrBq{#r@0A9?N095t#lp+|{TsgdvJVWJ#3aG` zJM!S^V%afKeGOTa{K{sO#f6g3foSh2MMX)@%1b4*Y&9y%iqbYkwN1!SD$2v+;$EhFJw)u;GQ|M>pFV0s=k^CtTLG*oycMMN;n2 zGNvC5sI2h+QfClK!`RvQ`|vTe0wWh;|CC!9Sw4B~wM(VQZs3TGUYFyLR^k1gylsco z4N3h#{JNLmxEL3Q+j}M%XZ48^|Lh!s9B=(KPt`oA#0Mir1J2vU*YXyfgEhk?eW7Hg zRduF1=9=)N-*8R^HLmx<=kXP+?c~(=LN2un)d#r);WvWG5dI2U@L~)&k3QwHf|Z?% zdINR|TGMf|5iOIv7Z>Nn8O{5E><9us`8gTTscOq3xJYx85)bG#s-boD^y(aDS4bpY zRHik=S!W3y)e~pt?R8+1-Ux{_Ubt8shaO8*EoB8igSCF}Z)F zvs-7?IvW^ngcR+oxpKOtusTB>A5?QnygN_=$`b*-w%|NRyA_z(FvnwgKy<&1e4kUFW)|Z}v14pJ(bwfN8;S?R^}x_9VqO;vW=eS(HsU-KyBm3&t6^^3JDO_6tyES|e6=e*vqWXCu#o?3ul1Pv~v@@ayKhN z?uQ>w{0K!w5`R^2<=-^Jzd(8v1ARq$VRT8nmqSq}Ndfot{CRF`3U4<*rB1@qB)K1q z#BA`xS=+pHpc~bRjwWvjNnavYK#x^;qx2m|&%AUnNrsP%h)kN<8%r-op=KyRXO*nC z6~XT6$}>JCvmme}QsgIyU~W-x_h(B;Zs~L1F~mFatCRvs&bM%HRHp~*vup#QfR^%< z9v)1DB~;+l_^xVtSpe#f_D($h-o%SfKSLX&-{e<#K6qt(1L_X?6v(mmF)^8z>UGJf z33J+~C#DOw>Y)*m0vw(-=FS+GK!#0IeXwK=OwU+7_6LOFIR!s#B_hEhYSqZ_vZj`D z*qqA!)e8)DJqyq+ZOGWET9EvqDJD+(8!iUfa=)NY`BAk{?$v|9=m2m#+OR{5&}T$M zBFbyM570>48?8{cR7Tpa%p3rp33^OycBsz9%+yo4hIiaKbh}Vpxo&_JU>SEubzrCu zC3N#QilggX7@~q<`~p0C1IE1*RriMtnoNdvrQUMP+sOf(OHp^=RqEx=j`*(*%Qs#y15^sOh>fwOpalz2LETBuZ%V4@OL0bRv0X*UqB>8`Xz49p36kN_ZNom4K|sYW=;V5V??k)FkJ<7Y9)eGb!=AcV+zf4f~Y*{XAJ1E+D4!qA*C=$Z)VZg{ZL<1 zZANpjT!(zhrb_WL&1#i|zFUSGCdv92On;+RZ4R>W4Axa0hPrDK?l00a?9abe30QRShOBX_ZL z@ZMnmJ6g8?#!)Xmq%K(#lOvp#8lr9PXoiMuVD?5C~HM2Cz5 zNaM)>!mx|!g!I)0)iHS(&Ut8%_7M<)t1*}&&(`u)$?C53+)U?VO3IFR+!f_dD6s?b zcNmnFmU7pf^y5e<)3iyF<*--6dknbw%?2o@vf zsd=2QrJQ8m6P|&%+_jJMPpe#L?Q!-v`XnurTR~FyRC+JFfUa2hGb^TU5{~Ig%R6Xu z9-}$Z3?Hjux2en#q0=dUDUJF><4`};q^Rllg^CO=lg}G;x#VZNHK5k-vaYGQ0o?Mn z(s&oX65V`B4s?}FbVu_1N_xHE5g|6|E3|`lriV%$e~RIuZ}x6Iz8^;gY!_>@Rh^u! z)beV^bQ`*$;D8eB^0YzJq%?mQCZ{3WKv{z;O9t=%r@1@naO2@~QCC8~>`YlbK&lAb z%zwn+Bpag1dV6W$Kwi&^=6myg7Z*IVcDU}q9K)Ta5KB=dSq@26+d4uu&far4=g;9)LlQ3 z&GIZFw-yUWnj#~Vs1*SgXhnZrmB~2eMOQNv14qUkg$^JvGK7V!&+C|%;hM1$62w)8L z>3GZkp}fGg;d}g^?VC=d&rJ86UADm2iNH2dU@PO>Gv|FiQK?OeNiZ=wsN-zP73k=V z#g5~~JCHTt|Ih7+!J4oS49>lsFOUq%yRz8g(sxzY^D*F}w9weKfr{Pie0gcyc5L9C z4X*AQchO^LDs#Prf66tzf2@1~^;3q?=z%`#n_ut3o^?h+h_U5b`j+YJ){-Tx^G048 z^!VZzBOPF3Cr&^O#Tr;;^UrOce<$A=s{i++`A|rm3H*c8PqU49pgG_D`qhEKNIF40 z3((1X#!JkC7>SU|GGu})gyHNGnBd{; zX=Q48u1g*B1KM%Jf+%{LMcSuPq%ci1xh>NZUm&4yf(r=g#@xiT-$CGC)%;=#cg3e{ z|9?eg&p?^tU?|mA*@yRn*-1ecq$T?QM4BKZJCfqO!M#~!Lr(1qmFlg8ZR$jiVr0fU zEstpt+HPLAsv`2jeDzjcQ2hIGI@3$jaymZ&r5XqJGHtXQ;4msg73~y)VeXX0UAFkz zhWe*F3+g1(W=xZ0gWqFsqTZvlq~9KiV!-%(lZzWD+;`q8xnsa36u%i4p!9WCW(5Tp zh(pyGb2>}>&GCLc9aT4CxEM{1yrL-w>9t!d#+c?EVs{gC ziX24}5T#pLJcb=Kttwzd0Dq|FX{+ccPCBoEg51(x3GtoUQ0-YQpU*;vs*%53wKTp7 z38&@Jpx&z{2h7a5KQ6WP9m})<2$NG;6PniTItJo4iAOGDujFLXHit#T9S$dAp{Mhp z|JObwYjU)>2%wzasVNMEl&2Uj8sX^KOvhg6IFUvhU*B#1VsgJojS**ZI2<+&SbKM&_dUT_Uc&?2wolqBS4Bwl}!}a?#^qQ6l^g2sWbRY6)F&IW-|R zpd@kBqF-&ZFd$iKc|wI9Mx@)~hBXpJhsh5qdwva6*${}{MayU#C_Q$(8lIDJO4Zl^ zIy##AP|R<}(+n%D1M|m8%i&$}A|l{P$+#4;AZ^_T#eUbVDZl01&|e zZhqnxYLLRxRiIxJ6EBp96^<055+8FN9r+D?l6L2S_D;py%d301Ly8uto9%O>kb3R$k;lc zkHdt0l*gOfvA}9t&42k?c1Z>W+hC|c2pz>{oT(Ob16 z8Yvyv)oM|obJI=*CVEN@IO?GdnzV+1glV=tf55xXWI|&A{!BW#uR8yI?`pwqpElWo z2A?6@aDuK00JjWM5}YcmdLV|5z8VOz&nf7Yl&)x5d~bkB(@W_3cYq>D*LK#i6v^-a z8qhiNzREn@FELFRW zZZxFH0}b`z(Q0HmSav|FY|T~VgA5Zm(g1L%9J(cly*-w+5sD@c0JV@xt#&+1jib4FZ7SkI0%!dw= zXbPDStx_MWD+i#5eJB2K^yZANK7L*+U=v7ezJ*_#E;j(pXRD*YnSBWr5M&hiKxotb z;6;rRDZdRlPh#SsEQDwO=th}l$nOF@JsuZAHdWa|hg%#Gh0y%k2D}SCUw+*(gy4rp zb#~efa1JmqI+W`~Xz**h|2hF%^AtD^v#)tD5ooP&7-2A|>vh5*(w2BK6OgRvPdEp^ zyLJ3}Cr8-gcD#V|;AI%sPKUp_m6za&8^v0|C{hm;R^I)GIry z+LDtl>poPLGqycOgxplg(*JBj2+2s9YP^F!5jLD3j4RGhRC}X_?k`fFDMaD3?Y+`x z54JqV*50D*&6=X&%?v<4UAbNPFy-k8YktaS2M;;?dUQ<#bXv*VoM9tQW(O+fB>Ja5 z^-N3wx-%cRKFI30zzhlw%IZ7UDL}7I4HeydRG(3k6oi4?Q#lg~(|WpZn!N<9R2VpKgDkBcoz6lQsfEPL`X_+I<{jM2eff93;|MOoaUY@r3xM94+HiCq`24Hv-V$`BoIVq zC|90$c!1;`U`Y7zUfgrsuvV_8u*-_Zqt1K~?kGQUt5+{H#km*;X>;A3tw>Ehcm^T? znA!}1m6_Lo%o5Cg8{J_f-hw;B7`CX_zpPf}S~KElXq9fk_V!cz(2y)|>OBFS%}QQ| zLyRK&fC6lqkIy@^kHH3PIT%d3DW`sQO*oIK8mFbMPUOJbJ7V!@mwfU65`;gE*2IBX zF42XIPptkFg{2lf6;-N|xXZAd z%C2#N^uVmAUrD&TmUkC~rMy1=w1aY1Y#XI#MsXmSh=mn1kdS%t&j=_^qlyLdt{%AO zXVia0O{?zQBGG2*MBp?40}FH2&Q5;E%frE|kwTWqXiEFcD6U!H+}z3)k3g`fHqfW8 z8e+=S$>B~X*Nb0jCYnhYQ^<{e3*-m#Z>Of1ABFmrcVTBm0YEo9;J=~qZY)f9hMv2G zOa6lHK4~s|Ze4e+TeJLu3?;Q1CVjY!L!9rs3qb!C;LngwQKEYaD}+xUJ7v5;nNH+l zBz}we!@Gc1c95K=z5MQ*(eTe_wHIb)cKOqUIbh71Kez|1J^zR>X+Mprrl~d0H$N9P z9dNaBU3Uu*o0Tb-FO+h2e{lQEaPAaQ1nW}UuM=>M6G8Yrk0S30j~$N#7{u1uB?+f| zc3%e?Gm%kr2r&3;+KphajW=pqahnOqEfiaY3B;@n%a?w}8Dp}blm1*(P9EL0 z&S8hYEOFy0mx4TY-(lwro@HSdKaD;r;%HAl{AR>8YX+!+PCq5Id$A1BMg9$OewLhm z0crSn?#`7@wxaVTe^j3TqJFoLWxKX1;fXeGl|8OgDFp(WZ38S(^W8awvmyyulmL^o zjvvRmv^(~yRe6Uv@>XfSvOJ&pNwgkbpo3#%On2n{&URmuz!tgT_WDb;ipcHYDBJRX zm^gxIE;1$zft7LJcU%MAejhq3$CWlQ;Ly$wqh4(X7vc1NralX|-ddwAZAD4F+3Xdp z^8OH(@;N1Q8M5#ZWVv-~Oh4{)BbNnV+dFDtEhNyCYuWdA-{4_dA;WPJ0&Yxrbk|rd z7X}2S%YT$Z69&gSWDCqe)X8{I09s$I07s4d30+Jp5|m?2IIhtKl0&n=>3j>@ccd z0H0l#eIJ7=m&zs25`3uBMUXb>-A?~G5y$AFe#ktL^k*fsaN$Xr=((8`q4@X=LH&-u zk8bMAN)<^PLK0v1{&A|r@W^Vmu~W$u&Z{|jfr{|cKT&`dp}!-Wg=;LNd2ds8ZENVh z*2Q|9xL1*fql*iolI^z}RjsWMue#t*g_M1O@o!@z$*!yh=-*^ zrvb=n1VyPS6VHK%$o~#Nd9E^Wr=ns zKm(y4IndSc*J>DRDxhWfm6F1d%;HJLR=W!;7&3->{1(0dIDSq18TU_{cf{es$xBV4 z59K`B1=830BjG^!fnq*H&(_6Ikbb;FL@d`XA-@s+{K>BTT<56?`C5AJkhNcRmt5*$ zVFqQ|g?H_8;fL^SB}y&(;oR=wr}P|z*07ihN}Xw<-oC_F)VlYrQEBLb@zKX?42E8P zPn-Kdk^M3V;Di{t$79wkU+?%#U&va8>v4|``EhX`pc}zqV?3vYILB{A(Pf7svt*(5Hx}T zGl83wPzkumr+Dl-)vhETV;8Tl404n*aer8~d9{cDxmE>(yqM*p2}xT!iOM8Df%ZQj zch~1nz-ctc$dvs-Rc|Rv*oHD9BP#PTKVIqc#Ghw;bS5~Xh(<)MqsMHagAZ~C9nfoS z%qxsn1;YM6R1Q4E(%DoLosPkc<-Dv+*qNWWO=O6iV8t3kX3NxvC7W@PG zSECj53q%Ex*i1{4$+;^)&^Fh>^43ibnydYywnfhHu^T8ag@VWm1^7afP64T2gcR^^ zju%ns@DL5;@9(1^=V{OiK}q_fPlLY|3jsw72?!m4GAz)!iA#=AntJwq-^NpIg}2u? z_Ja$-hJ2VR3_YpA~Egbj%J1AeV0?Kir zxdBt$#EW!E54b|*%7TFqd7SG%c+8wqjaR!{?YAqNLKbSXjQuxZxmD(W_2rfy>2@t;N z)t)K>PmcILD#4m#H1Q|;>bij5bSiFF3TEbJWTJj?p7^yYrDxsG{udV2k`uUkh-Am) zE30zyAEpb4_C0$OcHZe{lI8$<5iwX=FyAOx;)tt3M+W@Q@%Q8P}UC_=zG_-**q(|<`LH;WCg4A6;k4=@cIY#wt zsos+=$~9dlLW@XFU7q2F$6_Pj1^67K^w*>!@#8N$11>}w7zKBrn=`^R`2^TXlcD%W zLN+}HR#LXXf;Etf(j|+zA2w{v+{#EDs7~c3bioxfk#W+!nhia~8=2=T#)fHQK-~0G z1w`Im2K%cQWU#Z9x8G~5yp#KM4cuvLnEM}9VcBImE~R|)freSZB*z7Y1J(xR;V#&c zUS=r0I%j8ptnyer6&H*U1OWJ{$>2qOs++j41%+5zI|(5vYupR^Lk4_-t-o*>cE1*0 zHJ+5qY0OH8R(53h|9aa%L~8X~T8%AU^1@Bt1h+3!QsLAa2UIt@ZnDWA0|v1Uo(VG1 zxDoq~6^=(F;CjEY=Zl8)?G+f?(zGn7-$YsX73Zs-`a(qLYMPYm3l5^}lOSdauxAmC zkYC)UnwKTdt%j-1Z7mVd+v1kV8gQTjeABvTQUu>e5c;CW*GInZuiMlbHb_YGt+4K* zl$k9UAN88qW9`#KnXx6yUrUMs;MSo-e~$(976@=y#gWI(vZfAWQRL7qxAvpcixhChLoc zvDN{|BisMPawsEIXG6}m7WS754+vn<>q_B`lpu!}V`_%ZO7hCC^o`XfP{S=!jf2Ho2c_-be6iubp3Wwcp1XEa;YWWBhdFO&g;7 zJ)0}@+i`+K?61bp?bh+iy7TVFfpboS&oVq)k~it(^KW(GKtuw^#LL_4@?FV$lnn`b zI*3Kt@WnMPgHawJi<3)RLJlWy5ga25ihKwyF#u)Pso16*V;1rdjoueja3(p>r-JKj4LS#*8_FDVY?fyyA}TRc z?DD<76l=8b-Nn>k0e2BkS`2OYDel;egmq7X43>Z@3#!|e?p!ao$s7GBqB9tr_kI}W z(%x$e2qs8}>aVNSdvR%Q z`7z?vwQ0p#hnx{a2=R}XguB+jyG?78p`TN&- zCyN<(Ys#2qimA4Ho*ksRm7EaKHO9=9&NmG8oY1!OeM@45b@CyQdV9Kgj0_f+mK?-l z(BZ)G++H!yzBL)od-;VNl?-5#UxrZ7O-`04vwRjgwb3Z@`<*sVQ=Xi!AVFE1_heuT zfcZK0^LJu%?ApN*jFb77E@~HPSR;yO*$O((%`Er6JanYc42OvCQnep7Zp%QFjbW|_ zH3?(E^W&96aA2z3+YCt^nO$x7tB9!HYHNuBIyv&BeDT<9MFMQ$<<@tZ6|SCi46l{~ zXmb7JlT-2T>yD`+4DmZ1auMqg?}#o{8XvpkSL%nv7CUu7uDBe-%Ii@ zITX2b3(vTfB)oa}Wfkq3)nq~9Ztel=IZ}ttR93Ivn%@E1vg+jRAIJjcb}8IX-70D?q#7 z+Otgur(lq^1D=1F{^FgOQG_Vrv7h;~r9DU96eM=wcw(FGLyW-8xOpdHt5*@oR|7LF zb7v1f#q1eU5t^ztTx(2F6WT%~w;B6Axb-B4dsSz6K45sr!Mig@WT;Y)jw)WEzkpx9 z+oXJ0JixiH^*Jetb`OiRKSHuMD6o9urPQukhlTfYf{F}#$ECA>O&!j_VixhW+dR*b z`W$^}t)#hEzdyCi8lT2S3o4d--MxAm^FslH*H=M8|9_i#ZOh3$;mU;Kx#o4xK~+z{ zbG5<_!6-LRyN2ZS1-dD((r9-DO+UH z*zl?NdfrH&`8m<%5k*=^J+!}ucO#|fEOL`@3}UP0wzzn6YjmsD8ME9U@&rO*0-8@=StQ?!w>vASeKx|DqW`(-h6T!1dzxwjh^u?6S>;I#H-s6m+6i@DI zQhn6$w-a#6B$?hQkGe#3o|iEIN9%l@9n+v2x+x@j`U__s;`b6G&D!{c;EWG9J^o3A zpR-A@Acb?;K;6rRi?~{Y9|1~rH>9r9t-o|tjh9@$jZp1^&hpL5G>|u2aUD|(a}lEZ zpt@gJ-UW`WrwYZaur8r{BhYZwsZy?}AZO;# zw^Bf^J`rmh)V0+!?}hD2%=Rw4R%l44O08zZJg44`&Ps8SA*7{=(^&6`^HOa{d$A)6IOkChDYsQhRFz<)|@&>TMQ2Re(WpsJuz ztpazZFQ?sg=kp_00Zi>Sd@+^#s#FrpeEe#kTWLF`z$1LSPu<*$N*SUW6mN9&l=oY! z?PMu(!fvc?tlNa8N1kP>(;=ifM?z?UnuFemct*@Ng6&Y{exdbA{Kgxab4-eeImEP+ zMEbMb9GA15OV72c_s0sYtddVRo=&ts{@}Lb6}<3HeW27>yhO4a&yo}{e%Cfu&x+v`X@zb-E zPRQRhZbs+IZ&B1Y0^#3P^L<{-rAQcL+*T{c^y^rpFx&6+bXxapb`G~vI$^i>+KipN zRf~5EPX6!F-M1edlP1C<=(vO)GW1lPmF-S5Rm}XGl?HviiRCl z2aUYCA;lI$0UbE@6bt5M^q+kDqqTi!E z;sThG956dLuU^5#8?-hys)B+q@=(z9Lsw`U(OO_C=F2gwy`?a3^GVMB|C-}S5&ZYv$JaDyPh}MuNECf=0oP5&P-*t^7_8(wfOSMhZAE+tU`;(-;7A0cQw!2 zK)HrU@Z}e>-GKNUoqwf-O|Ww-uX1!T)+DBIJqyqib_>I?s_z9F4gpz#8#Eih18?-| zXAzn^d%WWYgpt0A673Lzo{!sNY6*}CsO^}p302jf3xv3qZgd#BNx&f=GEu7qMS%$l zI~O`o2%V9hAwZ~w2F_`s8v?O!=rE?6)}|mh4l0E!$z*C2OCUIMN}R_K(_nR_R)k7; zJnu9L>Mk&jxMxmy2PEXxXfWMM(AZ^&Ik}$JeZL7UcZll-+KhAuH5IjagGe-ejZG9;K4^eeu$ z4mpEu>esE~(Rjgu9R+Z?;yGi4WGsg3A;{XMD|Uq_)DCqI$ECTb3B)Zrr?1zoxF&bn zwl7j77Y*uSb)!qSa(J%UD^gG6fp`&#I zor!bg+3`;NmT^v{{63;NQ28^90p5waTVAl&_Z16F5vCriL1W5^o8EkPLM!Z*;!3Om z&iLsBNuq9mD;HB*aR#m{578Z+iwk*0UKf20Buwlblm9XYNaiDAfJDl1P{JK$@>LYx zKU9Um1pW_&TNW4c{U12JNHJUU#%e;A+}s@^twI@K$;8=6jkuK+$8V1$Xd34ie0*=` z+p&%L036z<=H0co@#K#lMI6Fa7bKYcIisG<5b~4r?!p|oz-{sbN|PCmbLa1Zep16# z5tm{1&LW|gra-Cd1djl(A>zEk;77?_nQa@sljSkmw1N@|i^K{{Eg8v{sA>eXgaFIJ ztdkJC23x(=7zT(L+9V$0%Clm#Uwg!!c~1w4iWCzAFosX$e{sj=6H}4x^{+&qMcooT4t z_yikg7{?A@QjHO<_3K9G>3+{A{vw5#8tnOwp*i_bx5~-9LbJ`fo?xnxv zrQMTS_HZhZKxD24Fq;LUb4M_nWB!}Cdv>7={=3Z?TudVH_It@(^VBrZrtlHC&ZWCA z0GDpTH34qREP^`VaKn=YzVjB7;A2c0^Iw(wjRoA7JdmsVCMt|%6QVPbJ=9L0GFK|x zYlcH!WlJYmJ|Be1HZR}fKt1%@q0vY%5^j5FeKV0^sFIoSZ**wHj07S&R~qXJJWuV&MixYg%K?nj1s}Og4xwsDJ{O2j!zA(u8%wdO@6kyTpeY1Ii>AH;7pdjam=IkbYV!P# zuncz6<_)u%XBH*>P!}S);JK6tSIiq0`TPPgW4GRuV$Lx*x4H|#2!dAb`%||!;@Vfs zPfEF?O5SjguxZxqyY{b8F4Ap%bu{~P&<~cPP6|X6ShR*md1W_Z>}Oo@Ulk}=|3WP9 z7TSXOJ!e@B(9m$!di6jdAz{g~B>q2fs!89p#<=Q`+69~z20i9|R{Ei4NRcK$X*P?f zVK~okXg1d5>=-N7<-)wzY9$|M|BM10V5xgVIs2bp>U$Fg6+4mu$b-Do*9YdKA^qP* zHGYE_(Nlpajnuy*g|bCou&qwYDUo=nITP^9$3D5VdVg6}I-8JA@BOQq@;Zo}a_}Bm z>(?;@bwSpUx>=8@&SA8CHMql+Rar;jAP?O@dWEEv)vToC;IR({#s)amP+xd4)d!D#>6M{eD-=U{5AL`K~&i?#O6n1rFdcuxscFL{w;pQ=%Lqk z&^0n)cp0L5&E$!@UpJ>B4K|QPqc{9hdyr)`20jWSJa)&xl+6TRy{S!CJX^T>6I;2t z2I>3V-gl~%rew?R8XI?4bt|ZT?I(byq#{aUF|k)tTNbtChws10fZfJb#+4zauiyRX zdn!d$hh|%C`KP0oP#+?tmH@e$Na%Y>0Vi+4O;k1c^}eaejNi}+RwzA*UhXj(n~jY!^=g_6Hff~z_fV+lIp-}Gz!HTnW%slFnxRMRyUy8X8b z{Kciu7+*J&FZ8u~g%id$DHo1Lg>5CuAaHV7N97u3H!1ow3+T9jz%-u~Zy%lUi}y!k z0&PB5I2WsWmgJ{VnKaMQ)l{rvfusnoFC-x&RRydx8-(@_zX)x6*87=Dfj9}J(2I!tRR z`x|?P9Vz_-}G1!m!zqmY8vKb6$TZcNyf8%#vr>I zcr)Q!_bG@5XkN$`MpNgw#DUWC{QBJ()Z|T#9DMaI!OfyuIB?;XzIrN~`s%^z&u_p) z6TYv4d#2sA-sdT=xW#1q!7tB+MRVdxKcgFQH0^Ni6l>PDdm%_Iodmx(doyQTOI@0l zjp=*w`i;06HmW^c1r}^^TFzoKKhqdWe4Idv+(|1&9R_x>#w+noh#7yCN3LDV@9=_s zWTnE+=>4qE^OwUUzwmuGLQWJ(s$XqyEU|0-@fi=4+*nVte!q-fmHovc*HM-jRH)YV zBUs!c$PS?89{E~P>8p;Rl3#}lFLXd^?r7LP5T6W%uj_`GHN?#|xITH(wvWPs9nQbRTs>R10a z1tulL7;raXaZgb^ou(U_IAyOe#IvQ%wXBM|oUi5ba?Q|w1Zqe=M(w2nXQz~4rid$R zteYd$ffv8vNl|kRss%>GNqV=T$9RDFWI|`RS#QMUZqLtdvI^8S+AZW0nlCW3t$mm= zmNpl++0MNZ9x{O)7p{X=IIIAuc$Fh@OlkLxus+epR8`MkA6Itgr=tY^Hx~y{pl(s0 zuZZ~H984GHyLYaeOOn^jItGVxK%&J=LjWJM2CLp*6y4RwHrnr@PnZuZfy1>-8!=sP zYndc*^VJo@ZhFlUs9)JXses~Z546UfJqux^ZN8ni0bz3$l6vp4^$MR;Q0oys zT?r<4JLM`!{K;j9echh5t|%{PIoA1<3-O+^HWMStFdW*YbG}XTIyU)$gm3zgJ!K}iNEI9aKe62@W!DcfTmqX>EX0Qx!L03r+|4GC!Za02mAHnkmB4XL!@SXzX)8H#$ zZ`7jI;Z_2dLsGa6*k7Wq`I)k48)PZ9Y-XY1Y{=i{7c;;(me~bq@|V z;Ea%1ChlHchw>q6gUje`(asV69@Pnm(5q&`ZY-wzvQqDVdDejN=Sc^Fn`)D>DMOdF zA$s7ICh#G5qD^}}Au66+(pgrrLIFModub%fJt|qcsgATVX*IM>XP_8$MguAt-chzl zB2HcbfM|N=0>2{+9Cl7d^BAyR0VVqp|r$>e!o;0zl5Pd`+_JMk00_keJgP7Dtx3?fy^Z1NeRdI^+kTE=tD z$S^Yu%+`F0mCXs9dh8P;PJaUVHvdZ@!OrP1Y7ZoNbMV@0D`5|UrGDSF&!#>NpeYzf zpJI|_nsuB1-cDDrJHIx3NkjMatjXAT8$q+vkem$elJKAw-TSoGE5oCM_4yu7eS$Pg z#{(KFD3qX|l2w$E&W6|5(T9%Y2SET$?rM3RH=^G5vf2iRk=N5_!dAQ?z{T7;Z?Ce- zwvW1ZWM@vrUKAKQkk3l>^0qd(#bC4Hn>eH3% zcXsZ_(!xQH9cqDso9Ezef}jL?E*Jb?2{U8Ag2^$??M`PN!>`L z0@;vvc^6+?NS0j8(rkl}SlLNk^2S7J#qijcFY8~zzu+(de}lJsQ<71ZGY~E*gghT} zoIk6x+`O8T?2gx8IpQFh;nU3o9LE59g_JhTbNxP z^f^6eaOJS1-`jI#0-UQcgT88U@gfJ-S~ZUCJs&*I;Q_1{@(#v%k!S<{<^VmYg~A*b zGmO!4a-DiY6$G~-__V-B1C;XW@Roooeut*@7!)w%ibdX;&I7f}~eDr;dPQ|5o{l*7Pu7D|D?z}iY95;&&`-79y~ zUG}v}K~dGgWb5gH7b5sqyd~VagD5lTWl*oE4+FbgMZgZtJG14iJ~)j8Y1n(G6)@^q z%EH2GW&|RQMX!DeFPY=Y2%1&?I*(=*iF!r4A3uE{{(tK-b}(0+$oPv>+jk2pE|6+s z$GwjH*Eg?hnHi}|;kCN! zgQnt>PMVB6a<|5?GaAKf;lWEp*x%FQ3#P0j|KRpk3hDAn)xn7NuDuYW4K}qA&bAGe zy!GH*yOsEAAt4p@s8z*XpAF*uBzIS6fk)=3Lox0O1U88-E*5rEn>#!hHo+b$dfx$y z_K)X;5Sl-;HJNQJSC!zVM9)kSquqHqSWb>%W)a=n*YOS0GLiCX!L;lQ;fY-^Dxu4l zNozJQ0m%Qx(e$cxzkEi}v*DiPAqf#XlR>%phi79rdzT}r_@4sc-Mu#Yt4_rFn7^R6 z7hfb5!|QNt z!8|+@R9Zs`CsErIS|bRFd&pzb2e2C_pn`?`2E}Ni{$NRkB^o( zKdGfUhbltB{m5G4dk)(W+?3Ug_&?uJp_e z5G2Af^Wa=+Qpx6!(mMFlr{aVk%YL~y5Nv2b(nRjz;CWwc{k1|hbGd23C>X~5^{uYo zi4Yq7OpRm>x?vouPvsh&qSeD9swlfbRQpjKo~{;DEU%!OSWYD13|@VK%Duz?>--4u zyQ>)m4(;Px-W~pz&6nJ*h~6PPD@i)WCMrb_P;dHmGIJJ!;dDlYujgL&$)b_jxxA1t z2bZgtUnoqBCPyBd5+ExmVOS09@+Lx*+PJ?szPs`tr=nV5ER(B-PqkjTwKfFnq&XPL zs=T#Yhj7NR7|&bokR}qHLGR39%{WPml#r*pd{4aMp$o1y)DvAsArW7} zb91}|Ww^ZF2DQGo2P3;xD>f-Sc|qn!uKR$rE3AYJi$xX$Lhn)|O;@(wO(mmF`);*` z-*b2o*QmPpkGqJ-ylQlOUr*~%^k5=pc4pD8xF=4In`5~PZ%SQt3XqPdpzg*aC6h>?J=m41-_9#nrLDGys=slJGIexSRA|;B_frSvm#S zd6AT!DbgFEksJKX5LlIpu1XPmV*}C1%u=>SqAlp)xH?OEg@j|UNsX+;B7|(3G!`x z-A+&vE5l=M8wWm^UeB(F6gct>;T5a|-I~XPW zS|Q-_(dWyLg_~%wiS!3h4ujtgzhXkJ4;(V)@mnfH*@mTVq9VPrnN^`||4HXNoFS%# z+daa~IGYB3t%e|*k~FPebC6pv2D`vJKwi5AtNPjFhy6=^32v(jNU78ZMbM1LhNV(} z<#DiF=v^M)KV7GSsMOPYoUgbUnai7>m;i#5-m2;UttC7ht6VOo2NRDumkK{YPGzMM z>&N*XWpF^YXNj|B^^^B$c>kx;*go}qtEU?v@Hl3x(pyNp>Su(HyY2BlO45rtNn7f=RLkdX z$P+}e8NrRh>KY7vvay$~KfG&YJ<|~VQhEj{f+zmSnb#6|Y}AzWia+Rj+|fsv=cN9c zoP!E{t3{6DxE)08aB%|+INYjOJEn2BAlA*)%s6I`0Mk}}tR&DMH6sKRgON z8f;sL#{kEAxRY+d4io{r6wnXQ>m3XGQW#Hu(!;x6l+IrJVwz2&q2;Uv)tm8#A=anQ zzB-9r3L{^?>b3|cLE^oyiXHj|nV_iy8f%=GXnzp+9|lAVMVp`?wRA9ld5N$JDn5TH zEneoda=J@YY8V^IoyT@n-XU*Q9VLxM3K9L3<@c}|6-%CpsR;V--CLQdv?WOE) z?aAr=;XhT1k{%*fPHuZ#)a4X+4*ZYwzYbd!`L(G4qLCyI#iCZdNVnMpsptD5GT%+t z4$^Dx)J9?qqPQDvywZx?A=lGA6tzdL{<^ii|gdQFoa#^IRq|wPWqbCqJn2j`clgc zBf!~3fIdmAxnLHQXz9#Y`R5;Q@AI0)#q&NgEY}ljj#^?@+3WwI9FT-?5yMPQ+`2U1}3OIwLSlctZrMdsP5AN-gdl7Y*79-YHwt}T- z)mmx&E#f?hc>bI&1&c?L0+D;Q# zh7f$5x)`nNy~a{|v{eqTP%nQzR`;Qc7VJJ)L;| zSW4spye3|tj4Azh4z7+wG#sWEZ6KfgJw66WMjo*VwoaAI5^VMVqYr4rIU$-@!{Is9 z?NI=!N?O%IO89*$sq>7Xxa$JuoXbuU9g-=cQVcJb+Q8cib#27%YBAXIh7!PD)BgQG zu4&x3#O94|D7g`WmWR#RTPz%Vgj>jnR2mI9_QZ(nyvC`i_ny)$u+uQ*9)jhdJOp&; z|3*ZA`0cTCIjD*?+#uoj`?DzN;&(zY$yHE^FLUBLp2B&_D@`egusPVCSg$dMxVbSF z>XV9WD;bDzTVLVtzb=+T@Y`j~#*IbTc+4Mhrua~%9MO*I@i)xz&d4oOJk{xpd(Vd= z$R@BIpXc;E$onuN_joleKyl8)BkE@*Qvmgo0HY7^n2J%k$qq*|%+zyrycUScUR!8j zDE!2I5(15Ron4n(lZuVY{?W(~ixC@9kfL!-IM!76t?mpk4(s-Sw-Z3$bO^_Qh&BZM z;bRLnb>Z=Np9PlQVtA83K`0+~xJj+wDqJA%Kmjt*9cAD#0GFujkt;WLz%S0Yx8*Dn zwFKvD#&f>D)I&PcX73JgH&Nt`|I_P&kGL3yu?rChnKDf|S?C2=$I|Twzdkzf5DXeM zn|PE@p$ra{%ourdJ3fvDoWPA#s{PMtN=f2QXyT;wqbur6AaV%)#$pBFM%HTIPEnS5>ri)svH*3m*=hbcb)!PkDGM)tygdmKQj5W5^HhJ-lMhw((LrQ61)gOv)N zeQ!PWMe6|R_jMLl`|f~_o3Q3rf82+I{`}FZ_n&Q_@b6e+)q8u2s%kwftmMPYg5QFnaB28=KP0;u}blwQWt(65pX<%7p$G*-V?`{?}I_zY9ivdI@u56APrm1@1Q9_x)R!=C*y>aJqhh+!4gjm?^ ztem=q0XV@60_P~zC~O-&5C$Z%agyCq?==N(#=0%S4fiLm6>&oAX++}9794Yzy{#@S zIQobX%{b7_Jg0d?!G6T2{E(hTvwRz9b>p5(xtkYhYTgsA-P`~=I{$;S%~kmH+uO}p zbV>yVHEV|8&S$$sFwl0K!77R17&}&X<-$0kU)?KAe;FaVyr}HgoxKs^KTFi<1z=cb zsG}X9)qB`nUJ)1oelYRXO~sgT^dS%M*|OjB(9*LqLu0BeTqo({8dQVhsi%i@tk}Pv z<8?UcI<2c|26GT_iKAd~w7u-nal);gz;U?Wuw`1kEQ4z$=wKZP?J!Spi_27B^j_1RdZ59V$-~mQrtP7M zx1`O?y#bzSM|mPJl3-`bH9f@kVbpqG!L`iocEQU5*W~%40=@EpGh%Iq&ru!IreH1;gfd-risHko=Hej%vyaA^4;hMHPGJit{S_NfE0-@`+XMv7o z@UFqIW1HL7yn+}Wi~sVNpx%F-xISi~y;)7z_F_+Dqc#9QejdM4=l@5ob8=LJcH*Y9 z<9@l?2gZ%4*YW#+&#g;Xs$Rk(@HrqnUCCM@)f6d8tgNi)UG;_9!qRrI=R%!@x-tst z-SDIB0GerC6(N;dYoxYNEFp4W7JW?b_J1b)z$kBLU;GV;amCu+lAk?3$HlfMS(j02 z;%+@(Tc8V}J#0b+VZf`Tqu`suN$fc@+g@P;0`CduvZwn*C|S)En|o0Us_^HCJbMW) zJyJ6C?(gx@oAnIN*poSU%s~sCgR|U$#H~S|N;^*EoXG&3=|EB09A-WgF<=4UX6reD zX=olk60xX;-1BY0piGxn87GF&f_p0Y=I)<3Tqf3XD6Cuf*5$&~(;pThGpeMVq8{7~V!BIE%gKnfIs)M&qw zDc9W(UJ0f$tV*Gn)u8jqxdeOn2>3TgL-kuEi}O;m>Swh-C;kA1x1lodFDzotaqdQm#OOJzLeLZk{4iiFXM9mH%9 zRrk-HGIg3`DzE$n|3^-dwu_G8Z49w^*{Qj*LzyknGw|Biv851cBu?U~6wfyxeoifQ zitko}Izc3%HN~K+Q{1JTtX4sf)!g!gG`&%qR(sxy3?qr(J#|Ukx+=KBs;zGUVD`e2 zwXfA0HOP$auYBJe zT)%ER1romn7oliGr&6-l#GhAFbnb%UB|6@Ho^Rnlp<>i>8X-$Y;+p`h-Ilm&o$#tX=lC~Dawx|<*fH@HuD$9e zFIH+^^vY7bby-HWOrtdX(`H^m*qAcJU(ZcdtCu-H0&7Lk^+G=%aoB=#0&X-PzWK=Hb4y!_`*mzRPQ`&WYyAQrED0`yVv<%65iw>hDvEv7^?x+uQF1Xx_l zpO3saiCRgtlyZMzoaV%p1$^CbC%P%JAlLo6&_-}r;BE|_G1nId4Ixq#TYjLB^#;=A zuVhIbo%irEsWGNISbL-&$I#=)dBqH_dq^~aMoB``{8eyFNdw~~Kz7Z#>{n1u?3Bfr zJ7!yNpVT^OC%}}ykQ4&jw-a7sKWVa`Zg0S0>cR}Cwrr;ZegNb&$3{l=sN<>X#W)$A zqqa-28+eQjxXqdaDlhP*HSySo&5qi`S-V$?$+HzZW<5>Uu$O2WuUb&7TmF}TxX!rb zM%MFW`lJU!Bt9G*862rsDJkNhAF9sU3WVVa1n2W$4*VpTnO68yQp>Et4de|l>+Y~& z#i&j~qROVxb9A(iN0z*SKtlovL*3km|1)lgT0tv?nl#9JVjGDK1)EPv*bX!~G~=;v zs)AzTh7_8BLOQ@V;`sUACLDJ`-(lB9nS@N#itWzCRz6y|-e%ER`oiL!qfF9cfPrxZ zIS9~;WBgP}X2kR5Ov90*`4_OGG7zwKLmL#v#;c4t2Dm5(Hm89L1GO4JJFx&@ z5u^AntP8Q&MMa`&cn{M7v<095%j$PBHUN(Z@?dOZ_;|o92Pg&my|1NQFv*Wr%NkWI zr!+LxzFDg$;xJ{Wcw;gc7t@bsb4>!fX71%&Uot@3SP_Sssc@y94=h#Ae*x2eS({UD z*18=Wj^Uqg=!h0Jc3IJ`7sU99=`JBqlRSVDUmtGmcTsq!ILQa_u<#CXBs)de--4`? zdTN{et%Fuq(?{IDo%0+p$>#br=aD*)`4;_jAY|6X5@~9uc#*CC6dpk?7dtTlXHyPX zS-*y+@eud@Yjf<|i*Blj&fhs+^t<(Fe1jmB!-CVFc;`XqVoGj7k&$dIv)f}A=pzi(^(27c)ci0QYmN`olLI zYt5pkbVm8L&zH+q7|s>`h&RLdz>(ISRydkJ$Vzs|GpBjSDi3ZQIHP8Dg|48biV4qB zbl>fH_juTS9!HB_e}t^+42+oAo$-~x1E^=eYZRjwRE=CeT__)|&KtOF*gg5E%+_?o zORHJ0VcXGo6&s5ho+Vls&7q8HxkNU#nX7uf{Vi<203*5g1J-3jc52UN<4k+ZXRk;t zkYXBuX^~Em`5&$x4F+hqt+z|_#MX;c;8WHJg+T8WnpZHT&A5G-d6Y5^+!W)2+^86ZVAThcvWhssps858>x zXhugx8xmNBQ%tHPm4tkz$$Hg*&o1Lwo$PlAyrNbl{QUvt;||=JCHRQX@H#|8daCDk zB7Ch{oKuXi(i3oKQ=~{m-P1v)F}1+1tOS_1+ufweh;LcQmK))r%4DcNkX%}jV3#Ff zTti^OWf&xfJa97l^Q%*elA5INC`L-rQ!Hc>76)g8tp2y~T;cLY2v5oBW}n(ah>q^@ z?rY?Pp@TZoSd?yw>a%UDp}$Rp9h@Jq74gq131B~( z+Tx&oZMdZMY@;|0iK?+Z5z>M?cV)|emOgvrw8~5Vu+w(-$012$@nd6t>@ zrq|tv&iv_q1MM!8h+dh`v&`pJSITvLLl5obv<3Um9j3d(wqnNmi7B?`e*xo+FpVph5PI$R@Z;fSdh6Uy#c00RIJ4~hm zCPYF9!!pB7eCj8?S4;{`c!@6)=x}A7DQP)rMwBC6qQ?}rL+%EE{uXDrKE5Hvs_Ygu zNwdI|{Rm;N3iQ1AeYy~1lafddB~3#=otAZe8=g9yX1;%*s2u+Xb^?Xpu3nQ3uZ;=iISbvE{SVXm<(s3@nLBDq8z4@`ae9 zsqTccmYt%Nj$SL$f{LlalK<7NK6b-%FP}lh{Ox3rj+5aq4~6o!vmHBG2AMejW`WmB z9!3Zh<^I^wxGIQ&X~G_d;&-lUwu-;dFT*{UvLzE2*uA)*o^u%nz;UkyS*5`ev3ipN zEh=;gd-it}KVgv4JY%K!h42QcBSg4R0mU!Yr~GgQ$Bko8JXZaa=<-i>Zy8x#?8XE` zoC--MPcmNqLO6wooaRH2v_t&Aqz4BkBx-(tSvW6j599|_3SOt(iI!AA!q2WQ-t zSohK(^m#9X6noajo$}Dve3ICQpyf-dLQm9BNEa6NKzeUHao(P*y2x=`gI7#J>>Abx z09abjCR`tt7>NEvQz1%?8g}?;WnVncryyuNw+WI%cc0hate4eFA5vXj^429h;g- zpm=TyIV!HA>ujOqHC-4((+_eVny{N+3{q9qU=WTHJz4#b>)SJsM!fJlHOB~BcuK95 zUiza0A`w^g!Fm5@7$O&y%lZE0W+J7G9HN8N^FY1EClPq@{`qokzZA^)T??(arQeuj zIHfx~@;h_bo(|MEpE#_A`V$1MmAZyIi8zX#eGZzU=4$%Zg7VEk+jgq!ulL>Mu>q(E zihTUDFP*!x-W|(F}x958q!0kL6jD%edin1S=}338bu=&=^Q#5@AT4qaA_` zUn8t{vZ~A&g5|U6Q%c2E3LZG0Jk74U?Z8M0_;KDcW9}}{e$e**5^7A(y3Y@Wd9Jz% z7rKWSOS$6eBJ=b$IK!o-_$5+g?3oIp_|n$N2t#Uw{+(IRnZm-`n*ff+cbV~9^ibZX z0wv8_6cD0}tfF?UW=zuv3A28>6Ne4pH_H+;(w8-w&qJbsj`0X%F-URu#m;$pSK6|S zyxp~<)f~B+Jv(e}Hb#FHkmArGBDX2eCBQxQ@Enn+~Q-k1smcW?If^w@OpvNj4O># zV$km+g~Lt2Bkc5T$|!ou3*~qxt%`6pR1TO39gehlT(ppJwe`~!wYla=4W7?ogEObp zgyi|pXI;DD@!R80g}S2>z5?fG?r_? zSm1|h`}gC6a!r4#(=J4E34!={Yk!JqZo`X^6n|)v{L30sQbWVtSvGT&4c zsauR2Hb0ehjZ@}2@qpQU1=$VeZ*EKicu#SCQ`InsB%t7Q{Z1QsFp1GrBk#v&h_qtS zL4rsOkhX!-YH00I6ffw}>im~hBwYupFR!BIlRqf(K%83&nN*;=CsYBSs0?Rq4M2V;jrDXehK(7nSCL$4|HNpUU z=-|*bGri%+Ni^hE3D;%cygqtn6?=utWTCyU~gzs7Wyv;6d8NSOdz9PUJBN1-HP0xnNgq(hA>K_Q+=_GS7uH&~< z5x)8R@AhTqm!^3+v<2^_oObeouS*zt1`}1E8{Ca$WH?7fSheMcn^d2|B|XP6-nJg` z{n8rHkJH+3bT;&Igz88+k}i&Q&RAkjT%P5*_z)?D7~Bp2p-c_OIah)yM~FcU6ayed zoP^78NTo}lJAwz_>W=pY3PD6j@D!c}6?MG=?T=@n>Q=^L4N7T!{^rJq*}l4Y|1kkZ z1oDCNh~d>WvmQ-uBG*^Fp@4KTmtm*zyvNYr1zvR1U`c=Yfjil6e#zHTt;}VVlc)vQ zD0dddF0AsTdMuRmm&xn$Q4rK9a4p%2D%s|Xtg~jW$|-V{c9tQ~&=e|>dM2B`qVI}u zLrKOnSVThEG^)pXD)VAm0~Lrtl5)5KRRMqR;aA7JIhf8!$6p=tOpZyR>L^GOT6=@} zF-hK?t*cP5PC%*fWVoX%NG|QYLh)bBYzc6SYwWtTGpP~yB4B`M^2XI0^_`|_6|Y+65My`)AA`3g{LMen3GUTvMZWw4nE1 zbahxqqYnX49e7NJ7qy*ilUL-T(X-`QK6ac-7Pmpp&AphW%f3h89pXFqFS=*PCrK29 z`=4k88~7@cIV`#u&n8zti#N%9m(&~XI9-R3A;ySdu`{?=2I?Kn-Wh)|J=9l>!*wZv zB}mYDJqK>9((r#=?pg_NwAPb?8W7UW{uXu<9{e(PbD>2NQreFVMKuaJD%T_vdkn3g z_PFrG0^CM6&0NCbKen2lR%u-P6(PqeEd_5$d1n%(aElPoH^@5{wt>NaEG6oUKUd`R zp7irNS%=h+{2JHEtSb$?8KpLD?{IAM^Ml>-4L0SG?$s0<@`xmknb{!TlBDJiT!U~0 zzAS&Rvo!1ez8-%ztLKyJ!9s73hEGdViXixU-W*FOL_!Rj3R`Adg~s)BccP4?IsJu^ zY?xl1Z*!tScOG3NgH%Q~&Dzycu7}q6W+R8mftoyoJ$GPXh`)*BL$;+zj zfiN_V(^Q7&tc-mP2A1b%*o4Z6(yp4_xkv|M#$pBGYquubgaDA<0qH1{R38jMdzyt? zM}$}>M3Vh7xhy!t5;R19=XxY18N!MW^2z&Q-qw%CvsQ7bNj?biCI@2-z+k&5oLAVg` zUs1mlTw#Pzt~5K|7ZcbT9Q5g~Uj9t5WNPq`DVwkB`zre=;D9{{d%LPUq_2DpUaFbK&LLG)lTkxs5Z<@?^ZMn#6-mdRW{IxpGsSR;s1wN|`fBnV z=k>?Knf4Z!%Rv1iU$_8IP;cULFnhT>qz`LO66Shq5untGZXqhX$G3lSZ;%o*!xznq zrJ>*SD;3^DTqIeKi?ixY=z4y|PtEd%i@M+k0}e{f-gf;6H(0oKFSy=4|Bbarrz=r* z_tAuzEZ516mZw|R#M%jgB+9)eEgMgAG`@yy593{wCUl8F&voGrgw(Vj`N>w1?l_PF zuDjwWa8yw{2`}Jkh59=I?!G}@CFReTj}Fx$0E#Wn#l9qOP(krnWo2u3wS2OvifeO2 zjbTlD3C7yGk%PRpwmAw~(mNqoj$sbw{7w<0>O!388?=I9tq^d(nkyY#LCkLQ&xCiQ z3oq-Z5;a44$A!46wmKRn*gHE(kxFbI=h9{$Pe*c}gmPMwcuzbTS-B$nU}AGiP6d%n zdAPm3nspo5f1BiS8lL-j(<=<-w+`5Uk0s~Z!6+bt(25*LJY9o(kKVMwn9>1$L#bP43#5f*wxW{{*G1j1n8B` zuB01jMu_5)Qh?eg%HZYhsZd+o291UX7PIGa;u=*^Ph(i6C%gTMc8$Ot&cX98DXCL< zWDyWo`kp=@;sz(P=!b&+~BHNoN1kKEa-XrRE6TBb?|NSQ& zr4eD`4ZPvi74m&QedaEbFYg=CF0S_^J^}T>Tl)Dpcx}4ow?3fw;(=u1JYM@ZSW~*V zFMVEK+o1C6eaYiCt#0!K-5rgs`2FbAd=Q0HJ(4PZyO{JI9h;#!0TkVTKY|OplAbyB~}y%&;Xi;uSn< z;P2t-L>yl-m)=0+M(AR$b%IN;LeIF&$g}~h#xd8)+*ODLrSs#^ZHp9CEG{$n7s-Pr z3Cl+M2kd_NmH=HmLBd{>g3^{5KM~w|hd?L{v4HH6R7T*Wg4X!yD;tih5JJFef>bFk z@U|1i{@Gs-T`O^0!(RofD~MCT>4$iV7xdPPV7lR%YK8gia?{qr8n9#^RT+qHTbuGT(fadr~#miWOp+r-5U72NM*B~v^lHj~eW!+EO#!hSu955zd%QsEv^ za~JIMY<|O8sFs6fcljneP{$y4Ap0Khp_4IN>XqeMqDLR-D%Prh4O5OC{ET7`GFG%= zukc8l?J6J(``_@&%oyZVPpUoKo10}*mFLlna9O@&!gv!qZn34#()d?Vg>&Z=X7Ep} zDTxnza2ThANvH+>gv-QQrI3B}f>L^9T8c!of)36OO+rUGz%r2GP${Jl0q*jorE6?Y zu%D5ScGI_s8NFTW<0@T4Rs{HLeS~wm05saVtcZpoPYfSQ(>MB654lJc*_DId?|M~% zX>ZkE%vkB7wwu@BBI5((SlYEb3XWv^6?necqC@(4c#F_2^EubC2pT`+Bvwz7b(~Zd zewI&$QiPj_UCN0nkeH%f{Ut)8we&F)1JV!fQasV zGNfO|E#v|Q;zhj@u?9n|%q^{P&&Cm$#;yZbwl>#R^vxyrOJ)jtwtM5L=@=zw`gOqg@+|foB&5axW68*XVWCH9&nNgietb8F!gucyMahwQC%d= z*C%8?TS9imw{w%=#B5UPFv_5igVCiv47(!#b4a8^_Loc#<#t&yN-Tgg@!2#}01$g> zJuSf)l9J4JJC_QM@nI4ri4mJvZ6bhqF-Q=e$jOKCT~c&^Ee=XtXQ@hzmkNbzGb7@v z@9`Slb1jJo%Vy(ypXo&7~{=a z`*2W)`JJCTxK|yxGEV!1ruT(vIGokRQPrkgNwV|}mEa)keO@1LIKIPeuc8&0x=%w1 zIJX+teDzKHK9%L>cE+k%<%=i-`c2Sx8ZNH?ijr+o4ImCAI_+)H&fbC8Az~UVRuXy= zy7gh--|Jr8=kz`~qHc?(^Ct4SxO;W9(GV#9RzxQ^!?{vp`zODE(0?mUt>;pcwurH# zLy!uB2!}3>gq!@BrB8K28=mnr-)j$nWi7c2dOpmn3!An*T(AgbNDFvI0s8G!_^P(KCbldcz}zbXlSo&(IiAio&z?~(%7?qa(mnRKhD%*!{Rqb+Xg zZLmz3+VOPBg1SCKPklWrjs09WR2h@ajTPT>F)jkl6qP&JdPJlEwN~9JPlHSL7}h0xWZWn~ z0zaNEsu(0aZ?aoqeux#u)~wT!dg;BpEn>qijxxR!=8k~{HqWvaFDYBoGNdHF5%|sG zCqeU}-9(g%*Z-~Juo43dO=C>>xp|ykfWGiC)5#zXd8O|&fm&;LLR!u;GxCaOSmTRa zLN}=3f!>%V%BiI?T2d(u$3AjB!okHqnl2nOhBj|;&=|H4|D;LyRWWJeZSN%S*0@#% z{nAnfHwF1SK(;r@P|4hXdB>iVeq3+=W(KQ{pkWBVQUQdn8GAC^RiQ6eh;MR00`XiW z0;(;h9{G9uXmv%DKjMJsM&jr4AZmL*uYcC>BA>tK%qXRi-q&NGF)$ODmx+9Y2mFKk$@oey8zl z);0;r1E=5nNBX^kxHK*_jI3LuuagE>%X_Kxbrzum%53T_mT3VK+dR*Q=Z~CK;AS&y z*(TQnu}0}x7Bsh{_|iAAVy-jdNVF$`xZsa1j`a@ACd}WS8A=lk>KwGEz6T}3G~}}D zyMmyrouYG&uKtnIEZj%RA4i<90tne;_X3?7P%8$71$SeyE)3b85$CCNiLcLp(c2Qr zs<@Mq1pmVrbM}t|+}bkGfBHZQ8LEyokLGGWFm~le-B`F_e@Cr|J(R4aRc{W-AL3fJ z()3M6uB44&sJNlr*%I21S;vAP56V(HO=c?^sPW~+l)lB=QP{XjMFqw4kTpO;F1@d` ze{z$ouq8Hjw|tQO)6C1)X=7Jmm-VR#gzOLp9;w zm5{{@25yfg`0@V^w@8oGUcA-**OG~LJn_Cp+1u`+4WU!WjT@+Q!_gxUCw>DHdOw?a z4EQ%uU-4zL91foR{6ae@Pw+~OAmwIY`Aax*Wx`#@Ey{$?2t74Wd;?IXgSFvtJAjXi zEu{>7$c7q&>i#}m#b1ElG3>{OgH-F3Z>0*X}1t3W9yX8-qU`z zMlD3raYkerMEw&-`gg9MFf&|raa6A}nUM|@gm#-nw_1P-3&o)iDq-^Hz#GJ@vjvo5#CYx5zo}@#AMKM8oxjPxJm_0v8SJ=IzT8K z2`+a4MRIt)9ZO2j{Hs?+>$|1(azMYyoBTzH>}|o7`1!bjFT`46d-ZJyN`s)%m%yYh@kkQ-_89W`-G$Y`*3}2aBpR zPI?!#frmks-kY&vz>n{|#dba%mmzV*uOf^d#@@Z4lu z4f%A$MQiea{XZbp&-e~Q2BvjE2;h0giYgTAkU^(|!@`tT)4OFReEzBjD<{58-vr#4`nSF|yrTI21}bKyl5nlAZ#lp0;VEG_ z9MIWB*c{dT^dlm%{PkHa2pMWm)_UpBr`m>GO{{y4D?h3g;Gl)4v- z3U?Tl8DEVw;7K9zrsFd{B`bl6^&2!#q%pt!MN!dFA;WEj!=e#&J+w#02@&b+C!8Ck= zi5DD0V+a=o19c;BE5X1Xt#>vm0dQsocJ=i#-s@eG`tgp|10-u8&9G}DgwW+dVyv_HJz*|fhXW=L zOdS8;5VN7?VAu277T!%7rkzH_+rp?eY4{Pkv(8(h9aKTw(}&_selk zaj)|qdvc|1d~s(p)etDEy}@7+?VisH5$Ps4Ac^I7&b*^=;?zTR+cWJ$z=^f!qk3#j%X4#>rO0WNNmnMx+>6ptz+Wx%LwVA~ z#Q5g_800LT{x9vx2cpPpm6X{Y^(Du#+#0G&wna;=BHYPTVz}rF88DHk8VzFO&6&;8 zO2So3L~4@ub|d@}2=;NZ92Su!>P z@N`=?!+?vX&aw-Yk*)@f82djE#`udLegP`9hd1kcX?47(bF|l_mxMX3NszbhR!d*5 zV_UZ0%PX`j#z0-to;Z%LYs*1ZRw4_-stAQaZ^>{$H9u`;HHRsM@ce5FNj*0YWt-2F z<=ENC{eax<`LY#OM-!SXc(>cLM*yG1G;VMiakVcMi(=#pYyRbfA87lQb3YyZfFQnQ z9_0fanx7oY#4TJWdN%{$)299nI#EWqD>>}^Ou}l<`S9J$jLLmpEf+|>&JMtieRlSl zKV3wmfMz>LnGz+clC03BN>1GHd1YtP6A8T$>YUgSfZZqs1#@5rGLkO=I%?5;L_Nl7 z4)iJoNI`dxnS%-H3-r}I3lJVjaQ0jYnxzLhLjf@Pj>d3J=f_9f{{E9|@L2F(3$-Vq zXOO-E(fmUd7%2fe!{tpwATjjhKE;Vgum=8r3`>C;a{(uw%MgM@q4kFzhx&iQbmfw1 z38^*X#{d*SJ#TKmUyrUOd~+0rrW)$}@tFeSMz$9Is1j!uO@huI<%8a9lKqoWlLnW& zOJ05&MM{>W>xX2xXb|KJwsmcn#AudR9mmae;W_Qt!c_BMtxmslQg$pEWJ~Uryy6OU zUg)NBUrIsJ^=^y{O0UK8bmd=jb9xri4Pw9RZwn5H9#k4H#08;J9XDES4(`$N-XVz_eSB{)m02Cz1)7;M>uZQflA&8ZP(cN0vfiN2 z83Ythf5Zg1q^N&0O^o|rTh)nI9}&HLfTN>7ticLtD)GMj3uwalFnC#!e5b--iuG78 zyYG-h=VZmJ*v^^?DlvX3;EYhl0+N#0&$~RsxVUv1QGYwg zra<{hQ(_c#f>oyQBUlQbwSd8C&*K}}8EZa$4G{`&s?M1GO~y%hJ4jo*wt1y>h=D3r zC&6A_=jNX1IX)y**}o!*vsfW<>>)u`VKlaW2`;Anf3jSk|J_2>0POkW#}u+&A9ogA zb0?Q@tZ*6%MejQ486^&3!qf+NFolwZBMk;4*K#CLV9)#^JO(gou_IB|k!-^OqBrFe zAps7VxM&Aqux;cjrUty$fkw*OP~eA<^PS1ST|Zw7LXo(!rFx@jtgUzcS ze7)di7Okl|{gYOf0aB}$fX(PY440q)NME+(con?BY272ZkQo7?C zQ(i(pvtB%C)RUHAcYph>=dUbFpPlNSS+*Z1R&a>2`OY7Mz383Ub+1h(V{|CYs&QgP z^G`EZEpIpLsJg!V?dr1<2c08eWB@qhCe9npV0P&An3F}bSKhG$W!3$3715x8O-*1L zc@#A&`57UYs-$%IA}jY7;z39G6f)L&cCHv_4kXV8e$0_zV|Y$$LycMGkX>)VIvu2r zheCewhc-bnP(vWt2`Ha!e_=tjSB6BJAWR#Or(NPlriOJuz7-<6-uO~^qSc#^Bx$~q z7gqX?tikp`;hYc?Vhl1k>q5>1z; z;MOi~^99;Ij0muY9w31ZkVF@%xuZlEX{-RY$M!=28}EOF@sO$^28t^$0&zwc)ADfg zY~U-x0HX!l9@p#&WC`9@D(?^w5cSnqXs}L)6tTw`PE1(ix3XrJw0(1edBSP2q~>L3 z%x;?FK&-pYLEh=PLWW%*i)l|u&l{rCvkHpB%AXZG9T`dVzJ9~)vg4^nff#**iWC>! z48fg-(c!r;Uwq-B!EBz8sDy?&SHX6b+-sm$dHmo8h6vahBkeVWt)2((QnoML!3Sv% zPiaOu<(~Rx(brVgYEDKLZjCF$ZG6o5*=(_Zher7yaRx7<`=7Dr-NEB9r)lQLpDL}U zkS~kbEzSK{>iP}5d9j!}0?S(l?PydKH*5S3std=rxVQH+@SO-e&(tLXxgW#Xr;_m{%MdeVNQd)%%KMIYuJML0WmQ6Y)(7?`sp+YG1vp` zVP2fIEM|A1|I1&jCTWMLTM`XN^Pp>AF=Ba<0lWSMd-O(ZaWu}Q`)#Fab+w&QH!P=j zi1#kK(APn*WnKMZxRSxJI-y#$CEX0XEEG$vvLH7B{C;haZ<V*6 zOw+JIH0*&;9bq{jFD~_!Q;WSyVQdB&uy;OSDn|@-D)$o+0u7Q8(i(qPUid_nEhv&s zuX*y;{^6T}f_W-`_t>*Zl8v>v zoiDb=L=z%n)8w@g1=GWM+|kIDZ+Du)LRntcD~L!E3yYrj_1C{mGfIDJWLn}=LOz`| z^z*BmR*(ydB!h|K$Q*UsLHr|6O$W)e_2#y7D$`E00;N5R>1t1jUOybsup}z!(lZql zfVAZyInLR*Hd_S~?IQeQ`Us*2Y*oX@XStE${@owFA5`fxXX3@QB1*lDR|HWxGVe1G zr6rq_K8=KO4b8#gL$67`27Ue;c(D1=mLu#y{R{uurj>hm@Ms9RJ!od%uwU89GH0u7 zGW<5u2N(po2>6TaA`ry&RT&|c^Amd8_#giBhow}osqdN=ZfcS?QKA)7FKQ3O^+_ZB zqW3CIWpkxgt)T84zxi8mH5puK^wD4eIBiJfl>zJ{r1r49FCR}@1G-4S&dS*8I@!jf z7+yxjPf`JY)6Vwv1c=Q8aYeNYiION-uD{A%N0_8l@|Ed89F8ai(IEifsL#6Jdez>G ztPgFGH(iR`(QJ)W>SHp7PsVV4tv2mmGVY5xN_#8QFdY{Ub$Pg~Fkd6S|E94Q9XEaY zGnVX!!`mT#I1@`h&9x)@mh{yB%jm43W3R_CI>~<>pGh=8oy=lh48Mx>?1^~)U{q8rN zy8S9ifS(_aFQry@WI;?ow{($Y)ATr$m<1C@j$gzWI{TE+pWgmn!JvXFL#a1o0*}zv zeCi?_aQ(ph)IRz=bvjL*;8*%w!te*~qcv^hr%j#F!^q>h4NIi$Z^TsqYxCYpdI6h& zekTXed}XY50&)YW?n5*;!^fNpnH#znM%;yom|s1&;IcCQ4HR0W*UT`2z*56b03`+M z655kv@8?a%&ZlH79N2?Ar#7O%J-;|Q!0hcfy-pLV-0X*IE_V;x zWhYGaZjA^Po3=2U)kCRG;ZN)!4I4mzH$=F${69lXi-9n}@T4evYhG05N#Q>eE;sm5 zmT-dkwee45kGQMO)`9w9VJDg*(o&5%e69$oB ziMttl`^0>O;?3D4;lU;Thdz{4wF;}gB8oJG-V7uf}8n|G?!a|n@xn)@YDn< zC*^}xll~qi4f$he#jlX7UcN2Z-*uE;gFR6SJ5-FRw*U-8>3zN=tEw_1@fU!GvsL+< zkY2?uaRXXQw)z8Y5CXTWYunV6!8~P>$L40i?>Hxz+4*TnjXlWXHSxcAM8@B2i|m)Q z)AN*NOY5dtHWj7^{o?Voc+uMr*10$7T2e-Y81_0iMonVc?%LYQC~Wo=xf#Tcn;A^y zFJmy*z&$kB-3ZpZ)s-n@t)EjwKzJ!H!w7Wk5hJuu<=I2>ai(cI03%T;8h7H;ZF--d zgv2-K^J0_5G5zIeCDDoc?-qFLkS`hr^Llot*P^A6Rb?P7O2rh>RfD6NlLleHcr8lH z0v$|Z#^k+M8QB>lPU(bM?s9n-^zK#ZZlt6Z+wek`v8@?89a|HgyJq7JBdkUNrgFJPCs=KF zdL;4bmVt8P9X_X0`p$-ls-ggTA6jRd%wk}s-5-w=q9bE?G&~2Yg@k6}Ch^R)M}`d` zrU*mcU6izGlS9?Ki5jv`(J3Sn(1tP+Y6u)7Y)39eCt6F1kj3)9Qd~h(`m^d9$DtuEDGrzq_@m_J`j6?OsbVNHT^qWP3%y#Q znT`tZ6cGqG2mnS2J3k*xpoRmzg zlp1LfcF%?hfcGd-R2%DQrq&cPU;c1SDKx*>0xzz$%&crFeK4Rt%5KY{9shl$C__(s zh(><^(@&>|_I)IJ4$ph@%id=1%+7YNI_x?MKE9u&B#-Ukm3#%YmSHg$DAET7mpC*a zw(m54H7*zao;zGc6uGP$BH#&;Ld_B)DdKi^-NYsO7q7mpd3l+OIg}BenHacjw0nM- z?KpRL@_Wa%*Itp_Y#86qT#>|~&~pt_qf?5~lr5)y#Q+;GeLb4)_Z4miDhPs*E5Jqf zrTc&ky29{GiuvXV4o0-m>M~kn-3wgT$sdpu$xQNt+>w@g1BE^usO!jVW{|7acKyi$ z@M`^ii$oCgU8h;s&*Dqbsx!oY9a<#CG!y3R)~ucU$#z zoQXpR4xEtPr931po%@7idcIbj8lUNUG)gmVDsdM?^!p1!3i(q@$&o3C zuvO2dRDoMr-Co$fePWP7iZ8!vmBOZR8%a`8#6rc6+{PN70f2r!qR%4yWwq3bLE6)O z&dgrD=spp8d|lI=_t6$4@G#q&@0Q|=eNvjD{(SPa4o=j!@{;U9!X>)0;0L#1mO7w0 z&PK;?_t1X&RqTRe9>8ch3;9i1Yh~WNj)V@b3@ayrghlb( zoqtUz&eE}|atum8$EO6w+uR}aU2;0{CKA>(mr5-2Q}MFUV?H~*KZ>P@bp!npq2+VEh;66!O2OWs>@MyAl$B@P!G{z!`xjEhAdqrDc1;Ck(?naO5GH|uBWbmD@3#HBvg zSb~z&N;Htup+7aI^gE+hR&XvE1h%yXJ@Asd+@-tRkz#wP0<%m->`gGhSzbcc{CIos zdiD>^58up$$>8X8VcKLQ5cXOof7@GAZHf5Ak8&e8pu`1t^AYJCa9Y1|Sq$8eV4`0f zNeB&@!AlB)e+Ad2lbUP*k_dA%gy%y`S1UWGFvF9&=-bm4@AVDqz z=eYi8DWl+9x&)zZSP~a5xSxul|4{CISAG75KqP5S>SQ9jP((Z7=ZogSHV^H@b#j{H zFn2^e03{+9__^n0Oi}eypY$BWGF_>q>^*yTA6QD8zR_s@!;XiOsN(|4DtV(0*8aR9 zNY%FdkZJmq;MO?eEz15cQDFDJ3sNupWyYE{rcrr#KA@>SDPQ}1GGuK#(Hgs$dZsZ$ zJutc+h_{s9y~u9APNr^O_$%x_gIxhc(=ZU7^x3@tyt-{z&Dv(J6-{aMoldskLm;@5 zz>%)oH5Rw2-al0Y+!I<3@1+}~eEV_++Q_{$t*poSU#4y>oe(jJZ%Kjf&#aOl(1*pf zjF_Bta%Ql0`P3NY10-vFyS`_;*NhePdy)-Z3)AS}AB)V;*(w_FchXhSpD!kpbXjhZ zGcoCx8l!6z&F?+mdms7e$5fojs$iga|1jKI=lZKM9a?!ttFvDa8@*GD3I=5FI<_C z+7|gv-_~OBHU2?ldf|Z)hFDzDe`A zLEt^uR;$O>$LgYrh^5)$geao3ZM()Q0FFWO$FM*QuP_|7L=Z_xL2-;vdrzyRve_l( z^I!z8PAj>3iHAA*TfXd#VjkX*3|>(YsWaYOPY?XO+O^LHgk8j;JJ!1waDn2hV30P{ zL1BhI7ya>lW+6i}UHFU7PN#%SZbXGSNKNG&Pf;%0Rm;bLN0Z>YjFR=}6rO5O`8p0a zD7JaZsiYBpNg_4S#H1EQ@HMpv#D4qEp%e801X+`eZ0hm`wm9bEZnqAhiwP)JxYKXQ z^l+dsZpJ#;WPsW-#Kiw_y)C|lx6tB%%9+}>-Ol5r#rsR}^jQQrGiZgpV#wv+xjp_? zn?OyWtk$A@KTe?q_69F|&MZ%pk`w2Y8MsvRrb)Sn*4(Yc^l(O`VahB@>j`Rl8$dNlEsf!6`xvZ{7g~5yFM0 zu>n(-@6gTNt5-K^YZrJCb@A9{*q0DJzAj_*Sh>;6GYpwiE3{&mVeJ&B4fVquAhszY z?+>NP+5nlUaY9QN;azx2S7&71x-i3SJ=&*k#4$T{b`*WB>d25tuFJK)ax7*Yel-wz z-%HKz^9CA0g}R84g^1`h?5y{d+YDS0l*T9WO&GcEM4WjoTvG?3HJ#b z+gOd>Ao}4AcO360po@4>&b0aLqone~4)*6?L*N!BB-j~umXBzv`P9FsCfRa1*S&-5 zmZox23Cb|}4+!x8Mz>KVGhCe1ud|kaZZ4);NT!4V%Rtgy**U07N@N=cFH8Qj3=G*? z)H!E>iDxIupi;KBJ2)CAf;0c`K22plHHRlNDxsf=Q1PXJRJGl~<=S5KCxhkah*#mn zqPDJWB^#Id83%x*uRr*riY8#W!yBhjt;%*|JAiJMHSi?&#LU@jZrNop>wsP}>BAsm z)YW=e{>@NGkW5D?3&9egW?-1q-z0dN@$R*l{I$3_7HGu$s zjF6vu>K|%X6t2#Va-yQnSnCQ^_?`;+mTYUKfZ8hj`-(4MCJymEDXxCDF)Fm&*x@xx z_vGD4zk40;9ug${HZY#_D@TwYn2>#a7FBY; z>$Z79pHP+b4{d>M+9j_BD%i7KsGl?Jnol$YwO8dF8 zK!%RxGN)G8(rV{!^zvTM4?xp|EZ2It?}mR_8 zuvMVaC;Ffz@6AE~zvifu7i#9gmJqowwNpd4zPwlL{4QVzaZkzqmLX{~_>=FmSY%0? z8%kO*g_=g5`-cjz+AJbx*4gUNjB_If;!YwOc=%8_cIXOj{6*GEz@Fx`DPgIxawoT* zFWTKzx|z(JPX$`dx?ND>Z7WW|GW`l39Qyl|EbAss9m~z6KW#{~v}>!U^l)ttS;uWi z-gS0)8kl^8W9hl_yPPCW46huikDf(}Q3&Q#F^`Cn27>Vn8Jz4@xhM|M7drIjKO~jf z58bE&)0h-f4q}MRT=Km@vp+fR7&OU6s63lUe^GLcThn5V@8W_i>_CTl3 zCuq48yF4Ts2bY7j@s4*&xmu2dQ;77Sz|hYOX4I8^YtziA(Eh0;t%w89DOdDrA+oF@ z0PlSo>%-)7AN&71?sW8duBWJ>$`u>BC3|LkX!p&rKA5XSiKdGqxlGdtnMy8~8|iWW zRxrmzu~yo^Ba$-sW6QK5tFOvzYGdxD5gt0SlJ)G(vREUFZs-I@ommHYHBiezE^!>G z;1x9{p$4kO1S*cB2nJ$GdaPqiToR4}o;}x6mp_H>b864g&Mi9!qm(>ntZ+=iIguz` zs_Gbzuky{1vUfvx9kuiGMv;&LWLbPVwW-(`y{w^zxkb>kPUg{ON~ysqRz4$b>M65% z4%D#5n5nhjHuN_Lc$C$MhUC6Krqr95en}UlO5p)-On)xh2n>}ZKXo)E3}A(Vt9MJY zzRqqJ5+tIeXh2O2ubn{@PmIeQeQq?d_?tX8tQzth<(4Dwb(`r;)qybL)+fM_4%9S_ z+M|m_=SOlmHOVC#y#z$sk38VJ8ghG2BN)1l0W_3eL=!~|Fo ziuq95cQa4h3?rp9Og0bCK0kS0=>JMrx=i@ZWUFu`eSwaBTH6&DH7n_je6lo@ zjzCI)#;Q6;z}3;GZ&RU1>u9or^4I%f+qUTW;LHF0#kNzeBPk%heAJ1jU zQ{}p&c|o0l8{U+R_iM?KuBPy)M*YxSvMlXPbdy*uRk`#WR(}1KUo-Uzq+D?D0#sc5 zK3RoiSA;qP5PCBIASXi66SC|Gv)|MIVvR_{T$`! ziC<@S{BbR+O?$W}Qi9*&EnLxx@ufx^X2)S~;=*&v2S{C3E(qgVcn-pn<8`m`1^!Ac zxaULbK)kE~aROM0GId~pq|_XtH~fYgO>`5QdPf&HxdVp{L+fTx~OXjE!cqE#YJS^24>0* zD#&hw zvTWpZrH02o1gd;o{%P@G3!a>_zQ-@0Y0AcJ#^i?cq#j<6xPs=g)LxTCUm3~!n%K!^ zn&c67JELiVUaiRf_3z${5L$PRIZh z$ZD*zJ+$&9f(d8A;bi3c?et_+0`%b-B0od9abKr|_-RxDHU*s}Y7Ra4m_enu(Bqc% zEM6OB-Y!}kseCcypV-5G=n{lT$!N3=wF4rJ9rsDzU_f!rIZ0ESIPc6^OBprLmviKj z2|n(TS@NCyUwG7?swSjvl$RYG!~yv~_=Hi*?BtkQrNAG_@n2l7lrYtY%Hp!a{(xMI z>C)!$)jufKUbSj&pMa_u%WgE|3rrgrDLBA(RZ&l_*82bVu{r(0DTHtg^w9ZXWv9)l z8mw>IR9Lkc!s!Q@`00t$(NF*B*7n@iJ8TE^5{MP+^+5&~=iNzTI*{9)2iw-C9UYkk zmOHk(2GEUDgiw2;xS#7+8a;tXfc_MMZgW9Gb&-fJdpcrdKdqATMQ#OXu z0|JPfUc>%lB_={Ka?``hM6Wr>)|FTRdm?iEMxr+b?*wDr#cqy;Iy(D0UoY_Oi)~1I z6z+~RlA|mX`FF=R(_X_wq!Kx;4O>ReRhax zcvO(=^}J8r4z{n0iV`H%?Rx~)t5ezu-v-B5`hkLI_IcW5Ub<);GGi*FVIGl3F7s8N zm}wx^aIkxGi=d=)kXQdv5Je~B?yGlr+jhFnp}ZaLxmF1;lkw3riju(h`Z@w(xjb?6 zmHkx*<;y9Pd^7)H%9a_@A0^DCE^OGZx3$+0`m@H=BV~`1dk<0DxJ-Z2WB*NG=FDvL zeCZyX?9OY5_>Ppspd-tt>Dewf$N$ivc+06-uA=LcL9jNyU}-5n^shxdA%~P%s^tC_^F)w^GU&75Wl+e@Ctr02923KrJCY z!a(sf3n%vGLy53BMEJtDNOdVhAnOQ+D+cqSDx@1`$d&D0N*MGyYtGU@qJsOtl8e6y zJ)?c9T8f+<%)gL8u?vw%+kIN~8RzM~EdisTbxYt;=$lMn#zF4Ui!20!cm)%MrG1ye zAMc)#Qd<%&Tcw}H16y0ol{r$?#Z#}fs=isbHe`Sdb0s!-(k~B zp;6$iOWd6>M>!B6(Vml9^Dhmhawdtlz1a~2W28+!fwN6ci?rX7AXvOIIk%p`TZ5-u zCA+pP(y|4`KApPwXe5F-YH=10-}U~Bl3VW(_K%xMQym{1Mu^}JWBzE~HbHqb%S@S$ zYKCN!l-@NiFmbf5WTjCq@rU&%{mhVEo$-1Cq5%NOb+YPBjkwEUXFuJ2}IyO=RKz+=8#`sgdY((;TnHMU#kAlJcRsi=TY~Q@!&PYDa~v0 zfJN&@WI@mlJjbkxd4fEv52AOVgV9iYw9}XFci33tnvqe3-InYXzak*w*Ytj&I@N^v z+E&Q9&3yaE(6X~sm9XlV0$64Adw`>X;l3RdRez>8TpG!NYPgp@mG1dkjBOUa2Q9}# z`?pTgG+y+?+}O`PKk+>czw1hhXYizlL47lATRd3H$liM0ov@Pr475VfyA&mk8VoU< z6q!|kz`K4?5#xdbOX8uPNlHW+A)C;tor*U`^kN*}sTC2&TTOlF_17(}m2#rj^!o9tzc*K)amU$CaX)9H*MooeMji+v8M0L96tI zko+8L(0~3FL*8irDzCQDBQ-cD%iOY|cf=v~QdBZgr@GsZ>W;br<%;vh@{YodI0|%S zy|ZSW1JMt#09H6Ea30|&+h>M5m*^Emw(s)doO5sf?K#lo&u~8<9fOQ@4i++|PAFVF zhcK4-6Napa*|N49Y9@5UG#9T}o7%C#*PxS#=1>21}ZC*TMGSV7h zl@0?$whbn1PK?_cUjN#Mle)#ax$fC;n#x&P=VS+lUPRm{_ut0dK{G4y@d~v1UToCI zbB6jW2@yU9^W9+?7l`&viti-%IrB7(t+4Mh`gXkf{Lru z!bUI{IiW7r_ARu3<%gg#UwvZFq6&FT`fPz@z#_1Dr4>#a6lpU@WJjl{v9rMLedx45 zGf7d0Dx6P5c|!-mj%)WytM}v|^VD=?tGE|96kF7y7fE#&9v!?1vo6RbC<_~)o9`LV zc6CQ1P}{t-$uQ3C;XYd5CS^G3@-x2%hI)~kIhOeb;q4Dr%8r6(z;v&s!f+=pdyb{1 zzrDZyfQylow^PfrS1(@3j^&vS%#zQjndphH>8||d)XTFv_Jjdb6jl=N`z&;rX*+Zj zBT@cD0Xl47S=h)y?~fH~0?anuudS;m%FocVxeUKT@r)}1PbwXxjTD48fFZ4ZJwDbi zy#+w@+s!?E|KMO8%lw!*hs|@) z8DCbaTS0U5nK7OW+$u@YCYa{2g+^Cmkho<7v9&}LLCFEuMe6rK+1sTQx83DCzXrH6$H2`uq zd_aBVXQR2{CWf0LYgxEBwqH^HDsAQ;?`NBAsBE+G@=~u&_`v4~XRIy_moO#OyM9-0 z;9hGF2Sbi(WTte0I_^}E2e&hb`e8W}qCuAo5mQA2Akg$RF}M|=B`3GwxTK(qAB9$ZOzLsv~nvH z>Qb3cZeD&TA_1?wzE1~o`feR9Ec5gl&pv=37)vrZnGkE7R#>-kB6s!SZxP{o%Vdg9 zPD{{m3}$+knh(`d4;~j;iDk@S&h!qdsq5IQ5Mk^-lD^`vGp#ZnJxMK^dy9BjM+Cjs z)Caz`hHJPUG>PRH7~++wCY>-1Wmw!Pw%3{Km`fEce_G?GJ*H)NZetwi5rz@mYC-lv zY^IEG&5cUw?`J6M^9~f9RI-GbA-vr>z23!ar!LKrUWS;=!H!8$UgukM2yOD98TApY zayNh*qVU(q#?3|jdhL8^HyOoknQZLpqZpa<^+d8jxr*cZgHPDaD-T*yfhW5P|1M2O zMf<`U{1TA62O*yC%BncAr|Cnerw1MrJ}w|RY_U}>;V&y0 zqK?GLPp+iwSA9k5df?R9lL!Eh0AN<@i&DAppw~rpok6fOm&iYtL8{&S-7;}JL5^w^ z>3n=93gWEH=l&XJ+aJP!MqSa?ayA%wxIrboS^u;CwGyy$S=N3EzM&S~`bQDbhC9^I ztT`D6U*0UhCAyFWk{$PRg}A-snwOe>ywYx21zBQU-lxIvH@*$5i}6jG{Szit(fMy{IfDc%3$nhY&K zuwIxxRRALvrM;_X@90yx|6^7DGm>P&w2P1~l;&*3m!C3UY{tFBMg zw~93B{Hy*OKI;tPEUeSBPKT*&h-wfgRn$9$03q8q2A0P#J~dekPNo{pH4RBYL_RtS zWssH|y&|W@>F2DD&?Sy`1;hk%-6l0Tr*YO~WL$&Rw z&8BCS%DJOW6oQ-9<`20*j%ZBEeX} z3@W=6vdSPeXvPa|l$eDdzybU|GZO0bo0>@2%=X)9Qu$>Z;h+k&BwAqt&Z0KWvtlZ~ z1_;RJ=OUF$IR`lWviFrlumCLyqN5p-h$SJCfm$KBs!gu~y}+StjK~6y?S>>@{!P!U z;AObC$*VUiG?i@8y+LPy(m}Vb<}6gz-d~qfH%m7lvdzI??mixY(R42!MDa&4lKYL* z=VI7H?g<{^7G78?pcjV>4>$WGXs`_xq%*m;4N-vJGv;XPN+eIVGs;fIER5dpI9S_{ z8)enfQW!UH?|D_ZSR-_|Cq>wn9GECZ}$K|_|eEX$Hv3iTkNR}#6aN}yG%&P0tu^!gpI`q3ffn+M+=X; zo_R)!Un+8sK;!P0T)mZK=Uxkx@-2mqaAjSBhG;K756 zUAE3`0zCy9_uI7k#w2={zM{EEb54J?1P%bmg2YP2wPm&WyL&l-8VGgMVAH-tWXIe# zHjN}NNUQy`U3&4V_Lq=?wevL?$UrL{xs1`_Fq+&z$+Hxt~VhRFD(XL3|W1-#JMJn};$6mF{) zD=M!+E!r00hXs3!hS=cf`9C9NHR(d>?>tEH4G=`XYYrILaq~Uf{0z$wO5XI%X{Z1i z6ZPJYbxO|383y%3&lpJAzsE-c`dz}Tnm~M5v5k81IE76xRbB^rmlEwG1Rdn0;dUeO zSHSjGUwB}^BCy**ZXq~C9rnvA+mVTO;*!M7y9LZdESt(ONsUv5+gs$zUo(Jo058d3tQUic#7*~dNK6EYLRtHe7COt z$c1{tP9cW`Rrle$vhMS$z( zdMz-OJ(cCf-h`TZR7Uq`v1v-}Z-oQZ`SBf@=WmpPai`Fb(ySSy3rX~XabvsaWE*yj zB(Iig)(Ukxeki7*EdiiEYaG6keEww)vvtxh@@4ZT82MPn&G!EAhGSL|Hf}D{H@9B7 z520HF%kkxXMXx%T&wF!Ld9)zCB>zk-7))$3J`D1ehy>a4Z|?=T^CV zz!)J!he|GqB)oy6sO1Y20bRo{A1`rs>o0kGjbxp~qRzvKGtU*oTd;G2XvZZ4qR3$botrtxGjn{OtgWo>sPCS6r`or zSKSib0OiP4EuA$ytITB~S8A1Gs>E6x;4goEp$^W-^wd2T3w2h8lR{N*MOT1HOomQQ z!0|7wx1N+18Jx&NGvFYEqw1Ak4<*DICbmlgfCeUkbd*i`7nm%nwccXCxT0f$Po=EW z?nAgWY=I|>ubZ1n?tPa;SmUie%D`JjN5Ji1Ep3B@<1p{j<;JCf%kSDfTMIMLK73Op z_pJ=&Pd|eM@EtwvOXT!!j1XscAI5?KV?{^~rHoNH>HuPzKl@SB89IYptA}LM!+~4_^tWI zpFqtBdGAM48*K%CyvnuSeIUHdfZT)4ZR^9~40Xm* zu$SdKDRXuXnS(hVT{CQg8iqdl-c(GVox4 zDD2;sqa%xPtnhX<(&pi6!4iz+WTsjDRLM1C#(1WPNWA)~VJ3Fx|7q_kpMqxMFvhXe z@upVtAB8ad;i%P0d<084(^#AH6(jr_=J+vf6`T*+x)c$=++OYsn&l6+q%pq>OyE2c zOMRoewOtzg1w?gYxL%u}4(EYd_}JU2Xc45a*tm=RoVAV6*)a_H-AEPs;RoBye|Mge z$5^if$y!l|?7SB0zHn{*BKKqPB`eB?#n|PzW0jB~Ve=Si#@jS;`QRocZ|fy9E33p= zfcsvUCs*i|M*TzH5Qdvy@`tYA6&pjibK!ow31m1~UCPy&9TV(m*CnzEhFJTVSwY?E z3Om6eW?MaIlst+F{KgGa%fjyNMi`5 zz`!Y#S-r=qS(Sm0w^cHi+)u$_i2&qKWb~tVQJ=D<-kE*lS?9t-iXy@MkORpG%8Vu@rR^=?z zjQdOBHGb$U?{aKxEh6O*lq@%vi<0G2`j&oT4oSynJ3@TLdhmcKSwR+(gsy$X>x|3m zL%`;m(wdsTT6%VNZz3<_v%>XkZR>)rq+4PAMe=YqZjNaup7#tj98vCwrKb&*+j zFGZC7G3}WhnVqRyCd?`mpC!$t7gkY=+pY^w{uKT*hD1zE2xL9$EWXTJ>-}-3Z8aRE zGIVas36ykjm(@;LU6kmQHo849R};(7a28-2-2@vRSeq}$Rh?t`L(Bu>;gmZ?vTJwW zst#kNLssMkw0D1;ku+g4{fc(e7QHPjk|8YQTT%Db4|Vi4T{3AySBbBDt1t7PO;Xa< zQ+^GMzzB>swA^oUKPZ`NcVmsa%1c22qPoV{K6iUiakr^>{4%4GBw**PfO4hb@7Usp~!ONPv>h!l48m!|b^<~&W z{C{EkmW}B^Kb984E9-2T@48cjB_6XjjHX*3Fs8oD!j8fFwD+<6vjHe}9se@G=^Ihm z3M~La<3WfAlv&E20kjqXqip~F;q`uA-K-M|Lx|BrzgN*uJ>R>b28PsvjtfMq!k>y} zYCu3bn3CE?+xE!l#p;ZvcgpymwR@P8;1wE}i>pQ3*Tsqg6-#Y==5eDo$9``U$cz!B zb+DGn4d;VecinU&h1%3~44mbKT=`@t+wQaQi=4i;inhLZTuBJZv^IaC7D z=sb{`PQ78_=fx7szwh6(Z#7SSfAO6l;;mMz)f<3DaM?#3PC7D@Em&Bk5~hZj3z^X; zG)zl18EiAM;^x@@PC3{rv!AsfSmhgG>VHPKv)SSCsa8M+ZH)}6#(dvD>dfJD=m~H4 zMk9}MMg{(DvEhW)A&WiGCDh6sYQu!G9zSg-T0PYn*M} z6c`1d`b1#gUMP)T&A~Yyz9wfx8V&UwYR-zxVcS|jKze@Bi(l>4^nGrY!_;!_SassC zd*9mmc55fQep(`QY`!+sq*Vn92+BOQSG%&pRKGo%v>B|d6hnH`*a;ShPFoVnX!_3_nC90#^I3` zD8$>ydevF!xR@(^#7bMubx8xRTa$QAWgy)ggz${uu$hNs5kQtG7Im&#hA~q!`7o*F zfx938>o3Cju+6Qq)uRc4}xU}G<{ zYuqCYBwYDYQy9%&!@WZ&I8Xs$xY(24=egh+Or*=uV1yG+y4{Ez-rDyzB{<0!4bsAP8p;eCfbAiNt{tBT(DO&Fr>Q0 z{NY1N76QN6nI;1d7;nZQ2`JSe}0c&o)iGmOpRMwc@3`@P*M#^Sxn627%5+^VzZ*6k$w5YU0gp6Ra!4Zbuj#G6{wu65W ziHt*siDMF(&_z0EyaBVkOZK|~Y!M9UVQwrF`3vj4`nNGo2)s~(nRL_8pB)xH&hhJH zednu5)O847?(eSpS~YKUyoJqv<-r|{Hl1F&j81o|5aRPLQ-&VI!AP#nK-uQ5931is?rt{8V)4`4X z;3LiDURQYuYf@-S*w!vGI_=K9oxTRzVEN(?zjI*}Vn$)wKlTIu=?%di+m3Bw`(y;t zwJ>y0Y~^(WJPgTydz!mzI?n(jJ|G{xXBd(bvU&tSk)?vTaE9)tbLO|}XKN*Hp~t@{ zdCpmOGeC9iY9tpA`LmXSY8IVR#izCDvP@w3g2mIs0XLICM-uf%wB)0J5|X9%S%6cE z-~eGA>)IE&k7!71N%;LiA1}F?M_FR+AQ6r^_k_m@HA6Wp`PIrS*N@b3QK4kHjo8P9 zJ908Ku9>Ymek@C9;W0Jes)P~+dmL5lJ~PVxl@P^eiFDZC$qgnd2MMy03IHA_)%)=K z*ADwpT`+5TBr3Y+e$$GW_Y#78!IAMY8iTXrY5Zg<7xH;=x0|NNMA71GR36PQYSXF+ z>!oU!Rh0%}rW?@`-7=e6A_-G`iqIRa-=-a5<`gK5G7mnY&!SGx_Qd*1DGco0Ex8`e zB(fb3N&FzHof#cE*^D^iaZ=*$#*fam4GzFT?#)S}umMFpSM@$CY3>=^Qxl_T$B8+c zsyMM_ALegW59>O~m|hB>{2N#ebLUSq)bYJ&>q8aA8xWDI{3JamR{@|(Yrt^QZTPB~ z9ZmI=IHXS_WL`mNNhiDrela%>HrIXjqKN@9j@oG1sK z9SiH!g$&P~Ln3_WRYN!&VTykDC8GHEcOz*p^Ox4G!^-+5t3J|aRtVyLf3S3gIKYN? zFoK?kQusSxc*Y;SrwBiPj_63w1Wl7y__{Uo=fO%&y>_pJkBO~5hHUz4-l-J7>X^tU z?LS`GFGLqbqAxM(YWK2h#NS~S5#9ou-j9j(p97hgD^*9aGS1=%Dr10-XbD6Owdo#TRXBpi zMsGFmx(tbf@6M6nY8GC%XW!95rCck5u-NscTZ4;Vw^fU0AR7hpIGrJP4Dd!5%<2!c zi|}*Ml?0s6(l4Ht?z4>7(8wfP>7iGBBP-eZ<*A9jx5CPsuh&5ub8er~PUuLr9*m?K z2+w(M>4!@<<*0n=E7!X9baLKsI=fxO1It18g>9h4uVkQ}<5Wcfv z5X7*cis;n&n%4a+cmd-TfS?&y`9d*If$2gptPq)b0VpAJr|F95!ZouGCku!{d$ngDbQywm;Sw|$uRDR71QkCt)Sn~O zR$1_-fi2*OzyKD>1~c2ZOR0UTn`}0x4TyooK1ONvfa4&{a6@zZEmtX99S+%{;x+mx z36f`=C+dCzBw+CUNRw!l>mIi09KBz4A3zkwH9qJvb7SzN^Bw$|r9gYT zTR@wF{P_Erp^A8&V7a62T);?RhR3g<)xd4TGh|V)9rmA1zHf2}ZrTeZaR$F|cN3n_ z51-MC+4b_4kYmkKosvTXapZ6_aBmo57en5aDgQun z|IX>m$oWA4qz1TjP%ioEuJ&Za%4vyWwElk~ZTbAa9`8FrWx3PDeLL7ir&kWoCv7Yg ziwyUJknn2fs__av^^-&)24D8+x&4vOK=-RRCg>r+uh-~*B4hf`J6aK*zy5E){)PYQ zZ@~V=%l$WCe*^Y^=lcF?*uQ9#{|4-D!2Ua>6}}KP0AK(^fH&)@007#y7_&$8*jpgI zD=vBt}%;)xa2X3g35mZBF!oG4I`Wl>D=Qrmb8Lvic$d zQ=tcIC3bc+;2heLtXA19yJv=L^C2CIU@0^a%C8L&Gb>j^Mv-WT&-<@ptv}`qO`-hL zJK!mgK8SR-b|B@W=t^!Cf#xD^rg*mt4Fkxp)1)EKw<7;F*&w7C3Z>LQ$PK* zpK~WZSwXv6KiHW%5|+IZ!-~Dq9iNt+7mnO#8vru)Ij_TEkh!O=n@t6HTYV^hg2b*} z+mu&R^%4Kb8R^GJONC9vic(HHr-c!U2RTN;fq1Q+T2#SRv8n$qvjF@O|x(wf#^ zV?Zu*UhyqSJHDX__xPo;tRD~vJ)@^Jph}N%n+(Pm7B?~(_fWvqo0U54LwJByk?#)6 z@Xph#4=Igc#Nq??gvAVLibt(MSr{ZXRH15)8$~vzJE-J|j*H^fUE7l_Mu9YX4-pgB zg+TCc4-r?$Q2Y&!Br64c(SA-EY@r_6NWIj&1Y4pED8WpMjL53^16miy-Q0>AO9sHT zLX;Wzui@mBrFfTR%cd#*{B9eR)S)l05xS}`TXTJ#!6j&+aPCwNB7uclY>3a;IqnP& z99Lpw1BOp>Ou?Zvzo(1fQ+ODO+v4bS5Kj*jb8p0ar_OC%<7k`TBLv~T_pCNkd23$u z=~j67>z{s13%P7v)1b)kbGrwTg0kuLaH!Q1iv{@%A5jBBr&robZI z-q_zJ941JM-jUDcGZ2`}gE=MeqtMLJve!e$JyDCWr_Z-y?8&Bz|LZ4thWT4jBG7k! zSMj{QJ$wm&2TPFvgdIL9+E{UTykClLr@KB#Hh*iL;a7`C)tA-yZA}7614Cm@A{q^m zYF1odXz4aD0doyKUNyesn4lbg9S`A$qKD6_ySBNDyVNkqjgIvOE?UTbc_ypQc|9Yq z{`~FcvBj~3$AE@Fx(}x`E3DM>I)Z@M4@NJ~)R{}Lfm*nSVG(vRr;akXVze0|y6#$t zP;4hXiGidh;$dS>-ax4mqM$w|8=e=P6M1E1BkCk>5l9Eae}*djKZD)>Yp*!b&1&CY zyY|K~D42==;6@uqCo%s^SnLx>1nc9@>A;oN8i=O@4k50WJSKF{l3u zclqyqz<=s%^v@>2WA(qj^{;RJ>s$XnR{5ugl>h&Cs{~vI_Zv@y&+U$^po+c`_u(tv;NUlxrXprb*QD zvBFBzJ`~3CT|q2*NSz!^#c)3o`_;BWTjXi@*|0Y|LcPT;NGwmr4I(^LprHME6Ox z5j`pXK-dA40)XNVl%9_cWRp$s)mzVab(#2TeyUZ8z89q?o+M6E36^^KcEV3fsWbZI z3zQ0g@H!^=Iz6eRK9c6i6!=lwSIF@vd|{>jP@g9RFq&|jg3HlE zGV*}%gF?JK;9*1i1^m%clVBz3tpgNySdjuk{zR~DDNm_zu|1{qO`WAHfUpYyAK5uL z%oGOqx~pA3mO6z#a9l2#W}XxlSvXhbQN)ME$GV?t02)^>cfRZVOKCQ>maXj>QmTWB zknsaLu62GdkS4C>*O{}OtC90P=jEIRU}Jq)vw9=lmf|A&=oisdZ(sc%k+M$+&0PMp z<4U0`mc=UnpD|hY)S3qQw~+vPq9`?YBT=u^SX*waWt4~uP#0tBdB+VK~@LgBlLw}|0n~2PaFE17#uGc0^rPEw`*r}EH$)N28 zIN&azs2xmm;2$3<+x_&od{gql7Z@(|CI~=Bls(^M;IZ=(C5w6g6K43+rXorQY6-GE zfZrFVJ6l&H6{}(Vm`h|&8dU+gvbKm9fXRv=N?4itJe@jBam2QDp^b;23lq+Gzct43 z1=4@R`o~fH{xD#gq;Q^)uC+Z)oxwJyWKRMx`DH+khNrNU%jP5^wNS>~;498J1V1-= zd}dbC{fqLr4j<>64Oh;cA5bgBMstfzis*HWmcC<%pZ^N*!AxQO2zNtU$+Ha$F_fzw z+bp|oR>=`@BZ@yi8VImhD%!o!D#Il`=Cw(XIRQw>z?XioOqYRRtQyteXRFy0%rJky z4xg(=G-h5jH!&$&|IQ zh5L~fC!}t??uPU{PJmZ?rM%N^vx7L3RF?nVjkeA4m?6-o4w@6)KZqF&iI0>@JxMsw zRTZZUo9%))hpn`i3BRuVPyI=lEavwW@13-yvU?6nw-fI_BT?;v6#Z>8=Ju(U$51zc z8a=^R@x8*x2_%j2W1^Ih?PShemo6PwaRt42EsC3G$4{g6-#pI}Ck!HZKH$Z-<|CUG z>>eD#kQs)*qF1b&m(RKDGa5yyv)Vwjm}7=sjo^tfFY;kQEZalr_j0g zSa%9hCz6YVQ{V=-Yh(Ariy;??>L226Ucj` zLWZ_QmJAc{=N6`F7bHfAa7kyAl4HXyJ;+fFOYg5PXo)A}H4t%Iv2Ji*3cd9>zXHyi z$4B9612mci$qPYHu?wkOB#)|E4;au`yU)5`vn!@-r)%czOTUusAQ?+T>rRHjSmlr) zWg1Sv%5rt#7&6{1L%=1?_|*NV(t*8b#;-jdZe&2B<)T?houVmF@Pp*${@q}zb#*%@>)v#yiUf_=SMD) zo{BusIAcHN2EzQbVR%9NtX~yaJ40{zDO*2v*n)BC2sIUAmGgeEYXXDGQAj+vvfZ*g zd1BQHP_UNB`&l3%vI?qefMl@lfLRUlKSQ+nBJI@>U%c{rF2!{c8YdyhVVvyw_|`Xe z3Ab1BMJlF%=M0sZy%DGm7LaHrx)iApFT{cP^+Al$f|99>fvVL;v4_Ez*67Wpn3ECL z17nCnu(ZzcJVRI0tBWHJN?S>Fw}yO$%6Z)}N;k$Mjbq;2Q8bh{&sko>P^Mb66H zA6yN0Mp1+9aU*hr1Do?l{L>rE^Wy$lh4D&d%EYf<2u37*dxy`>yH^9TkWB#WAsxPS&u_%%K`fn+H31s1W)|~Ls-I<#Yo3fpcN9K? zA)Q)7V%Nh>05iPbHf$ekFp-rbQ!~?N!5`CeYPj z`G+&%3Jhevfnu6j7TC!OfWwdU?oqEP7qWA*Ci`iFBBFo1OI7{{dNHAd3<7>tuuik9 zXSA_Z2M(jg5E@uDrR0kHkZk&S6}ktqm16~p^gxC{HrOG8HFg;$M~Ih^y3;3cHs3|S zm5IH;e~`o~&+1|Q^*Mii&VO)4{`Xep|4FR=7uEhnwSQ6VUsU_w9o7DQCI7`&(ia-} z-`MuoywAV&O)9W!cu#`a>w)wx-U9pfZbAKT4V5I-{hEK-_J8H~Hh=1=T@}S4mik z+DAL((Fv$XC^4^Z*{X=q$Y)>%dWW^+sXez$)ntQaJf%yuz&sIaordFmt$NgStZ9+) zRtakjq4KKv_CKp%m*IYcw8~G1GEtN>zA1!ejYxwJ=(pPpax#R2Wj991t^0eXi*m||J^?(A2q0AOz%n&kK&SM$JpZ32i^7$NS$H)pGvMUvhoNu?k8 z@@FNAi}qpX97s5&X>bMMswL$_vf6k&+=CsSizO5Jd4{hqTNS>a=<+h<_V<{fd%#^Q zRvg3DgCwKzp52kpVN@+7DDdKLTR%eMj*|BI3jp3>`IP;rzKgVpcv-?K5lqV9^N6$z z*y#vYJ|wc=PVt?X6ZkgjFEzxHKg_-U8sNqp#JLrZgP3+80|1X5i+f>60a#y-oNl(z ztf0ox`yv*{i>ejko-;zdK`8JPe2AXB(+~nIjm+PbpCs`*;gg|YBaOTiBEG?M zS=UhXA)vNqw1Mk;DJI_195b<7)0Q#!8g2iF5vXamk&$K{*x#A5$M%YF7Y2Cul zOqM6ZfVSfX4iQf+N;OEfmh*}6(E@|CQI;;SICVKYv1~*h7ONW3CnN&*vZpYISa7ga z6+W18>?Ys5li0j#1Y?JUxg+e%hC;N~&g_EYN>NO;yJ&4#Tq)OQr0#*=;f~(4DzGddAN-%>X`>2L{Q(_ljiP7oCt1}7l=z)nn=Yc2e zb*H_uQ;}}Lp=f{foxQi`H!qogGE5j06U$2i43HR_IR<=pO4LQn27FQm;%2x0EJ}G3 zgmKuI3(*+qEn2!gveGYR@uCHoXwRNOJJGwjX+OyA_Qo+ruI>PAa4m+2z*(f77eMa| zq2V}(7vcgo2@T~#nF<}_IB`-qJZqw>rFw;O!r#M*edEVq+c8U?fHLw@&N@h)`%va} zDF0FNAvfSBm}OVR3E1CNeIvhwU?jX1MDu_0JT@)>N$3ZBAq!c?j62KXan@xpS+X#P zvZ4B^rNvvBX@%I(%5)N!*0m1|q@^o>O>SwA>$c%XSym~_%&!N3L+mQm%v80iT#UoK zJ3KYH@919QTq{^B9q5Ue>AR%+0OXQ24#eU28Hy)3jvwm)-Nx&_7ypzZ1wps2!SQ{Z zCUym*D|J!6?)i!yGxt%-ex)3r+#f#_>doo|KJ$Q*2gY`dQ;%zTOr}$^Gi=P z3x}%bv`>XTUVWR_&2gS_pj{{?yBwDcuDF`KvGS_PU0L?jI^+R2p(ox|N@*L>g^3-# z=mi=r&C)SsJ)CQ@=x;5O^3lM$#AnD)cOEgo6~B&Qeg=WGYk>5SX6;hg8+6C!h=2)& zAt7n(9nLbkZD5ROaUIUccix-A$^)wkWFKPyYF<`2URjSjIQHDqs>bib8w8AUFznR@ zo^H+eQhpD(W5FFY3*CVGx`V+Ni}}o?p9o)Ou0>kq%!nm0*gLoKQEn;^_Qf^|g#z7O z`lgpSXawxwK5fQi-0laSOJ~PVWQ1M24NX%v*dqd*>yDZh(UVE?1%uR{w_zzCkWtA4 zO>S5EoYl_YTkjX0Fw`(YGVK5r2H1Zcx|_`%@oYDATe)|GnVoNAgZvuJr4z*#$VK3$ zk?;+;96kR+!Tqak#da~uva8gsBPd(-$RdN`tDtKk{?sd98vnAX_J*#-Ct|r z$UfjlXEhUaZiKlVuhU-u0Ajcn0OJXcT3eF4>ioQ53Ch*7a0po%ed{bvlzqOfLDAgMBJy_XB*bE%wIJ_xQ!AJeIM zWvxSKHnHhD_qOW$-A)b+?w>uFEM^6@ZmjoVmaw)!2}d@@%w==Y|dIF{GcOe_)PU0EOrAA||+T56Q>LPv$oz5sGvHo%|65$|F6 z0sG;g?p-$G zCA{sXW`I#^7^BFd^iM0 zIv+iQVXYm<@ns*}!lYuQaphZu<8CC5hCCJ{0TEvYFO>fNr=j1#K`|3orvyynx8*O; zV|Xi@*?UFrt(R0puJ})V=0$S183r+5`mk9!{Rxv2vv7z20Y(|qy*^c6v`d`H;AM+d zI^pAj=e$Wcki3tm#IHgjHw$lly_FqAxoJhl-rF(BX~)EJn3d#Ug#fvSqf7$?c_8DNJuBBGyDUV43MIZwapJvsfzc?cKebP^qIO0IV{VfZr;~zaddixUl7fKE-)iF~~@q-H&!UrOK_{?8CyS9DGizslwFMSkLq? zTuOsn`x&OjdZ`^|JqEuUs~3G_i#X5KXXE0T(J}F^KzmJp?Ifb1UAa|BDue|Czi^OE*=ZuIInt3YKohjoFC z?A1_5_B?>?$|7OVP&>D65roG%1Zo;YbwLf}FliyI!;$zy3|0$9&x@X_Tx-Rx_~m5G z&9Kq#be}Z3eFL?`U5W&NEZk(;M)R?0Gisw|Y3-OttQ`}OsO1}bx#gx+QB#&}<1+wRW>XF;AfM@tVb$MKn>rIVp# zrkF`85&)yhIz2z`BDF-GnDt1-86X;es1;!JOMKyH>8$EG+MCQ%1A1JDh6Z5hW#(5i7=`i{>ZOnk zVXic-e%W(ms(~II^BAT;29sxD${1AC%_8V<{i><#7B0r;#sZXvNcIQ(=)fV1SiyEwDGg0B3)6f3a+ZTv>8 zrf3%g!-Hq=ty^E8)b67*)`&8DNgMSS86H@y9_U41uUA{rFzA`Fccj~X3}pf{L%aXY zE2m5WX0lS-j91Y7mjjL*ogSXoaPy4TfpnqU+D__YHaMPH{WCME4}2U~Gn#|GjQ_k5 z(#V&l+^L$W9<54Ln@J>l0{WOHK$yVx{s-oEOY0Q&qFk>U5?Ev%tQ4>M{LgHBeG zvqVcP>1gr=nSOep4YkxSDNU%NO9P(Gsd;=)e*PW^No^ZR(D?k37>3X+{|+F4Ayrk^ zCam@2n>sDd*}3GmwRSwvJHhx)oa&z>5Z40k+wIDR8*3c7f%Qx71<*bvqx@z8JZqdW zDNn+ScY=^thb9Nm-qdav{pb;T|L2ub&FDirl6@r=uFtjJ)J0|(h#}lVLs~`aZ#k%C z7ktc4K}Qv+8#XvyKk0zpUHT0;z2eHm)o*WCjMi%S+| z3|zirCD5C=_dst=GS0HfVj2JV_p)tC1yuLP^@mO~!@x)pn~@e2sBB!JAK<7WA(TX& zwew$u9KFZa3WpjnZkY6EY>$fHzvdjdSM)!3zMoE-2Ka8xvQIXrJ61vAIcvin#-@pZ)|?8jn%ttll@@BdR#Fe0c`qQ$d}Gy$K5vtl4z$IAHIy_8gUShE z)-C51TI40)RkpPxVl8iICNRpRjPxH0Ln?aMsd$;ur_$d{YE@gm06)k|zR9uhVSohV zSn;95XQfV>a_})-$--j>fFY%C3BH1(0~-g4FL(C8{1}y;tuQH~3O9?0EYQFAug-#k zKh5d0^*2($Vjw|ZNhPx9H$~XsC#tD26>zVxV6qC%zB9`BXA3a+w`Sk;4dh71HSy6d2JI*EE^%wE7#k;YEUq_C7U4<=u!kry%7W zXb;a7!?c6dR2Cd{U10;?c0#!NdLF^3sIU(;e#yaFI9y=M9j`cQw84q{WZnLt{T`}p_1x}t1;DEcR5$Z&6 zRBx5`YZ-ubqUelOKB1jk?>n&=5f-y`i$hbyAV9eV8h*IA=BQ4#EB)}FJ&V0e*ot!w z-ySSEEOTr9W!FP4j!}o+7u}*giuK?eCELQNT&xu)S*}CAwW@|zbPHj-I+H{?2AAw| z1ZR_t$G=cu8y3@A)&dhfu<$@88tj0XaZ|6NMT+g)JZiXJ4Y6g(Mg=Y# z!1SYfMlP!`5HfM-hRs+AVJ2)hoj+j$8gYr=7JS(gvLyaAl;=m|fXVmTlPXPm?rxyg zTTO)Lt7l{e%&C~oBjn}0lBA8}Nr6{#(N$q*e$(=ZL2E#_1{5HC87*cx&~TTwPW~Rs zg+3(Nw>gc%*-qWrLCA2#vD5!p#1&_-29lu62%bAUK?B|tXND$gW?M)JX|JOMe~Cxz zYmDLHasyLa+~)2RcLE?rRfvcl8_09C*YXVq0M_i2sj)XJCpL1RF?@N^MR zQBWI&3}%ud4BoMqrn;`RGKR9#bagzX(lHfU?l+Ya3kG8xin6-7b!b3D!O!453hLj` zxghVLNyvy5{qX9h8PkREy@s3cFopL+c$1QVF%n+nyTOt7?o^HHepqHeN`zfEI_k12 zX^}xtj@%uO|9RS6Rs~Towk3=9tIuLf4j!pz@o{OeLWbv)Twv0sdNIySrTKycXte3| zjCYY(5ob%9b=sN50?S(Nj=2SZV~i%N>QE-9?taQ?EuX5kWP7hW(l+z(u&Rmkk+`)S z;jC>{c-G2l90#e)lSqvTB5QB-`XUPiXk#jUTGg-F16J~Uv#~;=8i&Rdis7lViZ#c zYW4M^Mb@Go-ik)3PDgZbHZV2MvG9tOc3Q@fAFKAtz2X{aou5yJ68X>6j5c1Fc8nKN zh2YfZY&>{B1)4Er$FG%j4MQTEw<6d6l2y-aL5A~Hy1))?UK!)KrVPGg$zm^9j%|pi^3;yUWICh%ioRFiz|72#B>;*0M{Xeio>A zXy7n#m2_Vy_j&}eTya|-WoNr;qaISqfLcqW-kS$s|8%eTc=WsiTU1?ZHowRbApT%h z&*^cMw6Z}HVR4$*<5G=&ZY)$5RE%uE4DxJrD0&7rx5!h*peUg^zSPvV8wDV~h_iGO zmYX&#oQGFdc{B)zIlKY2bo{BUjc!OaweoUl?Wtb)Rp49FG$`Fs81E~4J0Pl0x|psM zb~sprUBk_F;UO)Dy>lfQXcr!X{{p`F(?jJ7mn`6(dqB5uy7k0-+WK15TGFn{HS3&As~`PTXe~MhV$X2L4wU3S}fKSDCF1?^Fnu zOg^+Ktc$d8;7Oa%F;{~dpyJmkYA@5~D>6 z8X^as^w|(k!xD9PKja-(C~k~~2Fd|o%h30TT>M|&0k8-1D+$Pt?YR`S5a7;xzo=-) zp*<*Z!oQw;Y7ai6FJZc#ietU|8J)>nypNHoFirhYH!w42K(FeC|xE#P&NPTwRL zc)&h6=fI0o+kkb?NN3%)?6ua@mya-g$Ym%M1o&iXh(%uekfX)YwGr)-jrpTnGV zXLo?VDp2NeFxvt>5H{q*8k4h^g0*iVMgWSW5F^!tyk3ktREShBV|3Q>pu#P_5?}*Q zb-Z{Vdz@&@emdI8^`rfYVFLTf9zd7YC!?3v9>3_BShJ#5$c>8-R#qb=n2eYxKE*1skOgZZe`hF&hjxH+&vMUi3MrAK0|MX{)1m;!CGq zZ>aFWFMRVj$@qpA*L}rhn_VJlGA*(Wp6+js7ZfQnFl#2xfh6`x+M6-O*~ZF~hlq0F!1;)<^SRfR2J!kP&H53+fF`g=(gr4~^`-n|23OrXDBaLVoq_bnK6eZ$}O;)Yd zS{#rdKrED}lRCjY|=R8j!TfHs!#wkN)=ej$Qjm_5$|A1$E))*m^bhPC8 z1-Gc4()5Sl*0ocx54aq&CJHqB>!=PEQ60ZgcsT^U#qts!Gc@CU9kKR|V!&e|$5nQ4 z_b~${9CZiySLWFrZ~>P7i2ZM0uwcK)yB;)^`xPyAnU?c<;S4fVv_yoZvkG+g2~2$1 z{{bdI*}n}F7(0`yS+A#?*!6_@>4Wm8@litWO(PIoTwJq$b*sc{QxwqAP zcuW{`AR7Vj+VX@Y(lDCrYSswp!*n&T)hqxE^|a6ncC>K^KQaV2vPE>ZGw%{$6lo52 znY(LqGVgz+v$<#$r5Bd8-HR|y*l}gL9VrMws6Hl(=Gh;LpR54 zPv#1whb@cDFSV??NeDTns?FAu+;2R(75Nv0Jx9GhE9JRQuhOhJcv&pvk`^yIOlTtY zKIjMB8jbgdFDLr$H)~>ukPw@#e@QlyU~1*3OI8(&ug@OY=%~=GG(Ws|&FvLgGk4dU z3)CJ?!p0Y-RQW0A5rCzC#0l?tLfT83KZqg$0*kO_uWpxaYb@|aj;bao`r_U)-IG4y z9-v^QQEd#&^r&1Z_qBdQR2mkX!+}#R1MniXUjG9ON2>^+fDS|?0Vp2wWesGA*Zn|I z3$G7RZ(P2#*q+KH7nqA7@N>swFG-Kc4h6;Rih02qBuGT0kYTJNnpRozo13J<-YZw@ zCdN5{bWM0nZ^0XEPHuSRiDok$QY=Oxp{G8d^#Qz!#V$p;tm#@7lE z8q)NFT*3N&L|_95{-B1QM43=#+fEVt+Y?L2DP^owN`UN&V+ajUr)5Eo&Kgxn;*HgX zc^(^OTFI`%{(NZ*a(mPlFQi-WgU`RE8GzwLUsaJSQ2a+FX>8j;F7|qHW$|#F{Vq9t~F`TVy zf}cc3^GX~ThvW)=)a>KIUx-%+s^nVV&>FSw=>e&r_@npbJ0o4RrduB7Ze`D)2|7jp zDW>426WiQ@S(5^aF_( zwXHXOeV1ZWY)kYZS=j?17E~ydah<%S(8D>2*Fi-q!*rx5UeD(6(X-cOXP@D;#MC zXn1R~B+PSh0T)kzvI1l$uruZYl&+n7Nfg};9}u`8u-O~U9TA4l4v+>< zYh@?*r&hWA{4|_y`h}3O0@_+74^;iCUN>_1(v%m!nL~Xv$_NWOW-=PRDvkvdBk(Px@u%J?W&9#3hqEO2Q$|UCa3YeHKHR^5MX~%c_16m zs?0}0>2dUpmGIQ%EGw;fXVPzeyM*Ndw}`Croxhj9uB+PUO@Bxw9F^ym>8~(j^qQ=n zmex;2vMI{9JzqSJgjzKfh=5_E-%2QwQt?X>FpOo1pxOu}(1d}dT`MXkIJBZZaUmre zsa9lOsmP3adHo?aN=HbkTR=wej&%lZ)*sbV75(j)5%i?`(Solau3!U1ioubx{GX+D zOpJ9`sk?B>GNI$n80{Uf?4~=60gt6a1?m-@&ZUZx@$jm#SFNr&NWz0@QVq<5ALEw~ zWi957TyMv~Xf4$HAAxwt{Zh}`F&Ihe>SC>Ga(F7qXaW+T_qcB_^-*n#jn6Ob;LC7~ z!C#e(nmg%6?8E^GiYx5Y+HaUG&(Kk_HOAFopf#=S@&h{7ICz(K)!KBAG2sg_{^1slHs^Uxd$)_YZ|K``;Ix3t6+2$jX26A-#HB zy{p)y%*z*0&9h9A!hW9~~$^HS=~AziDY;;wWDW?uttUHbJN z;pNrmU$<;F-#3(@ce0-pK`)$f0|Ak|`^E#Z_)HbA0=*~~B5?OV6nd|FwInLW`zb1}kSG5=(6-(^$XN z?ChPnY4qSZC;^jhEhljUr^b4QpvFo`rb=QUGf=Q7DjF34qLd zEDTI)sK;quF*whtyTbOW*DM7hti>H~Wp)=&)b!h|EM(my4+!tnFDzocZ}5DEc-Nv3e~+B&pNfq?1j> zdLl|8DZ0`o7R%0=n_?g~r_8$vH%M|MspH2mUJ~EMdgZRV*GNO^A^73lotaVX(FM_17yX0>AxeZzn^{_t2hvAJ+0V{=qmA@o%T8 zJfpYQzo*G;(6ySI4rwwO8W}?1 zaF>>_Ndq(!&saRh40?In|9%m8m^u*yC&j^|kN#n(E+oz(nN9mMQwqd~A1Rwpw=u7K zv3mK=2z%lzC{PGdYj=U!4Jwodj>vKH5y#d5cLdB--F_~;dHNSkA6v}~%<)<%gOPk5 z(U551zSw%5GA*60c!eTH39*FdL8(#dWPQUzw?~d|AyN7(*4v_8cpO=Tcd)vEKGRg7 zCumC^Zv>1CD$X^kFe~{zi*cJaW)#(CwVsiAPulS6ZdDgRlRJsxl>L}!#&))Pzm8A^&j_`A?wF_4>}I~ulS!84nGB5EQG#7L@nN0tNMm4n|#H!u<2q4qM_`y zlT(%zHRK}^VGW_N%pQ7zA};*T6(V!~_la^8sa>u2Reh2wT@^eARS*;~d#&@u^^OmP zQUm?X9|@4&Rps>x5=f_fuiTAc>IDLI_Ry+w@s8~GwBz1n)iuqt%+d@i7%>}XZlQ>P zdp>+4c9mnL>iTLM1oK`1Rs(EIRe4EN&81I-5VxbA#!h;2U2pz|!& zm;Jt#x)S|prmX1jN|<_kKGa$-htw2@VKA1)>L5Tb`MgaN)TXs3AAyhj7_=AOy!t;!Er2 zf=DDErI+vxvZ+Pg#lpK610Kjb%8hF~D>ZbwaBp_lacHHF3^ypt1YY9guC3iLBd;@63R#XdNC&Xdf-7m5pED)8Z#^-XzK&!b#Amq)k5U0Me`mLs0zOqG{u;A^z>wPWV}t`)UfYTi^%vQn}!mSc@ncj8Fi<59m%IP1v5Of z_p@EX>d(e-k}V{+pKhq}{PQY+tua=16NI_<9O*}$mUxrEVa7-H+J(Y1k&;i*kf7J4ot7uaYj^!#_!}T0mWyS1iW|-lNhQyj zC8makkTD>GzZ4RTL`RiD5Sx*UBPl&M2IDCDE{?rWOf6-V9Krts8cAFVF7|HR8 zmCjdSz~nbg{&cJtSw+#r6;(wP6vn)-ybd{R)p!ovhStFfIHg#gMIsg=k)-QB^{EuF zBCN}DU&#KDJaI|j2huN2S?k9v&b(J%pE+lT?*|VmdY-=0>^!nqWr&f!dzsEADSSZE z;$*qUTzsrN5qm-A;pf9nWP0T`JTXwpdWOR9i054cX)x=RxQxUssnR7)HpR+rKKE{R zIs!%!bX4f-Rh-^Q7U?1(7SRmv>t;{X1MIX|5%dv4d2_O`wP>8u72WZ9_Fmnha5%Yq zL~<55;n3(`q;S74)xSxO>ZPWje(UwYY!ggmo>+wK^g8)LN7bOgZ_qQCNqWRwhG2n+ zWQ4V->$6)XXxF6(xhCA={PQ2Q7Dg3lIq`WO zU^lYZlqS<7S|ljaf7FP6Mf?~Orw(v65%}OU;NCtgb<8*TRbn_hE~p=?*P{gL7=*yG zx)#DINdZ8y1Zt!ojSVU7VZKQWxvCa_I1M8OWql_PflN#rr`wABI*uD%L{k$?^XYnT zH`Zl)gn-*`v;v=w6ALpJoB}(YDacF(OHb>N6f^xSgA@~%>R!ZYG-f^~5Pn<>crZ2`>OT`X^!q}T_ zBqh-iza)v8s<*><7;0Y+NK|Fmc!)lG7yL{W>>&u2AGKDEVm32QNpSI#hfc!n4{NbQ za>($*Z|R3xAW{T7<}0@IW0PgD*d_XRgOAM_u8Mhl7_@UxhD@jlkpeEJWe%z?)(HwG zFQ6CVvCkX3irmB>d`EK~(6?QP2hf|M|O-gvd@kIV}E;_Dfq;EVHB3s$>1#Gc=B4tOcy zBAplHh6#8Z$bPN*d*GU2=gZC?h`s@$)h=v4-dn|(a>dJouGuW@FH%>Qbdb^ubUOqi zU4{_lIrHYBi@tgrneI*B()pd|=CN|O4IHps*Q70`mPBfGrMzmC|DtZ_DYr_@9&~kQ za#+Nq_=T*C{n^2DtLThmH3l*TSOj-PuLSiwq{`8`QG>;rhHrNl1kMDu1gX)djax_~ zg)eVKww32rY`b2ZEVd)xj?er2^>Ai)4ltykez6dhuTJAuA}>!Z^;eQg7i5yTdwfvBR#l{+B-2vjY$Ew>3Q;}l zFGHLz%F=lxcjB?du3RA*KEuF`Y+0bC`+-!cWVh*evlXDOQ1g19$~8j(xdu?K%JP4o z_-z8yW}S;ebDgg$kBt!h_54G0`Fdx@QwdkVB>67S++1pH&3gvb^EnarA}@Nu_D3)M zmlGghAbV+#IECeWCMr9j8$_#eq05V0(U&ocG^%F6r00ikqzydeIthY0*T{50bwZBi zq<67%4IO!(XPBVPCz`G!tOhtb|Ebg9iT2 zx;KH$n>oYh;%#4``i0nI@_h~6feUj9x!?s3ADX4az`RjPc@@)9JNw7q^o12*=_iL` zIF<}AWYJmoha!8_l~aMZ!ZW6{8wAyMpbda7$T9W;UY{F2!(KmPX-4O-xA@roHl)kK!p~L&f{7%?Ihfqt{Q4wolaW7WC$E4RhRIp zRV?cHXT7$$s2k@ALh4_ocTG^yb)hbZQ zhxg%SUa%Gx^vtxP&jrBDIl=u0sJGwXCHkUkUJ@4Sa@=8N^K;O>5s|nGGI(P=z>})s z5t;y^CRQgHWkuAWwBBy}hBJC&!wzCdi}{@#pB#|+vKN^liWJZ=sf%eto%z^)Ls;p* z?V`R@x8W){FiiK6;p0mqAlLkJLWFa%gim6}Z2)vW8lJQYY-|2vJ3K!?KrTP^E86{< z$-x1BLD`%HC^dW0k&b#jt9Mg*C4S4%fbock(*vbTqF(aLdD2%8U17cmpW8?wSd;iw!*q4@ zH&_cD!|oPmp@195H3_CN6yq#5dh&fc1nu{vzXi)@X*+z_;AOHc zOGW@&Rs%(zg=mjg>!EeW0&aC3f>A)Gl1Km^D{ZI_CxcG%a(3;7ZA9=+FQ1_U!&tFK z@j;=h&N$@70gMuN8<9S1E$F>p1_ObolhS!(gh8?>%RK6Mdmp>tG5-gvoh`b>yjsNR zf3o>`(T2U5oEaW>P!F3Ly3is|R~ltcQobVYbADG~w~-C*{{gm>=~dFGhtRvp&7P!6 z4F;8x@>f%$^9LBr00-f|80TX9Xoi*S_>c#P81pQ~?rRaW=dg!e3I9>0lg|bc5~==Y zA{T*jI+Yhq#abaZw+YcgMikzJ1}#eT6@=)#&*WzxOAxO?R)=$jwgdXi+aHpp%p0Fq=7FQ-i!sdym_bMw={^n73vELU zZhXFtjgI+8MdKT9FTVxA3u54n`>?bHfE*nDR6PrzwR*p$6~qBkhLd;J)aO0JH1q>` z_ea0l?p#i~JauZ!#r=RxejPhmAOO?9R*}~@kJFe*`iAn`*txl%SjrpMfv!|=Q;ebN zpfFQb1wXM|aYeMgzyg#jEs{LIWfPI6TZ30vI-DoE@B-}!-*@BcaBNMjX^M<6XRR5W5k914kAa10+$I8h~yYbpaQj3JZqr(RaM*s$}&&$sre<{r0$t zeoN${hWAN`Rd3Y*kQ}XPfs148XyDoZWR>ny9R@ zDLl@Yx5K~bXbKrg%dE4xmVGhO`AH);=U60k?pWiTqc}WNCOBElip<;^s!wAQeGOyum9yB7-&p0kITZX_k zF=g|Zc3z7kLS@h+8|2}+f!ngm*W1|Gigi|vjW#Oh3Z}m5#NC)O5(?ofdCFr-pAJ*MqFp-Pr_+7#|qaQ={Yw@v~zI z`Yx*3{I!unEqc$ZnnI^jgG3`98b!Fl>ec2Wy($iy@u?5`;9C+vU7ZYOA3b%mPRohO zO6e2|CguNi+M%5p>ktkE*C?D=%kLC;g|{X=`EMvcAw5P)1b-;X`@|u{HfSX3`C=XX zsN|a&>BWZ;R&#Ch@PTcm(PdVf#%K_L(0e#y`tz0T-fU3fSa~Aro*^pu${(gtZ&z9+ zmJnf?;1{b3UAz@i-EOs0#Rjf!5Je_0%@dNYL6+6Kr>5TWc)wfFf#xPJonY*joSp;IKC5`g)XSnAXo}o!A&JMe2ZRQa@&mK}(T%0KIon`5oXxFp zL(uP+kRtyYqB*gDq9-0vZpk50*|Cd;i*>Mww`#@u*uRjC1S6Prn8YhE(F5!G zZtJq`!9B=gnVX8GPZ<)jll#PB@xGE>AafeF57)w3gib1h83!h zW#RpH20UC>Q#yowuE1E=ZYJpD8DP`#$n01hZyxdD4aMlYB8M;U$}M+USvBNWwvbvV zQON^*Gv!&K%FxX9lY7VWMuE)aKj_^_|qzG9E8kbtTvQH%E;4nZMyRMGo5ApDPI_ zDT0BD{1SU-iGtmC8pU2Lz0#~QAeBgdHzB9E_1bg1{&{sJ&v+$4?PoZ7v$EA5nu#to z-3V#ItAhlX93|_hj*(=G#4{^m)#Or!rwK+#{}3tqdA)CPLOvw&HV*d9FzD%%);Hd1 zOwbq`Vn2(xFqlTCYjyn11+^QIk3ee&^{ihjUu!=B6Srqv8?;y&LPS<+!yc5#96XCgMNh1Tsggx(|PC^pCgk!XK)4Tk4lt8Y%#-YkDVk{IIu!K* zR?aX!vKEZ^EGOxm#D9()!t6Y$MQnpt^|E9S>su-`ZVJ-(1OmgTWu--9w_}HUXGOKy zgoKk^fFDZR8XG&~K#bU=P?Oc>{Dd4m2~Nub^?gmzSTfJ~BZ;jn^|QKb6@0vQOfb`u zohW2E_6B=J9wi)qp%m&$-iN`Z-Sd*V@Nu)qp9}m2O8vzCj^(Dqioexd7WP?+2#L$H z8%5%U`oV@p!R$S`&s`YkRiYeZ|NoBZJ=xF?A+tNjIeu`YWcNHKnVJ6 zh)pB%2DSJMlssTIv#Y|_5)`eq+=9W6-H4~=2gmy>fmGD{C(D_=O_SI;d(-SP$k?>t zo+;HO|25_-yj`RqZP}##X{}RIf~d$Ov?4IFmf?NmHYEN2?JF}5=PPqO3b?ryN;Dgn zjr!Qr1Nez4LS0Jz@dDi#DF4@cbKH(&0r<7(Y@|A*ah=3%LkzAF8{OYTYBy7eI%qw$ z!e!*Rdp-s0Z_tV|!tZ%P_su;Th^nXA#xNj`fXY)D4MN0FW7OShikJ2W76T@unzjW6 zjm{jJm2PiZ^c>;m#?0s0j%v$v!}UW$e|FC@K;Z(|+E4=MMT)pxFsYv1eCW`PMJLWL zLeM9s&dZHD)q~NP-^g4$EJApoR|QwK#^PhRwDRaEB&TXN4>Iub_@zuWfQt1_BRrV< zjAs+;mE!@K5Gv1>-o@#bwY?gtcqo=irM{QSupBr$1LYce%BV)INe}$&l|>p#5;F9c zxj@ZF%}%iAWSqXO_d0o!B883{=q`M7LLffQr?5<26qJcjK(LIMpF*kWK)QUC815^G zpCroxY?`sBUtjn|e+e(bjYpGEITVB&DGd8&GPRMuQL%sSUr^eu&9D`wv$M$A!$#d7 zZ`XDb(B(eT{f2HcohU;(e~PV^Zl4|XQs49SQZ_Q$@1jZ^V%IKDL>+o3&diZlI2XDKKYUWLzPJn^NRAy+}R{J5Db;|2;Cq zLo9ndWsR{m?ARPi79tefP$oz0ZZJgtdDt4-%_+}`@H7ikS_Nd>>VR#N%dH!1Ed&#M zCPAB-zR3FmwVHR2r<#%cqA^RTkW#4oOuTG*%@077zG!cid16uWLk>c25Qnc8>ktN^ zweIphBUF|W3w=P7I=|_&dXwGQm);$4@ zYMiIs%JRqHk3u?~SoLyAI;Ij{n<*>5Rs_++n7&rJ14PIU3X=K@O7~tWbh`>LZ3ZiZOqRhA2`jS{d5>HTew$w5@$8qeF(@VPv4Yp&f~gZ}aU2qwV3hBDuq{ zOjYq-)4HV29G^cqE6Q)T#S|rgKjt&Vh=7qKt>HikE8v~xW=F#x4OSy%G>Z1qGdViM z8k3|aqX6oeEQCg1l$4|V+sqhr9T?J^u_HVkY0q!Wbsu)9qiD8tRq0_&&+kX|;v~$H z9eu3yzf7H+`mt#vK~gcz7>uirDHE}Q3~dv#W$8SJGpl@D^?s1Dn*uM!15dqJ9SO~O zbME+<;L7Z@PCV=#l*5cXl`W)+zoas|K-^jP`^3vKlOc^}Lbks0HN6E=8xt)_Ot z3X~y(C{U+n7W*Cpw1NN3-IYnPpV4jFHv9H+KkxGPV;JVnkLoJWOL(Y?L?WCyU^Om1 zE3T{6kEnkrV{yVDl|JT8mc5#R8CN!1JEDL01{F{tur`YDZr^z^foI`}fjJA#2JW2u zePb{>xOMNSqg!Ariss%bq{;g>ApqO;|r92V(yfu zEZ?rQcvHHVgj(g83>n30MZULGRt1e)uAf(*yR*sX62k=Ycvqmvr7^88>nfYg5kHm(fl`AV+&jKus7LvEboXu3fI0m38V6~~%1SrF3LyLc0ao7H$| zCfB!jDL4ro|Gi2P(hwQuCf`r9`oHTTNBKsm3P1xW60sNT`R+ocPeu{UPXe?Qp!46% z3gCfbu!)Q&=(9XLmlnIjAc9AvO97zNCsqh@rA^@?Pm`e8mjiQ0 zco9!Q_?n|twhuBcLuyy=|0-xzH#z-5X)n~4+?hs+Jo+DxPr9OHn710f?>>SO5TKr# zG39W&t_e00=}&u|i7;BO_xNYXID*?piK!8Nj_r+6u7zzvF(pWP?geCe7KKmqcXQ*F zGm7JBGcOW4+c*MAx&GB5m-t)E&k-b%*?) zgFu1K`Ahoy?lZejE$$WxPcUG_=#Z>_{&GoGCE@sD~-;BMt{9@sX3U{a*I5?61y< zkzTlV#skvs=~4W6nQPY=Ns9F zY~as;BcG}SHe({PEXZbE>&m)saZdTS^aj;ra<_Uq4|ll4cmzk2TMmMJyRw!k8d>WS zXTSGfg+`=+Pn_>_N0b6GnDfSQ5+m?!;C)q}4IOW+kzcSdx(H$4p|-s-*@;_3;X z5yr6d>8^cc&G(bNDt{omTZJ4^`w6$o+=^CX5eUEwoJajw*)MZOF8 zTJddgR>b#=4-QEkMh!z7GU}0~$qxO#)nO)q1-nh`{wN#HS$YhIi5;L}T=9wy78~kL zKe&^hy_3mzeu4L4ch8Y1FS_qG9f^wfN^ZU?x)4)&y$m{j&OCEQ6^cf)kNrV7J-=Ha zGiuU=JAdIM&f6w*iE^GLH&5vw(Ov;zY3^qic0>r#;(|#d);5n+^_rHd?Nm-$T~w({f->6RQ63DK?@6NBC&Y`8|ZzJR6Y086pNw*nvNE@6r)!!~p4@XC#GG9Z_n$Z{N^xP!IQ6JxH{r#HnsmTGxm_#i}i@OkVE zd|a&`ebhFilH`JO6_n9Qd@UCilh)fW?y??K`Awy_O7fymuw;p?g3x1TAT!06 zGV_A`&5vu#;l>fm?UM5t$%jI_+4uqzp33JCib7R461d~>q+jB`i>11rLxMGWjUmzB z5kBF;4|VsX_vd}Y5PPd64wq;&6@1BQ z=$_EcyF%U}b-RqEnYaTg1}n}51UKF+v^An!xJvMun#2RFL!Hq(G6!WHk1Xl`x{8O+1rg}9*sk!Sw%|e~ zH%?XQS(b&d;3C98|z((O88G4zgqWDoK%2ypznGH`_F<8#2>sc5vN;Dx_1moobi zuHsQJ)^8ZAZekv$ycE5NO|ibym&Elv2IHNopb06;a*}ym?R61-6?`$XKOVqG*6HN- z!C0zDTqd|T(NPecEZ=(Z`F23kiGYs^R5Hoylnh_y+M6#}oL})`1Zdk>M6zlpFGf!X zds~#y6rLN35h*HrTNDFnR&lW%QtiND3rvu@7`Gks%hrD`8wupWsi?MJ3fn=QtN3B% zG^+Q8YUhSsxciL7GML#` z`~(Oe1LUeT)!W@mbDXw&js<38I?61*LNQA!EqHf&$hR)r$|)@?)8(W|Uwa;6XU~VE zy{8$VN9`BZ@AMo5iQQXq0R_GKw}soUr6|m>AtdrplaMRDSpQ%Z2-&Ts)Q@S!98I%#k`qkLI$Pp6S_B)f`Zq4AU$;jU^l3Kx?mxG; z1UchO^4Ctu?|L?d1~-B0sLHugkONn+ODcD*g11Oc+AEj@GAokn^xEB0T&at0mYDy% z&wc^yTDqoqLfnoVr(V7cV2j2K=LnO(R^rMwi-IK+pze&6iFwo^ngFfVl>qft{Qh#5 zRy)*1#CywDFj$cftb`N3e69!Fx6RS%3HE+>y^rYFfZ^Tud>S4FwHgfb{96L^2_tg# zL-9npU0vGQb9?cL=hiDVlY8R4-F7JRnh{KK$LY;m7|09Hj_LNMI$Z)&;IZu=RfrL6~9Rb~L{(HGOKrHPN3i}?gA!_vd zVLw&Zj8Ej7ifLA!!{vj2z?K~3;@hv~KrZ79fmP%}CDfAGO8d1iXsQDTw`U9QoG1X| z?H4gogoZCKag*NommaSW3&E0(B@an4hNMn!ReiB>{Clu1ch{jXwydWO-hM)af2Abu zGtQ?ecT-8iCxU|xC{xolY`PI}Yqjt!otW%(n-Y8}yew)D0?<7l37hgws(gT&wRP2Q z>_x{HebjC*AQ-mTmV$>9c>eTJ2aE7>IO-m~!pH#Tlh^1s@iE%Vwp!5p0F{PvECDIp z8H`fh5fzQiKxth!$YUs^)5i%JsWDD+*Z<#%FE%}T56M-v2Bj#b=gRe%4l|1h6>`w{=uP<`DO;i+O< zVZ9&xmrO|mZfity?Kz&~PiOuG>YP{MO*b_i+w^*Lz@lEkp<y=33WqWgN1u1d6aD z%ajX}0=<*8%r-OTwxO=U^5FlzwpD4%NKtXG<2j#vq9GaLHjSDp%SO+B5mzPBdsD70tE|32H6cY{<0gpwz(l^Yt`kk^ z;>YyfPs_LAXTPk9b)@9!RD4u(vyx7;#3P1t0~Zq=5Rhh)cSzTvGlMQV#MfK(o7`x z9ols<|7LDW3rhwOl?4S+5rpJr`JiDB)vaT4;bOw!ht*#eF+Fu1{%mjv%=|YyS#Y}nnH3XePaHsA7gw5i)S%;B{%_*~ zP&c!D$=O3YM^Wc->1Q01m4Q#zfV?cctalA;oJ%szagQ(#S~_3sqhDks;ox+-DoTNR>zMRZj$t;BCn)#-p0d;@XEQ1BzN9n{?vjX$sDdw@tfk4 z=|?DuJRBIZUZasyMz;#U<_MXDHskNT6B6^{%F+XM)VsbcY6o-E(7#A)sGGaK zsNL$KCZa)Xg9b!yq2^s4fgN;&!0*HK>h=1}=T5Lx*&^h@er6@jU20O`!StEM51JGZ z4gYPos|P^^uN_xBFZ5%z@=!+;n#EWcN!v-?bFfk*+wk9ch06ocEO3u(7h$ zCZIJKmuS?Sq5$lmtd8*+66^l^7h6Sf}=S?I{tEulO z0oXPWIU=>4$5SbL?8{et+hvgyY9Iv$Nu(axICt2d92Z;Xhc2W%V1aD-3LBOlOr<4L z@t@Jv>Vw+DS2Srw^;E$Ps*}HQlnf2{G*3 z>BDIP|E{bMeJz7B%|^R`saH#?&q%1!@&f=UnVRvZg-|^v`y0=`wPl3u;|JR*Cu#zj zt0jjZMGRDO{6^0R6w|=2oPPZkhrQDh08r?hoKyTr50Y;P{%%n`&KsjVVvz&j`armR zIr!}Cot08g4Vv6oF649{U)d45bNa%L(Q=Kgz^i?4oH4kLrym@`<~h+sv|@{6PX2*x z`%#avWg?BxnUY3K$0-N)JJv$wF)1ngKDBtj$%BKOW_(2Na4^c!Y}hy8gAhX#Iy!*6 z?nlKWUa2DXgOwG|=pmK73+bl2qI8M15Ob$ew)`0s0beKid>KkqUpvIuQdsv zLMFB{U?m|BQ+_DTok)v8IhB3b*2xWFvzHvXu8xq!t305w#N)`<6ymWuAUge8DkL@* zmWq6)6o*^pmJIW9q-=>4I8wvg)>TX%vLpuRA9bdnMFcl#&Xzfg$RQE_ac^_7%?L}SLN;pOdqeLo#@(=?=>i;yr@pj|Icsb6JG(1A)Gbq8!x?QX=!cg ziCwwQ&)Qi7m8%D zvs5weYDe&o8HX|kZ#)vD_6LAhkLiH7mo~Gdk%4_~>{dmqCc+(A5)WqvH zs($M-8icT}OwV|CUOI&I+sbjcwq0~6IyB{n_Jx+gJgBO6-=HHSEg?Eb>%1eSononl z?&oZl^|$}Q|Nct{2?yN|LqZclXv&730gL_Nw^$g0S<`|<| zVIgHAs+Y5FQqwn^pE(D%OP-uM`=WYP>)O&wqNp(aq4+P(4cgP^*WId+pq6ymm?6sX z;kukv`eOC~_5`B^(Yn<4W9FKPK%HGzB0NWa&|8UscYzl{MdHkEoYLTRbI9h zcSx#TVvoDxEh8HA4lUPGrp2-egHmDI)DVQ4G)~=9ZHOL%g;oeV6(Bx(Cz(jdC(7m6 zy#VlA_%8+gL|+E50!7OK-XTg{3tW2K)5eO~Dx+}*dX()w7yPDY?V!=V^fKTY#{DoB zo<{AGCGBqqfBYBS5vGb(k}}}vWO_&Jzs&Kztk#d7L)PjGR|-R5>oP2S2Zl8@Nnvmp z`z~T;Q`OHjL8X#iY}s$6Vc4a3$CjP=?Q<9C#e9aL^yf4+e$l~7j%CBTr*;iC|q0Y`yJoB~Nr-Y{H;qzxg>{*2{JCU)SUuqRJPFkf_ zGHFUg0Z@ggWX!*c`}S5=r~$S}Q~9V`w9yM+fsfN~AM;F{qn;WJD%YUED0iuHZZKD~ zPH^<)>4|d5`mlAbl}52+%r$1j5b4aCE^34tMIApSK>yfds`)b#PYT94EXyY0Z_L2gCS*bP&u=VU*ojEgll1iXixN zIV|P|iP`IW4=uoFKg*=#jKWq#e3N}}%M#G)WA?>;lw@lVsLIgN?UsrbMxJUY$;p#f z;YT`#bNrE`ihAEzh!vf<6GAm4^3sraLG%CCJ2NetSU*#(X7k?TIW!Z?8u2Y3(>fT7iCH@QvZ;As@94?r^x$6Xj4;SHK7>DTzqaMQ&p1Y~- zm{^-A`vUQ&d$UNSSGG)(Zc7f)BSf2(gAFY^K!FU7kg5Ybn4;jYr>?cz`-t|k_wlZq z)3pO>;h0=TZvJ^ra{3bYGAAFFNJx|xx4So>^|{th`Xp2#t1;jgJJKojFLdnJt5&r$;1PT{)$57hS)D37+YCx7vm zkGq7HHt@t^5Wk69tGf+)@Hsj6+G;U#By!OjGPB2XBjLfT>EdKQFWs6z#=&Y~G;N0r z!y=kGYRH;QcSfu-;-xqTPZI}{>zI;WaS>JbGKWxt6f6xEVdSCMv8Z_1RSKgOe3Kz! zc~9@OIwob%@C^v_q`hk7bn8ib_L_NFml)${xv7H~*^}!n_bZQ!>5(5_$l}NEX2Ckl zC%rhff7e(I1eUb@uUB-awMjB&c?@J!2&2TtzwjYSnzNXlv)&!f4e>J7?ZbQ?`x{e? zd-CHgh0gba-_qSQO_R@i5ENX=W5a;a-?YTCC~DdV$2ikhd(cNqar^qY!jAu6;EU@2 z73b;Df&-rrcm%?4Er;W%kzMq>`=#f<&`F4M?zL zQ(}Tvjqxg@{BD(&AwU9X4EgVbN^tEWpWREdJS=}`HXn~wJtb1)}MB= zTnTd;H$e=lw8l6bAHWEygB976Fe#FSWA`YSDY(5#pP^f_ zM0=(GR1cm`_INA8*updTapY!}?Z*CPNFNrZIwK+C%!)qAb=IOyfjlY4#_kVlpmVE7 z`D+rHU<-DYr4cL2x6WWXTfqb)ENWlGcRKHj8ISW&`p%22YS}?d*+XPzNqp@pT zoVs69<{h5^a&r2nG2;+09RmQa>;Pp8_B9!O^76_hAeGV3D=V@3R+7HaY( z>_Nztz8zz(cycbm;p_96zzS^(W2p zJjE}&qfp>w^gdcqOppA3=#}5C#hq>tyq>FjwgfCPo*b))szSoU+(h>iX?eP%LU4N*n;2S`bkaeTJaf0rp3@jjP01jEit;Hr^p7YJ!(!Y+!9>@6 zOK&WyYF%&C21#_eOEy@VEoel|;WQ)=1cnJFnrxwLnSK1|L7-ByFxV#z+b{z)UF( zjx49HPq_MlhIRjIn!=F!gyiv{YPremADyTOtDG0u+1aOKU$ZF0+k}%md#8ahvy&(N z65!D@ED3`4|1@4vyN^EDHq#rgM6_nPQu>yd7b<)v0*KqqU&qKSm6$~uYI+DCjLWp zL`O-Y{i?2#OoXkNCYJ-gGmJYsaAT~{Q9gdptca%JO3DQeKLf!EA=*(r*QF@T_W1rm zu`8+`fi*rTPA^rs&-Vs}eHHauQlf^>1Nd2A%z>Z*yJo?`s! z`q6|eW5zVdWmm4~T5GB?fP!28yW-xeRQ|~nyU|r5B2F~r2S+3lj*se`_7caU9aKUm zFkHSuG0I_322mRuqh;G%zg>!k`L!TAtMPl6BUP+=l00BXS!t4cSBlRUI@yz8<2MDx z#ppo&G6GsOGDTcJ@SZ#_tJZ*MRcH7ube?lf0-pRYKiaUI=E$ovG-{5u!|%%q@o2Go zl{@b5qkFtw8M~6ALsFk24-epbkE}H=KPp_fM+fFFCqwJj_TX=)?CQoemq2}hFJFW! zJE3-kz5Y@qeg8etngW7NlfQgUdnJT;7AFb4kq#`=r55+LLZ?A|fRJy#5_qMElR@+o zO`;XfiKf&TX8j;Cy=3Q2L(oPK=cPggAfE>&9SZ{;aU2_Eo{>jCubE zAGBG$(1N|_Ca&Sy><@sC;Svv2!X$?Qj@GZGjZTqxtnKBsv6u^;Dz)cI6Q6eMed=Cx zXMxXq)%#j#2nYVFlVrBzW=fWsvlMUw@V#aP`NS#s%A(B{V{ucK-}%)GVGZIfF~&j& zai3^uSzK;YOoBqx#%JZ(;BnbR)I8R@-M~ZCQW6{9KkjA|Q+B5bLDFR+2J7E3 zgWWr%*0aqQ=v+ipK19wY0Z7IcWExKW$8?`(TuF zZE7?XymoPgsyK=;?>B8lpe1p$->jGUae(>GRipWPu^a{a()S;8FL$H6IV;5u+5d-A z?E=&RpZdcs6rGIWE?a+6Y->}TmakGScO92WjL(6_ z7sCS)umnM*qmWN7t}I&{xQ87tkVS9^_h6&{2-$HxY(4mXWPmLRGFAJG%L@_iJrv>(Pq|?-~j>V>>e4Gi=oOZ-VJ6Eaq@j)3_Q2k&xHh&F!WlXjQXWF z7Zj&w%lxoKqn7J0s1Bq)rn@ov5w8NLoT?MUw>PBkcuOwN>8ITeQL-B!&eI1*ABSWH zK3nI}D_`m;%=(VFYN%vJz^{f##tVuFp2SRl0U669@uFCNX<*#@k6;^)O<_9|w` z2|>y0wS0=dyxLN31Wv9A3uhHLN759n(7jI_CS#a ze3puf!h2hm--3Srh3&{ok zli{n0>okM!F=sKy3qG+U z*G{Z_;;2GBgG?~|`B}PsCXL!AwQ>3AFC*m!UQ77($kJxmxS4cs$=kioZ z9um6vahOS(=^{sNrLVSDTV(_8tSC_C0i$bDW;&q_FTJexIdWr(AuI8>u_(lHYErWp zk|ZSlbLBR&o~IwlRKe>ToTHLth$nnDv3*UlCyr8K9tojPvwqHDT}pqras=M@72+f_ zR#0mTU>leRA0_}cP-pJ4wXCnBH|JCr7&V-)26ed}_yW=kudkziHK7gkwD-mMcWe6R zjOPm{XEVaVE#JC>7nMVFJOs2IgfRS;r7C@2J;}b$1WK)33-gX^ts5u&L8?AwpL{W) z?kd&6ma&iiPnE53Xd0VYT{V&*ic!=8DZ&3k{gj>(P18gni$8xxt0F5-#&%1nL7Nua z-2O7|=fgvD`QHsl+_G9$KomvzL@v*Rx(2D+hXD+nG_7C($yTQ_#V!~REm@p6le`a_ z|Ge*WiM*BHXq3_y3knF_RV)pgQuUTI#fUFu_7QTz54}>u|2|46^-9Hs1}TlR?Dht< zV=PwaS!QqRI<3Y4=cwhFhs*3}?-^9gBPvTL6H)UgcrV>Zm(`-9`tV!OQd^QuG;yeU3cWI0=PF zHxS+mYV_6s)w>yA1v1=P1wVaa8lub)!S3>vrjwr^ybYVpU%)Zf9XF>u?8V)!!jx5pic(!lIeIXO;T+Ayhvy`S?xo7-X230% z%XB8rW@{^OIh<;cQTlW3~juohV11esi!49DK_jWQvkxQI=D5g`yVnb zxg}PMqo%k8Q{QDOAf^Y`v&9G}ugL!l*Db5K6dwDB_z*Hp438fB2N0JBE^lY7?&m<* zShFQfMw%dW7J-y_*~chzZ5kK@Nn0ibxh68Z-LIJ7{t$D^JO{kFu-3mUD71hgckA}a z>yk6Yn9H0Bb`7}NVG|GZPS-9z2Ler{hvz$!O9Es(E|>b6O?ZP#{Vc-zlgw3b<)hzU zcg?sXdOjJ9pb(>G_xq~$^sJVAKrs==@Ea}ZMxB`x(aXZnc08XLL1-6cIz;_ZpkxF-P3ai3BcGLke z61}*ZFJU?AxU~(10k;37%o;;#jbAv?9e$k5K96cO>38z22ozC?>rO6!fD$lRLvACa zybyq0#|tm_3vtLxK;z!JRR7P4R*@uNCp7^((TEU{2|xFlw!Baob(BAy)`y`YfrutF z*%4`zRE+cL`eGy}DY~Z~j1yK|BJotkA|P@m7c_;u&NovUB$Es@dC;us=Y5RS0NSl( zN^hAfT{yl{85^*DMx}Q>m92_z+RR-_z01wXJAj$T`bHfiHQu1Cgu~#J?~}gQ%s{I zD`^{}q9M(n;?uS%T*mdvna$1KwlS#_2zb{=ZI624^7wp4-No5N1rAZTqEW*or$I>B z%${&nPNKcqP`628&u+Ff(A+)<9Cq^qU#Ia*6xLb``nreKE#Jz{GJ%P5% zJ2v@q*sBd>Xni2nhD@^sc?POBz}MJ#LF^x{tyA8>vJ@-|B`uh1)Oq}(IY-FhgPhRq z7}`6xa@I?G(wux28Uo(IGfLOWx=Ktg>&3Zg1=h0qEIOBi(*G0Nw>(pCSn9M{-(a`j z&cu^w+p$Or#t;XUnc^Pk9bWQqUC=4v4t(wtgrP%Oip^aFwiTr_EzGw~fQm8ymQ(Sw z(m07+1Q*bAf)yhRbarpYc51LUrj#JCyyu^`1x8Po&Ri5U6NjT~Y2DSY+E}9*><191 z=T8f}!7O#*NmNlPM`y_8Uz#bMKOG;hxGqP33bd?_I1}mtmJ1m@?A2QewhA?OIgC{Z z`qO7FGv>IKVAC`VLz#mJ3O}bVFJSYx-*&)nIMGC8J1|!k4QT(WTEZk>YX;&}oD^~m z_jJ9dD);jlpXb@#gn|4c#}{+qWzQ%VM`YCXU>WTQCC|Bn*Mje@UNd1RXud85&e(D& zJ6Yo~$9+x)ZRQbGgOyQN1{q+J-LG=97PYDA=-st!IjL<>=D2R{;y~FJFkAw~>>R`b z%fM&kiaHXb@kMKF*5bDdavWG9vu}aO0Bgj$H`=3SnDsbc2$bMMdQqH`5)h$9dfkSf zRW3*0x0H#aKhht0b|ODU5G(6ou5KO2??@hbn#~)GjdfiEA7EYHFn4BO##~jYTfJIG z6hqm7h!SW6c8Q`w+TQ2Wh!Dn1r6IR5NL4X*RYjc>s2hmBI}IEa48%V81fMtB@r7eh z12^9tD$|2%h7GvJxfmY5NC2>;iuVL~Cca^| zB!`?RQUJhd`h~#Z^*_#W&4iA%a-SV0y#EFR9y1&Zk5!%8!GZA;iy_EHnRq?u!R7gk znV3&;Mn7s#BBa8%N32H2o-g@T`bc@r zZ`LvzAAt{yCoD*UUM(!`UbY3l`7P0bhDRrAU(|G)nQoC5z(|M*tXqebo+OU+4Q?_XfdeQ7R9&JQ)ow9zzYE@2{% zk05;RFIE^hn)B%InO07iNsYYiyQ>cPZ0fIJI?Q3gux0kqTi2y95!*U1yK;t?d67bf z8M2S*#IMlcc78H5a7bO>)N#)Jg2d;`@-lmRf`m->19v(<$MZ6qQS;n3pZCx5-_$hb zTSh(&wxO%fkZF9}ZIdzPpvwn-sb6Z^R`X>o{X!5Z;(DtA^LrLGL~#u(S?56C`T>5- zgxmLDbXz#b9M&94f`RfoE109Y&w3I3=Rup$p|#JZxRC-|7qc-pQZD3E6FQ{KtxCsh z-w)n=?*q14wzq-mtp-P=`;#xJ(;nX4s#B;&(zkKE3P;R>9%&l83)9#!6VL*>v0>Y?tStXD}6F}BP+Uom(Ns`rU==M50&wMAiy zj3bPoY|gFaaA@XS&8V8o%Nyw&S$~PaHIa&?WFo_f@OMjyVTZY#VVidMq{3hkyWCc; z#A@>&9)92=6Sti-;+|<6qrPfDxg$x?|0!n9wsK!aB{KXTr5~hsJ}_dSn!3XRfT*5q zW-$0cn11Q$_0!P|%U?RG>DK^(`z9eMGhjAVFn{8)oJkGj2@H)l&mJ^iEd>KZ%lxYeLfNUp8f3XiqC{-Hi@hN6%ll$(Q z*zrSvvgE(}=rI`<5QbSW)^3OC??O{*Rem*Hxvsx0di&2lK_WOErgv%mYLQrae|AIW zD6GGpRU9%O72cY_-kGNuRO{1bW~cPpYs8 z)8)x7FDTmqrI@cH>MfNy_57;&8{A zd;-<+Fx>&xa8G5dFCpAyQOZW{%0G-^VoE)+@*^vEK-`cD#n7Jvc`M5$)nnkbvW`Bp z_W}3rpBh9k&yLKv(5KN)zvhWMFzdxeLoW1}zEU@3@DJe9-}L9oE~1hC8DJ?~*fa;l zyO#`IYJmQuo`zt;q_@?c>tGi-BaJ7P@y`Ff!(jLCC`82*eayF>bA@68m!|$oXZHU4gs6K9YQg8fv1ff%7{v zh`A=11?bW5=}<>Sx1>aLd>W~l4zDi!D2+74xrQ6^mq((#{`_ke$I@)`UCi#&y)`19 z4hW04tn$aEI(nL@BAHPVUpo?Wnj0jjgj8yVvM=1{rGtbvkK~hVX<7Q8xew!og-k_k zM;GkKET)Q#N7CFlHEr&FMM$&&*lVxN5MFD;IcHS53y)E(iLI<7?;bReoDGa^IjksC zuIjl9g3HJO!b$j>VPJ59uegPs3w;evn90|w=-L3WVvm^WVG&4#!Q}f3BqBhF*Va4)T{n24F3LmL|;%I{~Do!2{$Dm_~*jUcn zrO*`UEpgLsTN&Y*iJ{Y+#JZybRMKkVR6Ye3es8Hf+5>F{d=W{W<2?+-+nG($9ADBP zJfiu>KlvL6NEg;Zr$NFOAt?eua=UPOwkN?y!I2lmJgEEik54}GrEZ{(wl(-*xV8_= z*Es>M{ho2_O(G_lOKitGjv&5Dzmppzct6Q4mYz85H)+EfdyY|Yk^_^-KT{a31FKKaywP+GOcwo4x>-|LcTPE=L_WrEy5x3*7s*gYI^}hXy zadxNPGX^h1a*WZVA2%o2Tx<7WKkcH0J8`hzTh0sp7WL8bDv2HEuYg+k<`At0%8?Ht3iV*-(LPY(HxfFod zJ5(I#`B=JjcCfN1%2>Q<`7V_(&3Pa_p zQ?Hhm0SeMKtQ$wn=D^uB>cPepFov=-f=1r-0u9PZ1U5Dmb5j;N)`#eJ*>m1VJ`j~( z2YJR2^_T1FeL&sAfc1jMjYVDLb+Ho$v+#SD=%~Bqnr28jlk$K86tZX^@#!4jcd#Ry zSiVMo_L6a*5a%yT(B4n;D~V>-56q@c z2Nyr~mJhiH@*2&==u7iRuo4Iul2ZUHUHHW0e0%qxFl^MSn^d~>L9munQiW4W(D}Pr zY$*0vjFTvw7VAX9G75yWtR9q=q`XfxRK9nqiypMEh&DV}ndQTQWWXY46?V;(Uir^8 zBjZRBBHZ2`+LL!aZy?3QdK8I##alE1@xkk_oV$ZMW4t)R(QGkYc3K}5uYGA2qNGIy ztqY^@2(w1cQPLyyKF*4d)>dtJh_(<%aM`AXsQf}7brINctO716ut%dse28Gt^NI42 z*yl9g6P9xkG&;A3HGkqyj3T3FBUr8qF!CAMF8@*vs;|5|;6U1${%yrA=Ry5jiCVA~ z)QXijJ-wJ$J}g>e2peen!`tzoU^J@0Iia;wlK<+40nK~oN&3VK=f8vNO)Q%#PxFw9 z+zVG8?Vf>3goa||Qbl>JgYn=R_kiD)z!0!x7H4AYZrqaa?9g7VZqF#9GfCa?^j4A7 zRTR&W=(gZ`^7D$+Z|X*4@NYlED-`0NTHZYo_{xiu6W&L(RkBNb$jtudK}*q5rgp!F z+&qi1yvu(r3S>>?4!Z9&-O1SWNRSzeR&FSp@FzX_SlP8hx zDYb-a&hbr}-BKZ=q`?b7d_h@Y(ETOYdQIXlQXgpD3xMm0jL( z(QMaOI5bul=tZZ2X8g%&(n))B{Bxde&I>ej=nKuky%O57&Ei0!SF#7&H9V@RAp*=5 zwg8V>pu=Yi@0m(2OS!&PW^^Fky~ihOet;JU`I(VS8r$YOU>mecW?FZ7WuCiJnR@k$ z7;)4C{7pWx9;+QRRI+ggb~RT5hLdp-$>U=#s;DQ&XPoZy{^Kx(`#mp9Wbt@{PtZUoG;o+lmas|^Le)uhr=4Ovk_ln$SRe@+=Okn#-#tUbK6 zN@m%LydhaHJx}=60;H@o}*OBuHEppKB^xU&v*wnKCAW_tgs> zB0fKFXpx4XOtov!og1%Rc|@=Rzh0sqFH;pxt$@;GUPNF_|5QrUU-te(P{wKGiB`f? zzWd!ks;OiJdzI>;UqPa5Bq2K%$60VdVCP4654_FhEn6X30-`j*|JdkIrSn~YQv#R# zSAkstH9y{~F(uKNkD2c1{5(A-s(H3R&m@&I=1LxN-u03nIvTV+MI#b9&qy=Qeq8e9 z-iA4v7oU8p0BJGzfbA}e(c%!4r1!tYY720i=l?XA&R5TmuYwSE$5!w=6CJ>dJyS6aImQToWQPSqqS>J`KYmY;8PdAJI{csTmz7b?JDV-=sBF{MW?%7 z)=Zafqz|__pj`i3B@;Ij^|WD-EW?>@!dS?CA)t1$49#Ts$HjQ)9xith>?cm3w)4!0 z3yh3;rZ8-Mw-@^gEC|$lmq^-Gw7!^ebHRHgJE{SzdkPmE{Iu|^D9tHRf3q_c&y2&# zyU@7aUQWt|CI=XN4^N2dpb@ngrNpARTS0L-6w5p@y~mF~B!T4yrFB3091o{j|5`L% z>=IqTTz}*yx)S*ht2i#^GnsFxYQ(D7pRPe87}*a)f*!rj`^y4OcfHoEf>J@B1T=vNgqg4`HpZl{%mHFt=Xbkd(lq46=y6{RRh za?Sq+gs?g0rwq{x2*p0JLP7*ZwR&>K6(2QkkM9++HcsrLJ8=8DMmA$>gH+{J)vee^ zoYG&6I3yFX51MGQF+ppV*gOTCJUNTKz)=yE%K?6+*nHw~R+dS70>38VQ^@Q)T>mhw zFFA5GuC7)Ug?M^at7FNHZR`r9c{k!Gh9-Oj83a8W!$3sr^{w;>9!=~4wP+XorhcH zB5Bb5>gXinZt7FAAY`=v?BJr)_cw#5Z>U@xDi>~nW&*endBo8$kuoA3`$Mbw%W(9#Dx>IC~UsIaRZz)}L~< zu(hs^$H8d%qIsa(pq>y9r8QY3={*ro4>=DVXLCuhAk2ye+b>ySz+i$jA*b8AjwO)K zb|+@X)V;vmnZuQRCsJ_~k<`*O4-^HOjck|F1co>a&-)ha@d+-v^EU(J_a@v21&_BHltauNv7q)1+Jk6mkQWi{!G$GzMKkg@$`tq=F=uLx2 zn<7n%wJl?Ms2`-RKz4>)HlHwz?M~Puoxd9TAgxZW_hL`BW0<=0tSMvEhM7F8)#El3 zgT&}o7kH{CiN?qlR5xuLb2dgN4Zo{*$La|&|t(}&G6z+ zW;UN;*}oFz3UU5li;#VXS;%GJJ3u#SVCpo0yZ;bj8o2W3@B(FVR}zq4$ZVa;73m$> z_!1l@o$Z-Gin?3m01u~g1wyb`-Z_4!1!{8bX5!+{C>fA#Qy#qb=sQBW(mWB}3Cm02 z`~2a3vrIgj=VyR8^xZtbEB&2IFdYM;dyYlDfuJ_J!{Xy?7FQSi7S-PB+UB3MyI<=J zdqFnkA$$hk@l*mFcS_96bgM0$y`6&it$KDIw-@Bev1F#AP!qk?;4uED$aRX!^mmwY zY`IGVC&}QwCX-`Syf1f5!Y|qntQru?jq-dufxt#a4GjjG04Q!%k0!mg)X^kyxInbx zOBgt{CR4(fs@X-aAfa_^czYN5PclH#a`7OAPhbK2$;{@I=BgwQx>=wXMp{~qepfDF z5N8)P*evc&7W&%JT7fx#AuM;lHlp6X9OH|2{G^YrfT_#{j@2EL=NAmxhiee`@wjBA zk|BuLS2r>rps zHJ8m&dXA6Pi5`lh=*jtj584Zb-99?s9bQ)$t(+?`Ikq1wL5&~~Tbl%-Ux;v&NU@I|wK(E5D&#>j3;;b^<~CJj#| zcKtb$Zb>HzIFNc|@^kbrk}=JDC)33HYRy-ieZ=k-PGNbp%0H4%u&7p!^}fKq!ytxw zbkU=Pi+v5=&TN-1&i9}MSraW?=M?_-_#gstD@#WF zyBLrng(NLMP?w0W!2r>VmeR$k89FV4y~-DPGgS>cBf+`07-d?WW9Z=5@Ka9r7Q)*Qewv}IY9xs^MA zf#V?DsAw$XV+SSD@FsXnXi$iA7R7H~Ms$h2#K!ozM10{L^7LfEXVefU(bH7nI;3)r zV<%lX`5=+*^z&U@5W)74A z?0)-G#Ke*@uAp3dqig9LhI~*IP@(pnx_$wMB80|YiK0uvP#mxkT&EHw?r>Cx+o)LU zJ|yV|+@?m_pm2XPaLB7*l&y@2%HDrWbH)BL{FBsJo|umqSSlV@r^US5Xe@y|*|OL$ zwh3U)pa6)>Nw_40q8}ju&~V*RwPQdIx49v{M|i_2O!h90#dS# zf-$#Sd!(4Lh@cA47Dm z$Btcjpxn(0aeYi&a&p@WJ%ptqn4Y(|5!jK`BQ>Mchn z@(oZ0i>O%GPMw~5eH`(V!Wa?bxIj6ZlF!I*={y|xY{PW?ALVhaY5ljv&rj)zU4aGR zFsl{BP3XK4$W4Xt(tJ|NH4bisOCpC!sMa%ha#A`JvJC8+8A~1aq!|Vd^#8`mH4*aK zt2XXvF#J|^UZ2>NOg_Z7VYWN;oN=`o8&Q4F;ZbsWhp44n&7^J+hu$+ z6I|Pxs%e@fHCiQM5eiFgMK_W~3bNYevT@R-H4`b~3bwt)WG5G4Ya@p7?N673ZqH7x z+fxIEb5q`!dV@GV05)ZqY897mrvY(aI`Kp(Tc@7st<$&7m%R{ zXyP{oUSj(Y4xM>E)<2vM9DUDwWL$}I}Rp}IV?6D_oBUnSs( z%6|VO<(?=h_Ov5}^B3?le34uoBr}Cji4i5d1Tq>7^hbzF|G!82RT%t1w0dE%)AW@_ zRR1f}NOQJb6=j^J_dUJpryV2677RJKx&y&|{p6qk88qK(9F{1PeXw2*#%Os{mCfz) zPJ=NKb(jUxaH=UlT$%p$wX(;)CHT$KaB(9xgX@Do{_=;ix0C~w?x4cuUQ+zgVU-^Q z$#?h&q52gd|AYllnI{P62#_j9IN<71m%2E+(63JsY27Ag8;4c1NfvXu3vwiJ0LO32 z0<09+)|Ph{wtPK0EA`U-dDBsE}rH9s6Y);8)DX(*VXCtcvpw0=T|*{L4P6SXeR<01L70|QQ>T6aWNupZaM{S~~Ny6uiHq~fyFIhIk-OIzik zQLb=ePvP95fS<|PBWk{|tujpk8xciaR-{_U{7GF+5E7b^H9u1CV*5sglJ9&2bBPt? zxa|#UcBJ``DIn5@qaeUB=#lgfeTDa3&u81IFjG4!uM})PUPP-*qB=WmeM) zLCx#nV?m567_?3kc54-1xNzOWahoHlsHtLuBpSrs&El*(Q8o<>ygrz*Z|`BjIqE?G zCdN#Gn{o~We$nNOiy{?Q_bil*W&f{FLrDO!Iq{^CsxF&S%zV&TtUk>;Hf$MJKqh@J zPgRWs)ql-Lxn?S?n}vyV$d=o+vDOjDBf6<(A`L}d*(_}Zi7M@|bKE!YOEQ{L0hB{i zAF^6M;KFl`DlqW#tsFQ$RQoYGGnYN`=>&ZV+{J#;>DTvzib z7=`bK`@=+SW=q+qS^96Uje%9?Dxk>!#p@_RpG#I?Fbh$#LJ!vT?sD;CR5f+@*}UMG z2L*3t6?j05eevMJ*uu(QW=jt7rrPIIC-gy(2R)W!f!BAf)P2j)ljM6FNulZXqa$Nf z^ngROOLKIQf~I!AvY-rD&6r~@SZAc>l=QU)iSIyClOC|ZBJ$`=wn&LsJWi8b7Qs0Q zGkH+8^k-PTUGgt`!^CE6bCfHoLVuv7OG322P|==}IMH1T9NcBSiea21sx%_(G`nIh$WS)Opw%TT4)b9~0tX504l=Ty1excXs!EBa=y zC1`N3`cQaIkY0KLU^oI~twH7EZTtHd*Am%L*K6d`r6;bzCxl15W}bTuXSLT&5NN8e z_4PH$QRgL}D^Isw5kX!vPa=fNdaAW&sw_mq-%g>u65J~xxi_B>KDsl+1aBd%KvPeO zTI=do$^U@kK)kumZLt+&J{nzq@3jY8+h1Y_2p?(l1x;S!;Zf$w(iuh|ga<{qGd%@jmu zLNjZer1hxdT23jH*dX%7jpOiSkTB3a;M!uJg_$sB!(&ra5AiWkpp+CBWc}|B6=->5 zJWRPA5o+ZjS1{02j|Q0$^EHvyiIeUFBBO7esgl43f`b}UQ1D5mHD2!V$MCSZ9J=kx zkP3fcU?2^mazUxp&F8+`-^s=iMP^@{!HTtN5}~z{KzKd-QV4Btid=zZSF{M{|5bbO znx#)KKj4fmytr+>H{BS7{o=aMMB^2^C^YI-jqgfnX#}Ar7yJ+w6DJ=)UimbmMCjBG zp8h=?Nt*%kpXaYf`dqw9@;@;SZvZf0+K$F!`o%*5?yz^0erp;l+ng4X&SBfc2?$wm zB%^A8w9NE@8PonT(H2NqhOtQVBd)atsIsrrVSOza?J~CL?BQ9!c+7=Fg=KK{>PwQ> z?axrW^(qhWe3XcW1#WIvc+Ri|StMr!I!5@M=l3{}Lrk_GM{k@W+Fly395TH0OePpQ z2XZx|c4~Qdhqsmc9?9aX+jek05~SJCf@&X_5W(5m5VY_G*bEOUq9re35+>Qrqr-iH zkIzVfRlR;TiNl|SFQCC#@5A(`GZ0HctkUvB_0=A;a4*6RTxU0e!O17{lBtPhDr$63 z9GA7q_k8Z19!T%R15F7K&|B-$6KeKsHAg@X>@s}zk_K_WrQ1{_)D=iqzAeeIvb;07 z+~exuv!qZ{m&1mb5_l!bmo18`XzmJrjsxX0QB)}eoj{7j*oq(ucjJo8xYnztLhy3pv1^{#b7H zM<1s!9hbW6i_ChjIRtY@>O~j*Wq%P{i?zu`J??r%*8XQcO6pIjsor>$;qXd!>agw> zWycPb$5sB^Y!@N_Ib<)M(tXl(pLkH;tFKJ+b71}sQO1Pt2Iw94mwouwR*z;9trZQ! zulH)No3Am6O}An1^rv+S>9CIIEpb@srRYTQFs9?LIh04ClZ=Qf!iA#MHx`r#cFy;C z@Oemqs{gCCW{IW65v-I2Rq<3qiJb!{~RJyZ#sl?kZ`iH*8N76edLGRdG%!GU_D=kL1y)l&O z?<<_WHrYK3P1$9SoyWg+Z9s)%;da0iQN6M~fmmvQ9m_@}qp@DQY{9v_jWtIMMwDjl zb|?0fe@Ey7W12wjdfJ?TlUa29FW~7-{8A1R3B~5nJl>sN8d;H-+adycpuR<)xN^SK zt|G6Zm%uW4wMq5hMugt3vEZoC0vaU7oM}Xmih@e{KaT?At_dy z3Xe7!M;w$?r%C$4r$x7ABE)2qxW?ZKN7`UtjyX~&)*e#Hm(n8bPmr)TP4VHHA|4zM z_6a#UNxn${mYy<=6iUDwgH01{g>mSdUENXY_SWQd*vttH5Phw+MNw_{Rj$5K=FuV8 zhZ{}13-^9m}79dBZn3Ve!Ovb zvSf?OlaDx4B`FJU9&31DiT4N}Cw{WsX|z(#_oH@1ZJ|?5nS_%DXB>M2MXtu^h*D7hvLabGK{d*B=!Ue)n+M(tcG-)HC5a-F?PiC*Nbzn>P z2AC7U15IOt!|H`yPD}@+$E%`9%h#ulfT4rT#QfG{O@$Hx;iH-x!NZhgQshd+Kmt!7 zX4}tDuX{jn`450@VET_tz>UuD2X@xyrzWc=tP-stJe!_xKAi}FQ{5`PEDXC7Y}03(vdWqqY#if=>vj1-%hWDphC+chg0s- z>JVfi>x_U&cw0>|d&-?}RgW#;{%NAVAJ1@RgTj>6qL{xfm@t6Wc;1eSuIGqnprDVHo@i z;TejvRDoJT=*8k>7rOTSfp}0v6d_L?doTsFSw#{as-r^}C(W^|H&(1k0sA$+O8(jC zSq%Dak@MARz&qd2#)GyhG#h(F)d37{NbbIR$}&c zBg|k55r$k2+&)H!ZZV$8SwR$)!BPNFG`o_3>z7!zC}Yweydu##N*L6wNq})m1Akm8 ztOPXMGN}f6J_w{==UqLn{QQIs^h4AdpPj3lnuY|;PZlVeP1cndB^wp8_KeO`Fimes zH09*7?fbNxIQ9dHElZ;JpI8;3p%(ge&IqHlygCy&TpV`jgq11!osJM7&znGpy4*1$ zu&XRVB#&z($Zgh(D?_U=mPaLhmKW>tft9-IeDg1eLN9a4uF%jEu0a{_9;~T<9r~Bj z)yPR+P;p_qj&4P;7Cn+fC#cqT*xz(G*f5i$Qhg8ye^#pDH?Pt3tF*bW&A#kHnWcAL z%lo+WuX>`V-D!~33N3ppnr`I#GY3>ir8L>7i`*TDc2$wwwuw_o_-NV9(q`qDGFbsk zOMGjDro=<3od4PMe&Z$UxdZpmDJ>qTYy=pi=Uf&&cnkXbq+Z`@)`UHxGI_2?|u=ntsW+}*AQ*`({t90 zzOIg6W+hRAJsl=rQ>)7rNOEp4bv)zy*hxk$8|g;FCs>R$=H}ud8(~ro<%CLlmN2uN zUono$=wMe;(Gh+@8=mb$cF{B|bbe{z<>mtCDScmB1Zr_@yDq4k99MwIEpR7&&(?JL zR4>x2f&p-dhF;7|jcOjT?Nwl79?EoQfJzt2cMbkof2MsCK!JQ;!fhDVgKyVY%P5&- ziyDzUmAnBm4;?MNG5Og*G&5__??%?Lk06BF*yKGcu-sHIK;*yq|5(TXLL zJ}D&dB77c-B`49$234b=E3i4{GtCDjNL}!oa7TSBd-IMchiSS%C5GOnw6_0&!11oE zXM`sl_ZZD;zcXCvEvD<7j#b_&{cFbU?=Z;aCeDBa{ zA?X-%9z4F$aPT;+m>8>OcmBN(&b!2)9Z^C(x)^dR*?9>Vq-fpET2!o3)>n9FIe35sM8~9+&i`U z<@9iKj9=Uq%iT*tU+e6dzbo0!2o84u<@fn2l8VVGz?zsGJ|-w> zjP6<6-YC=K=V-qcy2&LJHU}D3o8$>7Ss)yuD}-Wx{T@DOl?CtAqJ?G$zz&Z@U5>qZe5sJwQ39$D z(ro{Ax(_d*r{dqqNxP_^cS_aIijPJ`Ad?&PV|6vog+ydPa*Miib>1}?SKHtgyVTd| zyCMbIR^pE{Vx}+wgV+V7-54wnQaN~UDbEr6uc@~eJJ_Odh}O^8sg;(Zy|}Lx+1Y-u z^9^J62G9`}(~lT53u;7{F^jVToqvYH27^#0@*U0VD(VFNu$K7wVD3g#kVQ}zG<{GJ z0WdyZY1AeDCrl}EVrs1Ny9_=HcYIf47(6u$87Z%M$;0Fd(T^QV2CfzNsDSpiJiZJc z4JWB`2Qm=jN6AH`L}Q}TjVQ~LwAo;X8G(cK2-VXeH}?e7s_sL0L!m8676>`VW=+I) zyC`X!p<(KzbguOi_49wprL4cz*bMyL06jp$zf;wi-4FjMO!+!^-7l<2?ftQGq|t%R zY7yWBCz)~R+)2r=b!t9(iKCOSb(axxh&DIPD@U2T?<0?n{hoCM;o0v1o(&-~T`jQ` zh}D>ix4HGN@~{2RohHHO>W8Fo|Dmj3ARdr14|QDtB(++gJo^&#vDwIZRe3?5@gZ_tqb|K3$6!1e?%v!ItuT4V6?m34}jqxVJ z;zsCRrbDauh6)I2=ZD+nUkLgSYAqw#Z5ljBSa`W4a=mm%)`z(%d zi1FuXW&`=y5!7C{75JIg+f&(vvuc#HYUSCa%Wc#b3B<8I|~U z8wF7og@~qfX)&_Va1?|171G@_|5P6dIusrB!@y61bWAL?SIWw$2FhC8l;px`PmQQ` z0W0L+g}iuaE&c=b{o^>q%Ngj~b0O8qcWuj*wXigXM6d>3113g}D?H1ojD&MD0S)M+ zX=#$5cF^f5ce|opraIPRe?zqD)MS2bq83Iu^kXJe;(`u4{;+#V;lj+!+r0aO_C?n{ z8F@3V%b`9ylQO^!4eM=Hu5}KkPV~-H{BIjN?hlIc$d?gu$Z#LuKL*x-wss4zv)Kn( zhl;E#YmL%bjT-ySj2nw6OjxpM1h0{Klq zhULB{r}SgJzkF=P*ml)&kFQ+Gm;TtTrO)pT+@nG%ZSY;>v3HMNr?8H;*g94V7+7mF zR!?KbbKTT5S`7+KX9vl$4PBQAh01OpDWC~Jt)ew-r{vhaW@ zmx5jnEmBcPZekVOmKzIFH~V88=3N!s@b{m|&(=%GY}aRxTx)8^U4uXCW9<=Z!1yU| zi?3p#x<`YNJ+blN+TATh&#w?9^i&QwVEW>PT$|IO=+^u;aLU)|O0qNL1|z&j3eSv8 z1xH;Un54hE=j>&|N8;~BD~u;p*%*ct=H5y^!hu~8xom=CNybxSk%P2Db#KsY(68;s zL*MsKf=JFbZRDcsY{6j-L#KEflpt}~P6OZYT6(d9Ylx}FQ(Ahd_?wqWSy~Vy09&(w zXhE*u+f+T+3CR?xX)sqckJ_7!2uLp|2$*=P697NLx@U1sTR5v&({8~y1Q?4N2c8qa zo;rHxab20HoCz?}hCwA}ZV+F_8x;7W*kMATG(IFyTBg4IC1vF9QWk6JCCnM0IjcOH8?Y4vo) zq0k(8#F1*7ubX91{=IfTzQ+iSz7$!q;)|drjqJ${zM-XrPe<0x+K~$Db#>uz zs!Q!M846Gqcsh@b1V%p8clE%9xW!pgSMnjlG<`w#;V^!_430#%7rJRHX{3wjvGJ)D0EKkwULOVlY@F!wVIK$Pl(T_GF25|46q*rP zlwV`zP_a6Rx<5Y1tTjmxS=f#yif)6b1Cy`XEnt)1hjlaNFweJ8S4-#Yv#4=ZmmW~J zPBa=k>gq|vgUU4Jw|zA;?s&e3ueu-4TpAF_kMf%=fYAu0(PSV)NQ~I;na1lmZrU`| z;?b!s>2~dfCy*r9#1c$RGB#{f`vLLh){0c9KhOf>RD;&w=Oh>8+f=`}rBhHs3UVXwoWm|~yhULzFU|pSWLmoQUe1o8DPD1e9 zHql+u&8qL(&&Tp5N;1W9mK3xD%Q1spX^%yCWS9qmzqKJsYa;W{6qS0)7uTuD`bqjN zAew0=Qfkk4CU0%Wi;};?qs-#oQcU-2ks(l?@13y?Ylreq_#Df?dJPa=WAk1;fB>p4 zX?%E&^ycH?j|=LI&%(uXb(=U3AOaD4n(l>>O`%7|eP1{~*xL<;r-dcn?7{?PUB%ng zS(*Ty$8c;uyIe;HQy8X86YRd$kcOOeG12tmZQ!-xa-tmq#2yYyzyveXJ``+Q%x4Td zA6VO3IalF?+tR$}M^!tjtF^~2&Qk&;BiGG13|IUS~a3(vSV316E(x{v{Bc zOu2>ki;C3~eMO_-38W{i7j)MP|H?s;>e^t%xfdvQ+77a6*(leww7fNeYIJy^&G8;4 z>mn}X&34r~+w*CPgD_fFE$&&aMM3F#*50|HcprOKwU3@(mG<%StcRdNd~;Psd4qhF zfc0i--^hib>CS$Sg{hopq#gf!YW%aDQSv*ydu^@$lL`0k{yyV7bL$Yc zfH7VG*VOMV*qUZiyyjbw4An1=zut{C=k1f%{F$*sT3WtX(=Lq90z>Ck)w>;sR}}2z zb-!_q3c%*t5Ur*p1|d}Z4i_}nz1*>zK!HtMqn);IkjZ28de+sH8VGEUb7mtbKnaGM z>@Mg9OE$g#a>3VfIdC>aPm)>q2Vi}}h1QnvmTtJiOR0mkQ7Yti;Y3Fw zWX1)pYgXB$>7UG!V2wShu#TuW4Wx54HKx@Wdg#3^tLLbVuWk?{pmT)Eh z0|3s_r`V@0WXVlpO8Dd@ED@To?aeL&K!dzdtK+r4f7CpDI{G|jnZ4aSF3zp_*}0eA z2$imY4YEq5^s90U53=-G5Vm@$IRur*qGg(F5*zncmoO0HXU)Pp$f6Tov(RD|m&bjL z>;J)5PhdI%_@@=*ka&FCL5hPPm->3(E}aJ|})Vaf=l zYS7457Oz7y^DSn<=a^mUtRm#7n_=ySFA9X_pn5Q!<}m&S&Iwn>i_dVMv-g>0&OxQ$ zzZmf{``;(g#8E*#!GDZiMPnejPOsai{aL&QD}#IHZ5NJs&)Z@qmMok)5$wmj_txFf%?u7?81l%(jL9x7o&X2@{n= z8aA>`Y6Tc(x+LvPrhv~-!^KH#CLB9QcvZAcLqDL0)`9$B%fqB9H0$>1Ua@!}V^3|FhJ<%evbnYO+y=@RoS12!ri zJ=(lPW^o?h6%x34-sDSV2fzRJOq@*1wgu`|)4nTAO+)~5XrC*=r;7~7G&9bR+T5n3h9bK_HZ)+XsGaSb)ppm15F-E9Z^`SKUI9Y1?kZ z%?%-1q~O$sr^7k)uh#u75;6N$4}PaVz%j7;LoA}qlHgem-HN2c#Ui=%bld2c)i+>D zwg!BRW|N&Vl;kC8x1x+m%DnPm7Q{g>^`)<|U>U-!c{oC;vQ9sGiclG)ahN17G=+rl z^3QRXU=hopFIi9@#7ZMFS=ZiZ?HD6SN5I8uDH}!94~gMJA=tXjh!h%PMaN&nPwnH} zHFRgr3;FWng9$Z`IzhNuR6v^t6&_ze~deq}i9zk<2_4u))pBOyLRd*|~^s5_yib8YmBF&m(Xv-+?%p06d z%S(nAFXgK*PU&9x73a!BJlf&%?q+&!S2qku{7tKFe~yqXzi~xBga$!)kVwSKQ%7sI z&XJ3`sk}Qi8#QBTfa{kW7Ke%(}P2M)%U4 zW0&U$aifoH^}!I+7)-4JmxPtj3 zH-b$rJUDWo6+fwb^-3(~oM>|NK0A+@3~JjmNFOa~f;g1l7Y>5`-q~;>Z;|Y%dwu%~ z=#Keu5KT6SAgx`hb>-G3JWOR%m4lu~6WXQxrb1nN#HGvKp)6sp>O!tH3YHIpr>M-3 zkEdmz!-(evYitQm*A7_N;I6*Z_Q!_6hUoEyp))yHJ^E`H-xMHF z{!Op$Tj{l2vY_R)WWgqk5pNEatEHnF^S$ z2~E~>xRYFjYdTO9V3KjGx)^Wf*CfM*o0L-Ui z3cnvjxy>*^E6r2PL=~c!Rr~6-9X&Z&?@R+|jm8T`41pyO$_(|kq|6IdUfPYZlI4A* z-bPKVEH=f+3}5R7axqy)7_Nb3L}q8D-hG6JD&X-19*ibHa%s@XO}K5zgMy|BqtZ>t zL!fH-VjF~5JnP#H#XrtfnmMuX+$GKNIGf+~_h(=_E*Av068X4SlaNZJBLVVMW9HgL z&Gx*c^{5;%#V6%0_j%+$*Y{ma!jJ9 ztN~*BHqp}MoPHZ2Ao`zK6mT2GGHG;2LoX$tw-*v@Oj_vkAZm7DA0)8ckOuFd44UxL zaao;+jGe{0Hn=f@?kZ}>MRl$FCPKPT7b}_LaDe<^gB-j0>;9cH4O~|GqTS8qRMEFx zb0O#9{K5`kTqb{+TI>fXRZGTJ-S{eWfq2E}p<6>g>H$v#TJJ_r68S%lgnbJU%#J0w zbGo>NhS7cvD9<_l!^z7c@I(DNuO8v?Dq8(YAyRr=UQV%J7mw1vei-(L0sPDV+)6yg zC(vGa>1C_1&-8$>_v*&OvOkxhU*m)g7vN_-vnlR0ZY$y!au7Dhc4mSdhv2m$HZ+GIh2WbE+*#Lo9iP#935ET`hbotnzk)Q|mlVCCH# zm)atrBg)=2d_ri;6d{?yc4MLX5_5bErrOv|OJK148Q%5U{9VKBN|Oo%{=ugE8pbn* zjNR3cuov5oPH%9ykJ1X^#BV-HJAnJeiqrTtG1kly)WSj)v@Y@N6DAYs;M?P9?cH{wMt#+&-1-a+ z$4Y@OLL`U00~}K!$@J>UeA8SV#0?n_`*e${jW3{S)Gar8mklDd!<-EqtwSAg^v@%- zTqGC`Uyi9Ty$gdV=^X^RYRtUjBdeakb^U7vwXG+y;iNSOpNvgm3-S%@mmZ0RHPIc- zyW8?5!#6kTm&s~*>9X*pjLJQ|HD{~D<4j!H==uaxhjk{N!d96KP?f+Mwn=F>V$cQz z-Ak%B!IGVnEfyQQKTgCdvK6y$Tb-6&$nk%gUuWLf$PPmJ zKSH0cyFksCx}#v(7lt*%f*)y&&2U-KN376c{R07~dVi2N1r=Wn>EWgnU9TdYbbvI< z=Jy71!fyJrXO*5yxv%m%?8?lHEzMk}XQ|n0dA4*yu@N6WhvO=!g=U0?@fT#!}8h+PC#&R>THx?C-=_vBbj)`A=?wkepH#wuD0Vg9$w6LkH1;J zxqG_3s_5F=(V{zzuO%nl-P9$+SMuqRFFq*wlrEUu9UU4tH!=ZXocF76mP<`^EbuB> zWPVmP%y%O54QgBk=bz%TA$xEyuTH-De=o)${s%Z*Q3 zM9^x=dCp8a9SF*AGcbR*Wa7m#XR7o3ss!1^@+XG!{R4aQf_K5}`A3l*c~)y~f}>vb zkhUyDzAS??es&kQ0>AyPj_kcH;M2UC{fvUsHu%yW?}Czx0JwHR@TjX#&qUmc+RuUW~y5+w+< z(*}XSF9*K8)ywk0Q z0fC2P$zz;)<(Mxc@PinR9`977z@^RAG#X~&Yh@$%Mw04}&`gC(q&Z_K+@EP|Dy`YA zf$49(+N~i-yf$7+JhEZ`A)X@T)%r_~!5G23~wa5CU|vh(%tz zDWYohE=2l_c9;PhwbevTswIED!(lzHC_;$qw(hquCU~wxAygcDfL1VuO6~3 z7^NsLx3$yau~*xLV-#3M2oWrr69QpKXDYACaNSVW{%o}`Jkvx1KSWIk?T5Hd_LT$l zGqqf7lZ-5fV1>4#TM<(2YXi&!*BG)x>$y@mt^9=pPkb&l$AWg0WhKgWrzM$($C8qw zB)ppAi+U0|2o3ZvgP`^Sx4|zqF*`P9|HdTz=5Zg8;Jb6=tc+W+gp;weduvLudR91j z^mMp;S>kQ#w1!?VwwH#b{S+?e-ifCDkroZ4V7#I^})n5y7TOqQw!j z2Af(OG8Gt|t4m`oxB@|V7AlhIF<2dakzdshpC5}|j12DQQskNLJuDgKWUOv;gv{w2 z7eisHPQQQNyQUf=LYlYd&zAGqwMCoE{XCrv0mi`3@^+$2?xNl~xm0@=%MDle_<1BG zg18XuZ7uuCI|becgc*th=u#q^M5oLgN@}FB<63vBek6*~yqb|i-VA&;aWZ%V<%oxt z#Z%>);nege-<+KJ>Wtj{!bu#+xpNSI0vpor8u|k``7pw`;Py!v8zlIo3raYeV_;d# zHBmH?PO&m(I%M|o^>xa#jq+ph4Preje^PnCtIc|d+}Dq2J$+|rfZ#Yb29(QZQ!t!K zIp$cr2=bl!7V#Jq1&Ju6Ns*e8k6>+Ot^l`)trb@OAv3?hLIiI7rPE_`l0(E1GoH2J z6~0&RAc#a0V@0(7TeIggTthdAM^Gg9cEsvL5`1QgszNZ<{rEGp1q0-x3}_VOKv#fQ zBLzGEdy@_q^~#P7ow76VeCEutQ)knXji}(%j>Sz7dfmaBzx3^}#qe6o$F;`>?<{c<~5KHWan1nP^1X3buHXX)6hAE*rdVP>8mrUy%yA=hXKw zg^iLb=SJbLasnKc+Cm^30tob~c@sr%4`41;c97wRB~4Uo43h|iFnyh6D^V;Ue%o`Pw2H;2Pd1fcAI)b-zdsvl8Hm)M75f$fDZh0^X($KRB3J#Bwj1~)4jMMGSfDY#5qzuX!c?Z1?=QkC zDPWB((9AZCz?lS=a%Hk#C06Ovymoek+io@hA!eV=4%`owqYvTTBhXKc5s2G>jq-Gu z8sw*Z7*k1EP6;z5Q`V5u#8&?65Afcc;-AT9F7hLW*X?cWmNb`Y^UBO0jQcdOc(hiW zfYoyu^T6J>II*S~;UKzKaBp>}AJwbvsAH@XGS~;_UtVgt@3CVqyPG5-Q<8OD^G5CH zWmj^$d&@b&ZjN`H!32|Wh4R9J(`M)oxJ2l{UYi>b{a+pXS^6V5G z?s}Ex+N00#)dw6#@E#rCJ4f)E+1iHrZB*q>$~doc^YOR*Gm_x30p;1=%L6NQCW_2V zFQ+qAk6qb85#e!Ul3Df+*JuUvhA_5BPqwktf}GSwhW75APaDTy&9>XUoxLD70>AT~`~!o&zuIFO-eOVEsvR7^{tn9oa10~6hZIDmU;fvkGv&%} zxFIWMW9kFLMTA_t#;(6nLo#Z!auG3F`%&K{1uqJ%D_y877S0oRag#&~3*{ZJcYN&7`J zlOL$50Eoz)dGV^BPlI2`*}k+fKcSZ{spO$fn;;(#0K@=spjZ@8Z;(ljcYU8ndpsX* zWXk7PoY*sG(ZWc(X&!BDTp24Y5?C~a{eugFh39K5>W1$}D7(Ev@1XsVqo}Btrqb;h z<%E{!)cZ>%24dD(b>xLZ4D0ydmb)$xC#Z@>3#0u$98#XkTh*43o8iX&5a#^AeX|E(d`Uw5i-6q?)q0w*LK9NPogHLO z{qz; zXU~T;>ac;X@uV3T+_9TSa>tK!?0`v`cq+kW9fL~^*+*Io@!;s zVKaVaIEkMB@P3Ypj79u~7LA8bPJ!&qigc}(%hqO#%(T1f437}S(Pbu%XOt4ST)+1H z^xA?fS}v!F_sQ*q#jz0z0YxcE6ZTC8^xjX#1eL2$z?fwYQP|D=kJTPMVzuaoeiyjV zKV)8x#vS0)QY9=_3^Rvb+e!qxr-h*&eQunP<0^pA={Yi%2f?}V<18gmzt&Lhuh!12 zW4l&Mddzh2Cgj3_;qK`iR$TVx9 zRn$7V+MOc&F+LcYQBm0j=DU=z(7G)pjQh)X zq7u;@pnV0l5a9Q)KI^?8Yls1<{#sdX%zj_G_7nO;y(PJ(d-2pkM==;N;*bO@?=4i| z-9^Ff1Ub#ji{W|FAa%GsA%?%_pV4wP4o@&wE~?654c3ZHbcqSHc8HxY$*)+U<&>8E zYZvM9^yegcYMUbpFoj@s#Hgw7Q}-6x2T^G8CDT-j3yneocS`EHA|dV>RF;uspryOX zkV;Rj=t7&uRsdRt34o_x5NvBEk+d>Oh}5!xgRg!>*UFGv#Udn4(SBGXw-8Tg@_tl}OFuafY^|FCttpX2+>F--WA!kC zQ=E$Pi8IHX?Vypov@rb8aK>kyaF23iFj)A1`*8IEY?s*C80r}7348&-D`sz)SYH2XLrXV! zF-&eY_cI&oN7(&EI6tgr)4&Lg9sN=d2<_$emPKhhJG{L?!p2{Lp@JJ!&xGn~7fFz` zvcAl_>2-C59Q~dTiG#|qloLHimrun@Xid}ufH7B7=^eG2n^PIQu994Nc-agCq|cD) zi3nm?RM2UYxz=BN3Zda36+aLKyVqk#CQu=o1Gh2U?zjffVE(=Fb60z&ekeW{Mx$wH zQd@v>OcLzs$8BoR?V^N*OUN^P^Tw%^1{{_)N@UnNKiNO!Aj!$at9QD(Jq;4wNUf|t=9t=} zpDMDK>(ae~i+xmi3U*W(=immY(Jzx@2m|mV1E2&G`)ZaQ@c81koNVdWSc*-XV}G)eDm-URqeSs>M`S1WdpSP!xdwB+cPw(Y1>&A}D(KYIlgluydL>!8&hqHyvtpAlZ;L3-#1)0w_edeU(x=+T~LcD5^6q z+>_W_6BJTF<~Q9GO5N~MX#BF(IRH{ zGVzegoHT|UDa`S9G8X{QcZq`$&x zygUL;CtgxR$}k2ntv+Idp)$geLS_J0*inB4$A1vEro0=XHtkZFnh9BRHW*{Sk7uU((gaqnDCfH=- zqpCU+Of=L2%uX+XHxB!|V!htz%JAg61&3I+u*ACCyZq02nW89aM7ok3c#$)I5?e=F zt%FBLqgs0T8yce>xpe%28!utE*!3Fqw=KUabbH2%y2hRRWTlV{0MNpZF_E6KSnFSP?#yufkA>$^Y~uXZ%2KmI_W-n!MmO{`isYvM`BJ|L=BGD8Un zjx@jL0tvTVi$3}8HeF$5TTD^D8JeqR4();XGMsr!X#bXe9o#Z877&Tv?Nd_@4_Lr2 zW*JPbwtCkeY-py7F!ylX%LU-3m|!`%O2!Ow`=DK|K$q7Cd17dSVp>j$O$BPPRZ#snN#}qD6|m{3N9#gOL|aos z2K;c5;XIshB;fjM?=nwg@F-5gmfq9t7z&9%4PL9~tU1#D8Dy=?P^YcfDH)!+AUso$ zZcyG{xPx<->&}nuXQCTA-u4}hdF16--`U@3(;wq`jW8|{!r00T1EF7muM~h={VHJT zg&Z0^Hf(Hi(z2#aj%8`1fELQn=kss#xzCTXs8r)965Yev4IC__%+7dh!_B|*n+4yZ2J!$J)T!T{>-4>IbRtGOMQ(fxt&)&Zy zTk(RrVFZ7yoy9-|X#;?aU^RVa1DCZHMa&wnB+E+E7ssg7LiQ~rkY+LrV%~wEQ@@mN zg$Trs8T!GWURt4Qp3m2`^^M$a1P6l&TN>{l?r%>^L)pu*`+GjIvh~T7!`0nJkjRZf zt!2>V8r(v$*@6drcMwdf*X+K`Lh8PnDGGZCd>p^I6(+mFH8mQWKe=GA+$$!qBu=|! zF0(M9)36dEHRduGqq4cVF==YWW77}Rz_R)hXv?m1d35BD3uF!oR8?JK0&DaKx{zKo zt>{0S4|nkBuz*I;t{Z|@S%CSDYsjkVCd*|~w~3fq@r`8`#c;@e5E7lmFp${#qrwob zSfqDCHO7IJM$j1CEd~oy&*|8rbk5fk9|>BtRLi`Z=1AMtnA$7JTg6r2%?um^+^(;l z%|PEJJud}N(`1$a>ejC0kKsJBnkjn*a{)(R2IP_&vv%9j>He}(dBK?8SPX8z4LY=4 zPvu~BBxc z45+XdZ3q{VDFq!}Od3}D4|ZZfw6UWWf3m%<@~B@Wa>=51MGBBXY9B9*kTWzp(Y|l# zr%f1rBtJ}uIft(a+Xl^3wn{E^%wPq&DO-Qzpq{Acq0D?KO09X5{ATafPlx>6@(s8- z0i4TiQOdb8Vc=c5QGemdXZ|N|fYX}{hZooJs=>nMQ}d*b)*jSgD(&H=2n*Q);8{RS z8p6!NY8jrajbHq1mnUJ(O9SQO>~5h;{8;KUS&FL-M;0-3g*dM4%O}lf$xNH(u%fOj zbpb6)e3N3MnBdmz7cTH|<648(stk?!E5z<9VOo;94jeXZau1F6nm3a2<5&zXvZeqb zHo2^G0~?jwbkS=f7!N?snzfs}MNfbWMQM#Q4?$1$l#n3=`aT3(lU}k>=tQf6-Tm}{ ze?gcB*TK@ZP9J8-BoaRDlW}wF?QEEn2Ll@*gwooofDvG6v%u%EM_@ZSnqfD^tGX#N zD{cmuU743gWyG7b-Lt8`x97FC>$pXFqi*qqNs4WoW1-%AkD^zNjave{AS#AdVO}hJoq<=R6tmlguKW-G{EZpv;#AADE<29-9c0Is|IE@4+Hw2kKCarXD`oFc%jc9k*voR?AO;?9*B^nYxhG;#jWhTZ=IXF+HCQghcOG zuKU)ns|#RX`s9+-AXh*}bF4GJi-uu0K?Q+*Do@%-q>Zw@$9A0^YD&aIRs23# z>7l_ekJY;JQ5-NsX#mc%g4*r)&!xPRD}7r7?8?!tlv*WHEVY-0**WE+=eS z1b(Uu`7ZtTuK^9aPaAtku0XjYfQ@#-3)KeF-1JGDS3|`PSh$y679!@AlhZ`M%wkc; z^Jxyx!wU)8uVozRMq%Z<9BB2xbqgWv-A~RXj?qI0cfBd>1BFWk;fp z#ixgeOTrr_5lW-lB~({B!B3FNqx)g9TP49bb$>vqTM83ye_!E;&loo{=ej*3VJ6f% zlLt&x7@yT)tVo)3mkEfbQP$oB?oJw}^juK#sEAI0MfCH9ik)UlXX3lx^PC$5xCSoK z@OjyOi!QB{*K7H@Wni979oWmRRd+52SG0n;uokSIC8@R~wjG~feUkhn!J_C6_N9ih zCJ|D5gGfE7{fV}jZ_G42$eHbk%BW5@&IAMbsAt*f~ z^2t5?MpjR%j>l)TuR_hbtTJJS5t`sE&aCx^BzpXX`U!-WEVJhQwq!T7XTq^ftN#TC z;{Slvc_z6KR^3VJCBR9a#erncY6%3=0#7#45dHFpP5m|n*!Q9~co-RuqE@SJ*nTa$ z_y>6lm#&_OwX78s?eOvuHQcD1gr8ZLq=9HS+;$mZ_S(JSHkpQNn~gCX0=!yVMT`b_ z#*a!N90HNjQ5c}Yd2?t%%F8*C`}kSp`cMR1{O`g7$xUuAxUi(4R9JU#3|4ViR=PRC zEEAj6U^(d(Ovj|uA6GIrX-x%Ls?2h4!f=WGTF2R~zpmdDOjH@>q#cwhG4hPB#Ll6& z!D`jg<%mF(EwuvhM~wd-wt*ins*t16Gf~FPos18}&cfBK5ZZa@G^mzgWZ8e>5gr?R zZB1B=b`JMEow%2EX<%af9r{&$4rVpk?nPsoMBt!qh0q<`zL(Dy!t3%?7|6J_K0L=k`d$#6=%B{4`>XBsb{o!y z^Y7n7nEf-9b+%Hi@)9LiLnj5twr&Wg$I%K##;4e+rg&m%=@Xt1@YeGLbWbYCDa(SB42BkmZX zoqp-OssRZ7>-C&aQ!EhMO_q7yilPE0{vAMN`D6*Ce&jZO0Mhgmb28a9L_}0r&t>5+ z*iv4e%)1|c>E)iX*NrS+eB7OfaDm#awcueu{ws{#G50rwohr%`#@XOQhGET(F>_UN zjQ~S|Ks+Xv!%CLRTH}U>7$s631)(+B%rmoou9RgJr3-ham=KnV>hVpMy_XN&$#=o! zmaW_L5MHOP3bJv;uKXaD7FELR!Ycy+?3#T$4hWQKuOIHpt*)|4H-f8h6$NNjwm>Di zo(m(ZYzr^}t5b$NqjZ4A5I+M!_u32Uc~^2X@^gv&;YxIJUFKt&P%{J+Bqq}^WD z;dPsZR*WKMHAW4b5?FvUGB21OZ`!#FGnHA8&$U49!RQu}P;%~K!}`4A8(LoL=c#tk zmp?C3tE!c8eWo(AUouo)6U0Qnk@{>1>+M-D%*P$4(X*g`1h$q^0_iXv0|ZAZixK-w z&vrL;ro`Vw&{sW-$R((bKLRhZo^&9dpS2Sj;SCY~CM+0tL-x>t)hJlVNGM^j2R=y! zIG-L_n;ibqqCT303mT2{d%1omQVv5N#!zZG-O0)Ho)>p_iR~}(%UzCw#oQ|L!Bbk< z_@a1+y5A2UfHK!@8*wbwu9+X%Nbyd;2FRa=IH}wkveIQ!T zRT7*20_aVRH$09{fqTZo^}1E=rXTQeL1P`{bH+RGLFj1e`)*qz$gXCm0Ui7zdr^#+xONR48!pbn`0uR+f}2WTrc4e}Iq?t$b)g>V|wCY&@*=guk1{(!2EPK!$

r|r!{rx5KE;v}e`d%iZLrs(Uppbys49sH?bjmjf=;kq1RtHR z1Zz-I?!TQP!sM55Z=YjY4h{CzVzzz~atVekTP%$68Qc&XHo{(*t_R!y37wZdxlY}w z3#8I3{k%VGi)p^IrE7-SxCZtzd!xv6aA3hbB}Tc&e9xkb?EfUJpN;?k7-YAfn~oM7 zFiR&;*~eZ+J++jVH9+(2=S5;NrE)843Ww53{Qwn$T>mN=sVi!<=|QwbKk|7syzNW& zrrrsNQB!IeFX*?r7cl}pF0_RB6=e6SXxFaKlF{ZaZ#Py3Rr*=!7M`^+Q5h|y^Q;-} ze$ZpX+V>dF}Dj=?uPo6rIIR-K&LCAU=x60XX=&Ycm!biy@F(VY-Wa2=P zCe17d&@;wWFb*0Cl7wmud)Sw{Z2}RFz+~-`>EjS4V#B}JPg-O1xkenz%rLAry{j*pWgBz?1{?RtZW@YV7+0VTKBn1K{mRtUUR{o`~>ot$CTk$*`BvJX)c|M zYwNct%5*7s#U#xe40Myd3pT#v2Y8So ztBS#m5(`2H0eJ5aX3C9;T|~C@Xp2IE)%vEKZxk4+*bX<(D*Q#Se}9JM`LnX7 z=ejz2EH)-{PWDsPsC;8o@PtsS8IyI1E4lnFW^r^}U;`!HO;n?akC;}F+^|4fi?in2 z(jql1yKGTeJe)cjG4Cft4Z$&)fNkUABQz=Cdg33u_XIr!ll!dWn+wBN6*=sErjP*a zM;Rowa5#Vezy|mvhv(vie7`&e8^gdKl+>A01YjPm9Wmd#5L5vXtutN|8^gdvSnEYt z9d7t6824E_vg7m3ai&Snj{zbF0n_)@dYg@3F`2A&*in_!5?eWhxM0|?xB14f(4 zY0g=BwN#Pih04HOdCuRcVxuB3Ie4YBO2#OXJm+E3Ii-# zhh_j~U^in|&&n-fFsuDcr8JV-rLhsoZFi5BlfCVsaq9q~MS1d=-hhF9}d4u$~IzVwHouW@^_=+UzVfO z;hjGw>p`V-vZC28uCfp_+YpQz1e6(9RO$bB{#mS4*^bOq5(g|HJEv!I!WOGRZPS~q z?{r&sW}Qi-W{V7X?YnlG#U%qHgl!V2l?|{OZwoxVHOuS{z+7(b&%Hk!s04RDc_k+% znwjFO3%DHK77lfLnAGSTV` zMD5de!0k88qa3(}B3$F4hmCjF>95@3jO302Hj+8bSEw{EyV}=OJJqAXh>b$M=b5h8 zH3`mtf^y{wZhkhthi`JsS<+qSBeY)>P%v!XF?Q6O?6cXRvJmh7XNRLM4-E2*qF_&y z$Ho}I`i z!?bhtjoa7lR%`M^A^Uwc0JVeq;T8_&XNB!@%DNBNv({v{~$OQxaCV-@nG$AIyY33 zxi8nh)1o}9r0|Q)q?!6+4CG#qp##WMnV{9+cZP^F#qJjMks1c(#O#(x#)+hGgoYu3 zFL2srguXVKuVTzhFO{`itGR=EYuaDnw60PIpi+$YpgaaAF;x5{8_d=PbkI{x4kiRw zZHT4>d)EH(oaDbkvV1B_E!|uG@k~r9>&8k%FIUujeFJQkyH0MB7rhV(&oD?`=O#F_ z8Lwa~ypuq+_V%Abe^f!A1&Yqx8%+ zglm$injy!+z>4VOy6qwijoD(LsIP6g9k()7pZwuA-zmmh79>&M*7pFFLhKm}Ln2J+ z4FXvFQsE>lTp8P)Tl3Vwn{K1SNIY$ZwH*?K3%>RBzh%5$wYBL$lJ1!$d<%;mjc~^K z%KvXAqrSwU-@V=}adwjU=9GC@$_#`OFng6pP$>I9hsU=gZ!wJ-Ws!+bxdTK0b$G2r zohR_+Lm5QC`Oa4s!yrli-Y)#1Z8F~$&^5ggjR-k9R_RtqPSj#9Oka2Kf#8`9TKdtF zXPF%;2x!Cm{9m})!`{`>)tJ?y^W8Mmqe<@<^tWTFNW+%0KF(WU$LjDqZyHQI8?Tg5 zhz<9TRaG`ua$y8_oUW3Y-tCn#sc`*NwiA-2yJG%kM0yO7=nTs7mg?SXCt zVVSw5Lh`?aO%1ZP^62W>O8N?w-)n7F_4cw+!T^?hR6et@6xJE|Yx!vq5vPok>mJd< zZ=+DXD1^g6Jdu+!fvt*5=Rz}SzvjpR5@jD@-aeDfyFZlbA7`KT1R-e}xZo~D+<0QF zK>y1<>VeCtw#o8OCw5W)0vM0%2|n;I7qFcY(@9#}E#1uDBqCR{xYfY>1(`ioiZ>@$kbiMwF!TA{SN+5ltQce6jg_+X;m8%a^{3lBiY zZr=6mi=I7VCB`zpnkT+HaHevDtlu2=TpNOv6Hjb-Szg&TTpC3_NbK{Q7()1w0_Z6n z`>Cw$%|qh=Y~@U2cY|q-YM1%B=L}r|**FJgrH>_xU#34GcS+6LqcCYrRQefa_KcF| zJrxe;6^hS-?-%dS9gB~gIV_DZv_qb4a5%tA-@s+%3+fN;BmFs)A<6RF=5;#fI*s}| zdmZxWvq5n36tzy_FQ8uF0eX}4zZJMSciKKc70PKoxLD_D?zy!tY*tEX8QN36Q{{oY zu=@1LFBjj)uymQlgde-m_E{-EM010FS+}j0KE%AM|GS=R9^@U=Ce z=WXN4)ruk}k*|n~9*{4G20&%6hn#N7L4qLMHkcV^~-C3~a7 z?2Qc_UY9b!93?Td-sW${ybI)lhV*KnT+3h#?k6pBJw}7sqA{WmrwUOO??+}Oh{RH) zf(xRp0ru%4#( z7lAL{mTPWI#?R+(aOq3dm&IJhs#$c6SK~jDA`901U!clU2Wm!Rlr(zUS`$(3rx~xu z9%8WQa;^+I;c0C|lP!c0C*D80*s(d<0}7-^#uTeI)ULuwZ4*`07{NgP0u{6AA=*uyc278rFzW28U}QJH)T?)rWwtB zFqNa5W}2%3tp2<^j)Lr&LceOQ$F0z`O^bhWtw(cXKMzfwS+xjM08cX0%Mwl4@?og#_$#&{E2o_> z!^pxNg#ejKzvGhd#bo*hjX-CILWZ119PwO&Y|bS`b*T73+H%qgP&MDJP=g(@4SJ(G z^WqB#h1f81OV3)luSdikukNuDo5-~N2=s)%3!ZklPg$>J3TPQB1y_nn6F?U#7+CR1 zN?r;yp!9>zw{Cgi%qtfV|*=(a` ztMO&B#EH|_ZD-9ai4Xf7t{Js=kcF06{*AQin$vHTF<>G41&Y2sm6DjRs-qha*k6Bk zr*)WJxcN_Y;0RZ4_+D{CqVnyh>W4<_%J{elm>@y7D@;M+IQZ84N6@86HYWH&Oa%e7 z$4Cd}ChH@fDU)^R%}r+xYe^tGy#;+8!cZ{Qy(&nmdR8_p*I;oC?65WE>0>*#6d~mk zZOA)7ql>Q+@X>PFQ~2l6{{aAite=!iE`QfDafFlNC6krI@n_c`9xMYIqOA(KoTEoY zm^kK09nzLgcE4Ov&0bSlF0_ zy;|MgnVzorWy4#{^n4lxXNZ9 zBtV0n*FF1_PE-Qco8Ysmhjz(iV^~Uf?)(|l1D`pttDY|fjL$#M)9Dmbo6TRWMDv0I zo-Stq^%I_%aCP$J^}wc;wxVj1lP*7qVgawlCUJO7OkFK33J!VqUMphmMTZsj@@W4_ z+-|-XR?gmE(vLV74$)xqlK_ai5}HDopyMX*(pm6j=?3P7_b%p&w%~XmC_^sLJHNNp zI^OW1jk^_!R8b2&IX%G>pD={?;vHh21`0sZyxUyCW7%*1@g&QBJo@Ed=8oo1;jZ8l z^LmE@V7-wmQ8{yR5N$_EM?S&qr&)doUv6whx@(LmOI?KCk|T zD2%{E80Sgix>P2}^$IVLr-%q_*J~QfytxIVJq~oJ+LWC@6DSna`78w)p;gm~DwT=U z=PfI0$x5btVB%M20R8z8RFbXROeTSMY6f8M_c?&_HbvNTtW}Wl&8N*a``eHRdu2es z75YX$I~tl%w<6(G z#v5u8q4Q?a;ER-z{l(0!^PbS2%1=}u1^l+pM5?3#*nQk6R)UUZt>P7)(c-RvNn$Ru zNg+#(KDHyN*t=t+rA@|$^L{%fSzoc7FkHJ%W<{&XB?jx#8mJ3@SlMZtdcQlMAyC#n z&enlqRsG4=x0A(G3>6azF!;=VnjBuP+q&9JYZslQOXRZwdaE2aG?~O7N<$V*Gc#V9 zUp{t?={!@4RL)d%KfQ}~!#B^pDQrIbZ~dJws$fq0q!{;%yy)l1+s^A_7u~uBy-gBx znsmq#0OA@U>d*Vq7@0&*4iKIZ-T}i;YW46-l`)p9&^HybO7hdqr=fP4NGG6*)gm4^ zn}ek75&CIPNN8bn3;xZl^fEIYQnCNeaoh*UVBdCFsG^#Vd?P818`*=Zd1cJ)6uI3P z0Uo{Xljvq+g~7OPb;=%ix8PGyQzFWBZsV9J%&;J^3F8BV$mu7zRb#bvJsNZ5jbA=n znLi;kHq0&J{vr^3eRYD2RrsWvmK?4c7vJ&Q^cudf*Pkww402Wg+^j9|#)zHG(@e6} z#8we*ATX9!krX5M54wtyc!%X#gq)xy*i?BD>Ey01TrplY3Ua$*`MyjG|MTpTop}cG zjt(9J`tb}L4!Q;Q+pYGa)e+1E!ee69e!pVQnmM`rpoO4kZ0KFn z8_z`jV7NSefw7fmA9kW33eEVkA=lEsmJIWggptm(T(m#-xVX_fQcuZbk?b0?C~A{1 z2630>+#lDp9`OHaKkY5=b}0$t~4yb0;lzcF?mr54}KgvofKa;_b;A1=h8xu z03ss3a)xDi4dlu3@E}yiva74I#ucn691nahFre@Ga(g?RYqQ4JU~97W#K{?FcaP1T z)?SqHSj7Kvrg0ih=8)tm@3_3&A{Os5xESkR{ksr%raYjwX`$;gkXYP zP+VsR0|L)`AbFqVX#Xx6la=jxz}=^zaBXv?OTAxwGygE95o_&GMK%NqF(Q^fu{zI% zyFT~H)#B6(`cYhiR-sq3&k86Tj_YEdf6>~h*-~31nC!|%v{36;U>bv_&?aPM_v|D0 zezsuLcGz1rH~111{IUYlIndo5TK}G)rifJor7FCHE*7+)Otde~B4AGU9B`jTzWr3~ zbE9m)v{~F1TZ@NB_-W$j>#Hq>CYTI{Ads}~#bjN+C2}2PB z5aOoDnlp~iS&-0x?|TVyy6}S5Q4u1_jREtEt8WhgTA>vo<{900dcDng)9G literal 351900 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

P z_r>gbRrV-*bi9ZNvO7?8qE2Rx3Xz4>o6?0$O)OkP1+j)aPS;60I{}Agem|~&oQfZF zT>1_+x@EI)qS3J76gtv@4qL^543f6tc%zFg6fB@2QPb2+oKEMWuIg zm+z(z5CpT(r-yBU9UnRGdyVUg%6lQ#K0!iYxM{I7b8+X|#c{0vf)o`$NSC8*@aPuQ z@9lm=OQCM928M8Uq)J`Dy|W{%hCKe)j$Pm2b9?1l8nhAN8C|rxMq*tvQ_6YEx(L`lUN70@8gii*>8m^wS6BoPEU`@N={Ewf zcC8_nK;#Q%UcoPo9EOU>Li`gA6^<%<0W*6MM++Kg1gMo5jJ=2y>cU_J|7PodwiL&b z#YWq-CVeE_rGok-r86p*(&?l3YHwXU)jid;c0}QJ2UJOXLR~x zM3HW)*k7y$;9Ti8kr># zZEe1`k%+{JLy1uVe|ng1uAF4UVbwEO^r;pOZ;a+2p77PM)>p+!dcDq}?Z7NSlaRhF z!sGLNIrh!{bxpE{%{Yx&EtJQ)%Jmu0q2i;r87AWj2rHfv7cg+ z1mAeb0nV~e!|VCis_u3P_f7G%rs%qpO{O*p*1$c?l49P^P~or6;s zjhQKd*%vso!ZED07NpF_jS(%EG?%2?Ikbgq1xP$GZhM{le6ipDE#cd#8<$2lar%@dn)Q z3svPN`6SiTD~XyJm2dmtyum&06aaIIyfuh=@wgw~deo%{ zi-ZH*@K`yi?Rql9QBZgptp69)xl!yvM~Ec;@Mr-y=h+jpxyU#3}ptSH8q)k`>;ID68s1>sk9-+_qP-~h= z#JAWl>Vr=WVpNqY6SzzSx-E%@iai(p=pS1i2#P9$n3Hl7=$3drIBEsz3NupWf{!0F z9BDObBezeOEY{jpqv_JeBz|Gvw86u~1UFYeFsOW_!EWLBdYc-#eW^t=A*eL$1vh1R z;En--Hj%x12oIS*20bEXeEQ*sWvXZJTq7O@ZI(Ng2uQ?K4T+5VT}xwk!uZ5~a81tR zIVHIJy{w`69=qHIfqAm<0;27aD_hu4%;-`}s>R>6wn?cD*_}3sA-*9qLJ(IW8PB|< zshGvzZyZ3nM|gELXSj3je*4FjRm0q2@{n}vVc~M=lb=u4cqF$7fO<+9YW zXy>tiHVZ>f`u;i#sl9L!*BcQ54{uf|`bW?|_xQ5IcL5KfjRI$6YIErx7+NQc)2pNBGwf(VrLr2q^Jl75BxSc0h?ZLivYQmTne;k2(7 zc!u?*z!($n5}lVNFHzE+Uu;NtGHzoUEs&_+MD_|<7rA9O-U6=?gF2&WOOAlVQ#NFR zpX}fruJyWktBPvj#?Kae^wc3)@M6=2p5S7jB_#hv0?Q63^CkS+?>@&9 zj>=fi9j6Kf=Jkp>#O1Mr>cSL(MVtmi_lDmV7_)EA+?iq-G%L@-?Z>0?VBEnhH@1}| zClFPwvqmhJ>m>XpjNNu>E%yvhE7j%w>H4QUJ}{|ev$;@IB0E0fXQ3`zwG6lS)Q!6u z#?W9{@CW0Pf1+6D!6tnwSQ~-($4J-8(m0BkIj(aYUi&=Y^PEO=XEs%!a?9^eCo^PH zX(Dlfy!Y}m;p@;lT*K?cCxA*IN@DZEiNM79dk`dwJrM8{dskTl5Gt%UpU06_*qRAJ zmG;usS|=JwRHl01GCfIb?v^OlS|si;C*q@v!qJ+9F%>{Y*1f-{vSxEd z^_XYf_$a|3nmO}PhdlS-ZK_P1`A9>8hNOvp!BC)}aQbY3#AVHj==d2e&i~96OWoqJ z>WENbb|qdd12v})0J}QVef{I4ngRFj=eGoQY^=eXuFU(O0@QzL*75C1Kxlnquvxo_ z#t3Xr-vf$PARZZJM`4mld3JMJj*@#7=AT9H#{~e@I-^SuvnyEvME?r}d)AK0idZP# zlEEO2mE_z|hI~sUpLn(JuGBwE9S$6OXRvM=xxI}}c4vF=7Bk8w-;!}^Ppt?vNFSVJ zd8cD}Q5n5|bd>g_npG2?p_?`prNc*~U}<4FdOI4ClKQsC_w?8du||nuxDiHQ--pmj;=}#3T4nDWTsH zhrFB9yA8IGNMZh)Tcq_&LeCciw1?CwqnkfPJcH#mG}5};T9HAOu+gX@G@qng~@#x!F0sX!BQ(kJx}^A?zZGj zjs|qjST^H)sS>)6o-D03hCY@#mPfE^&v@rZUGMG+N+RN-2Dph2LNDivs2*xakhfz; zNeUmK3bjVJDeU8Iw~LE#*Yf%7kx|?Yy`bA4oG)9sCW3CWv0YurXvL#KC<+dL&G33* zziBNYlp_MzdsWjF2U!dEs>J<7`ZWL}Hi%#_xdL+C7VHA2Eo>OYPfI|~z&j6dV;R`@T!pKh=T4PM**g6lzAwys_ zd-bz52(lUf_o7QZ0DOK%$6n`6o7WmqnThi6_>0)2uXLy|A#iUjKIM)c6>v$Q9db9S zE|?P|h$I$bSJUklfzxTDUxO4vZAA$2p7a@7`!19pC?8o44&ji1sfar%_{Oira57zc zW$c{kzac}*Fp4DtxGdG$2-|8_-_9~#YHCkC+Wb$x`YAcvODe-x;EXi|Ym2{`!CpvG zt*Pd$V|dq{>d_0&Sar!-)Avg~|KFh!LqgVAT+s`X%9n4v2pMA2h5S?`jWAVXC6F?y zB)&_K2L9X^@sZ-rA(Qg}i=2kS-XtGyf6#Reu5UBkShgSV?5axX?+_~_RwEO3werPW zJDln1dX0UE->}A~w*e^1kTDyI=ef#ISwaad$c@M@I)cbQ@_s)CVy~0N6o#69;87Bu z5uJZRU1Guz;r!$$(_cf)y9Oqzb3(%g`AV>OSry-+&jG!6nmG^HOaFFU6<`p!j?n3# zzF#e1Pt9hpJJkE9{`oG>ovJ{-n2$7;HDt}K)X?O=WfE{{h_a! z3!rKHTTaaS8~b7jj+Kp7>vBVdX(X?;v(^)Tym(~&|s6RwL_K|d!2Hkm=4R9r~j`@z}}H)H)s zvdx{f?3rCZoDb033A77u3&p1rZ|x1*Nrgwy?VT=8mGRLva@H|iY+p>??nw|CAbbUZ zAv^vw!TTjL`<+CT+dHpOI>1|Zym8{Bvg8A4p_-Dk$6}Wqj5g#)&rF0U@RXpl={XAb za`nq}lqT^8&D+>2&`y!<^Zjkr$&4ej75jRqY5;DHh3IYcJJfC3R*lP9>$jB5?F?3u zq#FtumG`zT$8Bo?Ba<@!O+i6)c=1_PW<~j}zLrD48q0Xo z%t`iCSRi0||D3TKWM&appC3i)DSfwC)jYEbMD_d*dG%pgGkbCJ20$!LB2L?C6#;?X z;gs_?ULVkdDbgwHwNhyG@%Z2f%=6daz$|Q>ZhT;kMy|unLg|?oD-Z8Ld_2394bHR=8Ia`!)KFOZ(b3*MP z^oDnK4n){`{^>QMko6>gd zoa3*6P(c(>gQ^h#X|*kyaF`6R+Xv`P-Ho5*8s@i__l$6uhOe%>#JDy_vjkRzz(Hi_ zutYh0v0|C$(RhcnFDvLzTqm@da|>Dg|6Xl+$7EA+5yN#Li^33Xz4s-hjhMM0qWDj; za>iMgtW!0XM;)dwE1W~&@M^b^o*#tlGoe${L>_7s7olFk zyGXc*uzsa(42uqIQ3uTqT=+*i0lB7La7Cv38zcY?Lvd!(XYLuSgTC^kM=ztd^rKZT zUGo9Nkr~$a{*~<9dU~mPjYmg(x6U$#I3OQ}9*=z;yToCV7wO8;hHZiXVU92pU)V=b z3-9ax`+Ght{mnZ>*W#qmassCJ3pE{Bb08;#PYkFLn=x}9I)Py3ywg{O!fb5aww69>xGGku1MY5 z*)h|Jhx%nioELtmE-hw2OaiU|DtH5!)5~umtm;n%z!Eb1d{O$Vrn!y)XqUK8CG)xL z`@b+RHZ7qDq|cJg>-$~eO_y z;SC=?ra~ysZnc>dc1$!~cSs|PYtQC(1V8)cKsz%VFcQPt;a6Nym=UzoF)j_o+9mkN z1vk;SFq>4yt$G1qF~duNjOs4Vnb>zk1ju_@ox8_}DZ3QLx1;5jCLhLJ?q zQu}+N@a!`Cv0<@ca{KE`z>v`y_cDHu9*n1xN0--*QIPI@=6>JKwzdI7`>Oz`PD3#{ z$r)FT=>U_t5=-9OqR-I*d9ACEm~nrfRVMc6jP*z+H%5bY*i1UuYSpbM*gUFUKafuo z|BRVQquvZkt|a1uMB58Z*;*9&FC2(+T3vV$s5^@rv#2bu;%4EY6wpZsAyO zM`uPZ3`^Mk{@@0csv)087pQ`&68rn`{8F5WWFLtpxZUs+zqu)d$!yNvxA2 zxc|ihXB?EdoK?V+aP$CK5hlQp*#k6n+^k~|t(e%U?o1@>;}FgCp0(r2*mWgjJ043a zPdei=KzpsKAOmG6kQNvil#b4R%4JE8GuI@-1IX$-Rzc8YV@Xx70Hx(fL7*uSe9E)% z^t52|>$+;8YgR!nt!xpO=E32@nKVN{tXh*y;=LU<)$KL2R*P4j@dhM37B!Qw_)jb_ z1_xmd+oJM3p?FhMr@{r0jZ!ka&rt0k;@}*>k2P4*RBAc0X`S+v10%iInkr^o#!D881;8_68f_z6m@?ZgeAUG5Ca`^}6SRZMgYATJcTJ8&Ax}X!vjvJHPOXd8~=A z3C$3RGMJ^x+p4-H=MHtVGl3^+HU*vRvfG$Kp^NaVSO72JVZC0XCRkLY_Q0{|P9(r` z9@B8E{H1TUl_oaPpSM0@kW|Q7^B+LR{%V&ufB;AtcWh+!#y;1VhB3sy?m;&4z5o57 z2FJurhA<#GCJE|@uSOqs`o$gE>ZCGU66A3SnmBiUflwSsp>P(mZ7N75~ z0<15JUf4mmXhX+8JfIU&R;x%oBcK-4vL;Ji-2!(i4ITy@y+Keri-s(ZeWL!i960!R zR(fo@6+dnN447CYUoXm69?=hw;%4Lr(JUDa(_dap!&ahY2aI{l?)THIbyU2mh#4w- z3ydW&+z>31eqnEnBhTOHQdMW$j|ONI{(WFjmIH;z_bD0j60>n*acxu4q=O3}rCa{u zISromco|@kI{asqTy$;;+;O9yus8R_-Dt(SOzP2Xy3_~1WLI&NpC~bWln>!l9xe~R zvck;8?Zs{Hg{S-q9Ytb*Z73*w)o|D$(MdPSu{!`};vGE;AN54G03|@$zsvz=PqbqB z_90uPWRYT`DKb^LAgOM~e-G_7zVWnX))E%xqEb1J4UaA^0wWhLxxD^}q5$%1S0%Phca+oL23jNT-4qAwJ@&pKqo2pE-wP zJF@kS7r{_XKmQfa?S(loR^@%;rupv5R^MZ)lxWYvOh3%DXKTV0!mqw!M3p1cjs+4~ z>k}=?k`79{6K=$fM~HE+!BVoJLL3E@>Ix$7D;__k4S?*DJp^nSp*qydl8v}rZR<4;0~wcOM`|7W@D!fPS`6! z36&*>2W`1WChpWb!RdN;RU!h|5%Gh}W?j7#wRQgXqqivoqYfX1?+>O3#P|fI015O$ z;VqXjkH;#@TW4z4H4Xo5dlofB7GGb@*wU%%@~s7fqc4BNWhDPS6Zr&4>$Fo{W#ZG3 zTUA(29YX$|>2ED_6ps9|IlA&-m*G!lkci~ze>tJAW8gHwYq_nzNG}fgJV(CtlQdO9 zb*%*AJYQ8P4fRZo@`RiD2e5|)>^K=oCH7f1D;mbpFhDmsN~#76^Ka_8zVh@Yy^Ecn zl)P!zf<3`R>6z$<_r*?UGvs>?$s+)3`l64BKs$}1pBaL&C<+#7J!@AiS~{~UMB`A? z_0ZwutEnLCK!1mr2Y+n9m!dPik%SFtgDf^085kR|v;RA{F47~Ta<#dnkVUO++Yc<)TF-JNwu2ZrqR-c-zp4SyHb_|)+W%)bykMxJxHHUX`(8{WfF zI{|($q_9MH(_$O8+|-44;Z-l%P`I@va)?X22`6+_j8~p<&2XFMwHD3Ss6RtdpYH@~ zGhkA<`0Zvd~;Rr+yGxET3c=Cjk%dR@q3QUk6j&$GH`&s zucmc{{Z&Cm1gTvo z-eG|?qB3Y{-kL@iUmhAcHmMc)GB*61 ztsKnn_uKV=Hmb{F-7yQX#EUC+E*ln}=qMqQuvn!6sjOVx*YdKf@)KPKRCoejlC20+ zW<-X&HY$WuZL#Rr_cQ`ZJq+3b7^1dLfTP+7Azk0iE1u(O82X#^7r3^fK05LcaBq@t zwD3z{)Q*5)5LGZw!MQg7P5{JxYDrqq!3|-)PlY*QCOgr$J76AhZ|9!Oj<&GLVUrSm z>48D4F)s%H+)=hzKOhZ)coFF}F=vWvVb|!bYGaXp5a4sky_N>P{I+R#xL>fmg*z=YiuKG8fi&{dDmiVKbBqbC|;~`lZ@ZFCwrX|J# zg8?XNVU{Zcich2hKfVQ1sL{;rWd{XxUzP6I1!fB|f5?WzTIjK)j_!@RoN%?(NvOS~ z7&uP3|MuWl;RZzN1QBbcNQ7UHzMu$V#`^jiO0D69Zv_}i+A%}_9f{|kL*W5xBYm=d z-rb3qGl`e60RDyL8FVCS#V(Te1UrXaYWuFvY0k}V&?dQh8`v9B=V@C>kcp|v6a5@c zo+U^e-}6^tWEx*L!Mx~mE+wIfPX-4fi!pR6L~+jrm(NQgr|t^XSWoQaGI_FnC~)ahN7|_0FN(dyoSBFy5?>l#zpmvc zAb~$+xpQNO$T`GCsuDJ$t^5?NZc6b!C4wK&Y8{M7-d%lvI)f$vJem#Gf)%P1N@5Bg zb}tvb3T8QtUIBVY)=E(7IR+hPC!H;3dyoHx%YqY`e7*N>H%}@}U_w zy5aPz7%y0Sypu6>hxZK)v1O>ZsS6i!&0*zKjK|*7YmbP0$lYcdh3|LS(nqC<-#npOq&} z7x9s}^ZQ{t{{bbJtzbo~!`bLtx1B73<%g!ueZ5c^=}g6_ZQ1I~I@SK`6{RL!^I&4!$PuSPq$9>TAZlJ9At%Iknt&Ot9*!`s|B9h8ktLN;XGV8- zE4ysoz^rc2h~r+oCZ4@I3s+$qcNu1=*^3Y+c38g{yWP8C7^VM$Q(s}Dxw_F2td0mA z%f>sL=Y1pvMsc0_K~l)%om)U-VamM;qWW4y(mW)rd zKIjZ*#d)IJ=*a(L>F4G2VLL9Np5$d)AX#U|q)z;Rp>z-<411flQ%AhI4evLsz`Zq= zLTrD{%xZSz^bHr@ZZc>v^{h{DO*WGo5rPczVlvd%u-kjQAZa9I=Vl+b z#fP9rmYG%&*!gU+<-341#1w;}7(f&>Aoa1UO;xXcUvlIiz{)4LV@pt+j^@e9Ah%NG zVnG;@s-)r*C}w?wvWA7q$VHT41^t@zO}e3<-&%YALb_ADJl+vQwFq=xh2onZeT_tT z310w2h3Yu-?I+?06RG{E+>;-yln43){KeA(A&cVYDX6X_3cn8ZXH2ac|egawyl zsM0ji@T?Aq2I?dJ>XVZBB%k^)C0g-_)>?I7Jf^sdM>3-~?C8W(9zSp0EVg|rD4`9a zGwU*Tf&g?!{S})fLYIO$9f?FH@h#J#q{!mjb2S0l(?-IQ#U}!}+!??i4o_sV^+oyj zh@|VS{O_qmwfX>U^HlX{ih%*XsAcxQp*2euKT=d%=o4&+nF@F_zzpCIs3@%)MHg?7 zn?*COepU5eNhrFhdA&=c=MIFzCu>-wsXE0l$ky8ebeYUq*v1aStXmyuD)LAt!~rDi zv;>om;V?D6Uuz^3%0n+m18fp7vA(T>x~=jtk>rCIt~4Ubge%79Gm@>p{bnVCrGO{< z55bT4`AI;k;B39p(;7wmUsJhO4@(73Z-;sX<)Hm$j0Lu2Q2G15Ge*NC zam4|OOmHVEg1*@DxcimFt9JT;nY8Xp5nW~U;7b$(y^V_I8G&KkiG)#u5W0w0)7ID=!DT!2=;P!1P})7-;?;#TUrUeJZ@SiGd4DW( z=U*c(sgO>7h6mqSL~i*l@&-R(l!)q5@~Jr#(@U50($^f2J&sRZ(aY%MTK~9-!XZeb zTaBI$E$nzlP>9n@?OTQ~MrP0<&Kvy)Wq}8P8nRN4Le!r<$yh%AKKPtUy{JuwrZ&Z| zaUckV+LChExByLC&?zeW-P&Fwp()6!g#x<6BXeTPM1hgR(fUpOZ1b*Dzi#Pzdjpy!rz8-&q<7-F zKDWGrvRZiP4mz^~x@Ui1Bbi>4K*@z4Md}W>87}EEx(J+1AkvlLMWx5z(o5Y9rv+2H znJau}&}&TV()#!cFhh??tFQyV>S{`-6wL`ahji~unU_8WjFFTufx8ySCq7KL|3iU~O7B;igx1&uP z(D&LWLba;YU(7rL7C%gCMP{~X zcsC)q!3e;=7}Sd=eI*=@0+c%90|1;GQS4IstjE7mQra7K86G6F76Ux*dA@Tj1Y&bin%9*-FBaV^9K0$HT{TBlp%qfZ&u*trv;&{E2 zT8QcQ6j5gOk&FT%+^B8{IBGCqtSd(VQk?3_4e? z`%vqGP4NxLPK?)B28q_OV{I(IAW$ojW;c36U&0({lU>M?s3PC}-0NRKi^SbP2z9D6 z_(^3fG$s~#KhhlpC4($YTpstZa}9+R=@248X957GEnZDysD9SfXLU@r zw}5>E2E6W7=eF9;Q(Ej({-N)sG5Bx~_{waE;>u%r=Dr6Qjw`PX9vl+G`ZT;Dg{1WL zkSFeW$ufN({wTrOGZ|iFT8nIbG65uYu z6tGPA+*J+`0(iKgeKx~t63WlVJT0AT>Z_##dX5x!fFlZOJ1W=x<*lpzEg!yDXCMed zc^w1r*NE@WM$#uF9#j4Bdsl-Jn{xO4R!x~b>`-MTc^?)X)55QAU5b}jRFJd{dB4O& zFfzPp@1FZ0Sd}K@!|W5Nt8jOh+Q{(od;q3LsuGlD_w^#L-R{j`vxdE)zxC%LUqDPF zsa0$^G;Nt1-VPQm@%QEbSG_I%TaDI;@eOntr)Q#rP}o65*H)-2+zx&$9VL_q%B?@& zUs_+tQnxM%@c;zA9y=SzBDAK5mc1!8xqEb|^f}sZTdj0FQsJMM&ovPNjYx8b5vrd0 zz-#ZK!a8$3F-4Yv5O-k;mZD{xf$gVvgm>gRIo9Cr&%#*-)LN#Xx!V?moMFgE@t|gL zX55V+7{BXKb>|;AX8c}jFp`3WsL^u`;WQ^2N zYqcx{D-t-ZQH&5l>Q<=VjP9pxcokMm%S!+Nk_=AxnlN_vb)rE`BhbgzU-zpC+%ViI zILCBXsZ7v2U-GOs^>S-n|4Xvm=}BDkA4n3#UyFf3_mNMhL;IbTO#p+FtmB=J}7@yK;vA-d77Y)O^ZenISN7@;*<=IYl=ecFf* zt&l4cls834y3x7+aoraTE@cIp2K%RAZhV-Nx9K3{8($;U# zF6HsMG^?*HfB2&7sw_}0hqwf}x@2-F#rZgUl>f)V^04z;i5LO5C(A__9Vs{#aO_Om z6B9z5S92;K=WbB>G*=aR%nV0ds@W7s?b_LJC<$-jj5ejw0Oz7gIN0XQN^M8}h`|R| zY3`{b-vSB>kxIGs3$iAL^fBIVGc^1FV$)288g#oa7zPsQTkBc94sred@079TYvRNv z7i2-@zOqiq7yFNd=Md2A?ji%zh&YWHDdbYd42`hSVoCcE()MLYZJt1Q!;_h#gV4&( zw2R(8=BglZ1P(>GEEo*$YKC+*+5|ee zDh|9Yn)LfYDto{OCFU&FIzezV^|>jode1~>G*Y)qaW<0OfzL_E`*V@$FYSj~*xLn& z`h7dGrf}FJFA+Ed`0#7=u@aX^RyL@W!t9F>Dn+lvD)8BeQtdMh@?|tdEq@B@OJ~ra zF#l4^R9=TbXxd$UA`QR^iW2oH0En4HYbqPL!^KB0IHM7JDbsDksDE5%+l7%Pza*0) zWxx@K^KzC_swc}eGsEVRtd-Uq5^xJ9|Kh~2pY>vt-^p---`%7H^ixa2F;b4Vi&l`+ z*ZdtLa}Oy`Wi4k^`ujw`Edozr%u{jkBG|qg)73Q2Po4WI>KWg zNaIZFE%bbGKCk1G>7yw4XlY1|qQF<3i=}60Zw3ZI84n1%bzKpSelY#`|HeiA0#~kh zlr716f=-VcbzQd8MyHvX=Z}hPbW^E}P^D02{x&e0G43zEiyIhg z*%Igx@GO$j1e%I%{T7f80L{}Ud+w4_)DFazZed*uByAKyqGQW$$e=d2$omZWX{1)M zb>fDCl`3_$+fCczx{c@q(X!g#Bo z#ktN5rCtVd917rzSD{PBNAX>P2XN(E;)Yh&C+`e zSM2Yc@PArGCD<}HUtE!M4-UO4g6sAZMm2}sw@f2!PBafUvZfGD{0fX7FIen5byX-z zlQ{IhWDv|)TWs2OQA_$tW~m7K2#v*m=J)iF_t;vsT#_vPk?{ML#a~zu*j;vP){`vf zg8z3v+%RZLKs1Ue)2J^2o}5vBtpiSCy`kbJ>mTv*up(j%dx@YFEqDML@5Ap6Ll69_ zxrRUkZmFg}@pXGWqghfnkg?z6tTUI_STtjdx2&&Oyc|j~;7ue>;Wb||aZvvj@&;*6 zyK*&~(GO4D+Q0LWiFIYquCG%3T}S#dkoHOKARLDL7pCq`X$X)aqQJ%rUi|MADXmg# z-$N0<6HI%6Gu}GF_pQN4Fhkk$O=;AD7fc$2^IY{bMS4Y$>3`2m5^fMUqhYpn&Lw=F zX|P1caMEo|Xan#%T+poMbFw0FKmRqs<^1au>6m62T6Z`Z7aA_2pB8gMs54MSFV?w( zOwfS-{e(?|fijgme5%f>SlNqUa9|04=t74nvDzTHkRz?R-`uQG9A_$+SDptCokC}9 z4CE5j_smr2)S8|y`9j%@jHo>21(y2MfIqInYbHcx6S|IDPMcO>z}q$(@m@UB^e?(8 zy!uHC>H9{88;DBXi3g5o&L2TpA50$LW@YThkrWJ!v*U_BDZEm zk*?+H!_IEsiUudzHr2wxsCyh4gZ2eqd;t2u^N;^CU-|3(u43l?8NGKDW~}0(Q_xm0{?0 z_^^8j^5qROD%OWZg9>K{K@`2J3kFh1le{q*Ul+QQP3~E-Q5WhLPn<#){u~C^sauLf zWi%M^R5ty*k9+f4gG$D+ou8V_L@_X@nOmMc;Lzs2J@^^-9v0O?_Mzn`GVm(csBIG} zl~2@J{C2dpHiL)DY-OIPzMP1e{X4Xe_dn6)-6G@Bcaeac^J7gS^cYYQ> zIC!s2zq?Q;%7xUU_7P^TLUhVzKx1SdV?rX$FkD;(_rKwxoWcqri6XxJ39;3>8TMT~ zBwY-h;5@lwkyVzCf9RfY5d)WU$eJqJ{Q&WIejB7H6Qu(85}93V7#a4xX^q&_J~;hN zM*my#aU@rjrT23PS2Cl>LXltzJA-^wgYhk*8&d#v_)?{$fBfZT*Xm8+_gXaVq!m!a z%gF9$FRxT*$^(!&HG1mEYjM+6UXX|#kLZbWAXtFsbaBwme&^MMG1GmPRHQ~{YzI7T zUlne?Fu?(s$Y;Pm*I>2HF8&A5r^23i9T?X%&DedicNuBkE)3)IhI*os5CkviDOJ)? z!)GF)JqDUU7t^$)m6R!AU1?Yd`WYRVLX!XDM@tO))I|r6CXuG zo*NjjK5>R!oa3rR9sn0F-7BOVMB>5_ zGcQz3cbqjT{R%}Ay2$n0BNB5m(^w;GlOh5z7}0XUiPJrt1r1RDSfEE-F+*j>Jn@p_ zeFv1P2fB9jmS|Qs34Bhp#qJ8nc$9Wy&p2pSX+w(Ber;E=Rq5!H{lFVusd|N!ECLK_oTQ55!N*SV=qvV)qTXSJSvCfXhE<;?4)FzrW=-D zNKxp^82jbU067+;Fl9K|>QqQAA_1CH*R+X7UcWN-g@<^Flm=lRCr#=V6NskBOy1nB zjwTrus}J&YwFN^{oC4}`DnU@3xEL%4uWH4dFQ|U>v`|TNIKKc6=EKnqiZFEeTQ_ zo0DkZ&KtPtE*Rg%{p>Dhf*VX?Va0!SHw-B0|I z##4zPI4N%#R#$@;kKU;T&TDGM{C*{Qmk6;a;?WAJwtk*dJbiu+i!R3|UqT{O$r6so z!gC;dKE~RFAI6dTjR6k9mJzAe4LSRiU8Huk`HR#9VWmk{%j2%Sss7e0ZBCzykUW|? z?QQkH6uCHuckL2D2Z7ss;T9h?Ir^03=HOL~a>q`@K#JM+b+-$?8Um+bB)#{|h2veG zxT8Fq_MZaL!C6Kw1q%V2kPQ9Gc5KKFvT(JBt1e6ytCs`sq9g$eKOJxf(Z&*hbo`Rcr2T z^9`(;*e@}huPtw_)c0M{baPnPfvx{)A8#^Rdf`?{{R=?u1`}XnS*?3-X2PBJY}KL6 zVQ@J#Rc{M97U2iRTW$m?-eSSM_UjrIP(nOwgRqU<`UYa`28x|0%KPF8`ES}Kd<^a- zGJMn0IH!t}O;hW;WA(;!nJC)h$f0FdU+ipAxKx`fZS{PlO8Z-#yhz6fG7HrBkp-DrqlXR(quggE_zgY@)c##`m=MI@ zEa|6X%x>R{M3s=<=o1V)2#4|c=**)3fu7IxeaL?Ne~+yO4mTF^U(5#-^jv@#QwQqJn7gud%^`wfQ%s}V~Tk?2a zR)8}3`BOfMG#Dv@xS|JR!)z>1A*M_MKkD*JA_tPIAgtp@PdQ zmqb|ixhw%j@FIRwDPGb-=44dX#s^-;^Nhie-D2;hV#tSE*LuCc5L;K5-Sa-^?fh=-2cHwXFO`)rK} zZgs?nZXoF_ISI@AKP;FWN)dTB3+o1!%#+uY`ECMnO)C1OEYzvuq-R4=qVvPbRx<|* zI=pxHmYnJxVD2M)flo8V0c@`!KJO)h7F@`Q*o*7nCI&?*5WD$KXXRc;hknO>$af5I zuyeD;880K#9!f0TWK|dV zyqLim%=Q6WlgAk|;Q?~sba<|*PyJX=a6!WNcsswR1PXJ3MnLz^NCg06wOwO%34rT2 zsl*X8Y2I;S;iG8H1`P5P+7*~^J7#@3HF|QveU7ih&Up-jPdJvR z7ioEyiZLs9gflkJ=_V_YOF^4E$pfT4p9xcRR`)aZ{(DeDm!a_+;fO|g1l}!fR_JW8 zbK6=o!P`ocZe9HsDZf;xHpG4c%m+sHrQ89j`@wTHL#IcbX1VPjgRf!dj(S`mGPvud zt4pi7<~K;y@^^gEAQJ|e>*1|h`EEOt&Bg~{p<->reF|mtM&_F`2=(p_gRl#o}I>Y*c24BM;RIBO|OivK1P;5OxOyT&IQHRbSxj})XB~mdU z$-}JKIk3Y9NM#@EM;suwTJXn3gKrsPjadbgyWC^43U9*f8-1oYLtz>78LqD5N@Ko~{~4ZJiadg%%E!d-V=BfL!9LHPX8LKA<{VYH_r z{&rojT$>%BN3#@f+Su7ZW2GIqpL$+9W$xlA`W*Ws9!gYYb&I-dgI3Q*T1pGt1~)6n zVy_}W@D-grpp>dnuh@CmJB&adehz__yI)GWTZ;ARe>Ov|C)A-#d-)n88{SMvYz80o zk;Y{^B0&F$t_1|#{uGG5S%vc zd&E??@|DdZ2I2Gv_JEniVk7Z>k5NXfd>BlSlBK@#WP3TsNdhyESpr0Cm9t!`-GvQ2 zq${hqTNfRG)9^F&KS9C%N-m*yEC2>jp`$qlZS`iWhbSIjI_s=jpH8io zE{G#|`~1$zEBEyLL9Ac|O}C%*btPQh-~R?qEBJMRs(2sWD)(cBVQcoJ~T2#BA8vuzCY*(lYpZ~dy5tHdR@`b=+@H|N3D#B zEHq*yHHmX`gI7B7B78Qi-vz>p@ZLiI4;Ho@Hw=81!t1pVE;avtC)sd)ZE;n+^u=%OsNN|vylQ@utc8`LAS^66}Ot3O1)43$N;8Cp< z?tP&G@cu~t%CJLLJ?+y{6F6kwygnmzPGh#I4FX9%|0qik%I&6Mw^}-U&e2e)fq6M> zn>(@x2l2owre6|l2p+R;o|G%1=vFRFI-P93Vn;n0n?z4JeUhqo$a88G-U`>%Au9@g zH0SK7r-#xK6gDcY9%}+D3iJ-VuV$PbwcCBc1Z+SlmNEImmqa>rMgawgw+UENwM2`; zl+!TDuDKf>tv+(JmW)%S0l8R_(1r(RS@~Cc&1ZpyCokZn!^$UrDGX%EoiwfusL@@b zSstW9?I@Js>D6iigCKVHVWMh~k(O^K=Emz-=-c%kZ2+yGdzK#$oYAYdsGd`?n*UE( zyZRK|-gfJ-{3N15ZbptUVHCZYM3JoVIIb_g-6ps;L5V! zMg$U3>@trM^QpURG$I@1){f`~{`UEvTNDu}2?)V55|niSqd^^|wEIaiozKsxM|zXa zWm6a)h0qObjMcjZeiVzoh@_e#;zalb}VNA!m|%(&j-+{VB|>twKN!o z*3Pg^0+YbNx}^O6y< zwVfE+@Tc{9F$9?(Hp45$0GFEwEhIUMGR2mX^xL!9+NfNv3Q%r!Qvr9J3U_28kH&#dlKv-=jA~eR^Ub=tPxnx|NcMX{6g?u zwQQ$Qxf)FlIsVbfFbj*jtfT{toKA3zT4~s36f-Y6FA4Mv+t+`|b4{HW|72_8G9NB~ zrC6?AbZ{NYD&<3?9^CsaU%I7s!5}6Az*5@bex8JvMRR(k1d5pFwJjrd`Kfhi3`h9d zhmhZzNaCjSsBl5`Cb;5t!@mA@SDs&CX{G_Kjrxk1r(8;GnI8?+sZYR3SlF}c6G-UZ z_n1na5bIRLDO>4bFSx3q%$KluUbN-epjRfmTU`0eBTBBu>tBkbRF0fl!AY0G>4R2La9J;!>l7( zDrj7_UHr?0Dl#y(bkzVY!47bn8~3$vD$g&_rigSvr+iy{ zym00xa=g*I#({$crRgMS9`T;mKCQuQ*}Z8KC8vCB36m*l+v>?_&22EJQanwprKBl zo81&WKrq|V&;+piHd3Ufwlu`O7Bh*NvUSa|`g~z7m?HH;^g?A>Rn*wD*u%U+k|zyg zK_GTuPB4U9MyNh!0b<0vGTqAA;M=u7LI!lec zohQLM$b;zT^<1@qMVLJ2K7*hG^TolgiFaH=kmSHOOxdSQpQB!b0nys9@KGgD8D`6% zz6)&9Z~dYV*TCWsCSGmu5tR~|5*RSP!voowv(>NOcFF373-ix@?B@oidUKJ*FL9!T zxQy;1dHccGyXyEPo;#Jo1mfShQ6b;Wp`4y$QKW!|UiK5=4YG0NAk^ohd-v;X+Yu`$ zMXNR`69GqyKPrbb8r%NAC2R)`%BhHAwGJjfP~zLTsQ_TV9Sh}ayY#B06VO|LkAW9g z7TD|YA0y27!NR}&OR~i@pMDrS4^|rC9o8f@J@70SV_HqP&Nbd^ZZ#N@3$7nn)e?OMfg9mC^shn3Tsx{GwIH0Y+bLon>rO z%8N;C7@hy*Pw)~pm&3?Bi9<0+yblWHK%ueJs+S>T+_yXjrqMqN7ME~5@U`r z#rjMa5`jRy{B-E8;E|C@HRWP)Im+ZVBB4$@G_uJJ??Q=E&d_5vx(v}9DQJ%svZDVd zOsov{u@rk-fGbRsZzg}sBDzRqp+8qrZQR50yRefaD2uU% z7ZTL?q>O)8ul27-F@ll*x`))KMHbPqbTWm_NNQKFJxHOu71mw9^l~_72Oci)DqM5N z<2!R9*SDu4G@xkKk$Jpn3^?S#>jqc>#xAW;P|AXth-Vhj_2{DQPWc$)v~}KpT^j|a zh3x8<-oF=B1dBpx#JV)+{@jXjI5vw|c|?47jw?Dx(h9rlK9>l-XFC(IZ*}s#%ErmE zF_A45cn&&vjO$$jn;sj|aV<(F%2n)F*a>b#456{~#T3*qSufYs_V`PH zuyDoX(^Ibcs(jb3o3P?w$Ov>N99B##*%J3Q&@kajP*j(-c~CQgj9G#*{|}pBjWVr{z8n zs`O(QY(3V;%7yoimn4Hp(5=VQ$Gg3A&~@M+c!V5G0Z=BcT^6mEd(?OsY=TV3?#Zt? zbcY0CED`f@n}$W%ENa;v3E99rR5}3f6$qv~7198i8sgDRwr$n&OU+PUvzEI?kcA)i zSZ(!y430t6@Y1a>=o~y%ApgTCO8C=%tcJvPbty7e(WGsv%r~~{SF-AxI&O}qr)dGP6X8mKeH84J=Wbny`)J4NDd-Gke}eB z)F+h;DK3}2{lh>WG;RKy$w@uA2`t#r+G9oMcmD2X*&xFqNie~o}atVFb5=k!+;M6HNG}OFMA9c_Yy{|iY^%>e(g6pf{Q(c=yj_NYtJrsP z52j@#u;)PX*v=7njNLkdiENN#R&~^9VYx@{&Fgbc04+?pDePb>wCdh(c*LBj@r}S= z#L;)QbL5d2Y2{`jB^CuE^f1V}#zJT3LjQZ9`?Z45WMfNEwy!MLMn{63D&B%~@s&Wk z`(D!l%P!fHkyB--#W~u>av52_we(jADOXgTyn0pezc7HqmHfi zBP+!tvBe@MqA=Kd8nXvh9Z`1>=DQTh4<6Wn^nAN_szMrrb2Ph(K^9BHv^3poq96h( zBw*Bqk#w8T(D2Kf8WpS5<}o*CHIRn!c26Bm>PIl=U_1anK)}CCe>1bX+JBZEsP2?3 zC?aKnRWVl-`pfY-|7zipaBOFv%CYt=wnd}8S{a+_=rx#j02N|BRfJR~md zRZtl|d5XTr@_fO$5r^3e?QimucF&Jo>ZOFqUI_Rzw!3Qbg>)Y)#-|*N zUH;y?>AENF_;EIF#vkUkuuX{n8&6C@=&}y2+vn}u9mFxP5T=vO2Gp}V(l&@FH!LVL z!f@_wmvKR-Uaj^5gX~ekt3yx&fZJ);Ux5D7iCUE>yP>8Yn0(`@-)Wp zIKwidl1Ab_4b^$bLo^m99Tc<$XrhEVAA>8dO-}9JAK5co5p0Jp{v%}r%)o0|@VN&y z2@%fzH3U}ASP%M-(?9RS;zyx!*Mo+2WNGzR2V-uv8BB+^25Hz z#IlJ6iO-#&5MtVrp9gQwmPJ*o|7>_tVS-aPY4genzyXr+F5LB%pwiN;#ACZr&Q$`v zbMYlu;Rx-Sp3awlZTYR7+M8{?;JxTX$;i--^wv)U^S_o5S-WK|hp@!(ddenDpb}?W zGcLv!Pb?oIZd$Efq6C)MA4hX%Gq4dGuizbH>FnWw#OBd<`YJ2WRMxGx-iek6a^sW2 z?k6a;-UZ(5gJ~G3<;qYxQg85vbI`N(B-MtM9vyA~4@sW;OLw@T#-M5L3U?NofGVwC zNgsJwQO81SzbnqNsaIY{m$jLUhoW-sd#KEzm9#vgnOf5JL|rIK-$$}l&aF!qHOruONV5bbi&d4m=gjCrBt-&(?NDohtU+81R&QG{a@4vGRoKl z2v}b1+pNbUP`xlIyb1p6lq%+L#}9Pk&QQ(d(^Y>Y)IQ0-C#V5Hr4(h$p$29|I(dCL z%$qf_PUy-He7rPHlUz66C|qNs%&k%=hENh4H^@eRQ=e{?)M|qQU9D1a<1=B>ZX3Ur zEayRE3#`Ahj!7&N2Bd~qx|+{#;B_NKJI8>rfmj2@@_yU7dmk;E^VIHPiw9-GYDw=A zqE=@9B?fOom<&gKVM}c~bRGnjQ%BqPs}TOC@tbk5v{h4H=4(o!75_1nU(n+rFl z7PDdMZ3Pp&Xq&dl!#t8H(_C;amYdEM6E3!!0Uzt^`aP1~`eF@|@sUzo;7+k^Z=B)` zTev(@kfKr7!zI$WgmPRVc|d51t=oarC>1!$`DXFn-d4j#NT;>ZwAd)T>_XskY1g{l z*UFl9QVfd}+NcA2Tb;LR2jG|0Fro{n+*^-7w{~}@r5e&Phkh}lbbG~@7CRCS=G&0$ z+SaX9Mc}1&HKqVE0)MGhaBFN73d;m|+CpA}y%BQyS@2qxkc~GZag{1MZ?WR_?GTbrsfkW=(-2XAk1}25*i7`?Jzn-YHGUWn|+nbugKE@5rdBH4{{8UyxUz5_7r&5 z9=;G~UE)aKHdyc%85_|WzP4_7dm1=t;y;JgQknviPLV{wgm+GqJZjnM5=}Mh>i5^5JYfauZ|~0_XTYCX~SxdUP)}shCKn zo$8s^Gi_y6ub2im*b}4*EDNJr4k@dHcB}m@(hf7r&o02R4b+ctI<4?yAFR&HMyNvw zUy@d_z}J)z>yY#r0{&rbPNS$mt1d=NN-kx+k2k47%j-P_Y;qT_Q+tTza9nSPg9 z8?~-|9w?)6S1$;k;JKrcG8VZqwhW_jL=%%Ubk{mffO1O>`c&?}mLrRQe>7hxkm8*q z1=|UGe?_T0*Ct>ZWGsnKdozu21I-W<4_HW}XyROMvTCEh^b0QLNrV~j^$C8u- zL0->gpwWt7@OpyuXd<3PJfgwB-k>XC|Fpxn$3ups+bk{(qzv7Q~IeQ;0xb5k;B( z%!1ev4u0Egv=g~ejg0AU(}8No^LkIXwC7^Jz1>@j%wm!W#8qf4fp2FfMzvBoQ8|5q zD#w$rD^4G6ub)p&sD7N1D)|{hdBrp!_VDsf=C*}DZ^@y>L5an6%~{dNgIpaIpsc~(k9yh2H4 z{n|`AM4u$BEuFa2i$De;FFbw7E#rLmzncZa+=6Tc6}`#g&aINu6y;M>Dnp*ILwvBb za}TO0m0?IXH)3g%doH}?7YGPxY-PSQV!m&sX&%s~D9{YeC#)1|qed}U_YlaBI1<_z z<)U-uSvSbfV$3#n5>HbTUIYY;g>xj+b8BFcv0~GYyUW6~k&-Ej#kpZvhyWbdvjZ-Q za{uof3E5eh1epvCzQR{cbF&qpNc4MfEZPGTh|Z;?oEco*r<)n-Anr}u;8;p1096oM-yH9zu3^)dOW#@$hN)I`f-{1?rP}mP**DO znNlT;OcvDoirxKP#AV+c$N`Q~d~W`d)rR^4U)&&{P20aamD?M0IFJ;@7j{*VXUM-A zsdui51RharA@9Y{uaLm7!Dks~o9;R$MZ-Inbki}X=29swsjo2wH^H-t5Pb88&|P|2 z1C1(4g@ZSt(yqk_2?$e-AcLpJLLa}fGEkbcjyy81TjBcvlw6Wo;nXb=6*=4^Tg*8U z3$hy7mvNRBT49%#iU=0kkSN}OemOK=6Y@%t zA!I(Ou{7Bl@3kb5e?&V<+EkN#>s4DU2?N;ZV9SSx`PBBUlY+c{vB6Ycs}$HK@~XGp z&$dqjIw+5v=)&*}>51AqH+&o$Tp^QH|Y3sHRVN{Cg9ZuZZ za|6ch7S0w`CYzAyWwwXMZJE#Q_H-R&*9iJYTnVtFie1(-2tnV(#N|(PbXuo>C%nC! zSF-rsKqb;!P=I(KV;M+soQ7&B^%gVf8H}Igvda``6{u$2-%;Sk$+V;Q-OCJ5ocoQh zM({_BS!ReaA;K~@#S}k*RpWt|vD6bZV&;&UOW)<;;~ya2tbt^^HnfpMHp<0K=}3v% zViGlHNjmh@C=Ww)=`(N7LT$L}4Ku99N5ZN`O+WRPO3y2VmjHW%e(1-9ivPc$ly5av z04}Xr5`Ntx>R&>2Mfg6m1j75sT*$vqiHi2BIzpS?>?Y3B^T>$E9ZL7!`y3tn8nM=@ zo~e5-=4KZDP}y=T!dDj={?8gKe#}q{;3$WUAMe)iz}U-{h9^p>14H3)Nj78)Z&l@L z_1TA@1gAOdB>G$98$Cy4ssx{M&jzoIZ>MBH2Z;@u69n6&Ou21NnR5xXZtrfpf?loI z54MLGN(*n99ntKAU5vY`sI<0PFB#K4RHkC>#2fB+H45@x(-b{Ri>)>uul%~MDKeaF ztthjr!^oiXel`h1_A3?zqS5#(A%&XTLhi9ePI&pBsn9xHt74{Nec;%F6~D?Y+K=7k zFVBIjOKFXP3n=mV0?65?(mlRcLr&SvqoeGAi%>^Q{xoK> za!OB6_M)Fxi6|F<8<5az0!Z1#*IvGAyQL5q0~P(mQ^6q@%Ww3KB2cD+)`7DjEi1U%pxEy-uw{`)R6JKf*4nerZk2Ib2=nZZcCS4aRYg6 z)6;rOCm`MXR*jONojNaE9^5=~$jI?A1|vhht(7nKF!%})NTEWL#_zyG${y;Yt=$oC zQ&u0)L>>Rp4P};+%TU7JL-}E=8lp)$Tebh4Vz4T~0EU~(*}d240RfYbi67ZFkUK z2aJtEuHYy{mWnq(Lk@7-(q{*6dx0~#@y3p|agfNdAP@9d;ev#tk?s-ju@`rN2p$6L zlku3_aAg4m?js%n47#%UYEJ3Kkq6x+zTTZgxOv}gOmWoI@r{QXc((v3-yMN<7=fcJ z5+8g}?AlvZ!#MSEXj4Zw|3sqBgVN?^_rW;=A$FQKKi>UO2Ed9473KM@PQ@nU$=0vJ ziE0#XB_@Hs z{1%MGzjPL^hgZdNZ^Ah4uY6OKpkL?A?4nB9pD1Xnuk)C}A@v5Xr0?OOXyYy7OWgs) z7&s$Ps$r{1e3TeO(i=9z^f*x%x?TdgbAQY-pek3An8eHiGqNIzyrykv8=EcWjj_Ag z9M-#NA?EMqnS*hC9oqIBpHKfJ6f=YbNr~y22=|kW^hsmV9pUg}8?N<(xw@YVcThjg zFc~>r8uKX)9%BbWmsUIcsTbe}>^%pmbO~ot6Ja(zx($ldPT6vH(CY7t-ykUtyk0JNYN%`8Y2>MhM!5Jk zwb}+*Y(Aoc6csc<1_Ms6g%4{ApOZs4xuU}y zS5y(xU^;+}jw{$ zw6K*=t$%e|vaalzDQUoD;>)2__!(kfBMAWFL(!Km^Ov2}S3;N8J-g36M?w~-+Y|mq zV&3T(*}%ig>%_k3dA4dE$u4LIy!wxGSMU`bht(nD+2wKOr%F;~oulBcfh+y}Sm)!C z%cZ1=X#dcZn?77}%&Zd@JdNt|%R_At!(;yGxoz!<_%?h=MJ5DC)1rwmQ*vw>Aq;({ z4`{u0no!0lSz!HrtQW?8f!9<#+=6;e1^{bxnTEgvOW^vL>gt4T`r`#eMPuA$c{B5S z>w|4Xz?KonCHH34&xWbrN03n$Ja6z`uS@<=yzq%D)MzG-XQ#3%4IL=-V7IU-2=^_riV?Fb+9sFX$J?$LH|-69E3R5Zl}}M85RFul=n} z*-QN=f;T0u^TXKsUdb%uhKXouWvS^$L@>$9#EdjUEn&c$GPa(;AC%wVtB;YQsgjxU zDI!;hG3B=9pc0)9A}pcdr?B0Vu`7>lxt7W{6Z7yQ-yLJ#i-GXD z=AQY3>t@4{5ii@xQl1I70!9n0hNlR)_BjUb*ETkStl?ii9n7RtS44pEzk@+Zh%6h4l}u6X(d5_?y1R=GlDjt-RaGF&YUKPd4%z{Q4`iJjYLiuHr=2T zpJb{%wdFW1+s_L(Jf$@=u5{s<0_1MXr2Kbpb;&agIjCHK`;==<2%!dH>q3yCa`GSp zxTCQYXeC&xc0kz$h8WyrS{^XI6%ak4QVkQqaPg!6=QCFs|8-^Ia10M$R+bkt-~>9X4xp{Rn&-!;c`5%xh+KxCC5n#8?!cB*fAb za}oiUSO&3FfCK4EDgSmBA9}SYg7uex;JOYK=+f3Co8+dEL{E_=MGH}T`WAead*7I@ zrH;nA8Gm~@zQ6c3`Cpnm9aze0Q=lQi%(h@Bq|YlBJMc$BqyVM`$pMGv0i~*8IiCg1 zF{1{K{HN>5+O^-{fA;WMETYI8bN%pv`+AYoV&o-oLf4R^;AXx6VeHgh!hCK5=Y6e* znGx*Z6WNN?`q)Y&{@ECcPAEwMcYj@Z;tAs&l-Q-Mh=~!kkQQjF#Bdi!S$%+E@wkaE zb(^B#B~!s&?J*o9%cSkMUQSmA6j107@_hE7Buw=n4K>+d=EFE)|%2THi~hUpC&QLXYV>CZ(XlN$e)<^3@AklN4yO7W9P0%3=_@B*K=ikfPVWd$PttDP2i9njLIq0jZnTGC_G zmyw{1a{bg0coFH>A$glDW3;d+1sP3E$aV;^K4-1YhsA4ObtSiahB`(`W6#}8(jS}{ zITRrV&${w`Zwp0ogeTeoq}!7v)`T%cl*c;bNd+hMlh?+DMwB7&p@gfqy|);jBdX5R z6A(2*rmkc@uKQxSXW*p+#*Lpx7S7%Yvc{Q;4iZDfc!#oJ+R4-$gtqlxU|tWa43+6! z1&A@VRc!fbK}Ejx2fA9mn&q|T4c6cu44S=S@YyhKRZjCp0dUVca5Jz~aHBc%m{dhY zqYswW0pEX3#ZkBUm%Fg8+sYe<^Dm@|P z$Fm(i0YW=qeX9#0mTG=W2Bj`Dxe(EZ$oHtyA5caC0iy1=vOLu9kkH!r)b7$(ffElU z85Q@d;1*>oUMYW-u7ssH4`6@Bra1^#sb2Z^4&Tye3ibd_(CYrA#`-O?a z+?)=Yot(u;*=`+W-G9tur^+|xhS`qmiu@&Q6%Ct#{pDuH0@ykuOx))H28w>8nQTd5 zn3{xz#(1;xY|-uLV`@M%l#`*eKK4MhB%B5BvOq{NG)+!JsK4~$2qJh&Hn%nBEC%K1N^YII1*EPg4*&8rE4?3a z{p8jd6f?4ef2=W$vq93g8#$S8_y=9DxkvC@HRkUEiBWh)Hw}7(B(*kP?_YABsV2>R zY|*d8`ibC9w4yO{KgU-g^l}PM)rnW!=RM9eEOhOjxbv3d4g8hWUR>#)e+E3jf*79Z z`916_9cwvH2=hn!IERh24J8m41K$n|Ao!q#3%TND48wqC7+wpe155z(pAbo4h9jFr z5nIj9Vd;4a;vE)qin+}g4-PgR_C)V`>sgHX(pJRdVK+TGyY4tRnZH+n6Ik6m>e*=q z=69F@v|&J3BME^sj1J)7GhTvJ0kZMFtct6bqYk`P9>HWmx^MM>{c1Yvibpy}AD(^J zjbNI>u>Xk7NTZrfqM%Ew7auG`mPgwP+usn@J#x7D#*$lo?qQNEyM=@Tk?xj*2piuG zcSeLIyiCScRDHCbGc^G)I8aYo%o4`EGV#7^j|cmGuC*kcR)7%^NdJhqU&|;smv?_jm$!&hfK$0sW(=W`KqwNu9x{pDvng;LLI0q z0EwrcmW3PVw|-ljpo|#WUwrlVQ{~@O_b?dWFGn!d8o9?tjH z9r!wvu<4Qii-vBSFO>__yzNJd@6i7mE8DT6&bjC)X4XjTT2)a97T$3+H;%2-Fn@%{ zY?I&ZW|NN`E%CdGgh7q%FROvm+b9#^+HH7|Sr{y>ljw_Oqy{s88#2up*^-4SwW_o; zrC)yYdcDV*mFhlJWLe^HL)7TCUNe;R%#nV?Yc*5#rf=_G?GY}=|Kagofcv3&xrpUK zz&ngDQB9UP>14-w9=c-*S4+O=Y0FJE9+zE)>h~h#Ty739cr*^R1*I=ubKLeXG7x=P zhdk5j9?lJ=^M z7Xyw>I%LAD%A#EE{Oe=NTE5C`x+lh-lkd~xMfr*ANa1D+LmOZ#N3Iy2=*{5`4DcZh z9>)xsa1=B}R-VTf+GC)@n=+;rMx%_cCd<9Vm6La~4EW2ktLm{gZTPFB#t{)8Z&utA z3;xp7WX2->f!#B3xzAEt`SUgGaW+K5g)$oXjgx>Ty_| zL}MQ8JlggZ6c$${#=JgQM+&R)0HIQ1b4sfroemfSix1ck6y3=o`2}LVO~{x2MC~+i>{y;bk?=**k)t`NkSNyZ=W_X;(#}> zT}&J8X6c`%8}nM#uwm0RV}M5N6t82SnC^bA>Ous0ftD9Wj5@~PN`F5%CmJ$|dI2cF zTNtI1t>oH=wQa^Kf1=AR>B0$DPcf}KdTslJ(p%0v7O+_|4FHtqjPp0;kiip1-@GWo z?4RM)g?%Av{Bz_arPC-O&aG;y`@V8H{jFmWR25V609}A6Xspzp!LIg(y8KC&h|WWS zxOJ9+{!5>u+jCEn6WP?iNTG%QZ5>R{-yhxys3JCWTKQ>L-TgDTDK;;cZ+LwmqJMs) zL|95g7b*uQA2xW+MdhKu+Ej(-yq}D&Aawd%Zok1Z*9@pkK|f=L`ZBU#p1Zc?USyUQo*tCc@PuE2YGR6&hG-&>y{^0V4TwUEd1vGNn3Nf=VsIk1nwSK zxYTTBaRmwr3dn6eeBJHo*66dZbFrGd5kUJphk*JRFXazwPR-8|Jzj?yD2m`V3ms;( z3Vc>jV3?6nY*F7tG7xsPOrtP8sS-w&_%Uj^tJNpeQ>yQd=FhP;H)@tNJ66=Xr+tuP zEhf!!rj<7-cDs!(FV#aJO{_c&?t3hGQ*h65CoyJQ^KU##gU^d38#@jmpjr8$L)>NK zqieJmj;|+s644*esD5tBnoW?p(VRldn?eS-75NmMZbXbWs_f^R^~CA^1L!;e9SQEx zl-uaRIew5z*DBA_ief@}2M@qZw_6iWzwIsVpRQ~23frX14mBdHi)$s{dXCJo=CiiJ ze`b{vjK=`{F|mcu`rK2V==qWSHxWCk1q(pHvyc1XLxD%N&N zc7gzT0q^3K1F$$rGTf^1N3II&7rmnNy0BPR3B}(^v2Az@-Oi5)v%jQ9NgMtd)uh`& z(nMka*HkC+!J-+uIyrcf0J1lq;WKM&zB1-)(lBnBQc>Ft_-!zTL>iPg6NOy`x?(6m zZj`){!*y=8cwU{@{9ePKC*-BLzH5|%Q&V>os-Zcso+-!b_sW&0qXvB7 z5|_g{KKo{RL}F;kWacRyQ$<%q3)Z=~9FMH!ra!7pVV678xO9N=sg*Iog*Pe`ahwUv ztkB+~m_vg50@>NqehV~8dH&E-^oG!7XCtR=&{O#9;rpt_WoybOh})?aoi&VtonjdA zvnAqs0)6@V4Pq}g_0ski17^GS3)->Zu}5yY&=>hz{@m-B!(vZdC)8+!R9_S^f?C-! zSMWmRq}|Rhb$II;$)_DY=%0s~O(JA{H^8znYeWd>dLBtq@x`8z-qw*~Zkula+^5SX z^z0komO=ft!w}2S8%$Wzze#1oyefly;R>P-8Oz$u3WI;_KC;^SCjq9*7B*iMj~~yY z=m>*|ocp?2_d0UYcG6gSW)Ym$#L%0tIaHW1*zdRr%|%mk|FJhcrAU11Gwo?Sl@BNl z`AnzFw*_qOxH!OR%ZHcX0y-aUX%iqh*fC=lEk@gH)x#NO7l|sd8ru5{!Qv#5k_oHB zAz`X-fIznN4KU21}femd1s~J_*6Nf%$s(wT&2Q(l9-cl zweUVQipUQTc@T))JgnJpFUMAJ?Z=I0_Irk=f+bvut zY0%p*SHRl{v7Ha}wN2WKMbB5_Oj25DuUhIXoZLtjc9)f5BMMF}Nde6#Pvred2^V1Q zes9(TJ8)fQY7WAWxM&>1TU*@R#qabpn)d-W)0##4vQQJGUKiRx#0Z3E+Sy>jQs4ma zwau5$P?FiE@_mA*mEaw^sHvKR#v;%4W%pTYjZWM$NgW_#U7I4r$e2SQQi{f8Qd?!r zAf3= znAKG#k2VU-f|w|Xy5ww8Y>pH3z(lZ^?_)w4DiuchWO~O5WL9h7dX+dwWXIFu zsR@ctYsqR)A4hRzNw1;+4arSkc96ZD_D~2tN|OUc2_YGuVHnkdoFlE}LX0mrE6k5B z1vuIx5UTLDf};{38DJK?j@+^gw?(=v(ZYLT^{}P#BX@{k!4-Yz>R&{f&qAP(ETXc% z^0S@D6X^icMKzjYE(auq+=N+QVIrpw-3r{$XTV;uoVK#jordH%{{ge6C>i}KEbI$| zS9ZEKWmFLzb&s&@b_Taqn~riu2m7x!-G&dFTLPMIxBQ%X=IE3z?&PMBXjk~g3#2i! zP9jwL;r?})dElX1>kJ|~(9)}JlZ_J4<=McgXkq+q!`r7Es*wBnK6l7eNM zbtE2tDvm4soYQ+jdzvY$w5^~`a&q!MGeaGc_ZnO!7>|&7jsA6o;CJ%@JI3kA`2x2lYFXU6RLDmD2?&=^Rdv~ion2Axs-(? znptS@psdP!H*Oa7LmETN!#opFANcHO{IZy4 z0PKS|!}2o+t?^Ys;4|qPwRIAdTy!cY_9cjMsG@LFT&v2@6MoeI$LZEp!($5&pz{=DTUf~xiGTIy~)dl z&vrqYrD{r!$a_Y6E>bVPm2%?yp5Xl}rdACb6pHU-EmuAJyk13UCe9FVR~T{OsDx(` zhUwPB1m#5J;0|si*tF{mJO&sW{}>yvW@R&3Tqb~A{nyOq@9-aVPx=P%7O<{JBI;a~ z=>Mt=9yX92lv}h>so;}`ws`m77kE8&$j$yf5Lt-02skdf1CyVa7%+>foz zNq=$7a?b|@hC~f*|HBA?vDAQlk`Jp#O#}TB+2YCTVx6)}vVSG-$-SjOfGS}LbX0AK zBjDZz={iKjJ~vrrsx-@b)NBXQVJbbjQvt2yH4$J*k>Gc5SWo?%s~0fP`6zF}0k?#k zJq1iWv{(29PgF1y=cl{k=w z?*`ZLxahG2dr)mXzdIe(EK{mG)=sGzKt)=OMk22pj|8Zc%OMQ0l9u`+KkuzN{|Iq| zWdr2lA2h6iOI7hJc&^Vn0c=%9p*fU6mdLiSce(q?Jl%jY^}qNj$hVwV$bDY3(c+KY zIIogA;`YKw2nig+0D5P~W%0e^zDp9@?`@pAO}(`AvN!2&w+$nAL~tB*Sxh&i05AR& z>hfh;M$*W?F<-k1yn`KMMyw}<(XZXde&@OKvTb5v9*O)b_I^9)%~GUiufe=Dy<)c% zQyhdXFnir`%3YbSW{Cbj7rP%KbBT=|J4?u-9Ah)j$)w|rv*p&e$R?<3%4xU}V_UMt z?wi@j&_PFfLNJTG=n@&VfvMP9?YxvBM`0WN`)03jze!vdLvVx&T&h2!Y76F6TBW5& zQH_-*?!@I;#!ekn>sSvW{imi=jYjL2`b_X!>#5U0wxVrzt#6ryiz)&IyQ)zHr-&Wp zyG)=aVn&#Mdo?lcMoMU|7)yQSl8u}VpemCXGbM!V9)o{+(-_b|2V``VIU8#T{V4Jh{$xzxf8{W9H;ke6demxM#aot?uA_y?mMerkhe0N z?gxshRB_ugrUbQG)1Z+Yg_^oUKlFhST&o9`?P2^NC_v-m(gF0INzC{bx3hc##s|{8L=hYTKDSeh>s91^IS0u>x%vxLF4` z%=*he&QVOh8PwFxN%7TRZ_?f>=sLfMT3b9LmVarKtJ*2lv$m&VywD^|Swt&!g-}7z zBLy%Gcxn+>E)a5w5MeNt%I2~ZO1e{j@Yo(YW5b(MRK@V0q=6o?cOaL2J*VDc(QGB4o^m+(p8nIzCrtX!ocanma6?i8MW>UIO z_-B#9Nn6F}fkp&1uJwrhVTMj7F!e34vVXutE$2IlcPbGi7~(>Yal)A-gdY-HejP(H zL?h&Wk)&dbx}9#()0>}TuJ8j6`l|6F8s9<1AE7nR=+Cw&YiG*3*9QzxY_eyN@mxZ< zj#$Kgmx+1QIJr3z;!a66a3$eA2;MDpK>}S6(yFbUB7GsMk9NlYCQ z*$Dw5Ey8-zcN{sl*+=3$RGVzQX2Kzky)gwpDpm937P}qr$~-6CKGd!m>a@8f_CF}( zw0TvW0aJl)ZRao8ais<-YI%v;tN|<(bNw2w7I8aLdNcE6ECi^vuh<(){Wu}1?vK4? zq|kV&1_e`MFdyI8nigi2li0O{sqM+us-adwFH87z%FMNnL~WT}JM@#^N|3Rb%XRy< zKZgCA-igw2K6J;3zC&{T?{goS7GaYqC*%s+%x`(-;4<&3Hh3kb2A&RBx1pRo5TV*H zX=?8m?xLTuSO@EHx!9xLDjr*@NFtS*Riyg+el^CmGI0|5%7^4xb%?)&b#vOL;SEC5-I9P|O5L zSSWRIBk*gxlBFF=f^|IzP=JhxXi(zL&R6R$N%aL|=*%@TF$MvE)d+jlQiCk=@RF_I z91&q9F`LGu*}G+2+Aizi6|Y)c;v@18hp3 z21}JPkX_-<2$puMc2#8M7THqYbtIJ5vEV@Z62$dB0u2*WNpv>*Z=z(1X5*YhNgNb7 z%_wvqc~ZGW4CeP?xw89~dd^PHJ*n`Rn%Wi6hC7uXfb$(f$q10x7$Nk*?-8PKa|}kB%E!h#tdGYhhlB;$pv|=XXFN2IO*bQ zI;Z;jv`cmK_Fb^MO*C@l_6E~U0p=MZ9SJojc;X3R%~ERg!ZfPkN-C~TxqNA<-Umc+ z>sGVhuF3aK9LocT3puuMcd;Z$6h?2}1kjg#-z(?+BQ2^jh~0iTFIpirccs?3*;-*g zLVV*YG`3{5+esq@10KgVfux7D(vSBVqylaa!Q^=NvT3x*H_1!25LFgNQuJlaPev?A zpyx(FVBDkNI`f+o%#2Rf@V#P~*_h86Cx)Xzmggem~al z|GChw;V0y?2-syi@r%b+2aE7^P?07Eeb~`{ri-Pz$A@@n+QPQF^So-NmyZ?5{hzQ- z>4m-LN?DB2=D?sr^SvKtvMYG#U~c5*I&&B|=#iVUsLp%4tS_7@ z?2gaZ&rw}Xg)n}J_76Sj>hjynm%e?bo$YpwM@GIWvpZFa1JZ4py`T+0aoDD0YC2ww*pf;6OR+;1@R@(%vJ>QqLHNV)5+0EadyWQRd{Orp@3Ak63(EU z;9nc?(D8^1pUP;?RJKcfU6R&VLh9zmCuKEQ2g^6dPiYtS%4Qpj9cDO`S%PH7<&GuCZDy{K<77aV{^kWPnzWEgt6#4gH-?@_t5QyK&@Qx+Sp>oE0+E`4GLt-W1k=c zv~~R+Sbvu%b^~n0-)p-I3)t>M@RHM=fGW_HrM-C&nUlcIA8oJNT|8vpLZnTCM;813 zfKJ!iR$$obnXnu@Z0Wx zNJM#=g+YPUeCgnLXtc(-UC_QG!usvY5}^%`RGW2G`;=nT;cs`RNsnYT>Hp$AZs|0^ zy~`Vg4m@%fp^GZ%$udd32Wu#ym@2?u8!MXayf*(9tgd=3a1n^8Z-soSd-;PJPwg!$ zP(4Ol7lXA(?DNDF9k=MIzYn1!`6vvx1I$DFO4oofQg79K={Y-N2ljF%%=y#j`QdKW zxx87H1PP^MAL3xo^Z9aYkLIn3@03(wT;z-4#Pu_W93v4$EphS86i&Fbo%O~ql+DUF zXrcX%TMXmugWu^a*Aqm(+8bB-2IQ=XG~fA);&r1W;xkMvGDX7c%AijySni%J)H#xXrauTEuGv(f*}3$j`n?mmLBQ zOL&8CTr$MEuhH07>NxC>q;R97wFNqr_n?sB8N7t*Bw(4v7wQ ziq3HkVyeyJ#z?rwTgHw^9cl@yjSlU(9NJJBFl|<==a`B5&JJM@X>!~^gfc#Rcm6m_ zptHtsdmLH%S%8G{T!gU@6BE3~yizImS;)T|R8kbgg~Hyn<=3lW7-C;FV48cl^Nb!Z zJ-vu&!C8K+5)Ea>NYd2dTB&#C1JPU))Xb`av$Ub(^yU7GhRj+^&E!U>PwuRUqdJ`^ z?lr^ffjzuBoDeAbch=cN64|!5Xf+YMB`-3Cbf<<{w-H<5>0;P7VVGL?vGmP!CLhZ8 zVNeV+(0?F@E#F@ka{#;v`^s0uo_$9I-GOl6Ja{{kPw_L@g9R{8hs_?!K zV5fLtniDN!?y7WWMINa7Hf0IeHEx_oftd2AOUq1h+X5w?3a$2X9yey)5&8KPagZ9; zO#6k{&ZPX6qG~_y*4w`6Tt21jA0b^`jw>PDWlABNdV1zK%s&w3v z^5+JE%np4ayN*j9Ta!SBkjMIj}g_0iBtGwsbd!u+;KT#MTvs{QG4t-k8MJ@mGFwck$8<-tp zq3EnWU7_k&wq{_jCm5ZpelC1tf`*TW#gKF5=96J#OL4Jl!C+Oo>p%HIRBV}1m01p| ze-|i%?0krZg0sMV(KfjKO3vbG5P5{-A3`5KKnWIk!?za;_+9np1N2iDTK+RcIm@oy zo7{nD7a3U|XoYqJiO8@Uq`g59^dLauj6{}yNZJ7(RO`&nHf%oN8mT9&quAx>gai%$If$+_MArR<6MoCTewce?--gdx;)K2;ys%YB>ok(rY%;CzK=@zud zB{g~uqIM0BUwsRt9BYtVul2^!CpTE%OygjP*6`4CaQNg(J(D|t+dBV2E}HxsvSa+&0w#xT`8auE|S%G z7ubnNrS%SUuPk9}2-MOD<$H7XQD!5JRitvynE6~@mtZip!ja?i3|IdD2k(m zlaY9o+@2L{nsl4bY5n*Y`6==*!=6c^+!Ctz3{vzR9673M1*6Q9b9>+?FPBqFLS2mpR1u%FGRWsCjX} z&BNUQdo4Dg5;gO6GLE%xxG2b5XVbh~^{VdAI4>I)uouD?zssfG@Ak)SAFYfrn(#Aw z);<6?K*+z70vKEv*0XTngvWY(3y4lTvX?-WsE!-p+e0eCVE3dq=0)C$YqWsjvB#9F zoUu0GFddt^Wk3G8U?(P42UC0K%6BrnLqm%1QbavEu~UD-5!;zzdRT{*yY0C@7w!e? zZZ-^UWhhX4DCKTXnr+7ld=kb56(gk1hacL1t=B_-O#lTaGCb1}x zXa(xlfnOb&(b?11wEgB{w)J-f$Nd25njm;<;9I>56HRvif?$l#H znSF;v*;tqDG9w>9A~n^Q+^`ahj}o zwZWKSD%EH-9nC~Q&jM0in&>D>V*wzwT;9S+3{R0XW(uM9u!;Dt7Pl-Ke6=~MC*J}= z^8+v4)Ik(YqTU7$cCQF1KuU#Fh&A;+T0xR@ay3B+Z9#^1*LEW2L3?7%RhL&lIAcJCN3dO|)uq#;+Kg(jp}S%Vq!5kNzg( zf7u0I3Wa{&)%eB^m}r=PGYS{*MIP`zz1cAl-@!&9>c5G>jPZ1loPWI$1_zAAM?h=$ zv0Cp`0<7qiE{VTdHa*8JWyzH2eU1hKAlY(^#vLw<*o8m-5l`O5pxRffT}3QS(}%<~Bo4 zraQzWOaSeKbhb#raqBgg3-n$rhY<}ve%T(!&E`=^X1Q>WwXE1FEbG#< z4WzfyYRR*h*4Dc7Rx6wHN^8#8`fHNhNK-Bm{b}%`g%+M8(=pSdw-Wc#6+{U5ow!#7 zb3UOm#{Zc;@ht@CA|N=eDWy(pNosn;p!%r#AG;ektWxwBKWK}>mO#_Ea4$m?SirJ& zk7mjDQ)2P$hiBV#6MGj`8^6`3>AJ^?e{&7C;0hYO3*$wm%{)@Fe1ntk+W-DTvhkpU zsGm~?;>%JQGZn|rUQFoi)swc*#Y8y*fOi#-#lZ6y-k{p=SQ1$B#t52EnV(}L!8+9* zygoA=RiZ96;pohxVF2=N6-^qqHAU9+{Pk^%1emW>W)s>x%6TizwN)U;HW$WeTTSus zbRt%haee%1Zna&53_Hbdp=S(w&5zeMlURZP-v3MWx+_K=P5ZVuR+Y8s2;lt@775VJ zR6btoK|ojTw-GjWVaP~*Q#LK(p~w{Z(M@Tw83VMo+m@5&ZBX`X5f^&w?g=T?OJVa{ zE)xU`N5CMe&_BNr%D+q7z1vmDQqxK^nd)h`(L$N&W*fic4baISV*`07mno%8)6^oH z&aw4rR(nmo+zYd1TOXuc{tH8(2X_vU5EdPXJi!PYH!V(N6xpS*H za$005eui+w>AMlDNvmFA_c!~DMi7;?X5l;)5#q(@1{Nb3sn>UU9JBEB1>|JYLPnbe zW5ARh$vI=t$$(K|esduc)(_2X5jNhtV!?xbr*o#d2Fw^Kv^)BMkf}j-rLmUwfAure zjp6~Qn$>p*u(hRD6SmcYz>mXmtZzA*_xg~m8yPuU&~=fguX25(rG*V znGw|KSl*Ro03q5y6WgMH5&-u#F4sZ%2U*V2Zw^4Oz0PaQ3Y_|qL_$%cQ`z2&5csD} z)U2d>x@Y#3GMfsTkC|+j+}Uiuo-=f+)!}g>AAT3h1dUv1t;5K*yqT@$lN z@qV*v^$o~kP=`c_?uISfJjY36fe{+~aPTU+f(W@UG3-hU|EJxMblx`YMgc)i)1vACzs!^!)=z&96?Va)H0VW7)oeA8+p z2fO9eN*!zs01pD0WV0~BkRMlD`(E?{0@PlEG<>d@V=2&Nctitt!+CUmVI=8pTc%E_ z?QTg|#`!GR_dn zGO0pgc1~X3^M_%C=HTL!np2jF(MWc5J~<~M0RyWorrXiSjrIBl1yRStFXsuH$hAOU z!lIHAq8zl_OTrP1a(R*Q=;{h#P3> zJ0}8S$zQ~|!A&h&(Oq12GicF8)I@#R>|uZ|QYT9LD;|YMd}xi@LXHI9&J2c69|-P{ zW#Yx*&c*P&`rwFTaWSstcL_l6G}yX-`>&SYcn(44O#BZE3$1RZZ;&cqct|BShzSdi zQKm+pOd<}$SypxWvO&GJ0>bfS7Ir3pEo^aBbt~~4SUfo4L|J8zjA;; zRlsnCoUjk?*_EQU{GYing~Gek6*2uoAOn}^UtAI@@d#&)#~KySpKyNPV1eWPqt^ig z1tD*T8_{7a45};6hF;en0;Bc{fqOu0HVSf~Ij;9n``m|R3lON2Es*e~u9w?8#4i#W z(nmnT(&)hiqCs^wo?2>C92Ch52chnQaswY38?LY#I^Hxbm96D&fReeTiOxLtZ zQVo;4HIq4-e&JiI%k4_SPgPYMkF89m@;0N3&zPf(WDgf z`E?@Ol1HRXAgzlH{*?}-i5%Wt=+}nv=r;cFe6O$8cK_3Ad%iFKc|-UWb86fpUklu& zgOjrVJ{sa+53d>{;b=lh4}t5&!s; z>}Dvn{HQHf1qi6UL9Qe89y zRV6w~74)rK5V?1r4RLru|6+n`rJhP>@mEjx^J?s}oZWE1>n7|#-`xCl#m5JfF}aqc z6ta=)-SJSy`57#8$m%4*ll~A6aZ2?Ja|sMP9J>!4BGA&Hz}vOr((|A1R@yLPp)P;O zje9bK&k)xBy$V0y9LctpFmv61wT%s*Fbz{ZM^n2mCml(4!gGV<#dpy6cA6>l&6pMid8)K$CyF>aq1#K-n+)fTnSlG3;r{;Wi?%XtZTS zUV2g}yL_oXib%EGDSwp4M&KdcaY_yKwOm3+*-baqWhHUpIbn}xNA15?#xkL>vAQf+ zD6}F4A1Z8n4K&i%PXI}o>E}Xyk+W2NPQOQtY!0nv9<%Y)G#QTs+;*|kqo_cy&*R!2 zsW)+9Wm|jln2TT=DNjXN^{O6cbPK39iaQMCH5JVZX>=(o+-S!WmYhIpJpx47iG^FT58+F&@LJkoe2)$kGK z13&to!DDc4Q*5!Wj0KKjE^02r&2`t6SV^BhBX&~Ypkn#p#IkalR_ISJG{@tiVFf?c zo{S2^IV)ay1spI3n%gfZ4XEGfNZ!{By3~+v1Du?-o(>}S_1bc9GWV5oAFs!jRC@S? zI0VACtl^0--81gNKwKk@Ia+77ot=^!ct3OVRm&uM4Ez~Q8N#?_f*hDoi~AM-*|%0_%W72LK66EIq0f>9%!pz=#g z+ExKUG?mX0ntGih3dzt^@i?H{+*<+nV-Hp>5(;{yGK~JMu?_8sZx-jHFvC~KIM|1p zz*tB3KKjA~S|K_gA5ZvI$mGLSG611B^Tf@vTxKzNqVVmRo;PkGI1fJQxag2cW={GA z8s*3Gfl6GvLIavLsDwncDc}@Clk7k$N$SW#04W{RUfa0cY-~@z6IQ;E!_j=}JQruSJbZ%8X(M*>S~~EL zC4q`K__amTY=&wZ)^T-Lm5?oCmLQwfStE|EsLCg(1@BkZw!T6YV6c3){KM(opWHBD zVP-&p+KrNR!GUQWwsgJR{e+t@2Dv9(CSU1sIW5wRt*h(38gZNrh1V-uIIIDsD{46! zTT}d$OSIvdM5;2M*(S+igKB-k(WrccogX2py^=~0C@;MkWe(}w)?GVUsLmsz?p(g! z+z-wl6j?E>*2qB{zjA1+IN^uI)4mWBrCR*fn9&~c)=E-I=BM3VB%oOV8&$rQ3AV9^ zr0iN=Y*oH@sv2w=ZTe;;3LDppS&zed4^agZvDP9ncNU!10AjgR8?S#njWK0;O@9-% z4D5D(-{f@$wMBl)wJofZ+Q?+_Cl#5o`+r5n(gU>@Sz>Q~5il0N2-ey+`Zm6! zp3ebsHQlm(%Uc|r(O|M+Um(#BxT97`55ecY^TIaF)_Wv6l?|hbRt7J#5*voJp$kEh z`yFV4I-QvPm!$?ePcZ-BI6aE&+479Wq=;V&$`J`^?ZXaH+w42r!1nJ`ONr?agT`!l zjgh!^sI6h^#tIF1doYOfb_@O|6lbCpSP9y$GarNi-t>OTWv?p?nR}}hq}Fi}2}(hQ z!7UTWbO9et&x6e8=KXD`QW1m-s6#^mew-Ci^fd_%@n|k+O(pw=kcXzMc5_gMx}hN{XhBs0UcSgHyV^U&QYndoO`k2V&A4N=@L z#=?gc%gb|?Hp5&!eSwweSnyY`1=z=RKch;%7MC7tDYzeOTH%$&dR+bQIu&`OqCY_Wt60D*j%Dgb||LJ#@ z{x{Bz#b5GaLaXPywl3&9;rLenw zK9SP^ooApU0!mTN8OJ$Cp$e3X>FLX_&=d4oZ%07OkVvdHxJ|YyP6)VM5%k$!)QM;} zT&l)i0wFt6=o}CPv4gK5HJOyo171XW%(I&RFxp*#Vg1Cs(%*i1A4jI?^OFS{kOqjp-0knk|mCLT-g&iFT?dPFV@B8|PF z%FspJCKAKwi@!r-T#|1iaqlt`e*d7{g>{=SM^d|c$;SW_(J$F}WP5GPB>pL%t$%;w zE4cZCKPu2*m21G5#EDTBdFV1lIZ%~8W6E=-puc>3ZSg@)tdk>39iJIn3GD!V)%6x% zqou@z)~zjt#WW;lTolWF1uD@h_thT`$+`Dk=ZTKuOPy4wFxi7R$+r&ZGUsE$03m|A zcKeh0U#?Br925qr7?`sJ5$qKrI!~&5gf`{wiaRZ3TIto`KBH}pyiZ9abB)c z+K|ibAYKCs&kSq7lHpfDjnC{cdCd_W135!$eQIVLpy#v7cU!qf&i8E7M!eNkx&d?g z)(OSzqZp@rk%B&MwEd2sOym&a0I<^{z`ghWfoyT-*!6JZe!n=YMdd}fn^5jSOAy_1 zx~6F33?0@V-j3+wkj>B|f_?;Yn;=cX328rEbncK(W*eD(he+sUy#?%}KG8~2F$`=r zJ-1Dcdc&6vFXpu@P$x~R;?we#p|An&DrK(5YsW8U%)b*Y4t=j9t{a@t9N9=T%TDTJ zV{HC`wQ=?^(ugpnl14!|@1<(}61{Q|<^ws8#@Y9{3OX@%TV)K50NreZj@Gspv|tWL zb)-R*1UyF8q-je885y~$ISe{STq3Vts&SP3&JJIhe$HoQg3BhUmHvnA_~`emH($EQ z$Y_6uR(sTY74pLnuc`*fA)1$}5nTIO*!VnaJlotb)~s!~IHqnNlPSMz(lJitLhHF< zt|zq#ln5uh3{vB_fO$pMm(rk#cCwE`{_`Tno-eG7S}a5|4hwo&N-9)P=zfFH+gv`) zdxD^Gt0{45(09Je>J{rn3n(etzkr$O;vBSE7{K=UvWI^-e6wefbOUI$QO4h*$}MzD>@ZR|7~BoX3j8B4Ri;zz7tayz#T9Ky^;y!s`D$!g*9I3(|P` z+KlqnXPDcAG92u650BdI?RImVTw*ocgkE)A0C#2W@5h< zsm(xp6Ji(LpfBBzvwGbdi!&yYs_GoaSqSjfWZwjRu59^faMb~`cmdy)76y^os>pZz zHQ*Wy%KeR{&OIlX){!8BPQPFesHbch`@i@$5Y}&fJbkeOP-{l}HIIq>P3u@qP~GkZ zN9-QMVcUR5qP$4QEL2gc65>TQc;1xN-YM=dKt z<)+o>IZYcC&2qQ{5BQ9Z8{Kf4yTM!a zSC+9B{fNgeL&-^be#YLM4Ojbt%#CBI&L(ImI((;tE>)TW8> z&FrqUYvH?D@qI=%310G(7K~AQzI*uqEuJ^9WU9lJjlnbi`lb3(;zv!}9LC7|E;JJiy{#6B(WqFc&3sc){i#NhUz1bJH*AP5}M#AMi zV19+z{_&tHVWzr?;BuRdxtFopt`V)e+`o>#D7_A`&amkn1wKy8EW_7-~e)CcL$wpha}%DWd*q#=qob zb!}1SgcHbk#W3j&wovl%08vRBR>^(p-LBkR%~=I1vaTs&&5$eR;rG(~fyd zfrp@0`z)^ayGoMH_g=VOZ!8AlzAN?hD7<{&`omsWA~QEzP~^3e@nGd4*zS~JFP}yr z5ak(uT~m@yOy~Ge-Gyn>dpst*6E0S+hzh?BC43Xp!m3p1Y$o@IeTn^8AZBv#%X{v$ zff*vLwg3U>#HnOKy*?`3CYrN_Q$Gci(O=+f9Cs%fcfbMYTjOlYC2O;u&vX5AB!%8V z9hR5>c?*+_7+aL*g{TTQCixm-9@D5{Zaoh7|{N3 zGTq=8-@N2R5hlB-rjKfh6>}EdFHlt2dcK^P18H(Hl#`i#*gq}jQ_?4$yYGKlx!n4D zVP1ykm+CajE{QAt!4z1gU`@$1i zc0oE0P(tmD>^Jd3_z?MM(Ni;sPKs+Qo}zVW{>sKBCLR3?#Buv(1CyT_X6)~h35DUd z%CyHMyO5=&wFKNKjnzdk@qtET^`WTB^SE7A0K74HvfA^M!C255Qpfs%kiw0jnagKsB~gs*lvCvyN9rx187(IPRcYuSn@Xv5_{H9BTpWTd9LswV zc0#1Cvo>GaGs;bOn1f8BYE;0~InM2%I>1xB<(~fZC#xMwP1?0k520O#1?uS@2Ccxh zeMra;1ZirAsThbG`Vl>ck~^=y5|&lkRssJGc-M+M$kqG^{HolLI?F6z(1pa?{iLN6 z8*Il)%A!6yGR$kEDr>fqzd$#OtMJ#MFa!+C8vNlM+!IA2Ti5#EfT86CA*BQylqF!_vxflE+?B$P@qjH*UM+ zT>zdQRI&iu;ArU19K#G*8_NV!^uo;(NpUMFws}^Q8-tkk*8@tm3mH(cKhW(x?BAch zbg)|hR4}1NcM#`JYENzFXkV;v-=-%x@ei$bQK(e-O{8Ph8H=8^tAxElbX(D%&B-O% zVriR*9U9HuQ$8`lZz?(a*`nF|o2DAb3xQsx8|`6DGT05!SBNaXi&$=cZD~H`lH71I z!SL3-{@f)%C@|1REdbR3D>nSvRGFbkc!q?>QUV>^8>WNTAr zx}!fsL@(s`s94LagUIEx)EvCqr|U`s598xE z@Wr-x)1kjI673h((s++OVlgHU%)J{F0}D5*v+<#0F;V)tcCs}Wz7t*%Jzu*7G~*wx z7EZNX_~g9p>f$6ti@p~k9XR3vM?`xbz`(s&nK?7A@k{e(hgUX@Bv{k&{~NEAgfa_~ z%6q1b%>^v4-@M#(O`TRvk`m=dp0U;OLU1~!cCrN{y3+cgK_XCEBhGEUvRtri?T=n_ zk&YLYQ2&SH0Sye3XjA>_{0s-Is8Ul%&$Sr zxF2QQz4E1BB}}uFx+Rm9*Mv+A%Giu!2hEaUREpKK7m|+Y@z}3->iaf#sLZq5*JH1- z0xl@7AjN4aTEg1xZgs6}yQ(Dqv%TKkAcoh(u-@d=emlLrcXG1T<@u_TCtSCB2w1*=|os$b|G=h8)FTwCjWW97ta(G z?(<`=HXL!QbX%~}(v^&TT#IA&pP+^P(xbF3Ll=s)ol-UL5!OHWFrz#)O()9N61z?z zvB$)z_RRa`ZT4>CffQ1fNGt|nRTfX<)_7E}eFwx?0JYAd6I%)8VVSmJO`->xQt0BQ zpk_OA>7}VX#L1iT3#A6Q)+GU>Nfv#nI|LW zz46X`<>>$s6MixmjoasXkbSK{-$dhG%P=7~;1d-+vEpD4Z5dcbsK(-oy#T^l`KX2t zD!sMF>tnP?Z>oM;O-N6P5#D-l5O-as;DcJ$o5kOflQPqsO1S~^{yV)6g+$3PGcUEt zn!&tU>tPHIWME-Tx9LaG?ljUCK#3S$FObCQFR+nD(wSK|iEWxu?!D#Jta7ZM|1?6( z0Fj82GlSzdv(s;=vMRY6xSs$xVTnw-2y`(1lbA3u20V{9Hro8mCSPoFfPY4`5)3J; z!D;FK=`}@iJ4w~ZU8QXUyJoFNk({%C{w}bRv4*Kd6N8yeCilWC$upHaQ#9CV-AjnC zvpHQvAPe~UqQD@C$#%}9i|p(i2oM_^XW&xH+hhMFmE3I zf#t5Z$nmisMg-D;j(2@BlD8u!uB{g#UuZ5^LE|fhBwtBtj15drV_b?*>$`AVqwj-E!FBe5OT7VS?!X*J4S0AcH+tWR%jB4G3S27^&4%95=c53IVW znnOo)h9{{Fvm-hNXL0Oeq|s!4L#bbuN}O$vCGaUmGcANoN8e{`NuPjkIy?htL%F3# z;ulW}biUtche_E;#uw!*Sq9CA>|4C7$2^5DH9!NoNY`n8(u0~w%^1?_2Cr+i?)Waj zi&}3J15SxbwNuz+lkk40LJ!=^{hF+a=OQdp`^o|Q2=A1-swqb`J>#G4*(}rJHj4c7 zKVQ=A^h{w5U?d7OtCJ9#^i~#9-kp=2k6+e$gDRhJ66o8{$Stc7YkFw$C|j;T#GlwC zG%w2hd;S=JQh4)hMvu>K`W}}W6l|t(;_{Td%vya+pdZ$kfmJdNG?_^3(A6WH!GJE_ zu&c6Oi1pV%huXumHsG1m>3hh4IXnIs(OH(T{{Xb>4W*U3JIon$c_0E0M4$x0JUc55 z;$%7~{z3+egSb@kBGMori%@;k9VCtsFk(Gb+41w=hxa%$zvM?x$Is(H^OTOyk?er3 zkc{Pi4bdhvRG2yV6Z1c0DWO{C{0SRB{K!uC66b&E6WKFJ-=S7YrtQOFu*{Phdc_I1 z0T5OkvXRah0oh&K-VVs`S{qZuDZtc*??7C2=8|&6)F1}22^PIiv)QNXHNIM^81E)& zoL|>#Rx}u8oXhSsTCFCubYg_y>z9;!e)vVQu`>2@v_N+N$*(b!4w7zPZ)UMwh0bZj zs_Hev@d7bUM@LNznJ{c|O-28lpJuM-ob7GM=aV;KytP>%mc4STp;8Z$5WMBk?>lAW zm-(F1>qm`qI+^B4jwQnj3OzBsnKtDVOZOarOmt|EzlWtepfpj4Br!bN(2IG>A+mu^ zG;XPUM?ov}yse(ql_}ZsaEeQ~Bq-1Ef%cHcbIs8M8>CfSG682A6-hJ>e}kg*$wqw( zv6mYp{njl5Q#W7wZ|D&jM4pN=Iz5TX{Hner`WKOBn~{MGFUjb^~KbQ^tqw-7lSZ znb%)eC_el9dje1RQjRMu)1{i{snVHS|79dfk{@DMDLAN?#b5RZ5A4vFHbZG@MYy6u z$$k)>OBoFF1fi!@w2J(@-UzbbBv{{IF;4Gibk;3w${%XW;eOUk^%C(E;Y1f+BSKqh zKm_?=B~E)k%E20%2?37!CdP4k;EX`cB`S>RnA$AlOk2WXTm+f<8k>fgcXwR)kyacz z_J*!+V({AM34=(F$7OtAjRFGsy>Y__i=Xy0&PCKIl&Xd~e^ga=zIo1pW}-_KuF?x3 zr^oLTudzb4w6gT z5E^VcuP{h3+;0NzGP=XG?dI3y2M}-rmJT)h4<5}VOk<%?+*`bq>Ay`8{dffI-7*Op z&U-;`^C+;AbO$r`M-}BS2{ueTAKUIHzd<~Qv?m|4W3Xe=g!~s*_coROu2!wvM-X5x zwjp+WOPkfKjVuFaajHY@@I3yg?aa&PLU2Smx3}d`@g}8UatmnEDwWE{*5h_?Bo+t_ z4E9H@3)|VJfA#!RO3a=HrKB;$4_1sqRdz(H5nU}0M3MG{OLkjGt8>zH(*{AJ#7%sZ zy&7znQ;oKrMyhfYF6Wf5;mu>eIiA=Y3y;Wzt$Z~<i(~3yCYJ4QpEb2Tsg;(znxQ| zXZ?ktGt~w$=dgg1l=~fENEsp(9fx{8DM{L8%6gm&W_N^XN>t^YP%~!I`cyW?;OMoU zGWKF5yrM5i{JHNUEesK{lltgZb2H#Ui-}vgayLtn@e-u{YEB_TQ`Th5^rUCU`7*|3 z`(-}5^sloEvSxQh03@fMD+zclX7_F91s?tGHO)?PkF&oQn3Xy&BaK1?ULJ$BIAhAy zm&m~t^}6!yDZy3qSSF$_)!HvH)0++5`osVj2Q&P*OlE~2vpM7Jin;e8CqS6Yi&X|) zO$_g60sMV_-}&)$Jz(@EuTrE@ED7dD5Xl(yX;r{CagSNN3! zvOr4W)~JHk###cs>h4d=ttssrgP(#+-OnF=k-3{jRmk$atIZO7^}DxrDC5Z1s2@U@ z^j`r5{h|Um2k?}ir5X7x&J#qLS-9C<)qAcnlSJna{eA#Q*em5{mX<03I1wnMjpF<8 zBYr2!_*rR;;I2b~I80=ZP6&9*wN%klX*{b{=8$$G5kgW@`l5l>Zj$hMxwONZ{_O4c z^Ln8F&g~Ob6ya*FDJ8#kRk&FRrTt%Hvpmi^b<^QXGTdz$RhU|@L_wv$ID6l*9C6l8 zKcPs7Tve0_*cc7wWrP2y_X)s0TfVG?NL|!2Fofdnw9G-VN{zYlm1+9cLB+C;jDoSq zf@4fI@we$)pFyM(%#4o7@uB&Wq$<6Fwps|xbbS&ofApapaE3zTyzMFX4In$RTnDpu zDVd6bYb$8QM9?uFN&{vZFjDCMV0iOi5=9hKYyE!lud zmzylona|Lm_0QvGogf9%w|^q*-4=@Be+_^!<9h;{AY7bqjqHBD?j^C@94ye_-(>IO zxlm{+>AHEWQ@$DtwV25y*DZv8#QuXc2MWmFl2X188?gpEoU5}%Rddi>GA*7QlNyEf zF`$96%yCL7f9lxTLMYr8Hfxo2)|ON~LAQ5Vu#=v`V@QZnw5kP6}tYh@!k@UL18dQGy_2 z7v9kfIwP{;5R>>tI6s)qT*iwh)MAwJRLC*_px;TWuL)FEWWD;%F>aVYkB#JCm7Hbr zJL5U%3xX$Bh5_0(SMOzbi<91F|0zK32uRqlu=h{nJKLncHZeU#T%Nb)JBmD!N+a^K z>B|d$Pm0X$XXob+&TN1_(Nl=3H(rei5~U*Iig-W0l6W_4JOeSY_vpdif8f?Y8)DX=*{%6{V zp7B~Ywq95V3+plzIVMTZeOgZjDU;fCWod$4?q z7rCGBNT{)5V>_cMrF@>MmloTIBq#0f1j()Bu-;s$Q5xqorRnO{z8Z>UqFiJN1%fWh z&4X4j!*onylAW?A3+UcXE`3zI<_!`3B)Faz*> zHp%kuSL(vFo$Uz{{Kf5A+414-n&PvmZ_3qUV{RQ8!LhDz^(zT|K)SUL@;r&{6mC?czDy9BPdVak6hRL&@+*<~XHIJe~_m;XM z9H4keWv$tNgn)Hi#b8v$d{n zdxqBem~H7G&1M@c^zdclnJl^0R06Z&!mt3ln{|}d>?C%z7<~i;emWJaXgAY+{-w=F zpWsQca8?2#B|TA_c!UrUZ|wvCKb26Jr+C#+apT}0Z*@}16iD=CJ8lG5Mr|}mtA{8j zQHCDW6rg%w*P0w;Bi^FGCZJ1m!6Un~625qGAck&6--)3j{Y8@X%~iK5i=VjzKTi+u z&MtQ1p287p458p>G3VCHs1H-xXkW2@R3GW-@yXhs`DMx_S@e?vdmSnKT^zURow9-= zNoj?WGpgRP`9K=}zSYT~t2o4z%1(XFy=8JZ3`B&PNhHt|R)n>GSE>!OJzA*1x|P_Z z3d7~{Dpr+nvxh;}Ysdn=j-mf<5{wBoNGF;oje_eHX`fru6Y_a%^56BK0Mlt2^uE*0 zJj^2Dw1(16dB&#U=%2>AS{NgMoM|nP7uGyOf10dp&RP8OHY>hh( zt+~?N`XSJg0p1rCJ*=!_*J%ikroH86i7EF|slLbFWt^1wD^X_l7c7h4BkV)b90gOL z3~p&9J3SXc@JfSt?IZDf4S=ZjZjWoR@OcLk#Q!$OEp--f-K{jeP|WzVm>>Ip(2)F7 za9FD$uuDxMk?2X-VG0wJe!IP9`2a#xNp92*F|;=O0k~qz#%6Utb!j-u7R_{k9i>sU zIZ<}zHPwzR8MMGPbqe-C;z=$vvg%B+W#Yn|OM8vCH7r9k*e0K&W1Y*9IOCXPd6HQi zI**kw?_*J_Q%vXck@j$gCJVUG(Vx4d0aTBPFnA4GQmmdbJ9E^r)OrZ8h zP5V8|u5%*uVhaIk^jwIIHCv&>T5`cDkfx7rH#Ox|R4oP^65mP$AK!0^72D9^50n@e zC*1}}4&vG`wUdr_v`En8L6T4PWh3<%$Y*ULSAk0^Jg5Hh+kMW;#08DXUZ@CO#J!+L zYQ40Gj6rL^8u4qLBfS)%5Kp^2sXbY6RM(Vkp|hmAaHndSDU%|&%~E)P=xSKgM8;#T zp-%ebOyASX_>7on@o-qR6>W;~ZFiF+?2WUZ6q6`-wJ{&^_j=^YzZo5N7b3?toSE!| zV+1KGAxs)l)b9mSSn8D$uWUMVudR>uM(GHn4pV=&XZM#VIF< z((j6*`Uzfd{O}&0TGQ%|-%uqrwYu+bUJdnD!1JdV0iM`}k;-iYC2#P^3TfhgC0cVt z-r&&XntRVi(g4&Jd)urKXUX3vi$~lRo>*8U5#}_e`zed%$|i$(V;8sFM54v zG@WI!_UnF}dSFR|5$H$SuXmW~=PK&A5VYGK`g65vb-E~N9P8hG_xpF;BE1gzMezsU z_A6gsW3_;z+|-+J1tV)s0SM}iJAe9Hbc&`WJWW<8+53E(mZvtxET9e-pu;R?%&9LH zA*(*CMNX{pQI%-`zrfr&xAdIUkiHu)+}#pdK>kNt;>_tQ{(g>OO>Hz|y-yusEw<;> zU6S04(vQ)Wz9P@~@Hi2QsS+k7moP9I@X7uo`M(R^r8I|}hH=9qbIWMvyTV`Q_8jcf z%9?sYjC>JzUq*M_ z{^~McOPrshfbed~hC6-4yI-%%KK)xB@m(`tcQ={xG$cZFvn6z(9qRId+;yzXi$y#; zfV@yL!QxwuQk~@0!bF9iD`jJ2Dn5lxOE6W?SY;p!=kMpaT4}@KN}YOQE1(Bnw(|cN zEHGYV@mK0UKpU3v% zB{%Eo@tqvEuB!*x0uSDgs0%0Kw_`n>KU>KxV^?P4$r)%8Z##wG2N?)=5d)7;_&0kzQm+REMx^EM3c2w|=osEgTI;yOyKA8C z(z(!@pu~7k1iBH)>{LUol4sT#1n9O-=<7 z=W4~-mdS3NTKg`9fq>81yq9NL<_l-KcEk8nN_-ZeBse)pxv8_$(C`!C-!#$f+XIJy{$aJBt7yrKOo>s$v@UAk6l zb9M|St0kvNfZ&)AM_m<}M<%FY{l3-;(N@DZkdkN*7S)M_M9RMlWX``+@-$>RoB5*E z+^`JwZJ#z3yy^ag9phIem!y4@M}RO*Qq}rr@)*uQCSA|A9QSGtHjA+Jb$5uS-2%$h z1UjbnE44uFKpu!L&gDFla{3-nWzV>+9e!1V0~rQQlLFFyZyiNtaLLTku%qVwv@}YM z=~+AtATPe6Lf=pnq0uzQvw-1&2N=^F*9o52*{!aI8-uxiy8G5=9Jd{y)%EyWM(s*# znE2qQiu@>+&0^jrC(? z0gkV638}>ts6O18Yq;zbNL63lyf=n&d1JL^E|_X$WiKJerafYgrMPm<))F&i8(FWcZkF4R#;rU=!wEb zfO{O7ErPv!4NtC&pX54QsY9buJhJC}>^tU7uXIlq@N3tgQ*kcN=P3r^n0UsD3%9}2 zPq2vF=Jc#o--amC-ILz6il~=rFC(VZD^F^~8ag?@g?+)iurPk{Xq6!S@%kAtMqx&6XB{Z9v_61lh$1$ zfrN1^B{906MC_&pes2&<8~;6VZzHjcdz@0Ns7XO&M)d*KYJsy8ZHMH1W&*;oynf+I zJ3BJ_%9%!oVC#{ny(o@cliZft`qC=0o%F@d6UDHw7We%m&-J3(3Zb;UGLBq0mr&`sTusp-D z(XmJwG}hBd#}QpR+4CmP1UdL>BR5zz&P4nriqKsF*>X34wqdTVx@?;tXUnt^dYROL zhH1+=a~_871v4p-w@S;V)Xf-zSS`2RC%Ry&s6MUsn3oVprKMENmp@b~w)dQ~2=+_$ zDs0U{bEeGqu9&7<4+=jmYQ$Sm7g4;vm;yJJ3Pu_?+AV$5(}W6 zSWTSB(l%VEz1^JfWl-I|9(7e9`h4JDyvV)O-_$94V&o;GmUHkMuUj4P976ZV^kdxj zK&j&h5iqNu5McRG#+KFwM?~+^zu2>tzz){-DL09;bgxuygk z#;15y2A}y52hC>yrrTsb=8VT?`DV!{FS+ZHG894Tz=*;XZ7*YCgww6rlV37`moi^{ z1i{d1SI`*!q*1U);jt$Em!DhR+3`tC29tvoD;3*$$sX$GR$#XjHD3p@f%kr~#xOcu z*ER6*Qe9If{yRfNES@CoNoKs;3x`G`lSv$?l$F9#zj+wzgR+;Q%VFAl01xzKr2Zh_ ztqWDUnXf}F!#s}Pqjk1FeDJ}IzpA0E90MZjH8iS@OGN(c%;%C)lxIsuW=!@u_`Kt> zx&u2OVaOzb+-FJQV>%0gRO#}S?I_x!@d*)rv^a z26M=#Y+I}RR6&QHCKDRFFy&m@8;r_)KM)rkbLXmyvSyq%Xcmr?rW!He)C9MuEb~o zz`H>Fx3s4B6vOJDU)+M@CnG3A2o(}S0ZR#CgP}~iB0jg}_b3wytctx|xF(Y3uEy0n zGAO#&rrA8(TWYQLUbqiCK0vGCc@KC2lrI%%YV!AKT*)&+O? zS^&#iivE*VB|VutEDl`yy!@UJjBKwwZU)#wgg=qq2&MtkYLWASJ16WIJF7|iw9~lA zFSc?+P0--}Wthd>b@fN>umu_qD^KBG)7Rs`7_N8Q>5Gw>;Cw}WyDNZK*_=k0c=+EX zPs3SiZLHJ8AE)49XRkTogSI{d#!eCMx>Uy;HxMVyeL_P9Im{08t6DK8rMIEL zw@D{m-XBjDmCD*ycL^t)wyIm_++=G{@%Nz2rE#+XO`M+2wOwJ6Mky+b26SXBhrhRf zB0Jgpc#sv1TpOT{m&StIvS_`*QUzP0=%i*km@y_@VMS{_*MC~i6hzIR&$lJ*u? z-?;=F&gEkUXOis1do0*rP|J=Ev7m|{&sdjkBW3`WvbV~6U?$oiNP7ODv3l~h&ENee zaFu-nyX#>r)ah=$=jcwpam-u*9zVK59{~ek-3~rQ^4!;AxU_YA1C~YSCQ*WPztP5L zY=(|{VEh4T1H56N{olb2OJeq)+bFc!=W_bK_gP(q6 zids$pA_ddWgi0l{1H=+@!8Mkan^g<+aUn_3>>CEI?{vqQXV?*tH5{nl?IeU_|AJTsIZ6|yxEczc!^;ydR|i#bvnrlX6fy((DuxO$R{ zhZ+baT38LMut$NLe5>qzW3y;M)7`P{du-dbZTlYEwr$(CZQHhOGq+NyR6f2*C6zDF zFPL3x_ssNkuU_lB(#VT8s~6`sqy#57{lTOgtoqi&{zMQx(Dea)qI3233<(gZu0wo+ zoEo($)Q1oIpU;POQUKG}`9lmlcoV5B(#2Azu8NvwZ!aE@7(7ny>$$^o!jzp1$I)GdVBF z370d^X#5{7UrNiN@+?TNdO-XGW-UL^YCKl;9Uv?PS}8=;s=fC)I3gLmmPfzv(+f@m zxVlpD;PqXpO+W!u+KKf(2$i9PUi|6N_}Z~@Kb345a;G3~!F=f{N%* zI)X(*Ev$V8!82&@c_8;N)dlG=LZ*fOrc%8|j;&5z-4e%Z%{xX~I4FEMhJ9WRsFLf( z>rZFlzo_6)O^OgF1hx*tTJC|~1f#8DgOn15+`wnObtg#G3NtDe%{&`Hj0snrr3omf zxsTsn7-{wAJ%@-ag@n)(J61PPOf%0WU(BjGTr;1gV(r+v*_e;Xwo~$<0QL%QP?%er=?Tjbx4^`MtoQCxiY1U%)6+REgYXkbiZ)kdfHoK z;<-?G1086UU4~`M18Q8JuL}FuQtNknB`5ioaXQF=iP@NpG|Gd>))AnLxnNgF6Jq0y zLvlD$Fqikvg%S}Qax3E$b}x~8k~?T2tJ2PM-bmqGSgkzma)m<^9!-}_VxCm>VigK1 zxVlPKnrm_U>xXhK&vikT*_?%A&rpM{Ez6Cjr;6z&@aJ9k5_*$)8oHTyjL=6tu$gCu zrIBeUQAT+A1`%K_N|-HwVTg^MH*5&2G={zm5Dd=toZIK4FRd1Vfqy!^m}a+IC}IR8 z1rDa+|9n&XWYNXtHV)=9NZ=_st+2%R9UV&l8^|^jy3x4kHRSURd~l(~EYnBAv=jLa zLianKN^uA2&uCAh$DkMYhtC)aGjN->cS~xc@2=NAq}^a>dQR9 ztqGeky*^j9o+%i)_2a6coxQ+rOCOfuH@$4zs57x_DsZBzXh*c$+ZwDZUu>x889Kvi zt>}GmE~SXy5h{O8lF5&v#8CEo?>T}Nj;oiG&j%8rp(Oaz7k15wdcEd;Kv*@uhJ3Hd z!0W;J#keWH^ttPKF^$YWG%=w`W_iJ3A}Ix~Wb1o*g#T$Q-(7HNQ_PTN^VbFA29H0& zsI9;kL=2F~f0dWlCxWUimqz}K3PE7a#SIQ#;&)yh#&ZP=*i$i8zG^7J<4OTLkLw|% zgE8SYix8kCE^fG#L;9Y>`?PQtvI1)j_!U=1jlKx!J5%#g__?|h!8X^BoIE}LD7pi5 zXy<97fd8-93Al0kRNP)*SpNX`nG+x)?1%`~bNohVEuFk=PkzxRx#{&QXwn`wJ{Ja; zt8ti0hCbg6LC^=WuAjLd?0yWbL`Pyh9)?g6p9+D9XAU)IOOen-AY6?CBi8v3I@XyE z?B>kNyuq|&;Oc)I()adosFF_H|QHNO{jma#lnXhUaG4P!hA zZXx5c+~iNKU^|s^@MufZ%a*A0#Z<0H)UwzD)3NoP$7O|)q_%(BU?X9wRNB67wUaHvc2wnBJ-03{E9gXFO1sv$KcCtp`F9`2q%1 z^AI#-Lez|&W{W+w0!QmjdKEg4CurBO4Cc5+7=PGwC}b}g3qr`XuErCN8=`Fz4I9r& zlXsP3=>ykKv*G>nydY{vZDdXGuJau(#zr~oA-aWljLMMQt5xUVnbHo2?dBvVt9DWm z(l)$1;AKxv6Dk2D`8pZ93-Dm@6B2Ls?K8Z}(r;9%kt#RV`VKO*?eLE)qBO0|Ei3P` zn^3-C5y!&U87~#-zs;jlW}qXh*68H%z*ue1YYViO&$wU<`}&;RO>2Z}3Ct%qCSj5I zFtGS*Uxi`R>}8he)Q;4Y&dvy9iDpk!^Sbs;X=4ExONsCS%*VWbHuN-73p_^kh`39^ zq|6EPXMyld{BPwr=y~?gp@G&!5xD$->i%pePUIiuU2Nm;;WF2LvL_=9?%*t>#V}Ry z+47rj=o*o6_26W6tA0d~f?uX3$hHbUVmo+h4o82eEqDlIAOVs1qO5>7mw4$ek;sGH zl?iSmx9`U!uKGnhYsaFDp-=_9588fyw4vklDK zu z5gY>|8UB^V((4iX6I>F~3L(g0zjY!3-Mg|5kQ3)-cB&N^NUczE1$q*f9V9yhTD>y_ z(Q1rBr5|#r0i(ETL_WB~*@dgT_1Wnjma!3PCf?ze@~GNIomsrc@`KQ8!-s%Ez8^0c zPqPnCajY~BpiGSwO>aNF>IDlEypGFaM_%tFX!LRbQ&(01%9$QODf)al+*8sqSNE^r z`m!v;CD2PoN5cL{E243=ZE>tzD`h^lcid|0;9XI`sH=;2eR#S)7MnQ{Qh)KPHNVKn zJ9E3%+K)H*see6hJAW4h=&xJJ1l*pR3j#j<(#j{Kb+VGAAm-^{NKIy*5zCh9C@-An z0;II@N{ne^AVcNS(LgR;o8XSDHzeH&3wk%4cFZW%D>;5H+L-WQ++K`kmjJQWyJud9wkX5#C20IOsmyfyb&ISq3Zn3!rI zon@_<95uV706{!AokInhfl7?Kn2=v0Yj#JMDS@$DsX6sJJ%IcQ zV}%$IXt%p|L7Uuv8kD!?Zxye8+dX30QY&Acm*9B9|${tjxt9} zRw{^qAG`Wr!WPf9_ba*52#PjEMf~tJI1G%GlW!uL^6HJePQSD&{o~Z zQeM*X5H)@@Cgo?Wd!N<=vfaWYdjefl z5<&kp4Cjt=Gpthk1)mL(OFY5M3?bAFUU2Vaww?oCq*&6yueyAN^T`sMv^bQ=9eErw7@BLl zsKET{KY%TXOXQb)zwP`+9Lp*JVJBvyftKn^5k}@Z=i2T@o&GBNfMSV4;`u7h-uF;Wez0SQ+k^IJ#9(UcAGcd84vaD3?d)TO z&Hnce+zb7Ps^VH**>6`#>ElO3trSG21R%Vv*hR17`bY1N+a}n7u!&~+P=+52UFtZ` zDoDGcMLRV|ibe`K(J^)}-93y00cdbkOfsefE8E^-dbvGZ$tEwuWaoUrqB|;C#)R4P zaDbBAhcv_|_YGiHh?xGMq*B{qVhdS>LC{no=RNkqDYJlTD3FUnD>yq_ z9-29=IDslA{NTht@}W1&FGQw2H9q%WnZ_SeD}hg2+pWPjL2`yw31xAhkYK)43jK71 znOy>Zxd)M!#1UAw&N*sNm60f%?IO46zbbCvsSuzJcb%rE@R!1u%<+?VK$EGp7m&tJBxOyN{c0;ID_` ze?qkAoMY-X@kKUf+bp9(pG&@9Wg7dw9Md!=9pzwJd^PjCNP>g%;XVm zgtNMReAGxrRr^WinyKDaZ~+lVnEr&vehyS=F+TI1zocz+xbx=qgX z5}-%T>EN@?j`m|&r=QL&$qcu5d2AhVh^OBuH-EeGJ6)qturrdvYWF{2NbWopjzGXS znBCrbcrBH@DC{ol?5%`!j86d|(oNpwXaDjTE_`U-@Mhsm!ht$ET5v5?&}sT? z?c6cv@Dw`h6&*0>8RtsMYU?Vj6h??PXGplq$Y6)#tQ+EEgf967P~_FgCrUU2&@+>h zUOO2%1*huX4LF#q1R{2~P<9w;vzFZ};pe(+$1=3pp~`W;#n<<3sXF{228-~f!+pd) z$8qsWMRUvD90_VI2U$l`w8;ZxnudWa73+WEDvt-!bnZNF01JjFZp=>6s}SdjzdmME zx~;l$R1d{@g0|I$;t-dGcQ`NW7u9$CQQHHjO(LeDaMM$4gb`@Bze+)lkz**IO~AW2lA$VLWJAO0nTX}I>rKY&eUG;6B|Bo=j>RT z9pSUQKdK~nwg^U$3H(`!%PCn$(hru**77ee3X*DM8`6EqOH~EyM1<^n&^Nmrv~d{c zO|gtIBrCOq9i~Do(5eAl(s%e%SWD;Ku5ZsKA0M1f=6ro765n zeHnX9UgLO#<-8rKR)zA{_TSNb+Y|KyP_I9y#L&_?R}3rmFkoW--;SDpt3~W~{~mN= zBV>x5%x$pl*W)ru=Um%)>(jIeP0jO92!R?HT>U|nKR^~n8mzqFJc@)9l!+5?Nh59+ zaVR3Fsx5IlH1thsd#pQNp$;{xJuI}WSfE*xqWOW-R>cc8<5pZtqmqjl)#ni3FpGmlm4pK6>ngZ6HS0D&EVm80$ammOT^qb|EsnB*h2DBiE5^dE z)G#+Kbf}I{AG&xA4zN7&<;F+e=>{EKwl@EPCa^+(r;-yn(nvBxU0*z+ZF4nd*JFeq zbM9S^E9Q=Bd4m>oBX=9%s?hx>R3REo2!1pbnK3Uflq@TSr^rc}H0W9x$;vvXKp2On zzehS>SFzENfeg_50^f4EX5@wL^kgK`$3z)?;;?BMErcO?6?D zWc||%JlhgMsE2m!stNf5SA`0uS}SDZ5U4x2b3>yqWxTXa`>Z2WlqSJd<<3>FRPF;< zvC=XA7i&HyJ$UZe^%&>7S>Oom9>me_VK<`L-s!pEslB=RL6x0|fa7QS?b>cN$D*NO z#G}#^5S1AP*G%Di$(WXw^}(|Z$VM(=GM64kkI&Mdko&xAS^H#ec`-Pk1j7)1z2lIO zW1}1*)zdIsF#i)pu_DRGN`z!Bdsn)fJYNfc8$5OERXzKCBXcW%&JBm)Q0+b!x51B6 z7iqv|&9lZh(u#yt*3_sW9xmB`-T9oV{8uSMTqY1p4fT1AU)dXGt=Fxi7AL&X7kbaK z1aFd8jF5M-ED^%bf}-3CaHU(g?I#4h!1iPHspMCwHks9JnZgQ!cLF+jEZtjxSBY?} zD^L#rv;2%LrZMN6V>LfWr0ra9F^Dw=2(t-{$X?|MS)f4sEc0B;TV{7uh9wZvkF=Lt zcsh(#!{Z0gg~*E|C=UuWlc%Rke`~BVFr2t){p}m-%iI3SSz8`Qk!2c@Ub`mufa~wL ziv@+bBL0NZcB8@~2 z0L%F+n2|2jY^7svZR_|CpuO^&^)#<1hm86FZonsmE8460VES7IYyU~doXa-Ic z+3me-3g9k@^SR`mL3QgRnFMy z7PtiZf%<*lo{e@`dEtcf%c^Aqy7-Pxz89prbA4$7#pnRt-Lts_2%~p@(T%Yjh5(0( z9B5&1M>zakG0ZzR1NV1Es=0qHZuYKrurzxY1#Jrm`_6^c!NoOG#h6};82%yh_Hg4N zS>H2qH9vTYE_L3G&P)I9I_F#=PnmdHHVNK#C!Dih4SM@sWzqdDC<{@JSS~ePTDR37#@}_(>8z&IrY3?q3+vNCdZ|_{&I`H)M zQo%AI8)H;ujlgn*jr;mtUG%7iOv8>DDu8Db?@V%f52;3!qKr*BVW+++>ToL@Sq`UN@ zw|76>sIS9N$Hmk2P5SwxZz9nlo*u%%%8euDxFqo1E~F%vQ680TC3QK8tsMtYnUb;b zVn`m?MHPO}_J0(0JEN4BvosKMP*7#OAVRrhfP>Q{8N<=ZOUI2D2-;<%Z|t8YOXy7M zh}y0{vpLNKPd{#1-DHHRss$|pp)knK?oV)ADGEJl2s-JMKh9%^Dhs;)`4)gJkHq4g zPaE-d9+1^y-%yS&VXY}@RV_06<~X*WQeg;If|Fr<+5oY0vbCh-N%nX=vBdj!Ii*B; zSLBny^T}xuK9unfWX`XD`oPj;(!SSfm*e1vNR-~5<5?L%i|cM|`|V`JVCLfyE2{Nz zI%ew0Ftjy7&P^26d(K^|G>(q7Kq1~oH>zjTMp}l?&Z0?B;c$YhSfH#If387ZK;^OC zIkNZ_egSb8`4G66O?`+|Yqpt{tKm~nK4`D%#uzG@s>4cLmMt8_fX$-xRHwcP<7f;0 zN^Pfuu`1g1156obane&)S=^g%#+;L8+neHNrV4#4uri=STvHyE zj4hUehYez0>tzVKp&q1`fh~1O2`=) zdz{_gv?Z{L%iy8qH?w3rqR%e=bSj2Vw9NY<@Nc5uSTQs z`+krrF)iy6>t3o77u#CGsf8#GcVFG2Gtz97P!7#^+x)nbYlPlh4$4<@lBLXz7>V~|O%q2akZ|-o zLaV==RK*)kZv{O$Lpe$V25*dc9oni{Ie#%#UY1tRq8?24%d1X?n@}?UX05m|Bv+M@ znTZPzx+gUd1)*i7`$xiEX_-mg#c}Q7{R`;x6IE=!;G}RDj#nnwu=FjG)BXBIY7R{a z6!s%Om816rOt}6VeSr|d-!P3Qg`>(i!HyVedn&y1J6u1s9mO1#SLREA!5oKj&$I7d z<&w#iIa{CGI92r2)7dbxZ;SJeG>F*yKJI#QV~8j~EgJP`+TIGcvB>VI?)(72+8IY_ zZy4J32iN#<(O3~MD3N9J>^NG_lAeEPFb`)Onx%5=x9hR-{bZo=?C}!QG=vHyMJR%X z*E&Fi?GyA1SPx`uvn_>I^Y@9cc(I$O&y9~F=}4)YrC!+v#Y5HbCTiV(*UuB|HWDx% zd@HstRZ!+%g?%f<2oU#`=Y+9Sde~Hm*^s$B6rrv?$Dv+b685da+WiMLJ4{@Yiedrh zK_>N_dtBUrF>Z#MsM$3u|K14itH>EsOT3Bq6$3Eunb@md6qVM%bvCADinA_pV;Fx& zJEFqk(v1Uj+<|3$-uLnThzhi75AF7b{WY#~z!tnE8Cl8H6P}PtVnu2Oqv^FJt zozP?pg~KYlK0XvadAY>aM$O2Sp_BcufK!`?>>&i@*gWFe-_uO&mmcQ+<1#%7EyhI_JHKSTako(Ak1^SD5C~icyoG?(6EeFv!ROBE_c}i8r@e?#!R0-D^}i}< zPKL6!tIgZ^XyPz&)!MuF!ztCTUC5H4E!k~SU19TD#7FCAeve+|p8fSA;WZZ#vL3Q( z9ZvXVS4HB?E!4DAnapVzxGnh$_0(!_X<`o7rh`CNHE9p(=Tj=XpmLib%bUowfmW(p!ZS~xya{K|7guqK1rmE zg}(@Ix>1Jaew4ubi_Q$bA`~C8#eST-iysU)NmRKIB!dDV+2~aR$Y!ET6}Y-AeE|Yr z9UR}uz^8)wi3@X^jO?h36MvR5<5zHKKRL}OJjEcM3h;4MU1sy5486f6PHW^ah6L|J z7@OyF^lKvtta3EoZWC`N=rJoh5r>s7+IOMMtJ$K!XTv2lIy?To+P^xP*D#@52^U=y z1Oa#TqNJ$$5++@@NC7we8AA!7=!4^BlMx~$}790BWK zna^fz+x&XklvkI%=z0KA-tP%&Qu8e#$oMC)O_$-q`fH9t@o&b*Z6kvz@*G^g5NkiFdHQB6gTOUt}# zcA*wfM7V)(t2`i`sQdYK@mPQrz2NzYPpQsx3OhY{>bmcC9MsZX%wZ6k zXyG!}0>m-LQuaCwjS}F;3R+}j=#9%JH6L5m#T)&Wr_iS53fU%su0ec4;ad(@b7ru4{I1J(a-Fo)KISP!heIQTeAi zMJ%Phwr>ePpkLD$%J)lCw>v$z^7Y0gi9Ok@N6SdPS$Fdcovzx#*P~^RM_v>q!~Zpb z`1(|&a+=1~!WVqsR^oZ1FoNXro20bbZRWZg>ZaAJfajGm;qLuj&izFIqyo5dR4V=M zsqtdK%x#Tku=#(G(EL}vM=%Z?{nI0V6?L<*;l=GPX$1Sy|>7>nF zXDzZuf*8^lw_o$|7-onQd5z)1PPR+JO>B53K(AX(`yg5v9XarUYvU1GkcIPj@`9XM zNs>a%AP(rq?swa@J6MFp6-|@HH+@n;hL1nb=RJMbY;R@Hg(!;xsR z0n?S!6)d4$tkZgn0WjZ){B$KKx}zYx|gFCEQ^%|B&D4~7q*6*NlSD-ERwkQ4`gml<;wC=bGA$x|)U{72$GNb?6{h!Vy!H6LCkc>^&9(?1k_$@XKd-HI zR)Y@LCsqXkmLuzH2>_)=dHuyv3C49B<52N}xB+Z5V?#cSRj<{Pnr^aQRvR1Bnz%tD zGij<}WWGUAw`b`Mb{kMHk%gR;h#To_7+Q_wsEQ4g38f2F)8VtO z2m}ewT6w?q$|MR!e8iUlza3Z-o-d{S-St~W#(+c?{LI@oYI-E}i$6~>({~K}g?t;% z=5b(Ds?Sl;K`KI)BNJc9NG)ne3hu9awkHrwzTEqhD}9wUEEv$|FTQM8((*MG*8iJ%oa$)Rlx0Gc>`4HMFCN4JfR-3HQ>?c z5~`YkKD2@1>3;MJc7!4PK4Ut}{5oTD7n+Pr3zyq`*bC9v8jXG|#Je~ySBaw7*pwfJ ziri0rj-nAB7W?gSUmGOc%^jQzj)&MwR8XS~?FgF|f>)iD5Wl?AuThotEP`ZFX1g*L zmJP#kBw9Z&$wiSf8OLBWw9=>Xd37oNMs=H#PBddEbOZ8(;*q@QP$tI*kDJC&O*xPZ z4r)QLT^v(T7MbK*Z!)31)h-)h+LSw;iY#^wRY;Z95$j|AC!#>giVh8nJ(CCFmN2oL zGMy|spn@{0T*e<*OlT85-7i)+)lCuneOVnytEuUakfIp~r$Gl;)aXz8KP6MSs>lHA zJ4K$N-aNN>3i!6aMFD0Q+CHV(%Bck(VBAwbGWx7;EWln!TQLW&U9RB z>%y|1o;JbK+V~SoLbkJ|2*UjB_o0cCu_fgz&|gr&B*$+QzCy!)K8ML=uqHP_6+uRD z;l)NAotuu(E;&SWTchh5yfB!@bj=hkt%6B`U3QQphHRAuhgR1M&*HH=90NjR4|~%mD0*4x*R5%Crj*qYIiH9{)gN zw!o{FL;&Olch01FzVqln^0~)H7;k{xuOb=c8f0F#1JXP}MU#RI-u>$=1t=&|Y)M>L z1imYO1?PTIS`|?Yr1R*r(op_@4}VN&3dVsHmVy>qxra>Nx@VF9a>dzm4_uUMiL}J- zL*8JS#B*UGm*S!>N8>BtM{uQ)uUTpnk3r%~{}ASlfz;Z)*3?^ggO+NIF=jB$sD_$F zD3HsAWSIGbd4!nDTC#}9*LYV_v%D^xSWA;=@CL*ac&u7z?FeZikzxWZvQAwap-|(u zIE?Z)7qPbEJ%Z9J1r9plcJ0j^ok-_fnEt_~s`LntDfPWuvoY+mK_1LTG+AQsN7#xZ z<^1j~!s{2*2LK-lv`{apMCwNddgd)73q#=VizMB_yu5RE7Dj)8VoaHWLLeWW2op-h zH4yoyy#j#*y2TPP&7N}+y5m;VGQ*@2Q}_e8-Tji%S$yf{7|c3p<>EqAdq2ZX;*;f- zwx^KD1s4=}mk!_q4f>9p7nH)tN%{yi`NCz+N32hUv+U!H^^TN)C!AuVxCGDSut=cZ z&q>+#P;l{&7ZtuRp7zyeGdA#PrlR0|YLc#ow$?p}c>RY0#E2?>Wz~5VxE-oQvqmuA zs<1eh?e$%g+A^cMc_9NZ*ZlPRwp3#3GYXGxyQ(UCB=Z`QIXK8(*_WY+GE|4T+Ct?*ruRz5?1)TC7uHtQUtiYwI&P$T!$m2F2A#oU-t zM>o&ck=;UOduln(yx<0Tl2h!mQdi4D)y(Tdqb$69xhk~TPrh9(rzU?qXa!927Hi?i z1!LBsW26k*ajcboH^Ju!FY*!$$LXra6dHofvvF?tkzmn=e(%%dTMk*vTt$1gzk+P6 zNc1M5jDe$tZ<%s@adHd;emb?J=n)&()hU$W6c*eV^KE{%kur1nT5QPZ@afkou3wBu zdAb6WhB@u_LDZoVa6B9r%}(VXgP17;;8SX+lP#!w5+*D=ERNl&CzI>7cfXgfOV{Pr zEEtl=P^djm`_1e~{yOv>j}Q3WbwUjgD+;d~3P7n%23T)A*S$9*FiKQrX#FcJWRA5U zHm)n*rAorwv}{bm?AKVi=Z>4dsjaAhv-1@wgl+(dA#aaB#vr|z8i@_EiI)yxFQR}u zYMiP(v%A+bqzbhA(8*(-=jH3IGF^w1Q}ur3D!wkZbKT&iw1~$yiDQ%XLbqDQ|0He_ zVL9Fdcgh49q!gGqEyxa*)GiVPlwp4)?5?O;zAI>_zGjFUVJ7IYa8x&SEQBECgVu}_ zOshNuIvEB6QnC^h;MW>ewJTw6D02`smsiAJ=o~ZBd&N54L9m4%F7GO*q7ouQF=#5 zzYdQx|9iZaQjT1DNwCP+7Z5$QC5?T-AFn+uFcg+tck`SF;S!(_l;MT7LRGv$M{d;5 zKi4ahQ3;L8?&vU~w;a;45;YIHS?dZ1egE1(U9oyYq=f}B9>X9wQRW3n@JRCAS3s)o zz|7i+3?o)ne_u24vi9V)FK#s{NO7j4`$oCyt>Q5X5O|((5B_N(SN5WgrTqXEA4eoJ zV7Vvqw^#~EmWWabF1x4(zEMXtP1@nDjU}5C zO6uBq<#-+H9+wn-h?S7%;ly#dptiiKM#Nx4EcQ@t<`t)`T+N9(!vR#**ch-Cv0 zgA#77^As++YX`;*J)QbbHfd;OT^3Bz)?zLNJyXiJjGUH^)}AOe!d|5sN!{5 z4|u|$&y;CFvE9T3E=Kb3Ny~G|wT_T9!+Jf(+vINA%Y4ib6#3V|q37O^&!N>;6H1ow zt?*L$PwhUvnf~YyIVXZZvk*=NNnnak^KKhgO=p=W z;ABCM1twc#iT|D+Hs(q86wc|!XgI;yu zwqZa7au+u7Q6{zp+U=;;uYz05jEljE+ zWj)cbqINx?wRN*Cd2Z7wMlSV}j!k%&OkR)oKuX)E_Obt|UGN-N(BG<(4({X#*s~51 z)}$%I5fPB>0n3QQom-?nBLS8s84jD3sFvV`4I=w{>~1^8d5Q6_l*g72$HeHm!c_Pd zOM?|_`?Wp!XM~x3VrGYfR%DS0po;0I!`a{Im?(i}NI>`iR(=f;a|a4lFHb7g+JXc= zPNo)d)STWH6NnJA8nVH#jE`9a$)GO0n>5Q_&dAdCBj~A6MxwTYUbWN1`So_$Yx!AN zv_WjmMOy&Tz$=cfH+%|=1W&QCyTM9ed@nnBTfVRKTgxavp&gp#+!m^<4SB~%O;T-@ zZ{QeJHDg>RTv0@p=)_IRg(T}fwwgMUwQwmpd z$>U|+CRCARVoOQYyvEiO26`S9ZWF8Lb{xqj*cX9gm+tAz6yp$Y;47d_^6xuVzZ%rl zGMq)@;Dz5AamJF6QOKAEV!h&k$G)X>U>f=w0{jkxa|0wD>x_IP?N7Y@5}=Z$1ItebEPNql|{u^S%* zA4P+i58zC!!{Y5;iB3Y6!R~%!uge_k@W?&?DS;=!tQB4m?x6t~Cb!A#*`e$(k8v;0 zgfDB{zb%*u8ZMI{5bG%kM_7`nfPPS&y?V)hlZ>xC?|Wk*k=hNJRweRdE?`PqL`q{xmfg=QV&3 zBS;Ra27x=ob0mv^lSmcwsa^}@372#Ao*VM^h0>G_V-OeV?;CT{hSfWFym^th8w70| zk1^{_e+@f1J}=640QDKNZD=Brr;mYX$Jp_G{uGNiVA;on3)*3!YJ3$Ax!#v(uG|~= z)FA{Q)p0}^l$}G|p)yayGH?pWRikvYac?4YCo(OFisQkqix|_AO{Wfq!*gbQa$TVr zxvsA;xzJc`zMYb?*m+ZvdjnlyMy9H2H)~w~~~L>xF~8BqW7Q_V~&&qzD}mq z?}FS}^B3ZJN*%T_AZh~I@I><`a&H`BjNjNpe9uPi@WCpl&8iL8QZekHtNZZ-F@ z8{~o??T9Fmeef?jVgbPQCAF|_TP__^{n|Z#d{b=C(Iq}penL+TP+_k zRRpW)8GYFdcDxOPtM6mcapt5gCQ*3W`QC~Kf>dtzY;=};A?Km0{czK=X@ktd5pDIz zGyGAerz;@V%edz7Cz>i<8`X;?!HK*Gqq&zEz;j@y;=p(cpYXCrEcnbopwSHj%>ka1 z^}J43$V`lrwf}Y5=$jkQ`&r1a5qa#?x1RX$V~xU(yEu;IZ&e)aaw45fT6i*g zhZgDal8&w#;Ztvj0kGitTQ#MqM4Ld}Kq|y9l1ipOo^!f2MOCF+pcERhSQlMYKVZjQ zzKjQ5LtPyoSO|Ya8=AYthK{8y|G;Ai9c9dCl9-x|nYCQ36Yr88o5ZUxlZ_FC!yhK> z=L0pk8N(<18>MoeCF}28#|rpT%!;9SJ$#tQC;hU1aW(%=pmnOgo~;wWXEjan435K*n2y=UAZ@7(=5G z+CYezKEs<}Tp=Kgga00%bPrz|t`&I^yD5cdPQd;UwrT1xao}=T#o-f&42rc^JSfq< zfgK6TXMz)?iqdzP5|>|RC!ZCGe$YlUgoXjrv9Cd&Z3}q@i7l@9axf;2eM}?HrCxUH ziexvJXRYD(tm4mcM;vt`*DjQl_-2J4`lj+ZRK}y$(a20fH7 zK@R_sMB1j^q_QG|aYEJ2K$pjKs3msT_D7Ia&m}F>{$z1qD9q5AdOus7-$0KpmUASP z1FNPw7Q6w=)N*)Zp@w|b1FbKUS{)*r>f*=>7P1Ahe{%Zm2sPxGz>N|^YS00SGX(OXaNcHW{>J`B@Ekv z4~?HkMZ~`fz7?oKKj{advWXkDCCA#EvSI*m=q0L?0UVXyWEmIwKo*_iKdB=q)4VXq zTUUi)hN>Nmsr*q)lEid3ml-iD>o%OqFQ@jLXMEEu>|`igxIicMMSS24{o=9Bv2cX} zh%p`0XEs!kX*R5-MJ?H!M!8Iz6(pv0snQ9EEkaJS-|~&ck3kE>MKPzg<)C9oN-cLF z;eNzS!IeHiiUVqgPtMf+d@|YkUUU8ecJi4k5x4Y9nx+t!<*XjUCcybkonBvTSFPch zM*PrM2j&I*QpYnWRp{sW=Z4Gm1A(i;w&p>}Cw7(m1N1|}n zbpCoiC%6@6o&|KNew{V;QAn#Hv*-hp&^iZ~@d52FC5K2EY6|&`fVfra&j0D{lY!TW z&pDSv*3?gVTy7g7hirp|f3`9FI)}NcTRH2sT0y*kl{WYPcBZrxyVSz*`SiGj`*S(< zM_G&AImiqX_{Yy=wI5cF$PL-?+6WId$v{_vB_-7acWK!EE=z{Ka~_avNYD!zxYZF= z-fbS@?Ks|4Y0Wan+gUhEuWvHqu>M2fA1BfTlUaQl;ZUL{*HWNOT;z6a(Fzn|?t$w7 zL?cOtA9Ew<1x|Ps$O(mnsldCg1e8I(O717C87Ulg!chZFASa}^z6fyMOnLfb>^Y&H zVe0Qu5v)vQ)?XGA8_lcdC?_(c+amG1U)s{N)`rC5sfXc+o6%@c9*jErLNktZ4{J>! z@J=yAc9|;y3K$t3j=O@hI68Z#49n{4Czj!OYlewUx8TySF(1!*4E1BH`G$A^t4Pgc zANckw(u-uR==0rELUFw)SRJEu0w3k2ousT(l>L=nX=YAZEUTtx_7(DaXvqQVwb){g zsrWz0mgg_w2BINLEtpC6iI}1DInuP&>LvH^j_T#4N$J|OyFw1?V)4~J;!XZX#TsDI zGpifTa-7ZM95*;9rhVC7Fo)pNXNlzpXs4$W*l<|@1Gd4E6WZ1{96P_OJUfCLX5LoF zgzU-%wYo@+1Agx(QxzdvO} zN?tQ7>80G7+HWPMXnH;+n^BlxDx$huxz5=ZdCZ|`3xm#=8~HERa;(=p%j^YNL+Q>& zZfvjSt1?y-11&jFz^+JlxxITfsR+%x81B94ln||$mHv#Mc@K27OpX=n5MEth2O^+r z(93!`wET9Y+UF3x;fS9i2H*=SrBupiV)V=N?6QxHMBkmRI?cF1hLpTSt>jF&i`>>m zMF}-Y#_^#@s+h%Z9zMS{X>5}n-iB2uigL4yM#(DOJ015Ryy;jVMBDxKTS|JyE< z$eHmQgiB};Qxnpn4uWk^_q!7x8)UcEy%^N}klmmzVi-kJ4!*+J^fp(j$((0FNd=O#vK6ScVd+e7czGVpJ1lkz#> zpYm3kW^urWELXlNE}nxqlF@gvhf>A7VcW_w<1qTnFO8uL2e=sw0)_}h4GK_t7~@dt z$b9y@azJt18cny01s*-N(?1X4trooD9hvzZk^McQHh8{+&D?s=LUC*yIy?hQp*1s* zZeFH@c6EfL?bA3fM8H(H{W4cWucV#fDwMnpLFiSa(4>?n)cR@3n1R2Re~Yq+R(;w9 z7_A|&@_qIIa&MZbqPl5=aXF3QEff`CM(4SpPN%2@ z8PL8$qJtD@+4L3Hz5GW5kO;}3QD=VIs}bQMf0$r)`IXkaK3JMJ!C3k&vH%RBPwuR( zl^Lp4Xy1{^4qQs?mk;e*0_W}hJ9YwjM==n@fhfhcoRh9!U1M*5*&F(FLX4)oyTpp@ zB>{e1cFZk-H_KzxfAy`*qc5d|45sMVv5ONQQu~Bva2447>MI)QC_0WU9nT$yPYG0= zKHsRj-`rD4WJRQF&VS^>`<`k6(W*?U{Pa%k5^OkKhrLs&bswq{LoO#?9?rdIF3ib> z5wXcFre0H2K2}X0nSRKKK(tGWDeKhXZP5AfPyTq1nKJ1B?N8&EG4}mc7$Z@@ zELlvm2so&?A6}o>O6^d?pkT;r`6#rmQ?Q`g$hW17i!i2|9FRYncOLEER${Lu$`ylJ zbE!d;+x-Bn3oc;UGp+!n{pVTU*Px1XZnDh4{#W`FXbtQ{;Yp3cZP2nVU$xA3^keUo zK`3uHPte7Xd8fzTV1Nh0lJd?6B&J3kQmU~mR4N|XOS`t)ZAcbq^1re7kFl0U(ZVjc zZQC|#+eU5Mwr$(CZ5y?1+qP}H>vYoT+nt*)=iHp{p4_C?&-G^}bB%Y*ImUR`^Q@bw z`Uvg&h35yaPHAyvFLMFDwv)Y$%&Vo6n(76Xy`+@oPQbHw04a7w+Mwr*@Z}bfedS$0 zzF4UC1-}sQ-+jJVO!S=9@k`II`;cCImr&rT4?Q*&AK39Y#m}vx66-Iboa7D5a*N7BCq&;P z_LC11tq%IVDneuoOdSOU)v^*MS8FW-@NWm+d%odg&5lfIjmWnzbftR??k7{3w&kL~ zq+FN8zPBW!*L2^Vj`KiK5Oq&!)4qP);kQZP?*10hmgIbZGw*Ba@nxw!=~jBYSs3S! zuCzW>NE>qMsG46Muv;5rbHxW@KNsFRxsPhCqEvABF)ZP09drb7OwXzf{qkB6dtv9!oWN}77Bib z8=KK`N~3o|o}11WZfak=;UKlClkPQBxJ*SDuL$}D2CN0-GJzN!r!T8_Hly-|I{ZNM z*#0(Xq7tBI9vY|~CdqVZn)vsUpTVeSXYeb#F1s)v`TLw{wt&61J0`BgfLC@t0v1({ z+5;UPqyVC^bsf<4mS@thJ>qOzz7-w4tjiybR6ty+nMeZUZt?bT4W#>ZJ1ch%A6p@Z z38LvCTN2<|G0(_{0Rzygq{tdCB~w;sy(Lg={A*mf7FI)(%^iHl`vv0!RwBI|IwN_H zZYOKt8;ndy_3n3)dLesZOqXZFKbL0eN-wKRtAn>b%=!cH;{A5e`v?tJ%+H;oNC(65 zq;ncL?m|fKc>%e45di#;dDMY;dde=?DH)zTI!f~S_$0Wuj2TF#+d@u2ucKw0YW+qM z07P20Tx`4(0E3w&>mh`QhaJw1*sa5E!WPkWPp%>Q?ruqZH-IZvfsLx}nG6E^+cG8y z=`^=mrSuXbaQ6G5VN)`^#xRDBV;1etIPqmmfaE zk8PqY;BHGh+Xf&AOA+^nhYOmo>)j`%9Z{xu+Q5D&pE1PmrV zZf{hT=;f|&a@|6VCt^R!#u0%Fed~Ux!>DE>F=(FU8{^#8gin4TenEz`8g)5mg8M-w zuC`9)BWk*mO=n?~$ydMX-=neqB-L&26HsybYbNmd+?6LEG<`YzUT(Fi{3kcDfN9J zR&oJifZZm({KWaWXj+*?cZ4W#j3VF{>i2^&3h$-1iLTk)^W6CB^IX#V)K;xt+4hn1 zIY-il+`*kV;F!#WNrr!r@GSSTwO6oZV_(8>IU$UI4{+J56#1`g?&zY(@w8UULRc@t z0z3?g3e&yAx2M(Kp~I(Pa#0n+T!!~RU7uwa*sg6rgGcj---%!VH{@}ub=A;MMiwxb zp$sG%;zQGa0pdcv9WRi0*R2GG?l1l#X&lVy+8cITd8c}ZRF~SfyG2rz%y^;y2?<3q z^a*XjKh%5a?N!UhP7?3K_qo6FeL(b#p{IIILNm2OULWz95Rt~>2-j5llG@K=34Lr@ z6X)&wrLpRix7ckH_P%RMz(Buh1mn3{tgd z%xv}h;TdP6loZi@1uKOF>iY7xP{nv&vrYpew=8>|Wx9=^T5uEPgKvJSp};gY+K7$H z5dKw_0W!Qjr7oqZ#0Dy@wB*h>dL>0Yya#9!+38(0jZxYPSTuExI}-qX(b6v2h?-Pn z1-_>&y;5GqmFi~#Q?=e+3p|(%J6?lAi=-fn3hR}akMl|foXxhgcA7II9T!mk3RoP5 z!p5_&yRWrF6C{ zr{?Is{`{26>>@@8V6%%yhpyO8A(*%@(g$8FCgqF*ep= zh#t95r2WgTgCOXjulO=8qWnWa$%3uoq|Z@98@Sh*(1N6}X&g9D8ug`@7b`tFJ%aX1 z4^AN{%Il?7#HpVm-xq)9D(uK9n9rV2@Y3=np@lyTO09HiNEDYdidbsYHoGC^r91fi z>BY6F#ZIM+%3WGw*K%kJfOFvNI_s<#*=`5rvvFS}e()|KYxTzfDlYxaend}cMQQfH zIZ69a%opLut7GEI5ay z@-unH9QAyKaYwb=(A?G-1mu#SNT`GL10rTYg8|T2A)}QN!-Iu=YyJD}*1T(A zg5&cG+1O0UK7O5wu z?Yb>Gs@pkp(zHP0D*h%Gl#axWPMwv&3mdQoic(~4(CKC71iSEBK{$iwwbf$EWs6b8 zU{`|2WiC6}+GeapQm&K=@iix){vK=kyZbR0PFHT%lG(+mbKdqpN{Kb-brp zw|YdLx0BIR^UU?qH%5na89!2? z*sD3}DAGAn&whn|bxbA=Gl=8>9KX%ux^?`(zDbf2A5uO>7ngcjC|AJS@{k~eqz18K zlp;0Hv09Qf3*zS1?-9NgG7+~6rBj^+#<5Oz(XT}@8{W_esUwhGR%{!Y;0fLGW#!$5 zna>w zzBT3{j)|WF88IfpOb(+D?J7fZHS4P8;3&Ht%FFndO_Aa?;lTJ4ZX^`aLx*!J? zEXy{G*@O|iYSdG^xmE}p?ZgcZ}p%4G_r|Lgarh|CnIvA_#3Z@~G zw4}hpj`nL?-){yHDaf4;W%&YgUhoaj;3P3H+^a49h zMsZ(tf7(&-4^`XqsrAe>FjpDe9S>*uSxUyZH|~JncF;A@`{E0r!th}biJ-_>> zD|(;K@+?n|6zkso_n$J}QNj8Xv*gxoXznLrcvUXtk;2G?$4|7+xK3F;D>Kr6#8cVS z`#4+m%%cIp3e+w7J>f3tZXdrGtDbib_IYs+7 zaMujGzn-$Qnt`kIGaSesv`eR-Jr2R9M*=7@!v_L*eVsA!4Jd;_Zg%KrV(XtiVX|YJ zbjEn;j3ct_KK3tj{1xb~jpqAzZ#DP0Pxb{fnLGJ~(RXj#X%qY5l=-sXSDQ+|^TD3; zn!^=?BiXOy4c5|&&|g@z{6aGMW3}H(--&W5#*|VX9?CGu7E_PurJpOu!5vXrd1q7L242?G7q(?Z-Y;o$4PAkUHg}T*Y{E~k-1TY z8PMg7Vx3|7*5hIU*fcqyp|6UZ`wsumD0$CJ^0KUQZ}VZKxM`2d;ZJO`1{^TXGm1Y> z$WFf2Su#$>tu7&*wr@&nJeQ1|#h&S}ei6;=%;hY~&aTuIxU~)+Kl(2C)syt`jV|?O zs>U<=DzgvF&q5BH9Z_^Ob)O=M5ej^kT=f>Ywb4lG$%y-KU{t(dt^5&P(b`2Y(MWBx zod$2a$5PUGQ+07=_QS6 z&EyfN8@syVzX&H0q{7kPUaR)1h`a#ZQF;IZV)C4yx`K8T*-R(kgUfGf zmmjqd*hQoN9SD4e1L~0`Fa2k~r({R**7ZVB!~H2>Z=iiwXsu4qSxB?9pYak>RqMLT zSB&@1H)r%TCYA@&4QWipukB;@k5ZOJ>70y~+VW^dGQrhGCfwZ}$e44CGYvBa6fjCS ztgTgS4^VL+X$%INtNUuFqX~2u1nwxqUNYsEpYf;-{$vNlZ-M^A3i?HVh4Me+V3c+* zUl6@^B6!2gXQGab`l=~CLZ16BG*dUN2G|S_+2qZy-xk5j97(!$wTR zmL0Y9Tom2JKWaI=Sjw&Vzi2LoWv7Q!ZuFGUnW@8wLjYOKj$nX~zBMq_JD@aFmI-O( z4nWbbrBV=p6uqP_ei8WK67d?=w7*R=4*ByBNpe!gee%bHQ0kW`FCtW7`o996?5iUe zszq{0tYsD@gUN8)K5m{b*MXr8UXCU1>Qa~v{BuT;Iv9;_` z`9z{KC~0)#E>oipD>pXdr(PNlRl1#~^ir+Q>v_aA7EmA@bq?#$XTy9ciz>IoLO1~- z4Cu1EdFiY?0O$slYd)egMd^`V@34VrrXC7*kdjiQM7&R|pX8-SKaq`0@Bj>c%1~N+<(_u)?IZRqR_GzB z@X_s+apnh+fQHr|155g?^;9X9O18~3HC`GuFj>ndk4+B>K^x@ZeLU;jJh69v*|%OX z$(&d5MbdESNz;-Do8Nll@8B6d9lZCR|6#X%bSZ8iOUFa~P9?$z&hkaqPGW}70&&}n&R2C#w#4!F9T=6=zIe`_w2C zkC6f^k?g6IG5K?WerIqq+qF=U3Id=^Q8s?12kBNC;rvI0<01+^r96U?7?D}MAHw%FxOeH}oHUABZz4f?C|x>L zXaA8reB`yq{q4e5@ymEW?5Fk%xe@=cHm0h*SH;-5m?nYqN726Ki*WtLwGjD{`e6Ch z4h(N5y<=3%gCBMPK5gX`kfNKwN7?iWRIErOq-bExr$mZFxG{*zznYIqFMyk~Qo z*W>eg600pJf7$voFH#lu(32axNT*@^8(!#XB{7|lmx`@AYpM{n&mDvPAyLK>HC#YF z5VJU_L6-Uq?$jt&iLlM{$l0BBYzqFkz_1^IgTO6kZa(7J?)47j^=&yr4LQzGyLU>E zp2iwL+MP5#B&i$Mc&<7S&2|%A4h|r@Ls`@(RRv_-8>OKDjL-WTN(zy)k}vv{{8qj8 zywBVze6W3f4+Ji_aC0U(`KqAJwaGE^5N{>ez?@4%4V0ZHahqf1_ViIvHhW^CCr{*t zhV;V88aEsJLIFKuG84uM%8<_qZ?#)!Y5~FJx?z|-Q)rjfBZ?LiE~Zp#T;VY|t)IFo zD8FspAXxJ-p89h}<*5&z++caV?nq{GpyK*>Id2snRKeucgK2i-q$RSLr<6M`;og)* z4>bXbX*|S^J;J_E07^xFnJ;7Jw)<~#a}B?f?6Yed_*eo6wLKHzql3GkemH@+<1*FX z&8>FV(wE#`yZvjn!Bo4O@EGUkI|!mmb9Bzs$_rsH<&9DykaJ9u`2#UVK(429JynXX zK@!YL5Jhrraia8kN(#z9Cu;r!7)CJ>T>=Tc8)zaq7|aL{oXJ@>Wp6Xg0c9w}WUy8| z!$*QK*m2uCMz7Y0wDaiD{6$20wkRms06HLW<6U6y6t|1aeKKo8@lmb=M{t9+_&5); zks;ywO27txUxI_(e?u`0T_9fu#}2ibAvaX?bk4rp(8;2s2sFX(8EfWxanT=lcB5#C4|6$E}3 z+BL?u)mSy=AfM$7o@TnFw;^G1&xka#@~Si2DRU`%jZ-mPnWj?FPr8`EwYi5RC-%DF zBYhjnO_^E;UMb1fg8Q|w(=feLi9oRNTd+oC?f%VCEV^rpKW4A;$}}hP-OA{bUtNX# zZ<^7~82rBRa(r$aZg;|uc$Q$no~w_FI{Jk#A&gQWOlgZHMPJROvD=IL6j$At6)E0f zpw-ULTxJA$_zt@+RNpTCT;mvTkivYNrl>{ZcrL8lCPIjqN^jU;6r4ZXD?U6(?O8+; zvQu#DHnTBi=7rS2?A<^#lZ<$$PkCrbqn&kxtV;<8BDT1-P32y`&~Fpa@XID;`&`QC z=}HTWK~V4`Z{H7g#=c->o&-0gYrW^1Y;})$hynk)ZJO-*307wKxx`D0pbvmy#H+X= z=2nG$V0Eaje0Dm_D$zmMoq4us`JBHWSY(|MYRI90W2_4$pwS|yDO`NyOvy;_?s@=8=JuxfWp{B@Qela78{9k__iMR$yBNM*w%bJ zra+A}&_oW+O%a5|wkl|LKjmBk>w5QGcX(CAPLf`6a;s{P(z;0T%qRBY0QUJo<}ywQ zv5S+T9gNDN2xw%{{b`o{!P*)x4P1%==nYA{6y0OlwIe%C*CL8$WUmIGiC%k?tqMR? zeEiQ9@Gi(0kEInZfHB4Ok;V_wA@fp0Qv4&Dhpa%$vz#DAJAG(p=7eHsrOY7&jYQT{ zV~nUtckai^TGk*E{QmaU5INRDq;9di%3dHNYqA%Sj9XnsNVpt z*wcY{T%pqJ?GHi;1Pz2~7yNh@c%T}P^7pbTFFaS@+yafOm&022(H^R-8MUJmQLT3% zhB&e}g26QHYk0wwSTUXi#(e=IS5L@O?`TdeevWi466Gn|SY0caLvigE20Ob(7#)}Z zzk#3B-jTVap&C+ZAPhaGs8|pIkAMXXX8=!)FQ=fPYY2 zL}oe!&YNx;r#*C7btEN{mG&!~j)1A=l?QJVjV}{lQ;xl{geY$-KR_#rg}DZVbGL`i z%6Bsp>2WM~QFGpEh*xg1Rspy0K`MfW`gVvs(dHuddbNB&D|W@nXx3EbjD+EERVP;& z^DhFp&VxU4?WpC(lKnQdctHyc(cp{5AUybWp*a~`4hZ;sj2|cco}rGa1_@gH770Fgf*}YYME6``n zMjgs@F`y`5+7_3P6O>^EPGM~_mQg>T_Mg00Rgy?FXwX(kWJ-&U+J6Kc%$$D>8A)8v z#v+}=x&wMU=E>OGD~VHqqHh2&F!xzSEXJMtj11KPjsiq=7M|r0m;dIkK3rPwoom|} zh)$3#`)-^YeS`<7=N?^-_1M?ltlrM0{w|ju*{8sbcTzghh|$q`p_}00U@9|WdZ;x9fnV;g<#4k!3Z&uX6 zDSG$7qt#MuAWo8ywLtcp7-}`A5%BNf|sC_XP!EC3=i%DRP?6Q&b1CPAGuQ2#9z;V5@ zE)1zD0KQLdF>OBKn7y*6eQcWi`?A(tIO!yA7ihwDx<<3Ob2mgWT3ugKc;2d`31wMA4rSUFyP3*BC@!~nbIaV8L~0SQ~W)Ez*{bh$*nwqqb7 z5hqyeVr#V*E)QbEvZK-mEj25IfpRJMOzA|rBYdiF`A(PHswEJYy~NE*G$ytJ0OS&O zJ#9lFA*)n$rSfk^8s(I$FY(Xnbk^VQFK7VpRa#$Rg!yn3WIbq(t++N@)@}$eCe{qW zYdEtU&i0O^vp$4)3%JVqwA$)}Roj>Iy%Bzu36fKlBag!!9jJvUrF&H+GaK2h536^e2x) z)%;U5p}xcu)t9NPPT_W?buRd1LK=!cvDH=7Xg*1YRKAfzx zG#QrfmQH>vJwp#qO#^+`^(aFoO7MdSIs@7?8^qd3u$_+s@ZR0^LQ!)=soho}D=#%AiCQs^-qbh>fS#v{qy zUX2|Q<3GYThY_zc?;Tlz1}iqPzNvL{o$*YL@^F4)!RpsQ%WtZW*6uNndbeHWj%4Rk z*bXLAtLal+CR;ddtv_oK!3GUs^JpEk>SfE%y5Kl6X)q`+oKPmXtY<9Gk02`(C-vBv zud94~p;E4wRVeRhe^CyuTpgxxXM9Rw8TcEc4%$_gm zrSs`rdjtg*HF$Gc}hV^MEsscP}g2)#~bhsa6i!3QF$G!ROSIAMKenGimv5Tjn z!oHU>dxf6@F#J84tXj#1Zr0JNMbi8#Sb~+A5Z{c1v|lSRxZ4g{N0P<6-rCn1b?rv9 z;7GV4bh%DP5L`)=x@?_50zZ-3zni+w*y|02DfI@6>akAS=+fu@>YKixs+F9GLqNv2j1A)fz!gMV zBm*9`H=)16%;|}nc|!0#P# zkq^(BJqI!ZWcpd{a1f+NA#x zYO@7Z?CW~*|dYM!?T$Qg~g|8`+#I{W9Q0Ae^ko1XeqjT8` zJd2lr?^;`y2h30g>X`1MhQtt<@_N~OfB)kxvUU9b~J*)ctzck$zS6fp$tyH$)kus?;{U{*$d5b0>ixqEdwiw)v03|4en>m?+J#fdAHB30`CX6g?Y%MgAYkjp7|9mH9$FBPp-W=Pqb zF_g4x^9TyQ|BbK1eK4W-I6$@RAI%&S4SH*Nff!RIKBWdp5YtSUEOHMa5;a-LV%H7~ zLZ0q8CnVhi?zKOTx|9AE81>(5oiPUeAL zH4UmQ5ABq`QS^bvLmcF+1+V(m*)E&KnsYSjDc4|!k*`E7&_39ACp%meJXKC4=sIfB zHK3Du%G-9nxBUv>*77FQ^jjgGI%w|i1jg~RvMv`2vG2IXhph7x3Jvj6(g#9}HBUm} ztWh+jp6bNIR)T#u)K@zcDtw^0;i#y>ffC`HC2EA5NO4RrkEEqcf{|-APn;U2!

w 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%0AN0ohKrpnAgFA8)yf9N+F|8l=v^pyOr71HYkx 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¬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 From 994b6544fa50e7e12e8929bf9a2ff6428b5aea26 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 27 Jun 2026 22:25:41 +0200 Subject: [PATCH 153/244] integrity: Fix wrong test for shift overflow The test for overflow should use uint32_t, also the real calculation should explicitly use destination int type. Otherwise shift could overflow causing UB. Fix oss-fuzz issue 528489064 --- lib/integrity/integrity.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/integrity/integrity.c b/lib/integrity/integrity.c index c1e050acf..92da41ffb 100644 --- a/lib/integrity/integrity.c +++ b/lib/integrity/integrity.c @@ -51,7 +51,7 @@ static int INTEGRITY_read_superblock(struct crypt_device *cd, sb->version, device_path(device)); r = -EINVAL; } else { - if ((int)sb->log2_sectors_per_block + SECTOR_SHIFT >= 32) { + if ((uint32_t)sb->log2_sectors_per_block + SECTOR_SHIFT >= 32) { log_dbg(cd, "dm-integrity log2_sectors_per_block overflow"); return -EINVAL; } @@ -78,7 +78,7 @@ int INTEGRITY_read_sb(struct crypt_device *cd, return r; if (params) { - params->sector_size = SECTOR_SIZE << sb.log2_sectors_per_block; + params->sector_size = (uint32_t)SECTOR_SIZE << sb.log2_sectors_per_block; params->tag_size = sb.integrity_tag_size; } From fd9384867e1b522a010910113716504f8746e85e Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Mon, 29 Jun 2026 22:07:29 +0200 Subject: [PATCH 154/244] Update Readme.md --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 385efdd9b..271e52ab5 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,12 @@ Download Release notes and tarballs are available at [kernel.org](https://cdn.kernel.org/pub/linux/utils/cryptsetup/). +**The latest cryptsetup release candidate version is 2.8.7-rc1** + * [cryptsetup-2.8.7-rc1.tar.xz](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/cryptsetup-2.8.7-rc1.tar.xz) + * Signature [cryptsetup-2.8.7-rc1.tar.sign](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/cryptsetup-2.8.7-rc1.tar.sign) + _(You need to decompress file first to check signature.)_ + * [Cryptsetup 2.8.7-rc1 Release Notes](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/v2.8.7-rc1-ReleaseNotes). + **The latest stable cryptsetup release version is 2.8.6** * [cryptsetup-2.8.6.tar.xz](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/cryptsetup-2.8.6.tar.xz) * Signature [cryptsetup-2.8.6.tar.sign](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/cryptsetup-2.8.6.tar.sign) From 38f95b7001c7680d29093e2a73aa389467deb9a0 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Mon, 29 Jun 2026 22:34:41 +0200 Subject: [PATCH 155/244] Add Release notes for 2.8.7-rc1 from stable branch. --- docs/v2.8.7-rc1-ReleaseNotes | 93 ++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 docs/v2.8.7-rc1-ReleaseNotes diff --git a/docs/v2.8.7-rc1-ReleaseNotes b/docs/v2.8.7-rc1-ReleaseNotes new file mode 100644 index 000000000..faf5a0dd7 --- /dev/null +++ b/docs/v2.8.7-rc1-ReleaseNotes @@ -0,0 +1,93 @@ +Cryptsetup 2.8.7-rc1 Release Notes +================================== +Stable bug-fix release candidate that solves several compatibility issues. + +All users of cryptsetup must upgrade to this version. + +Changes since version 2.8.6 +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* Changes related to Linux kernel AF_ALG crypto userspace interface deprecation + Linux kernel maintainers decided to deprecate the AF_ALG interface, which was heavily used + by cryptsetup, with the plan to remove it (or severely limit it) for security reasons. + Libcryptsetup uses userspace (primarily via AF_ALG) for processing LUKS keyslots and for on-disk + metadata handling for other formats. Using AF_ALG ensured that the same set of algorithms + is present in userspace and later in-kernel for device activation. + + While libcryptsetup has a concept of fallback to userspace library, it was not used in + all situations. + + In this version, libcryptsetup can use a userspace crypto library, AF_ALG (if present), and + in some situations (LUKS keyslots), fallback to a temporary dm-crypt mapping. The last option + requires root privileges. This ensures that most operations will continue to work even when + AF_ALG is disabled or limited. + + Unfortunately, removing the AF_ALG could cause severe compatibility issues if the required + algorithm (or encryption mode) is not implemented in the userspace library. A typical example is + the Adiantum cipher, which is implemented only in the kernel. Also, ciphers like Serpent or + Twofish (in XTS mode) are missing from several userspace libraries. The cryptsetup benchmark + for ciphers is no longer available if the AF_ALG interface is unavailable. + +* Keyring handling changes. + Libcryptsetup can use the kernel keyring to transfer the volume key into the kernel, avoiding + sending it as a parameter to system calls. + + In previous versions, the volume key could be stored in the thread keyring, which should be + removed when the process exits. Unfortunately, the thread keyring can remain active in some + situations (such as when allocating a loop device). This could be a problem after calling + luksSuspend when the volume key could remain in memory. + + Instead of loading volume keys directly into the thread keyring, cryptsetup now creates + an intermediary keyring linked into the thread keyring and loads volume keys there. + The intermediary keyring is now removed in the libcryptsetup context destructor + (usually on application exit). + + Note that in previous versions, volume keys persisted until the process exited (even after + the context destructor was called). + +* Changes related to possible LUKS volume key digest collisions. + LUKS on-disk metadata uses a volume key digest generated by the PBKDF2 key-derivation algorithm + to verify that the decrypted volume key is valid. The use of PBKDF2 (instead of a more suitable + cryptographic digest algorithm) is part of the original LUKS design. It was retained for LUKS2 + for compatibility (it allows easy in-place conversion). + + However, PBKDF2 has several design flaws. As it is based on HMAC (Hash-based Message + Authentication Code), it also inherits the weak-key HMAC issue. In HMAC, the key can be + arbitrarily long. If the key is shorter than the hash internal block size, it is padded with + zeroes to a full block size. This flawed padding causes any HMAC key (shorter than the specified + block size) to collide with keys that have added trailing zeroes. A collision means that HMAC + (and PBKDF2) has the same output for colliding keys. + + In LUKS, a PBKDF2 collision is not a security issue; it cannot compromise data confidentiality. + Moreover, the colliding key has a different length and should be rejected by the underlying block + cipher. Unfortunately, in some reencryption scenarios (e.g., a header without keyslots), + a collision key could be accepted, leading to possible data corruption. + + Code now always validates the expected key length. + This validation is now strictly implemented in LUKS metadata processing. + + In the long term, LUKS will need to upgrade to a better volume key digest algorithm, but that + will make the format backward-incompatible. + +* Support Aria and Camellia ciphers in the libgcrypt cryptographic backend. + +* Fix pkg-config library entry for the Mbed TLS cryptographic backend. + +* Better document CRYPT_VOLUME_KEY_NO_SEGMENT and CRYPT_VOLUME_KEY_DIGEST_REUSE API flags. + The keyslot created with the CRYPT_VOLUME_KEY_NO_SEGMENT flag must always be unbound + (not assigned to the default data segment). The use of the CRYPT_VOLUME_KEY_DIGEST_REUSE flag + does not make sense without the CRYPT_VOLUME_KEY_NO_SEGMENT or CRYPT_VOLUME_KEY_SET flags. + +* Fix several possible corner cases in OpenSSL cryptographic backend (based on AI analysis). + These include checking before casting from size_t to int, checking return values for the old + OpenSSL HMAC API, avoiding sending a partial buffer to the caller if the operation fails, + and explicitly checking for buffer length overflow. Most of these cannot happen in + the libcryptsetup context, but the cryptographic backend can be used for other projects. + +* Code hardening based on various AI analysis reports. + Including a fix for snprintf truncation in libdevmapper code, avoiding possible leak of JSON + keyslot object on error path, and a fix for reencryption temporary device name. + +* Fix jq (JSON commandline processor) use in testing scripts. + After the security update for jq, it no longer processes JSON with trailing zeroes. + Regression test scripts were updated to avoid using this scenario. From 8e7969c7fdba7cf5bbc10fe92309bcd8caa20aa6 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Tue, 30 Jun 2026 12:44:44 +0200 Subject: [PATCH 156/244] test: use scsi_debug_teardown helper in reencryption test. --- tests/reencryption-compat-test | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/tests/reencryption-compat-test b/tests/reencryption-compat-test index 8a7c46246..b609a4973 100755 --- a/tests/reencryption-compat-test +++ b/tests/reencryption-compat-test @@ -36,10 +36,19 @@ fips_mode() ./crypto-check fips_mode || ./crypto-check fips_mode_kernel } -del_scsi_device() -{ - rmmod scsi_debug >/dev/null 2>&1 - sleep 1 +# $1 path to scsi debug bdev +scsi_debug_teardown() { + local _tries=15; + + while [ -b "$1" -a $_tries -gt 0 ]; do + rmmod scsi_debug >/dev/null 2>&1 + if [ -b "$1" ]; then + sleep .1 + _tries=$((_tries-1)) + fi + done + + test ! -b "$1" || rmmod scsi_debug >/dev/null 2>&1 } remove_mapping() @@ -51,7 +60,7 @@ remove_mapping() umount $MNT_DIR > /dev/null 2>&1 rmdir $MNT_DIR > /dev/null 2>&1 LOOPDEV1="" - del_scsi_device + test -b "$SCSI_DEV" && scsi_debug_teardown $SCSI_DEV } fail() @@ -89,7 +98,7 @@ valgrind_run() } add_scsi_device() { - del_scsi_device + test -b "$SCSI_DEV" && scsi_debug_teardown $SCSI_DEV if [ -d /sys/module/scsi_debug ] ; then echo "Cannot use scsi_debug module (in use or compiled-in), test skipped." exit 77 From 2a029d7448c8d36f66b4d7a76a40fba8c177a27d Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Fri, 3 Jul 2026 11:56:58 +0200 Subject: [PATCH 157/244] FIx csmock exit code Also slightly increase required space. --- .gitlab/ci/csmock.yml | 2 +- .gitlab/ci/run_csmock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab/ci/csmock.yml b/.gitlab/ci/csmock.yml index b4b20fc33..0ece6e24e 100644 --- a/.gitlab/ci/csmock.yml +++ b/.gitlab/ci/csmock.yml @@ -1,7 +1,7 @@ .dnf-csmock: variables: DISTRO: cryptsetup-fedora-rawhide - DISK_SIZE: 20 + DISK_SIZE: 25 extends: - .fail_if_coredump_generated timeout: 2 hours diff --git a/.gitlab/ci/run_csmock b/.gitlab/ci/run_csmock index 707e0ffa9..d322b0816 100755 --- a/.gitlab/ci/run_csmock +++ b/.gitlab/ci/run_csmock @@ -17,6 +17,6 @@ $CSMOCK cryptsetup-*.src.rpm \ tar xJf $CSMOCK_TXZ $CSMOCK_ERR --strip-components 1 \ && test -s $CSMOCK_ERR \ - && { echo "csmock discovered important errors"; echo 3; } + && { echo "csmock discovered important errors"; exit 3; } exit 0 From 977de819fdc1da1d40b7c47eae005f516933beb2 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Fri, 3 Jul 2026 14:59:37 +0200 Subject: [PATCH 158/244] tests: Fix compilation of api-test-2 if config.h is not included. For local install test, we do not use config.h. Just skip the defaults comparison. --- tests/api-test-2.c | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/tests/api-test-2.c b/tests/api-test-2.c index a6b82d187..a93c828eb 100644 --- a/tests/api-test-2.c +++ b/tests/api-test-2.c @@ -3244,25 +3244,35 @@ static void Pbkdf(void) static void TypeDefaults(void) { - struct crypt_type_defaults defaults; + struct crypt_type_defaults defaults = {}, defaults2 = {}; // test valid LUKS1 defaults OK_(crypt_get_type_defaults(CRYPT_LUKS1, &defaults)); + NOTNULL_(defaults.cipher); + NOTNULL_(defaults.cipher_mode); + GE_(defaults.key_size, 128); +#ifdef DEFAULT_LUKS1_CIPHER OK_(strcmp(defaults.cipher, DEFAULT_LUKS1_CIPHER)); OK_(strcmp(defaults.cipher_mode, DEFAULT_LUKS1_MODE)); - OK_(strcmp(defaults.hash, default_luks1_hash)); EQ_(defaults.key_size, DEFAULT_LUKS1_KEYBITS); +#endif + OK_(strcmp(defaults.hash, default_luks1_hash)); NULL_(defaults.integrity); EQ_(defaults.tag_size, 0); // test valid LUKS2 defaults - OK_(crypt_get_type_defaults(CRYPT_LUKS2, &defaults)); - OK_(strcmp(defaults.cipher, DEFAULT_LUKS1_CIPHER)); - OK_(strcmp(defaults.cipher_mode, DEFAULT_LUKS1_MODE)); - OK_(strcmp(defaults.hash, default_luks1_hash)); - EQ_(defaults.key_size, DEFAULT_LUKS1_KEYBITS); - OK_(strcmp(defaults.integrity, "hmac-sha256")); - EQ_(defaults.tag_size, 32); + OK_(crypt_get_type_defaults(CRYPT_LUKS2, &defaults2)); + NOTNULL_(defaults2.cipher); + NOTNULL_(defaults2.cipher_mode); + GE_(defaults2.key_size, 128); +#ifdef DEFAULT_LUKS1_CIPHER + OK_(strcmp(defaults2.cipher, DEFAULT_LUKS1_CIPHER)); + OK_(strcmp(defaults2.cipher_mode, DEFAULT_LUKS1_MODE)); + EQ_(defaults2.key_size, DEFAULT_LUKS1_KEYBITS); +#endif + OK_(strcmp(defaults2.hash, default_luks1_hash)); + OK_(strcmp(defaults2.integrity, "hmac-sha256")); + EQ_(defaults2.tag_size, 32); // test invalid type (non-LUKS) FAIL_(crypt_get_type_defaults(CRYPT_PLAIN, &defaults), "Invalid type"); From a21fa23d0223a15eb547c2d5daf9db987e2b7b1b Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Fri, 3 Jul 2026 15:00:56 +0200 Subject: [PATCH 159/244] tests: Make crypto-check work in local install test If testing local installation instead of compiled binaries, crypto check was not compiled and many tests were skipped. As we have no access to cryptsetup configuration in this case, just compile it with hardcode modes supported by all backends to keep most of test running. In the future, this should be completely rewritten. --- tests/Makefile.localtest | 7 ++++-- tests/crypto-check.c | 46 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/tests/Makefile.localtest b/tests/Makefile.localtest index 89ce2c395..dd7bbe8bf 100644 --- a/tests/Makefile.localtest +++ b/tests/Makefile.localtest @@ -4,11 +4,11 @@ # (append TESTSUITE_NOSKIP=y to avoid treating skipped tests as success) # CPPFLAGS=-I../lib/ -I../lib/luks1 -DHAVE_DECL_DM_TASK_RETRY_REMOVE -DKERNEL_KEYRING \ - -DHAVE_SYS_SYSMACROS_H -DNO_CRYPTSETUP_PATH + -DHAVE_SYS_SYSMACROS_H -DNO_CRYPTSETUP_PATH -DNO_CRYPT_BACKEND CFLAGS=-O2 -g -Wall -D_GNU_SOURCE LDLIBS=-lcryptsetup -ldevmapper TESTS=$(wildcard *-test *-test2) api-test api-test-2 all-symbols-test unit-utils-crypt-test -TESTS_UTILS=differ unit-utils-io unit-wipe +TESTS_UTILS=differ unit-utils-io unit-wipe crypto-check ifneq ($(RUN_SSH_PLUGIN_TEST),) TESTS += ssh-test-plugin @@ -24,6 +24,9 @@ check-programs: $(TESTS_UTILS) $(TESTS) differ: differ.o $(CC) -o $@ $^ +crypto-check: crypto-check.o + $(CC) -o $@ $^ + api-test: api-test.o test_utils.o $(CC) -o $@ $^ $(LDLIBS) diff --git a/tests/crypto-check.c b/tests/crypto-check.c index e39bb2973..e3022f281 100644 --- a/tests/crypto-check.c +++ b/tests/crypto-check.c @@ -6,10 +6,13 @@ */ #include +#include #include +#include #include #include +#ifndef NO_CRYPT_BACKEND #include "crypto_backend/crypto_backend.h" static int check_cipher(const char *alg, const char *mode, unsigned long key_bits) @@ -79,6 +82,49 @@ static int check_pbkdf(const char *pbkdf) return EXIT_FAILURE; } +#else /* NO_CRYPT_BACKEND */ +/* + * All default backends should work with options hardcoded here + */ +static int crypt_backend_init(void) { return 0; }; +static void crypt_backend_destroy(void) {}; +static const char *crypt_backend_version(void) { return "none"; }; +static bool crypt_fips_mode(void) { return false; }; +static bool crypt_fips_mode_kernel(void) { return false; }; + +static int check_cipher(const char *alg, const char *mode, unsigned long key_bits) +{ + if (strcmp(alg, "aes")) + return EXIT_FAILURE; + + if (!strcmp(mode, "cbc") && (key_bits == 128 || key_bits == 256)) + return EXIT_SUCCESS; + + if (!strcmp(mode, "xts") && (key_bits == 256 || key_bits == 512)) + return EXIT_SUCCESS; + + return EXIT_FAILURE; +} + +static int check_cipher_kernel(const char *alg, const char *mode, unsigned long key_bits) +{ + /* Expect AF_ALG not available */ + return EXIT_FAILURE; +} + +static int check_hash(const char *hash) +{ + if (!strcmp(hash, "sha512") || !strcmp(hash, "sha256") || !strcmp(hash, "sha1")) + return EXIT_SUCCESS; + + return EXIT_FAILURE; +} + +static int check_pbkdf(const char *pbkdf) +{ + return EXIT_SUCCESS; +} +#endif static void __attribute__((noreturn)) exit_help(bool destroy_backend) { From eeac53bb0838f85258e50dbd533999bb374da3fa Mon Sep 17 00:00:00 2001 From: Petr Pisar Date: Sat, 4 Jul 2026 18:12:56 +0200 Subject: [PATCH 160/244] po: update cs.po (from translationproject.org) --- po/cs.po | 1019 +++++++++++++++++++++++++++--------------------------- 1 file changed, 510 insertions(+), 509 deletions(-) diff --git a/po/cs.po b/po/cs.po index 2c10d4391..26ca0cd59 100644 --- a/po/cs.po +++ b/po/cs.po @@ -33,10 +33,10 @@ # msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.5-rc0\n" +"Project-Id-Version: cryptsetup 2.8.7-rc1\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2026-03-30 14:18+0200\n" -"PO-Revision-Date: 2026-03-30 17:35+02:00\n" +"POT-Creation-Date: 2026-06-29 21:30+0200\n" +"PO-Revision-Date: 2026-07-02 17:37+02:00\n" "Last-Translator: Petr Pisar \n" "Language-Team: Czech \n" "Language: cs\n" @@ -105,7 +105,7 @@ msgid "Requested automatic recalculation of integrity tags is not supported." msgstr "Požadovaný automatický přepočet značek integrity není podporován." #: lib/libdevmapper.c:1802 lib/libdevmapper.c:1856 lib/libdevmapper.c:1859 -#: lib/luks2/luks2_json_metadata.c:2781 +#: lib/luks2/luks2_json_metadata.c:2799 msgid "Discard/TRIM is not supported." msgstr "Zahazování (TRIM) není podporováno." @@ -152,669 +152,669 @@ msgstr "Požadována neznámá kvalita generátoru náhodných čísel." msgid "Error reading from RNG." msgstr "Chyba při čtení z generátoru náhodných čísel." -#: lib/setup.c:248 +#: lib/setup.c:251 msgid "OPAL support is disabled in libcryptsetup." msgstr "Podpora pro Opal je v libcryptsetup vypnuta." -#: lib/setup.c:250 +#: lib/setup.c:253 #, c-format msgid "Device %s or kernel does not support OPAL encryption." msgstr "Zařízení %s nebo jádro nepodporuje šifrování Opal." -#: lib/setup.c:266 +#: lib/setup.c:269 msgid "Cannot initialize crypto RNG backend." msgstr "Implementaci šifrovacího generátoru náhodných čísel nelze inicializovat." -#: lib/setup.c:272 +#: lib/setup.c:275 msgid "Cannot initialize crypto backend." msgstr "Implementaci šifrování nelze inicializovat." -#: lib/setup.c:305 lib/setup.c:2766 lib/verity/verity.c:109 +#: lib/setup.c:308 lib/setup.c:2769 lib/verity/verity.c:109 #, c-format msgid "Hash algorithm %s not supported." msgstr "Hašovací algoritmus %s není podporován." -#: lib/setup.c:308 lib/loopaes/loopaes.c:78 +#: lib/setup.c:311 lib/loopaes/loopaes.c:78 #, c-format msgid "Key processing error (using hash %s)." msgstr "Chyba zpracování klíče (za použití haše %s)." -#: lib/setup.c:389 lib/setup.c:426 +#: lib/setup.c:392 lib/setup.c:429 msgid "Cannot determine device type. Incompatible activation of device?" msgstr "Druh zařízení nelze určit. Nekompatibilní aktivace zařízení?" -#: lib/setup.c:395 lib/setup.c:4160 +#: lib/setup.c:398 lib/setup.c:4177 msgid "This operation is supported only for LUKS device." msgstr "Tato operace je podporována jen u zařízení LUKS." -#: lib/setup.c:432 +#: lib/setup.c:435 msgid "This operation is supported only for LUKS2 device." msgstr "Tato operace je podporována jen u zařízení LUKS2." -#: lib/setup.c:489 lib/luks2/luks2_reencrypt.c:3101 +#: lib/setup.c:492 lib/luks2/luks2_reencrypt.c:3102 msgid "All key slots full." msgstr "Všechny pozice klíčů jsou obsazeny." -#: lib/setup.c:500 +#: lib/setup.c:503 #, c-format msgid "Key slot %d is invalid, please select between 0 and %d." msgstr "Pozice klíče %d není platná, prosím, vyberte číslo mezi 0 a %d." -#: lib/setup.c:506 +#: lib/setup.c:509 #, c-format msgid "Key slot %d is full, please select another one." msgstr "Pozice klíče %d je obsazena, prosím, vyberte jinou." -#: lib/setup.c:531 lib/setup.c:3875 +#: lib/setup.c:534 lib/setup.c:3878 msgid "Device size is not aligned to device logical block size." msgstr "Velikost zařízení není zarovnaná na velikost logického sektoru zařízení." -#: lib/setup.c:628 +#: lib/setup.c:631 #, c-format msgid "Header detected but device %s is too small." msgstr "Nalezena hlavička, ale zařízení %s je příliš malé." -#: lib/setup.c:669 lib/setup.c:3760 lib/setup.c:5238 -#: lib/luks2/luks2_reencrypt.c:3948 lib/luks2/luks2_reencrypt.c:4437 +#: lib/setup.c:672 lib/setup.c:3763 lib/setup.c:5272 +#: lib/luks2/luks2_reencrypt.c:3949 lib/luks2/luks2_reencrypt.c:4438 msgid "This operation is not supported for this device type." msgstr "Tato operace není na zařízení tohoto typu podporována." -#: lib/setup.c:674 +#: lib/setup.c:677 msgid "Illegal operation with reencryption in-progress." msgstr "Zakázaná operace spolu s probíhajícím přešifrování." -#: lib/setup.c:806 +#: lib/setup.c:809 msgid "Failed to rollback LUKS2 metadata in memory." msgstr "Nahrání původních metadat LUKS2 do paměti selhalo." -#: lib/setup.c:893 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 -#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 -#: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 -#: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2953 -#: src/cryptsetup.c:3021 src/utils_reencrypt.c:2281 +#: lib/setup.c:896 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 +#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1779 +#: src/cryptsetup.c:1963 src/cryptsetup.c:2018 src/cryptsetup.c:2216 +#: src/cryptsetup.c:2361 src/cryptsetup.c:2639 src/cryptsetup.c:2952 +#: src/cryptsetup.c:3020 src/utils_reencrypt.c:2281 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." msgstr "Zařízení %s není platným zařízením LUKS." -#: lib/setup.c:896 lib/luks1/keymanage.c:517 +#: lib/setup.c:899 lib/luks1/keymanage.c:517 #, c-format msgid "Unsupported LUKS version %d." msgstr "Nepodporovaná verze LUKS %d." -#: lib/setup.c:1270 +#: lib/setup.c:1273 #, c-format msgid "No known cipher specification pattern detected for active device %s." msgstr "Na aktivním zařízení %s nebyl nalezen žádný známý vzorek určující šifrování." -#: lib/setup.c:1515 lib/setup.c:3507 lib/setup.c:3599 lib/setup.c:3611 -#: lib/setup.c:3783 lib/setup.c:5816 +#: lib/setup.c:1518 lib/setup.c:3510 lib/setup.c:3602 lib/setup.c:3614 +#: lib/setup.c:3786 lib/setup.c:5850 #, c-format msgid "Device %s is not active." msgstr "Zařízení %s není aktivní." -#: lib/setup.c:1532 +#: lib/setup.c:1535 #, c-format msgid "Underlying device for crypt device %s disappeared." msgstr "Zařízení nižší úrovně pod šifrovaným zařízením %s zmizelo." -#: lib/setup.c:1614 +#: lib/setup.c:1617 msgid "Invalid plain crypt parameters." msgstr "Neplatné parametry plain šifry." -#: lib/setup.c:1619 lib/setup.c:2669 +#: lib/setup.c:1622 lib/setup.c:2672 msgid "Invalid key size." msgstr "Neplatná velikost klíče." -#: lib/setup.c:1624 lib/setup.c:2674 lib/setup.c:2879 +#: lib/setup.c:1627 lib/setup.c:2677 lib/setup.c:2882 msgid "UUID is not supported for this crypt type." msgstr "UUID není na šifře tohoto typu podporováno." -#: lib/setup.c:1629 lib/setup.c:2679 +#: lib/setup.c:1632 lib/setup.c:2682 msgid "Detached metadata device is not supported for this crypt type." msgstr "Zařízení s oddělenými metadaty není na šifře tohoto typu podporováno." -#: lib/setup.c:1639 lib/setup.c:1887 lib/luks2/luks2_reencrypt.c:3034 -#: src/cryptsetup.c:1492 src/cryptsetup.c:3760 +#: lib/setup.c:1642 lib/setup.c:1890 lib/luks2/luks2_reencrypt.c:3035 +#: src/cryptsetup.c:1491 src/cryptsetup.c:3759 msgid "Unsupported encryption sector size." msgstr "Nepodporovaná velikost šifrovaného sektoru." -#: lib/setup.c:1647 lib/setup.c:1916 lib/setup.c:3869 +#: lib/setup.c:1650 lib/setup.c:1919 lib/setup.c:3872 msgid "Device size is not aligned to requested sector size." msgstr "Velikost zařízení není zarovnaná na požadovanou velikost sektoru." -#: lib/setup.c:1699 lib/setup.c:1951 lib/setup.c:2328 +#: lib/setup.c:1702 lib/setup.c:1954 lib/setup.c:2331 msgid "Can't format LUKS without device." msgstr "LUKS nelze bez zařízení naformátovat." -#: lib/setup.c:1704 lib/setup.c:1956 +#: lib/setup.c:1707 lib/setup.c:1959 #, c-format msgid "Zoned device %s cannot be used for LUKS header." msgstr "Zónové zařízení %s nelze použít pro hlavičku LUKS." -#: lib/setup.c:1711 lib/setup.c:1963 lib/setup.c:2334 +#: lib/setup.c:1714 lib/setup.c:1966 lib/setup.c:2337 msgid "Requested data alignment is not compatible with data offset." msgstr "Požadované zarovnání dat není slučitelné s polohou dat." -#: lib/setup.c:1751 lib/setup.c:1981 +#: lib/setup.c:1754 lib/setup.c:1984 msgid "WARNING: DAX device can corrupt data as it does not guarantee atomic sector updates.\n" msgstr "POZOR: Zařízené DAX může poškodit data, protože nezaručuje atomické aktualizace sektorů.\n" -#: lib/setup.c:1789 lib/setup.c:2088 lib/setup.c:2109 lib/setup.c:2517 -#: lib/setup.c:2564 lib/setup.c:2896 +#: lib/setup.c:1792 lib/setup.c:2091 lib/setup.c:2112 lib/setup.c:2520 +#: lib/setup.c:2567 lib/setup.c:2899 #, c-format msgid "Cannot wipe header on device %s." msgstr "Ze zařízení %s nelze odstranit hlavičku." -#: lib/setup.c:1802 lib/setup.c:2161 +#: lib/setup.c:1805 lib/setup.c:2164 #, c-format msgid "Device %s is too small for activation, there is no remaining space for data.\n" msgstr "Zařízení %s je na aktivaci příliš malé. Nezbývá žádné místo pro data.\n" -#: lib/setup.c:1843 +#: lib/setup.c:1846 msgid "Volume key is too small for encryption with integrity extensions." msgstr "Klíč svazku je příliš malý na šifrovaní s rozšířeními pro integritu." -#: lib/setup.c:1847 +#: lib/setup.c:1850 msgid "Integrity key size is too small." msgstr "Velikost klíče integrity je příliš malý." -#: lib/setup.c:1856 +#: lib/setup.c:1859 #, c-format msgid "Cipher %s-%s (key size %zd bits) is not available." msgstr "Šifra %s-%s (velikost klíče %zd bitů) není dostupná." -#: lib/setup.c:1897 +#: lib/setup.c:1900 msgid "WARNING: The device activation will fail, dm-crypt is missing support for requested encryption sector size.\n" msgstr "POZOR: Aktivace zařízení selže, dm-crypt nepodporuje požadovanou velikost šifrovaného sektoru.\n" -#: lib/setup.c:2091 lib/setup.c:2458 lib/setup.c:2520 lib/utils_device.c:906 -#: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3073 -#: lib/luks2/luks2_reencrypt.c:4497 +#: lib/setup.c:2094 lib/setup.c:2461 lib/setup.c:2523 lib/utils_device.c:906 +#: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3074 +#: lib/luks2/luks2_reencrypt.c:4498 #, c-format msgid "Device %s is too small." msgstr "Zařízení %s je příliš malé." -#: lib/setup.c:2102 lib/setup.c:2141 lib/setup.c:2557 lib/setup.c:2615 +#: lib/setup.c:2105 lib/setup.c:2144 lib/setup.c:2560 lib/setup.c:2618 #, c-format msgid "Cannot format device %s in use." msgstr "Zařízení %s, které se používá, nelze formátovat." -#: lib/setup.c:2105 lib/setup.c:2144 lib/setup.c:2560 lib/setup.c:2618 +#: lib/setup.c:2108 lib/setup.c:2147 lib/setup.c:2563 lib/setup.c:2621 #, c-format msgid "Cannot format device %s, permission denied." msgstr "Zařízení %s nelze formátovat, povolení zamítnuto." # FIXME "format integrity" is nonsense -#: lib/setup.c:2129 lib/setup.c:2587 lib/setup.c:2969 +#: lib/setup.c:2132 lib/setup.c:2590 lib/setup.c:2972 #, c-format msgid "Cannot format integrity for device %s." msgstr "Zařízení %s není možné formátovat integritu." -#: lib/setup.c:2148 lib/setup.c:2626 +#: lib/setup.c:2151 lib/setup.c:2629 #, c-format msgid "Cannot format device %s." msgstr "Zařízení %s nelze formátovat." -#: lib/setup.c:2191 +#: lib/setup.c:2194 msgid "Cannot get OPAL alignment parameters." msgstr "Parametry zarovnání Opal nelze získat." -#: lib/setup.c:2203 +#: lib/setup.c:2206 msgid "Bogus OPAL logical block size." msgstr "Chybná velikost logického bloku Opal." -#: lib/setup.c:2208 lib/luks2/hw_opal/hw_opal.c:305 +#: lib/setup.c:2211 lib/luks2/hw_opal/hw_opal.c:305 msgid "Bogus OPAL logical block size differs from device block size." msgstr "Chybná velikost logického bloku Opal se liší od velikosti bloku zařízení." -#: lib/setup.c:2214 +#: lib/setup.c:2217 msgid "Requested data offset is not compatible with OPAL block size." msgstr "Požadovaná poloha dat není slučitelná s velikostí bloku Opal." -#: lib/setup.c:2221 +#: lib/setup.c:2224 msgid "Requested data alignment is not compatible with OPAL alignment." msgstr "Požadované zarovnání dat není slučitelné se zarovnáním Opal." -#: lib/setup.c:2241 +#: lib/setup.c:2244 msgid "Data offset does not satisfy OPAL alignment requirements." msgstr "Poloha dat nesplňuje požadavky Opal na zarovnání." -#: lib/setup.c:2254 +#: lib/setup.c:2257 msgid "Requested data alignment does not satisfy locking range alignment requirements." msgstr "Požadované zarovnání dat nesplňuje požadavky na zarovnání uzamykatelné oblasti." # TODO: Pluralize -#: lib/setup.c:2468 +#: lib/setup.c:2471 #, c-format msgid "Compensating device size by % sectors to align it with OPAL alignment granularity." msgstr "Velikost zařízení byla dorovnána % sektory, aby lícovala s granularitou zarovnání Opal." -#: lib/setup.c:2528 lib/setup.c:4243 lib/setup.c:4432 lib/utils_wipe.c:356 -#: lib/luks2/luks2_json_metadata.c:2724 lib/luks2/luks2_json_metadata.c:2992 +#: lib/setup.c:2531 lib/setup.c:4260 lib/setup.c:4466 lib/utils_wipe.c:356 +#: lib/luks2/luks2_json_metadata.c:2742 lib/luks2/luks2_json_metadata.c:3017 #, c-format msgid "Failed to acquire OPAL lock on device %s." msgstr "Získání zámku Opal na zařízení %s selhalo." -#: lib/setup.c:2538 +#: lib/setup.c:2541 msgid "Incorrect OPAL Admin key." msgstr "Nesprávný klíč správce Opal." -#: lib/setup.c:2540 +#: lib/setup.c:2543 msgid "Cannot setup OPAL segment." msgstr "Část Opal nelze nastavit." -#: lib/setup.c:2622 +#: lib/setup.c:2625 #, c-format msgid "Cannot format device %s, OPAL device seems to be fully write-protected now." msgstr "Zařízení %s nelze formátovat, zařízení Opal je asi zcela chráněno proti zápisu." -#: lib/setup.c:2624 +#: lib/setup.c:2627 msgid "This is perhaps a bug in firmware. Run OPAL PSID reset and reconnect for recovery." msgstr "Toto je snad chyba ve firmwaru. Resetujte Opal zařízení pomocí PSID a znovu jej zapojte." -#: lib/setup.c:2644 +#: lib/setup.c:2647 #, c-format msgid "Locking range %d reset on device %s failed." msgstr "Reset uzamykatelné oblasti %d na zařízení %s selhal." -#: lib/setup.c:2664 +#: lib/setup.c:2667 msgid "Can't format LOOPAES without device." msgstr "LOOPAES nelze bez zařízení naformátovat." -#: lib/setup.c:2709 +#: lib/setup.c:2712 msgid "Can't format VERITY without device." msgstr "VERITY nelze bez zařízení naformátovat." -#: lib/setup.c:2720 lib/verity/verity.c:88 +#: lib/setup.c:2723 lib/verity/verity.c:88 #, c-format msgid "Unsupported VERITY hash type %d." msgstr "Nepodporovaný druh VERITY haše %d." -#: lib/setup.c:2726 lib/verity/verity.c:96 +#: lib/setup.c:2729 lib/verity/verity.c:96 msgid "Unsupported VERITY block size." msgstr "Nepodporovaná velikost bloku VERITY." -#: lib/setup.c:2731 lib/verity/verity.c:61 +#: lib/setup.c:2734 lib/verity/verity.c:61 msgid "Unsupported VERITY hash offset." msgstr "Nepodporovaná poloha haše VERITY." -#: lib/setup.c:2736 +#: lib/setup.c:2739 msgid "Unsupported VERITY FEC offset." msgstr "Nepodporovaná poloha VERITY FEC." -#: lib/setup.c:2760 +#: lib/setup.c:2763 msgid "Data area overlaps with hash area." msgstr "Oblast dat se překrývá s oblastí haše." -#: lib/setup.c:2785 +#: lib/setup.c:2788 msgid "Hash area overlaps with FEC area." msgstr "Oblast FEC se překrývá s oblastí haše." -#: lib/setup.c:2792 +#: lib/setup.c:2795 msgid "Data area overlaps with FEC area." msgstr "Oblast dat se překrývá s oblastí FEC." -#: lib/setup.c:2884 +#: lib/setup.c:2887 msgid "Integrity key size mismatch." msgstr "Velikost klíče integrity neodpovídá." -#: lib/setup.c:2935 +#: lib/setup.c:2938 #, c-format msgid "WARNING: Requested tag size %d bytes differs from %s size output (%d bytes).\n" msgstr "POZOR: Požadovaná velikost značky %d bajtů se liší od výstupu velikosti %s (%d bajtů).\n" -#: lib/setup.c:3048 lib/setup.c:3150 +#: lib/setup.c:3051 lib/setup.c:3153 #, c-format msgid "Unknown or unsupported device type %s requested." msgstr "Požadován neznámý nebo nepodporovaný typ zařízení %s." -#: lib/setup.c:3064 +#: lib/setup.c:3067 #, c-format msgid "Device %s does not provide inline integrity data fields." msgstr "Zařízení %s neposkytuje položky pro inline integritu dat." -#: lib/setup.c:3070 +#: lib/setup.c:3073 #, c-format msgid "Inline tag size % [bytes] is larger than % provided by device %s." msgstr "Velikost inline značky % bajtů je větší než % poskytovaných zařízením %s." -#: lib/setup.c:3085 +#: lib/setup.c:3088 #, c-format msgid "Sector must be the same as device hardware sector (%zu bytes)." msgstr "Sektor musí být stejný jako hardwarový sektor zařízení (%zu bajtů)." -#: lib/setup.c:3515 lib/setup.c:3604 lib/setup.c:3617 +#: lib/setup.c:3518 lib/setup.c:3607 lib/setup.c:3620 #, c-format msgid "Unsupported parameters on device %s." msgstr "Nepodporované parametry na zařízení %s." -#: lib/setup.c:3521 lib/setup.c:3624 lib/luks2/luks2_reencrypt.c:2928 -#: lib/luks2/luks2_reencrypt.c:3197 lib/luks2/luks2_reencrypt.c:3594 +#: lib/setup.c:3524 lib/setup.c:3627 lib/luks2/luks2_reencrypt.c:2929 +#: lib/luks2/luks2_reencrypt.c:3198 lib/luks2/luks2_reencrypt.c:3595 #, c-format msgid "Mismatching parameters on device %s." msgstr "Neodpovídající parametry na zařízení %s." -#: lib/setup.c:3647 +#: lib/setup.c:3650 msgid "Crypt devices mismatch." msgstr "Zařízení dmcryptu si neodpovídají." -#: lib/setup.c:3679 lib/setup.c:3684 lib/luks2/luks2_reencrypt.c:2412 -#: lib/luks2/luks2_reencrypt.c:2944 lib/luks2/luks2_reencrypt.c:4236 +#: lib/setup.c:3682 lib/setup.c:3687 lib/luks2/luks2_reencrypt.c:2413 +#: lib/luks2/luks2_reencrypt.c:2945 lib/luks2/luks2_reencrypt.c:4237 #, c-format msgid "Failed to reload device %s." msgstr "Zařízení %s nebylo možné znovu zavést." -#: lib/setup.c:3690 lib/setup.c:3696 lib/luks2/luks2_reencrypt.c:2382 -#: lib/luks2/luks2_reencrypt.c:2389 lib/luks2/luks2_reencrypt.c:2958 +#: lib/setup.c:3693 lib/setup.c:3699 lib/luks2/luks2_reencrypt.c:2383 +#: lib/luks2/luks2_reencrypt.c:2390 lib/luks2/luks2_reencrypt.c:2959 #, c-format msgid "Failed to suspend device %s." msgstr "Zařízení %s nebylo možné pozastavit." -#: lib/setup.c:3702 lib/luks2/luks2_reencrypt.c:2396 -#: lib/luks2/luks2_reencrypt.c:2979 lib/luks2/luks2_reencrypt.c:4149 -#: lib/luks2/luks2_reencrypt.c:4240 +#: lib/setup.c:3705 lib/luks2/luks2_reencrypt.c:2397 +#: lib/luks2/luks2_reencrypt.c:2980 lib/luks2/luks2_reencrypt.c:4150 +#: lib/luks2/luks2_reencrypt.c:4241 #, c-format msgid "Failed to resume device %s." msgstr "Zařízení %s nebylo možné probudit." -#: lib/setup.c:3717 +#: lib/setup.c:3720 #, c-format msgid "Fatal error while reloading device %s (on top of device %s)." msgstr "Nepřekonatelná chyba při zavádění zařízení %s (nad zařízením %s)." -#: lib/setup.c:3720 lib/setup.c:3722 +#: lib/setup.c:3723 lib/setup.c:3725 #, c-format msgid "Failed to switch device %s to dm-error." msgstr "Zařízení %s nebylo možné přepnout do dm-error." -#: lib/setup.c:3765 +#: lib/setup.c:3768 msgid "Can not resize LUKS2 device with static size." msgstr "Zařízení LUKS2 se statickou velikostí nelze změnit velikost." -#: lib/setup.c:3770 +#: lib/setup.c:3773 msgid "Resize of LUKS2 device with integrity protection is not supported." msgstr "Změna velikosti zařízení LUKS2 s ochranou integrity není podporována." -#: lib/setup.c:3816 +#: lib/setup.c:3819 msgid "Cannot resize loop device." msgstr "Zařízení zpětné smyčky nelze změnit velikost." -#: lib/setup.c:3860 +#: lib/setup.c:3863 msgid "WARNING: Maximum size already set or kernel doesn't support resize.\n" msgstr "" "POZOR: Maximální velikost je již nastavena nebo změna velikosti není jádrem\n" "podporována.\n" -#: lib/setup.c:3926 +#: lib/setup.c:3929 msgid "Resize failed, the kernel doesn't support it." msgstr "Změna velikosti selhala, jádro ji nepodporuje." -#: lib/setup.c:3958 +#: lib/setup.c:3961 msgid "Do you really want to change UUID of device?" msgstr "Opravdu chcete změnit UUID zařízení?" -#: lib/setup.c:4050 +#: lib/setup.c:4053 msgid "Header backup file does not contain compatible LUKS header." msgstr "Soubor se zálohou hlavičky neobsahuje kompatibilní hlavičku LUKS." -#: lib/setup.c:4143 +#: lib/setup.c:4160 #, c-format msgid "Volume %s is not active." msgstr "Svazek %s není aktivní." -#: lib/setup.c:4198 +#: lib/setup.c:4215 #, c-format msgid "Volume %s is already suspended." msgstr "Svazek %s je již uspán." -#: lib/setup.c:4224 +#: lib/setup.c:4241 #, c-format msgid "Suspend is not supported for device %s." msgstr "Uspání není na zařízení %s podporováno." -#: lib/setup.c:4226 lib/setup.c:4234 +#: lib/setup.c:4243 lib/setup.c:4251 #, c-format msgid "Error during suspending device %s." msgstr "Chyba při uspávání zařízení %s." -#: lib/setup.c:4249 +#: lib/setup.c:4266 #, c-format msgid "Device %s was suspended but hardware OPAL device cannot be locked." msgstr "Zařízení %s bylo uspáno, ale hardwarové zařízení Opal nelze uzamknout." -#: lib/setup.c:4280 lib/setup.c:4457 +#: lib/setup.c:4297 lib/setup.c:4491 #, c-format msgid "Resume is not supported for device %s." msgstr "Probuzení není na zařízení %s podporováno." -#: lib/setup.c:4282 lib/setup.c:4447 lib/setup.c:4459 +#: lib/setup.c:4299 lib/setup.c:4481 lib/setup.c:4493 #, c-format msgid "Error during resuming device %s." msgstr "Chyba při probouzení zařízení %s." -#: lib/setup.c:4301 +#: lib/setup.c:4335 msgid "Failed to unlink volume key from user specified keyring." msgstr "Z klíčenky zadané uživatelem se nepodařilo odpojit klíč svazku." -#: lib/setup.c:4423 lib/setup.c:5603 +#: lib/setup.c:4457 lib/setup.c:5637 msgid "Failed to link volume key in user defined keyring." msgstr "Do uživatelem zadané klíčenky se nepodařilo přidat klíč svazku." -#: lib/setup.c:4522 src/cryptsetup.c:2721 +#: lib/setup.c:4556 src/cryptsetup.c:2720 #, c-format msgid "Volume %s is not suspended." msgstr "Svazek %s není uspán." -#: lib/setup.c:4633 lib/setup.c:7276 lib/setup.c:7298 lib/setup.c:7352 -#: src/cryptsetup.c:1856 src/cryptsetup.c:2260 src/cryptsetup.c:2278 -#: src/utils_reencrypt.c:305 src/utils_reencrypt.c:1966 +#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1855 +#: src/cryptsetup.c:2259 src/cryptsetup.c:2277 src/utils_reencrypt.c:305 +#: src/utils_reencrypt.c:1966 msgid "Volume key does not match the volume." msgstr "Heslo svazku neodpovídá svazku." -#: lib/setup.c:4787 +#: lib/setup.c:4821 msgid "Failed to swap new key slot." msgstr "Záměna novou pozicí klíče se nezdařila." -#: lib/setup.c:4885 +#: lib/setup.c:4919 #, c-format msgid "Key slot %d is invalid." msgstr "Pozice klíče %d je neplatná." -#: lib/setup.c:4891 src/cryptsetup.c:1977 src/cryptsetup.c:2437 -#: src/cryptsetup.c:3121 src/cryptsetup.c:3181 +#: lib/setup.c:4925 src/cryptsetup.c:1976 src/cryptsetup.c:2436 +#: src/cryptsetup.c:3120 src/cryptsetup.c:3180 #, c-format msgid "Keyslot %d is not active." msgstr "Pozice klíče %d není aktivní." -#: lib/setup.c:4910 +#: lib/setup.c:4944 msgid "Device header overlaps with data area." msgstr "Hlavička zařízení se překrývá s datovou oblastí." -#: lib/setup.c:5131 +#: lib/setup.c:5165 msgid "Reencryption in-progress. Cannot activate device." msgstr "Přešifrování již probíhá. Zařízení nelze aktivovat." -#: lib/setup.c:5133 lib/luks2/luks2_json_metadata.c:2888 -#: lib/luks2/luks2_reencrypt.c:3725 +#: lib/setup.c:5167 lib/luks2/luks2_json_metadata.c:2913 +#: lib/luks2/luks2_reencrypt.c:3726 msgid "Failed to get reencryption lock." msgstr "Získání zámku pro přešifrování selhalo." -#: lib/setup.c:5155 +#: lib/setup.c:5189 msgid "LUKS2 reencryption recovery using volume key(s) failed." msgstr "Obnova přešifrování LUKS2 pomocí klíčů svazku selhala." -#: lib/setup.c:5291 +#: lib/setup.c:5325 #, c-format msgid "Device %s already exists." msgstr "Zařízení %s již existuje." -#: lib/setup.c:5298 +#: lib/setup.c:5332 #, c-format msgid "Cannot use device %s, name is invalid or still in use." msgstr "Zařízení %s nelze použít. Název není platný nebo zařízení se stále používá." -#: lib/setup.c:5310 +#: lib/setup.c:5344 msgid "Reencryption volume keys do not match the volume." msgstr "Klíče pro přešifrování svazku neodpovídají svazku." -#: lib/setup.c:5327 +#: lib/setup.c:5361 msgid "Incorrect volume key specified for plain device." msgstr "Byl zadán neplatný klíč svazku." -#: lib/setup.c:5353 lib/setup.c:5414 +#: lib/setup.c:5387 lib/setup.c:5448 msgid "Device type is not properly initialized." msgstr "Typ zařízení není řádně inicializován." -#: lib/setup.c:5452 +#: lib/setup.c:5486 msgid "Kernel keyring is not supported by the kernel." msgstr "Jaderná klíčenka není jádrem podporována." -#: lib/setup.c:5456 +#: lib/setup.c:5490 msgid "Kernel keyring missing: required for passing signature to kernel." msgstr "Jaderná klíčenka chybí: je potřeba pro předání podpisu do jádra." -#: lib/setup.c:5511 +#: lib/setup.c:5545 #, c-format msgid "Cannot use keyring key %s." msgstr "Klíčem klíčenky %s nelze použít." -#: lib/setup.c:5724 +#: lib/setup.c:5758 msgid "Incorrect root hash specified for verity device." msgstr "K zařízení VERITY byl zadán neplatný kořenový haš." -#: lib/setup.c:5765 lib/setup.c:5790 +#: lib/setup.c:5799 lib/setup.c:5824 msgid "OPAL does not support deferred deactivation." msgstr "Opal nepodporuje odloženou deaktivaci." -#: lib/setup.c:5780 lib/setup.c:5811 lib/luks2/luks2_json_metadata.c:2953 +#: lib/setup.c:5814 lib/setup.c:5845 lib/luks2/luks2_json_metadata.c:2978 #: src/utils_reencrypt.c:89 #, c-format msgid "Device %s is still in use." msgstr "Zařízení %s se stále používá." -#: lib/setup.c:5798 +#: lib/setup.c:5832 #, c-format msgid "Could not cancel deferred remove from device %s." msgstr "Odložené odebrání zařízení %s nebylo možné zrušit." -#: lib/setup.c:5820 +#: lib/setup.c:5854 #, c-format msgid "Invalid device %s." msgstr "Neplatné zařízení %s." -#: lib/setup.c:5967 +#: lib/setup.c:6001 msgid "Volume key buffer too small." msgstr "Vyhrazená paměť pro klíč svazku je příliš malá." -#: lib/setup.c:5978 +#: lib/setup.c:6012 msgid "Cannot retrieve volume key for LUKS2 device." msgstr "Nelze získat klíč svazku pro zařízení LUKS2." -#: lib/setup.c:5987 +#: lib/setup.c:6021 msgid "Cannot retrieve volume key for LUKS1 device." msgstr "Nelze získat klíč svazku pro zařízení LUKS1." -#: lib/setup.c:6001 +#: lib/setup.c:6035 msgid "Cannot retrieve volume key for plain device." msgstr "Nelze získat klíč svazku pro otevřené zařízení." -#: lib/setup.c:6009 +#: lib/setup.c:6043 msgid "Cannot retrieve root hash for verity device." msgstr "K zařízení VERITY nelze získat kořenový otisk." -#: lib/setup.c:6018 +#: lib/setup.c:6052 msgid "Cannot retrieve volume key for BITLK device." msgstr "Nelze získat klíč svazku pro zařízení BITLK." -#: lib/setup.c:6023 +#: lib/setup.c:6057 msgid "Cannot retrieve volume key for FVAULT2 device." msgstr "Nelze získat klíč svazku pro zařízení FVAULT2." -#: lib/setup.c:6025 +#: lib/setup.c:6059 #, c-format msgid "This operation is not supported for %s crypt device." msgstr "Na šifrovaném zařízení %s není tato operace podporována." -#: lib/setup.c:6210 lib/setup.c:6221 +#: lib/setup.c:6244 lib/setup.c:6255 msgid "Dump operation is not supported for this device type." msgstr "Operace výpisu není na zařízení tohoto typu podporována." -#: lib/setup.c:6601 +#: lib/setup.c:6635 #, c-format msgid "Data offset is not multiple of %u bytes." msgstr "Počátek dat není násobkem %u bajtů." -#: lib/setup.c:6909 +#: lib/setup.c:6943 #, c-format msgid "Cannot convert device %s which is still in use." msgstr "Zařízení %s, které se stále používá, nelze konvertovat." -#: lib/setup.c:7217 lib/setup.c:7361 +#: lib/setup.c:7251 lib/setup.c:7406 #, c-format msgid "Failed to assign keyslot %u as the new volume key." msgstr "Přiřazení pozice klíče %u jakožto nového klíče svazku se nezdařilo." -#: lib/setup.c:7241 +#: lib/setup.c:7275 msgid "Failed to initialize default LUKS2 keyslot parameters." msgstr "Inicializace parametrů výchozí pozice klíče LUKS2 selhala." -#: lib/setup.c:7247 +#: lib/setup.c:7281 #, c-format msgid "Failed to assign keyslot %d to digest." msgstr "Přiřazení pozice klíče %d k otisku se nezdařilo." -#: lib/setup.c:7478 +#: lib/setup.c:7523 msgid "Cannot add key slot, all slots disabled and no volume key provided." msgstr "Nelze přidat pozici klíče, všechny pozice jsou zakázány a klíč svazku nebyl poskytnut." -#: lib/setup.c:7551 lib/verity/verity.c:333 +#: lib/setup.c:7611 lib/setup.c:7626 lib/verity/verity.c:333 msgid "Failed to load key in kernel keyring." msgstr "Klíč se nepodařilo přidat do jaderné klíčenky." -#: lib/setup.c:7742 +#: lib/setup.c:7807 #, c-format msgid "Could not find keyring described by \"%s\"." msgstr "Klíčenku zadanou jako „%s“ nebylo možné nalézt." -#: lib/setup.c:7807 +#: lib/setup.c:7872 msgid "Failed to acquire global memory-hard access serialization lock." msgstr "Získání zámku pro tvrdý přístup do globální paměti selhalo." -#: lib/utils.c:204 lib/tcrypt/tcrypt.c:490 +#: lib/utils.c:205 lib/tcrypt/tcrypt.c:488 msgid "Failed to open key file." msgstr "Soubor s klíčem se nepodařilo otevřít." -#: lib/utils.c:212 +#: lib/utils.c:213 msgid "Cannot read keyfile from a terminal." msgstr "Soubor s klíčem nelze z terminálu přečíst." -#: lib/utils.c:228 +#: lib/utils.c:229 msgid "Failed to stat key file." msgstr "O souboru s klíčem nebylo možné zjistit údaje." -#: lib/utils.c:236 lib/utils.c:257 +#: lib/utils.c:237 lib/utils.c:258 msgid "Cannot seek to requested keyfile offset." msgstr "Nelze se přesunout na požadované místo v souboru s klíčem." -#: lib/utils.c:251 lib/utils.c:266 src/utils_password.c:219 +#: lib/utils.c:252 lib/utils.c:267 src/utils_password.c:219 #: src/utils_password.c:231 msgid "Out of memory while reading passphrase." msgstr "Při čtení hesla došla paměť." -#: lib/utils.c:286 +#: lib/utils.c:287 msgid "Error reading passphrase." msgstr "Chyba při čtení hesla." -#: lib/utils.c:303 +#: lib/utils.c:304 msgid "Nothing to read on input." msgstr "Na vstupu není nic k přečtení." -#: lib/utils.c:310 +#: lib/utils.c:311 msgid "Maximum keyfile size exceeded." msgstr "Maximální délka souboru s klíčem překročena." -#: lib/utils.c:315 +#: lib/utils.c:316 msgid "Cannot read requested amount of data." msgstr "Požadované množství dat nelze načíst." @@ -996,7 +996,7 @@ msgid "Cipher specification should be in [cipher]-[mode]-[iv] format." msgstr "Zápis šifry by měl být ve tvaru [šifra]-[režim]-[iv]." #: lib/luks1/keyencryption.c:85 lib/luks1/keymanage.c:353 -#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1150 +#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1132 #: lib/luks2/luks2_json_metadata.c:1518 lib/luks2/luks2_keyslot.c:711 #, c-format msgid "Cannot write to device %s, permission denied." @@ -1010,13 +1010,13 @@ msgstr "Otevření dočasného zařízení s úložištěm klíče selhalo." msgid "Failed to access temporary keystore device." msgstr "Přístup do dočasného zařízení s úložištěm klíče selhal." -#: lib/luks1/keyencryption.c:189 lib/luks2/luks2_keyslot_luks2.c:49 -#: lib/luks2/luks2_keyslot_luks2.c:67 lib/luks2/luks2_keyslot_reenc.c:184 +#: lib/luks1/keyencryption.c:189 lib/luks2/luks2_keyslot_luks2.c:47 +#: lib/luks2/luks2_keyslot_reenc.c:184 msgid "IO error while encrypting keyslot." msgstr "Chyba vstupu/výstupu při šifrování pozice klíče." #: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:356 -#: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:668 +#: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:659 #: lib/fvault2/fvault2.c:872 lib/verity/verity.c:67 lib/verity/verity.c:183 #: lib/verity/verity_hash.c:312 lib/verity/verity_hash.c:321 #: lib/verity/verity_hash.c:350 lib/verity/verity_fec.c:247 @@ -1027,7 +1027,7 @@ msgstr "Chyba vstupu/výstupu při šifrování pozice klíče." msgid "Cannot open device %s." msgstr "Zařízení %s nelze otevřít." -#: lib/luks1/keyencryption.c:247 lib/luks2/luks2_keyslot_luks2.c:128 +#: lib/luks1/keyencryption.c:247 lib/luks2/luks2_keyslot_luks2.c:85 msgid "IO error while decrypting keyslot." msgstr "Chyba vstupu/výstupu při dešifrování pozice klíče." @@ -1117,7 +1117,7 @@ msgid "Cipher hash repaired to lowercase (%s)." msgstr "Haš šifry opraven na malý písmena (%s)." #: lib/luks1/keymanage.c:417 lib/luks1/keymanage.c:523 -#: lib/luks1/keymanage.c:777 +#: lib/luks1/keymanage.c:756 #, c-format msgid "Requested LUKS hash %s is not supported." msgstr "Požadovaný haš LUKSu %s není podporován." @@ -1164,7 +1164,7 @@ msgstr "Režim LUKS šifry %s není platný." msgid "LUKS hash %s is invalid." msgstr "LUKS haš %s není platný." -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 +#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1366 msgid "No known problems detected for LUKS header." msgstr "V hlavičce LUKS nenalezen žádný známý problém." @@ -1179,50 +1179,50 @@ msgid "Error re-reading LUKS header after update on device %s." msgstr "Chyba při opakovaném čtení hlavičky LUKS po aktualizaci zařízení %s." # TODO: Pluralize -#: lib/luks1/keymanage.c:771 +#: lib/luks1/keymanage.c:750 msgid "Data offset for LUKS header must be either 0 or higher than header size." msgstr "Poloha dat u hlavičky LUKS musí být buď 0 nebo více než velikost hlavičky." -#: lib/luks1/keymanage.c:782 lib/luks1/keymanage.c:853 +#: lib/luks1/keymanage.c:761 lib/luks1/keymanage.c:832 #: lib/luks2/luks2_json_format.c:231 lib/luks2/luks2_json_metadata.c:1261 #: src/utils_reencrypt.c:701 msgid "Wrong LUKS UUID format provided." msgstr "Poskytnut UUID LUKSu ve špatném tvaru." -#: lib/luks1/keymanage.c:804 +#: lib/luks1/keymanage.c:783 msgid "Cannot create LUKS header: reading random salt failed." msgstr "Hlavičku LUKS nelze vytvořit: čtení náhodné soli selhalo." -#: lib/luks1/keymanage.c:832 +#: lib/luks1/keymanage.c:811 #, c-format msgid "Cannot create LUKS header: header digest failed (using hash %s)." msgstr "Hlavičku LUKS nelze vytvořit: výpočet otisku hlavičky (haš %s) selhal." -#: lib/luks1/keymanage.c:877 +#: lib/luks1/keymanage.c:856 #, c-format msgid "Key slot %d active, purge first." msgstr "Pozice klíče %d je aktivní, nejprve ji uvolněte." -#: lib/luks1/keymanage.c:883 +#: lib/luks1/keymanage.c:862 #, c-format msgid "Key slot %d material includes too few stripes. Header manipulation?" msgstr "Pozice klíče %d obsahuje příliš málo útržků. Manipulace s hlavičkou?" -#: lib/luks1/keymanage.c:921 lib/luks2/luks2_keyslot_luks2.c:260 +#: lib/luks1/keymanage.c:900 lib/luks2/luks2_keyslot_luks2.c:217 msgid "PBKDF2 iteration value overflow." msgstr "Čítač opakování PBKDF2 přetekl." -#: lib/luks1/keymanage.c:1040 +#: lib/luks1/keymanage.c:1022 #, c-format msgid "Cannot open keyslot (using hash %s)." msgstr "Pozici s klíčem nezle otevřít (za použití haše %s)." -#: lib/luks1/keymanage.c:1136 +#: lib/luks1/keymanage.c:1118 #, c-format msgid "Key slot %d is invalid, please select keyslot between 0 and %d." msgstr "Pozice klíče %d není platná, prosím, vyberte pozici mezi 0 a %d." -#: lib/luks1/keymanage.c:1154 lib/luks2/luks2_keyslot.c:715 +#: lib/luks1/keymanage.c:1136 lib/luks2/luks2_keyslot.c:715 #, c-format msgid "Cannot wipe device %s." msgstr "Zařízení %s není možné smazat." @@ -1243,56 +1243,48 @@ msgstr "Zjištěn nekompatibilní soubor s klíčem loop-AES." msgid "Kernel does not support loop-AES compatible mapping." msgstr "Jádro nepodporuje mapování kompatibilní s loop-AES." -#: lib/tcrypt/tcrypt.c:497 +#: lib/tcrypt/tcrypt.c:495 #, c-format msgid "Error reading keyfile %s." msgstr "Chyba při čtení souboru s klíčem %s" -#: lib/tcrypt/tcrypt.c:547 +#: lib/tcrypt/tcrypt.c:549 #, c-format msgid "Maximum TCRYPT passphrase length (%zu) exceeded." msgstr "Překročena maximální délka hesla TCRYPT (%zu)." -#: lib/tcrypt/tcrypt.c:589 +#: lib/tcrypt/tcrypt.c:591 #, c-format msgid "PBKDF2 hash algorithm %s not available, skipping." msgstr "Hašovací algoritmus PBKDF2 %s není podporován, přeskakuje se." -#: lib/tcrypt/tcrypt.c:608 src/cryptsetup.c:1240 -msgid "Required kernel crypto interface not available." -msgstr "Požadované kryptografické rozhraní jádra není dostupné." - -#: lib/tcrypt/tcrypt.c:610 src/cryptsetup.c:1242 -msgid "Ensure you have algif_skcipher kernel module loaded." -msgstr "Ujistěte se, že jaderný modul algif_skcipher je zaveden." - -#: lib/tcrypt/tcrypt.c:752 +#: lib/tcrypt/tcrypt.c:743 #, c-format msgid "Activation is not supported for %d sector size." msgstr "Aktivace nad sektory o velikosti %d není podporována." -#: lib/tcrypt/tcrypt.c:758 +#: lib/tcrypt/tcrypt.c:749 msgid "Kernel does not support activation for this TCRYPT legacy mode." msgstr "Jádro nepodporuje aktivaci v tomto zastaralém režimu TCRYPT." -#: lib/tcrypt/tcrypt.c:813 +#: lib/tcrypt/tcrypt.c:804 #, c-format msgid "Activating TCRYPT system encryption for partition %s." msgstr "Aktivuje se systémové šifrování TCRYPT pro oddíl %s." -#: lib/tcrypt/tcrypt.c:828 +#: lib/tcrypt/tcrypt.c:819 msgid "Cannot determine TCRYPT system partition offset, activating whole encrypted area." msgstr "Polohu systémového oddílu TCRYPT nelze určit. Aktivuje se celá šifrovaná oblast." -#: lib/tcrypt/tcrypt.c:837 +#: lib/tcrypt/tcrypt.c:828 msgid "Cannot determine TCRYPT system partition offset, activating device as a system partition." msgstr "Polohu systémového oddílu TCRYPT nelze určit. Zařízení se aktivuje co by systémový oddíl." -#: lib/tcrypt/tcrypt.c:917 +#: lib/tcrypt/tcrypt.c:908 msgid "Kernel does not support TCRYPT compatible mapping." msgstr "Jádro nepodporuje mapování kompatibilní s TCRYPT." -#: lib/tcrypt/tcrypt.c:1146 +#: lib/tcrypt/tcrypt.c:1137 msgid "This function is not supported without TCRYPT header load." msgstr "Bez dat s hlavičkou TCRYPT není tato funkce podporována." @@ -1650,8 +1642,7 @@ msgid "WARNING: LUKS2 keyslots area size changed to % bytes.\n" msgstr "POZOR: Oblast s pozicemi klíčů pro LUKS2 změnila velikost na % bajtů.\n" #: lib/luks2/luks2_json_metadata.c:1171 lib/luks2/luks2_json_metadata.c:1357 -#: lib/luks2/luks2_json_metadata.c:1417 lib/luks2/luks2_keyslot_luks2.c:81 -#: lib/luks2/luks2_keyslot_luks2.c:105 +#: lib/luks2/luks2_json_metadata.c:1417 lib/luks2/luks2_keyslot_luks2.c:71 #, c-format msgid "Failed to acquire read lock on device %s." msgstr "Získání zámku pro čtení ze zařízení %s selhalo." @@ -1711,79 +1702,79 @@ msgstr "" msgid "Ignored unknown flag %s." msgstr "Neznámý příznak %s ignorován." -#: lib/luks2/luks2_json_metadata.c:2545 lib/luks2/luks2_reencrypt.c:2109 +#: lib/luks2/luks2_json_metadata.c:2563 lib/luks2/luks2_reencrypt.c:2110 #, c-format msgid "Missing key for dm-crypt segment %u" msgstr "Chybí klíč pro dm-crypt část %u." -#: lib/luks2/luks2_json_metadata.c:2557 lib/luks2/luks2_reencrypt.c:2122 +#: lib/luks2/luks2_json_metadata.c:2575 lib/luks2/luks2_reencrypt.c:2123 msgid "Failed to set dm-crypt segment." msgstr "Nastavení části dm-crypt selhalo." -#: lib/luks2/luks2_json_metadata.c:2563 lib/luks2/luks2_reencrypt.c:2128 +#: lib/luks2/luks2_json_metadata.c:2581 lib/luks2/luks2_reencrypt.c:2129 msgid "Failed to set dm-linear segment." msgstr "Nastavení části dm-linear selhalo." -#: lib/luks2/luks2_json_metadata.c:2683 src/utils_reencrypt.c:578 +#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:578 msgid "No known cipher specification pattern detected in LUKS2 header." msgstr "V hlavičce LUKS2 nebyl nalezen žádný známý vzorek určující šifru." -#: lib/luks2/luks2_json_metadata.c:2691 +#: lib/luks2/luks2_json_metadata.c:2709 msgid "OPAL device must have static device size." msgstr "Zařízení Opal musí mít statickou velikost zařízení." -#: lib/luks2/luks2_json_metadata.c:2711 +#: lib/luks2/luks2_json_metadata.c:2729 msgid "Encrypted OPAL device with integrity must be smaller than locking range." msgstr "Šifrované zařízení Opal zajišťující neporušenost musí být menší než uzamykatelná oblast." -#: lib/luks2/luks2_json_metadata.c:2716 +#: lib/luks2/luks2_json_metadata.c:2734 msgid "OPAL device must have same size as locking range." msgstr "Zařízení Opal musí mít stejnou velikost jako uzamykatelná oblast." -#: lib/luks2/luks2_json_metadata.c:2736 +#: lib/luks2/luks2_json_metadata.c:2754 #, c-format msgid "OPAL device is %s already unlocked.\n" msgstr "Opal zařízení %s je již odemknuto.\n" -#: lib/luks2/luks2_json_metadata.c:2775 +#: lib/luks2/luks2_json_metadata.c:2793 msgid "Unsupported device integrity configuration." msgstr "Nepodporovaná konfigurace integrity zařízení." -#: lib/luks2/luks2_json_metadata.c:2791 +#: lib/luks2/luks2_json_metadata.c:2809 msgid "Underlying dm-integrity device with unexpected provided data sectors." msgstr "Dm-integrity zařízení nižší úrovně poskytlo nečekané datové sektory." -#: lib/luks2/luks2_json_metadata.c:2886 +#: lib/luks2/luks2_json_metadata.c:2911 msgid "Reencryption in-progress. Cannot deactivate device." msgstr "Probíhá přešifrování. Zařízení nelze deaktivovat." -#: lib/luks2/luks2_json_metadata.c:2897 lib/luks2/luks2_reencrypt.c:4286 +#: lib/luks2/luks2_json_metadata.c:2922 lib/luks2/luks2_reencrypt.c:4287 #, c-format msgid "Failed to replace suspended device %s with dm-error target." msgstr "Výměna pozastaveného zařízení %s za cíl dm-error selhala." -#: lib/luks2/luks2_json_metadata.c:2976 lib/luks2/luks2_json_metadata.c:2998 +#: lib/luks2/luks2_json_metadata.c:3001 lib/luks2/luks2_json_metadata.c:3023 #, c-format msgid "Device %s was deactivated but hardware OPAL device cannot be locked." msgstr "Zařízení %s bylo deaktivováno, avšak hardwarové zařízené Opal nelze uzamknout." -#: lib/luks2/luks2_json_metadata.c:3020 +#: lib/luks2/luks2_json_metadata.c:3045 msgid "Unmet LUKS2 requirements detected." msgstr "Zjištěny nesplněné požadavky na LUKS2." -#: lib/luks2/luks2_json_metadata.c:3028 +#: lib/luks2/luks2_json_metadata.c:3053 msgid "Operation incompatible with device marked for legacy reencryption. Aborting." msgstr "Operace se neslučuje se zařízením označeným pro zastaralé přešifrování. Operace se ruší." -#: lib/luks2/luks2_json_metadata.c:3030 +#: lib/luks2/luks2_json_metadata.c:3055 msgid "Operation incompatible with device marked for LUKS2 reencryption. Aborting." msgstr "Operace se neslučuje se zařízením označeným pro přešifrování LUKS2. Operace se ruší." -#: lib/luks2/luks2_json_metadata.c:3032 +#: lib/luks2/luks2_json_metadata.c:3057 msgid "Operation incompatible with device using OPAL. Aborting." msgstr "Operace se neslučuje se zařízením používajícím Opal. Operace se ruší." -#: lib/luks2/luks2_json_metadata.c:3034 +#: lib/luks2/luks2_json_metadata.c:3059 msgid "Operation incompatible with device using inline HW tags. Aborting." msgstr "Operace se neslučuje se zařízením používajícím inline hardwarové značky. Operace se ruší." @@ -1795,22 +1786,22 @@ msgstr "Nedostatek paměti pro otevření pozice s klíčem." msgid "Keyslot open failed." msgstr "Otevření pozice s klíčem selhalo." -#: lib/luks2/luks2_keyslot_luks2.c:42 lib/luks2/luks2_keyslot_luks2.c:99 +#: lib/luks2/luks2_keyslot_luks2.c:40 lib/luks2/luks2_keyslot_luks2.c:77 #, c-format -msgid "Cannot use %s-%s cipher for keyslot encryption." -msgstr "Šifru %s-%s nelze použít pro pozici s klíčem." +msgid "Cannot use %s cipher for keyslot encryption." +msgstr "Šifru %s nelze použít pro zašifrování pozice s klíčem." -#: lib/luks2/luks2_keyslot_luks2.c:262 +#: lib/luks2/luks2_keyslot_luks2.c:219 msgid "Not enough memory for keyslot key derivation." msgstr "Nedostatek paměti pro odvození klíče pro pozici s klíčem." -#: lib/luks2/luks2_keyslot_luks2.c:276 lib/luks2/luks2_keyslot_luks2.c:405 -#: lib/luks2/luks2_keyslot_reenc.c:434 lib/luks2/luks2_reencrypt.c:2733 +#: lib/luks2/luks2_keyslot_luks2.c:233 lib/luks2/luks2_keyslot_luks2.c:358 +#: lib/luks2/luks2_keyslot_reenc.c:434 lib/luks2/luks2_reencrypt.c:2734 #, c-format msgid "Hash algorithm %s is not available." msgstr "Hašovací algoritmus %s není dostupný." -#: lib/luks2/luks2_keyslot_luks2.c:522 +#: lib/luks2/luks2_keyslot_luks2.c:475 msgid "No space for new keyslot." msgstr "Pro novou pozicí klíče není místo." @@ -1827,336 +1818,336 @@ msgstr "Druh odolnosti nelze zaktualizovat. Nový druh poskytuje pouze % msgid "Failed to refresh reencryption verification digest." msgstr "Ověřovací otisk přešifrování se nepodařilo obnovit." -#: lib/luks2/luks2_luks1_convert.c:532 +#: lib/luks2/luks2_luks1_convert.c:498 #, c-format msgid "Cannot check status of device with uuid: %s." msgstr "Nelze zjistit stav zařízení s UUID: %s." -#: lib/luks2/luks2_luks1_convert.c:558 +#: lib/luks2/luks2_luks1_convert.c:524 msgid "Unable to convert header with LUKSMETA additional metadata." msgstr "Hlavičky s dodatečnými metadaty LUKSMETA nelze převést." -#: lib/luks2/luks2_luks1_convert.c:590 lib/luks2/luks2_reencrypt.c:3893 +#: lib/luks2/luks2_luks1_convert.c:556 lib/luks2/luks2_reencrypt.c:3894 #, c-format msgid "Unable to use cipher specification %s-%s for LUKS2." msgstr "LUKS2 neumožňuje použít šifru zadanou jako %s-%s." -#: lib/luks2/luks2_luks1_convert.c:599 +#: lib/luks2/luks2_luks1_convert.c:565 #, c-format msgid "Unable to use cipher specification %s-%s for LUKS2 keyslot." msgstr "Pozice s klíčem LUKS2 neumožňuje použít šifru zadanou jako %s-%s." -#: lib/luks2/luks2_luks1_convert.c:614 +#: lib/luks2/luks2_luks1_convert.c:580 msgid "Unable to move keyslot area. Not enough space." msgstr "Oblast s pozicemi klíčů nelze přesunout. Nedostatek místa." -#: lib/luks2/luks2_luks1_convert.c:653 +#: lib/luks2/luks2_luks1_convert.c:619 msgid "Cannot convert to LUKS2 format - invalid metadata." msgstr "Nelze převést do formátu LUKS2 – neplatná metadata." -#: lib/luks2/luks2_luks1_convert.c:670 +#: lib/luks2/luks2_luks1_convert.c:636 msgid "Unable to move keyslot area. LUKS2 keyslots area too small." msgstr "Oblast s pozicemi klíčů nelze přesunout. Oblast s pozicemi klíčů LUKS2 je příliš malá." -#: lib/luks2/luks2_luks1_convert.c:676 lib/luks2/luks2_luks1_convert.c:1006 +#: lib/luks2/luks2_luks1_convert.c:642 lib/luks2/luks2_luks1_convert.c:972 msgid "Unable to move keyslot area." msgstr "Oblast s pozicemi klíčů nelze přesunout." -#: lib/luks2/luks2_luks1_convert.c:791 +#: lib/luks2/luks2_luks1_convert.c:757 msgid "Cannot convert to LUKS1 format - default segment encryption sector size is not 512 bytes." msgstr "Nelze převést do formátu LUKS1 – výchozí velikost sektoru šifrování části není 512 bajtů." -#: lib/luks2/luks2_luks1_convert.c:799 +#: lib/luks2/luks2_luks1_convert.c:765 msgid "Cannot convert to LUKS1 format - key slot digests are not LUKS1 compatible." msgstr "Nelze převést do formátu LUKS1 – otisky v pozicích s klíči nejsou slučitelné s LUKS1." -#: lib/luks2/luks2_luks1_convert.c:813 +#: lib/luks2/luks2_luks1_convert.c:779 #, c-format msgid "Cannot convert to LUKS1 format - device uses wrapped key cipher %s." msgstr "Nelze převést do formátu LUKS1 – zařízení používá šifru se zabaleným klíčem %s." -#: lib/luks2/luks2_luks1_convert.c:818 +#: lib/luks2/luks2_luks1_convert.c:784 msgid "Cannot convert to LUKS1 format - device uses more segments." msgstr "Nelze převést do formátu LUKS1 – zařízení používá více částí." # TODO: Pluralize -#: lib/luks2/luks2_luks1_convert.c:826 +#: lib/luks2/luks2_luks1_convert.c:792 #, c-format msgid "Cannot convert to LUKS1 format - LUKS2 header contains %u token(s)." msgstr "Nelze převést do formátu LUKS1 – hlavička LUKS2 obsahuje %u token(ů)." -#: lib/luks2/luks2_luks1_convert.c:832 +#: lib/luks2/luks2_luks1_convert.c:798 msgid "Cannot convert to LUKS1 format - there are no active keyslots." msgstr "Nelze převést do formátu LUKS1 – žádná pozice s klíčem není aktivní." -#: lib/luks2/luks2_luks1_convert.c:844 +#: lib/luks2/luks2_luks1_convert.c:810 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is in invalid state." msgstr "Nelze převést do formátu LUKS1 – pozice s klíčem %u je v nesprávném stavu." -#: lib/luks2/luks2_luks1_convert.c:849 +#: lib/luks2/luks2_luks1_convert.c:815 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is unbound." msgstr "Nelze převést do formátu LUKS1 – pozice s klíčem %u není přiřazena." -#: lib/luks2/luks2_luks1_convert.c:854 +#: lib/luks2/luks2_luks1_convert.c:820 #, c-format msgid "Cannot convert to LUKS1 format - slot %u (over maximum slots) is still active." msgstr "Nelze převést do formátu LUKS1 – pozice s klíčem %u (nad maximem pozic) je stále aktivní." -#: lib/luks2/luks2_luks1_convert.c:859 +#: lib/luks2/luks2_luks1_convert.c:825 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is not LUKS1 compatible." msgstr "Nelze převést do formátu LUKS1 – pozice s klíčem %u není slučitelná s LUKS1." -#: lib/luks2/luks2_reencrypt.c:1198 +#: lib/luks2/luks2_reencrypt.c:1199 #, c-format msgid "Hotzone size must be multiple of calculated zone alignment (%zu bytes)." msgstr "Velikost horké zóny musí být násobek vypočteného zarovnání zóny (%zu bajtů)." -#: lib/luks2/luks2_reencrypt.c:1203 +#: lib/luks2/luks2_reencrypt.c:1204 #, c-format msgid "Device size must be multiple of calculated zone alignment (%zu bytes)." msgstr "Velikost zařízení musí být násobek vypočteného zarovnání zóny (%zu bajtů)." -#: lib/luks2/luks2_reencrypt.c:1410 lib/luks2/luks2_reencrypt.c:1596 -#: lib/luks2/luks2_reencrypt.c:1679 lib/luks2/luks2_reencrypt.c:1721 -#: lib/luks2/luks2_reencrypt.c:4080 +#: lib/luks2/luks2_reencrypt.c:1411 lib/luks2/luks2_reencrypt.c:1597 +#: lib/luks2/luks2_reencrypt.c:1680 lib/luks2/luks2_reencrypt.c:1722 +#: lib/luks2/luks2_reencrypt.c:4081 msgid "Failed to initialize old segment storage wrapper." msgstr "Obálku pro starou část úložiště se nepodařilo inicializovat." -#: lib/luks2/luks2_reencrypt.c:1424 lib/luks2/luks2_reencrypt.c:1574 +#: lib/luks2/luks2_reencrypt.c:1425 lib/luks2/luks2_reencrypt.c:1575 msgid "Failed to initialize new segment storage wrapper." msgstr "Obálku pro novou část úložiště se nepodařilo inicializovat." -#: lib/luks2/luks2_reencrypt.c:1550 lib/luks2/luks2_reencrypt.c:4092 +#: lib/luks2/luks2_reencrypt.c:1551 lib/luks2/luks2_reencrypt.c:4093 msgid "Failed to initialize hotzone protection." msgstr "Ochranu horké zóny se nepodařilo inicializovat." -#: lib/luks2/luks2_reencrypt.c:1623 +#: lib/luks2/luks2_reencrypt.c:1624 msgid "Failed to read checksums for current hotzone." msgstr "Kontrolní součty pro aktuální horkou zónu se nepodařilo přečíst." -#: lib/luks2/luks2_reencrypt.c:1630 lib/luks2/luks2_reencrypt.c:4107 +#: lib/luks2/luks2_reencrypt.c:1631 lib/luks2/luks2_reencrypt.c:4108 #, c-format msgid "Failed to read hotzone area starting at %." msgstr "Čtení oblasti s horkou zónou počínaje na % selhalo." -#: lib/luks2/luks2_reencrypt.c:1649 +#: lib/luks2/luks2_reencrypt.c:1650 #, c-format msgid "Failed to decrypt sector %zu." msgstr "Sektor %zu nebylo možné rozšifrovat." -#: lib/luks2/luks2_reencrypt.c:1655 +#: lib/luks2/luks2_reencrypt.c:1656 #, c-format msgid "Failed to recover sector %zu." msgstr "Sektor %zu nebylo možné obnovit." -#: lib/luks2/luks2_reencrypt.c:2208 +#: lib/luks2/luks2_reencrypt.c:2209 #, c-format msgid "Source and target device sizes don't match. Source %, target: %." msgstr "Velikosti zdrojového a cílového zařízení se neshodují. Zdroj %, cíl %." -#: lib/luks2/luks2_reencrypt.c:2310 +#: lib/luks2/luks2_reencrypt.c:2311 #, c-format msgid "Failed to activate hotzone device %s." msgstr "Aktivace zařízení horké zóny %s selhala." -#: lib/luks2/luks2_reencrypt.c:2322 +#: lib/luks2/luks2_reencrypt.c:2323 #, c-format msgid "Failed to allocate hotzone device %s." msgstr "Alokace zařízení horké zóny %s selhala." -#: lib/luks2/luks2_reencrypt.c:2339 +#: lib/luks2/luks2_reencrypt.c:2340 #, c-format msgid "Failed to activate overlay device %s with actual origin table." msgstr "Aktivace překryvného zařízení %s se skutečnou tabulkou původu selhala." -#: lib/luks2/luks2_reencrypt.c:2346 +#: lib/luks2/luks2_reencrypt.c:2347 #, c-format msgid "Failed to load new mapping for device %s." msgstr "Zavedení nového mapování pro zařízení %s selhalo." -#: lib/luks2/luks2_reencrypt.c:2418 +#: lib/luks2/luks2_reencrypt.c:2419 msgid "Failed to refresh reencryption devices stack." msgstr "Zásobník zařízení k přešifrování se nepodařilo obnovit." -#: lib/luks2/luks2_reencrypt.c:2615 +#: lib/luks2/luks2_reencrypt.c:2616 msgid "Failed to set new keyslots area size." msgstr "Nastavení velikosti nové oblasti s pozicemi klíčů selhalo." -#: lib/luks2/luks2_reencrypt.c:2751 +#: lib/luks2/luks2_reencrypt.c:2752 #, c-format msgid "Data shift value is not aligned to encryption sector size (% bytes)." msgstr "Hodnota posunu dat není zarovnána s velikostí šifrovaného sektoru (% bajtů)." -#: lib/luks2/luks2_reencrypt.c:2788 src/utils_reencrypt.c:162 +#: lib/luks2/luks2_reencrypt.c:2789 src/utils_reencrypt.c:162 #, c-format msgid "Unsupported resilience mode %s" msgstr "Nepodporovaný režim odolnosti %s" -#: lib/luks2/luks2_reencrypt.c:2824 +#: lib/luks2/luks2_reencrypt.c:2825 msgid "Moved segment size can not be greater than data shift value." msgstr "Velikost přesunované oblasti nemůže být větší než hodnota posunu dat." -#: lib/luks2/luks2_reencrypt.c:2866 +#: lib/luks2/luks2_reencrypt.c:2867 msgid "Invalid reencryption resilience parameters." msgstr "Neplatné parametry režimu odolnosti při přešifrování." -#: lib/luks2/luks2_reencrypt.c:2888 +#: lib/luks2/luks2_reencrypt.c:2889 #, c-format msgid "Moved segment too large. Requested size %, available space for: %." msgstr "Přesunovaná oblast je příliš velká. Požadovaná velikost %, dostupné místo %." -#: lib/luks2/luks2_reencrypt.c:2977 +#: lib/luks2/luks2_reencrypt.c:2978 msgid "Failed to clear table." msgstr "Vyprázdnění tabulky selhalo." -#: lib/luks2/luks2_reencrypt.c:3063 +#: lib/luks2/luks2_reencrypt.c:3064 #, c-format msgid "Data shift (% sectors) is less than future data offset (% sectors)." msgstr "Posun dat (% sektorů) je menší než budoucí poloha dat (% sektorů)." -#: lib/luks2/luks2_reencrypt.c:3078 lib/luks2/luks2_reencrypt.c:3085 +#: lib/luks2/luks2_reencrypt.c:3079 lib/luks2/luks2_reencrypt.c:3086 msgid "Reduced data size is larger than real device size." msgstr "Zmenšená velikost dat je větší než velikost skutečného zařízení" -#: lib/luks2/luks2_reencrypt.c:3095 +#: lib/luks2/luks2_reencrypt.c:3096 #, c-format msgid "Data device is not aligned to encryption sector size (% bytes)." msgstr "Zařízení s daty není zarovnáno na velikost šifrovaného sektoru (% bajtů)." -#: lib/luks2/luks2_reencrypt.c:3125 lib/luks2/luks2_reencrypt.c:3643 -#: lib/luks2/luks2_reencrypt.c:3664 +#: lib/luks2/luks2_reencrypt.c:3126 lib/luks2/luks2_reencrypt.c:3644 +#: lib/luks2/luks2_reencrypt.c:3665 #, c-format msgid "Failed to open %s in exclusive mode (already mapped or mounted)." msgstr "Zařízení %s nebylo možné otevřít ve výlučném režimu (již namapováno nebo připojeno)." -#: lib/luks2/luks2_reencrypt.c:3332 +#: lib/luks2/luks2_reencrypt.c:3333 msgid "Device not marked for LUKS2 reencryption." msgstr "Zařízení není označeno pro přešifrování LUKS2." -#: lib/luks2/luks2_reencrypt.c:3349 lib/luks2/luks2_reencrypt.c:4403 +#: lib/luks2/luks2_reencrypt.c:3350 lib/luks2/luks2_reencrypt.c:4404 msgid "Failed to load LUKS2 reencryption context." msgstr "Načtení kontextu přešifrování LUKS2 selhalo." -#: lib/luks2/luks2_reencrypt.c:3444 lib/luks2/luks2_reencrypt.c:3784 +#: lib/luks2/luks2_reencrypt.c:3445 lib/luks2/luks2_reencrypt.c:3785 msgid "Device is not in reencryption." msgstr "Zařízení se nepřešifrovává." -#: lib/luks2/luks2_reencrypt.c:3451 lib/luks2/luks2_reencrypt.c:3791 +#: lib/luks2/luks2_reencrypt.c:3452 lib/luks2/luks2_reencrypt.c:3792 msgid "Reencryption process is already running." msgstr "Proces přešifrování již běží." -#: lib/luks2/luks2_reencrypt.c:3453 lib/luks2/luks2_reencrypt.c:3793 +#: lib/luks2/luks2_reencrypt.c:3454 lib/luks2/luks2_reencrypt.c:3794 msgid "Failed to acquire reencryption lock." msgstr "Získání zámku pro přešifrování selhalo." -#: lib/luks2/luks2_reencrypt.c:3471 +#: lib/luks2/luks2_reencrypt.c:3472 msgid "Cannot proceed with reencryption. Run reencryption recovery first." msgstr "V přešifrování nelze pokračovat. Spusťte nejprve obnovu přešifrování." -#: lib/luks2/luks2_reencrypt.c:3607 +#: lib/luks2/luks2_reencrypt.c:3608 msgid "Active device size and requested reencryption size don't match." msgstr "Aktivní velikost zařízení a velikost požadovaná k přešifrování si neodpovídají." -#: lib/luks2/luks2_reencrypt.c:3621 +#: lib/luks2/luks2_reencrypt.c:3622 msgid "Illegal device size requested in reencryption parameters." msgstr "V parametrech přešifrování je požadována zakázaná velikost zařízení." -#: lib/luks2/luks2_reencrypt.c:3723 +#: lib/luks2/luks2_reencrypt.c:3724 msgid "Reencryption in-progress. Cannot perform recovery." msgstr "Probíhá přešifrování. Obnovu nelze provést." -#: lib/luks2/luks2_reencrypt.c:3744 +#: lib/luks2/luks2_reencrypt.c:3745 msgid "LUKS2 reencryption recovery failed." msgstr "Obnova přešifrování LUKS2 selhala." -#: lib/luks2/luks2_reencrypt.c:3877 lib/luks2/luks2_reencrypt.c:4356 +#: lib/luks2/luks2_reencrypt.c:3878 lib/luks2/luks2_reencrypt.c:4357 msgid "Failed to initialize reencryption device stack." msgstr "Zásobník zařízení k přešifrování se nepodařilo inicializovat." -#: lib/luks2/luks2_reencrypt.c:3910 +#: lib/luks2/luks2_reencrypt.c:3911 msgid "LUKS2 reencryption already initialized in metadata." msgstr "V metadatech je přešifrování LUKS2 již inicializováno." -#: lib/luks2/luks2_reencrypt.c:3918 +#: lib/luks2/luks2_reencrypt.c:3919 msgid "Failed to initialize LUKS2 reencryption in metadata." msgstr "Inicializace přešifrování LUKS2 v metadatech selhala." -#: lib/luks2/luks2_reencrypt.c:3971 lib/luks2/luks2_reencrypt.c:4003 -#: lib/luks2/luks2_reencrypt.c:4033 +#: lib/luks2/luks2_reencrypt.c:3972 lib/luks2/luks2_reencrypt.c:4004 +#: lib/luks2/luks2_reencrypt.c:4034 msgid "Reencryption is not supported for DAX (persistent memory) devices." msgstr "Na zařízeních DAX (trvalá paměť) není přešifrování podporováno." -#: lib/luks2/luks2_reencrypt.c:4062 +#: lib/luks2/luks2_reencrypt.c:4063 msgid "Failed to set device segments for next reencryption hotzone." msgstr "Nastavení segmentů zařízení pro další horkou zónu přešifrování selhalo." -#: lib/luks2/luks2_reencrypt.c:4115 +#: lib/luks2/luks2_reencrypt.c:4116 msgid "Failed to write reencryption resilience metadata." msgstr "Metadata pro odolnost při přešifrování se nepodařilo zapsat." -#: lib/luks2/luks2_reencrypt.c:4122 +#: lib/luks2/luks2_reencrypt.c:4123 msgid "Decryption failed." msgstr "Rozšifrování selhalo." -#: lib/luks2/luks2_reencrypt.c:4127 +#: lib/luks2/luks2_reencrypt.c:4128 #, c-format msgid "Failed to write hotzone area starting at %." msgstr "Zápis oblasti s horkou zónou počínaje na % selhal." -#: lib/luks2/luks2_reencrypt.c:4132 +#: lib/luks2/luks2_reencrypt.c:4133 msgid "Failed to sync data." msgstr "Synchronizace dat selhala." -#: lib/luks2/luks2_reencrypt.c:4140 +#: lib/luks2/luks2_reencrypt.c:4141 msgid "Failed to update metadata after current reencryption hotzone completed." msgstr "Po dokončení přešifrování aktuální horké zóny se nepodařilo aktualizovat metadata." -#: lib/luks2/luks2_reencrypt.c:4229 +#: lib/luks2/luks2_reencrypt.c:4230 msgid "Failed to write LUKS2 metadata." msgstr "Zápis metadat LUKS2 selhal." -#: lib/luks2/luks2_reencrypt.c:4252 +#: lib/luks2/luks2_reencrypt.c:4253 msgid "Failed to wipe unused data device area." msgstr "Vyčištění oblasti zařízení s nepoužívanými daty selhalo." -#: lib/luks2/luks2_reencrypt.c:4258 +#: lib/luks2/luks2_reencrypt.c:4259 #, c-format msgid "Failed to remove unused (unbound) keyslot %d." msgstr "Odstranění nepoužívané (nepřiřazené) pozice s klíčem %d selhalo." -#: lib/luks2/luks2_reencrypt.c:4268 +#: lib/luks2/luks2_reencrypt.c:4269 msgid "Failed to remove reencryption keyslot." msgstr "Odstranění pozice s klíčem přešifrování selhalo." -#: lib/luks2/luks2_reencrypt.c:4278 +#: lib/luks2/luks2_reencrypt.c:4279 #, c-format msgid "Fatal error while reencrypting chunk starting at %, % sectors long." msgstr "Nepřekonatelná chyba při přešifrování bloku na pozici % dlouhého % sektorů." -#: lib/luks2/luks2_reencrypt.c:4282 +#: lib/luks2/luks2_reencrypt.c:4283 msgid "Online reencryption failed." msgstr "Přešifrování za běhu selhalo." -#: lib/luks2/luks2_reencrypt.c:4287 +#: lib/luks2/luks2_reencrypt.c:4288 msgid "Do not resume the device unless replaced with error target manually." msgstr "Zařízení neprobouzejte, dokud jej ručně nenahradíte chybovým cílem." -#: lib/luks2/luks2_reencrypt.c:4339 +#: lib/luks2/luks2_reencrypt.c:4340 msgid "Cannot proceed with reencryption. Unexpected reencryption status." msgstr "V přešifrování nelze pokračovat. Přešifrování se nachází v nečekaném stavu." -#: lib/luks2/luks2_reencrypt.c:4345 +#: lib/luks2/luks2_reencrypt.c:4346 msgid "Missing or invalid reencrypt context." msgstr "Chybějící nebo neplatný kontext přešifrování." -#: lib/luks2/luks2_reencrypt.c:4379 lib/luks2/luks2_reencrypt.c:4416 +#: lib/luks2/luks2_reencrypt.c:4380 lib/luks2/luks2_reencrypt.c:4417 msgid "Failed to update reencryption context." msgstr "Kontext přešifrování se nepodařilo aktualizovat." -#: lib/luks2/luks2_reencrypt_digest.c:401 +#: lib/luks2/luks2_reencrypt_digest.c:402 msgid "Reencryption metadata is invalid." msgstr "Metadata o přešifrování jsou neplatná." @@ -2188,7 +2179,7 @@ msgstr "Parametry pro šifrování pozice s klíčem lze nastavit jen u zaří msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encryption." msgstr "Parametry pro šifrování pozice s klíčem se neslučují s šifrováním pozice s klíčem LUKS2." -#: src/cryptsetup.c:150 src/cryptsetup.c:1178 src/cryptsetup.c:1545 +#: src/cryptsetup.c:150 src/cryptsetup.c:1179 src/cryptsetup.c:1544 #: src/utils_reencrypt.c:1887 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." @@ -2216,7 +2207,7 @@ msgstr "POZOR: Jedná-li se o režim plain a je-li určen soubor s klíčem, p msgid "WARNING: The --keyfile-size option is being ignored, the read size is the same as the encryption key size.\n" msgstr "POZOR: Přepínač --keyfile-size se ignoruje, velikost pro čtení je stejná jako velikosti šifrovacího klíče.\n" -#: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 +#: src/cryptsetup.c:226 src/cryptsetup.c:1374 src/cryptsetup.c:1597 #: src/integritysetup.c:188 src/utils_reencrypt.c:2138 #, c-format msgid "Blkid scan failed for %s." @@ -2227,9 +2218,9 @@ msgstr "Prohledávání blkid selhalo u %s." msgid "Detected device signature(s) on %s. Proceeding further may damage existing data." msgstr "Na %s byla nalezen vzorec zařízení. Pokračování může poškodit existující data." -#: src/cryptsetup.c:238 src/cryptsetup.c:1261 src/cryptsetup.c:1309 -#: src/cryptsetup.c:1382 src/cryptsetup.c:1522 src/cryptsetup.c:1610 -#: src/cryptsetup.c:2495 src/cryptsetup.c:2924 src/integritysetup.c:178 +#: src/cryptsetup.c:238 src/cryptsetup.c:1260 src/cryptsetup.c:1308 +#: src/cryptsetup.c:1381 src/cryptsetup.c:1521 src/cryptsetup.c:1609 +#: src/cryptsetup.c:2494 src/cryptsetup.c:2923 src/integritysetup.c:178 #: src/utils_reencrypt.c:111 src/utils_reencrypt.c:457 #: src/utils_reencrypt.c:925 msgid "Operation aborted.\n" @@ -2278,7 +2269,7 @@ msgstr "" "který umožňuje přístup k šifrovanému oddílu bez znalosti hesla.\n" "Tento výpis by měl být vždy uložen na bezpečném místě a v zašifrované podobě." -#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2520 +#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2519 msgid "" "The header dump with volume key is sensitive information\n" "that allows access to encrypted partition without a passphrase.\n" @@ -2302,9 +2293,9 @@ msgstr "Nelze určit velikost klíče svazku pro FVAULT2. Prosím, použijte př msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "Zařízení %s je stále aktivní a naplánováno pro odložené odstranění.\n" -#: src/cryptsetup.c:881 src/cryptsetup.c:1808 src/cryptsetup.c:2082 -#: src/cryptsetup.c:2229 src/cryptsetup.c:2648 src/cryptsetup.c:2729 -#: src/cryptsetup.c:3262 +#: src/cryptsetup.c:881 src/cryptsetup.c:1807 src/cryptsetup.c:2081 +#: src/cryptsetup.c:2228 src/cryptsetup.c:2647 src/cryptsetup.c:2728 +#: src/cryptsetup.c:3261 #, c-format msgid "Failed to set external tokens path %s." msgstr "Cestu k externím tokenům %s se nepodařilo nastavit." @@ -2342,31 +2333,35 @@ msgid "Result of benchmark is not reliable." msgstr "Výsledek hodnocení výkonu není spolehlivý." # ???: are aproximated? -#: src/cryptsetup.c:1170 +#: src/cryptsetup.c:1171 msgid "# Tests are approximate using memory only (no storage IO).\n" msgstr "# Testy jsou počítány jen z práce s pamětí (žádné I/O úložiště).\n" #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1195 +#: src/cryptsetup.c:1196 #, c-format msgid "#%*s Algorithm | Key | Encryption | Decryption\n" msgstr "#%*sAlgoritmus | Klíč | Šifrování | Dešifrování\n" -#: src/cryptsetup.c:1203 +#: src/cryptsetup.c:1204 #, c-format msgid "Cipher %s (with %i bits key) is not available." msgstr "Šifra %s (s %ibitovým klíčem) není dostupná." #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1222 +#: src/cryptsetup.c:1225 msgid "# Algorithm | Key | Encryption | Decryption\n" msgstr "# Algoritmus | Klíč | Šifrování | Dešifrování\n" -#: src/cryptsetup.c:1233 +#: src/cryptsetup.c:1238 msgid "N/A" msgstr "–" -#: src/cryptsetup.c:1258 +#: src/cryptsetup.c:1241 +msgid "# Cipher speed test is not available.\n" +msgstr "# Test rychlosti šifer není dostupný.\n" + +#: src/cryptsetup.c:1257 msgid "" "Unprotected LUKS2 reencryption metadata detected. Please verify the reencryption operation is desirable (see luksDump output)\n" "and continue (upgrade metadata) only if you acknowledge the operation as genuine." @@ -2375,27 +2370,27 @@ msgstr "" "přešifrování je žádoucí (vizte výstup luksDump) a pokračujte (zvýšení verze\n" "metadat) pouze, když poznáte, že operace je chtěná." -#: src/cryptsetup.c:1264 +#: src/cryptsetup.c:1263 msgid "Enter passphrase to protect and upgrade reencryption metadata: " msgstr "Zadejte heslo pro ochránění metadat o přešifrování a pro zvýšení jejich verze: " -#: src/cryptsetup.c:1308 +#: src/cryptsetup.c:1307 msgid "Really proceed with LUKS2 reencryption recovery?" msgstr "Opravdu pokračovat s obnovou přešifrování LUKS2?" -#: src/cryptsetup.c:1317 +#: src/cryptsetup.c:1316 msgid "Enter passphrase to verify reencryption metadata digest: " msgstr "Zadejte heslo pro ověření otisku metadat o přešifrování: " -#: src/cryptsetup.c:1319 +#: src/cryptsetup.c:1318 msgid "Enter passphrase for reencryption recovery: " msgstr "Zadejte heslo pro obnovení přešifrování: " -#: src/cryptsetup.c:1381 +#: src/cryptsetup.c:1380 msgid "Really try to repair LUKS device header?" msgstr "Opravdu se pokusit opravit hlavičku zařízení LUKS?" -#: src/cryptsetup.c:1409 src/integritysetup.c:76 src/integritysetup.c:244 +#: src/cryptsetup.c:1408 src/integritysetup.c:76 src/integritysetup.c:244 msgid "" "\n" "Wipe interrupted." @@ -2403,7 +2398,7 @@ msgstr "" "\n" "Výmaz přerušen." -#: src/cryptsetup.c:1414 src/integritysetup.c:81 src/integritysetup.c:289 +#: src/cryptsetup.c:1413 src/integritysetup.c:81 src/integritysetup.c:289 msgid "" "Wiping device to initialize integrity checksum.\n" "You can interrupt this by pressing CTRL+c (rest of not wiped device will contain invalid checksum).\n" @@ -2412,169 +2407,169 @@ msgstr "" "Lze přerušit pomocí Ctrl+C (zbytek nesmazaného zařízení bude obsahovat\n" "neplatné součty).\n" -#: src/cryptsetup.c:1436 src/integritysetup.c:103 +#: src/cryptsetup.c:1435 src/integritysetup.c:103 #, c-format msgid "Cannot deactivate temporary device %s." msgstr "Dočasné zařízení %s nelze deaktivovat." -#: src/cryptsetup.c:1484 +#: src/cryptsetup.c:1483 msgid "OPAL hw-only encryption does not support --cipher and --key-size, options ignored." msgstr "Čistě hardwarové šifrování Opal nepodporuje --cipher a --key-size. Přepínače se ignorují." -#: src/cryptsetup.c:1497 +#: src/cryptsetup.c:1496 msgid "Integrity option can be used only for LUKS2 format." msgstr "Volby integrity lze použít jen při formátu LUKS2." -#: src/cryptsetup.c:1502 src/cryptsetup.c:1582 +#: src/cryptsetup.c:1501 src/cryptsetup.c:1581 msgid "Unsupported LUKS2 metadata size options." msgstr "Nepodporované volby velikosti metadat LUKS2." -#: src/cryptsetup.c:1507 +#: src/cryptsetup.c:1506 msgid "OPAL is supported only for LUKS2 format." msgstr "Opal je podporován jen s formátem LUKS2." -#: src/cryptsetup.c:1512 +#: src/cryptsetup.c:1511 msgid "Inline hw tags are supported only for LUKS2 format." msgstr "Inline hardwarové značky jsou podporovány jen s formátem LUKS2." -#: src/cryptsetup.c:1521 +#: src/cryptsetup.c:1520 msgid "Header file does not exist, do you want to create it?" msgstr "Soubor s hlavičkou neexistuje. Chcete jej vytvořit?" -#: src/cryptsetup.c:1529 +#: src/cryptsetup.c:1528 #, c-format msgid "Cannot create header file %s." msgstr "Soubor s hlavičkou %s nelze vytvořit." -#: src/cryptsetup.c:1555 src/integritysetup.c:126 src/integritysetup.c:141 +#: src/cryptsetup.c:1554 src/integritysetup.c:126 src/integritysetup.c:141 #: src/integritysetup.c:150 src/integritysetup.c:328 src/integritysetup.c:336 #: src/integritysetup.c:346 msgid "No known integrity specification pattern detected." msgstr "Nelze najít žádný známý vzorek se specifikací integrity." -#: src/cryptsetup.c:1557 +#: src/cryptsetup.c:1556 msgid "Cannot use specified integrity key size." msgstr "Zadanou velikost klíče integrity nelze použít." -#: src/cryptsetup.c:1575 +#: src/cryptsetup.c:1574 #, c-format msgid "Cannot use %s as on-disk header." msgstr "%s nelze použít pro hlavičku uvnitř disku." -#: src/cryptsetup.c:1604 src/integritysetup.c:172 +#: src/cryptsetup.c:1603 src/integritysetup.c:172 #, c-format msgid "This will overwrite data on %s irrevocably." msgstr "Toto nevratně přepíše data na %s." -#: src/cryptsetup.c:1641 +#: src/cryptsetup.c:1640 msgid "OPAL Admin password cannot be empty." msgstr "Heslo správce Opal nemůže být prázdné." -#: src/cryptsetup.c:1655 src/cryptsetup.c:2099 src/cryptsetup.c:2242 -#: src/cryptsetup.c:2377 src/cryptsetup.c:2443 src/utils_reencrypt_luks1.c:428 +#: src/cryptsetup.c:1654 src/cryptsetup.c:2098 src/cryptsetup.c:2241 +#: src/cryptsetup.c:2376 src/cryptsetup.c:2442 src/utils_reencrypt_luks1.c:428 msgid "Failed to set pbkdf parameters." msgstr "Nastavení parametrů PBKDF selhalo." -#: src/cryptsetup.c:1786 +#: src/cryptsetup.c:1785 msgid "Reduced data offset is allowed only for detached LUKS header." msgstr "Zmenšená poloha dat je dovolena jen u oddělené hlavičky LUKS." -#: src/cryptsetup.c:1793 +#: src/cryptsetup.c:1792 #, c-format msgid "LUKS file container %s is too small for activation, there is no remaining space for data." msgstr "Souborový kontejner LUKS %s je na aktivaci příliš malý. Nezbývá žádné místo pro data." -#: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:277 +#: src/cryptsetup.c:1834 src/cryptsetup.c:2247 src/utils_reencrypt.c:277 #: src/utils_reencrypt.c:369 src/utils_reencrypt.c:1907 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "Bez pozic pro klíče nelze určit velikost LUKS klíče svazku. Prosím, použijte přepínač --key-size." -#: src/cryptsetup.c:1854 src/utils_reencrypt.c:303 +#: src/cryptsetup.c:1853 src/utils_reencrypt.c:303 msgid "Device requires two volume keys." msgstr "Zařízení vyžaduje dva klíče svazku." -#: src/cryptsetup.c:1889 +#: src/cryptsetup.c:1888 msgid "Some specified activation parameters were ignored with OPAL hw-only encryption." msgstr "Některé zadané aktivační parametry byly při čistě hardwarovém šifrování Opal ignorovány." -#: src/cryptsetup.c:1894 +#: src/cryptsetup.c:1893 msgid "Device activated but cannot make flags persistent." msgstr "Zařízení aktivováno, ale příznaky nelze učinit trvalými." -#: src/cryptsetup.c:1974 src/cryptsetup.c:2042 +#: src/cryptsetup.c:1973 src/cryptsetup.c:2041 #, c-format msgid "Keyslot %d is selected for deletion." msgstr "Ke smazání vybrán klíč na pozici %d." -#: src/cryptsetup.c:1986 src/cryptsetup.c:2046 +#: src/cryptsetup.c:1985 src/cryptsetup.c:2045 msgid "This is the last keyslot. Device will become unusable after purging this key." msgstr "" "Toto je poslední pozice klíče. Smazáním tohoto klíče přijdete o možnost\n" "zařízení použít." -#: src/cryptsetup.c:1987 +#: src/cryptsetup.c:1986 msgid "Enter any remaining passphrase: " msgstr "Zadejte jakékoliv jiné heslo: " -#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 +#: src/cryptsetup.c:1987 src/cryptsetup.c:2047 msgid "Operation aborted, the keyslot was NOT wiped.\n" msgstr "Operace zrušena, pozice klíče NEBYLA vymazána.\n" -#: src/cryptsetup.c:2024 +#: src/cryptsetup.c:2023 msgid "Enter passphrase to be deleted: " msgstr "Zadejte heslo, které se má smazat: " -#: src/cryptsetup.c:2074 src/cryptsetup.c:2426 src/cryptsetup.c:3086 -#: src/cryptsetup.c:3253 +#: src/cryptsetup.c:2073 src/cryptsetup.c:2425 src/cryptsetup.c:3085 +#: src/cryptsetup.c:3252 #, c-format msgid "Device %s is not a valid LUKS2 device." msgstr "Zařízení %s není platným zařízením LUKS2." -#: src/cryptsetup.c:2113 src/cryptsetup.c:2312 +#: src/cryptsetup.c:2112 src/cryptsetup.c:2311 msgid "Enter new passphrase for key slot: " msgstr "Zadejte nové heslo pro pozici klíče: " -#: src/cryptsetup.c:2147 src/utils_luks.c:342 +#: src/cryptsetup.c:2146 src/utils_luks.c:342 #, c-format msgid "Enter token PIN: " msgstr "Zadejte PIN k tokenu: " -#: src/cryptsetup.c:2149 src/utils_luks.c:344 +#: src/cryptsetup.c:2148 src/utils_luks.c:344 #, c-format msgid "Enter token %d PIN: " msgstr "Zadejte PIN k tokenu %d: " -#: src/cryptsetup.c:2208 +#: src/cryptsetup.c:2207 msgid "WARNING: The --key-slot parameter is used for new keyslot number.\n" msgstr "POZOR: Parametr --key-slot se použije pro číslo nové pozice klíče.\n" -#: src/cryptsetup.c:2285 src/utils_reencrypt_luks1.c:1094 +#: src/cryptsetup.c:2284 src/utils_reencrypt_luks1.c:1094 #, c-format msgid "Enter any existing passphrase: " msgstr "Zadejte jakékoliv existující heslo: " -#: src/cryptsetup.c:2381 +#: src/cryptsetup.c:2380 msgid "Enter passphrase to be changed: " msgstr "Zadejte heslo, které má být změněno: " -#: src/cryptsetup.c:2397 src/utils_reencrypt_luks1.c:1080 +#: src/cryptsetup.c:2396 src/utils_reencrypt_luks1.c:1080 msgid "Enter new passphrase: " msgstr "Zadejte nové heslo: " -#: src/cryptsetup.c:2447 +#: src/cryptsetup.c:2446 msgid "Enter passphrase for keyslot to be converted: " msgstr "Zadejte heslo pro pozici klíče, který má být převeden: " -#: src/cryptsetup.c:2471 +#: src/cryptsetup.c:2470 msgid "Only one device argument for isLuks operation is supported." msgstr "U operace isLuks je podporován pouze jeden argument se zařízením." -#: src/cryptsetup.c:2576 +#: src/cryptsetup.c:2575 #, c-format msgid "Keyslot %d does not contain unbound key." msgstr "Pozice klíče %d neobsahuje nepřiřazený klíč." -#: src/cryptsetup.c:2581 +#: src/cryptsetup.c:2580 msgid "" "The header dump with unbound key is sensitive information.\n" "This dump should be stored encrypted in a safe place." @@ -2582,52 +2577,52 @@ msgstr "" "Výpis hlavičky s nepřiřazeným klíčem je citlivý údaj.\n" "Tento výpis by měl být uložen na bezpečném místě a v zašifrované podobě." -#: src/cryptsetup.c:2676 src/cryptsetup.c:2712 +#: src/cryptsetup.c:2675 src/cryptsetup.c:2711 #, c-format msgid "%s is not active %s device name." msgstr "%s není název aktivního zařízení %s." -#: src/cryptsetup.c:2707 +#: src/cryptsetup.c:2706 #, c-format msgid "%s is not active LUKS device name or header is missing." msgstr "%s není název aktivního zařízení LUKS nebo mu chybí hlavička." -#: src/cryptsetup.c:2784 src/cryptsetup.c:2803 +#: src/cryptsetup.c:2783 src/cryptsetup.c:2802 msgid "Option --header-backup-file is required." msgstr "Je vyžadován přepínač --header-backup-file." -#: src/cryptsetup.c:2834 +#: src/cryptsetup.c:2833 #, c-format msgid "%s is not cryptsetup managed device." msgstr "%s není zařízení spravované nástrojem cryptsetup." -#: src/cryptsetup.c:2845 +#: src/cryptsetup.c:2844 #, c-format msgid "Refresh is not supported for device type %s" msgstr "Reaktivace není na zařízení typu %s podporována" -#: src/cryptsetup.c:2895 +#: src/cryptsetup.c:2894 #, c-format msgid "Unrecognized metadata device type %s." msgstr "Nerozpoznaná metadata druhu zařízení %s." -#: src/cryptsetup.c:2897 +#: src/cryptsetup.c:2896 msgid "Command requires device and mapped name as arguments." msgstr "Příkaz vyžaduje jako argumenty zařízení a mapovaný název." -#: src/cryptsetup.c:2915 +#: src/cryptsetup.c:2914 msgid "Enter OPAL PSID: " msgstr "Zadejte Opal PSID: " -#: src/cryptsetup.c:2915 +#: src/cryptsetup.c:2914 msgid "Enter OPAL Admin password: " msgstr "Zadejte heslo správce Opal: " -#: src/cryptsetup.c:2923 +#: src/cryptsetup.c:2922 msgid "WARNING: WHOLE disk will be factory reset and all data will be lost! Continue?" msgstr "POZOR: CELÝ disk bude uveden do továrního nastavení a všechna data budou ztracena! Pokračovat?" -#: src/cryptsetup.c:2966 +#: src/cryptsetup.c:2965 #, c-format msgid "" "This operation will erase all keyslots on device %s.\n" @@ -2636,368 +2631,368 @@ msgstr "" "Tento úkon smaže všechny pozice s klíči na zařízení %s.\n" "Po jeho dokončení zařízení bude nepoužitelné." -#: src/cryptsetup.c:2973 +#: src/cryptsetup.c:2972 msgid "Operation aborted, keyslots were NOT wiped.\n" msgstr "Operace zrušena, pozice s klíči NEBYLY smazány.\n" -#: src/cryptsetup.c:3012 +#: src/cryptsetup.c:3011 msgid "Invalid LUKS type, only luks1 and luks2 are supported." msgstr "Neplatný druh formátu LUKS. Podporován je pouze LUKS1 a LUKS2." -#: src/cryptsetup.c:3028 +#: src/cryptsetup.c:3027 #, c-format msgid "Device is already %s type." msgstr "Zařízení je již druhu %s." -#: src/cryptsetup.c:3035 +#: src/cryptsetup.c:3034 #, c-format msgid "This operation will convert %s to %s format.\n" msgstr "Tato operace převede formát %s na %s.\n" -#: src/cryptsetup.c:3038 +#: src/cryptsetup.c:3037 msgid "Operation aborted, device was NOT converted.\n" msgstr "Operace zrušena, zařízení NEBYLO převedeno.\n" -#: src/cryptsetup.c:3078 +#: src/cryptsetup.c:3077 msgid "Option --priority, --label or --subsystem is missing." msgstr "Chybí přepínač --priority, --label nebo --subsystem." -#: src/cryptsetup.c:3112 src/cryptsetup.c:3152 src/cryptsetup.c:3172 +#: src/cryptsetup.c:3111 src/cryptsetup.c:3151 src/cryptsetup.c:3171 #, c-format msgid "Token %d is invalid." msgstr "Token %d je neplatný." -#: src/cryptsetup.c:3115 src/cryptsetup.c:3175 +#: src/cryptsetup.c:3114 src/cryptsetup.c:3174 #, c-format msgid "Token %d in use." msgstr "Token %d se používá." -#: src/cryptsetup.c:3127 +#: src/cryptsetup.c:3126 #, c-format msgid "Failed to add luks2-keyring token %d." msgstr "Přidání tokenu %d klíčenky LUKS2 selhalo." -#: src/cryptsetup.c:3138 src/cryptsetup.c:3201 +#: src/cryptsetup.c:3137 src/cryptsetup.c:3200 #, c-format msgid "Failed to assign token %d to keyslot %d." msgstr "Přiřazení tokenu %d do pozice s klíčem %d selhalo." -#: src/cryptsetup.c:3155 +#: src/cryptsetup.c:3154 #, c-format msgid "Token %d is not in use." msgstr "Token %d se nepoužívá." -#: src/cryptsetup.c:3192 +#: src/cryptsetup.c:3191 msgid "Failed to import token from file." msgstr "Import tokenu ze souboru selhal." -#: src/cryptsetup.c:3217 +#: src/cryptsetup.c:3216 #, c-format msgid "Failed to get token %d for export." msgstr "Získání tokenu %d za účelem exportu selhalo." -#: src/cryptsetup.c:3230 +#: src/cryptsetup.c:3229 #, c-format msgid "Token %d is not assigned to keyslot %d." msgstr "Token %d není přiřazen pozici s klíčem %d." -#: src/cryptsetup.c:3232 src/cryptsetup.c:3239 +#: src/cryptsetup.c:3231 src/cryptsetup.c:3238 #, c-format msgid "Failed to unassign token %d from keyslot %d." msgstr "Zrušení přiřazení tokenu %d k pozici s klíčem %d selhalo." -#: src/cryptsetup.c:3298 +#: src/cryptsetup.c:3297 msgid "Option --tcrypt-hidden, --tcrypt-system or --tcrypt-backup is supported only for TCRYPT device." msgstr "Přepínač --tcrypt-hidden, --tcrypt-system nebo --tcrypt-backup je podporován jen u zařízení TCRYPT." -#: src/cryptsetup.c:3301 +#: src/cryptsetup.c:3300 msgid "Option --veracrypt or --disable-veracrypt is supported only for TCRYPT device type." msgstr "Přepínače --veracrypt a --disable-veracrypt jsou podporovány jen u typu zařízení TCRYPT." -#: src/cryptsetup.c:3304 +#: src/cryptsetup.c:3303 msgid "Option --veracrypt-pim is supported only for VeraCrypt compatible devices." msgstr "Přepínač --veracrypt-pim je podporován jen u zařízení kompatibilním s VeraCrypt." -#: src/cryptsetup.c:3308 +#: src/cryptsetup.c:3307 msgid "Option --veracrypt-query-pim is supported only for VeraCrypt compatible devices." msgstr "Přepínač --veracrypt-query-pim je podporován jen u zařízení kompatibilním s VeraCrypt." -#: src/cryptsetup.c:3310 +#: src/cryptsetup.c:3309 msgid "The options --veracrypt-pim and --veracrypt-query-pim are mutually exclusive." msgstr "Přepínače --veracrypt-pim a --veracrypt-query-pim se vzájemně vylučují." -#: src/cryptsetup.c:3319 +#: src/cryptsetup.c:3318 msgid "Option --persistent is not allowed with --test-passphrase." msgstr "Přepínač --persistent není dovolen současně s --test-passphrase." -#: src/cryptsetup.c:3322 +#: src/cryptsetup.c:3321 msgid "Options --refresh and --test-passphrase are mutually exclusive." msgstr "Přepínače --refresh a --test-passphrase se vzájemně vylučují." -#: src/cryptsetup.c:3325 +#: src/cryptsetup.c:3324 msgid "Option --shared is allowed only for open of plain device." msgstr "Přepínač --shared je dovolen jen při úkonu otevírání zařízení plain." -#: src/cryptsetup.c:3328 +#: src/cryptsetup.c:3327 msgid "Option --skip is supported only for open of plain and loopaes devices." msgstr "Přepínač --skip je podporován jen při otevírání zařízení plain a loopaes." -#: src/cryptsetup.c:3331 +#: src/cryptsetup.c:3330 msgid "Option --offset with open action is only supported for plain and loopaes devices." msgstr "Při otevírání je přepínač --offset podporován jen u zařízení plain a loopaes." -#: src/cryptsetup.c:3334 +#: src/cryptsetup.c:3333 msgid "Option --tcrypt-hidden cannot be combined with --allow-discards." msgstr "Přepínač --tcrypt-hidden nelze použít s přepínačem --allow-discards." -#: src/cryptsetup.c:3338 +#: src/cryptsetup.c:3337 msgid "Sector size option with open action is supported only for plain devices." msgstr "Otevírání s přepínačem velikosti sektoru je podporován jen u zařízení plain." # FIXME: "Large IV sectors" should read "IV large sectors". -#: src/cryptsetup.c:3342 +#: src/cryptsetup.c:3341 msgid "Large IV sectors option is supported only for opening plain type device with sector size larger than 512 bytes." msgstr "Volba inicializačního vektoru s velkými sektory je podporována jen při otevírání zařízení typu plain s velikostí sektoru větší než 512 bajtů." -#: src/cryptsetup.c:3347 +#: src/cryptsetup.c:3346 msgid "Option --test-passphrase is allowed only for open of LUKS, TCRYPT, BITLK and FVAULT2 devices." msgstr "Přepínač --test-passphrase je dovolen pouze při otevírání zařízení LUKS, TCRYPT, BITLK a FVAULT2." -#: src/cryptsetup.c:3350 src/cryptsetup.c:3380 +#: src/cryptsetup.c:3349 src/cryptsetup.c:3379 msgid "Options --device-size and --size cannot be combined." msgstr "Přepínače --device-size a --size nelze kombinovat." -#: src/cryptsetup.c:3353 +#: src/cryptsetup.c:3352 msgid "Option --unbound is allowed only for open of luks device." msgstr "Přepínač --unbound je dovolen jen při otevírání zařízení LUKS." -#: src/cryptsetup.c:3356 +#: src/cryptsetup.c:3355 msgid "Option --unbound cannot be used without --test-passphrase." msgstr "Přepínač --unbound není dovolen současně s --test-passphrase." -#: src/cryptsetup.c:3360 +#: src/cryptsetup.c:3359 msgid "Option --volume-key-keyring cannot be combined with --hash or --volume-key-file." msgstr "Přepínač --volume-key-keyring nelze použít s přepínači --hash a --volume-key-file." -#: src/cryptsetup.c:3363 +#: src/cryptsetup.c:3362 msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "Oba přepínače --volume-key-file musí být ve dvojici s odpovídajícími přepínači --key-size." -#: src/cryptsetup.c:3372 src/veritysetup.c:673 src/integritysetup.c:787 +#: src/cryptsetup.c:3371 src/veritysetup.c:673 src/integritysetup.c:787 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "Přepínače --cancel-deferred a --deferred se vzájemně vylučují." -#: src/cryptsetup.c:3388 +#: src/cryptsetup.c:3387 msgid "Option --active-name can be set only for LUKS2 device." msgstr "Přepínač --active-name lze použít jen u zařízení LUKS2." -#: src/cryptsetup.c:3391 +#: src/cryptsetup.c:3390 msgid "Options --active-name and --force-offline-reencrypt cannot be combined." msgstr "Přepínače --active-name a --force-offline-reencrypt nelze kombinovat." -#: src/cryptsetup.c:3394 +#: src/cryptsetup.c:3393 msgid "Options --new-volume-key-file and --keep-key cannot be combined." msgstr "Přepínače --new-volume-key-file a --keep-key nelze kombinovat." -#: src/cryptsetup.c:3397 +#: src/cryptsetup.c:3396 msgid "Options --new-volume-key-keyring and --keep-key cannot be combined." msgstr "Přepínače --new-volume-key-keyring a --keep-key nelze kombinovat." -#: src/cryptsetup.c:3405 src/cryptsetup.c:3435 +#: src/cryptsetup.c:3404 src/cryptsetup.c:3434 msgid "Keyslot specification is required." msgstr "Je nutné určit pozici s klíčem." -#: src/cryptsetup.c:3413 +#: src/cryptsetup.c:3412 msgid "Options --align-payload and --offset cannot be combined." msgstr "Přepínače --align-payload a --offset nelze kombinovat." -#: src/cryptsetup.c:3416 +#: src/cryptsetup.c:3415 msgid "Option --integrity-no-wipe can be used only for format action with integrity extension." msgstr "Přepínač --integrity-no-wipe smí být použit jen při formátování s rozšířením integrity." -#: src/cryptsetup.c:3419 +#: src/cryptsetup.c:3418 msgid "Only one of --use-[u]random options is allowed." msgstr "Je dovolen pouze jeden z přepínačů --use-[u]random." -#: src/cryptsetup.c:3427 +#: src/cryptsetup.c:3426 msgid "Key size is required with --unbound option." msgstr "Přepínač --unbound vyžaduje velikost klíče." -#: src/cryptsetup.c:3447 +#: src/cryptsetup.c:3446 msgid "Invalid token action." msgstr "Neplatná operace tokenu." -#: src/cryptsetup.c:3450 +#: src/cryptsetup.c:3449 msgid "--key-description parameter is mandatory for token add action." msgstr "Parametr --key-description je při přidávání tokenu povinný." -#: src/cryptsetup.c:3454 src/cryptsetup.c:3467 +#: src/cryptsetup.c:3453 src/cryptsetup.c:3466 msgid "Action requires specific token. Use --token-id parameter." msgstr "Akce vyžaduje určitý token. Použijte parametr --token-id." -#: src/cryptsetup.c:3458 +#: src/cryptsetup.c:3457 msgid "Option --unbound is valid only with token add action." msgstr "Přepínač --unbound lze použít pouze s akcí přidání." -#: src/cryptsetup.c:3460 +#: src/cryptsetup.c:3459 msgid "Options --key-slot and --unbound cannot be combined." msgstr "Přepínače --key-slot a --unbound nelze kombinovat." -#: src/cryptsetup.c:3465 +#: src/cryptsetup.c:3464 msgid "Action requires specific keyslot. Use --key-slot parameter." msgstr "Akce vyžaduje určitou pozici klíče. Použijte parametr --key-slot." -#: src/cryptsetup.c:3481 +#: src/cryptsetup.c:3480 msgid " [--type ] []" msgstr " [--type ] []" -#: src/cryptsetup.c:3481 src/veritysetup.c:487 src/integritysetup.c:554 +#: src/cryptsetup.c:3480 src/veritysetup.c:487 src/integritysetup.c:554 msgid "open device as " msgstr "otevře zařízení jako " -#: src/cryptsetup.c:3482 src/cryptsetup.c:3483 src/cryptsetup.c:3484 +#: src/cryptsetup.c:3481 src/cryptsetup.c:3482 src/cryptsetup.c:3483 #: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:555 #: src/integritysetup.c:556 src/integritysetup.c:558 msgid "" msgstr "" -#: src/cryptsetup.c:3482 src/veritysetup.c:488 src/integritysetup.c:555 +#: src/cryptsetup.c:3481 src/veritysetup.c:488 src/integritysetup.c:555 msgid "close device (remove mapping)" msgstr "zavře zařízení (odstraní mapování)" -#: src/cryptsetup.c:3483 src/integritysetup.c:558 +#: src/cryptsetup.c:3482 src/integritysetup.c:558 msgid "resize active device" msgstr "změní velikost aktivního zařízení" -#: src/cryptsetup.c:3484 +#: src/cryptsetup.c:3483 msgid "show device status" msgstr "zobrazí stav zařízení" -#: src/cryptsetup.c:3485 +#: src/cryptsetup.c:3484 msgid "[--cipher ]" msgstr "[--cipher <šifra>]" -#: src/cryptsetup.c:3485 +#: src/cryptsetup.c:3484 msgid "benchmark cipher" msgstr "zhodnotí výkon šifry" -#: src/cryptsetup.c:3486 src/cryptsetup.c:3487 src/cryptsetup.c:3488 -#: src/cryptsetup.c:3489 src/cryptsetup.c:3490 src/cryptsetup.c:3497 -#: src/cryptsetup.c:3498 src/cryptsetup.c:3499 src/cryptsetup.c:3500 -#: src/cryptsetup.c:3501 src/cryptsetup.c:3502 src/cryptsetup.c:3503 -#: src/cryptsetup.c:3504 src/cryptsetup.c:3505 src/cryptsetup.c:3506 +#: src/cryptsetup.c:3485 src/cryptsetup.c:3486 src/cryptsetup.c:3487 +#: src/cryptsetup.c:3488 src/cryptsetup.c:3489 src/cryptsetup.c:3496 +#: src/cryptsetup.c:3497 src/cryptsetup.c:3498 src/cryptsetup.c:3499 +#: src/cryptsetup.c:3500 src/cryptsetup.c:3501 src/cryptsetup.c:3502 +#: src/cryptsetup.c:3503 src/cryptsetup.c:3504 src/cryptsetup.c:3505 msgid "" msgstr "" -#: src/cryptsetup.c:3486 +#: src/cryptsetup.c:3485 msgid "try to repair on-disk metadata" msgstr "pokusí se opravit metadata uložená na disku" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3486 msgid "reencrypt LUKS2 device" msgstr "přešifruje zařízení LUKS2" -#: src/cryptsetup.c:3488 +#: src/cryptsetup.c:3487 msgid "erase all keyslots (remove encryption key)" msgstr "smaže všechny pozice s klíči (odstraní šifrovací klíč)" -#: src/cryptsetup.c:3489 +#: src/cryptsetup.c:3488 msgid "convert LUKS from/to LUKS2 format" msgstr "převede formát LUKS do/z formátu LUKS2" -#: src/cryptsetup.c:3490 +#: src/cryptsetup.c:3489 msgid "set permanent configuration options for LUKS2" msgstr "nastaví trvalé volby konfigurace pro LUKS2" -#: src/cryptsetup.c:3491 src/cryptsetup.c:3492 +#: src/cryptsetup.c:3490 src/cryptsetup.c:3491 msgid " []" msgstr " []" -#: src/cryptsetup.c:3491 +#: src/cryptsetup.c:3490 msgid "formats a LUKS device" msgstr "naformátuje zařízení LUKS" -#: src/cryptsetup.c:3492 +#: src/cryptsetup.c:3491 msgid "add key to LUKS device" msgstr "do zařízení LUKS přidá klíč" -#: src/cryptsetup.c:3493 src/cryptsetup.c:3494 src/cryptsetup.c:3495 +#: src/cryptsetup.c:3492 src/cryptsetup.c:3493 src/cryptsetup.c:3494 msgid " []" msgstr " []" -#: src/cryptsetup.c:3493 +#: src/cryptsetup.c:3492 msgid "removes supplied key or key file from LUKS device" msgstr "odstraní zadaný klíč nebo soubor s klíčem ze zařízení LUKS" -#: src/cryptsetup.c:3494 +#: src/cryptsetup.c:3493 msgid "changes supplied key or key file of LUKS device" msgstr "změní zadaný klíč nebo soubor s klíčem u zařízení LUKS" -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3494 msgid "converts a key to new pbkdf parameters" msgstr "převede klíč do nových parametrů PBKDF" -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3495 msgid " " msgstr " " -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3495 msgid "wipes key with number from LUKS device" msgstr "smaže klíč s číslem ze zařízení LUKS" -#: src/cryptsetup.c:3497 +#: src/cryptsetup.c:3496 msgid "print UUID of LUKS device" msgstr "zobrazí UUID zařízení LUKS" -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3497 msgid "tests for LUKS partition header" msgstr "otestuje na hlavičku oddílu LUKS" -#: src/cryptsetup.c:3499 +#: src/cryptsetup.c:3498 msgid "dump LUKS partition information" msgstr "vypíše údaje o oddílu LUKS" -#: src/cryptsetup.c:3500 +#: src/cryptsetup.c:3499 msgid "dump TCRYPT device information" msgstr "vypíše údaje o oddílu TCRYPT" -#: src/cryptsetup.c:3501 +#: src/cryptsetup.c:3500 msgid "dump BITLK device information" msgstr "vypíše údaje o zařízení BITLK" -#: src/cryptsetup.c:3502 +#: src/cryptsetup.c:3501 msgid "dump FVAULT2 device information" msgstr "vypíše údaje o zařízení FVAULT2" # TODO: not consistent with previous line -#: src/cryptsetup.c:3503 +#: src/cryptsetup.c:3502 msgid "Suspend LUKS device and wipe key (all IOs are frozen)" msgstr "Uspí zařízení LUKS a smaže klíč (všechny operace budou zmrazeny)" # TODO: not consistent with previous line -#: src/cryptsetup.c:3504 +#: src/cryptsetup.c:3503 msgid "Resume suspended LUKS device" msgstr "Probudí uspané zařízení LUKS" # TODO: not consistent with previous line -#: src/cryptsetup.c:3505 +#: src/cryptsetup.c:3504 msgid "Backup LUKS device header and keyslots" msgstr "Zálohuje hlavičku zařízení LUKS a jeho pozice s klíči" # TODO: not consistent with previous line -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3505 msgid "Restore LUKS device header and keyslots" msgstr "Obnoví hlavičku zařízení LUKS a jeho pozice s klíči" -#: src/cryptsetup.c:3507 +#: src/cryptsetup.c:3506 msgid " " msgstr " " -#: src/cryptsetup.c:3507 +#: src/cryptsetup.c:3506 msgid "Manipulate LUKS2 tokens" msgstr "Zachází s tokeny LUKS2" -#: src/cryptsetup.c:3526 src/veritysetup.c:505 src/integritysetup.c:573 +#: src/cryptsetup.c:3525 src/veritysetup.c:505 src/integritysetup.c:573 msgid "" "\n" " is one of:\n" @@ -3005,7 +3000,7 @@ msgstr "" "\n" " je jedna z:\n" -#: src/cryptsetup.c:3532 +#: src/cryptsetup.c:3531 msgid "" "\n" "You can also use old syntax aliases:\n" @@ -3017,7 +3012,7 @@ msgstr "" "\topen: create (plainOpen), luksOpen, loopaesOpen, tcryptOpen, bitlkOpen, fvault2Open\n" "\tclose: remove (plainClose), luksClose, loopaesClose, tcryptClose, bitlkClose, fvault2Close\n" -#: src/cryptsetup.c:3536 +#: src/cryptsetup.c:3535 #, c-format msgid "" "\n" @@ -3032,7 +3027,7 @@ msgstr "" " je číslo pozice klíče LUKS, který se má upravit\n" " je volitelný soubor s novým klíčem pro akci luksAddKey\n" -#: src/cryptsetup.c:3543 +#: src/cryptsetup.c:3542 #, c-format msgid "" "\n" @@ -3041,7 +3036,7 @@ msgstr "" "\n" "Výchozí zakompilovaný formát metadat (pro akci luksFormat) je %s.\n" -#: src/cryptsetup.c:3548 +#: src/cryptsetup.c:3547 msgid "" "\n" "LUKS2 external token plugin support is enabled.\n" @@ -3049,12 +3044,12 @@ msgstr "" "\n" "Podpora pro zásuvný modul externího tokenu LUKS2 je zapnuta.\n" -#: src/cryptsetup.c:3549 +#: src/cryptsetup.c:3548 #, c-format msgid "LUKS2 external token plugin path: %s.\n" msgstr "Cesta k zásuvnému modulu externího tokenu LUKS2: %s.\n" -#: src/cryptsetup.c:3551 +#: src/cryptsetup.c:3550 msgid "" "\n" "LUKS2 external token plugin support is disabled.\n" @@ -3062,7 +3057,7 @@ msgstr "" "\n" "Podpora pro zásuvný modul externího tokenu LUKS2 je vypnuta.\n" -#: src/cryptsetup.c:3555 +#: src/cryptsetup.c:3554 #, c-format msgid "" "\n" @@ -3079,7 +3074,7 @@ msgstr "" "Výchozí PBKDF pro LUKS2: %s\n" "\tDoba iterací: %d, nutná paměť: %d kB, souběžná vlákna: %d\n" -#: src/cryptsetup.c:3566 +#: src/cryptsetup.c:3565 #, c-format msgid "" "\n" @@ -3094,123 +3089,123 @@ msgstr "" "\tplain: %s, Klíč: %d bitů, Haš hesla: %s\n" "\tLUKS: %s, Klíč: %d bitů, Haš hlavičky LUKS: %s, RNG: %s\n" -#: src/cryptsetup.c:3575 +#: src/cryptsetup.c:3574 msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: V režimu XTS (dva vnitřní klíče) bude výchozí velikost klíče zdvojnásobena.\n" -#: src/cryptsetup.c:3593 src/veritysetup.c:647 src/integritysetup.c:733 +#: src/cryptsetup.c:3592 src/veritysetup.c:647 src/integritysetup.c:733 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: vyžaduje %s jako argumenty" -#: src/cryptsetup.c:3633 src/utils_reencrypt_luks1.c:1143 +#: src/cryptsetup.c:3632 src/utils_reencrypt_luks1.c:1143 msgid "Key slot is invalid." msgstr "Pozice klíče není platná." -#: src/cryptsetup.c:3661 +#: src/cryptsetup.c:3660 msgid "Device size must be multiple of 512 bytes sector." msgstr "Velikost zařízení musí být násobkem 512bajtových sektorů." -#: src/cryptsetup.c:3666 +#: src/cryptsetup.c:3665 msgid "Invalid max reencryption hotzone size specification." msgstr "Zadána neplatná maximální velikost horké zóny při přešifrování." -#: src/cryptsetup.c:3680 src/cryptsetup.c:3697 src/cryptsetup.c:3709 +#: src/cryptsetup.c:3679 src/cryptsetup.c:3696 src/cryptsetup.c:3708 msgid "Key size must be a multiple of 8 bits" msgstr "Velikost klíče musí být násobkem 8 bitů." -#: src/cryptsetup.c:3687 +#: src/cryptsetup.c:3686 msgid "At most 2 key size specifications can be supplied." msgstr "Zadat lze nejvíce 2 velikosti klíče." # TODO: Pluralize -#: src/cryptsetup.c:3716 src/cryptsetup.c:3727 +#: src/cryptsetup.c:3715 src/cryptsetup.c:3726 #, c-format msgid "At most %d volume key specifications can be supplied." msgstr "Zadat lze nejvíce %d klíčů svazku." -#: src/cryptsetup.c:3739 +#: src/cryptsetup.c:3738 #, c-format msgid "At most %d keyring link specifications can be supplied." msgstr "Zadat lze nejvíce %d klíčenek." -#: src/cryptsetup.c:3748 +#: src/cryptsetup.c:3747 msgid "Maximum device reduce size is 1 GiB." msgstr "Maximální velikost zmenšení zařízení je 1 GiB." -#: src/cryptsetup.c:3751 +#: src/cryptsetup.c:3750 msgid "Reduce size must be multiple of 512 bytes sector." msgstr "Velikost zmenšení musí být násobkem 512bajtových sektorů." -#: src/cryptsetup.c:3768 +#: src/cryptsetup.c:3767 msgid "Option --priority can be only ignore/normal/prefer." msgstr "Přepínač --priority smí mít pouze argument ignore, normal a prefer." -#: src/cryptsetup.c:3787 src/veritysetup.c:568 src/integritysetup.c:653 +#: src/cryptsetup.c:3786 src/veritysetup.c:568 src/integritysetup.c:653 msgid "Show this help message" msgstr "Zobrazí tuto nápovědu" -#: src/cryptsetup.c:3788 src/veritysetup.c:569 src/integritysetup.c:654 +#: src/cryptsetup.c:3787 src/veritysetup.c:569 src/integritysetup.c:654 msgid "Display brief usage" msgstr "Zobrazí stručný návod na použití" -#: src/cryptsetup.c:3789 src/veritysetup.c:570 src/integritysetup.c:655 +#: src/cryptsetup.c:3788 src/veritysetup.c:570 src/integritysetup.c:655 msgid "Print package version" msgstr "Vypíše verzi balíku" -#: src/cryptsetup.c:3800 src/veritysetup.c:581 src/integritysetup.c:666 +#: src/cryptsetup.c:3799 src/veritysetup.c:581 src/integritysetup.c:666 msgid "Help options:" msgstr "Přepínače nápovědy:" -#: src/cryptsetup.c:3823 src/veritysetup.c:602 src/integritysetup.c:686 +#: src/cryptsetup.c:3822 src/veritysetup.c:602 src/integritysetup.c:686 msgid "[OPTION...] " msgstr "[PŘEPÍNAČ…] " -#: src/cryptsetup.c:3832 src/veritysetup.c:611 src/integritysetup.c:697 +#: src/cryptsetup.c:3831 src/veritysetup.c:611 src/integritysetup.c:697 msgid "Argument missing." msgstr "Chybí argument ." -#: src/cryptsetup.c:3911 src/veritysetup.c:642 src/integritysetup.c:728 +#: src/cryptsetup.c:3910 src/veritysetup.c:642 src/integritysetup.c:728 msgid "Unknown action." msgstr "Neznámá akce." -#: src/cryptsetup.c:3929 +#: src/cryptsetup.c:3928 msgid "Option --key-file takes precedence over specified key file argument." msgstr "Přepínač --key-file má přednost před zadaným argumentem souboru s klíčem." -#: src/cryptsetup.c:3935 +#: src/cryptsetup.c:3934 msgid "Only one --key-file argument is allowed." msgstr "Je dovolen pouze jeden argument přepínače --key-file." -#: src/cryptsetup.c:3940 +#: src/cryptsetup.c:3939 msgid "Password-based key derivation function (PBKDF) can be only pbkdf2 or argon2i/argon2id." msgstr "Funkce pro odvození klíče na základě hesla (PBKDF) smí být pouze pbkdf2 nebo argon2i/argon2id." -#: src/cryptsetup.c:3945 +#: src/cryptsetup.c:3944 msgid "PBKDF forced iterations cannot be combined with iteration time option." msgstr "Vynucené iterace PBKDF nelze kombinovat s volnou doby iterací." -#: src/cryptsetup.c:3950 +#: src/cryptsetup.c:3949 msgid "Cannot link volume key to a keyring when keyring is disabled." msgstr "Je-li klíčenka vypnuta, klíč svazku nelze do klíčenky přidat." -#: src/cryptsetup.c:3955 +#: src/cryptsetup.c:3954 msgid "Cannot use keyring key description when keyring is disabled." msgstr "Je-li klíčenka vypnuta, popis klíče z klíčenky nelze použít." -#: src/cryptsetup.c:3960 +#: src/cryptsetup.c:3959 msgid "Inline integrity must be used together with --integrity option." msgstr "Inline integrita musí být použita spolu s přepínačem --integrity." -#: src/cryptsetup.c:3971 +#: src/cryptsetup.c:3970 msgid "Options --keyslot-cipher and --keyslot-key-size must be used together." msgstr "Přepínače --keyslot-cipher a --keyslot-key-size musí být použity spolu." -#: src/cryptsetup.c:3979 +#: src/cryptsetup.c:3978 msgid "No action taken. Invoked with --test-args option.\n" msgstr "Žádný úkon nebude proveden. Zavoláno s přepínačem --test-args.\n" -#: src/cryptsetup.c:3992 +#: src/cryptsetup.c:3991 msgid "Cannot disable metadata locking." msgstr "Zamykání metadata nelze vypnout." @@ -4404,6 +4399,12 @@ msgstr "Na stroji není povolena autentizace veřejným klíčem.\n" msgid "Public key authentication error: " msgstr "Chyba při autentizaci veřejným klíčem: " +#~ msgid "Required kernel crypto interface not available." +#~ msgstr "Požadované kryptografické rozhraní jádra není dostupné." + +#~ msgid "Ensure you have algif_skcipher kernel module loaded." +#~ msgstr "Ujistěte se, že jaderný modul algif_skcipher je zaveden." + #, c-format #~ msgid "Failed to read or validate BITLK FVE metadata copy #%d from %s." #~ msgstr "Z %2$s nebylo možné přečíst nebo ověřit kopii č. %1$d metadat BITLK FVE." From a74fdd471feebfa1d8e2a0db21689ad66c368420 Mon Sep 17 00:00:00 2001 From: Roland Illig Date: Sat, 4 Jul 2026 18:12:56 +0200 Subject: [PATCH 161/244] po: update de.po (from translationproject.org) --- po/de.po | 1019 +++++++++++++++++++++++++++--------------------------- 1 file changed, 510 insertions(+), 509 deletions(-) diff --git a/po/de.po b/po/de.po index 1355c6983..6032d5a24 100644 --- a/po/de.po +++ b/po/de.po @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.5-rc0\n" +"Project-Id-Version: cryptsetup 2.8.7-rc1\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2026-03-30 14:18+0200\n" -"PO-Revision-Date: 2026-03-30 21:37+0200\n" +"POT-Creation-Date: 2026-06-29 21:30+0200\n" +"PO-Revision-Date: 2026-07-03 08:04+0200\n" "Last-Translator: Roland Illig \n" "Language-Team: German \n" "Language: de\n" @@ -78,7 +78,7 @@ msgid "Requested automatic recalculation of integrity tags is not supported." msgstr "Die verlangte automatische Berechnung der Integritätsangaben wird nicht unterstützt." #: lib/libdevmapper.c:1802 lib/libdevmapper.c:1856 lib/libdevmapper.c:1859 -#: lib/luks2/luks2_json_metadata.c:2781 +#: lib/luks2/luks2_json_metadata.c:2799 msgid "Discard/TRIM is not supported." msgstr "»Discard/TRIM« wird nicht unterstützt." @@ -124,665 +124,665 @@ msgstr "Unbekannte Qualität des Zufallszahlengenerators verlangt." msgid "Error reading from RNG." msgstr "Fehler beim Einlesen vom Zufallszahlengenerator." -#: lib/setup.c:248 +#: lib/setup.c:251 msgid "OPAL support is disabled in libcryptsetup." msgstr "OPAL-Unterstützung ist in libcryptsetup deaktiviert." -#: lib/setup.c:250 +#: lib/setup.c:253 #, c-format msgid "Device %s or kernel does not support OPAL encryption." msgstr "Gerät »%s« oder Kernel unterstützt OPAL-Verschlüsselung nicht." -#: lib/setup.c:266 +#: lib/setup.c:269 msgid "Cannot initialize crypto RNG backend." msgstr "Fehler beim Initialisieren des Krypto-Zufallszahlengenerator-Backends." -#: lib/setup.c:272 +#: lib/setup.c:275 msgid "Cannot initialize crypto backend." msgstr "Fehler beim Initialisieren des Krypto-Backends." -#: lib/setup.c:305 lib/setup.c:2766 lib/verity/verity.c:109 +#: lib/setup.c:308 lib/setup.c:2769 lib/verity/verity.c:109 #, c-format msgid "Hash algorithm %s not supported." msgstr "Hash-Algorithmus »%s« wird nicht unterstützt." -#: lib/setup.c:308 lib/loopaes/loopaes.c:78 +#: lib/setup.c:311 lib/loopaes/loopaes.c:78 #, c-format msgid "Key processing error (using hash %s)." msgstr "Fehler beim Verarbeiten des Schlüssels (mit Hash-Algorithmus »%s«)." -#: lib/setup.c:389 lib/setup.c:426 +#: lib/setup.c:392 lib/setup.c:429 msgid "Cannot determine device type. Incompatible activation of device?" msgstr "Geräte-Art kann nicht bestimmt werden. Inkompatible Aktivierung des Geräts?" -#: lib/setup.c:395 lib/setup.c:4160 +#: lib/setup.c:398 lib/setup.c:4177 msgid "This operation is supported only for LUKS device." msgstr "Diese Operation wird nur für LUKS-Geräte unterstützt." -#: lib/setup.c:432 +#: lib/setup.c:435 msgid "This operation is supported only for LUKS2 device." msgstr "Diese Operation wird nur für LUKS2-Geräte unterstützt." -#: lib/setup.c:489 lib/luks2/luks2_reencrypt.c:3101 +#: lib/setup.c:492 lib/luks2/luks2_reencrypt.c:3102 msgid "All key slots full." msgstr "Alle Schlüsselfächer sind voll." -#: lib/setup.c:500 +#: lib/setup.c:503 #, c-format msgid "Key slot %d is invalid, please select between 0 and %d." msgstr "Schlüsselfach %d ist ungültig, bitte wählen Sie eins zwischen 0 und %d." -#: lib/setup.c:506 +#: lib/setup.c:509 #, c-format msgid "Key slot %d is full, please select another one." msgstr "Schlüsselfach %d ist voll, bitte wählen Sie ein anderes." -#: lib/setup.c:531 lib/setup.c:3875 +#: lib/setup.c:534 lib/setup.c:3878 msgid "Device size is not aligned to device logical block size." msgstr "Gerätegröße ist nicht an logischer Sektorgröße ausgerichtet." -#: lib/setup.c:628 +#: lib/setup.c:631 #, c-format msgid "Header detected but device %s is too small." msgstr "Header gefunden, aber Gerät »%s« ist zu klein." -#: lib/setup.c:669 lib/setup.c:3760 lib/setup.c:5238 -#: lib/luks2/luks2_reencrypt.c:3948 lib/luks2/luks2_reencrypt.c:4437 +#: lib/setup.c:672 lib/setup.c:3763 lib/setup.c:5272 +#: lib/luks2/luks2_reencrypt.c:3949 lib/luks2/luks2_reencrypt.c:4438 msgid "This operation is not supported for this device type." msgstr "Diese Operation wird für diese Geräteart nicht unterstützt." -#: lib/setup.c:674 +#: lib/setup.c:677 msgid "Illegal operation with reencryption in-progress." msgstr "Ungültige Operation, während die Wiederverschlüsselung läuft." -#: lib/setup.c:806 +#: lib/setup.c:809 msgid "Failed to rollback LUKS2 metadata in memory." msgstr "Fehler beim Rückabwickeln der LUKS2-Metadaten im Speicher." -#: lib/setup.c:893 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 -#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 -#: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 -#: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2953 -#: src/cryptsetup.c:3021 src/utils_reencrypt.c:2281 +#: lib/setup.c:896 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 +#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1779 +#: src/cryptsetup.c:1963 src/cryptsetup.c:2018 src/cryptsetup.c:2216 +#: src/cryptsetup.c:2361 src/cryptsetup.c:2639 src/cryptsetup.c:2952 +#: src/cryptsetup.c:3020 src/utils_reencrypt.c:2281 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." msgstr "Gerät »%s« ist kein gültiges LUKS-Gerät." -#: lib/setup.c:896 lib/luks1/keymanage.c:517 +#: lib/setup.c:899 lib/luks1/keymanage.c:517 #, c-format msgid "Unsupported LUKS version %d." msgstr "Nicht unterstützte LUKS-Version %d." -#: lib/setup.c:1270 +#: lib/setup.c:1273 #, c-format msgid "No known cipher specification pattern detected for active device %s." msgstr "Kein bekanntes Verschlüsselungsmuster für aktives Gerät »%s« entdeckt." -#: lib/setup.c:1515 lib/setup.c:3507 lib/setup.c:3599 lib/setup.c:3611 -#: lib/setup.c:3783 lib/setup.c:5816 +#: lib/setup.c:1518 lib/setup.c:3510 lib/setup.c:3602 lib/setup.c:3614 +#: lib/setup.c:3786 lib/setup.c:5850 #, c-format msgid "Device %s is not active." msgstr "Gerät »%s« ist nicht aktiv." -#: lib/setup.c:1532 +#: lib/setup.c:1535 #, c-format msgid "Underlying device for crypt device %s disappeared." msgstr "Zugrundeliegendes Gerät für das Kryptogerät »%s« ist verschwunden." -#: lib/setup.c:1614 +#: lib/setup.c:1617 msgid "Invalid plain crypt parameters." msgstr "Ungültige Parameter für Plain-Verschlüsselung." -#: lib/setup.c:1619 lib/setup.c:2669 +#: lib/setup.c:1622 lib/setup.c:2672 msgid "Invalid key size." msgstr "Ungültige Schlüsselgröße." -#: lib/setup.c:1624 lib/setup.c:2674 lib/setup.c:2879 +#: lib/setup.c:1627 lib/setup.c:2677 lib/setup.c:2882 msgid "UUID is not supported for this crypt type." msgstr "UUID wird für diese Verschlüsselungsart nicht unterstützt." -#: lib/setup.c:1629 lib/setup.c:2679 +#: lib/setup.c:1632 lib/setup.c:2682 msgid "Detached metadata device is not supported for this crypt type." msgstr "Gerät für separierte Metadaten wird für diese Verschlüsselungsart nicht unterstützt." -#: lib/setup.c:1639 lib/setup.c:1887 lib/luks2/luks2_reencrypt.c:3034 -#: src/cryptsetup.c:1492 src/cryptsetup.c:3760 +#: lib/setup.c:1642 lib/setup.c:1890 lib/luks2/luks2_reencrypt.c:3035 +#: src/cryptsetup.c:1491 src/cryptsetup.c:3759 msgid "Unsupported encryption sector size." msgstr "Nicht unterstützte Sektorengröße für Verschlüsselung." -#: lib/setup.c:1647 lib/setup.c:1916 lib/setup.c:3869 +#: lib/setup.c:1650 lib/setup.c:1919 lib/setup.c:3872 msgid "Device size is not aligned to requested sector size." msgstr "Gerätegröße ist nicht an verlangter Sektorgröße ausgerichtet." -#: lib/setup.c:1699 lib/setup.c:1951 lib/setup.c:2328 +#: lib/setup.c:1702 lib/setup.c:1954 lib/setup.c:2331 msgid "Can't format LUKS without device." msgstr "Ohne Gerät kann LUKS nicht formatiert werden." -#: lib/setup.c:1704 lib/setup.c:1956 +#: lib/setup.c:1707 lib/setup.c:1959 #, c-format msgid "Zoned device %s cannot be used for LUKS header." msgstr "Gezontes Gerät »%s« kann nicht für einen LUKS-Kopfbereich verwendet werden." -#: lib/setup.c:1711 lib/setup.c:1963 lib/setup.c:2334 +#: lib/setup.c:1714 lib/setup.c:1966 lib/setup.c:2337 msgid "Requested data alignment is not compatible with data offset." msgstr "Die angeforderte Datenausrichtung ist nicht mit dem Datenoffset kompatibel." -#: lib/setup.c:1751 lib/setup.c:1981 +#: lib/setup.c:1754 lib/setup.c:1984 msgid "WARNING: DAX device can corrupt data as it does not guarantee atomic sector updates.\n" msgstr "Warnung: DAX-Gerät kann Daten beschädigen, da es nicht garantiert, dass Sektoren atomar aktualisiert werden.\n" -#: lib/setup.c:1789 lib/setup.c:2088 lib/setup.c:2109 lib/setup.c:2517 -#: lib/setup.c:2564 lib/setup.c:2896 +#: lib/setup.c:1792 lib/setup.c:2091 lib/setup.c:2112 lib/setup.c:2520 +#: lib/setup.c:2567 lib/setup.c:2899 #, c-format msgid "Cannot wipe header on device %s." msgstr "Fehler beim Auslöschen des Headers auf Gerät »%s«." -#: lib/setup.c:1802 lib/setup.c:2161 +#: lib/setup.c:1805 lib/setup.c:2164 #, c-format msgid "Device %s is too small for activation, there is no remaining space for data.\n" msgstr "Gerät %s ist zu klein für die Aktivierung, es ist kein Platz mehr für Daten vorhanden.\n" -#: lib/setup.c:1843 +#: lib/setup.c:1846 msgid "Volume key is too small for encryption with integrity extensions." msgstr "Laufwerksschlüssel ist zu klein für die Verschlüsselung mit Integritätserweiterungen." -#: lib/setup.c:1847 +#: lib/setup.c:1850 msgid "Integrity key size is too small." msgstr "Integritäts-Schlüsselgröße ist zu klein." -#: lib/setup.c:1856 +#: lib/setup.c:1859 #, c-format msgid "Cipher %s-%s (key size %zd bits) is not available." msgstr "Verschlüsselung »%s-%s« (Schlüsselgröße %zd Bits) ist nicht verfügbar." -#: lib/setup.c:1897 +#: lib/setup.c:1900 msgid "WARNING: The device activation will fail, dm-crypt is missing support for requested encryption sector size.\n" msgstr "WARNUNG: Die Geräteaktivierung wird fehlschlagen, dm-crypt fehlt die Unterstützung für die angeforderte Verschlüsselungsgröße.\n" -#: lib/setup.c:2091 lib/setup.c:2458 lib/setup.c:2520 lib/utils_device.c:906 -#: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3073 -#: lib/luks2/luks2_reencrypt.c:4497 +#: lib/setup.c:2094 lib/setup.c:2461 lib/setup.c:2523 lib/utils_device.c:906 +#: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3074 +#: lib/luks2/luks2_reencrypt.c:4498 #, c-format msgid "Device %s is too small." msgstr "Gerät »%s« ist zu klein." -#: lib/setup.c:2102 lib/setup.c:2141 lib/setup.c:2557 lib/setup.c:2615 +#: lib/setup.c:2105 lib/setup.c:2144 lib/setup.c:2560 lib/setup.c:2618 #, c-format msgid "Cannot format device %s in use." msgstr "Gerät »%s« kann nicht formatiert werden, da es gerade benutzt wird." -#: lib/setup.c:2105 lib/setup.c:2144 lib/setup.c:2560 lib/setup.c:2618 +#: lib/setup.c:2108 lib/setup.c:2147 lib/setup.c:2563 lib/setup.c:2621 #, c-format msgid "Cannot format device %s, permission denied." msgstr "Gerät »%s« kann nicht formatiert werden, Zugriff verweigert." -#: lib/setup.c:2129 lib/setup.c:2587 lib/setup.c:2969 +#: lib/setup.c:2132 lib/setup.c:2590 lib/setup.c:2972 #, c-format msgid "Cannot format integrity for device %s." msgstr "Fehler beim Formatieren der Integrität auf Gerät »%s«." -#: lib/setup.c:2148 lib/setup.c:2626 +#: lib/setup.c:2151 lib/setup.c:2629 #, c-format msgid "Cannot format device %s." msgstr "Gerät »%s« kann nicht formatiert werden." -#: lib/setup.c:2191 +#: lib/setup.c:2194 msgid "Cannot get OPAL alignment parameters." msgstr "Fehler beim Ermitteln der OPAL-Ausrichtungs-Parameter." -#: lib/setup.c:2203 +#: lib/setup.c:2206 msgid "Bogus OPAL logical block size." msgstr "Falsche Größe für logischen OPAL-Block." -#: lib/setup.c:2208 lib/luks2/hw_opal/hw_opal.c:305 +#: lib/setup.c:2211 lib/luks2/hw_opal/hw_opal.c:305 msgid "Bogus OPAL logical block size differs from device block size." msgstr "Falsche Größe für logischen OPAL-Block, weicht von der Geräte-Blockgröße ab." -#: lib/setup.c:2214 +#: lib/setup.c:2217 msgid "Requested data offset is not compatible with OPAL block size." msgstr "Der gewünschte Datenoffset ist nicht mit der OPAL-Blockgröße kompatibel." -#: lib/setup.c:2221 +#: lib/setup.c:2224 msgid "Requested data alignment is not compatible with OPAL alignment." msgstr "Die gewünschte Datenausrichtung ist nicht mit der OPAL-Ausrichtung kompatibel." -#: lib/setup.c:2241 +#: lib/setup.c:2244 msgid "Data offset does not satisfy OPAL alignment requirements." msgstr "Der Datenoffset erfüllt die OPAL-Ausrichtungsbedingungen nicht." -#: lib/setup.c:2254 +#: lib/setup.c:2257 msgid "Requested data alignment does not satisfy locking range alignment requirements." msgstr "Die gewünschte Datenausrichtung erfüllt die Anforderungen an die Ausrichtung des Sperrbereichs nicht." -#: lib/setup.c:2468 +#: lib/setup.c:2471 #, c-format msgid "Compensating device size by % sectors to align it with OPAL alignment granularity." msgstr "Gerätegröße wird um % Sektoren angepasst, um zur Granularität der OPAL-Ausrichtung zu passen." -#: lib/setup.c:2528 lib/setup.c:4243 lib/setup.c:4432 lib/utils_wipe.c:356 -#: lib/luks2/luks2_json_metadata.c:2724 lib/luks2/luks2_json_metadata.c:2992 +#: lib/setup.c:2531 lib/setup.c:4260 lib/setup.c:4466 lib/utils_wipe.c:356 +#: lib/luks2/luks2_json_metadata.c:2742 lib/luks2/luks2_json_metadata.c:3017 #, c-format msgid "Failed to acquire OPAL lock on device %s." msgstr "Fehler beim Zugriff auf die OPAL-Sperre für das Gerät »%s«." -#: lib/setup.c:2538 +#: lib/setup.c:2541 msgid "Incorrect OPAL Admin key." msgstr "Falscher OPAL-Admin-Schlüssel." -#: lib/setup.c:2540 +#: lib/setup.c:2543 msgid "Cannot setup OPAL segment." msgstr "Fehler beim Einrichten des OPAL-Segments." -#: lib/setup.c:2622 +#: lib/setup.c:2625 #, c-format msgid "Cannot format device %s, OPAL device seems to be fully write-protected now." msgstr "Gerät »%s« kann nicht formatiert werden, OPAL-Gerät scheint jetzt komplett schreibgeschützt zu sein." -#: lib/setup.c:2624 +#: lib/setup.c:2627 msgid "This is perhaps a bug in firmware. Run OPAL PSID reset and reconnect for recovery." msgstr "Das könnte ein Fehler in der Firmware sein. Lassen Sie »OPAL PSID reset und reconnect« zur Wiederherstellung." -#: lib/setup.c:2644 +#: lib/setup.c:2647 #, c-format msgid "Locking range %d reset on device %s failed." msgstr "Fehler beim Zurücksetzen des Sperrbereichs %d auf Gerät »%s«." -#: lib/setup.c:2664 +#: lib/setup.c:2667 msgid "Can't format LOOPAES without device." msgstr "Ohne Gerät kann LOOPAES nicht formatiert werden." -#: lib/setup.c:2709 +#: lib/setup.c:2712 msgid "Can't format VERITY without device." msgstr "Ohne Gerät kann VERITY nicht formatiert werden." -#: lib/setup.c:2720 lib/verity/verity.c:88 +#: lib/setup.c:2723 lib/verity/verity.c:88 #, c-format msgid "Unsupported VERITY hash type %d." msgstr "Nicht unterstützte VERITY-Hash-Art %d." -#: lib/setup.c:2726 lib/verity/verity.c:96 +#: lib/setup.c:2729 lib/verity/verity.c:96 msgid "Unsupported VERITY block size." msgstr "Nicht unterstützte VERITY-Blockgröße." -#: lib/setup.c:2731 lib/verity/verity.c:61 +#: lib/setup.c:2734 lib/verity/verity.c:61 msgid "Unsupported VERITY hash offset." msgstr "Nicht unterstützter VERITY-Hash-Offset." -#: lib/setup.c:2736 +#: lib/setup.c:2739 msgid "Unsupported VERITY FEC offset." msgstr "Nicht unterstützter VERITY-FEC-Offset." -#: lib/setup.c:2760 +#: lib/setup.c:2763 msgid "Data area overlaps with hash area." msgstr "Datenbereich und Hashbereich überlappen sich." -#: lib/setup.c:2785 +#: lib/setup.c:2788 msgid "Hash area overlaps with FEC area." msgstr "Hashbereich und FEC-Bereich überlappen sich." -#: lib/setup.c:2792 +#: lib/setup.c:2795 msgid "Data area overlaps with FEC area." msgstr "Datenbereich und FEC-Bereich überlappen sich." -#: lib/setup.c:2884 +#: lib/setup.c:2887 msgid "Integrity key size mismatch." msgstr "Größen der Integritätsschlüssel passen nicht zusammen." -#: lib/setup.c:2935 +#: lib/setup.c:2938 #, c-format msgid "WARNING: Requested tag size %d bytes differs from %s size output (%d bytes).\n" msgstr "WARNUNG: Angeforderte Taggröße mit %d Bytes unterscheidet sich von der Ausgabe der Größe %s (%d Bytes).\n" -#: lib/setup.c:3048 lib/setup.c:3150 +#: lib/setup.c:3051 lib/setup.c:3153 #, c-format msgid "Unknown or unsupported device type %s requested." msgstr "Unbekannte oder nicht unterstützte Art des Verschlüsselungsgeräts »%s« verlangt." -#: lib/setup.c:3064 +#: lib/setup.c:3067 #, c-format msgid "Device %s does not provide inline integrity data fields." msgstr "Gerät »%s« bietet keine Datenfelder für Inline-Integrität." -#: lib/setup.c:3070 +#: lib/setup.c:3073 #, c-format msgid "Inline tag size % [bytes] is larger than % provided by device %s." msgstr "Die Inline-Tag-Größe % [Bytes] ist größer als die % vom Gerät %s bereitgestellte." -#: lib/setup.c:3085 +#: lib/setup.c:3088 #, c-format msgid "Sector must be the same as device hardware sector (%zu bytes)." msgstr "Der Sektor muss mit dem Hardware-Sektor des Geräts übereinstimmen (%zu Bytes)." -#: lib/setup.c:3515 lib/setup.c:3604 lib/setup.c:3617 +#: lib/setup.c:3518 lib/setup.c:3607 lib/setup.c:3620 #, c-format msgid "Unsupported parameters on device %s." msgstr "Nicht unterstützte Parameter für Gerät %s." -#: lib/setup.c:3521 lib/setup.c:3624 lib/luks2/luks2_reencrypt.c:2928 -#: lib/luks2/luks2_reencrypt.c:3197 lib/luks2/luks2_reencrypt.c:3594 +#: lib/setup.c:3524 lib/setup.c:3627 lib/luks2/luks2_reencrypt.c:2929 +#: lib/luks2/luks2_reencrypt.c:3198 lib/luks2/luks2_reencrypt.c:3595 #, c-format msgid "Mismatching parameters on device %s." msgstr "Parameter für Gerät %s sind durcheinander." -#: lib/setup.c:3647 +#: lib/setup.c:3650 msgid "Crypt devices mismatch." msgstr "Verschlüsselungsgeräte passen nicht zusammen." -#: lib/setup.c:3679 lib/setup.c:3684 lib/luks2/luks2_reencrypt.c:2412 -#: lib/luks2/luks2_reencrypt.c:2944 lib/luks2/luks2_reencrypt.c:4236 +#: lib/setup.c:3682 lib/setup.c:3687 lib/luks2/luks2_reencrypt.c:2413 +#: lib/luks2/luks2_reencrypt.c:2945 lib/luks2/luks2_reencrypt.c:4237 #, c-format msgid "Failed to reload device %s." msgstr "Gerät »%s« konnte nicht neugeladen werden." -#: lib/setup.c:3690 lib/setup.c:3696 lib/luks2/luks2_reencrypt.c:2382 -#: lib/luks2/luks2_reencrypt.c:2389 lib/luks2/luks2_reencrypt.c:2958 +#: lib/setup.c:3693 lib/setup.c:3699 lib/luks2/luks2_reencrypt.c:2383 +#: lib/luks2/luks2_reencrypt.c:2390 lib/luks2/luks2_reencrypt.c:2959 #, c-format msgid "Failed to suspend device %s." msgstr "Gerät »%s« konnte nicht stillgelegt werden." -#: lib/setup.c:3702 lib/luks2/luks2_reencrypt.c:2396 -#: lib/luks2/luks2_reencrypt.c:2979 lib/luks2/luks2_reencrypt.c:4149 -#: lib/luks2/luks2_reencrypt.c:4240 +#: lib/setup.c:3705 lib/luks2/luks2_reencrypt.c:2397 +#: lib/luks2/luks2_reencrypt.c:2980 lib/luks2/luks2_reencrypt.c:4150 +#: lib/luks2/luks2_reencrypt.c:4241 #, c-format msgid "Failed to resume device %s." msgstr "Gerät »%s« konnte nicht fortgesetzt werden." -#: lib/setup.c:3717 +#: lib/setup.c:3720 #, c-format msgid "Fatal error while reloading device %s (on top of device %s)." msgstr "Schwerwiegender Fehler beim Neuladen von Gerät »%s« (über Gerät »%s«)." -#: lib/setup.c:3720 lib/setup.c:3722 +#: lib/setup.c:3723 lib/setup.c:3725 #, c-format msgid "Failed to switch device %s to dm-error." msgstr "Gerät »%s« konnte nicht auf dm-error umgeschaltet werden." -#: lib/setup.c:3765 +#: lib/setup.c:3768 msgid "Can not resize LUKS2 device with static size." msgstr "Größe des LUKS2-Geräts kann nicht geändert werden, da sie statisch ist." -#: lib/setup.c:3770 +#: lib/setup.c:3773 msgid "Resize of LUKS2 device with integrity protection is not supported." msgstr "Die Größenänderung eines LUKS2-Geräts mit Integritätsschutz wird nicht unterstützt." -#: lib/setup.c:3816 +#: lib/setup.c:3819 msgid "Cannot resize loop device." msgstr "Fehler beim Ändern der Größe des Loopback-Geräts." -#: lib/setup.c:3860 +#: lib/setup.c:3863 msgid "WARNING: Maximum size already set or kernel doesn't support resize.\n" msgstr "WARNUNG: Die maximale Größe ist bereits eingestellt oder der Kernel unterstützt die Größenänderung nicht.\n" -#: lib/setup.c:3926 +#: lib/setup.c:3929 msgid "Resize failed, the kernel doesn't support it." msgstr "Fehler bei Größenänderung, der Kernel unterstützt sie nicht." -#: lib/setup.c:3958 +#: lib/setup.c:3961 msgid "Do you really want to change UUID of device?" msgstr "Wollen Sie wirklich die UUID des Geräts ändern?" -#: lib/setup.c:4050 +#: lib/setup.c:4053 msgid "Header backup file does not contain compatible LUKS header." msgstr "Header-Backupdatei enthält keinen kompatiblen LUKS-Header." -#: lib/setup.c:4143 +#: lib/setup.c:4160 #, c-format msgid "Volume %s is not active." msgstr "Laufwerk »%s« ist nicht aktiv." -#: lib/setup.c:4198 +#: lib/setup.c:4215 #, c-format msgid "Volume %s is already suspended." msgstr "Laufwerk »%s« ist bereits im Ruhezustand." -#: lib/setup.c:4224 +#: lib/setup.c:4241 #, c-format msgid "Suspend is not supported for device %s." msgstr "Das Gerät »%s« unterstützt keinen Ruhezustand." -#: lib/setup.c:4226 lib/setup.c:4234 +#: lib/setup.c:4243 lib/setup.c:4251 #, c-format msgid "Error during suspending device %s." msgstr "Das Gerät »%s« kann nicht in den Ruhezustand versetzt werden." -#: lib/setup.c:4249 +#: lib/setup.c:4266 #, c-format msgid "Device %s was suspended but hardware OPAL device cannot be locked." msgstr "Gerät »%s« ist im Ruhezustand, aber das Hardware-OPAL-Gerät kann nicht gesperrt werden." -#: lib/setup.c:4280 lib/setup.c:4457 +#: lib/setup.c:4297 lib/setup.c:4491 #, c-format msgid "Resume is not supported for device %s." msgstr "Das Gerät »%s« kann nicht aus dem Ruhezustand aufgeweckt werden." -#: lib/setup.c:4282 lib/setup.c:4447 lib/setup.c:4459 +#: lib/setup.c:4299 lib/setup.c:4481 lib/setup.c:4493 #, c-format msgid "Error during resuming device %s." msgstr "Fehler beim Aufwecken von Gerät »%s« aus dem Ruhezustand." -#: lib/setup.c:4301 +#: lib/setup.c:4335 msgid "Failed to unlink volume key from user specified keyring." msgstr "Fehler beim Ablösen des Laufwerkschlüssels vom benutzerspezifischen Schlüsselbund." -#: lib/setup.c:4423 lib/setup.c:5603 +#: lib/setup.c:4457 lib/setup.c:5637 msgid "Failed to link volume key in user defined keyring." msgstr "Fehler beim Verknüpfen des Laufwerkschlüssels im benutzerspezifischen Schlüsselbund." -#: lib/setup.c:4522 src/cryptsetup.c:2721 +#: lib/setup.c:4556 src/cryptsetup.c:2720 #, c-format msgid "Volume %s is not suspended." msgstr "Laufwerk »%s« ist nicht im Ruhezustand." -#: lib/setup.c:4633 lib/setup.c:7276 lib/setup.c:7298 lib/setup.c:7352 -#: src/cryptsetup.c:1856 src/cryptsetup.c:2260 src/cryptsetup.c:2278 -#: src/utils_reencrypt.c:305 src/utils_reencrypt.c:1966 +#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1855 +#: src/cryptsetup.c:2259 src/cryptsetup.c:2277 src/utils_reencrypt.c:305 +#: src/utils_reencrypt.c:1966 msgid "Volume key does not match the volume." msgstr "Der Laufwerksschlüssel passt nicht zum Laufwerk." -#: lib/setup.c:4787 +#: lib/setup.c:4821 msgid "Failed to swap new key slot." msgstr "Neues Schlüsselfach konnte nicht ausgewechselt werden." -#: lib/setup.c:4885 +#: lib/setup.c:4919 #, c-format msgid "Key slot %d is invalid." msgstr "Schlüsselfach %d ist ungültig." -#: lib/setup.c:4891 src/cryptsetup.c:1977 src/cryptsetup.c:2437 -#: src/cryptsetup.c:3121 src/cryptsetup.c:3181 +#: lib/setup.c:4925 src/cryptsetup.c:1976 src/cryptsetup.c:2436 +#: src/cryptsetup.c:3120 src/cryptsetup.c:3180 #, c-format msgid "Keyslot %d is not active." msgstr "Schlüsselfach %d ist nicht aktiv." -#: lib/setup.c:4910 +#: lib/setup.c:4944 msgid "Device header overlaps with data area." msgstr "Geräteheader und Datenbereich überlappen sich." -#: lib/setup.c:5131 +#: lib/setup.c:5165 msgid "Reencryption in-progress. Cannot activate device." msgstr "Wiederverschlüsselung läuft bereits. Das Gerät kann nicht aktiviert werden." -#: lib/setup.c:5133 lib/luks2/luks2_json_metadata.c:2888 -#: lib/luks2/luks2_reencrypt.c:3725 +#: lib/setup.c:5167 lib/luks2/luks2_json_metadata.c:2913 +#: lib/luks2/luks2_reencrypt.c:3726 msgid "Failed to get reencryption lock." msgstr "Fehler beim Zugriff auf die Sperre zur Wiederverschlüsselung." -#: lib/setup.c:5155 +#: lib/setup.c:5189 msgid "LUKS2 reencryption recovery using volume key(s) failed." msgstr "Fehler beim Wiederherstellen der LUKS2-Wiederverschlüsselung mittels Laufwerksschlüssel(n)." -#: lib/setup.c:5291 +#: lib/setup.c:5325 #, c-format msgid "Device %s already exists." msgstr "Das Gerät »%s« existiert bereits." -#: lib/setup.c:5298 +#: lib/setup.c:5332 #, c-format msgid "Cannot use device %s, name is invalid or still in use." msgstr "Gerät »%s« kann nicht verwendet werden, da es gerade benutzt wird oder der Name ungültig ist." -#: lib/setup.c:5310 +#: lib/setup.c:5344 msgid "Reencryption volume keys do not match the volume." msgstr "Die Laufwerksschlüssel für die Wiederverschlüsselung passen nicht zum Laufwerk." -#: lib/setup.c:5327 +#: lib/setup.c:5361 msgid "Incorrect volume key specified for plain device." msgstr "Falscher Laufwerksschlüssel für Plain-Gerät angegeben." -#: lib/setup.c:5353 lib/setup.c:5414 +#: lib/setup.c:5387 lib/setup.c:5448 msgid "Device type is not properly initialized." msgstr "Geräteart ist nicht richtig initialisiert." -#: lib/setup.c:5452 +#: lib/setup.c:5486 msgid "Kernel keyring is not supported by the kernel." msgstr "Der Kernel-Schlüsselbund wird vom Kernel nicht unterstützt." -#: lib/setup.c:5456 +#: lib/setup.c:5490 msgid "Kernel keyring missing: required for passing signature to kernel." msgstr "Der Kernel-Schlüsselbund fehlt. Wird benötigt, um die Signatur zum Kernel zu übergeben." -#: lib/setup.c:5511 +#: lib/setup.c:5545 #, c-format msgid "Cannot use keyring key %s." msgstr "Schlüsselringschlüssel »%s« kann nicht verwendet werden." -#: lib/setup.c:5724 +#: lib/setup.c:5758 msgid "Incorrect root hash specified for verity device." msgstr "Falscher Root-Hash-Schlüssel für VERITY-Gerät angegeben." -#: lib/setup.c:5765 lib/setup.c:5790 +#: lib/setup.c:5799 lib/setup.c:5824 msgid "OPAL does not support deferred deactivation." msgstr "OPAL unterstützt verzögertes Deaktivieren nicht." -#: lib/setup.c:5780 lib/setup.c:5811 lib/luks2/luks2_json_metadata.c:2953 +#: lib/setup.c:5814 lib/setup.c:5845 lib/luks2/luks2_json_metadata.c:2978 #: src/utils_reencrypt.c:89 #, c-format msgid "Device %s is still in use." msgstr "Gerät »%s« wird gerade benutzt." -#: lib/setup.c:5798 +#: lib/setup.c:5832 #, c-format msgid "Could not cancel deferred remove from device %s." msgstr "Fehler beim Abbrechen des verzögerten Löschens von Gerät »%s«." -#: lib/setup.c:5820 +#: lib/setup.c:5854 #, c-format msgid "Invalid device %s." msgstr "Ungültiges Gerät »%s«." -#: lib/setup.c:5967 +#: lib/setup.c:6001 msgid "Volume key buffer too small." msgstr "Laufwerks-Schlüsselpuffer zu klein." -#: lib/setup.c:5978 +#: lib/setup.c:6012 msgid "Cannot retrieve volume key for LUKS2 device." msgstr "Fehler beim Ermitteln des Laufwerksschlüssels für LUKS2-Gerät." -#: lib/setup.c:5987 +#: lib/setup.c:6021 msgid "Cannot retrieve volume key for LUKS1 device." msgstr "Fehler beim Ermitteln des Laufwerksschlüssels für LUKS1-Gerät." -#: lib/setup.c:6001 +#: lib/setup.c:6035 msgid "Cannot retrieve volume key for plain device." msgstr "Fehler beim Ermitteln des Laufwerksschlüssels für Plain-Gerät." -#: lib/setup.c:6009 +#: lib/setup.c:6043 msgid "Cannot retrieve root hash for verity device." msgstr "Root-Hash für Verity-Gerät kann nicht ermittelt werden." -#: lib/setup.c:6018 +#: lib/setup.c:6052 msgid "Cannot retrieve volume key for BITLK device." msgstr "Fehler beim Ermitteln des Laufwerksschlüssels für BITLK-Gerät." -#: lib/setup.c:6023 +#: lib/setup.c:6057 msgid "Cannot retrieve volume key for FVAULT2 device." msgstr "Fehler beim Ermitteln des Laufwerksschlüssels für FVAULT2-Gerät." -#: lib/setup.c:6025 +#: lib/setup.c:6059 #, c-format msgid "This operation is not supported for %s crypt device." msgstr "Diese Operation wird für Kryptogerät »%s« nicht unterstützt." -#: lib/setup.c:6210 lib/setup.c:6221 +#: lib/setup.c:6244 lib/setup.c:6255 msgid "Dump operation is not supported for this device type." msgstr "Die Dump-Operation wird für diese Geräteart nicht unterstützt." -#: lib/setup.c:6601 +#: lib/setup.c:6635 #, c-format msgid "Data offset is not multiple of %u bytes." msgstr "Datenoffset ist kein Vielfaches von %u Bytes." -#: lib/setup.c:6909 +#: lib/setup.c:6943 #, c-format msgid "Cannot convert device %s which is still in use." msgstr "Gerät »%s« kann nicht konvertiert werden, da es gerade benutzt wird." -#: lib/setup.c:7217 lib/setup.c:7361 +#: lib/setup.c:7251 lib/setup.c:7406 #, c-format msgid "Failed to assign keyslot %u as the new volume key." msgstr "Schlüsselfach %u konnte nicht dem Laufwerksschlüssel zugeordnet werden." -#: lib/setup.c:7241 +#: lib/setup.c:7275 msgid "Failed to initialize default LUKS2 keyslot parameters." msgstr "Fehler beim Initialisieren der LUKS2-Schlüsselfach-Parameter." -#: lib/setup.c:7247 +#: lib/setup.c:7281 #, c-format msgid "Failed to assign keyslot %d to digest." msgstr "Schlüsselfach %d konnte nicht dem Digest zugeordnet werden." -#: lib/setup.c:7478 +#: lib/setup.c:7523 msgid "Cannot add key slot, all slots disabled and no volume key provided." msgstr "Schlüsselfach kann nicht hinzugefügt werden, da alle Fächer deaktiviert sind und kein Laufwerksschlüssel angegeben wurde." -#: lib/setup.c:7551 lib/verity/verity.c:333 +#: lib/setup.c:7611 lib/setup.c:7626 lib/verity/verity.c:333 msgid "Failed to load key in kernel keyring." msgstr "Fehler beim Laden des Schlüssels im Kernel-Schlüsselbund." -#: lib/setup.c:7742 +#: lib/setup.c:7807 #, c-format msgid "Could not find keyring described by \"%s\"." msgstr "Schlüsselbund mit der Beschreibung »%s« nicht gefunden." -#: lib/setup.c:7807 +#: lib/setup.c:7872 msgid "Failed to acquire global memory-hard access serialization lock." msgstr "Globale Speicherzugriffsserialisierungssperre konnte nicht angefordert werden." -#: lib/utils.c:204 lib/tcrypt/tcrypt.c:490 +#: lib/utils.c:205 lib/tcrypt/tcrypt.c:488 msgid "Failed to open key file." msgstr "Fehler beim Öffnen der Schlüsseldatei." -#: lib/utils.c:212 +#: lib/utils.c:213 msgid "Cannot read keyfile from a terminal." msgstr "Fehler beim Einlesen der Schlüsseldatei »%s« vom Terminal." -#: lib/utils.c:228 +#: lib/utils.c:229 msgid "Failed to stat key file." msgstr "Fehler beim Öffnen der Schlüsseldatei." -#: lib/utils.c:236 lib/utils.c:257 +#: lib/utils.c:237 lib/utils.c:258 msgid "Cannot seek to requested keyfile offset." msgstr "Fehler beim Zugriff auf die Schlüsseldatei." -#: lib/utils.c:251 lib/utils.c:266 src/utils_password.c:219 +#: lib/utils.c:252 lib/utils.c:267 src/utils_password.c:219 #: src/utils_password.c:231 msgid "Out of memory while reading passphrase." msgstr "Zu wenig Speicher zum Einlesen der Passphrase." -#: lib/utils.c:286 +#: lib/utils.c:287 msgid "Error reading passphrase." msgstr "Fehler beim Einlesen der Passphrase." -#: lib/utils.c:303 +#: lib/utils.c:304 msgid "Nothing to read on input." msgstr "Nichts zu lesen in der Eingabe." -#: lib/utils.c:310 +#: lib/utils.c:311 msgid "Maximum keyfile size exceeded." msgstr "Größenbegrenzung für die Schlüsseldatei überschritten." -#: lib/utils.c:315 +#: lib/utils.c:316 msgid "Cannot read requested amount of data." msgstr "Die gewünschte Menge an Daten kann nicht eingelesen werden." @@ -963,7 +963,7 @@ msgid "Cipher specification should be in [cipher]-[mode]-[iv] format." msgstr "Verschlüsselungsverfahren sollte im Format [Verfahren]-[Modus]-[IV] sein." #: lib/luks1/keyencryption.c:85 lib/luks1/keymanage.c:353 -#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1150 +#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1132 #: lib/luks2/luks2_json_metadata.c:1518 lib/luks2/luks2_keyslot.c:711 #, c-format msgid "Cannot write to device %s, permission denied." @@ -977,13 +977,13 @@ msgstr "Fehler beim Öffnen des temporären Schlüsselspeichergeräts." msgid "Failed to access temporary keystore device." msgstr "Fehler beim Zugriff auf das temporäre Schlüsselspeichergerät." -#: lib/luks1/keyencryption.c:189 lib/luks2/luks2_keyslot_luks2.c:49 -#: lib/luks2/luks2_keyslot_luks2.c:67 lib/luks2/luks2_keyslot_reenc.c:184 +#: lib/luks1/keyencryption.c:189 lib/luks2/luks2_keyslot_luks2.c:47 +#: lib/luks2/luks2_keyslot_reenc.c:184 msgid "IO error while encrypting keyslot." msgstr "E/A-Fehler beim Verschlüsseln des Schlüsselfachs." #: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:356 -#: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:668 +#: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:659 #: lib/fvault2/fvault2.c:872 lib/verity/verity.c:67 lib/verity/verity.c:183 #: lib/verity/verity_hash.c:312 lib/verity/verity_hash.c:321 #: lib/verity/verity_hash.c:350 lib/verity/verity_fec.c:247 @@ -994,7 +994,7 @@ msgstr "E/A-Fehler beim Verschlüsseln des Schlüsselfachs." msgid "Cannot open device %s." msgstr "Fehler beim Öffnen des Geräts »%s«." -#: lib/luks1/keyencryption.c:247 lib/luks2/luks2_keyslot_luks2.c:128 +#: lib/luks1/keyencryption.c:247 lib/luks2/luks2_keyslot_luks2.c:85 msgid "IO error while decrypting keyslot." msgstr "E/A-Fehler beim Entschlüsseln des Schlüsselfachs." @@ -1084,7 +1084,7 @@ msgid "Cipher hash repaired to lowercase (%s)." msgstr "Chiffre-Hash in Kleinbuchstaben umgewandelt (%s)." #: lib/luks1/keymanage.c:417 lib/luks1/keymanage.c:523 -#: lib/luks1/keymanage.c:777 +#: lib/luks1/keymanage.c:756 #, c-format msgid "Requested LUKS hash %s is not supported." msgstr "Verlangter LUKS-Hash »%s« wird nicht unterstützt." @@ -1132,7 +1132,7 @@ msgstr "LUKS-Verschlüsselungsmodus %s ist ungültig." msgid "LUKS hash %s is invalid." msgstr "LUKS-Hash %s ist ungültig." -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 +#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1366 msgid "No known problems detected for LUKS header." msgstr "Keine bekannten Probleme im LUKS-Header erkannt." @@ -1146,51 +1146,51 @@ msgstr "Fehler beim Aktualisieren des LUKS-Headers auf Gerät »%s«." msgid "Error re-reading LUKS header after update on device %s." msgstr "Fehler beim Neueinlesen des LUKS-Headers nach dem Aktualisieren auf Gerät »%s«." -#: lib/luks1/keymanage.c:771 +#: lib/luks1/keymanage.c:750 msgid "Data offset for LUKS header must be either 0 or higher than header size." msgstr "Daten-Offset für LUKS-Header muss entweder 0 sein oder mehr als die Headergröße." -#: lib/luks1/keymanage.c:782 lib/luks1/keymanage.c:853 +#: lib/luks1/keymanage.c:761 lib/luks1/keymanage.c:832 #: lib/luks2/luks2_json_format.c:231 lib/luks2/luks2_json_metadata.c:1261 #: src/utils_reencrypt.c:701 msgid "Wrong LUKS UUID format provided." msgstr "Falsches LUKS-UUID-Format angegeben." -#: lib/luks1/keymanage.c:804 +#: lib/luks1/keymanage.c:783 msgid "Cannot create LUKS header: reading random salt failed." msgstr "LUKS-Header kann nicht angelegt werden: Fehler beim Einlesen des zufälligen Salts." # XXX -#: lib/luks1/keymanage.c:832 +#: lib/luks1/keymanage.c:811 #, c-format msgid "Cannot create LUKS header: header digest failed (using hash %s)." msgstr "LUKS-Header kann nicht angelegt werden: Fehler beim Hashen des Headers (mit Hash-Algorithmus »%s«)." -#: lib/luks1/keymanage.c:877 +#: lib/luks1/keymanage.c:856 #, c-format msgid "Key slot %d active, purge first." msgstr "Schlüsselfach %d aktiv, löschen Sie es erst." -#: lib/luks1/keymanage.c:883 +#: lib/luks1/keymanage.c:862 #, c-format msgid "Key slot %d material includes too few stripes. Header manipulation?" msgstr "Material für Schlüsselfach %d enthält zu wenige Streifen. Manipulation des Headers?" -#: lib/luks1/keymanage.c:921 lib/luks2/luks2_keyslot_luks2.c:260 +#: lib/luks1/keymanage.c:900 lib/luks2/luks2_keyslot_luks2.c:217 msgid "PBKDF2 iteration value overflow." msgstr "Überlauf im Iterationswert von PBKDF2." -#: lib/luks1/keymanage.c:1040 +#: lib/luks1/keymanage.c:1022 #, c-format msgid "Cannot open keyslot (using hash %s)." msgstr "Schlüsselfach kann nicht geöffnet werden (mit Hash-Algorithmus »%s«)." -#: lib/luks1/keymanage.c:1136 +#: lib/luks1/keymanage.c:1118 #, c-format msgid "Key slot %d is invalid, please select keyslot between 0 and %d." msgstr "Schlüsselfach %d ist ungültig, bitte wählen Sie ein Schlüsselfach zwischen 0 und %d." -#: lib/luks1/keymanage.c:1154 lib/luks2/luks2_keyslot.c:715 +#: lib/luks1/keymanage.c:1136 lib/luks2/luks2_keyslot.c:715 #, c-format msgid "Cannot wipe device %s." msgstr "Gerät »%s« kann nicht ausgelöscht werden." @@ -1211,56 +1211,48 @@ msgstr "Inkompatible Loop-AES-Schlüsseldatei erkannt." msgid "Kernel does not support loop-AES compatible mapping." msgstr "Kernel unterstützt Loop-AES-kompatibles Mapping nicht." -#: lib/tcrypt/tcrypt.c:497 +#: lib/tcrypt/tcrypt.c:495 #, c-format msgid "Error reading keyfile %s." msgstr "Fehler beim Einlesen der Schlüsseldatei »%s«." -#: lib/tcrypt/tcrypt.c:547 +#: lib/tcrypt/tcrypt.c:549 #, c-format msgid "Maximum TCRYPT passphrase length (%zu) exceeded." msgstr "Maximale Länge der TCRYPT-Passphrase (%zu) überschritten." -#: lib/tcrypt/tcrypt.c:589 +#: lib/tcrypt/tcrypt.c:591 #, c-format msgid "PBKDF2 hash algorithm %s not available, skipping." msgstr "Der Hash-Algorithmus »%s« für PBKDF2 wird nicht unterstützt, überspringe diesen Teil." -#: lib/tcrypt/tcrypt.c:608 src/cryptsetup.c:1240 -msgid "Required kernel crypto interface not available." -msgstr "Die benötigte Crypto-Kernel-Schnittstelle ist nicht verfügbar." - -#: lib/tcrypt/tcrypt.c:610 src/cryptsetup.c:1242 -msgid "Ensure you have algif_skcipher kernel module loaded." -msgstr "Stellen Sie sicher, dass das Kernelmodul »algif_skcipher« geladen ist." - -#: lib/tcrypt/tcrypt.c:752 +#: lib/tcrypt/tcrypt.c:743 #, c-format msgid "Activation is not supported for %d sector size." msgstr "Aktivierung wird für die Sektorengröße %d nicht unterstützt." -#: lib/tcrypt/tcrypt.c:758 +#: lib/tcrypt/tcrypt.c:749 msgid "Kernel does not support activation for this TCRYPT legacy mode." msgstr "Der Kernel unterstützt die Aktivierung für diesen TCRYPT-Legacymodus nicht." -#: lib/tcrypt/tcrypt.c:813 +#: lib/tcrypt/tcrypt.c:804 #, c-format msgid "Activating TCRYPT system encryption for partition %s." msgstr "TCRYPT-Systemverschlüsselung für Partition »%s« wird aktiviert." -#: lib/tcrypt/tcrypt.c:828 +#: lib/tcrypt/tcrypt.c:819 msgid "Cannot determine TCRYPT system partition offset, activating whole encrypted area." msgstr "Offset der TCRYPT-Systempartition kann nicht bestimmt werden, daher wird der gesamte verschlüsselte Bereich aktiviert." -#: lib/tcrypt/tcrypt.c:837 +#: lib/tcrypt/tcrypt.c:828 msgid "Cannot determine TCRYPT system partition offset, activating device as a system partition." msgstr "Offset der TCRYPT-Systempartition kann nicht bestimmt werden, daher wird das Gerät als Systempartition aktiviert." -#: lib/tcrypt/tcrypt.c:917 +#: lib/tcrypt/tcrypt.c:908 msgid "Kernel does not support TCRYPT compatible mapping." msgstr "Kernel unterstützt TCRYPT-kompatibles Mapping nicht." -#: lib/tcrypt/tcrypt.c:1146 +#: lib/tcrypt/tcrypt.c:1137 msgid "This function is not supported without TCRYPT header load." msgstr "Diese Funktionalität braucht einen geladenen TCRYPT-Header." @@ -1613,8 +1605,7 @@ msgid "WARNING: LUKS2 keyslots area size changed to % bytes.\n" msgstr "Warnung: Größe des LUKS2-Schlüsselfachbereichs wurde auf % Bytes geändert.\n" #: lib/luks2/luks2_json_metadata.c:1171 lib/luks2/luks2_json_metadata.c:1357 -#: lib/luks2/luks2_json_metadata.c:1417 lib/luks2/luks2_keyslot_luks2.c:81 -#: lib/luks2/luks2_keyslot_luks2.c:105 +#: lib/luks2/luks2_json_metadata.c:1417 lib/luks2/luks2_keyslot_luks2.c:71 #, c-format msgid "Failed to acquire read lock on device %s." msgstr "Fehler beim Zugriff auf die Lesesperre für das Gerät »%s«." @@ -1674,79 +1665,79 @@ msgstr "" msgid "Ignored unknown flag %s." msgstr "Unbekannter Schalter »%s« wird ignoriert." -#: lib/luks2/luks2_json_metadata.c:2545 lib/luks2/luks2_reencrypt.c:2109 +#: lib/luks2/luks2_json_metadata.c:2563 lib/luks2/luks2_reencrypt.c:2110 #, c-format msgid "Missing key for dm-crypt segment %u" msgstr "Fehlender Schlüssel für dm-crypt-Segment %u" -#: lib/luks2/luks2_json_metadata.c:2557 lib/luks2/luks2_reencrypt.c:2122 +#: lib/luks2/luks2_json_metadata.c:2575 lib/luks2/luks2_reencrypt.c:2123 msgid "Failed to set dm-crypt segment." msgstr "Fehler beim Festlegen des »dm-crypt«-Segments." -#: lib/luks2/luks2_json_metadata.c:2563 lib/luks2/luks2_reencrypt.c:2128 +#: lib/luks2/luks2_json_metadata.c:2581 lib/luks2/luks2_reencrypt.c:2129 msgid "Failed to set dm-linear segment." msgstr "Fehler beim Festlegen des »dm-linear«-Segments." -#: lib/luks2/luks2_json_metadata.c:2683 src/utils_reencrypt.c:578 +#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:578 msgid "No known cipher specification pattern detected in LUKS2 header." msgstr "Kein bekanntes Verschlüsselungsmuster in LUKS2-Kopfbereich entdeckt." -#: lib/luks2/luks2_json_metadata.c:2691 +#: lib/luks2/luks2_json_metadata.c:2709 msgid "OPAL device must have static device size." msgstr "OPAL-Gerät muss statische Gerätegröße haben." -#: lib/luks2/luks2_json_metadata.c:2711 +#: lib/luks2/luks2_json_metadata.c:2729 msgid "Encrypted OPAL device with integrity must be smaller than locking range." msgstr "Verschlüsseltes OPAL-Gerät mit Integrität muss kleiner als der Sperrbereich sein." -#: lib/luks2/luks2_json_metadata.c:2716 +#: lib/luks2/luks2_json_metadata.c:2734 msgid "OPAL device must have same size as locking range." msgstr "OPAL-Gerät muss dieselbe Größe wie der Sperrbereich haben." -#: lib/luks2/luks2_json_metadata.c:2736 +#: lib/luks2/luks2_json_metadata.c:2754 #, c-format msgid "OPAL device is %s already unlocked.\n" msgstr "Das OPAL-Gerät »%s« ist bereits entsperrt.\n" -#: lib/luks2/luks2_json_metadata.c:2775 +#: lib/luks2/luks2_json_metadata.c:2793 msgid "Unsupported device integrity configuration." msgstr "Nicht unterstützte Konfiguration für Geräteintegrität." -#: lib/luks2/luks2_json_metadata.c:2791 +#: lib/luks2/luks2_json_metadata.c:2809 msgid "Underlying dm-integrity device with unexpected provided data sectors." msgstr "Das zugrundeliegende dm-integrity-Gerät hat unerwartete Datensektoren bereitgestellt." -#: lib/luks2/luks2_json_metadata.c:2886 +#: lib/luks2/luks2_json_metadata.c:2911 msgid "Reencryption in-progress. Cannot deactivate device." msgstr "Wiederverschlüsselung läuft gerade. Das Gerät kann nicht deaktiviert werden." -#: lib/luks2/luks2_json_metadata.c:2897 lib/luks2/luks2_reencrypt.c:4286 +#: lib/luks2/luks2_json_metadata.c:2922 lib/luks2/luks2_reencrypt.c:4287 #, c-format msgid "Failed to replace suspended device %s with dm-error target." msgstr "Das stillgelegte Gerät »%s« mit dm-error-Ziel konnte nicht in den Fehlerzustand gesetzt werden." -#: lib/luks2/luks2_json_metadata.c:2976 lib/luks2/luks2_json_metadata.c:2998 +#: lib/luks2/luks2_json_metadata.c:3001 lib/luks2/luks2_json_metadata.c:3023 #, c-format msgid "Device %s was deactivated but hardware OPAL device cannot be locked." msgstr "Gerät »%s« wurde deaktiviert, aber das Hardware-OPAL-Gerät kann nicht gesperrt werden." -#: lib/luks2/luks2_json_metadata.c:3020 +#: lib/luks2/luks2_json_metadata.c:3045 msgid "Unmet LUKS2 requirements detected." msgstr "Unerfüllte LUKS2-Anforderungen entdeckt." -#: lib/luks2/luks2_json_metadata.c:3028 +#: lib/luks2/luks2_json_metadata.c:3053 msgid "Operation incompatible with device marked for legacy reencryption. Aborting." msgstr "Diese Operation kann nicht mit einem Gerät durchgeführt werden, das für Altlasten-Wiederverschlüsselung markiert ist. Wird abgebrochen." -#: lib/luks2/luks2_json_metadata.c:3030 +#: lib/luks2/luks2_json_metadata.c:3055 msgid "Operation incompatible with device marked for LUKS2 reencryption. Aborting." msgstr "Diese Operation kann nicht mit einem Gerät durchgeführt werden, das für LUKS2-Wiederverschlüsselung markiert ist. Wird abgebrochen." -#: lib/luks2/luks2_json_metadata.c:3032 +#: lib/luks2/luks2_json_metadata.c:3057 msgid "Operation incompatible with device using OPAL. Aborting." msgstr "Diese Operation kann nicht mit einem Gerät durchgeführt werden, das OPAL verwendet. Wird abgebrochen." -#: lib/luks2/luks2_json_metadata.c:3034 +#: lib/luks2/luks2_json_metadata.c:3059 msgid "Operation incompatible with device using inline HW tags. Aborting." msgstr "Der Vorgang ist nicht kompatibel mit einem Gerät, das Inline-HW-Tags verwendet. Abbruch." @@ -1758,22 +1749,22 @@ msgstr "Nicht genügend Speicher, um ein Schlüsselfach zu öffnen." msgid "Keyslot open failed." msgstr "Fehler beim Öffnen des Schlüsselfachs." -#: lib/luks2/luks2_keyslot_luks2.c:42 lib/luks2/luks2_keyslot_luks2.c:99 +#: lib/luks2/luks2_keyslot_luks2.c:40 lib/luks2/luks2_keyslot_luks2.c:77 #, c-format -msgid "Cannot use %s-%s cipher for keyslot encryption." -msgstr "Der Algorithmus %s-%s kann nicht für Schlüsselfach-Verschlüsselung verwendet werden." +msgid "Cannot use %s cipher for keyslot encryption." +msgstr "Der Algorithmus %s kann nicht für Schlüsselfach-Verschlüsselung verwendet werden." -#: lib/luks2/luks2_keyslot_luks2.c:262 +#: lib/luks2/luks2_keyslot_luks2.c:219 msgid "Not enough memory for keyslot key derivation." msgstr "Nicht genug freier Speicher, um den Schlüssel für ein Schlüsselfach abzuleiten." -#: lib/luks2/luks2_keyslot_luks2.c:276 lib/luks2/luks2_keyslot_luks2.c:405 -#: lib/luks2/luks2_keyslot_reenc.c:434 lib/luks2/luks2_reencrypt.c:2733 +#: lib/luks2/luks2_keyslot_luks2.c:233 lib/luks2/luks2_keyslot_luks2.c:358 +#: lib/luks2/luks2_keyslot_reenc.c:434 lib/luks2/luks2_reencrypt.c:2734 #, c-format msgid "Hash algorithm %s is not available." msgstr "Der Hash-Algorithmus »%s« ist nicht verfügbar." -#: lib/luks2/luks2_keyslot_luks2.c:522 +#: lib/luks2/luks2_keyslot_luks2.c:475 msgid "No space for new keyslot." msgstr "Nicht genug Speicherplatz für neues Schlüsselfach." @@ -1790,335 +1781,335 @@ msgstr "Die Art der Robustheit kann nicht geändert werden. Die neue Art bietet msgid "Failed to refresh reencryption verification digest." msgstr "Fehler beim Auffrischen des Zusammenfassungswerts der Prüfung der Wiederverschlüsselung." -#: lib/luks2/luks2_luks1_convert.c:532 +#: lib/luks2/luks2_luks1_convert.c:498 #, c-format msgid "Cannot check status of device with uuid: %s." msgstr "Fehler beim Prüfen des Zustands von Gerät mit der UUID %s." -#: lib/luks2/luks2_luks1_convert.c:558 +#: lib/luks2/luks2_luks1_convert.c:524 msgid "Unable to convert header with LUKSMETA additional metadata." msgstr "Fehler beim Konvertieren des Headers mit zusätzlichen LUKSMETA-Metadaten." -#: lib/luks2/luks2_luks1_convert.c:590 lib/luks2/luks2_reencrypt.c:3893 +#: lib/luks2/luks2_luks1_convert.c:556 lib/luks2/luks2_reencrypt.c:3894 #, c-format msgid "Unable to use cipher specification %s-%s for LUKS2." msgstr "Die Chiffrierspezifikation %s-%s kann für LUKS2 nicht verwendet werden." -#: lib/luks2/luks2_luks1_convert.c:599 +#: lib/luks2/luks2_luks1_convert.c:565 #, c-format msgid "Unable to use cipher specification %s-%s for LUKS2 keyslot." msgstr "Die Verschlüsselungsangabe %s-%s kann für LUKS2-Schlüsselfach nicht verwendet werden." -#: lib/luks2/luks2_luks1_convert.c:614 +#: lib/luks2/luks2_luks1_convert.c:580 msgid "Unable to move keyslot area. Not enough space." msgstr "Fehler beim Verschieben des Schlüsselfach-Bereichs. Nicht genug Speicherplatz." -#: lib/luks2/luks2_luks1_convert.c:653 +#: lib/luks2/luks2_luks1_convert.c:619 msgid "Cannot convert to LUKS2 format - invalid metadata." msgstr "Fehler beim Konvertieren ins LUKS2-Format: ungültige Metadaten." -#: lib/luks2/luks2_luks1_convert.c:670 +#: lib/luks2/luks2_luks1_convert.c:636 msgid "Unable to move keyslot area. LUKS2 keyslots area too small." msgstr "Fehler beim Verschieben des Schlüsselfach-Bereichs. Bereich für die LUKS2-Schlüsselfächer ist zu klein." -#: lib/luks2/luks2_luks1_convert.c:676 lib/luks2/luks2_luks1_convert.c:1006 +#: lib/luks2/luks2_luks1_convert.c:642 lib/luks2/luks2_luks1_convert.c:972 msgid "Unable to move keyslot area." msgstr "Fehler beim Verschieben des Schlüsselfach-Bereichs." -#: lib/luks2/luks2_luks1_convert.c:791 +#: lib/luks2/luks2_luks1_convert.c:757 msgid "Cannot convert to LUKS1 format - default segment encryption sector size is not 512 bytes." msgstr "Fehler beim Konvertieren ins LUKS1-Format: Standardgröße für Verschlüsselungssektoren ist nicht 512 Bytes." -#: lib/luks2/luks2_luks1_convert.c:799 +#: lib/luks2/luks2_luks1_convert.c:765 msgid "Cannot convert to LUKS1 format - key slot digests are not LUKS1 compatible." msgstr "Fehler beim Konvertieren ins LUKS1-Format: Schlüsselfach-Digeste sind nicht zu LUKS1 kompatibel." -#: lib/luks2/luks2_luks1_convert.c:813 +#: lib/luks2/luks2_luks1_convert.c:779 #, c-format msgid "Cannot convert to LUKS1 format - device uses wrapped key cipher %s." msgstr "Fehler beim Konvertieren ins LUKS1-Format: Gerät verwendet eingepacktes Verschlüsselungsverfahren %s." -#: lib/luks2/luks2_luks1_convert.c:818 +#: lib/luks2/luks2_luks1_convert.c:784 msgid "Cannot convert to LUKS1 format - device uses more segments." msgstr "Fehler beim Konvertieren ins LUKS1-Format: Gerät verwendet mehr Segmente." -#: lib/luks2/luks2_luks1_convert.c:826 +#: lib/luks2/luks2_luks1_convert.c:792 #, c-format msgid "Cannot convert to LUKS1 format - LUKS2 header contains %u token(s)." msgstr "Fehler beim Konvertieren ins LUKS1-Format: LUKS2-Header enthält %u Token." -#: lib/luks2/luks2_luks1_convert.c:832 +#: lib/luks2/luks2_luks1_convert.c:798 msgid "Cannot convert to LUKS1 format - there are no active keyslots." msgstr "Fehler beim Konvertieren ins LUKS1-Format: Es gibt keine aktiven Schlüsselfächer." -#: lib/luks2/luks2_luks1_convert.c:844 +#: lib/luks2/luks2_luks1_convert.c:810 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is in invalid state." msgstr "Fehler beim Konvertieren ins LUKS1-Format: Schlüsselfach %u ist in ungültigem Zustand." -#: lib/luks2/luks2_luks1_convert.c:849 +#: lib/luks2/luks2_luks1_convert.c:815 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is unbound." msgstr "Fehler beim Konvertieren ins LUKS1-Format: Schlüsselfach %u ist unbegrenzt." -#: lib/luks2/luks2_luks1_convert.c:854 +#: lib/luks2/luks2_luks1_convert.c:820 #, c-format msgid "Cannot convert to LUKS1 format - slot %u (over maximum slots) is still active." msgstr "Fehler beim Konvertieren in LUKS1-Format: Schlüsselfach %u (über Maximalfach) ist noch aktiv." -#: lib/luks2/luks2_luks1_convert.c:859 +#: lib/luks2/luks2_luks1_convert.c:825 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is not LUKS1 compatible." msgstr "Fehler beim Konvertieren in LUKS1-Format: Schlüsselfach %u ist nicht zu LUKS1 kompatibel." -#: lib/luks2/luks2_reencrypt.c:1198 +#: lib/luks2/luks2_reencrypt.c:1199 #, c-format msgid "Hotzone size must be multiple of calculated zone alignment (%zu bytes)." msgstr "Die Größe der Hotzone muss ein Vielfaches der berechneten Zonenausrichtung (%zu Bytes) sein." -#: lib/luks2/luks2_reencrypt.c:1203 +#: lib/luks2/luks2_reencrypt.c:1204 #, c-format msgid "Device size must be multiple of calculated zone alignment (%zu bytes)." msgstr "Gerätegröße muss ein Vielfaches der berechneten Zonenausrichtung (%zu Bytes) sein." -#: lib/luks2/luks2_reencrypt.c:1410 lib/luks2/luks2_reencrypt.c:1596 -#: lib/luks2/luks2_reencrypt.c:1679 lib/luks2/luks2_reencrypt.c:1721 -#: lib/luks2/luks2_reencrypt.c:4080 +#: lib/luks2/luks2_reencrypt.c:1411 lib/luks2/luks2_reencrypt.c:1597 +#: lib/luks2/luks2_reencrypt.c:1680 lib/luks2/luks2_reencrypt.c:1722 +#: lib/luks2/luks2_reencrypt.c:4081 msgid "Failed to initialize old segment storage wrapper." msgstr "Fehler beim Initialisieren der Umverpackung für den Speicher alter Segmente." -#: lib/luks2/luks2_reencrypt.c:1424 lib/luks2/luks2_reencrypt.c:1574 +#: lib/luks2/luks2_reencrypt.c:1425 lib/luks2/luks2_reencrypt.c:1575 msgid "Failed to initialize new segment storage wrapper." msgstr "Fehler beim Initialisieren der Umverpackung für den Speicher neuer Segmente." -#: lib/luks2/luks2_reencrypt.c:1550 lib/luks2/luks2_reencrypt.c:4092 +#: lib/luks2/luks2_reencrypt.c:1551 lib/luks2/luks2_reencrypt.c:4093 msgid "Failed to initialize hotzone protection." msgstr "Fehler beim Initialisieren des Hotzone-Schutzes." -#: lib/luks2/luks2_reencrypt.c:1623 +#: lib/luks2/luks2_reencrypt.c:1624 msgid "Failed to read checksums for current hotzone." msgstr "Fehler beim Lesen der Prüfsummen für die aktuelle Hotzone." -#: lib/luks2/luks2_reencrypt.c:1630 lib/luks2/luks2_reencrypt.c:4107 +#: lib/luks2/luks2_reencrypt.c:1631 lib/luks2/luks2_reencrypt.c:4108 #, c-format msgid "Failed to read hotzone area starting at %." msgstr "Fehler beim Lesen des Hotzone-Bereichs, der bei % beginnt." -#: lib/luks2/luks2_reencrypt.c:1649 +#: lib/luks2/luks2_reencrypt.c:1650 #, c-format msgid "Failed to decrypt sector %zu." msgstr "Fehler beim Entschlüsseln von Sektor %zu." -#: lib/luks2/luks2_reencrypt.c:1655 +#: lib/luks2/luks2_reencrypt.c:1656 #, c-format msgid "Failed to recover sector %zu." msgstr "Fehler beim Wiederherstellen von Sektor %zu." -#: lib/luks2/luks2_reencrypt.c:2208 +#: lib/luks2/luks2_reencrypt.c:2209 #, c-format msgid "Source and target device sizes don't match. Source %, target: %." msgstr "Die Größe der Quell- und Zielgeräte stimmt nicht überein. Quelle %, Ziel: %." -#: lib/luks2/luks2_reencrypt.c:2310 +#: lib/luks2/luks2_reencrypt.c:2311 #, c-format msgid "Failed to activate hotzone device %s." msgstr "Fehler beim Aktivieren des Hotzone-Geräts »%s«." -#: lib/luks2/luks2_reencrypt.c:2322 +#: lib/luks2/luks2_reencrypt.c:2323 #, c-format msgid "Failed to allocate hotzone device %s." msgstr "Fehler bei der Speicherzuweisung des Hotzone-Geräts »%s«." -#: lib/luks2/luks2_reencrypt.c:2339 +#: lib/luks2/luks2_reencrypt.c:2340 #, c-format msgid "Failed to activate overlay device %s with actual origin table." msgstr "Fehler beim Aktivieren des Überlagerungsgeräts »%s« mit der tatsächlichen Ursprungstabelle." -#: lib/luks2/luks2_reencrypt.c:2346 +#: lib/luks2/luks2_reencrypt.c:2347 #, c-format msgid "Failed to load new mapping for device %s." msgstr "Fehler beim Laden der neuen Zuordnung für Gerät »%s«." -#: lib/luks2/luks2_reencrypt.c:2418 +#: lib/luks2/luks2_reencrypt.c:2419 msgid "Failed to refresh reencryption devices stack." msgstr "Fehler beim Auffrischen des Gerätestapels für Wiederverschlüsselung." -#: lib/luks2/luks2_reencrypt.c:2615 +#: lib/luks2/luks2_reencrypt.c:2616 msgid "Failed to set new keyslots area size." msgstr "Fehler beim Festlegen der neuen Bereichsgröße für Schlüsselfächer." -#: lib/luks2/luks2_reencrypt.c:2751 +#: lib/luks2/luks2_reencrypt.c:2752 #, c-format msgid "Data shift value is not aligned to encryption sector size (% bytes)." msgstr "Datenverschiebung ist nicht an der angeforderten Verschlüsselungs-Sektorgröße (% Bytes) ausgerichtet." -#: lib/luks2/luks2_reencrypt.c:2788 src/utils_reencrypt.c:162 +#: lib/luks2/luks2_reencrypt.c:2789 src/utils_reencrypt.c:162 #, c-format msgid "Unsupported resilience mode %s" msgstr "Nicht unterstützter Modus »%s« für Widerstandsfähigkeit" -#: lib/luks2/luks2_reencrypt.c:2824 +#: lib/luks2/luks2_reencrypt.c:2825 msgid "Moved segment size can not be greater than data shift value." msgstr "Die Größe des verschobenen Segments kann nicht größer als der Wert der Datenverschiebung sein." -#: lib/luks2/luks2_reencrypt.c:2866 +#: lib/luks2/luks2_reencrypt.c:2867 msgid "Invalid reencryption resilience parameters." msgstr "Ungültige Parameter für die robuste Wiederverschlüsselung." -#: lib/luks2/luks2_reencrypt.c:2888 +#: lib/luks2/luks2_reencrypt.c:2889 #, c-format msgid "Moved segment too large. Requested size %, available space for: %." msgstr "Das verschobene Segment ist zu groß. Angeforderte Größe %, verfügbarer Platz %." -#: lib/luks2/luks2_reencrypt.c:2977 +#: lib/luks2/luks2_reencrypt.c:2978 msgid "Failed to clear table." msgstr "Fehler beim Leeren der Tabelle." -#: lib/luks2/luks2_reencrypt.c:3063 +#: lib/luks2/luks2_reencrypt.c:3064 #, c-format msgid "Data shift (% sectors) is less than future data offset (% sectors)." msgstr "Datenverschiebung (% Sektoren) ist weniger als der zukünftige Datenoffset (% Sektoren)." -#: lib/luks2/luks2_reencrypt.c:3078 lib/luks2/luks2_reencrypt.c:3085 +#: lib/luks2/luks2_reencrypt.c:3079 lib/luks2/luks2_reencrypt.c:3086 msgid "Reduced data size is larger than real device size." msgstr "Die reduzierte Datengröße ist größer als die tatsächliche Gerätegröße." -#: lib/luks2/luks2_reencrypt.c:3095 +#: lib/luks2/luks2_reencrypt.c:3096 #, c-format msgid "Data device is not aligned to encryption sector size (% bytes)." msgstr "Datengerät ist nicht an der angeforderten Verschlüsselungs-Sektorgröße (% Bytes) ausgerichtet." -#: lib/luks2/luks2_reencrypt.c:3125 lib/luks2/luks2_reencrypt.c:3643 -#: lib/luks2/luks2_reencrypt.c:3664 +#: lib/luks2/luks2_reencrypt.c:3126 lib/luks2/luks2_reencrypt.c:3644 +#: lib/luks2/luks2_reencrypt.c:3665 #, c-format msgid "Failed to open %s in exclusive mode (already mapped or mounted)." msgstr "Fehler beim exklusiven Öffnen von »%s« (wird bereits anderweitig benutzt)." -#: lib/luks2/luks2_reencrypt.c:3332 +#: lib/luks2/luks2_reencrypt.c:3333 msgid "Device not marked for LUKS2 reencryption." msgstr "Das Gerät ist nicht für LUKS2-Wiederverschlüsselung markiert." -#: lib/luks2/luks2_reencrypt.c:3349 lib/luks2/luks2_reencrypt.c:4403 +#: lib/luks2/luks2_reencrypt.c:3350 lib/luks2/luks2_reencrypt.c:4404 msgid "Failed to load LUKS2 reencryption context." msgstr "Fehler beim Laden des LUKS2-Wiederverschlüsselungs-Kontextes." -#: lib/luks2/luks2_reencrypt.c:3444 lib/luks2/luks2_reencrypt.c:3784 +#: lib/luks2/luks2_reencrypt.c:3445 lib/luks2/luks2_reencrypt.c:3785 msgid "Device is not in reencryption." msgstr "Das Gerät befindet sich nicht in der Wiederverschlüsselung." -#: lib/luks2/luks2_reencrypt.c:3451 lib/luks2/luks2_reencrypt.c:3791 +#: lib/luks2/luks2_reencrypt.c:3452 lib/luks2/luks2_reencrypt.c:3792 msgid "Reencryption process is already running." msgstr "Der Wiederverschlüsselungs-Vorgang läuft bereits." -#: lib/luks2/luks2_reencrypt.c:3453 lib/luks2/luks2_reencrypt.c:3793 +#: lib/luks2/luks2_reencrypt.c:3454 lib/luks2/luks2_reencrypt.c:3794 msgid "Failed to acquire reencryption lock." msgstr "Fehler beim Zugriff auf die Schreibsperre für die Wiederverschlüsselung." -#: lib/luks2/luks2_reencrypt.c:3471 +#: lib/luks2/luks2_reencrypt.c:3472 msgid "Cannot proceed with reencryption. Run reencryption recovery first." msgstr "Wiederverschlüsselung kann nicht fortgesetzt werden. Führen Sie zuerst die Wiederverschlüsselungs-Wiederherstellung durch." -#: lib/luks2/luks2_reencrypt.c:3607 +#: lib/luks2/luks2_reencrypt.c:3608 msgid "Active device size and requested reencryption size don't match." msgstr "Aktive Gerätegröße und angeforderte Wiederverschlüsselungsgröße passen nicht zusammen." -#: lib/luks2/luks2_reencrypt.c:3621 +#: lib/luks2/luks2_reencrypt.c:3622 msgid "Illegal device size requested in reencryption parameters." msgstr "Ungültige Gerätegröße wurde in den Wiederverschlüsselungsparametern angefordert." -#: lib/luks2/luks2_reencrypt.c:3723 +#: lib/luks2/luks2_reencrypt.c:3724 msgid "Reencryption in-progress. Cannot perform recovery." msgstr "Wiederverschlüsselung läuft bereits. Wiederherstellung ist nicht möglich." -#: lib/luks2/luks2_reencrypt.c:3744 +#: lib/luks2/luks2_reencrypt.c:3745 msgid "LUKS2 reencryption recovery failed." msgstr "Fehler beim Wiederherstellen der LUKS2-Wiederverschlüsselung." -#: lib/luks2/luks2_reencrypt.c:3877 lib/luks2/luks2_reencrypt.c:4356 +#: lib/luks2/luks2_reencrypt.c:3878 lib/luks2/luks2_reencrypt.c:4357 msgid "Failed to initialize reencryption device stack." msgstr "Fehler beim Initialisieren des Gerätestapels für Wiederverschlüsselung." -#: lib/luks2/luks2_reencrypt.c:3910 +#: lib/luks2/luks2_reencrypt.c:3911 msgid "LUKS2 reencryption already initialized in metadata." msgstr "LUKS2-Wiederverschlüsselung ist in den Metadaten bereits initialisiert." -#: lib/luks2/luks2_reencrypt.c:3918 +#: lib/luks2/luks2_reencrypt.c:3919 msgid "Failed to initialize LUKS2 reencryption in metadata." msgstr "LUKS2-Wiederverschlüsselung konnte in den Metadaten nicht initialisiert werden." -#: lib/luks2/luks2_reencrypt.c:3971 lib/luks2/luks2_reencrypt.c:4003 -#: lib/luks2/luks2_reencrypt.c:4033 +#: lib/luks2/luks2_reencrypt.c:3972 lib/luks2/luks2_reencrypt.c:4004 +#: lib/luks2/luks2_reencrypt.c:4034 msgid "Reencryption is not supported for DAX (persistent memory) devices." msgstr "Wiederverschlüsselung wird für DAX-Geräte (persistenten Speicher) nicht unterstützt." -#: lib/luks2/luks2_reencrypt.c:4062 +#: lib/luks2/luks2_reencrypt.c:4063 msgid "Failed to set device segments for next reencryption hotzone." msgstr "Fehler beim Festlegen der Gerätesegmente für die nächste Wiederverschlüsselungs-Hotzone." -#: lib/luks2/luks2_reencrypt.c:4115 +#: lib/luks2/luks2_reencrypt.c:4116 msgid "Failed to write reencryption resilience metadata." msgstr "Fehler beim Schreiben der Metadaten für robuste Wiederverschlüsselung." -#: lib/luks2/luks2_reencrypt.c:4122 +#: lib/luks2/luks2_reencrypt.c:4123 msgid "Decryption failed." msgstr "Fehler beim Entschlüsseln." -#: lib/luks2/luks2_reencrypt.c:4127 +#: lib/luks2/luks2_reencrypt.c:4128 #, c-format msgid "Failed to write hotzone area starting at %." msgstr "Fehler beim Schreiben des Hotzone-Bereichs, der bei % beginnt." -#: lib/luks2/luks2_reencrypt.c:4132 +#: lib/luks2/luks2_reencrypt.c:4133 msgid "Failed to sync data." msgstr "Fehler beim Synchronisieren von Daten." -#: lib/luks2/luks2_reencrypt.c:4140 +#: lib/luks2/luks2_reencrypt.c:4141 msgid "Failed to update metadata after current reencryption hotzone completed." msgstr "Fehler beim Aktualisieren der Metadaten, nachdem die aktuelle Wiederverschlüsselungs-Hotzone beendet wurde." -#: lib/luks2/luks2_reencrypt.c:4229 +#: lib/luks2/luks2_reencrypt.c:4230 msgid "Failed to write LUKS2 metadata." msgstr "Fehler beim Schreiben der LUKS2-Metadaten." -#: lib/luks2/luks2_reencrypt.c:4252 +#: lib/luks2/luks2_reencrypt.c:4253 msgid "Failed to wipe unused data device area." msgstr "Fehler beim gründlichen Löschen des ungenutzten Bereichs auf dem Gerät." -#: lib/luks2/luks2_reencrypt.c:4258 +#: lib/luks2/luks2_reencrypt.c:4259 #, c-format msgid "Failed to remove unused (unbound) keyslot %d." msgstr "Fehler beim Entfernen des ungenutzten (ungebundenen) Schlüsselfachs %d." -#: lib/luks2/luks2_reencrypt.c:4268 +#: lib/luks2/luks2_reencrypt.c:4269 msgid "Failed to remove reencryption keyslot." msgstr "Fehler beim Entfernen des Schlüsselfachs zur Wiederverschlüsselung." -#: lib/luks2/luks2_reencrypt.c:4278 +#: lib/luks2/luks2_reencrypt.c:4279 #, c-format msgid "Fatal error while reencrypting chunk starting at %, % sectors long." msgstr "Schwerwiegender Fehler beim Wiederverschlüsseln des Blocks bei %, % Sektoren lang." -#: lib/luks2/luks2_reencrypt.c:4282 +#: lib/luks2/luks2_reencrypt.c:4283 msgid "Online reencryption failed." msgstr "Fehler bei Online-Wiederverschlüsselung." -#: lib/luks2/luks2_reencrypt.c:4287 +#: lib/luks2/luks2_reencrypt.c:4288 msgid "Do not resume the device unless replaced with error target manually." msgstr "Das Gerät nicht fortsetzen, außer es wird manuell durch das Fehlerziel ersetzt." -#: lib/luks2/luks2_reencrypt.c:4339 +#: lib/luks2/luks2_reencrypt.c:4340 msgid "Cannot proceed with reencryption. Unexpected reencryption status." msgstr "Wiederverschlüsselung kann nicht fortgesetzt werden. Unerwarteter Zustand der Wiederverschlüsselung." -#: lib/luks2/luks2_reencrypt.c:4345 +#: lib/luks2/luks2_reencrypt.c:4346 msgid "Missing or invalid reencrypt context." msgstr "Fehlender oder ungültiger Wiederverschlüsselungs-Kontext." -#: lib/luks2/luks2_reencrypt.c:4379 lib/luks2/luks2_reencrypt.c:4416 +#: lib/luks2/luks2_reencrypt.c:4380 lib/luks2/luks2_reencrypt.c:4417 msgid "Failed to update reencryption context." msgstr "Fehler beim Aktualisieren des Wiederverschlüsselungskontexts." -#: lib/luks2/luks2_reencrypt_digest.c:401 +#: lib/luks2/luks2_reencrypt_digest.c:402 msgid "Reencryption metadata is invalid." msgstr "Die Metadaten für die Wiederverschlüsselung sind ungültig." @@ -2150,7 +2141,7 @@ msgstr "Verschlüsselungsparameter für Schlüsselfach wird nur für LUKS2-Gerä msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encryption." msgstr "Verschlüsselungsparameter für Schlüsselfach sind nicht mit LUKS2-Schlüsselfach-Verschlüsselung kompatibel." -#: src/cryptsetup.c:150 src/cryptsetup.c:1178 src/cryptsetup.c:1545 +#: src/cryptsetup.c:150 src/cryptsetup.c:1179 src/cryptsetup.c:1544 #: src/utils_reencrypt.c:1887 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." @@ -2178,7 +2169,7 @@ msgstr "WARNUNG: Der Parameter --hash wird im Plain-Modus ignoriert, wenn eine S msgid "WARNING: The --keyfile-size option is being ignored, the read size is the same as the encryption key size.\n" msgstr "WARNUNG: Die Option --keyfile-size wird ignoriert, da die Lesegröße die gleiche ist wie die Verschlüsselungsschlüsselgröße ist.\n" -#: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 +#: src/cryptsetup.c:226 src/cryptsetup.c:1374 src/cryptsetup.c:1597 #: src/integritysetup.c:188 src/utils_reencrypt.c:2138 #, c-format msgid "Blkid scan failed for %s." @@ -2189,9 +2180,9 @@ msgstr "Fehler beim Blkid-Scan für %s." msgid "Detected device signature(s) on %s. Proceeding further may damage existing data." msgstr "Gerätesignaturen auf »%s« erkannt. Wenn Sie fortfahren, könnte das bestehende Daten beschädigen." -#: src/cryptsetup.c:238 src/cryptsetup.c:1261 src/cryptsetup.c:1309 -#: src/cryptsetup.c:1382 src/cryptsetup.c:1522 src/cryptsetup.c:1610 -#: src/cryptsetup.c:2495 src/cryptsetup.c:2924 src/integritysetup.c:178 +#: src/cryptsetup.c:238 src/cryptsetup.c:1260 src/cryptsetup.c:1308 +#: src/cryptsetup.c:1381 src/cryptsetup.c:1521 src/cryptsetup.c:1609 +#: src/cryptsetup.c:2494 src/cryptsetup.c:2923 src/integritysetup.c:178 #: src/utils_reencrypt.c:111 src/utils_reencrypt.c:457 #: src/utils_reencrypt.c:925 msgid "Operation aborted.\n" @@ -2242,7 +2233,7 @@ msgstr "" "daher ausschließlich an einem sicheren Ort und verschlüsselt\n" "aufbewahrt werden." -#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2520 +#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2519 msgid "" "The header dump with volume key is sensitive information\n" "that allows access to encrypted partition without a passphrase.\n" @@ -2269,9 +2260,9 @@ msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "Gerät »%s« ist noch aktiv und zum verzögerten Entfernen eingeplant.\n" # upstream: period missing -#: src/cryptsetup.c:881 src/cryptsetup.c:1808 src/cryptsetup.c:2082 -#: src/cryptsetup.c:2229 src/cryptsetup.c:2648 src/cryptsetup.c:2729 -#: src/cryptsetup.c:3262 +#: src/cryptsetup.c:881 src/cryptsetup.c:1807 src/cryptsetup.c:2081 +#: src/cryptsetup.c:2228 src/cryptsetup.c:2647 src/cryptsetup.c:2728 +#: src/cryptsetup.c:3261 #, c-format msgid "Failed to set external tokens path %s." msgstr "Fehler beim Festlegen des externen Tokenpfads »%s«." @@ -2308,19 +2299,19 @@ msgstr "%-10s %4u Iterationen, %5u Speicher, %1u parallele Threads (CPUs) für % msgid "Result of benchmark is not reliable." msgstr "Das Ergebnis des Benchmarks ist nicht zuverlässig." -#: src/cryptsetup.c:1170 +#: src/cryptsetup.c:1171 msgid "# Tests are approximate using memory only (no storage IO).\n" msgstr "# Die Tests sind nur annähernd genau, da sie nicht auf den Datenträger zugreifen.\n" # upstream: the following line should also be translated. This is because the long word "Schlüssel" for "Key" will break the layout, as well as "Verschlüsselung" for "Encryption". # To help the translators, you should provide an example for what goes into the %x placeholders, since I had to make an educated guess that the second %s would be exactly 4 characters long. This is an unnecessary burden for the translators. #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1195 +#: src/cryptsetup.c:1196 #, c-format msgid "#%*s Algorithm | Key | Encryption | Decryption\n" msgstr "#%*s Algorithmus | Schlüssel | Verschlüsselung | Entschlüsselung\n" -#: src/cryptsetup.c:1203 +#: src/cryptsetup.c:1204 #, c-format msgid "Cipher %s (with %i bits key) is not available." msgstr "Verschlüsselung »%s« (mit Schlüsselgröße %i Bits) ist nicht verfügbar." @@ -2328,15 +2319,19 @@ msgstr "Verschlüsselung »%s« (mit Schlüsselgröße %i Bits) ist nicht verfü # upstream: the following line should also be translated. This is because the long word "Schlüssel" for "Key" will break the layout, as well as "Verschlüsselung" for "Encryption". # To help the translators, you should provide an example for what goes into the %x placeholders, since I had to make an educated guess that the second %s would be exactly 4 characters long. This is an unnecessary burden for the translators. #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1222 +#: src/cryptsetup.c:1225 msgid "# Algorithm | Key | Encryption | Decryption\n" msgstr "# Algorithmus | Schlüssel | Verschlüsselung | Entschlüsselung\n" -#: src/cryptsetup.c:1233 +#: src/cryptsetup.c:1238 msgid "N/A" msgstr "N/A" -#: src/cryptsetup.c:1258 +#: src/cryptsetup.c:1241 +msgid "# Cipher speed test is not available.\n" +msgstr "# Verschlüsselungs-Geschwindigkeitstest ist nicht verfügbar.\n" + +#: src/cryptsetup.c:1257 msgid "" "Unprotected LUKS2 reencryption metadata detected. Please verify the reencryption operation is desirable (see luksDump output)\n" "and continue (upgrade metadata) only if you acknowledge the operation as genuine." @@ -2344,27 +2339,27 @@ msgstr "" "Ungeschützte LUKS2-Metadaten für die Wiederverschlüsselung entdeckt. Bitte überprüfen Sie, ob die Wiederverschlüsselungsoperation erwünscht ist (siehe luksDump-Ausgabe)\n" "und fahren Sie nur fort (Upgrade der Metadaten), wenn Sie den Vorgang als echt anerkennen." -#: src/cryptsetup.c:1264 +#: src/cryptsetup.c:1263 msgid "Enter passphrase to protect and upgrade reencryption metadata: " msgstr "Geben Sie die Passphrase für den Schutz und das Aktualisieren der Metadaten für die Wiederverschlüsselung ein: " -#: src/cryptsetup.c:1308 +#: src/cryptsetup.c:1307 msgid "Really proceed with LUKS2 reencryption recovery?" msgstr "Wirklich mit der Wiederherstellung der LUKS2-Wiederverschlüsselung fortfahren?" -#: src/cryptsetup.c:1317 +#: src/cryptsetup.c:1316 msgid "Enter passphrase to verify reencryption metadata digest: " msgstr "Geben Sie die Passphrase für das Prüfen der Metadaten für die Wiederverschlüsselung ein: " -#: src/cryptsetup.c:1319 +#: src/cryptsetup.c:1318 msgid "Enter passphrase for reencryption recovery: " msgstr "Geben Sie die Passphrase für die Wiederherstellung der Wiederverschlüsselung ein: " -#: src/cryptsetup.c:1381 +#: src/cryptsetup.c:1380 msgid "Really try to repair LUKS device header?" msgstr "Wirklich versuchen, den LUKS-Geräteheader wiederherzustellen?" -#: src/cryptsetup.c:1409 src/integritysetup.c:76 src/integritysetup.c:244 +#: src/cryptsetup.c:1408 src/integritysetup.c:76 src/integritysetup.c:244 msgid "" "\n" "Wipe interrupted." @@ -2372,7 +2367,7 @@ msgstr "" "\n" "Gründlich löschen unterbrochen." -#: src/cryptsetup.c:1414 src/integritysetup.c:81 src/integritysetup.c:289 +#: src/cryptsetup.c:1413 src/integritysetup.c:81 src/integritysetup.c:289 msgid "" "Wiping device to initialize integrity checksum.\n" "You can interrupt this by pressing CTRL+c (rest of not wiped device will contain invalid checksum).\n" @@ -2381,167 +2376,167 @@ msgstr "" "Sie können diesen Vorgang mit Strg+C unterbrechen (der nicht gesäuberte Bereich des Geräts wird dann ungültige Prüfsummen haben).\n" # upstream: it is boring that I have to translate the newline at the end of each of these messages. Translating strings without newlines is much easier and faster. Since it is redundant anyway (all calls to log_err have a trailing newline), this newline should be written implicitly. -#: src/cryptsetup.c:1436 src/integritysetup.c:103 +#: src/cryptsetup.c:1435 src/integritysetup.c:103 #, c-format msgid "Cannot deactivate temporary device %s." msgstr "Fehler beim Deaktivieren des temporären Geräts »%s«." -#: src/cryptsetup.c:1484 +#: src/cryptsetup.c:1483 msgid "OPAL hw-only encryption does not support --cipher and --key-size, options ignored." msgstr "OPAL hw-only Verschlüsselung unterstützt nicht --cipher und --key-size, die Optionen werden ignoriert." -#: src/cryptsetup.c:1497 +#: src/cryptsetup.c:1496 msgid "Integrity option can be used only for LUKS2 format." msgstr "Die Integritätsoption kann nur für das LUKS2-Format verwendet werden." -#: src/cryptsetup.c:1502 src/cryptsetup.c:1582 +#: src/cryptsetup.c:1501 src/cryptsetup.c:1581 msgid "Unsupported LUKS2 metadata size options." msgstr "Nicht unterstützte Optionen für Größe der LUKS-Metadaten." -#: src/cryptsetup.c:1507 +#: src/cryptsetup.c:1506 msgid "OPAL is supported only for LUKS2 format." msgstr "OPAL wird nur für das LUKS2-Format unterstützt." -#: src/cryptsetup.c:1512 +#: src/cryptsetup.c:1511 msgid "Inline hw tags are supported only for LUKS2 format." msgstr "Inline-Hardware-Tokens werden nur für das LUKS2-Format unterstützt." -#: src/cryptsetup.c:1521 +#: src/cryptsetup.c:1520 msgid "Header file does not exist, do you want to create it?" msgstr "Die Headerdatei existiert nicht, soll sie angelegt werden?" -#: src/cryptsetup.c:1529 +#: src/cryptsetup.c:1528 #, c-format msgid "Cannot create header file %s." msgstr "Fehler beim Anlegen der Headerdatei »%s«." -#: src/cryptsetup.c:1555 src/integritysetup.c:126 src/integritysetup.c:141 +#: src/cryptsetup.c:1554 src/integritysetup.c:126 src/integritysetup.c:141 #: src/integritysetup.c:150 src/integritysetup.c:328 src/integritysetup.c:336 #: src/integritysetup.c:346 msgid "No known integrity specification pattern detected." msgstr "Kein bekanntes Integritätsspezifikationsmuster entdeckt." -#: src/cryptsetup.c:1557 +#: src/cryptsetup.c:1556 msgid "Cannot use specified integrity key size." msgstr "Die angegebene Integritätsschlüsselgröße kann nicht verwendet werden." -#: src/cryptsetup.c:1575 +#: src/cryptsetup.c:1574 #, c-format msgid "Cannot use %s as on-disk header." msgstr "Das Gerät »%s« kann nicht als Datenträger-Header benutzt werden." -#: src/cryptsetup.c:1604 src/integritysetup.c:172 +#: src/cryptsetup.c:1603 src/integritysetup.c:172 #, c-format msgid "This will overwrite data on %s irrevocably." msgstr "Hiermit werden die Daten auf »%s« unwiderruflich überschrieben." -#: src/cryptsetup.c:1641 +#: src/cryptsetup.c:1640 msgid "OPAL Admin password cannot be empty." msgstr "Das OPAL-Admin-Passwort darf nicht leer sein." -#: src/cryptsetup.c:1655 src/cryptsetup.c:2099 src/cryptsetup.c:2242 -#: src/cryptsetup.c:2377 src/cryptsetup.c:2443 src/utils_reencrypt_luks1.c:428 +#: src/cryptsetup.c:1654 src/cryptsetup.c:2098 src/cryptsetup.c:2241 +#: src/cryptsetup.c:2376 src/cryptsetup.c:2442 src/utils_reencrypt_luks1.c:428 msgid "Failed to set pbkdf parameters." msgstr "Fehler beim Festlegen der PBKDF-Parameter." -#: src/cryptsetup.c:1786 +#: src/cryptsetup.c:1785 msgid "Reduced data offset is allowed only for detached LUKS header." msgstr "Verringerter Datenoffset ist nur für separaten LUKS-Header erlaubt." -#: src/cryptsetup.c:1793 +#: src/cryptsetup.c:1792 #, c-format msgid "LUKS file container %s is too small for activation, there is no remaining space for data." msgstr "LUKS-Datei-Container %s ist zu klein für die Aktivierung, es ist kein Platz mehr für Daten vorhanden." -#: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:277 +#: src/cryptsetup.c:1834 src/cryptsetup.c:2247 src/utils_reencrypt.c:277 #: src/utils_reencrypt.c:369 src/utils_reencrypt.c:1907 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "Die Größe des Laufwerksschlüssels erfordert Schlüsselfächer, bitte nutzen Sie dazu die Option »--key-size«." -#: src/cryptsetup.c:1854 src/utils_reencrypt.c:303 +#: src/cryptsetup.c:1853 src/utils_reencrypt.c:303 msgid "Device requires two volume keys." msgstr "Das Gerät benötigt zwei Laufwerksschlüssel." -#: src/cryptsetup.c:1889 +#: src/cryptsetup.c:1888 msgid "Some specified activation parameters were ignored with OPAL hw-only encryption." msgstr "Einige angegebene Aktivierungsparameter wurden bei der OPAL-nur-Hardware-Verschlüsselung ignoriert." -#: src/cryptsetup.c:1894 +#: src/cryptsetup.c:1893 msgid "Device activated but cannot make flags persistent." msgstr "Gerät aktiviert, aber die Schalter können nicht dauerhaft gespeichert werden." -#: src/cryptsetup.c:1974 src/cryptsetup.c:2042 +#: src/cryptsetup.c:1973 src/cryptsetup.c:2041 #, c-format msgid "Keyslot %d is selected for deletion." msgstr "Schlüsselfach %d zum Löschen ausgewählt." -#: src/cryptsetup.c:1986 src/cryptsetup.c:2046 +#: src/cryptsetup.c:1985 src/cryptsetup.c:2045 msgid "This is the last keyslot. Device will become unusable after purging this key." msgstr "Dies ist das letzte Schlüsselfach. Wenn Sie diesen Schlüssel löschen, wird das Gerät unbrauchbar." -#: src/cryptsetup.c:1987 +#: src/cryptsetup.c:1986 msgid "Enter any remaining passphrase: " msgstr "Geben Sie irgendeine verbleibende Passphrase ein: " -#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 +#: src/cryptsetup.c:1987 src/cryptsetup.c:2047 msgid "Operation aborted, the keyslot was NOT wiped.\n" msgstr "Vorgang abgebrochen, das Schlüsselfach wurde NICHT gesäubert.\n" -#: src/cryptsetup.c:2024 +#: src/cryptsetup.c:2023 msgid "Enter passphrase to be deleted: " msgstr "Geben Sie die zu löschende Passphrase ein: " -#: src/cryptsetup.c:2074 src/cryptsetup.c:2426 src/cryptsetup.c:3086 -#: src/cryptsetup.c:3253 +#: src/cryptsetup.c:2073 src/cryptsetup.c:2425 src/cryptsetup.c:3085 +#: src/cryptsetup.c:3252 #, c-format msgid "Device %s is not a valid LUKS2 device." msgstr "Gerät »%s« ist kein gültiges LUKS2-Gerät." -#: src/cryptsetup.c:2113 src/cryptsetup.c:2312 +#: src/cryptsetup.c:2112 src/cryptsetup.c:2311 msgid "Enter new passphrase for key slot: " msgstr "Geben Sie die neue Passphrase für das Schlüsselfach ein: " -#: src/cryptsetup.c:2147 src/utils_luks.c:342 +#: src/cryptsetup.c:2146 src/utils_luks.c:342 #, c-format msgid "Enter token PIN: " msgstr "Geben Sie die PIN des Tokens ein: " -#: src/cryptsetup.c:2149 src/utils_luks.c:344 +#: src/cryptsetup.c:2148 src/utils_luks.c:344 #, c-format msgid "Enter token %d PIN: " msgstr "Geben Sie die PIN des Tokens %d ein: " -#: src/cryptsetup.c:2208 +#: src/cryptsetup.c:2207 msgid "WARNING: The --key-slot parameter is used for new keyslot number.\n" msgstr "WARNUNG: Der Parameter --key-slot wird für die neue Nummer des Schlüsselfachs verwendet.\n" -#: src/cryptsetup.c:2285 src/utils_reencrypt_luks1.c:1094 +#: src/cryptsetup.c:2284 src/utils_reencrypt_luks1.c:1094 #, c-format msgid "Enter any existing passphrase: " msgstr "Geben Sie irgendeine bestehende Passphrase ein: " -#: src/cryptsetup.c:2381 +#: src/cryptsetup.c:2380 msgid "Enter passphrase to be changed: " msgstr "Geben Sie die zu ändernde Passphrase ein: " -#: src/cryptsetup.c:2397 src/utils_reencrypt_luks1.c:1080 +#: src/cryptsetup.c:2396 src/utils_reencrypt_luks1.c:1080 msgid "Enter new passphrase: " msgstr "Geben Sie die neue Passphrase ein: " -#: src/cryptsetup.c:2447 +#: src/cryptsetup.c:2446 msgid "Enter passphrase for keyslot to be converted: " msgstr "Geben Sie die Passphrase für das umzuwandelnde Schlüsselfach ein: " -#: src/cryptsetup.c:2471 +#: src/cryptsetup.c:2470 msgid "Only one device argument for isLuks operation is supported." msgstr "Die Operation »isLuks« unterstützt nur genau ein Geräte-Argument." -#: src/cryptsetup.c:2576 +#: src/cryptsetup.c:2575 #, c-format msgid "Keyslot %d does not contain unbound key." msgstr "Schlüsselfach %d enthält keinen unverbundenen Schlüssel." -#: src/cryptsetup.c:2581 +#: src/cryptsetup.c:2580 msgid "" "The header dump with unbound key is sensitive information.\n" "This dump should be stored encrypted in a safe place." @@ -2550,52 +2545,52 @@ msgstr "" "Dieser Dump sollte daher ausschließlich an einem sicheren Ort und\n" "verschlüsselt aufbewahrt werden." -#: src/cryptsetup.c:2676 src/cryptsetup.c:2712 +#: src/cryptsetup.c:2675 src/cryptsetup.c:2711 #, c-format msgid "%s is not active %s device name." msgstr "%s ist kein aktives %s-Gerät." -#: src/cryptsetup.c:2707 +#: src/cryptsetup.c:2706 #, c-format msgid "%s is not active LUKS device name or header is missing." msgstr "%s ist kein aktives LUKS-Gerät, oder der Header fehlt." -#: src/cryptsetup.c:2784 src/cryptsetup.c:2803 +#: src/cryptsetup.c:2783 src/cryptsetup.c:2802 msgid "Option --header-backup-file is required." msgstr "Option »--header-backup-file« muss angegeben werden." -#: src/cryptsetup.c:2834 +#: src/cryptsetup.c:2833 #, c-format msgid "%s is not cryptsetup managed device." msgstr "%s ist kein von cryptsetup verwaltetes Gerät." -#: src/cryptsetup.c:2845 +#: src/cryptsetup.c:2844 #, c-format msgid "Refresh is not supported for device type %s" msgstr "Die Geräteart »%s« kann nicht aufgefrischt werden" -#: src/cryptsetup.c:2895 +#: src/cryptsetup.c:2894 #, c-format msgid "Unrecognized metadata device type %s." msgstr "Unbekannte Art »%s« des Metadaten-Geräts." -#: src/cryptsetup.c:2897 +#: src/cryptsetup.c:2896 msgid "Command requires device and mapped name as arguments." msgstr "Dieser Befehl benötigt den Gerätenamen und den zugeordneten Namen als Argumente." -#: src/cryptsetup.c:2915 +#: src/cryptsetup.c:2914 msgid "Enter OPAL PSID: " msgstr "Geben Sie die OPAL-PSID ein: " -#: src/cryptsetup.c:2915 +#: src/cryptsetup.c:2914 msgid "Enter OPAL Admin password: " msgstr "Geben Sie das OPAL-Admin-Passwort ein: " -#: src/cryptsetup.c:2923 +#: src/cryptsetup.c:2922 msgid "WARNING: WHOLE disk will be factory reset and all data will be lost! Continue?" msgstr "Warnung: Der GESAMTE Datenträger wird auf die Werkseinstellungen zurückgesetzt, und alle Daten gehen verloren. Fortsetzen?" -#: src/cryptsetup.c:2966 +#: src/cryptsetup.c:2965 #, c-format msgid "" "This operation will erase all keyslots on device %s.\n" @@ -2604,363 +2599,363 @@ msgstr "" "Diese Operation wird alle Schlüsselfächer auf Gerät »%s« löschen.\n" "Dadurch wird das Gerät unbrauchbar." -#: src/cryptsetup.c:2973 +#: src/cryptsetup.c:2972 msgid "Operation aborted, keyslots were NOT wiped.\n" msgstr "Vorgang abgebrochen, die Schlüsselfächer wurden NICHT gesäubert.\n" -#: src/cryptsetup.c:3012 +#: src/cryptsetup.c:3011 msgid "Invalid LUKS type, only luks1 and luks2 are supported." msgstr "Invalid LUKS type, only luks1 and luks2 are supported." -#: src/cryptsetup.c:3028 +#: src/cryptsetup.c:3027 #, c-format msgid "Device is already %s type." msgstr "Das Gerät hat bereits den Typ »%s«." -#: src/cryptsetup.c:3035 +#: src/cryptsetup.c:3034 #, c-format msgid "This operation will convert %s to %s format.\n" msgstr "Diese Operation wird für »%s« ins Format »%s« umwandeln.\n" -#: src/cryptsetup.c:3038 +#: src/cryptsetup.c:3037 msgid "Operation aborted, device was NOT converted.\n" msgstr "Vorgang abgebrochen, das Gerät wurde NICHT konvertiert.\n" -#: src/cryptsetup.c:3078 +#: src/cryptsetup.c:3077 msgid "Option --priority, --label or --subsystem is missing." msgstr "Die Option --priority, --label oder --subsystem fehlt." -#: src/cryptsetup.c:3112 src/cryptsetup.c:3152 src/cryptsetup.c:3172 +#: src/cryptsetup.c:3111 src/cryptsetup.c:3151 src/cryptsetup.c:3171 #, c-format msgid "Token %d is invalid." msgstr "Token %d ist ungültig." -#: src/cryptsetup.c:3115 src/cryptsetup.c:3175 +#: src/cryptsetup.c:3114 src/cryptsetup.c:3174 #, c-format msgid "Token %d in use." msgstr "Token %d ist in Benutzung." -#: src/cryptsetup.c:3127 +#: src/cryptsetup.c:3126 #, c-format msgid "Failed to add luks2-keyring token %d." msgstr "Fehler beim Hinzufügen des LUKS2-Schlüsselring-Tokens %d." -#: src/cryptsetup.c:3138 src/cryptsetup.c:3201 +#: src/cryptsetup.c:3137 src/cryptsetup.c:3200 #, c-format msgid "Failed to assign token %d to keyslot %d." msgstr "Token %d kann nicht dem Schlüsselfach %d zugeordnet werden." -#: src/cryptsetup.c:3155 +#: src/cryptsetup.c:3154 #, c-format msgid "Token %d is not in use." msgstr "Token %d wird gerade nicht verwendet." -#: src/cryptsetup.c:3192 +#: src/cryptsetup.c:3191 msgid "Failed to import token from file." msgstr "Token konnte nicht aus der Datei importiert werden." -#: src/cryptsetup.c:3217 +#: src/cryptsetup.c:3216 #, c-format msgid "Failed to get token %d for export." msgstr "Auf Token %d kann nicht für den Export zugegriffen werden." -#: src/cryptsetup.c:3230 +#: src/cryptsetup.c:3229 #, c-format msgid "Token %d is not assigned to keyslot %d." msgstr "Token %d ist nicht dem Schlüsselfach %d zugeordnet." -#: src/cryptsetup.c:3232 src/cryptsetup.c:3239 +#: src/cryptsetup.c:3231 src/cryptsetup.c:3238 #, c-format msgid "Failed to unassign token %d from keyslot %d." msgstr "Token %d kann nicht vom Schlüsselfach %d losgelöst werden." -#: src/cryptsetup.c:3298 +#: src/cryptsetup.c:3297 msgid "Option --tcrypt-hidden, --tcrypt-system or --tcrypt-backup is supported only for TCRYPT device." msgstr "Die Optionen --tcrypt-hidden, --tcrypt-system und --tcrypt-backup sind nur zusammen mit einem TCRYPT-Gerät erlaubt." -#: src/cryptsetup.c:3301 +#: src/cryptsetup.c:3300 msgid "Option --veracrypt or --disable-veracrypt is supported only for TCRYPT device type." msgstr "Die Optionen --veracrypt und --disable-veracrypt werden nur für TCRYPT-kompatible Geräte unterstützt." -#: src/cryptsetup.c:3304 +#: src/cryptsetup.c:3303 msgid "Option --veracrypt-pim is supported only for VeraCrypt compatible devices." msgstr "Die Option --veracrypt-pim wird nur für VeraCrypt-kompatible Geräte unterstützt." -#: src/cryptsetup.c:3308 +#: src/cryptsetup.c:3307 msgid "Option --veracrypt-query-pim is supported only for VeraCrypt compatible devices." msgstr "Die Option --veracrypt-query-pim wird nur für VeraCrypt-kompatible Geräte unterstützt." -#: src/cryptsetup.c:3310 +#: src/cryptsetup.c:3309 msgid "The options --veracrypt-pim and --veracrypt-query-pim are mutually exclusive." msgstr "Die Optionen --veracrypt-pim und --veracrypt-query-pim schließen sich gegenseitig aus." -#: src/cryptsetup.c:3319 +#: src/cryptsetup.c:3318 msgid "Option --persistent is not allowed with --test-passphrase." msgstr "Die Option --persistent ist nicht mit --test-passphrase kombinierbar." -#: src/cryptsetup.c:3322 +#: src/cryptsetup.c:3321 msgid "Options --refresh and --test-passphrase are mutually exclusive." msgstr "Die Optionen --refresh und --test-passphrase schließen sich gegenseitig aus." -#: src/cryptsetup.c:3325 +#: src/cryptsetup.c:3324 msgid "Option --shared is allowed only for open of plain device." msgstr "Die Option --shared ist nur beim beim »open«-Befehl eines Plain-Gerätes erlaubt." -#: src/cryptsetup.c:3328 +#: src/cryptsetup.c:3327 msgid "Option --skip is supported only for open of plain and loopaes devices." msgstr "Die Option --skip ist nur beim Öffnen von plain- und loopaes-Geräten erlaubt." -#: src/cryptsetup.c:3331 +#: src/cryptsetup.c:3330 msgid "Option --offset with open action is only supported for plain and loopaes devices." msgstr "Die Option --offset mit der Aktion Öffnen wird nur für einfache und loopaes-Geräte unterstützt." -#: src/cryptsetup.c:3334 +#: src/cryptsetup.c:3333 msgid "Option --tcrypt-hidden cannot be combined with --allow-discards." msgstr "Die Option --tcrypt-hidden kann nicht mit --allow-discards kombiniert werden." -#: src/cryptsetup.c:3338 +#: src/cryptsetup.c:3337 msgid "Sector size option with open action is supported only for plain devices." msgstr "Die Option \"Sektorgröße\" mit der Aktion \"Öffnen\" wird nur für einfache Geräte unterstützt." -#: src/cryptsetup.c:3342 +#: src/cryptsetup.c:3341 msgid "Large IV sectors option is supported only for opening plain type device with sector size larger than 512 bytes." msgstr "Die Option für große IV-Sektoren wird nur unterstützt, wenn das geöffnete Gerät Sektoren größer als 512 Bytes hat." -#: src/cryptsetup.c:3347 +#: src/cryptsetup.c:3346 msgid "Option --test-passphrase is allowed only for open of LUKS, TCRYPT, BITLK and FVAULT2 devices." msgstr "Die Option --test-passphrase ist nur beim Öffnen von LUKS-, TCRYPT-, BITLK- und FVAULT2-Geräten erlaubt." -#: src/cryptsetup.c:3350 src/cryptsetup.c:3380 +#: src/cryptsetup.c:3349 src/cryptsetup.c:3379 msgid "Options --device-size and --size cannot be combined." msgstr "Die Optionen --device-size und --size können nicht kombiniert werden." -#: src/cryptsetup.c:3353 +#: src/cryptsetup.c:3352 msgid "Option --unbound is allowed only for open of luks device." msgstr "Die Option »--unbound« ist nur beim »open«-Befehl eines LUKS-Gerätes erlaubt." -#: src/cryptsetup.c:3356 +#: src/cryptsetup.c:3355 msgid "Option --unbound cannot be used without --test-passphrase." msgstr "Die Option »--unbound« kann nur in Kombination mit »--test-passphrase« verwendet werden." -#: src/cryptsetup.c:3360 +#: src/cryptsetup.c:3359 msgid "Option --volume-key-keyring cannot be combined with --hash or --volume-key-file." msgstr "Die Option --volume-key-keyring kann nicht mit --hash oder --volume-key-file kombiniert werden." -#: src/cryptsetup.c:3363 +#: src/cryptsetup.c:3362 msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "Beide --volume-key-file-Optionen müssen mit den entsprechenden --key-size-Optionen paarweise auftreten." -#: src/cryptsetup.c:3372 src/veritysetup.c:673 src/integritysetup.c:787 +#: src/cryptsetup.c:3371 src/veritysetup.c:673 src/integritysetup.c:787 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "Die Optionen --cancel-deferred und --deferred können nicht kombiniert werden." -#: src/cryptsetup.c:3388 +#: src/cryptsetup.c:3387 msgid "Option --active-name can be set only for LUKS2 device." msgstr "Die Option »--active-name« ist nur auf LUKS2-Geräte anwendbar." -#: src/cryptsetup.c:3391 +#: src/cryptsetup.c:3390 msgid "Options --active-name and --force-offline-reencrypt cannot be combined." msgstr "Die Optionen »--active-name« und »--force-offline-reencrypt« können nicht kombiniert werden." -#: src/cryptsetup.c:3394 +#: src/cryptsetup.c:3393 msgid "Options --new-volume-key-file and --keep-key cannot be combined." msgstr "Die Optionen --new-volume-key-file und --keep-key können nicht kombiniert werden." -#: src/cryptsetup.c:3397 +#: src/cryptsetup.c:3396 msgid "Options --new-volume-key-keyring and --keep-key cannot be combined." msgstr "Die Optionen --new-volume-key-keyring und --keep-key können nicht kombiniert werden." -#: src/cryptsetup.c:3405 src/cryptsetup.c:3435 +#: src/cryptsetup.c:3404 src/cryptsetup.c:3434 msgid "Keyslot specification is required." msgstr "Das Schlüsselfach muss angegeben werden." -#: src/cryptsetup.c:3413 +#: src/cryptsetup.c:3412 msgid "Options --align-payload and --offset cannot be combined." msgstr "Die Optionen --align-payload und --offset können nicht kombiniert werden." -#: src/cryptsetup.c:3416 +#: src/cryptsetup.c:3415 msgid "Option --integrity-no-wipe can be used only for format action with integrity extension." msgstr "Die Option --integrity-no-wipe ist nur für die »format«-Aktion mit Integritätserweiterung erlaubt." -#: src/cryptsetup.c:3419 +#: src/cryptsetup.c:3418 msgid "Only one of --use-[u]random options is allowed." msgstr "Nur eine der Optionen --use-[u]random ist erlaubt." -#: src/cryptsetup.c:3427 +#: src/cryptsetup.c:3426 msgid "Key size is required with --unbound option." msgstr "Die Option »--unbound« erfordert die Schlüsselgröße." -#: src/cryptsetup.c:3447 +#: src/cryptsetup.c:3446 msgid "Invalid token action." msgstr "Ungültige Token-Aktion." -#: src/cryptsetup.c:3450 +#: src/cryptsetup.c:3449 msgid "--key-description parameter is mandatory for token add action." msgstr "Der Parameter --key-description ist Pflicht für die Aktion »token add«." -#: src/cryptsetup.c:3454 src/cryptsetup.c:3467 +#: src/cryptsetup.c:3453 src/cryptsetup.c:3466 msgid "Action requires specific token. Use --token-id parameter." msgstr "Die Aktion erfordert ein bestimmtes Token. Verwenden Sie den Parameter --token-id." -#: src/cryptsetup.c:3458 +#: src/cryptsetup.c:3457 msgid "Option --unbound is valid only with token add action." msgstr "Die Option »--unbound« kann nur zusammen mit der Aktion zum Hinzufügen eines Tokens verwendet werden." -#: src/cryptsetup.c:3460 +#: src/cryptsetup.c:3459 msgid "Options --key-slot and --unbound cannot be combined." msgstr "Die Optionen --key-slot und --unbound können nicht kombiniert werden." -#: src/cryptsetup.c:3465 +#: src/cryptsetup.c:3464 msgid "Action requires specific keyslot. Use --key-slot parameter." msgstr "Die Aktion erfordert ein bestimmtes Schlüsselfach. Verwenden Sie den Parameter --key-slot." -#: src/cryptsetup.c:3481 +#: src/cryptsetup.c:3480 msgid " [--type ] []" msgstr " [--type ] []" -#: src/cryptsetup.c:3481 src/veritysetup.c:487 src/integritysetup.c:554 +#: src/cryptsetup.c:3480 src/veritysetup.c:487 src/integritysetup.c:554 msgid "open device as " msgstr "Gerät als öffnen" -#: src/cryptsetup.c:3482 src/cryptsetup.c:3483 src/cryptsetup.c:3484 +#: src/cryptsetup.c:3481 src/cryptsetup.c:3482 src/cryptsetup.c:3483 #: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:555 #: src/integritysetup.c:556 src/integritysetup.c:558 msgid "" msgstr "" -#: src/cryptsetup.c:3482 src/veritysetup.c:488 src/integritysetup.c:555 +#: src/cryptsetup.c:3481 src/veritysetup.c:488 src/integritysetup.c:555 msgid "close device (remove mapping)" msgstr "Gerät schließen (Zuordnung entfernen)" -#: src/cryptsetup.c:3483 src/integritysetup.c:558 +#: src/cryptsetup.c:3482 src/integritysetup.c:558 msgid "resize active device" msgstr "Größe des aktiven Geräts ändern" -#: src/cryptsetup.c:3484 +#: src/cryptsetup.c:3483 msgid "show device status" msgstr "Gerätestatus anzeigen" -#: src/cryptsetup.c:3485 +#: src/cryptsetup.c:3484 msgid "[--cipher ]" msgstr "[--cipher ]" -#: src/cryptsetup.c:3485 +#: src/cryptsetup.c:3484 msgid "benchmark cipher" msgstr "Verschlüsselungsalgorithmus benchmarken" -#: src/cryptsetup.c:3486 src/cryptsetup.c:3487 src/cryptsetup.c:3488 -#: src/cryptsetup.c:3489 src/cryptsetup.c:3490 src/cryptsetup.c:3497 -#: src/cryptsetup.c:3498 src/cryptsetup.c:3499 src/cryptsetup.c:3500 -#: src/cryptsetup.c:3501 src/cryptsetup.c:3502 src/cryptsetup.c:3503 -#: src/cryptsetup.c:3504 src/cryptsetup.c:3505 src/cryptsetup.c:3506 +#: src/cryptsetup.c:3485 src/cryptsetup.c:3486 src/cryptsetup.c:3487 +#: src/cryptsetup.c:3488 src/cryptsetup.c:3489 src/cryptsetup.c:3496 +#: src/cryptsetup.c:3497 src/cryptsetup.c:3498 src/cryptsetup.c:3499 +#: src/cryptsetup.c:3500 src/cryptsetup.c:3501 src/cryptsetup.c:3502 +#: src/cryptsetup.c:3503 src/cryptsetup.c:3504 src/cryptsetup.c:3505 msgid "" msgstr "" -#: src/cryptsetup.c:3486 +#: src/cryptsetup.c:3485 msgid "try to repair on-disk metadata" msgstr "Versuchen, die Metadaten auf dem Datenträger zu reparieren" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3486 msgid "reencrypt LUKS2 device" msgstr "LUKS2-Gerät wiederverschlüsseln" -#: src/cryptsetup.c:3488 +#: src/cryptsetup.c:3487 msgid "erase all keyslots (remove encryption key)" msgstr "Alle Schlüsselfächer löschen (Verschlüsselungsschlüssel entfernen)" -#: src/cryptsetup.c:3489 +#: src/cryptsetup.c:3488 msgid "convert LUKS from/to LUKS2 format" msgstr "Zwischen den Formaten LUKS und LUKS2 umwandeln" -#: src/cryptsetup.c:3490 +#: src/cryptsetup.c:3489 msgid "set permanent configuration options for LUKS2" msgstr "Permanente Konfigurationsoptionen für LUKS2 festlegen" -#: src/cryptsetup.c:3491 src/cryptsetup.c:3492 +#: src/cryptsetup.c:3490 src/cryptsetup.c:3491 msgid " []" msgstr " []" -#: src/cryptsetup.c:3491 +#: src/cryptsetup.c:3490 msgid "formats a LUKS device" msgstr "Ein LUKS-Gerät formatieren" -#: src/cryptsetup.c:3492 +#: src/cryptsetup.c:3491 msgid "add key to LUKS device" msgstr "Schlüssel zu LUKS-Gerät hinzufügen" -#: src/cryptsetup.c:3493 src/cryptsetup.c:3494 src/cryptsetup.c:3495 +#: src/cryptsetup.c:3492 src/cryptsetup.c:3493 src/cryptsetup.c:3494 msgid " []" msgstr " []" -#: src/cryptsetup.c:3493 +#: src/cryptsetup.c:3492 msgid "removes supplied key or key file from LUKS device" msgstr "Entfernt bereitgestellten Schlüssel oder Schlüsseldatei vom LUKS-Gerät" -#: src/cryptsetup.c:3494 +#: src/cryptsetup.c:3493 msgid "changes supplied key or key file of LUKS device" msgstr "Ändert den angegebenen Schlüssel oder die Schlüsseldatei des LUKS-Geräts" -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3494 msgid "converts a key to new pbkdf parameters" msgstr "Wandelt einen Schlüssel in neue PBKDF-Parameter um" -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3495 msgid " " msgstr " " -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3495 msgid "wipes key with number from LUKS device" msgstr "Löscht Schlüssel mit Nummer vom LUKS-Gerät" -#: src/cryptsetup.c:3497 +#: src/cryptsetup.c:3496 msgid "print UUID of LUKS device" msgstr "UUID des LUKS-Geräts ausgeben" -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3497 msgid "tests for LUKS partition header" msgstr "Testet auf Header einer LUKS-Partition" -#: src/cryptsetup.c:3499 +#: src/cryptsetup.c:3498 msgid "dump LUKS partition information" msgstr "LUKS-Partitionsinformationen ausgeben" -#: src/cryptsetup.c:3500 +#: src/cryptsetup.c:3499 msgid "dump TCRYPT device information" msgstr "TCRYPT-Geräteinformationen ausgeben" -#: src/cryptsetup.c:3501 +#: src/cryptsetup.c:3500 msgid "dump BITLK device information" msgstr "BITLK-Geräteinformationen ausgeben" -#: src/cryptsetup.c:3502 +#: src/cryptsetup.c:3501 msgid "dump FVAULT2 device information" msgstr "VFAULT2-Geräteinformationen ausgeben" -#: src/cryptsetup.c:3503 +#: src/cryptsetup.c:3502 msgid "Suspend LUKS device and wipe key (all IOs are frozen)" msgstr "LUKS-Gerät in Ruhezustand versetzen und alle Schlüssel auslöschen (alle IOs werden eingefroren)" -#: src/cryptsetup.c:3504 +#: src/cryptsetup.c:3503 msgid "Resume suspended LUKS device" msgstr "LUKS-Gerät aus dem Ruhezustand aufwecken" -#: src/cryptsetup.c:3505 +#: src/cryptsetup.c:3504 msgid "Backup LUKS device header and keyslots" msgstr "Header und Schlüsselfächer eines LUKS-Geräts sichern" -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3505 msgid "Restore LUKS device header and keyslots" msgstr "Header und Schlüsselfächer eines LUKS-Geräts wiederherstellen" -#: src/cryptsetup.c:3507 +#: src/cryptsetup.c:3506 msgid " " msgstr " " -#: src/cryptsetup.c:3507 +#: src/cryptsetup.c:3506 msgid "Manipulate LUKS2 tokens" msgstr "LUKS2-Token manipulieren" -#: src/cryptsetup.c:3526 src/veritysetup.c:505 src/integritysetup.c:573 +#: src/cryptsetup.c:3525 src/veritysetup.c:505 src/integritysetup.c:573 msgid "" "\n" " is one of:\n" @@ -2968,7 +2963,7 @@ msgstr "" "\n" " ist eine von:\n" -#: src/cryptsetup.c:3532 +#: src/cryptsetup.c:3531 msgid "" "\n" "You can also use old syntax aliases:\n" @@ -2980,7 +2975,7 @@ msgstr "" "\topen: create (plainOpen), luksOpen, loopaesOpen, tcryptOpen, bitlkOpen, fvault2Open\n" "\tclose: remove (plainClose), luksClose, loopaesClose, tcryptClose, bitlkClose, fvault2Close\n" -#: src/cryptsetup.c:3536 +#: src/cryptsetup.c:3535 #, c-format msgid "" "\n" @@ -2995,7 +2990,7 @@ msgstr "" " ist die Nummer des zu verändernden LUKS-Schlüsselfachs\n" " optionale Schlüsseldatei für den neuen Schlüssel der »luksAddKey«-Aktion\n" -#: src/cryptsetup.c:3543 +#: src/cryptsetup.c:3542 #, c-format msgid "" "\n" @@ -3004,7 +2999,7 @@ msgstr "" "\n" "Vorgegebenes festeingebautes Metadatenformat ist %s (für luksFormat-Aktion).\n" -#: src/cryptsetup.c:3548 +#: src/cryptsetup.c:3547 msgid "" "\n" "LUKS2 external token plugin support is enabled.\n" @@ -3012,12 +3007,12 @@ msgstr "" "\n" "Die Plugin-Unterstützung für externe LUKS2-Tokens ist aktiviert.\n" -#: src/cryptsetup.c:3549 +#: src/cryptsetup.c:3548 #, c-format msgid "LUKS2 external token plugin path: %s.\n" msgstr "Pfad des Plugins für externe LUKS2-Token: %s.\n" -#: src/cryptsetup.c:3551 +#: src/cryptsetup.c:3550 msgid "" "\n" "LUKS2 external token plugin support is disabled.\n" @@ -3025,7 +3020,7 @@ msgstr "" "\n" "Die Plugin-Unterstützung für externe LUKS2-Tokens ist deaktiviert.\n" -#: src/cryptsetup.c:3555 +#: src/cryptsetup.c:3554 #, c-format msgid "" "\n" @@ -3042,7 +3037,7 @@ msgstr "" "Vorgabe-PBKDF für LUKS2: %s\n" "\tIterationszeit: %d, benötigter Speicher: %d kB, parallele Threads: %d\n" -#: src/cryptsetup.c:3566 +#: src/cryptsetup.c:3565 #, c-format msgid "" "\n" @@ -3057,122 +3052,122 @@ msgstr "" "\tplain: %s, Schlüssel: %d Bits, Passphrase-Hashen: %s\n" "\tLUKS: %s, Schlüssel: %d Bits, LUKS-Header-Hashen: %s, Zufallszahlengenerator: %s\n" -#: src/cryptsetup.c:3575 +#: src/cryptsetup.c:3574 msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: Standard-Schlüsselgröße mit XTS-Modus (zwei interne Schlüssel) wird verdoppelt.\n" -#: src/cryptsetup.c:3593 src/veritysetup.c:647 src/integritysetup.c:733 +#: src/cryptsetup.c:3592 src/veritysetup.c:647 src/integritysetup.c:733 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: Benötigt %s als Argumente" -#: src/cryptsetup.c:3633 src/utils_reencrypt_luks1.c:1143 +#: src/cryptsetup.c:3632 src/utils_reencrypt_luks1.c:1143 msgid "Key slot is invalid." msgstr "Schlüsselfach ist ungültig." -#: src/cryptsetup.c:3661 +#: src/cryptsetup.c:3660 msgid "Device size must be multiple of 512 bytes sector." msgstr "Die Gerätegröße muss ein Vielfaches von 512-Byte-Sektoren sein." -#: src/cryptsetup.c:3666 +#: src/cryptsetup.c:3665 msgid "Invalid max reencryption hotzone size specification." msgstr "Ungültige Angabe der Maximalgröße für die Wiederverschlüsselungs-Hotzone." -#: src/cryptsetup.c:3680 src/cryptsetup.c:3697 src/cryptsetup.c:3709 +#: src/cryptsetup.c:3679 src/cryptsetup.c:3696 src/cryptsetup.c:3708 msgid "Key size must be a multiple of 8 bits" msgstr "Schlüsselgröße muss ein Vielfaches von 8 Bit sein" -#: src/cryptsetup.c:3687 +#: src/cryptsetup.c:3686 msgid "At most 2 key size specifications can be supplied." msgstr "Es können maximal 2 Schlüsselgrößen angegeben werden." -#: src/cryptsetup.c:3716 src/cryptsetup.c:3727 +#: src/cryptsetup.c:3715 src/cryptsetup.c:3726 #, c-format msgid "At most %d volume key specifications can be supplied." msgstr "Es können maximal %d Laufwerksschlüssel-Angaben verarbeitet werden." -#: src/cryptsetup.c:3739 +#: src/cryptsetup.c:3738 #, c-format msgid "At most %d keyring link specifications can be supplied." msgstr "Es können maximal %d Schlüsselbund-Verknüpfungsangaben verarbeitet werden." -#: src/cryptsetup.c:3748 +#: src/cryptsetup.c:3747 msgid "Maximum device reduce size is 1 GiB." msgstr "Die maximale Verkleinerungsgröße ist 1 GiB." -#: src/cryptsetup.c:3751 +#: src/cryptsetup.c:3750 msgid "Reduce size must be multiple of 512 bytes sector." msgstr "Die verkleinerte Größe muss ein Vielfaches von 512-Byte-Sektoren sein." -#: src/cryptsetup.c:3768 +#: src/cryptsetup.c:3767 msgid "Option --priority can be only ignore/normal/prefer." msgstr "Die Option --priority kann nur »ignore/normal/prefer« sein." -#: src/cryptsetup.c:3787 src/veritysetup.c:568 src/integritysetup.c:653 +#: src/cryptsetup.c:3786 src/veritysetup.c:568 src/integritysetup.c:653 msgid "Show this help message" msgstr "Diese Hilfe anzeigen" -#: src/cryptsetup.c:3788 src/veritysetup.c:569 src/integritysetup.c:654 +#: src/cryptsetup.c:3787 src/veritysetup.c:569 src/integritysetup.c:654 msgid "Display brief usage" msgstr "Kurze Aufrufsyntax anzeigen" -#: src/cryptsetup.c:3789 src/veritysetup.c:570 src/integritysetup.c:655 +#: src/cryptsetup.c:3788 src/veritysetup.c:570 src/integritysetup.c:655 msgid "Print package version" msgstr "Paketversion ausgeben" -#: src/cryptsetup.c:3800 src/veritysetup.c:581 src/integritysetup.c:666 +#: src/cryptsetup.c:3799 src/veritysetup.c:581 src/integritysetup.c:666 msgid "Help options:" msgstr "Hilfe-Optionen:" -#: src/cryptsetup.c:3823 src/veritysetup.c:602 src/integritysetup.c:686 +#: src/cryptsetup.c:3822 src/veritysetup.c:602 src/integritysetup.c:686 msgid "[OPTION...] " msgstr "[OPTION...] " -#: src/cryptsetup.c:3832 src/veritysetup.c:611 src/integritysetup.c:697 +#: src/cryptsetup.c:3831 src/veritysetup.c:611 src/integritysetup.c:697 msgid "Argument missing." msgstr "Argument fehlt." -#: src/cryptsetup.c:3911 src/veritysetup.c:642 src/integritysetup.c:728 +#: src/cryptsetup.c:3910 src/veritysetup.c:642 src/integritysetup.c:728 msgid "Unknown action." msgstr "Unbekannte Aktion." -#: src/cryptsetup.c:3929 +#: src/cryptsetup.c:3928 msgid "Option --key-file takes precedence over specified key file argument." msgstr "Die Option --key-file wirkt stärker als das angegebene Schlüsseldatei-Argument." -#: src/cryptsetup.c:3935 +#: src/cryptsetup.c:3934 msgid "Only one --key-file argument is allowed." msgstr "Die Option --key-file ist nur einmal erlaubt." -#: src/cryptsetup.c:3940 +#: src/cryptsetup.c:3939 msgid "Password-based key derivation function (PBKDF) can be only pbkdf2 or argon2i/argon2id." msgstr "Passwortbasierte Schlüsselableitungsfunktion (PBKDF) kann nur »pbkdf2« oder »argon2i/argon2id« sein." -#: src/cryptsetup.c:3945 +#: src/cryptsetup.c:3944 msgid "PBKDF forced iterations cannot be combined with iteration time option." msgstr "Bei PBKDF darf nur entweder die Anzahl der Durchläufe oder die Zeitbegrenzung angegeben werden." -#: src/cryptsetup.c:3950 +#: src/cryptsetup.c:3949 msgid "Cannot link volume key to a keyring when keyring is disabled." msgstr "Laufwerkschlüssel kann nicht mit einem Schlüsselbund verbunden werden, solange der Schlüsselbund deaktiviert ist." -#: src/cryptsetup.c:3955 +#: src/cryptsetup.c:3954 msgid "Cannot use keyring key description when keyring is disabled." msgstr "Die Beschreibung des Schlüsselbundes kann nicht verwendet werden, wenn der Schlüsselbund deaktiviert ist." -#: src/cryptsetup.c:3960 +#: src/cryptsetup.c:3959 msgid "Inline integrity must be used together with --integrity option." msgstr "Inline-Integrität muss zusammen mit der Option »--integrity« benutzt werden." -#: src/cryptsetup.c:3971 +#: src/cryptsetup.c:3970 msgid "Options --keyslot-cipher and --keyslot-key-size must be used together." msgstr "Die Optionen --keyslot-cipher und --keyslot-keysize können nur zusammen benutzt werden." -#: src/cryptsetup.c:3979 +#: src/cryptsetup.c:3978 msgid "No action taken. Invoked with --test-args option.\n" msgstr "Es wird keine Aktion ausgeführt. Aufgerufen mit der Option --test-args.\n" -#: src/cryptsetup.c:3992 +#: src/cryptsetup.c:3991 msgid "Cannot disable metadata locking." msgstr "Fehler beim Deaktivieren der Metadaten-Dateisperre." @@ -4361,6 +4356,12 @@ msgstr "Authentifizierung mit öffentlichem Schlüssel ist auf dem Host nicht er msgid "Public key authentication error: " msgstr "Fehler bei der Authentifizierung mit öffentlichem Schlüssel: " +#~ msgid "Required kernel crypto interface not available." +#~ msgstr "Die benötigte Crypto-Kernel-Schnittstelle ist nicht verfügbar." + +#~ msgid "Ensure you have algif_skcipher kernel module loaded." +#~ msgstr "Stellen Sie sicher, dass das Kernelmodul »algif_skcipher« geladen ist." + #, c-format #~ msgid "Failed to read or validate BITLK FVE metadata copy #%d from %s." #~ msgstr "Fehler beim Lesen oder Validieren der BITLK-FVE-Metadaten-Kopie Nummer %d von »%s«." From e605a5e485da58f3ffe9a4c90c4c2eeea4ff918d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Marchal?= Date: Sat, 4 Jul 2026 18:12:56 +0200 Subject: [PATCH 162/244] po: update fr.po (from translationproject.org) --- po/fr.po | 1019 +++++++++++++++++++++++++++--------------------------- 1 file changed, 510 insertions(+), 509 deletions(-) diff --git a/po/fr.po b/po/fr.po index 5b7cadf6b..5acce7be2 100644 --- a/po/fr.po +++ b/po/fr.po @@ -7,10 +7,10 @@ # Frédéric Marchal , 2026. msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.5-rc0\n" +"Project-Id-Version: cryptsetup 2.8.7-rc1\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2026-03-30 14:18+0200\n" -"PO-Revision-Date: 2026-03-30 17:19+0200\n" +"POT-Creation-Date: 2026-06-29 21:30+0200\n" +"PO-Revision-Date: 2026-06-30 16:12+0200\n" "Last-Translator: Frédéric Marchal \n" "Language-Team: French \n" "Language: fr\n" @@ -79,7 +79,7 @@ msgid "Requested automatic recalculation of integrity tags is not supported." msgstr "Le recalcule automatique des balises de sécurité demandés n'est pas supporté." #: lib/libdevmapper.c:1802 lib/libdevmapper.c:1856 lib/libdevmapper.c:1859 -#: lib/luks2/luks2_json_metadata.c:2781 +#: lib/luks2/luks2_json_metadata.c:2799 msgid "Discard/TRIM is not supported." msgstr "Discard/TRIM n'est pas supporté." @@ -125,665 +125,665 @@ msgstr "La qualité du générateur aléatoire RNG demandé est inconnue." msgid "Error reading from RNG." msgstr "Erreur en lecture du générateur aléatoire RNG " -#: lib/setup.c:248 +#: lib/setup.c:251 msgid "OPAL support is disabled in libcryptsetup." msgstr "Le support de OPAL est désactivé dans libcryptsetup." -#: lib/setup.c:250 +#: lib/setup.c:253 #, c-format msgid "Device %s or kernel does not support OPAL encryption." msgstr "Le périphérique %s ou le noyau ne supporte pas le chiffrement OPAL." -#: lib/setup.c:266 +#: lib/setup.c:269 msgid "Cannot initialize crypto RNG backend." msgstr "Impossible d'initialiser le moteur aléatoire RNG pour le chiffrement." -#: lib/setup.c:272 +#: lib/setup.c:275 msgid "Cannot initialize crypto backend." msgstr "Impossible d'initialiser le moteur de chiffrement." -#: lib/setup.c:305 lib/setup.c:2766 lib/verity/verity.c:109 +#: lib/setup.c:308 lib/setup.c:2769 lib/verity/verity.c:109 #, c-format msgid "Hash algorithm %s not supported." msgstr "L'algorithme de hachage %s n'est pas supporté." -#: lib/setup.c:308 lib/loopaes/loopaes.c:78 +#: lib/setup.c:311 lib/loopaes/loopaes.c:78 #, c-format msgid "Key processing error (using hash %s)." msgstr "Erreur de traitement de clé (valeur hachage %s)." -#: lib/setup.c:389 lib/setup.c:426 +#: lib/setup.c:392 lib/setup.c:429 msgid "Cannot determine device type. Incompatible activation of device?" msgstr "Impossible de déterminer le type de périphérique. Activation du périphérique incompatible ?" -#: lib/setup.c:395 lib/setup.c:4160 +#: lib/setup.c:398 lib/setup.c:4177 msgid "This operation is supported only for LUKS device." msgstr "Cette opération n'est possible que pour les périphériques LUKS." -#: lib/setup.c:432 +#: lib/setup.c:435 msgid "This operation is supported only for LUKS2 device." msgstr "Cette opération n'est possible que pour les périphériques LUKS2." -#: lib/setup.c:489 lib/luks2/luks2_reencrypt.c:3101 +#: lib/setup.c:492 lib/luks2/luks2_reencrypt.c:3102 msgid "All key slots full." msgstr "Tous les emplacements de clés sont utilisés." -#: lib/setup.c:500 +#: lib/setup.c:503 #, c-format msgid "Key slot %d is invalid, please select between 0 and %d." msgstr "L'emplacement de clé %d n'est pas valide, merci d'en choisir un entre 0 et %d." -#: lib/setup.c:506 +#: lib/setup.c:509 #, c-format msgid "Key slot %d is full, please select another one." msgstr "L'emplacement de clé %d est utilisé, merci d'en sélectionner un autre." -#: lib/setup.c:531 lib/setup.c:3875 +#: lib/setup.c:534 lib/setup.c:3878 msgid "Device size is not aligned to device logical block size." msgstr "La taille du périphérique n'est pas alignée avec la taille d'un bloc logique du périphérique." -#: lib/setup.c:628 +#: lib/setup.c:631 #, c-format msgid "Header detected but device %s is too small." msgstr "En-tête détecté mais le périphérique %s est trop petit." -#: lib/setup.c:669 lib/setup.c:3760 lib/setup.c:5238 -#: lib/luks2/luks2_reencrypt.c:3948 lib/luks2/luks2_reencrypt.c:4437 +#: lib/setup.c:672 lib/setup.c:3763 lib/setup.c:5272 +#: lib/luks2/luks2_reencrypt.c:3949 lib/luks2/luks2_reencrypt.c:4438 msgid "This operation is not supported for this device type." msgstr "Cette opération n'est pas supportée pour ce type de périphérique." -#: lib/setup.c:674 +#: lib/setup.c:677 msgid "Illegal operation with reencryption in-progress." msgstr "Opération illégale avec une re-chiffrement en cours." -#: lib/setup.c:806 +#: lib/setup.c:809 msgid "Failed to rollback LUKS2 metadata in memory." msgstr "Échec lors du retour en arrière des métadonnées LUKS2 en mémoire." -#: lib/setup.c:893 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 -#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 -#: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 -#: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2953 -#: src/cryptsetup.c:3021 src/utils_reencrypt.c:2281 +#: lib/setup.c:896 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 +#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1779 +#: src/cryptsetup.c:1963 src/cryptsetup.c:2018 src/cryptsetup.c:2216 +#: src/cryptsetup.c:2361 src/cryptsetup.c:2639 src/cryptsetup.c:2952 +#: src/cryptsetup.c:3020 src/utils_reencrypt.c:2281 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." msgstr "%s n'est pas un périphérique LUKS valide." -#: lib/setup.c:896 lib/luks1/keymanage.c:517 +#: lib/setup.c:899 lib/luks1/keymanage.c:517 #, c-format msgid "Unsupported LUKS version %d." msgstr "La version %d de LUKS n'est pas supportée." -#: lib/setup.c:1270 +#: lib/setup.c:1273 #, c-format msgid "No known cipher specification pattern detected for active device %s." msgstr "Aucun motif connu d'algorithme de chiffrement n'a été détecté pour le périphérique actif %s." -#: lib/setup.c:1515 lib/setup.c:3507 lib/setup.c:3599 lib/setup.c:3611 -#: lib/setup.c:3783 lib/setup.c:5816 +#: lib/setup.c:1518 lib/setup.c:3510 lib/setup.c:3602 lib/setup.c:3614 +#: lib/setup.c:3786 lib/setup.c:5850 #, c-format msgid "Device %s is not active." msgstr "Le périphérique %s n'est pas activé." -#: lib/setup.c:1532 +#: lib/setup.c:1535 #, c-format msgid "Underlying device for crypt device %s disappeared." msgstr "Le périphérique sous-jacent pour le périphérique chiffré %s a disparu." -#: lib/setup.c:1614 +#: lib/setup.c:1617 msgid "Invalid plain crypt parameters." msgstr "Paramètres de chiffrement non valides." -#: lib/setup.c:1619 lib/setup.c:2669 +#: lib/setup.c:1622 lib/setup.c:2672 msgid "Invalid key size." msgstr "La taille de la clé n'est pas valide." -#: lib/setup.c:1624 lib/setup.c:2674 lib/setup.c:2879 +#: lib/setup.c:1627 lib/setup.c:2677 lib/setup.c:2882 msgid "UUID is not supported for this crypt type." msgstr "le UUID n'est pas supporté avec ce type de chiffrement." -#: lib/setup.c:1629 lib/setup.c:2679 +#: lib/setup.c:1632 lib/setup.c:2682 msgid "Detached metadata device is not supported for this crypt type." msgstr "Un périphérique avec des métadonnées détachées n'est pas supporté avec ce type de chiffrement." -#: lib/setup.c:1639 lib/setup.c:1887 lib/luks2/luks2_reencrypt.c:3034 -#: src/cryptsetup.c:1492 src/cryptsetup.c:3760 +#: lib/setup.c:1642 lib/setup.c:1890 lib/luks2/luks2_reencrypt.c:3035 +#: src/cryptsetup.c:1491 src/cryptsetup.c:3759 msgid "Unsupported encryption sector size." msgstr "Taille de secteur de chiffrement non supportée." -#: lib/setup.c:1647 lib/setup.c:1916 lib/setup.c:3869 +#: lib/setup.c:1650 lib/setup.c:1919 lib/setup.c:3872 msgid "Device size is not aligned to requested sector size." msgstr "La taille du périphérique n'est pas alignée avec la taille de secteur demandée." -#: lib/setup.c:1699 lib/setup.c:1951 lib/setup.c:2328 +#: lib/setup.c:1702 lib/setup.c:1954 lib/setup.c:2331 msgid "Can't format LUKS without device." msgstr "Impossible de formater en LUKS sans périphérique." -#: lib/setup.c:1704 lib/setup.c:1956 +#: lib/setup.c:1707 lib/setup.c:1959 #, c-format msgid "Zoned device %s cannot be used for LUKS header." msgstr "Le périphérique Zoned %s ne peut pas être utilisé pour l'en-tête LUKS." -#: lib/setup.c:1711 lib/setup.c:1963 lib/setup.c:2334 +#: lib/setup.c:1714 lib/setup.c:1966 lib/setup.c:2337 msgid "Requested data alignment is not compatible with data offset." msgstr "L'alignement de données demandé n'est pas compatible avec le décalage des données." -#: lib/setup.c:1751 lib/setup.c:1981 +#: lib/setup.c:1754 lib/setup.c:1984 msgid "WARNING: DAX device can corrupt data as it does not guarantee atomic sector updates.\n" msgstr "ATTENTION : Un périphérique DAX peut corrompre les données car il ne garanti pas la mise à jour atomique des secteurs.\n" -#: lib/setup.c:1789 lib/setup.c:2088 lib/setup.c:2109 lib/setup.c:2517 -#: lib/setup.c:2564 lib/setup.c:2896 +#: lib/setup.c:1792 lib/setup.c:2091 lib/setup.c:2112 lib/setup.c:2520 +#: lib/setup.c:2567 lib/setup.c:2899 #, c-format msgid "Cannot wipe header on device %s." msgstr "Impossible d'effacer l'en-tête du périphérique %s." -#: lib/setup.c:1802 lib/setup.c:2161 +#: lib/setup.c:1805 lib/setup.c:2164 #, c-format msgid "Device %s is too small for activation, there is no remaining space for data.\n" msgstr "Le périphérique %s est trop petit pour l'activation, il ne reste pas d'espace pour les données.\n" -#: lib/setup.c:1843 +#: lib/setup.c:1846 msgid "Volume key is too small for encryption with integrity extensions." msgstr "La clé de volume est trop petite pour chiffrer avec les extensions d'intégrité." -#: lib/setup.c:1847 +#: lib/setup.c:1850 msgid "Integrity key size is too small." msgstr "La taille de la clé d'intégrité est trop petite." -#: lib/setup.c:1856 +#: lib/setup.c:1859 #, c-format msgid "Cipher %s-%s (key size %zd bits) is not available." msgstr "Le chiffrement %s-%s (clé de %zd bits) n'est pas disponible." -#: lib/setup.c:1897 +#: lib/setup.c:1900 msgid "WARNING: The device activation will fail, dm-crypt is missing support for requested encryption sector size.\n" msgstr "AVERTISSEMENT: L'activation du périphérique va échouer, dm-crypt ne supporte pas la taille de secteur de chiffrement demandée.\n" -#: lib/setup.c:2091 lib/setup.c:2458 lib/setup.c:2520 lib/utils_device.c:906 -#: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3073 -#: lib/luks2/luks2_reencrypt.c:4497 +#: lib/setup.c:2094 lib/setup.c:2461 lib/setup.c:2523 lib/utils_device.c:906 +#: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3074 +#: lib/luks2/luks2_reencrypt.c:4498 #, c-format msgid "Device %s is too small." msgstr "Le périphérique %s est trop petit." -#: lib/setup.c:2102 lib/setup.c:2141 lib/setup.c:2557 lib/setup.c:2615 +#: lib/setup.c:2105 lib/setup.c:2144 lib/setup.c:2560 lib/setup.c:2618 #, c-format msgid "Cannot format device %s in use." msgstr "Impossible de formater le périphérique %s qui est en cours d'utilisation." -#: lib/setup.c:2105 lib/setup.c:2144 lib/setup.c:2560 lib/setup.c:2618 +#: lib/setup.c:2108 lib/setup.c:2147 lib/setup.c:2563 lib/setup.c:2621 #, c-format msgid "Cannot format device %s, permission denied." msgstr "Impossible de formater le périphérique %s. Permission refusée." -#: lib/setup.c:2129 lib/setup.c:2587 lib/setup.c:2969 +#: lib/setup.c:2132 lib/setup.c:2590 lib/setup.c:2972 #, c-format msgid "Cannot format integrity for device %s." msgstr "Impossible de formater l'intégrité du périphérique %s." -#: lib/setup.c:2148 lib/setup.c:2626 +#: lib/setup.c:2151 lib/setup.c:2629 #, c-format msgid "Cannot format device %s." msgstr "Impossible de formater le périphérique %s" -#: lib/setup.c:2191 +#: lib/setup.c:2194 msgid "Cannot get OPAL alignment parameters." msgstr "Impossible d'obtenir les paramètres d'alignement de OPAL." -#: lib/setup.c:2203 +#: lib/setup.c:2206 msgid "Bogus OPAL logical block size." msgstr "Taille de bloc logique OPAL incorrecte." -#: lib/setup.c:2208 lib/luks2/hw_opal/hw_opal.c:305 +#: lib/setup.c:2211 lib/luks2/hw_opal/hw_opal.c:305 msgid "Bogus OPAL logical block size differs from device block size." msgstr "La taille de bloc logique OPAL est différentes de la taille de bloc du périphérique." -#: lib/setup.c:2214 +#: lib/setup.c:2217 msgid "Requested data offset is not compatible with OPAL block size." msgstr "L'offset de données demandé n'est pas compatible avec la taille de bloc de OPAL." -#: lib/setup.c:2221 +#: lib/setup.c:2224 msgid "Requested data alignment is not compatible with OPAL alignment." msgstr "L'alignement de données demandé n'est pas compatible avec l'alignement de OPAL." -#: lib/setup.c:2241 +#: lib/setup.c:2244 msgid "Data offset does not satisfy OPAL alignment requirements." msgstr "L'offset de données ne satisfait pas les exigences d'alignement de OPAL." -#: lib/setup.c:2254 +#: lib/setup.c:2257 msgid "Requested data alignment does not satisfy locking range alignment requirements." msgstr "L'alignement de données demandé les exigences de la plage d'alignement du verrouillage." -#: lib/setup.c:2468 +#: lib/setup.c:2471 #, c-format msgid "Compensating device size by % sectors to align it with OPAL alignment granularity." msgstr "La taille du périphérique est compensée avec % secteurs pour l'aligner avec la granularité de l'alignement de OPAL." -#: lib/setup.c:2528 lib/setup.c:4243 lib/setup.c:4432 lib/utils_wipe.c:356 -#: lib/luks2/luks2_json_metadata.c:2724 lib/luks2/luks2_json_metadata.c:2992 +#: lib/setup.c:2531 lib/setup.c:4260 lib/setup.c:4466 lib/utils_wipe.c:356 +#: lib/luks2/luks2_json_metadata.c:2742 lib/luks2/luks2_json_metadata.c:3017 #, c-format msgid "Failed to acquire OPAL lock on device %s." msgstr "Impossible d'acquérir le verrou OPAL sur le périphérique %s." -#: lib/setup.c:2538 +#: lib/setup.c:2541 msgid "Incorrect OPAL Admin key." msgstr "Clé admin OPAL incorrecte." -#: lib/setup.c:2540 +#: lib/setup.c:2543 msgid "Cannot setup OPAL segment." msgstr "Impossible de configurer le segment OPAL." -#: lib/setup.c:2622 +#: lib/setup.c:2625 #, c-format msgid "Cannot format device %s, OPAL device seems to be fully write-protected now." msgstr "Impossible de formater le périphérique %s. Le périphérique OPAL semble maintenant être complètement protégé contre l'écriture." -#: lib/setup.c:2624 +#: lib/setup.c:2627 msgid "This is perhaps a bug in firmware. Run OPAL PSID reset and reconnect for recovery." msgstr "Il s'agit peut-être d'un bogue du micro logiciel. Exécutez une réinitialisation PSID OPAL et reconnectez pour récupération." -#: lib/setup.c:2644 +#: lib/setup.c:2647 #, c-format msgid "Locking range %d reset on device %s failed." msgstr "La réinitialisation de la plage %d de verrouillage du périphérique %s a échouée." -#: lib/setup.c:2664 +#: lib/setup.c:2667 msgid "Can't format LOOPAES without device." msgstr "Impossible de formater LOOPAES sans périphérique." -#: lib/setup.c:2709 +#: lib/setup.c:2712 msgid "Can't format VERITY without device." msgstr "Impossible de formater VERITY sans périphérique." -#: lib/setup.c:2720 lib/verity/verity.c:88 +#: lib/setup.c:2723 lib/verity/verity.c:88 #, c-format msgid "Unsupported VERITY hash type %d." msgstr "Type de hachage VERITY %d non supporté." -#: lib/setup.c:2726 lib/verity/verity.c:96 +#: lib/setup.c:2729 lib/verity/verity.c:96 msgid "Unsupported VERITY block size." msgstr "Taille de bloc VERITY non supportée." -#: lib/setup.c:2731 lib/verity/verity.c:61 +#: lib/setup.c:2734 lib/verity/verity.c:61 msgid "Unsupported VERITY hash offset." msgstr "Décalage de hachage VERITY non supporté." -#: lib/setup.c:2736 +#: lib/setup.c:2739 msgid "Unsupported VERITY FEC offset." msgstr "Décalage VERITY FEC non supporté." -#: lib/setup.c:2760 +#: lib/setup.c:2763 msgid "Data area overlaps with hash area." msgstr "La zone de données recouvre la zone de hachage." -#: lib/setup.c:2785 +#: lib/setup.c:2788 msgid "Hash area overlaps with FEC area." msgstr "La zone de hachage recouvre la zone FEC." -#: lib/setup.c:2792 +#: lib/setup.c:2795 msgid "Data area overlaps with FEC area." msgstr "La zone de données recouvre la zone FEC." -#: lib/setup.c:2884 +#: lib/setup.c:2887 msgid "Integrity key size mismatch." msgstr "Désaccord avec la taille de la clé." -#: lib/setup.c:2935 +#: lib/setup.c:2938 #, c-format msgid "WARNING: Requested tag size %d bytes differs from %s size output (%d bytes).\n" msgstr "ATTENTION : La taille %d demandée pour l'étiquette est différente de la taille de sortie de %s (%d octets).\n" -#: lib/setup.c:3048 lib/setup.c:3150 +#: lib/setup.c:3051 lib/setup.c:3153 #, c-format msgid "Unknown or unsupported device type %s requested." msgstr "Type de périphérique %s demandé inconnu ou non supporté." -#: lib/setup.c:3064 +#: lib/setup.c:3067 #, c-format msgid "Device %s does not provide inline integrity data fields." msgstr "Le périphérique %s ne fourni pas de champs de données d'intégrité en ligne." -#: lib/setup.c:3070 +#: lib/setup.c:3073 #, c-format msgid "Inline tag size % [bytes] is larger than % provided by device %s." msgstr "La taille d'étiquette en ligne % [octets] est plus grande que % fournie par le périphérique %s." -#: lib/setup.c:3085 +#: lib/setup.c:3088 #, c-format msgid "Sector must be the same as device hardware sector (%zu bytes)." msgstr "Le secteur doit être le même que le secteur matériel du périphérique (%zu octets)." -#: lib/setup.c:3515 lib/setup.c:3604 lib/setup.c:3617 +#: lib/setup.c:3518 lib/setup.c:3607 lib/setup.c:3620 #, c-format msgid "Unsupported parameters on device %s." msgstr "Paramètres non supportés sur le périphérique %s." -#: lib/setup.c:3521 lib/setup.c:3624 lib/luks2/luks2_reencrypt.c:2928 -#: lib/luks2/luks2_reencrypt.c:3197 lib/luks2/luks2_reencrypt.c:3594 +#: lib/setup.c:3524 lib/setup.c:3627 lib/luks2/luks2_reencrypt.c:2929 +#: lib/luks2/luks2_reencrypt.c:3198 lib/luks2/luks2_reencrypt.c:3595 #, c-format msgid "Mismatching parameters on device %s." msgstr "Paramètres non concordants sur le périphérique %s." -#: lib/setup.c:3647 +#: lib/setup.c:3650 msgid "Crypt devices mismatch." msgstr "Désaccord entre les périphériques crypt." -#: lib/setup.c:3679 lib/setup.c:3684 lib/luks2/luks2_reencrypt.c:2412 -#: lib/luks2/luks2_reencrypt.c:2944 lib/luks2/luks2_reencrypt.c:4236 +#: lib/setup.c:3682 lib/setup.c:3687 lib/luks2/luks2_reencrypt.c:2413 +#: lib/luks2/luks2_reencrypt.c:2945 lib/luks2/luks2_reencrypt.c:4237 #, c-format msgid "Failed to reload device %s." msgstr "Impossible de recharger le périphérique %s." -#: lib/setup.c:3690 lib/setup.c:3696 lib/luks2/luks2_reencrypt.c:2382 -#: lib/luks2/luks2_reencrypt.c:2389 lib/luks2/luks2_reencrypt.c:2958 +#: lib/setup.c:3693 lib/setup.c:3699 lib/luks2/luks2_reencrypt.c:2383 +#: lib/luks2/luks2_reencrypt.c:2390 lib/luks2/luks2_reencrypt.c:2959 #, c-format msgid "Failed to suspend device %s." msgstr "Impossible de suspendre le périphérique %s." -#: lib/setup.c:3702 lib/luks2/luks2_reencrypt.c:2396 -#: lib/luks2/luks2_reencrypt.c:2979 lib/luks2/luks2_reencrypt.c:4149 -#: lib/luks2/luks2_reencrypt.c:4240 +#: lib/setup.c:3705 lib/luks2/luks2_reencrypt.c:2397 +#: lib/luks2/luks2_reencrypt.c:2980 lib/luks2/luks2_reencrypt.c:4150 +#: lib/luks2/luks2_reencrypt.c:4241 #, c-format msgid "Failed to resume device %s." msgstr "Impossible de redémarrer le périphérique %s." -#: lib/setup.c:3717 +#: lib/setup.c:3720 #, c-format msgid "Fatal error while reloading device %s (on top of device %s)." msgstr "Erreur fatale en rechargeant le périphérique %s (au dessus du périphérique %s)" -#: lib/setup.c:3720 lib/setup.c:3722 +#: lib/setup.c:3723 lib/setup.c:3725 #, c-format msgid "Failed to switch device %s to dm-error." msgstr "Impossible de basculer le périphérique %s en dm-error." -#: lib/setup.c:3765 +#: lib/setup.c:3768 msgid "Can not resize LUKS2 device with static size." msgstr "Impossible de redimensionner le périphérique LUKS2 avec une taille statique." -#: lib/setup.c:3770 +#: lib/setup.c:3773 msgid "Resize of LUKS2 device with integrity protection is not supported." msgstr "Le redimensionnement d'un périphérique LUKS2 avec un protection d'intégrité n'est pas supporté." -#: lib/setup.c:3816 +#: lib/setup.c:3819 msgid "Cannot resize loop device." msgstr "Impossible de redimensionner le périphérique loopback." -#: lib/setup.c:3860 +#: lib/setup.c:3863 msgid "WARNING: Maximum size already set or kernel doesn't support resize.\n" msgstr "ATTENTION: La taille maximale est déjà définie ou le noyau ne supporte pas le redimensionnement.\n" -#: lib/setup.c:3926 +#: lib/setup.c:3929 msgid "Resize failed, the kernel doesn't support it." msgstr "Le redimensionnement a échoué, le noyau ne le supporte pas." -#: lib/setup.c:3958 +#: lib/setup.c:3961 msgid "Do you really want to change UUID of device?" msgstr "Voulez vous réellement changer l'UUID du périphérique ?" -#: lib/setup.c:4050 +#: lib/setup.c:4053 msgid "Header backup file does not contain compatible LUKS header." msgstr "Le fichier de sauvegarde de l'en-tête ne contient pas d'en-tête compatible LUKS." -#: lib/setup.c:4143 +#: lib/setup.c:4160 #, c-format msgid "Volume %s is not active." msgstr "Le volume %s n'est pas actif." -#: lib/setup.c:4198 +#: lib/setup.c:4215 #, c-format msgid "Volume %s is already suspended." msgstr "Le volume %s est déjà suspendu." -#: lib/setup.c:4224 +#: lib/setup.c:4241 #, c-format msgid "Suspend is not supported for device %s." msgstr "Le périphérique %s ne supporte pas la suspension." -#: lib/setup.c:4226 lib/setup.c:4234 +#: lib/setup.c:4243 lib/setup.c:4251 #, c-format msgid "Error during suspending device %s." msgstr "Erreur lors de la suspension du périphérique %s." -#: lib/setup.c:4249 +#: lib/setup.c:4266 #, c-format msgid "Device %s was suspended but hardware OPAL device cannot be locked." msgstr "Le périphérique %s a été suspendu mais le périphérique matériel OPAL ne sait pas être verrouillé." -#: lib/setup.c:4280 lib/setup.c:4457 +#: lib/setup.c:4297 lib/setup.c:4491 #, c-format msgid "Resume is not supported for device %s." msgstr "Le périphérique %s ne supporte pas la remise en service." -#: lib/setup.c:4282 lib/setup.c:4447 lib/setup.c:4459 +#: lib/setup.c:4299 lib/setup.c:4481 lib/setup.c:4493 #, c-format msgid "Error during resuming device %s." msgstr "Erreur lors de la remise en service du périphérique %s." -#: lib/setup.c:4301 +#: lib/setup.c:4335 msgid "Failed to unlink volume key from user specified keyring." msgstr "Impossible de délier la clé du porte-clé utilisateur spécifié." -#: lib/setup.c:4423 lib/setup.c:5603 +#: lib/setup.c:4457 lib/setup.c:5637 msgid "Failed to link volume key in user defined keyring." msgstr "Impossible de lier la clé de volume dans le porte-clé utilisateur." -#: lib/setup.c:4522 src/cryptsetup.c:2721 +#: lib/setup.c:4556 src/cryptsetup.c:2720 #, c-format msgid "Volume %s is not suspended." msgstr "Le volume %s n'est pas suspendu." -#: lib/setup.c:4633 lib/setup.c:7276 lib/setup.c:7298 lib/setup.c:7352 -#: src/cryptsetup.c:1856 src/cryptsetup.c:2260 src/cryptsetup.c:2278 -#: src/utils_reencrypt.c:305 src/utils_reencrypt.c:1966 +#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1855 +#: src/cryptsetup.c:2259 src/cryptsetup.c:2277 src/utils_reencrypt.c:305 +#: src/utils_reencrypt.c:1966 msgid "Volume key does not match the volume." msgstr "Ceci n'est pas la clé du volume." -#: lib/setup.c:4787 +#: lib/setup.c:4821 msgid "Failed to swap new key slot." msgstr "Nouvel emplacement de clé impossible à échanger." -#: lib/setup.c:4885 +#: lib/setup.c:4919 #, c-format msgid "Key slot %d is invalid." msgstr "L'emplacement de clé %d n'est pas valide." -#: lib/setup.c:4891 src/cryptsetup.c:1977 src/cryptsetup.c:2437 -#: src/cryptsetup.c:3121 src/cryptsetup.c:3181 +#: lib/setup.c:4925 src/cryptsetup.c:1976 src/cryptsetup.c:2436 +#: src/cryptsetup.c:3120 src/cryptsetup.c:3180 #, c-format msgid "Keyslot %d is not active." msgstr "L'emplacement de clé %d n'est pas actif." -#: lib/setup.c:4910 +#: lib/setup.c:4944 msgid "Device header overlaps with data area." msgstr "L'en-tête du périphérique recouvre la zone de données." -#: lib/setup.c:5131 +#: lib/setup.c:5165 msgid "Reencryption in-progress. Cannot activate device." msgstr "Re-chiffrement en cours. Impossible d'activer le périphérique." -#: lib/setup.c:5133 lib/luks2/luks2_json_metadata.c:2888 -#: lib/luks2/luks2_reencrypt.c:3725 +#: lib/setup.c:5167 lib/luks2/luks2_json_metadata.c:2913 +#: lib/luks2/luks2_reencrypt.c:3726 msgid "Failed to get reencryption lock." msgstr "Impossible d'obtenir le verrou de re-chiffrement." -#: lib/setup.c:5155 +#: lib/setup.c:5189 msgid "LUKS2 reencryption recovery using volume key(s) failed." msgstr "La récupération du rechiffrement LUKS2 avec la/les clé(s) de volume a échoué." -#: lib/setup.c:5291 +#: lib/setup.c:5325 #, c-format msgid "Device %s already exists." msgstr "Le périphérique %s existe déjà." -#: lib/setup.c:5298 +#: lib/setup.c:5332 #, c-format msgid "Cannot use device %s, name is invalid or still in use." msgstr "Impossible d'utiliser le périphérique %s, le nom est invalide ou est toujours utilisé." -#: lib/setup.c:5310 +#: lib/setup.c:5344 msgid "Reencryption volume keys do not match the volume." msgstr "Les clés de rechiffrement du volume ne correspondent pas au volume." -#: lib/setup.c:5327 +#: lib/setup.c:5361 msgid "Incorrect volume key specified for plain device." msgstr "Clé de volume incorrecte pour le périphérique en clair." -#: lib/setup.c:5353 lib/setup.c:5414 +#: lib/setup.c:5387 lib/setup.c:5448 msgid "Device type is not properly initialized." msgstr "Type de périphérique improprement initialisé." -#: lib/setup.c:5452 +#: lib/setup.c:5486 msgid "Kernel keyring is not supported by the kernel." msgstr "Le porte-clé du noyau n'est pas supporté par ce noyau." -#: lib/setup.c:5456 +#: lib/setup.c:5490 msgid "Kernel keyring missing: required for passing signature to kernel." msgstr "Le porte-clé du noyau est manquant : il est requis pour passer une signature au noyau." -#: lib/setup.c:5511 +#: lib/setup.c:5545 #, c-format msgid "Cannot use keyring key %s." msgstr "Impossible d'utiliser la clé %s du porte clé." -#: lib/setup.c:5724 +#: lib/setup.c:5758 msgid "Incorrect root hash specified for verity device." msgstr "Hachage racine incorrect spécifié pour le périphérique verity." -#: lib/setup.c:5765 lib/setup.c:5790 +#: lib/setup.c:5799 lib/setup.c:5824 msgid "OPAL does not support deferred deactivation." msgstr "OPAL ne supporte pas la désactivation différée." -#: lib/setup.c:5780 lib/setup.c:5811 lib/luks2/luks2_json_metadata.c:2953 +#: lib/setup.c:5814 lib/setup.c:5845 lib/luks2/luks2_json_metadata.c:2978 #: src/utils_reencrypt.c:89 #, c-format msgid "Device %s is still in use." msgstr "Le périphérique %s est toujours occupé." -#: lib/setup.c:5798 +#: lib/setup.c:5832 #, c-format msgid "Could not cancel deferred remove from device %s." msgstr "Impossible d'annuler la suppression différée du périphérique %s." -#: lib/setup.c:5820 +#: lib/setup.c:5854 #, c-format msgid "Invalid device %s." msgstr "Le périphérique %s n'est pas valide." -#: lib/setup.c:5967 +#: lib/setup.c:6001 msgid "Volume key buffer too small." msgstr "Le tampon de la clé du volume est trop petit." -#: lib/setup.c:5978 +#: lib/setup.c:6012 msgid "Cannot retrieve volume key for LUKS2 device." msgstr "Impossible de récupérer la clé du volume pour le périphérique LUKS2." -#: lib/setup.c:5987 +#: lib/setup.c:6021 msgid "Cannot retrieve volume key for LUKS1 device." msgstr "Impossible de récupérer la clé du volume pour le périphérique LUKS1." -#: lib/setup.c:6001 +#: lib/setup.c:6035 msgid "Cannot retrieve volume key for plain device." msgstr "Impossible de récupérer la clé du volume pour ce périphérique de type « plain »." -#: lib/setup.c:6009 +#: lib/setup.c:6043 msgid "Cannot retrieve root hash for verity device." msgstr "Impossible de récupérer le hachage racine pour le périphérique verity." -#: lib/setup.c:6018 +#: lib/setup.c:6052 msgid "Cannot retrieve volume key for BITLK device." msgstr "Impossible de récupérer la clé du volume pour le périphérique BITLK." -#: lib/setup.c:6023 +#: lib/setup.c:6057 msgid "Cannot retrieve volume key for FVAULT2 device." msgstr "Impossible de récupérer la clé du volume pour le périphérique FVAULT2." -#: lib/setup.c:6025 +#: lib/setup.c:6059 #, c-format msgid "This operation is not supported for %s crypt device." msgstr "Cette opération n'est pas possible pour le périphérique chiffré %s." -#: lib/setup.c:6210 lib/setup.c:6221 +#: lib/setup.c:6244 lib/setup.c:6255 msgid "Dump operation is not supported for this device type." msgstr "L'opération de vidage n'est pas supportée pour ce type de périphérique." -#: lib/setup.c:6601 +#: lib/setup.c:6635 #, c-format msgid "Data offset is not multiple of %u bytes." msgstr "Le décalage des données n'est pas un multiple de %u octets." -#: lib/setup.c:6909 +#: lib/setup.c:6943 #, c-format msgid "Cannot convert device %s which is still in use." msgstr "Impossible de convertir le périphérique %s qui est toujours en cours d'utilisation." -#: lib/setup.c:7217 lib/setup.c:7361 +#: lib/setup.c:7251 lib/setup.c:7406 #, c-format msgid "Failed to assign keyslot %u as the new volume key." msgstr "Échec de l'affectation de l'emplacement de clé %u pour la nouvelle clé de volume." -#: lib/setup.c:7241 +#: lib/setup.c:7275 msgid "Failed to initialize default LUKS2 keyslot parameters." msgstr "Échec de l'initialisation des paramètres par défaut des emplacement de clé LUKS2." -#: lib/setup.c:7247 +#: lib/setup.c:7281 #, c-format msgid "Failed to assign keyslot %d to digest." msgstr "Échec de l'affectation de l'emplacement de clé %d aux résumé." -#: lib/setup.c:7478 +#: lib/setup.c:7523 msgid "Cannot add key slot, all slots disabled and no volume key provided." msgstr "Impossible d'ajouter un emplacement de clé, tous les emplacements sont désactivés et aucune clé n'a été fournie pour ce volume." -#: lib/setup.c:7551 lib/verity/verity.c:333 +#: lib/setup.c:7611 lib/setup.c:7626 lib/verity/verity.c:333 msgid "Failed to load key in kernel keyring." msgstr "Impossible de charger la clé dans le porte-clé du noyau." -#: lib/setup.c:7742 +#: lib/setup.c:7807 #, c-format msgid "Could not find keyring described by \"%s\"." msgstr "Impossible de trouver le porte-clé décrit par « %s »." -#: lib/setup.c:7807 +#: lib/setup.c:7872 msgid "Failed to acquire global memory-hard access serialization lock." msgstr "Erreur lors de l'acquisition du verrou global de sérialisation des accès strictes à la mémoire" -#: lib/utils.c:204 lib/tcrypt/tcrypt.c:490 +#: lib/utils.c:205 lib/tcrypt/tcrypt.c:488 msgid "Failed to open key file." msgstr "Impossible d'ouvrir le fichier de clef." -#: lib/utils.c:212 +#: lib/utils.c:213 msgid "Cannot read keyfile from a terminal." msgstr "Impossible de lire le fichier de clé depuis un terminal." -#: lib/utils.c:228 +#: lib/utils.c:229 msgid "Failed to stat key file." msgstr "Impossible d'exécuter « stat » sur le fichier de clef." -#: lib/utils.c:236 lib/utils.c:257 +#: lib/utils.c:237 lib/utils.c:258 msgid "Cannot seek to requested keyfile offset." msgstr "Impossible de sauter au décalage demandé dans le fichier de clé." -#: lib/utils.c:251 lib/utils.c:266 src/utils_password.c:219 +#: lib/utils.c:252 lib/utils.c:267 src/utils_password.c:219 #: src/utils_password.c:231 msgid "Out of memory while reading passphrase." msgstr "Plus assez de mémoire lors de la lecture de la phrase secrète." -#: lib/utils.c:286 +#: lib/utils.c:287 msgid "Error reading passphrase." msgstr "Erreur de lecture de la phrase secrète." -#: lib/utils.c:303 +#: lib/utils.c:304 msgid "Nothing to read on input." msgstr "Rien à lire en entrée." -#: lib/utils.c:310 +#: lib/utils.c:311 msgid "Maximum keyfile size exceeded." msgstr "Taille max. de fichier de clé dépassée." -#: lib/utils.c:315 +#: lib/utils.c:316 msgid "Cannot read requested amount of data." msgstr "Impossible de lire la quantité de données demandée." @@ -964,7 +964,7 @@ msgid "Cipher specification should be in [cipher]-[mode]-[iv] format." msgstr "La spécification du chiffrement devrait être au format [chiffrement]-[mode]-[iv]." #: lib/luks1/keyencryption.c:85 lib/luks1/keymanage.c:353 -#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1150 +#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1132 #: lib/luks2/luks2_json_metadata.c:1518 lib/luks2/luks2_keyslot.c:711 #, c-format msgid "Cannot write to device %s, permission denied." @@ -978,13 +978,13 @@ msgstr "Échec lors de l'ouverture du périphérique de stockage temporaire de c msgid "Failed to access temporary keystore device." msgstr "Impossible d'accéder au périphérique de stockage temporaire de clés." -#: lib/luks1/keyencryption.c:189 lib/luks2/luks2_keyslot_luks2.c:49 -#: lib/luks2/luks2_keyslot_luks2.c:67 lib/luks2/luks2_keyslot_reenc.c:184 +#: lib/luks1/keyencryption.c:189 lib/luks2/luks2_keyslot_luks2.c:47 +#: lib/luks2/luks2_keyslot_reenc.c:184 msgid "IO error while encrypting keyslot." msgstr "Erreur E/S pendant le chiffrement de l'emplacement de clé." #: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:356 -#: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:668 +#: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:659 #: lib/fvault2/fvault2.c:872 lib/verity/verity.c:67 lib/verity/verity.c:183 #: lib/verity/verity_hash.c:312 lib/verity/verity_hash.c:321 #: lib/verity/verity_hash.c:350 lib/verity/verity_fec.c:247 @@ -995,7 +995,7 @@ msgstr "Erreur E/S pendant le chiffrement de l'emplacement de clé." msgid "Cannot open device %s." msgstr "Impossible d'ouvrir le périphérique %s." -#: lib/luks1/keyencryption.c:247 lib/luks2/luks2_keyslot_luks2.c:128 +#: lib/luks1/keyencryption.c:247 lib/luks2/luks2_keyslot_luks2.c:85 msgid "IO error while decrypting keyslot." msgstr "Erreur E/S pendant le déchiffrement de l'emplacement de clé." @@ -1085,7 +1085,7 @@ msgid "Cipher hash repaired to lowercase (%s)." msgstr "Valeur hachée du chiffrement réparée vers des minuscules (%s)." #: lib/luks1/keymanage.c:417 lib/luks1/keymanage.c:523 -#: lib/luks1/keymanage.c:777 +#: lib/luks1/keymanage.c:756 #, c-format msgid "Requested LUKS hash %s is not supported." msgstr "L'algorithme de hachage LUKS demandé (%s) n'est pas supporté." @@ -1132,7 +1132,7 @@ msgstr "Le mode de chiffrement LUKS %s n'est pas valide." msgid "LUKS hash %s is invalid." msgstr "La valeur hachée LUKS %s n'est pas valide." -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 +#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1366 msgid "No known problems detected for LUKS header." msgstr "Aucun problème connu détecté pour l'en-tête LUKS." @@ -1146,50 +1146,50 @@ msgstr "Erreur lors de la mise à jour de l'en-tête LUKS sur le périphérique msgid "Error re-reading LUKS header after update on device %s." msgstr "Erreur lors de la relecture de l'en-tête LUKS après la mise à jour sur le périphérique %s." -#: lib/luks1/keymanage.c:771 +#: lib/luks1/keymanage.c:750 msgid "Data offset for LUKS header must be either 0 or higher than header size." msgstr "L'offset des données d'un en-tête LUKS doit être soit 0 ou soit plus grand que la taille de l'en-tête." -#: lib/luks1/keymanage.c:782 lib/luks1/keymanage.c:853 +#: lib/luks1/keymanage.c:761 lib/luks1/keymanage.c:832 #: lib/luks2/luks2_json_format.c:231 lib/luks2/luks2_json_metadata.c:1261 #: src/utils_reencrypt.c:701 msgid "Wrong LUKS UUID format provided." msgstr "Mauvais format fourni pour le UUID LUKS." -#: lib/luks1/keymanage.c:804 +#: lib/luks1/keymanage.c:783 msgid "Cannot create LUKS header: reading random salt failed." msgstr "Impossible de créer un en-tête LUKS : échec lors de la lecture de l'aléa." -#: lib/luks1/keymanage.c:832 +#: lib/luks1/keymanage.c:811 #, c-format msgid "Cannot create LUKS header: header digest failed (using hash %s)." msgstr "Impossible de créer un en-tête LUKS : le résumé (« digest ») de l'en-tête a échoué (en utilisant l'algorithme de hachage %s)." -#: lib/luks1/keymanage.c:877 +#: lib/luks1/keymanage.c:856 #, c-format msgid "Key slot %d active, purge first." msgstr "L'emplacement de clé %d est activé, effacez le d'abord." -#: lib/luks1/keymanage.c:883 +#: lib/luks1/keymanage.c:862 #, c-format msgid "Key slot %d material includes too few stripes. Header manipulation?" msgstr "Le matériel de l'emplacement de clé %d a trop peu de bandes. L'en-tête a-t-il été modifié ?" -#: lib/luks1/keymanage.c:921 lib/luks2/luks2_keyslot_luks2.c:260 +#: lib/luks1/keymanage.c:900 lib/luks2/luks2_keyslot_luks2.c:217 msgid "PBKDF2 iteration value overflow." msgstr "Débordement de la valeur d'itération de PBKDF2." -#: lib/luks1/keymanage.c:1040 +#: lib/luks1/keymanage.c:1022 #, c-format msgid "Cannot open keyslot (using hash %s)." msgstr "Impossible d'ouvrir l'emplacement de clé (en utilisant le hachage %s)." -#: lib/luks1/keymanage.c:1136 +#: lib/luks1/keymanage.c:1118 #, c-format msgid "Key slot %d is invalid, please select keyslot between 0 and %d." msgstr "L'emplacement de clé %d n'est pas valide, merci de sélectionner un emplacement entre 0 et %d." -#: lib/luks1/keymanage.c:1154 lib/luks2/luks2_keyslot.c:715 +#: lib/luks1/keymanage.c:1136 lib/luks2/luks2_keyslot.c:715 #, c-format msgid "Cannot wipe device %s." msgstr "Impossible d'effacer de façon sécurisée le périphérique %s." @@ -1210,56 +1210,48 @@ msgstr "Fichier de clé incompatible pour boucle « loop-AES »." msgid "Kernel does not support loop-AES compatible mapping." msgstr "Le noyau ne supporte pas les associations de type boucle « loop-AES »." -#: lib/tcrypt/tcrypt.c:497 +#: lib/tcrypt/tcrypt.c:495 #, c-format msgid "Error reading keyfile %s." msgstr "Erreur lors de la lecture du fichier de clé %s." -#: lib/tcrypt/tcrypt.c:547 +#: lib/tcrypt/tcrypt.c:549 #, c-format msgid "Maximum TCRYPT passphrase length (%zu) exceeded." msgstr "Longueur maximum de la phrase secrète TCRYPT (%zu) dépassée." -#: lib/tcrypt/tcrypt.c:589 +#: lib/tcrypt/tcrypt.c:591 #, c-format msgid "PBKDF2 hash algorithm %s not available, skipping." msgstr "L'algorithme de hachage PBKDF2 %s n'est pas supporté, ignoré." -#: lib/tcrypt/tcrypt.c:608 src/cryptsetup.c:1240 -msgid "Required kernel crypto interface not available." -msgstr "L'interface du noyau requise pour le chiffrement n'est pas disponible." - -#: lib/tcrypt/tcrypt.c:610 src/cryptsetup.c:1242 -msgid "Ensure you have algif_skcipher kernel module loaded." -msgstr "Vérifiez que le module du noyau algif_skcipher est chargé." - -#: lib/tcrypt/tcrypt.c:752 +#: lib/tcrypt/tcrypt.c:743 #, c-format msgid "Activation is not supported for %d sector size." msgstr "L'activation n'est pas supportée pour des secteurs de taille %d." -#: lib/tcrypt/tcrypt.c:758 +#: lib/tcrypt/tcrypt.c:749 msgid "Kernel does not support activation for this TCRYPT legacy mode." msgstr "Le noyau ne supporte pas l'activation pour ce mode TCRYPT historique." -#: lib/tcrypt/tcrypt.c:813 +#: lib/tcrypt/tcrypt.c:804 #, c-format msgid "Activating TCRYPT system encryption for partition %s." msgstr "Activation du chiffrement du système TCRYPT sur la partition %s." -#: lib/tcrypt/tcrypt.c:828 +#: lib/tcrypt/tcrypt.c:819 msgid "Cannot determine TCRYPT system partition offset, activating whole encrypted area." msgstr "Impossible de déterminer le décalage de la partition système TCRYPT, la zone de chiffrement entière est activée." -#: lib/tcrypt/tcrypt.c:837 +#: lib/tcrypt/tcrypt.c:828 msgid "Cannot determine TCRYPT system partition offset, activating device as a system partition." msgstr "Impossible de déterminer le décalage de la partition système TCRYPT, le périphérique est activé comme une partition système." -#: lib/tcrypt/tcrypt.c:917 +#: lib/tcrypt/tcrypt.c:908 msgid "Kernel does not support TCRYPT compatible mapping." msgstr "Le noyau ne supporte pas les associations de type TCRYPT." -#: lib/tcrypt/tcrypt.c:1146 +#: lib/tcrypt/tcrypt.c:1137 msgid "This function is not supported without TCRYPT header load." msgstr "Cette fonction n'est pas supportée sans le chargement de l'en-tête TCRYPT." @@ -1612,8 +1604,7 @@ msgid "WARNING: LUKS2 keyslots area size changed to % bytes.\n" msgstr "ATTENTION: La taille de la zone des emplacements de clés LUKS2 est devenue % octets.\n" #: lib/luks2/luks2_json_metadata.c:1171 lib/luks2/luks2_json_metadata.c:1357 -#: lib/luks2/luks2_json_metadata.c:1417 lib/luks2/luks2_keyslot_luks2.c:81 -#: lib/luks2/luks2_keyslot_luks2.c:105 +#: lib/luks2/luks2_json_metadata.c:1417 lib/luks2/luks2_keyslot_luks2.c:71 #, c-format msgid "Failed to acquire read lock on device %s." msgstr "Impossible d'acquérir le verrou de lecture sur le périphérique %s." @@ -1673,79 +1664,79 @@ msgstr "" msgid "Ignored unknown flag %s." msgstr "Fanion inconnu %s ignoré." -#: lib/luks2/luks2_json_metadata.c:2545 lib/luks2/luks2_reencrypt.c:2109 +#: lib/luks2/luks2_json_metadata.c:2563 lib/luks2/luks2_reencrypt.c:2110 #, c-format msgid "Missing key for dm-crypt segment %u" msgstr "Clé manquante pour le segment %u de dm-crypt" -#: lib/luks2/luks2_json_metadata.c:2557 lib/luks2/luks2_reencrypt.c:2122 +#: lib/luks2/luks2_json_metadata.c:2575 lib/luks2/luks2_reencrypt.c:2123 msgid "Failed to set dm-crypt segment." msgstr "Impossible de définir le segment dm-crypt." -#: lib/luks2/luks2_json_metadata.c:2563 lib/luks2/luks2_reencrypt.c:2128 +#: lib/luks2/luks2_json_metadata.c:2581 lib/luks2/luks2_reencrypt.c:2129 msgid "Failed to set dm-linear segment." msgstr "Impossible de définir le segment dm-linear." -#: lib/luks2/luks2_json_metadata.c:2683 src/utils_reencrypt.c:578 +#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:578 msgid "No known cipher specification pattern detected in LUKS2 header." msgstr "Aucun motif connu d'algorithme de chiffrement n'a été détecté dans l'en-tête LUKS2." -#: lib/luks2/luks2_json_metadata.c:2691 +#: lib/luks2/luks2_json_metadata.c:2709 msgid "OPAL device must have static device size." msgstr "Un périphérique OPAL doit avoir une taille de périphérique statique." -#: lib/luks2/luks2_json_metadata.c:2711 +#: lib/luks2/luks2_json_metadata.c:2729 msgid "Encrypted OPAL device with integrity must be smaller than locking range." msgstr "Un périphérique OPAL chiffré avec intégrité doit être plus petit que la plage de verrouillage." -#: lib/luks2/luks2_json_metadata.c:2716 +#: lib/luks2/luks2_json_metadata.c:2734 msgid "OPAL device must have same size as locking range." msgstr "Un périphérique OPAL doit avoir la même taille que la plage de verrouillage." -#: lib/luks2/luks2_json_metadata.c:2736 +#: lib/luks2/luks2_json_metadata.c:2754 #, c-format msgid "OPAL device is %s already unlocked.\n" msgstr "Le périphérique OPAL %s est déjà déverrouillé.\n" -#: lib/luks2/luks2_json_metadata.c:2775 +#: lib/luks2/luks2_json_metadata.c:2793 msgid "Unsupported device integrity configuration." msgstr "Configuration d'intégrité du périphérique non supportée." -#: lib/luks2/luks2_json_metadata.c:2791 +#: lib/luks2/luks2_json_metadata.c:2809 msgid "Underlying dm-integrity device with unexpected provided data sectors." msgstr "Les secteurs de données fournis sont inattendus pour le périphérique dm-integrity sous-jacent." -#: lib/luks2/luks2_json_metadata.c:2886 +#: lib/luks2/luks2_json_metadata.c:2911 msgid "Reencryption in-progress. Cannot deactivate device." msgstr "Re-chiffrement en cours. Le périphérique ne peut être désactivé." -#: lib/luks2/luks2_json_metadata.c:2897 lib/luks2/luks2_reencrypt.c:4286 +#: lib/luks2/luks2_json_metadata.c:2922 lib/luks2/luks2_reencrypt.c:4287 #, c-format msgid "Failed to replace suspended device %s with dm-error target." msgstr "Échec du remplacement du périphérique suspendu %s avec la cible dm-error." -#: lib/luks2/luks2_json_metadata.c:2976 lib/luks2/luks2_json_metadata.c:2998 +#: lib/luks2/luks2_json_metadata.c:3001 lib/luks2/luks2_json_metadata.c:3023 #, c-format msgid "Device %s was deactivated but hardware OPAL device cannot be locked." msgstr "Le périphérique %s a été désactivé mais le périphérique matériel OPAL ne sait pas être verrouillé." -#: lib/luks2/luks2_json_metadata.c:3020 +#: lib/luks2/luks2_json_metadata.c:3045 msgid "Unmet LUKS2 requirements detected." msgstr "Des exigences LUKS2 non rencontrées ont été détectées." -#: lib/luks2/luks2_json_metadata.c:3028 +#: lib/luks2/luks2_json_metadata.c:3053 msgid "Operation incompatible with device marked for legacy reencryption. Aborting." msgstr "Opération incompatible avec un périphérique marqué pour le rechiffrement historique. Abandon." -#: lib/luks2/luks2_json_metadata.c:3030 +#: lib/luks2/luks2_json_metadata.c:3055 msgid "Operation incompatible with device marked for LUKS2 reencryption. Aborting." msgstr "Opération incompatible avec un périphérique marqué pour le rechiffrement LUKS2. Abandon." -#: lib/luks2/luks2_json_metadata.c:3032 +#: lib/luks2/luks2_json_metadata.c:3057 msgid "Operation incompatible with device using OPAL. Aborting." msgstr "Opération incompatible avec un périphérique utilisant OPAL. Abandon." -#: lib/luks2/luks2_json_metadata.c:3034 +#: lib/luks2/luks2_json_metadata.c:3059 msgid "Operation incompatible with device using inline HW tags. Aborting." msgstr "Opération incompatible avec un périphérique utilisant les étiquettes HW. Abandon." @@ -1757,22 +1748,22 @@ msgstr "Pas assez de mémoire disponible pour ouvrir l'emplacement de clé." msgid "Keyslot open failed." msgstr "Échec de l'ouverture de l'emplacement de clé." -#: lib/luks2/luks2_keyslot_luks2.c:42 lib/luks2/luks2_keyslot_luks2.c:99 +#: lib/luks2/luks2_keyslot_luks2.c:40 lib/luks2/luks2_keyslot_luks2.c:77 #, c-format -msgid "Cannot use %s-%s cipher for keyslot encryption." -msgstr "Impossible d'utiliser le chiffrement %s-%s pour le chiffrement de l'emplacement de clé" +msgid "Cannot use %s cipher for keyslot encryption." +msgstr "Impossible d'utiliser le chiffrement %s pour le chiffrement de l'emplacement de clé." -#: lib/luks2/luks2_keyslot_luks2.c:262 +#: lib/luks2/luks2_keyslot_luks2.c:219 msgid "Not enough memory for keyslot key derivation." msgstr "Pas assez de mémoire pour la dérivation des clés des emplacement de clés." -#: lib/luks2/luks2_keyslot_luks2.c:276 lib/luks2/luks2_keyslot_luks2.c:405 -#: lib/luks2/luks2_keyslot_reenc.c:434 lib/luks2/luks2_reencrypt.c:2733 +#: lib/luks2/luks2_keyslot_luks2.c:233 lib/luks2/luks2_keyslot_luks2.c:358 +#: lib/luks2/luks2_keyslot_reenc.c:434 lib/luks2/luks2_reencrypt.c:2734 #, c-format msgid "Hash algorithm %s is not available." msgstr "L'algorithme de hachage %s n'est pas disponible." -#: lib/luks2/luks2_keyslot_luks2.c:522 +#: lib/luks2/luks2_keyslot_luks2.c:475 msgid "No space for new keyslot." msgstr "Plus d'espace pour le nouvel emplacement de clé." @@ -1789,336 +1780,336 @@ msgstr "Impossible de mettre à jour le type de résilience. Le nouveau type ne msgid "Failed to refresh reencryption verification digest." msgstr "Impossible de rafraîchir le résumé de la vérification de rechiffrement." -#: lib/luks2/luks2_luks1_convert.c:532 +#: lib/luks2/luks2_luks1_convert.c:498 #, c-format msgid "Cannot check status of device with uuid: %s." msgstr "Ne peut vérifier le statut du périphérique avec le uuid : %s." -#: lib/luks2/luks2_luks1_convert.c:558 +#: lib/luks2/luks2_luks1_convert.c:524 msgid "Unable to convert header with LUKSMETA additional metadata." msgstr "Impossible de convertir un en-tête avec des métadonnées LUKSMETA supplémentaires." -#: lib/luks2/luks2_luks1_convert.c:590 lib/luks2/luks2_reencrypt.c:3893 +#: lib/luks2/luks2_luks1_convert.c:556 lib/luks2/luks2_reencrypt.c:3894 #, c-format msgid "Unable to use cipher specification %s-%s for LUKS2." msgstr "Impossible d'utiliser la spécification de chiffrement %s-%s pour LUKS2." -#: lib/luks2/luks2_luks1_convert.c:599 +#: lib/luks2/luks2_luks1_convert.c:565 #, c-format msgid "Unable to use cipher specification %s-%s for LUKS2 keyslot." msgstr "Impossible d'utiliser la spécification de chiffrement %s-%s pour un emplacement de clé LUKS2." -#: lib/luks2/luks2_luks1_convert.c:614 +#: lib/luks2/luks2_luks1_convert.c:580 msgid "Unable to move keyslot area. Not enough space." msgstr "Impossible de déplacer la zone des emplacements de clés. Pas assez d'espace." -#: lib/luks2/luks2_luks1_convert.c:653 +#: lib/luks2/luks2_luks1_convert.c:619 msgid "Cannot convert to LUKS2 format - invalid metadata." msgstr "Impossible de convertir au format LUKS2 – métadonnées invalides." -#: lib/luks2/luks2_luks1_convert.c:670 +#: lib/luks2/luks2_luks1_convert.c:636 msgid "Unable to move keyslot area. LUKS2 keyslots area too small." msgstr "Impossible de déplacer la zone des emplacements de clés. Les emplacements de clés LULS2 sont trop petits." -#: lib/luks2/luks2_luks1_convert.c:676 lib/luks2/luks2_luks1_convert.c:1006 +#: lib/luks2/luks2_luks1_convert.c:642 lib/luks2/luks2_luks1_convert.c:972 msgid "Unable to move keyslot area." msgstr "Impossible de déplacer la zone des emplacements de clés." -#: lib/luks2/luks2_luks1_convert.c:791 +#: lib/luks2/luks2_luks1_convert.c:757 msgid "Cannot convert to LUKS1 format - default segment encryption sector size is not 512 bytes." msgstr "Impossible de convertir au format LUKS1 – la taille du secteur de chiffrement du segment par défaut n'est pas 512 octets." -#: lib/luks2/luks2_luks1_convert.c:799 +#: lib/luks2/luks2_luks1_convert.c:765 msgid "Cannot convert to LUKS1 format - key slot digests are not LUKS1 compatible." msgstr "Impossible de convertir au format LUKS1 – les résumés des emplacements de clés ne sont pas compatibles avec LUKS1." -#: lib/luks2/luks2_luks1_convert.c:813 +#: lib/luks2/luks2_luks1_convert.c:779 #, c-format msgid "Cannot convert to LUKS1 format - device uses wrapped key cipher %s." msgstr "Impossible de convertir au format LUKS1 – le périphérique utilise des clés de chiffrement %s emballées." -#: lib/luks2/luks2_luks1_convert.c:818 +#: lib/luks2/luks2_luks1_convert.c:784 msgid "Cannot convert to LUKS1 format - device uses more segments." msgstr "Impossible de convertir au format LUKS1 – le périphérique utilise plus de segments." -#: lib/luks2/luks2_luks1_convert.c:826 +#: lib/luks2/luks2_luks1_convert.c:792 #, c-format msgid "Cannot convert to LUKS1 format - LUKS2 header contains %u token(s)." msgstr "Impossible de convertir au format LUKS1 – l'en-tête LUKS2 contient %u jeton(s)." -#: lib/luks2/luks2_luks1_convert.c:832 +#: lib/luks2/luks2_luks1_convert.c:798 msgid "Cannot convert to LUKS1 format - there are no active keyslots." msgstr "Impossible de convertir au format LUKS1 – il n'y a pas d'emplacements de clés actifs." -#: lib/luks2/luks2_luks1_convert.c:844 +#: lib/luks2/luks2_luks1_convert.c:810 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is in invalid state." msgstr "Impossible de convertir au format LUKS1 – l'emplacement de clé %u est dans un état invalide." -#: lib/luks2/luks2_luks1_convert.c:849 +#: lib/luks2/luks2_luks1_convert.c:815 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is unbound." msgstr "Impossible de convertir au format LUKS1 – l'emplacement de clé %u n'est pas lié." -#: lib/luks2/luks2_luks1_convert.c:854 +#: lib/luks2/luks2_luks1_convert.c:820 #, c-format msgid "Cannot convert to LUKS1 format - slot %u (over maximum slots) is still active." msgstr "Impossible de convertir au format LUKS1 – l'emplacement %u (sur les emplacements maximum) est toujours actif." -#: lib/luks2/luks2_luks1_convert.c:859 +#: lib/luks2/luks2_luks1_convert.c:825 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is not LUKS1 compatible." msgstr "Impossible de convertir au format LUKS1 – l'emplacement de clé %u n'est pas compatible avec LUKS1." -#: lib/luks2/luks2_reencrypt.c:1198 +#: lib/luks2/luks2_reencrypt.c:1199 #, c-format msgid "Hotzone size must be multiple of calculated zone alignment (%zu bytes)." msgstr "La taille de la zone chaude doit être un multiple de l'alignement de zone calculé (%zu octets)." -#: lib/luks2/luks2_reencrypt.c:1203 +#: lib/luks2/luks2_reencrypt.c:1204 #, c-format msgid "Device size must be multiple of calculated zone alignment (%zu bytes)." msgstr "La taille du périphérique doit être un multiple de l'alignement de zone calculé (%zu octets)." -#: lib/luks2/luks2_reencrypt.c:1410 lib/luks2/luks2_reencrypt.c:1596 -#: lib/luks2/luks2_reencrypt.c:1679 lib/luks2/luks2_reencrypt.c:1721 -#: lib/luks2/luks2_reencrypt.c:4080 +#: lib/luks2/luks2_reencrypt.c:1411 lib/luks2/luks2_reencrypt.c:1597 +#: lib/luks2/luks2_reencrypt.c:1680 lib/luks2/luks2_reencrypt.c:1722 +#: lib/luks2/luks2_reencrypt.c:4081 msgid "Failed to initialize old segment storage wrapper." msgstr "Impossible d'initialiser l'encapsulation pour le stockage de l'ancien segment." -#: lib/luks2/luks2_reencrypt.c:1424 lib/luks2/luks2_reencrypt.c:1574 +#: lib/luks2/luks2_reencrypt.c:1425 lib/luks2/luks2_reencrypt.c:1575 msgid "Failed to initialize new segment storage wrapper." msgstr "Impossible d'initialiser l'encapsulation pour le stockage du nouveau segment." -#: lib/luks2/luks2_reencrypt.c:1550 lib/luks2/luks2_reencrypt.c:4092 +#: lib/luks2/luks2_reencrypt.c:1551 lib/luks2/luks2_reencrypt.c:4093 msgid "Failed to initialize hotzone protection." msgstr "Impossible d'initialiser la protection des zones chaudes." -#: lib/luks2/luks2_reencrypt.c:1623 +#: lib/luks2/luks2_reencrypt.c:1624 msgid "Failed to read checksums for current hotzone." msgstr "Impossible de lire les sommes de contrôle pour la zone chaude actuelle." -#: lib/luks2/luks2_reencrypt.c:1630 lib/luks2/luks2_reencrypt.c:4107 +#: lib/luks2/luks2_reencrypt.c:1631 lib/luks2/luks2_reencrypt.c:4108 #, c-format msgid "Failed to read hotzone area starting at %." msgstr "Échec de la lecture de la zone chaude démarrant à %." -#: lib/luks2/luks2_reencrypt.c:1649 +#: lib/luks2/luks2_reencrypt.c:1650 #, c-format msgid "Failed to decrypt sector %zu." msgstr "Échec lors du déchiffrement du secteur %zu." -#: lib/luks2/luks2_reencrypt.c:1655 +#: lib/luks2/luks2_reencrypt.c:1656 #, c-format msgid "Failed to recover sector %zu." msgstr "Échec lors de la récupération du secteur %zu." -#: lib/luks2/luks2_reencrypt.c:2208 +#: lib/luks2/luks2_reencrypt.c:2209 #, c-format msgid "Source and target device sizes don't match. Source %, target: %." msgstr "Les tailles des périphériques source et cible ne correspondent pas. Source %, cible: %." -#: lib/luks2/luks2_reencrypt.c:2310 +#: lib/luks2/luks2_reencrypt.c:2311 #, c-format msgid "Failed to activate hotzone device %s." msgstr "Échec de l'activation du périphérique de zone chaude %s." -#: lib/luks2/luks2_reencrypt.c:2322 +#: lib/luks2/luks2_reencrypt.c:2323 #, c-format msgid "Failed to allocate hotzone device %s." msgstr "Échec de l'allocation de la zone chaude du périphérique %s." -#: lib/luks2/luks2_reencrypt.c:2339 +#: lib/luks2/luks2_reencrypt.c:2340 #, c-format msgid "Failed to activate overlay device %s with actual origin table." msgstr "Impossible d'activer le périphérique de surcouche %s avec la table d'origine actuelle." -#: lib/luks2/luks2_reencrypt.c:2346 +#: lib/luks2/luks2_reencrypt.c:2347 #, c-format msgid "Failed to load new mapping for device %s." msgstr "Impossible de charger la nouvelle cartographie du périphérique %s." -#: lib/luks2/luks2_reencrypt.c:2418 +#: lib/luks2/luks2_reencrypt.c:2419 msgid "Failed to refresh reencryption devices stack." msgstr "Impossible de rafraîchir la pile des périphériques de rechiffrement." -#: lib/luks2/luks2_reencrypt.c:2615 +#: lib/luks2/luks2_reencrypt.c:2616 msgid "Failed to set new keyslots area size." msgstr "Impossible de définir la taille de la nouvelle zone des emplacements de clés." -#: lib/luks2/luks2_reencrypt.c:2751 +#: lib/luks2/luks2_reencrypt.c:2752 #, c-format msgid "Data shift value is not aligned to encryption sector size (% bytes)." msgstr "La valeur de décalage de données n'est pas alignée sur la taille de secteur de chiffrement (% octets)." -#: lib/luks2/luks2_reencrypt.c:2788 src/utils_reencrypt.c:162 +#: lib/luks2/luks2_reencrypt.c:2789 src/utils_reencrypt.c:162 #, c-format msgid "Unsupported resilience mode %s" msgstr "Mode de résilience %s non supporté" -#: lib/luks2/luks2_reencrypt.c:2824 +#: lib/luks2/luks2_reencrypt.c:2825 msgid "Moved segment size can not be greater than data shift value." msgstr "La taille du secteur déplacé ne peut pas être plus grande que la valeur de décalage des données." -#: lib/luks2/luks2_reencrypt.c:2866 +#: lib/luks2/luks2_reencrypt.c:2867 msgid "Invalid reencryption resilience parameters." msgstr "Paramètres de rechiffrement de la résilience invalides." -#: lib/luks2/luks2_reencrypt.c:2888 +#: lib/luks2/luks2_reencrypt.c:2889 #, c-format msgid "Moved segment too large. Requested size %, available space for: %." msgstr "Le segment déplacé est trop grand. La taille demandée est %, l'espace disponible est %" -#: lib/luks2/luks2_reencrypt.c:2977 +#: lib/luks2/luks2_reencrypt.c:2978 msgid "Failed to clear table." msgstr "Erreur lors de la suppression de la table." -#: lib/luks2/luks2_reencrypt.c:3063 +#: lib/luks2/luks2_reencrypt.c:3064 #, c-format msgid "Data shift (% sectors) is less than future data offset (% sectors)." msgstr "Le décalage de données (% secteurs) est plus petit que le décalage de données future (% secteurs)." -#: lib/luks2/luks2_reencrypt.c:3078 lib/luks2/luks2_reencrypt.c:3085 +#: lib/luks2/luks2_reencrypt.c:3079 lib/luks2/luks2_reencrypt.c:3086 msgid "Reduced data size is larger than real device size." msgstr "La taille des données réduites est plus grande que la taille réelle du périphérique." -#: lib/luks2/luks2_reencrypt.c:3095 +#: lib/luks2/luks2_reencrypt.c:3096 #, c-format msgid "Data device is not aligned to encryption sector size (% bytes)." msgstr "Le périphérique de données n'est pas aligné sur la taille de secteur de chiffrement (% octets)." -#: lib/luks2/luks2_reencrypt.c:3125 lib/luks2/luks2_reencrypt.c:3643 -#: lib/luks2/luks2_reencrypt.c:3664 +#: lib/luks2/luks2_reencrypt.c:3126 lib/luks2/luks2_reencrypt.c:3644 +#: lib/luks2/luks2_reencrypt.c:3665 #, c-format msgid "Failed to open %s in exclusive mode (already mapped or mounted)." msgstr "Erreur lors de l'ouverture de %s en mode exclusif (déjà mappé ou monté)." -#: lib/luks2/luks2_reencrypt.c:3332 +#: lib/luks2/luks2_reencrypt.c:3333 msgid "Device not marked for LUKS2 reencryption." msgstr "Le périphérique n'est pas marqué pour le rechiffrement LUKS2." -#: lib/luks2/luks2_reencrypt.c:3349 lib/luks2/luks2_reencrypt.c:4403 +#: lib/luks2/luks2_reencrypt.c:3350 lib/luks2/luks2_reencrypt.c:4404 msgid "Failed to load LUKS2 reencryption context." msgstr "Échec du chargement du contexte de rechiffrement LUKS2" -#: lib/luks2/luks2_reencrypt.c:3444 lib/luks2/luks2_reencrypt.c:3784 +#: lib/luks2/luks2_reencrypt.c:3445 lib/luks2/luks2_reencrypt.c:3785 msgid "Device is not in reencryption." msgstr "Le périphérique n'est pas en rechiffrement." -#: lib/luks2/luks2_reencrypt.c:3451 lib/luks2/luks2_reencrypt.c:3791 +#: lib/luks2/luks2_reencrypt.c:3452 lib/luks2/luks2_reencrypt.c:3792 msgid "Reencryption process is already running." msgstr "Le rechiffrement est déjà en cours." -#: lib/luks2/luks2_reencrypt.c:3453 lib/luks2/luks2_reencrypt.c:3793 +#: lib/luks2/luks2_reencrypt.c:3454 lib/luks2/luks2_reencrypt.c:3794 msgid "Failed to acquire reencryption lock." msgstr "Impossible d'acquérir le verrou de rechiffrement." -#: lib/luks2/luks2_reencrypt.c:3471 +#: lib/luks2/luks2_reencrypt.c:3472 msgid "Cannot proceed with reencryption. Run reencryption recovery first." msgstr "Impossible de réaliser le rechiffrement. Exécutez d'abord la récupération du rechiffrement." -#: lib/luks2/luks2_reencrypt.c:3607 +#: lib/luks2/luks2_reencrypt.c:3608 msgid "Active device size and requested reencryption size don't match." msgstr "La taille du périphérique actif et la taille de rechiffrement demandée ne correspondent pas." -#: lib/luks2/luks2_reencrypt.c:3621 +#: lib/luks2/luks2_reencrypt.c:3622 msgid "Illegal device size requested in reencryption parameters." msgstr "Taille de périphérique illégale demandée dans les paramètres de rechiffrement." -#: lib/luks2/luks2_reencrypt.c:3723 +#: lib/luks2/luks2_reencrypt.c:3724 msgid "Reencryption in-progress. Cannot perform recovery." msgstr "Rechiffrement en cours. La récupération ne peut pas être réalisée." -#: lib/luks2/luks2_reencrypt.c:3744 +#: lib/luks2/luks2_reencrypt.c:3745 msgid "LUKS2 reencryption recovery failed." msgstr "La récupération du rechiffrement LUKS2 a échoué." -#: lib/luks2/luks2_reencrypt.c:3877 lib/luks2/luks2_reencrypt.c:4356 +#: lib/luks2/luks2_reencrypt.c:3878 lib/luks2/luks2_reencrypt.c:4357 msgid "Failed to initialize reencryption device stack." msgstr "Impossible d'initialiser la pile du périphérique de rechiffrement." -#: lib/luks2/luks2_reencrypt.c:3910 +#: lib/luks2/luks2_reencrypt.c:3911 msgid "LUKS2 reencryption already initialized in metadata." msgstr "Rechiffrement LUKS2 déjà initialisé dans les métadonnées." -#: lib/luks2/luks2_reencrypt.c:3918 +#: lib/luks2/luks2_reencrypt.c:3919 msgid "Failed to initialize LUKS2 reencryption in metadata." msgstr "Échec de l'initialisation du rechiffrement LUKS2 dans les métadonnées." -#: lib/luks2/luks2_reencrypt.c:3971 lib/luks2/luks2_reencrypt.c:4003 -#: lib/luks2/luks2_reencrypt.c:4033 +#: lib/luks2/luks2_reencrypt.c:3972 lib/luks2/luks2_reencrypt.c:4004 +#: lib/luks2/luks2_reencrypt.c:4034 msgid "Reencryption is not supported for DAX (persistent memory) devices." msgstr "Le rechiffrement n'est pas supporté avec les périphériques DAX (mémoire persistante)." -#: lib/luks2/luks2_reencrypt.c:4062 +#: lib/luks2/luks2_reencrypt.c:4063 msgid "Failed to set device segments for next reencryption hotzone." msgstr "Impossible de définir les segments du périphérique pour le rechiffrement suivant de la zone chaude." -#: lib/luks2/luks2_reencrypt.c:4115 +#: lib/luks2/luks2_reencrypt.c:4116 msgid "Failed to write reencryption resilience metadata." msgstr "Échec lors de l'écriture des métadonnées de la résilience du rechiffrement." -#: lib/luks2/luks2_reencrypt.c:4122 +#: lib/luks2/luks2_reencrypt.c:4123 msgid "Decryption failed." msgstr "Échec du déchiffrement." -#: lib/luks2/luks2_reencrypt.c:4127 +#: lib/luks2/luks2_reencrypt.c:4128 #, c-format msgid "Failed to write hotzone area starting at %." msgstr "Échec de l'écriture de la zone chaude démarrant à %." -#: lib/luks2/luks2_reencrypt.c:4132 +#: lib/luks2/luks2_reencrypt.c:4133 msgid "Failed to sync data." msgstr "Erreur lors de la synchronisation des données." -#: lib/luks2/luks2_reencrypt.c:4140 +#: lib/luks2/luks2_reencrypt.c:4141 msgid "Failed to update metadata after current reencryption hotzone completed." msgstr "Échec de la mise à jour des métadonnées après la fin du rechiffrement de la zone chaude courante." -#: lib/luks2/luks2_reencrypt.c:4229 +#: lib/luks2/luks2_reencrypt.c:4230 msgid "Failed to write LUKS2 metadata." msgstr "Échec lors de l'écriture des métadonnées LUKS2" -#: lib/luks2/luks2_reencrypt.c:4252 +#: lib/luks2/luks2_reencrypt.c:4253 msgid "Failed to wipe unused data device area." msgstr "Impossible d'effacer la zone du périphérique contenant les données inutilisées." -#: lib/luks2/luks2_reencrypt.c:4258 +#: lib/luks2/luks2_reencrypt.c:4259 #, c-format msgid "Failed to remove unused (unbound) keyslot %d." msgstr "Erreur lors de la suppression de l'emplacement de clé inutilisé (unbound) %d." -#: lib/luks2/luks2_reencrypt.c:4268 +#: lib/luks2/luks2_reencrypt.c:4269 msgid "Failed to remove reencryption keyslot." msgstr "Erreur lors de la suppression de l'emplacement de clé de re-chiffrement." -#: lib/luks2/luks2_reencrypt.c:4278 +#: lib/luks2/luks2_reencrypt.c:4279 #, c-format msgid "Fatal error while reencrypting chunk starting at %, % sectors long." msgstr "Erreur fatale en rechiffrant le morceau commençant à % d'une longueur de % secteurs." -#: lib/luks2/luks2_reencrypt.c:4282 +#: lib/luks2/luks2_reencrypt.c:4283 msgid "Online reencryption failed." msgstr "Échec du rechiffrement en-ligne." # Frédéric: Je n'ai pas la moindre idée de ce que le développeur a voulu écrire. Qu'est-ce que "error target" dans ce contexte ? -#: lib/luks2/luks2_reencrypt.c:4287 +#: lib/luks2/luks2_reencrypt.c:4288 msgid "Do not resume the device unless replaced with error target manually." msgstr "Ne pas redémarrer le périphérique à moins qu'il ait été remplacé manuellement par la cible en erreur." -#: lib/luks2/luks2_reencrypt.c:4339 +#: lib/luks2/luks2_reencrypt.c:4340 msgid "Cannot proceed with reencryption. Unexpected reencryption status." msgstr "Impossible de réaliser le rechiffrement. Statut de rechiffrement inattendu." -#: lib/luks2/luks2_reencrypt.c:4345 +#: lib/luks2/luks2_reencrypt.c:4346 msgid "Missing or invalid reencrypt context." msgstr "Contexte de rechiffrement manquant ou invalide." -#: lib/luks2/luks2_reencrypt.c:4379 lib/luks2/luks2_reencrypt.c:4416 +#: lib/luks2/luks2_reencrypt.c:4380 lib/luks2/luks2_reencrypt.c:4417 msgid "Failed to update reencryption context." msgstr "Échec de la mise à jour du contexte de rechiffrement." -#: lib/luks2/luks2_reencrypt_digest.c:401 +#: lib/luks2/luks2_reencrypt_digest.c:402 msgid "Reencryption metadata is invalid." msgstr "Les méta-données de rechiffrement sont invalides." @@ -2150,7 +2141,7 @@ msgstr "Les paramètres de chiffrement des emplacement de clés peuvent uniqueme msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encryption." msgstr "Les paramètres de chiffrement des emplacement de clés ne sont pas compatibles avec le chiffrement des emplacements de LUKS2." -#: src/cryptsetup.c:150 src/cryptsetup.c:1178 src/cryptsetup.c:1545 +#: src/cryptsetup.c:150 src/cryptsetup.c:1179 src/cryptsetup.c:1544 #: src/utils_reencrypt.c:1887 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." @@ -2178,7 +2169,7 @@ msgstr "ATTENTION: Le paramètre --hash est ignoré en mode non chiffré quand l msgid "WARNING: The --keyfile-size option is being ignored, the read size is the same as the encryption key size.\n" msgstr "ATTENTION: L'option --keyfile-size est ignorée. La taille de lecture est la même que la taille de la clé de chiffrement.\n" -#: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 +#: src/cryptsetup.c:226 src/cryptsetup.c:1374 src/cryptsetup.c:1597 #: src/integritysetup.c:188 src/utils_reencrypt.c:2138 #, c-format msgid "Blkid scan failed for %s." @@ -2189,9 +2180,9 @@ msgstr "L'analyse de blkid a échouée pour %s." msgid "Detected device signature(s) on %s. Proceeding further may damage existing data." msgstr "Signature(s) de périphérique détectée(s) sur %s. Continuer risque d'endommager les données existantes." -#: src/cryptsetup.c:238 src/cryptsetup.c:1261 src/cryptsetup.c:1309 -#: src/cryptsetup.c:1382 src/cryptsetup.c:1522 src/cryptsetup.c:1610 -#: src/cryptsetup.c:2495 src/cryptsetup.c:2924 src/integritysetup.c:178 +#: src/cryptsetup.c:238 src/cryptsetup.c:1260 src/cryptsetup.c:1308 +#: src/cryptsetup.c:1381 src/cryptsetup.c:1521 src/cryptsetup.c:1609 +#: src/cryptsetup.c:2494 src/cryptsetup.c:2923 src/integritysetup.c:178 #: src/utils_reencrypt.c:111 src/utils_reencrypt.c:457 #: src/utils_reencrypt.c:925 msgid "Operation aborted.\n" @@ -2240,7 +2231,7 @@ msgstr "" "sensible qui permet d'accéder à la partition chiffrée sans mot de passe.\n" "Ce contenu devrait toujours être stocké, chiffré, en lieu sûr." -#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2520 +#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2519 msgid "" "The header dump with volume key is sensitive information\n" "that allows access to encrypted partition without a passphrase.\n" @@ -2264,9 +2255,9 @@ msgstr "Impossible de déterminer la taille de la clé de volume pour FVAULT2, v msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "Le périphérique %s est toujours actif et prévu pour une suppression différée.\n" -#: src/cryptsetup.c:881 src/cryptsetup.c:1808 src/cryptsetup.c:2082 -#: src/cryptsetup.c:2229 src/cryptsetup.c:2648 src/cryptsetup.c:2729 -#: src/cryptsetup.c:3262 +#: src/cryptsetup.c:881 src/cryptsetup.c:1807 src/cryptsetup.c:2081 +#: src/cryptsetup.c:2228 src/cryptsetup.c:2647 src/cryptsetup.c:2728 +#: src/cryptsetup.c:3261 #, c-format msgid "Failed to set external tokens path %s." msgstr "Échec en essayant de définir le chemin %s pour les jetons externes." @@ -2303,31 +2294,35 @@ msgstr "%-10s %4u itérations, %5u mémoire, %1u threads parallèles (CPUs) pour msgid "Result of benchmark is not reliable." msgstr "Le résultat de l'évaluation de performance n'est pas fiable." -#: src/cryptsetup.c:1170 +#: src/cryptsetup.c:1171 msgid "# Tests are approximate using memory only (no storage IO).\n" msgstr "# Tests approximatifs en utilisant uniquement la mémoire (pas de stockage E/S).\n" #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1195 +#: src/cryptsetup.c:1196 #, c-format msgid "#%*s Algorithm | Key | Encryption | Decryption\n" msgstr "#%*s Algorithme | Clé | Chiffrement | Déchiffrement\n" -#: src/cryptsetup.c:1203 +#: src/cryptsetup.c:1204 #, c-format msgid "Cipher %s (with %i bits key) is not available." msgstr "Le chiffrement %s (avec une clé de %i bits) n'est pas disponible." #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1222 +#: src/cryptsetup.c:1225 msgid "# Algorithm | Key | Encryption | Decryption\n" msgstr "# Algorithme | Clé | Chiffrement | Déchiffrement\n" -#: src/cryptsetup.c:1233 +#: src/cryptsetup.c:1238 msgid "N/A" msgstr "N/D" -#: src/cryptsetup.c:1258 +#: src/cryptsetup.c:1241 +msgid "# Cipher speed test is not available.\n" +msgstr "# Le test de la vitesse de chiffrement n'est pas disponible.\n" + +#: src/cryptsetup.c:1257 msgid "" "Unprotected LUKS2 reencryption metadata detected. Please verify the reencryption operation is desirable (see luksDump output)\n" "and continue (upgrade metadata) only if you acknowledge the operation as genuine." @@ -2336,27 +2331,27 @@ msgstr "" "désirable (consultez la sortie de luksDump) et continuez (mise à niveau des métadonnées) uniquement si vous constatez que\n" "l'opération est légitime." -#: src/cryptsetup.c:1264 +#: src/cryptsetup.c:1263 msgid "Enter passphrase to protect and upgrade reencryption metadata: " msgstr "Entrez la phrase secrète pour protéger et mettre à niveau les métadonnées de rechiffrement : " -#: src/cryptsetup.c:1308 +#: src/cryptsetup.c:1307 msgid "Really proceed with LUKS2 reencryption recovery?" msgstr "Réellement procéder à la récupération du rechiffrement LUKS2 ?" -#: src/cryptsetup.c:1317 +#: src/cryptsetup.c:1316 msgid "Enter passphrase to verify reencryption metadata digest: " msgstr "Entrez la phrase secrète pour vérifier le résumé des métadonnées du rechiffrement : " -#: src/cryptsetup.c:1319 +#: src/cryptsetup.c:1318 msgid "Enter passphrase for reencryption recovery: " msgstr "Entrez la phrase secrète pour la récupération du rechiffrement : " -#: src/cryptsetup.c:1381 +#: src/cryptsetup.c:1380 msgid "Really try to repair LUKS device header?" msgstr "Réellement essayer de réparer l'en-tête du périphérique LUKS ?" -#: src/cryptsetup.c:1409 src/integritysetup.c:76 src/integritysetup.c:244 +#: src/cryptsetup.c:1408 src/integritysetup.c:76 src/integritysetup.c:244 msgid "" "\n" "Wipe interrupted." @@ -2364,7 +2359,7 @@ msgstr "" "\n" "Effacement interrompu." -#: src/cryptsetup.c:1414 src/integritysetup.c:81 src/integritysetup.c:289 +#: src/cryptsetup.c:1413 src/integritysetup.c:81 src/integritysetup.c:289 msgid "" "Wiping device to initialize integrity checksum.\n" "You can interrupt this by pressing CTRL+c (rest of not wiped device will contain invalid checksum).\n" @@ -2372,167 +2367,167 @@ msgstr "" "Effacement du périphérique pour initialiser les sommes de contrôle d'intégrité.\n" "Vous pouvez interrompre ceci en appuyant sur CTRL+c (le reste du périphérique effacé contiendra toujours des sommes de contrôle invalides).\n" -#: src/cryptsetup.c:1436 src/integritysetup.c:103 +#: src/cryptsetup.c:1435 src/integritysetup.c:103 #, c-format msgid "Cannot deactivate temporary device %s." msgstr "Impossible de désactiver le périphérique temporaire %s." -#: src/cryptsetup.c:1484 +#: src/cryptsetup.c:1483 msgid "OPAL hw-only encryption does not support --cipher and --key-size, options ignored." msgstr "Un chiffrement utilisant uniquement OPAL hw ne supporte pas --cipher et --key-size, les options sont ignorées." -#: src/cryptsetup.c:1497 +#: src/cryptsetup.c:1496 msgid "Integrity option can be used only for LUKS2 format." msgstr "L'option d'intégrité peut uniquement être utilisée avec le format LUKS2." -#: src/cryptsetup.c:1502 src/cryptsetup.c:1582 +#: src/cryptsetup.c:1501 src/cryptsetup.c:1581 msgid "Unsupported LUKS2 metadata size options." msgstr "Options de taille des métadonnées LUKS2 non supportées." -#: src/cryptsetup.c:1507 +#: src/cryptsetup.c:1506 msgid "OPAL is supported only for LUKS2 format." msgstr "OPAL est uniquement supporté avec le format LUKS2." -#: src/cryptsetup.c:1512 +#: src/cryptsetup.c:1511 msgid "Inline hw tags are supported only for LUKS2 format." msgstr "Les étiquettes hw en ligne sont uniquement supportées avec le format LUKS2." -#: src/cryptsetup.c:1521 +#: src/cryptsetup.c:1520 msgid "Header file does not exist, do you want to create it?" msgstr "Le fichier d'en-tête n'existe pas, voulez-vous le créer ?" -#: src/cryptsetup.c:1529 +#: src/cryptsetup.c:1528 #, c-format msgid "Cannot create header file %s." msgstr "Impossible de créer le fichier d'en-tête %s." -#: src/cryptsetup.c:1555 src/integritysetup.c:126 src/integritysetup.c:141 +#: src/cryptsetup.c:1554 src/integritysetup.c:126 src/integritysetup.c:141 #: src/integritysetup.c:150 src/integritysetup.c:328 src/integritysetup.c:336 #: src/integritysetup.c:346 msgid "No known integrity specification pattern detected." msgstr "Aucun motif connu de spécification d'intégrité n'a été détecté." -#: src/cryptsetup.c:1557 +#: src/cryptsetup.c:1556 msgid "Cannot use specified integrity key size." msgstr "Impossible d'utiliser la taille de clé d'intégrité spécifiée." -#: src/cryptsetup.c:1575 +#: src/cryptsetup.c:1574 #, c-format msgid "Cannot use %s as on-disk header." msgstr "Ne peut utiliser %s comme en-tête sur disque." -#: src/cryptsetup.c:1604 src/integritysetup.c:172 +#: src/cryptsetup.c:1603 src/integritysetup.c:172 #, c-format msgid "This will overwrite data on %s irrevocably." msgstr "Cette action écrasera définitivement les données sur %s." -#: src/cryptsetup.c:1641 +#: src/cryptsetup.c:1640 msgid "OPAL Admin password cannot be empty." msgstr "Le mot de passe Admin de OPAL ne peut pas être vide." -#: src/cryptsetup.c:1655 src/cryptsetup.c:2099 src/cryptsetup.c:2242 -#: src/cryptsetup.c:2377 src/cryptsetup.c:2443 src/utils_reencrypt_luks1.c:428 +#: src/cryptsetup.c:1654 src/cryptsetup.c:2098 src/cryptsetup.c:2241 +#: src/cryptsetup.c:2376 src/cryptsetup.c:2442 src/utils_reencrypt_luks1.c:428 msgid "Failed to set pbkdf parameters." msgstr "Impossible de définir les paramètres pbkdf." -#: src/cryptsetup.c:1786 +#: src/cryptsetup.c:1785 msgid "Reduced data offset is allowed only for detached LUKS header." msgstr "Décalage réduit de données est uniquement permis dans un en-tête LUKS détaché." -#: src/cryptsetup.c:1793 +#: src/cryptsetup.c:1792 #, c-format msgid "LUKS file container %s is too small for activation, there is no remaining space for data." msgstr "Le container %s du fichier LUKS est trop petit pour l'activation, il ne reste pas d'espace pour les données." -#: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:277 +#: src/cryptsetup.c:1834 src/cryptsetup.c:2247 src/utils_reencrypt.c:277 #: src/utils_reencrypt.c:369 src/utils_reencrypt.c:1907 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "Impossible de déterminer la taille de la clé de volume pour LUKS sans emplacement de clé, veuillez utiliser l'option --key-size." -#: src/cryptsetup.c:1854 src/utils_reencrypt.c:303 +#: src/cryptsetup.c:1853 src/utils_reencrypt.c:303 msgid "Device requires two volume keys." msgstr "Le périphérique requiert deux clés de volume." -#: src/cryptsetup.c:1889 +#: src/cryptsetup.c:1888 msgid "Some specified activation parameters were ignored with OPAL hw-only encryption." msgstr "Certains paramètres d'activation spécifiés ont été ignorés avec le chiffrement utilisant uniquement OPAL hw." -#: src/cryptsetup.c:1894 +#: src/cryptsetup.c:1893 msgid "Device activated but cannot make flags persistent." msgstr "Le périphérique a été activé mais les fanions ne peuvent pas être rendus permanents." -#: src/cryptsetup.c:1974 src/cryptsetup.c:2042 +#: src/cryptsetup.c:1973 src/cryptsetup.c:2041 #, c-format msgid "Keyslot %d is selected for deletion." msgstr "Emplacement de clé %d sélectionné pour suppression." -#: src/cryptsetup.c:1986 src/cryptsetup.c:2046 +#: src/cryptsetup.c:1985 src/cryptsetup.c:2045 msgid "This is the last keyslot. Device will become unusable after purging this key." msgstr "Ceci est le dernier emplacement de clé. Le périphérique sera inutilisable après la suppression de cette clé." -#: src/cryptsetup.c:1987 +#: src/cryptsetup.c:1986 msgid "Enter any remaining passphrase: " msgstr "Entrez toute phrase secrète restante : " -#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 +#: src/cryptsetup.c:1987 src/cryptsetup.c:2047 msgid "Operation aborted, the keyslot was NOT wiped.\n" msgstr "Opération interrompue, l'emplacement de clé n'a PAS été effacé.\n" -#: src/cryptsetup.c:2024 +#: src/cryptsetup.c:2023 msgid "Enter passphrase to be deleted: " msgstr "Entrez la phrase secrète à effacer : " -#: src/cryptsetup.c:2074 src/cryptsetup.c:2426 src/cryptsetup.c:3086 -#: src/cryptsetup.c:3253 +#: src/cryptsetup.c:2073 src/cryptsetup.c:2425 src/cryptsetup.c:3085 +#: src/cryptsetup.c:3252 #, c-format msgid "Device %s is not a valid LUKS2 device." msgstr "%s n'est pas un périphérique LUKS2 valide." -#: src/cryptsetup.c:2113 src/cryptsetup.c:2312 +#: src/cryptsetup.c:2112 src/cryptsetup.c:2311 msgid "Enter new passphrase for key slot: " msgstr "Entrez une nouvelle phrase secrète pour l'emplacement de clé : " -#: src/cryptsetup.c:2147 src/utils_luks.c:342 +#: src/cryptsetup.c:2146 src/utils_luks.c:342 #, c-format msgid "Enter token PIN: " msgstr "Entrez le code PIN du jeton : " -#: src/cryptsetup.c:2149 src/utils_luks.c:344 +#: src/cryptsetup.c:2148 src/utils_luks.c:344 #, c-format msgid "Enter token %d PIN: " msgstr "Entrez le code PIN du jeton %d : " -#: src/cryptsetup.c:2208 +#: src/cryptsetup.c:2207 msgid "WARNING: The --key-slot parameter is used for new keyslot number.\n" msgstr "ATTENTION: Le paramètre --key-slot est utilisé pour le nouveau numéro de l'emplacement de clé.\n" -#: src/cryptsetup.c:2285 src/utils_reencrypt_luks1.c:1094 +#: src/cryptsetup.c:2284 src/utils_reencrypt_luks1.c:1094 #, c-format msgid "Enter any existing passphrase: " msgstr "Entrez une phrase secrète existante : " -#: src/cryptsetup.c:2381 +#: src/cryptsetup.c:2380 msgid "Enter passphrase to be changed: " msgstr "Entrez la phrase secrète à changer : " -#: src/cryptsetup.c:2397 src/utils_reencrypt_luks1.c:1080 +#: src/cryptsetup.c:2396 src/utils_reencrypt_luks1.c:1080 msgid "Enter new passphrase: " msgstr "Entrez la nouvelle phrase secrète : " -#: src/cryptsetup.c:2447 +#: src/cryptsetup.c:2446 msgid "Enter passphrase for keyslot to be converted: " msgstr "Entrez la phrase secrète pour l'emplacement de clé à convertir: " -#: src/cryptsetup.c:2471 +#: src/cryptsetup.c:2470 msgid "Only one device argument for isLuks operation is supported." msgstr "L'opération isLuks supporte seulement un périphérique en argument." -#: src/cryptsetup.c:2576 +#: src/cryptsetup.c:2575 #, c-format msgid "Keyslot %d does not contain unbound key." msgstr "L'emplacement de clé %d ne contient pas de clé non liée." -#: src/cryptsetup.c:2581 +#: src/cryptsetup.c:2580 msgid "" "The header dump with unbound key is sensitive information.\n" "This dump should be stored encrypted in a safe place." @@ -2540,52 +2535,52 @@ msgstr "" "Le contenu de l'en-tête avec une clé non liée est une information sensible.\n" "Ce contenu devrait être stocké, chiffré, en lieu sûr." -#: src/cryptsetup.c:2676 src/cryptsetup.c:2712 +#: src/cryptsetup.c:2675 src/cryptsetup.c:2711 #, c-format msgid "%s is not active %s device name." msgstr "%s n'est pas un nom de périphérique %s actif." -#: src/cryptsetup.c:2707 +#: src/cryptsetup.c:2706 #, c-format msgid "%s is not active LUKS device name or header is missing." msgstr "%s n'est pas un nom de périphérique LUKS actif ou l'en-tête est manquant." -#: src/cryptsetup.c:2784 src/cryptsetup.c:2803 +#: src/cryptsetup.c:2783 src/cryptsetup.c:2802 msgid "Option --header-backup-file is required." msgstr "L'option --header-backup-file est requise." -#: src/cryptsetup.c:2834 +#: src/cryptsetup.c:2833 #, c-format msgid "%s is not cryptsetup managed device." msgstr "%s n'est pas un périphérique géré par cryptsetup." -#: src/cryptsetup.c:2845 +#: src/cryptsetup.c:2844 #, c-format msgid "Refresh is not supported for device type %s" msgstr "Le rafraîchissement n'est pas supporté pour un périphérique de type %s" -#: src/cryptsetup.c:2895 +#: src/cryptsetup.c:2894 #, c-format msgid "Unrecognized metadata device type %s." msgstr "Type de métadonnée du périphérique %s non reconnu." -#: src/cryptsetup.c:2897 +#: src/cryptsetup.c:2896 msgid "Command requires device and mapped name as arguments." msgstr "La commande exige un périphérique et un nom de correspondance comme arguments." -#: src/cryptsetup.c:2915 +#: src/cryptsetup.c:2914 msgid "Enter OPAL PSID: " msgstr "Entrez le PSID OPAL : " -#: src/cryptsetup.c:2915 +#: src/cryptsetup.c:2914 msgid "Enter OPAL Admin password: " msgstr "Entrez le mot de passe Admin de OPAL : " -#: src/cryptsetup.c:2923 +#: src/cryptsetup.c:2922 msgid "WARNING: WHOLE disk will be factory reset and all data will be lost! Continue?" msgstr "ATTENTION : Le disque ENTIER sera réinitialisé d'usine et toutes les données seront perdues ! Continuer ?" -#: src/cryptsetup.c:2966 +#: src/cryptsetup.c:2965 #, c-format msgid "" "This operation will erase all keyslots on device %s.\n" @@ -2594,363 +2589,363 @@ msgstr "" "Cette opération va supprimer tous les emplacements de clés du périphérique %s.\n" "Le périphérique sera inutilisable après cette opération." -#: src/cryptsetup.c:2973 +#: src/cryptsetup.c:2972 msgid "Operation aborted, keyslots were NOT wiped.\n" msgstr "Opération interrompue, les emplacements de clés n'ont PAS été effacés.\n" -#: src/cryptsetup.c:3012 +#: src/cryptsetup.c:3011 msgid "Invalid LUKS type, only luks1 and luks2 are supported." msgstr "Type LUKS invalide, seuls luks1 et luks2 sont supportés." -#: src/cryptsetup.c:3028 +#: src/cryptsetup.c:3027 #, c-format msgid "Device is already %s type." msgstr "Le périphérique est déjà du type %s." -#: src/cryptsetup.c:3035 +#: src/cryptsetup.c:3034 #, c-format msgid "This operation will convert %s to %s format.\n" msgstr "Cette opération va convertir %s au format %s.\n" -#: src/cryptsetup.c:3038 +#: src/cryptsetup.c:3037 msgid "Operation aborted, device was NOT converted.\n" msgstr "Opération interrompue, le périphérique n'a PAS été converti.\n" -#: src/cryptsetup.c:3078 +#: src/cryptsetup.c:3077 msgid "Option --priority, --label or --subsystem is missing." msgstr "L'option --priority, --label ou --subsystem est manquante." -#: src/cryptsetup.c:3112 src/cryptsetup.c:3152 src/cryptsetup.c:3172 +#: src/cryptsetup.c:3111 src/cryptsetup.c:3151 src/cryptsetup.c:3171 #, c-format msgid "Token %d is invalid." msgstr "Le jeton %d est invalide." -#: src/cryptsetup.c:3115 src/cryptsetup.c:3175 +#: src/cryptsetup.c:3114 src/cryptsetup.c:3174 #, c-format msgid "Token %d in use." msgstr "Le jeton %d est utilisé." -#: src/cryptsetup.c:3127 +#: src/cryptsetup.c:3126 #, c-format msgid "Failed to add luks2-keyring token %d." msgstr "Échec lors de l'ajout du jeton %d au porte-clé luks2." -#: src/cryptsetup.c:3138 src/cryptsetup.c:3201 +#: src/cryptsetup.c:3137 src/cryptsetup.c:3200 #, c-format msgid "Failed to assign token %d to keyslot %d." msgstr "Échec lors de l'affectation du jeton %d à l'emplacement de clé %d." -#: src/cryptsetup.c:3155 +#: src/cryptsetup.c:3154 #, c-format msgid "Token %d is not in use." msgstr "Le jeton %d n'est pas utilisé." -#: src/cryptsetup.c:3192 +#: src/cryptsetup.c:3191 msgid "Failed to import token from file." msgstr "Impossible d'importer le jeton depuis le fichier." -#: src/cryptsetup.c:3217 +#: src/cryptsetup.c:3216 #, c-format msgid "Failed to get token %d for export." msgstr "Impossible d'obtenir le jeton %d pour l'export." -#: src/cryptsetup.c:3230 +#: src/cryptsetup.c:3229 #, c-format msgid "Token %d is not assigned to keyslot %d." msgstr "Le jeton %d n'est pas assigné à l'emplacement de clé %d." -#: src/cryptsetup.c:3232 src/cryptsetup.c:3239 +#: src/cryptsetup.c:3231 src/cryptsetup.c:3238 #, c-format msgid "Failed to unassign token %d from keyslot %d." msgstr "Impossible de dissocier le jeton %d de l'emplacement de clé %d." -#: src/cryptsetup.c:3298 +#: src/cryptsetup.c:3297 msgid "Option --tcrypt-hidden, --tcrypt-system or --tcrypt-backup is supported only for TCRYPT device." msgstr "Les options --tcrypt-hidden, --tcrypt-system ou --tcrypt-backup sont supportées seulement pour un périphérique TCRYPT." -#: src/cryptsetup.c:3301 +#: src/cryptsetup.c:3300 msgid "Option --veracrypt or --disable-veracrypt is supported only for TCRYPT device type." msgstr "L'option --veracrypt ou --disable-veracrypt est uniquement supportée pour un périphérique de type TCRYPT." -#: src/cryptsetup.c:3304 +#: src/cryptsetup.c:3303 msgid "Option --veracrypt-pim is supported only for VeraCrypt compatible devices." msgstr "L'option --veracrypt-pim est uniquement supportée pour un périphérique compatible avec VeraCrypt." -#: src/cryptsetup.c:3308 +#: src/cryptsetup.c:3307 msgid "Option --veracrypt-query-pim is supported only for VeraCrypt compatible devices." msgstr "L'option --veracrypt-query-pim est uniquement supportée pour un périphérique compatible avec VeraCrypt." -#: src/cryptsetup.c:3310 +#: src/cryptsetup.c:3309 msgid "The options --veracrypt-pim and --veracrypt-query-pim are mutually exclusive." msgstr "Les options --veracrypt-pim et --veracrypt-query-pim sont mutuellement exclusives." -#: src/cryptsetup.c:3319 +#: src/cryptsetup.c:3318 msgid "Option --persistent is not allowed with --test-passphrase." msgstr "L'option --persistent n'est pas permise avec --test-passphrase." -#: src/cryptsetup.c:3322 +#: src/cryptsetup.c:3321 msgid "Options --refresh and --test-passphrase are mutually exclusive." msgstr "Les options --refresh et --test-passphrase sont mutuellement exclusives." -#: src/cryptsetup.c:3325 +#: src/cryptsetup.c:3324 msgid "Option --shared is allowed only for open of plain device." msgstr "L'option --shared est permise uniquement pour ouvrir un périphérique ordinaire." -#: src/cryptsetup.c:3328 +#: src/cryptsetup.c:3327 msgid "Option --skip is supported only for open of plain and loopaes devices." msgstr "L'option --skip est supportée uniquement pour ouvrir des périphériques ordinaires et loopaes." -#: src/cryptsetup.c:3331 +#: src/cryptsetup.c:3330 msgid "Option --offset with open action is only supported for plain and loopaes devices." msgstr "L'option --offset avec l'action d'ouverture est supportée uniquement pour des périphériques ordinaires et loopaes." -#: src/cryptsetup.c:3334 +#: src/cryptsetup.c:3333 msgid "Option --tcrypt-hidden cannot be combined with --allow-discards." msgstr "L'option --tcrypt-hidden ne peut pas être combinée avec --allow-discards." -#: src/cryptsetup.c:3338 +#: src/cryptsetup.c:3337 msgid "Sector size option with open action is supported only for plain devices." msgstr "L'option de taille de secteur avec l'action d'ouverture est uniquement supportée pour des périphérique ordinaires." -#: src/cryptsetup.c:3342 +#: src/cryptsetup.c:3341 msgid "Large IV sectors option is supported only for opening plain type device with sector size larger than 512 bytes." msgstr "L'option des secteurs IV (vecteur d'initialisation) de grande taille est supportée uniquement à l'ouverture de périphériques de type simple avec une taille de secteur supérieure à 512 octets." -#: src/cryptsetup.c:3347 +#: src/cryptsetup.c:3346 msgid "Option --test-passphrase is allowed only for open of LUKS, TCRYPT, BITLK and FVAULT2 devices." msgstr "L'option --test-passphrase est autorisée uniquement pour ouvrir des périphériques LUKS, TCRYPT, BITLK et FVAULT2." -#: src/cryptsetup.c:3350 src/cryptsetup.c:3380 +#: src/cryptsetup.c:3349 src/cryptsetup.c:3379 msgid "Options --device-size and --size cannot be combined." msgstr "Les options --device-size et --size ne peuvent pas être combinées." -#: src/cryptsetup.c:3353 +#: src/cryptsetup.c:3352 msgid "Option --unbound is allowed only for open of luks device." msgstr "L'option --unbound est permise uniquement pour ouvrir un périphérique luks." -#: src/cryptsetup.c:3356 +#: src/cryptsetup.c:3355 msgid "Option --unbound cannot be used without --test-passphrase." msgstr "L'option --unbound ne peut pas être utilisée sans --test-passphrase." -#: src/cryptsetup.c:3360 +#: src/cryptsetup.c:3359 msgid "Option --volume-key-keyring cannot be combined with --hash or --volume-key-file." msgstr "L'option --volume-key-keyring ne peut pas être combinée avec --hash ou --volume-key-file." -#: src/cryptsetup.c:3363 +#: src/cryptsetup.c:3362 msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "Les deux options --volume-key-file doivent être appariées avec les options --key-size respectives." -#: src/cryptsetup.c:3372 src/veritysetup.c:673 src/integritysetup.c:787 +#: src/cryptsetup.c:3371 src/veritysetup.c:673 src/integritysetup.c:787 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "Les options --cancel-deferred et --deferred ne peuvent pas être utilisées en même temps." -#: src/cryptsetup.c:3388 +#: src/cryptsetup.c:3387 msgid "Option --active-name can be set only for LUKS2 device." msgstr "L'option --active-name peut uniquement être définie pour un périphérique LUKS2." -#: src/cryptsetup.c:3391 +#: src/cryptsetup.c:3390 msgid "Options --active-name and --force-offline-reencrypt cannot be combined." msgstr "Les options --active-name et --force-offline-reencrypt ne peuvent pas être combinées." -#: src/cryptsetup.c:3394 +#: src/cryptsetup.c:3393 msgid "Options --new-volume-key-file and --keep-key cannot be combined." msgstr "Les options --new-volume-key et --keep-key ne peuvent pas être combinées." -#: src/cryptsetup.c:3397 +#: src/cryptsetup.c:3396 msgid "Options --new-volume-key-keyring and --keep-key cannot be combined." msgstr "Les options --new-volume-key-keyring et --keep-key ne peuvent pas être combinées." -#: src/cryptsetup.c:3405 src/cryptsetup.c:3435 +#: src/cryptsetup.c:3404 src/cryptsetup.c:3434 msgid "Keyslot specification is required." msgstr "Une spécification d'emplacement de clé est requise." -#: src/cryptsetup.c:3413 +#: src/cryptsetup.c:3412 msgid "Options --align-payload and --offset cannot be combined." msgstr "Les options --align-payload et --offset ne peuvent pas être combinées." -#: src/cryptsetup.c:3416 +#: src/cryptsetup.c:3415 msgid "Option --integrity-no-wipe can be used only for format action with integrity extension." msgstr "L'option --integrity-no-wipe peut uniquement être utilisée pour une action de formatage avec l'extension d'intégrité." -#: src/cryptsetup.c:3419 +#: src/cryptsetup.c:3418 msgid "Only one of --use-[u]random options is allowed." msgstr "Seule une des deux possibilités --use-[u]random est autorisée." -#: src/cryptsetup.c:3427 +#: src/cryptsetup.c:3426 msgid "Key size is required with --unbound option." msgstr "La taille de clé est requise avec l'option --unbound." -#: src/cryptsetup.c:3447 +#: src/cryptsetup.c:3446 msgid "Invalid token action." msgstr "L'action de jeton est invalide." -#: src/cryptsetup.c:3450 +#: src/cryptsetup.c:3449 msgid "--key-description parameter is mandatory for token add action." msgstr "Le paramètre --key-description est requis pour l'action d'ajout d'un jeton." -#: src/cryptsetup.c:3454 src/cryptsetup.c:3467 +#: src/cryptsetup.c:3453 src/cryptsetup.c:3466 msgid "Action requires specific token. Use --token-id parameter." msgstr "L'action requiert un jeton spécifique. Utilisez le paramètre --token-id." -#: src/cryptsetup.c:3458 +#: src/cryptsetup.c:3457 msgid "Option --unbound is valid only with token add action." msgstr "L'option --unbound est uniquement valable avec l'action d'ajout d'un jeton." -#: src/cryptsetup.c:3460 +#: src/cryptsetup.c:3459 msgid "Options --key-slot and --unbound cannot be combined." msgstr "Les options --key-slot et --unbound ne peuvent pas être combinées." -#: src/cryptsetup.c:3465 +#: src/cryptsetup.c:3464 msgid "Action requires specific keyslot. Use --key-slot parameter." msgstr "L'action requiert un jeton spécifique. Utilisez le paramètre --key-slot." -#: src/cryptsetup.c:3481 +#: src/cryptsetup.c:3480 msgid " [--type ] []" msgstr " [--type ] []" -#: src/cryptsetup.c:3481 src/veritysetup.c:487 src/integritysetup.c:554 +#: src/cryptsetup.c:3480 src/veritysetup.c:487 src/integritysetup.c:554 msgid "open device as " msgstr "ouvrir le périphérique comme " -#: src/cryptsetup.c:3482 src/cryptsetup.c:3483 src/cryptsetup.c:3484 +#: src/cryptsetup.c:3481 src/cryptsetup.c:3482 src/cryptsetup.c:3483 #: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:555 #: src/integritysetup.c:556 src/integritysetup.c:558 msgid "" msgstr "" -#: src/cryptsetup.c:3482 src/veritysetup.c:488 src/integritysetup.c:555 +#: src/cryptsetup.c:3481 src/veritysetup.c:488 src/integritysetup.c:555 msgid "close device (remove mapping)" msgstr "fermeture du périphérique (supprime le « mapping »)" -#: src/cryptsetup.c:3483 src/integritysetup.c:558 +#: src/cryptsetup.c:3482 src/integritysetup.c:558 msgid "resize active device" msgstr "redimensionner le périphérique actif" -#: src/cryptsetup.c:3484 +#: src/cryptsetup.c:3483 msgid "show device status" msgstr "afficher le statut du périphérique" -#: src/cryptsetup.c:3485 +#: src/cryptsetup.c:3484 msgid "[--cipher ]" msgstr "[--cipher ]" -#: src/cryptsetup.c:3485 +#: src/cryptsetup.c:3484 msgid "benchmark cipher" msgstr "chiffrement pour test de performance" -#: src/cryptsetup.c:3486 src/cryptsetup.c:3487 src/cryptsetup.c:3488 -#: src/cryptsetup.c:3489 src/cryptsetup.c:3490 src/cryptsetup.c:3497 -#: src/cryptsetup.c:3498 src/cryptsetup.c:3499 src/cryptsetup.c:3500 -#: src/cryptsetup.c:3501 src/cryptsetup.c:3502 src/cryptsetup.c:3503 -#: src/cryptsetup.c:3504 src/cryptsetup.c:3505 src/cryptsetup.c:3506 +#: src/cryptsetup.c:3485 src/cryptsetup.c:3486 src/cryptsetup.c:3487 +#: src/cryptsetup.c:3488 src/cryptsetup.c:3489 src/cryptsetup.c:3496 +#: src/cryptsetup.c:3497 src/cryptsetup.c:3498 src/cryptsetup.c:3499 +#: src/cryptsetup.c:3500 src/cryptsetup.c:3501 src/cryptsetup.c:3502 +#: src/cryptsetup.c:3503 src/cryptsetup.c:3504 src/cryptsetup.c:3505 msgid "" msgstr "" -#: src/cryptsetup.c:3486 +#: src/cryptsetup.c:3485 msgid "try to repair on-disk metadata" msgstr "essayer de réparer les métadonnées sur le disque" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3486 msgid "reencrypt LUKS2 device" msgstr "rechiffrer le périphérique LUKS2" -#: src/cryptsetup.c:3488 +#: src/cryptsetup.c:3487 msgid "erase all keyslots (remove encryption key)" msgstr "supprimer tous les emplacements de clés (supprime la clé de chiffrement)" -#: src/cryptsetup.c:3489 +#: src/cryptsetup.c:3488 msgid "convert LUKS from/to LUKS2 format" msgstr "convertir LUKS depuis/vers le format LUKS2" -#: src/cryptsetup.c:3490 +#: src/cryptsetup.c:3489 msgid "set permanent configuration options for LUKS2" msgstr "définir les options de configuration permanentes pour LUKS2" -#: src/cryptsetup.c:3491 src/cryptsetup.c:3492 +#: src/cryptsetup.c:3490 src/cryptsetup.c:3491 msgid " []" msgstr " []" -#: src/cryptsetup.c:3491 +#: src/cryptsetup.c:3490 msgid "formats a LUKS device" msgstr "formater un périphérique LUKS" -#: src/cryptsetup.c:3492 +#: src/cryptsetup.c:3491 msgid "add key to LUKS device" msgstr "ajouter une clé au périphérique LUKS" -#: src/cryptsetup.c:3493 src/cryptsetup.c:3494 src/cryptsetup.c:3495 +#: src/cryptsetup.c:3492 src/cryptsetup.c:3493 src/cryptsetup.c:3494 msgid " []" msgstr " []" -#: src/cryptsetup.c:3493 +#: src/cryptsetup.c:3492 msgid "removes supplied key or key file from LUKS device" msgstr "retire du périphérique LUKS la clé ou le fichier de clé fourni" -#: src/cryptsetup.c:3494 +#: src/cryptsetup.c:3493 msgid "changes supplied key or key file of LUKS device" msgstr "modifie la clé ou le fichier de clé fourni pour le périphérique LUKS" -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3494 msgid "converts a key to new pbkdf parameters" msgstr "converti une clé vers les nouveaux paramètres pbkdf" -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3495 msgid " " msgstr " " -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3495 msgid "wipes key with number from LUKS device" msgstr "efface de façon sécurisée la clé avec le numéro du périphérique LUKS" -#: src/cryptsetup.c:3497 +#: src/cryptsetup.c:3496 msgid "print UUID of LUKS device" msgstr "afficher l'UUID du périphérique LUKS" -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3497 msgid "tests for LUKS partition header" msgstr "teste si a un en-tête de partition LUKS" -#: src/cryptsetup.c:3499 +#: src/cryptsetup.c:3498 msgid "dump LUKS partition information" msgstr "affiche les informations LUKS de la partition" -#: src/cryptsetup.c:3500 +#: src/cryptsetup.c:3499 msgid "dump TCRYPT device information" msgstr "affiche les informations du périphérique TCRYPT" -#: src/cryptsetup.c:3501 +#: src/cryptsetup.c:3500 msgid "dump BITLK device information" msgstr "affiche les informations du périphérique BITLK" -#: src/cryptsetup.c:3502 +#: src/cryptsetup.c:3501 msgid "dump FVAULT2 device information" msgstr "affiche les informations du périphérique FVAULT2" -#: src/cryptsetup.c:3503 +#: src/cryptsetup.c:3502 msgid "Suspend LUKS device and wipe key (all IOs are frozen)" msgstr "Suspendre le périphérique LUKS et effacer de façon sécurisée la clé (toutes les entrées/sorties sont suspendues)" -#: src/cryptsetup.c:3504 +#: src/cryptsetup.c:3503 msgid "Resume suspended LUKS device" msgstr "Remettre en service le périphérique LUKS suspendu" -#: src/cryptsetup.c:3505 +#: src/cryptsetup.c:3504 msgid "Backup LUKS device header and keyslots" msgstr "Sauvegarder l'en-tête et les emplacements de clés du périphérique LUKS" -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3505 msgid "Restore LUKS device header and keyslots" msgstr "Restaurer l'en-tête et les emplacements de clés du périphérique LUKS" -#: src/cryptsetup.c:3507 +#: src/cryptsetup.c:3506 msgid " " msgstr " " -#: src/cryptsetup.c:3507 +#: src/cryptsetup.c:3506 msgid "Manipulate LUKS2 tokens" msgstr "Manipuler les jetons LUKS2" -#: src/cryptsetup.c:3526 src/veritysetup.c:505 src/integritysetup.c:573 +#: src/cryptsetup.c:3525 src/veritysetup.c:505 src/integritysetup.c:573 msgid "" "\n" " is one of:\n" @@ -2958,7 +2953,7 @@ msgstr "" "\n" " est l'une de :\n" -#: src/cryptsetup.c:3532 +#: src/cryptsetup.c:3531 msgid "" "\n" "You can also use old syntax aliases:\n" @@ -2970,7 +2965,7 @@ msgstr "" "\touvrir : create (plainOpen), luksOpen, loopaesOpen, tcryptOpen, bitlkOpen, fvault2Open\n" "\tfermer : remove (plainClose), luksClose, loopaesClose, tcryptClose, bitlkClose, fvault2Close\n" -#: src/cryptsetup.c:3536 +#: src/cryptsetup.c:3535 #, c-format msgid "" "\n" @@ -2985,7 +2980,7 @@ msgstr "" " est le numéro de l'emplacement de clé LUKS à modifier\n" " est un fichier optionnel contenant la nouvelle clé pour l'action luksAddKey\n" -#: src/cryptsetup.c:3543 +#: src/cryptsetup.c:3542 #, c-format msgid "" "\n" @@ -2994,7 +2989,7 @@ msgstr "" "\n" "Le format de métadonnées compilé par défaut est %s (pour l'action luksFormat).\n" -#: src/cryptsetup.c:3548 +#: src/cryptsetup.c:3547 msgid "" "\n" "LUKS2 external token plugin support is enabled.\n" @@ -3002,12 +2997,12 @@ msgstr "" "\n" "Le support du greffon de jeton externe LUKS2 est enabled.\n" -#: src/cryptsetup.c:3549 +#: src/cryptsetup.c:3548 #, c-format msgid "LUKS2 external token plugin path: %s.\n" msgstr "Chemin du greffon de jeton externe LUKS2 : %s.\n" -#: src/cryptsetup.c:3551 +#: src/cryptsetup.c:3550 msgid "" "\n" "LUKS2 external token plugin support is disabled.\n" @@ -3015,7 +3010,7 @@ msgstr "" "\n" "Le support du greffon de jeton externe LUKS2 est désactivé.\n" -#: src/cryptsetup.c:3555 +#: src/cryptsetup.c:3554 #, c-format msgid "" "\n" @@ -3032,7 +3027,7 @@ msgstr "" "PBKDF par défaut pour LUKS2 : %s\n" "\tTemps d'itération: %d, Mémoire requise: %d ko, Threads parallèles: %d\n" -#: src/cryptsetup.c:3566 +#: src/cryptsetup.c:3565 #, c-format msgid "" "\n" @@ -3047,122 +3042,122 @@ msgstr "" "\tplain: %s, Clé: %d bits, Hachage mot de passe: %s\n" "\tLUKS: %s, Clé: %d bits, Hachage en-tête LUKS: %s, RNG: %s\n" -#: src/cryptsetup.c:3575 +#: src/cryptsetup.c:3574 msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: La taille de clé par défaut en mode XTS (deux clés internes) sera doublée.\n" -#: src/cryptsetup.c:3593 src/veritysetup.c:647 src/integritysetup.c:733 +#: src/cryptsetup.c:3592 src/veritysetup.c:647 src/integritysetup.c:733 #, c-format msgid "%s: requires %s as arguments" msgstr "%s : exige %s comme arguments." -#: src/cryptsetup.c:3633 src/utils_reencrypt_luks1.c:1143 +#: src/cryptsetup.c:3632 src/utils_reencrypt_luks1.c:1143 msgid "Key slot is invalid." msgstr "Emplacement de clé non valide." -#: src/cryptsetup.c:3661 +#: src/cryptsetup.c:3660 msgid "Device size must be multiple of 512 bytes sector." msgstr "La taille du périphérique doit être un multiple d'un secteur de 512 octets." -#: src/cryptsetup.c:3666 +#: src/cryptsetup.c:3665 msgid "Invalid max reencryption hotzone size specification." msgstr "La spécification de la taille maximale de la zone chaude de rechiffrement est invalide." -#: src/cryptsetup.c:3680 src/cryptsetup.c:3697 src/cryptsetup.c:3709 +#: src/cryptsetup.c:3679 src/cryptsetup.c:3696 src/cryptsetup.c:3708 msgid "Key size must be a multiple of 8 bits" msgstr "La taille de la clé doit être un multiple de 8 bits" -#: src/cryptsetup.c:3687 +#: src/cryptsetup.c:3686 msgid "At most 2 key size specifications can be supplied." msgstr "Au plus 2 spécifications de taille de clé peuvent être fournies." -#: src/cryptsetup.c:3716 src/cryptsetup.c:3727 +#: src/cryptsetup.c:3715 src/cryptsetup.c:3726 #, c-format msgid "At most %d volume key specifications can be supplied." msgstr "Au plus %d spécifications de clés de volume peuvent être fournies." -#: src/cryptsetup.c:3739 +#: src/cryptsetup.c:3738 #, c-format msgid "At most %d keyring link specifications can be supplied." msgstr "Au plus %d spécifications de liaison de porte-clé peuvent être fournies." -#: src/cryptsetup.c:3748 +#: src/cryptsetup.c:3747 msgid "Maximum device reduce size is 1 GiB." msgstr "La taille maximum réduite pour le périphérique est 1 GiB." -#: src/cryptsetup.c:3751 +#: src/cryptsetup.c:3750 msgid "Reduce size must be multiple of 512 bytes sector." msgstr "La taille réduite doit être un multiple d'un secteur de 512 octets." -#: src/cryptsetup.c:3768 +#: src/cryptsetup.c:3767 msgid "Option --priority can be only ignore/normal/prefer." msgstr "L'option --priority peut uniquement être ignore/normal/prefer." -#: src/cryptsetup.c:3787 src/veritysetup.c:568 src/integritysetup.c:653 +#: src/cryptsetup.c:3786 src/veritysetup.c:568 src/integritysetup.c:653 msgid "Show this help message" msgstr "Afficher ce message d'aide" -#: src/cryptsetup.c:3788 src/veritysetup.c:569 src/integritysetup.c:654 +#: src/cryptsetup.c:3787 src/veritysetup.c:569 src/integritysetup.c:654 msgid "Display brief usage" msgstr "Afficher, en résumé, la syntaxe d'invocation" -#: src/cryptsetup.c:3789 src/veritysetup.c:570 src/integritysetup.c:655 +#: src/cryptsetup.c:3788 src/veritysetup.c:570 src/integritysetup.c:655 msgid "Print package version" msgstr "Afficher la version du paquet" -#: src/cryptsetup.c:3800 src/veritysetup.c:581 src/integritysetup.c:666 +#: src/cryptsetup.c:3799 src/veritysetup.c:581 src/integritysetup.c:666 msgid "Help options:" msgstr "Options d'aide :" -#: src/cryptsetup.c:3823 src/veritysetup.c:602 src/integritysetup.c:686 +#: src/cryptsetup.c:3822 src/veritysetup.c:602 src/integritysetup.c:686 msgid "[OPTION...] " msgstr "[OPTION...] " -#: src/cryptsetup.c:3832 src/veritysetup.c:611 src/integritysetup.c:697 +#: src/cryptsetup.c:3831 src/veritysetup.c:611 src/integritysetup.c:697 msgid "Argument missing." msgstr "Il manque l'argument ." -#: src/cryptsetup.c:3911 src/veritysetup.c:642 src/integritysetup.c:728 +#: src/cryptsetup.c:3910 src/veritysetup.c:642 src/integritysetup.c:728 msgid "Unknown action." msgstr "Action inconnue." -#: src/cryptsetup.c:3929 +#: src/cryptsetup.c:3928 msgid "Option --key-file takes precedence over specified key file argument." msgstr "L'option --key-file est prioritaire par rapport à un fichier de clé spécifié en argument." -#: src/cryptsetup.c:3935 +#: src/cryptsetup.c:3934 msgid "Only one --key-file argument is allowed." msgstr "Un seul argument --key-file est autorisé." -#: src/cryptsetup.c:3940 +#: src/cryptsetup.c:3939 msgid "Password-based key derivation function (PBKDF) can be only pbkdf2 or argon2i/argon2id." msgstr "La fonction de dérivation d'une clé basée sur un mot de passe (PBKDF = Password-Based Key Derivation Function) peut uniquement être pbkdf2 ou argon2i/argon2id." -#: src/cryptsetup.c:3945 +#: src/cryptsetup.c:3944 msgid "PBKDF forced iterations cannot be combined with iteration time option." msgstr "Les itérations forcées de PBKDF ne peuvent pas être combinées avec l'option de temps d'itération." -#: src/cryptsetup.c:3950 +#: src/cryptsetup.c:3949 msgid "Cannot link volume key to a keyring when keyring is disabled." msgstr "Impossible de lier une clé de volume à un porte-clé quand le porte-clé est désactivé." -#: src/cryptsetup.c:3955 +#: src/cryptsetup.c:3954 msgid "Cannot use keyring key description when keyring is disabled." msgstr "Impossible d'utiliser la description de clé de porte-clé quand le porte-clé est désactivé." -#: src/cryptsetup.c:3960 +#: src/cryptsetup.c:3959 msgid "Inline integrity must be used together with --integrity option." msgstr "L'intégrité en ligne doit être utilisée avec l'option --integrity." -#: src/cryptsetup.c:3971 +#: src/cryptsetup.c:3970 msgid "Options --keyslot-cipher and --keyslot-key-size must be used together." msgstr "Les options --keyslot-cipher et --keyslot-key-size doivent être utilisées ensembles." -#: src/cryptsetup.c:3979 +#: src/cryptsetup.c:3978 msgid "No action taken. Invoked with --test-args option.\n" msgstr "Aucune action réalisée. Invoqué avec l'option --test-args.\n" -#: src/cryptsetup.c:3992 +#: src/cryptsetup.c:3991 msgid "Cannot disable metadata locking." msgstr "Impossible de désactiver le verrouillage des métadonnées." @@ -4350,6 +4345,12 @@ msgstr "La méthode d'authentification par clé publique n'est pas permise sur l msgid "Public key authentication error: " msgstr "Erreur durant l'authentification par clé publique : " +#~ msgid "Required kernel crypto interface not available." +#~ msgstr "L'interface du noyau requise pour le chiffrement n'est pas disponible." + +#~ msgid "Ensure you have algif_skcipher kernel module loaded." +#~ msgstr "Vérifiez que le module du noyau algif_skcipher est chargé." + #, c-format #~ msgid "Failed to read or validate BITLK FVE metadata copy #%d from %s." #~ msgstr "Impossible de lire ou de valider la copie des méta-données BITLK FVE #%d depuis %s." From 0664ecc802316d43bb533e15c53f9576e0b3e584 Mon Sep 17 00:00:00 2001 From: Hiroshi Takekawa Date: Sat, 4 Jul 2026 18:12:56 +0200 Subject: [PATCH 163/244] po: update ja.po (from translationproject.org) --- po/ja.po | 1015 +++++++++++++++++++++++++++--------------------------- 1 file changed, 505 insertions(+), 510 deletions(-) diff --git a/po/ja.po b/po/ja.po index 47d33e0e1..61ab865dc 100644 --- a/po/ja.po +++ b/po/ja.po @@ -1,14 +1,14 @@ # Japanese messages for cryptsetup. # Copyright (C) 2019, 2020 Free Software Foundation, Inc. # This file is distributed under the same license as the cryptsetup package. -# Hiroshi Takekawa , , 2019, 2020, 2021, 2022, 2023, 2024, 2025 +# Hiroshi Takekawa , , 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026 # msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.5-rc0\n" +"Project-Id-Version: cryptsetup 2.8.7-rc1\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2026-03-30 14:18+0200\n" -"PO-Revision-Date: 2026-03-31 09:15+0900\n" +"POT-Creation-Date: 2026-06-29 21:30+0200\n" +"PO-Revision-Date: 2026-06-30 21:06+0900\n" "Last-Translator: Hiroshi Takekawa \n" "Language-Team: Japanese \n" "Language: ja\n" @@ -76,7 +76,7 @@ msgid "Requested automatic recalculation of integrity tags is not supported." msgstr "指定された改ざん確認タグの自動再計算はサポートされていません。" #: lib/libdevmapper.c:1802 lib/libdevmapper.c:1856 lib/libdevmapper.c:1859 -#: lib/luks2/luks2_json_metadata.c:2781 +#: lib/luks2/luks2_json_metadata.c:2799 msgid "Discard/TRIM is not supported." msgstr "Discard/TRIM はサポートしていません。" @@ -122,665 +122,665 @@ msgstr "不明な RNG(乱数生成器) の質(quality)が要求されました msgid "Error reading from RNG." msgstr "RNG(乱数生成器)から読み込み中にエラー。" -#: lib/setup.c:248 +#: lib/setup.c:251 msgid "OPAL support is disabled in libcryptsetup." msgstr "OPAL サポートは libcryptsetup で無効化されています。" -#: lib/setup.c:250 +#: lib/setup.c:253 #, c-format msgid "Device %s or kernel does not support OPAL encryption." msgstr "デバイス %s かカーネルが OPAL 暗号化をサポートしていません。" -#: lib/setup.c:266 +#: lib/setup.c:269 msgid "Cannot initialize crypto RNG backend." msgstr "暗号向けRNG(乱数生成器)バックエンドの初期化ができません。" -#: lib/setup.c:272 +#: lib/setup.c:275 msgid "Cannot initialize crypto backend." msgstr "暗号バックエンドの初期化ができません。" -#: lib/setup.c:305 lib/setup.c:2766 lib/verity/verity.c:109 +#: lib/setup.c:308 lib/setup.c:2769 lib/verity/verity.c:109 #, c-format msgid "Hash algorithm %s not supported." msgstr "ハッシュアルゴリズム %s がサポートされていません。" -#: lib/setup.c:308 lib/loopaes/loopaes.c:78 +#: lib/setup.c:311 lib/loopaes/loopaes.c:78 #, c-format msgid "Key processing error (using hash %s)." msgstr "鍵の処理でエラー (ハッシュ %s を使用)。" -#: lib/setup.c:389 lib/setup.c:426 +#: lib/setup.c:392 lib/setup.c:429 msgid "Cannot determine device type. Incompatible activation of device?" msgstr "デバイスタイプがわかりません。互換性のないデバイスのアクティベーションをしようとしていませんか?" -#: lib/setup.c:395 lib/setup.c:4160 +#: lib/setup.c:398 lib/setup.c:4177 msgid "This operation is supported only for LUKS device." msgstr "この操作は LUKS デバイスでしかサポートされていません。" -#: lib/setup.c:432 +#: lib/setup.c:435 msgid "This operation is supported only for LUKS2 device." msgstr "この操作は LUKS2 デバイスでしかサポートされていません。" -#: lib/setup.c:489 lib/luks2/luks2_reencrypt.c:3101 +#: lib/setup.c:492 lib/luks2/luks2_reencrypt.c:3102 msgid "All key slots full." msgstr "キースロットがいっぱいです。" -#: lib/setup.c:500 +#: lib/setup.c:503 #, c-format msgid "Key slot %d is invalid, please select between 0 and %d." msgstr "キースロット %d は不正です。0 から %d の間を選んでください。" -#: lib/setup.c:506 +#: lib/setup.c:509 #, c-format msgid "Key slot %d is full, please select another one." msgstr "キースロット %d は使われています。別の番号を選んでください。" -#: lib/setup.c:531 lib/setup.c:3875 +#: lib/setup.c:534 lib/setup.c:3878 msgid "Device size is not aligned to device logical block size." msgstr "デバイスサイズが論理ブロックサイズのアライメントに合いません。" -#: lib/setup.c:628 +#: lib/setup.c:631 #, c-format msgid "Header detected but device %s is too small." msgstr "ヘッダが検出されましたがデバイス %s が小さすぎます。" -#: lib/setup.c:669 lib/setup.c:3760 lib/setup.c:5238 -#: lib/luks2/luks2_reencrypt.c:3948 lib/luks2/luks2_reencrypt.c:4437 +#: lib/setup.c:672 lib/setup.c:3763 lib/setup.c:5272 +#: lib/luks2/luks2_reencrypt.c:3949 lib/luks2/luks2_reencrypt.c:4438 msgid "This operation is not supported for this device type." msgstr "この操作はこのデバイスタイプではサポートされていません。" -#: lib/setup.c:674 +#: lib/setup.c:677 msgid "Illegal operation with reencryption in-progress." msgstr "オフラインでの再暗号化中です。中止します。" -#: lib/setup.c:806 +#: lib/setup.c:809 msgid "Failed to rollback LUKS2 metadata in memory." msgstr "メモリ上の LUKS2 メタデータのロールバックに失敗しました。" -#: lib/setup.c:893 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 -#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 -#: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 -#: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2953 -#: src/cryptsetup.c:3021 src/utils_reencrypt.c:2281 +#: lib/setup.c:896 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 +#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1779 +#: src/cryptsetup.c:1963 src/cryptsetup.c:2018 src/cryptsetup.c:2216 +#: src/cryptsetup.c:2361 src/cryptsetup.c:2639 src/cryptsetup.c:2952 +#: src/cryptsetup.c:3020 src/utils_reencrypt.c:2281 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." msgstr "デバイス %s は有効な LUKS デバイスではありません。" -#: lib/setup.c:896 lib/luks1/keymanage.c:517 +#: lib/setup.c:899 lib/luks1/keymanage.c:517 #, c-format msgid "Unsupported LUKS version %d." msgstr "LUKS バージョン %d はサポートされていません。" -#: lib/setup.c:1270 +#: lib/setup.c:1273 #, c-format msgid "No known cipher specification pattern detected for active device %s." msgstr "アクティブなデバイス %s に既知の暗号スペックパターンが検出されませんでした。" -#: lib/setup.c:1515 lib/setup.c:3507 lib/setup.c:3599 lib/setup.c:3611 -#: lib/setup.c:3783 lib/setup.c:5816 +#: lib/setup.c:1518 lib/setup.c:3510 lib/setup.c:3602 lib/setup.c:3614 +#: lib/setup.c:3786 lib/setup.c:5850 #, c-format msgid "Device %s is not active." msgstr "デバイス %s はアクティブではありません。" -#: lib/setup.c:1532 +#: lib/setup.c:1535 #, c-format msgid "Underlying device for crypt device %s disappeared." msgstr "暗号化されたデバイス %s の元になるデバイスが消滅しました。" -#: lib/setup.c:1614 +#: lib/setup.c:1617 msgid "Invalid plain crypt parameters." msgstr "不正な plain crypt のパラメータ。" -#: lib/setup.c:1619 lib/setup.c:2669 +#: lib/setup.c:1622 lib/setup.c:2672 msgid "Invalid key size." msgstr "不正なキーサイズ。" -#: lib/setup.c:1624 lib/setup.c:2674 lib/setup.c:2879 +#: lib/setup.c:1627 lib/setup.c:2677 lib/setup.c:2882 msgid "UUID is not supported for this crypt type." msgstr "UUID はこの暗号タイプではサポートされていません。" -#: lib/setup.c:1629 lib/setup.c:2679 +#: lib/setup.c:1632 lib/setup.c:2682 msgid "Detached metadata device is not supported for this crypt type." msgstr "分離したメタデータデバイスはこの暗号タイプではサポートされていません。" -#: lib/setup.c:1639 lib/setup.c:1887 lib/luks2/luks2_reencrypt.c:3034 -#: src/cryptsetup.c:1492 src/cryptsetup.c:3760 +#: lib/setup.c:1642 lib/setup.c:1890 lib/luks2/luks2_reencrypt.c:3035 +#: src/cryptsetup.c:1491 src/cryptsetup.c:3759 msgid "Unsupported encryption sector size." msgstr "サポートされていない暗号化セクタサイズです。" -#: lib/setup.c:1647 lib/setup.c:1916 lib/setup.c:3869 +#: lib/setup.c:1650 lib/setup.c:1919 lib/setup.c:3872 msgid "Device size is not aligned to requested sector size." msgstr "デバイスサイズが要求されたセクタサイズのアライメントに合いません。" -#: lib/setup.c:1699 lib/setup.c:1951 lib/setup.c:2328 +#: lib/setup.c:1702 lib/setup.c:1954 lib/setup.c:2331 msgid "Can't format LUKS without device." msgstr "デバイスなしには LUKS 形式にフォーマットできません。" -#: lib/setup.c:1704 lib/setup.c:1956 +#: lib/setup.c:1707 lib/setup.c:1959 #, c-format msgid "Zoned device %s cannot be used for LUKS header." msgstr "Zonedy デバイス %s は LUKS ヘッダに使えません。" -#: lib/setup.c:1711 lib/setup.c:1963 lib/setup.c:2334 +#: lib/setup.c:1714 lib/setup.c:1966 lib/setup.c:2337 msgid "Requested data alignment is not compatible with data offset." msgstr "要求されたデータアライメントとデータオフセットが合いません。" -#: lib/setup.c:1751 lib/setup.c:1981 +#: lib/setup.c:1754 lib/setup.c:1984 msgid "WARNING: DAX device can corrupt data as it does not guarantee atomic sector updates.\n" msgstr "警告: DAX デバイスはアトミックなセクタ更新を保証しないためデータが壊れることがあります。\n" -#: lib/setup.c:1789 lib/setup.c:2088 lib/setup.c:2109 lib/setup.c:2517 -#: lib/setup.c:2564 lib/setup.c:2896 +#: lib/setup.c:1792 lib/setup.c:2091 lib/setup.c:2112 lib/setup.c:2520 +#: lib/setup.c:2567 lib/setup.c:2899 #, c-format msgid "Cannot wipe header on device %s." msgstr "デバイス %s のヘッダを消し去れません。" -#: lib/setup.c:1802 lib/setup.c:2161 +#: lib/setup.c:1805 lib/setup.c:2164 #, c-format msgid "Device %s is too small for activation, there is no remaining space for data.\n" msgstr "デバイス %s はアクティベートするのに小さすぎます。データ用のスペースがありません。\n" -#: lib/setup.c:1843 +#: lib/setup.c:1846 msgid "Volume key is too small for encryption with integrity extensions." msgstr "ボリュームキーは整合性拡張のため暗号には鍵長が小さすぎます。" -#: lib/setup.c:1847 +#: lib/setup.c:1850 msgid "Integrity key size is too small." msgstr "整合性キーのサイズが小さすぎます。" -#: lib/setup.c:1856 +#: lib/setup.c:1859 #, c-format msgid "Cipher %s-%s (key size %zd bits) is not available." msgstr "暗号 %s-%s (キーサイズ %zd ビット) は利用できません。" -#: lib/setup.c:1897 +#: lib/setup.c:1900 msgid "WARNING: The device activation will fail, dm-crypt is missing support for requested encryption sector size.\n" msgstr "警告: デバイスアクティベーションが失敗しました。dm-crypt が要求された暗号セクタサイズをサポートしていません。\n" -#: lib/setup.c:2091 lib/setup.c:2458 lib/setup.c:2520 lib/utils_device.c:906 -#: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3073 -#: lib/luks2/luks2_reencrypt.c:4497 +#: lib/setup.c:2094 lib/setup.c:2461 lib/setup.c:2523 lib/utils_device.c:906 +#: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3074 +#: lib/luks2/luks2_reencrypt.c:4498 #, c-format msgid "Device %s is too small." msgstr "デバイス %s のサイズが小さすぎます。" -#: lib/setup.c:2102 lib/setup.c:2141 lib/setup.c:2557 lib/setup.c:2615 +#: lib/setup.c:2105 lib/setup.c:2144 lib/setup.c:2560 lib/setup.c:2618 #, c-format msgid "Cannot format device %s in use." msgstr "デバイス %s は使用中のためフォーマットできません。" -#: lib/setup.c:2105 lib/setup.c:2144 lib/setup.c:2560 lib/setup.c:2618 +#: lib/setup.c:2108 lib/setup.c:2147 lib/setup.c:2563 lib/setup.c:2621 #, c-format msgid "Cannot format device %s, permission denied." msgstr "デバイス %s は権限がないためフォーマットできません。" -#: lib/setup.c:2129 lib/setup.c:2587 lib/setup.c:2969 +#: lib/setup.c:2132 lib/setup.c:2590 lib/setup.c:2972 #, c-format msgid "Cannot format integrity for device %s." msgstr "デバイス %s を整合性確認ができるようフォーマットできません。" -#: lib/setup.c:2148 lib/setup.c:2626 +#: lib/setup.c:2151 lib/setup.c:2629 #, c-format msgid "Cannot format device %s." msgstr "デバイス %s をフォーマットできません。" -#: lib/setup.c:2191 +#: lib/setup.c:2194 msgid "Cannot get OPAL alignment parameters." msgstr "OPAL アライメントパラメータを取得できません。" -#: lib/setup.c:2203 +#: lib/setup.c:2206 msgid "Bogus OPAL logical block size." msgstr "OPAL 論理ブロックサイズがおかしいです。" -#: lib/setup.c:2208 lib/luks2/hw_opal/hw_opal.c:305 +#: lib/setup.c:2211 lib/luks2/hw_opal/hw_opal.c:305 msgid "Bogus OPAL logical block size differs from device block size." msgstr "OPAL 論理ブロックサイズがデバイスブロックサイズと違っておかしいです。" -#: lib/setup.c:2214 +#: lib/setup.c:2217 msgid "Requested data offset is not compatible with OPAL block size." msgstr "要求されたデータオフセットが OPAL ブロックサイズと互換性がありません。" -#: lib/setup.c:2221 +#: lib/setup.c:2224 msgid "Requested data alignment is not compatible with OPAL alignment." msgstr "要求されたデータアライメントが OPAL アライメントと互換性がありません。" -#: lib/setup.c:2241 +#: lib/setup.c:2244 msgid "Data offset does not satisfy OPAL alignment requirements." msgstr "データオフセットが OPAL アライメント制約を満たしていません。" -#: lib/setup.c:2254 +#: lib/setup.c:2257 msgid "Requested data alignment does not satisfy locking range alignment requirements." msgstr "要求されたデータアライメントはロックレンジアライメントに対する要求を満たしません。" -#: lib/setup.c:2468 +#: lib/setup.c:2471 #, c-format msgid "Compensating device size by % sectors to align it with OPAL alignment granularity." msgstr "OPAL のアライメント粒度に合わせるためにデバイスサイズが % セクタ少なくなります。" -#: lib/setup.c:2528 lib/setup.c:4243 lib/setup.c:4432 lib/utils_wipe.c:356 -#: lib/luks2/luks2_json_metadata.c:2724 lib/luks2/luks2_json_metadata.c:2992 +#: lib/setup.c:2531 lib/setup.c:4260 lib/setup.c:4466 lib/utils_wipe.c:356 +#: lib/luks2/luks2_json_metadata.c:2742 lib/luks2/luks2_json_metadata.c:3017 #, c-format msgid "Failed to acquire OPAL lock on device %s." msgstr "デバイス %s の OPAL ロックを取得できませんでした。" -#: lib/setup.c:2538 +#: lib/setup.c:2541 msgid "Incorrect OPAL Admin key." msgstr "OPAL 管理者キーが正しくありません。" -#: lib/setup.c:2540 +#: lib/setup.c:2543 msgid "Cannot setup OPAL segment." msgstr "OPAL セグメントを設定できません。" -#: lib/setup.c:2622 +#: lib/setup.c:2625 #, c-format msgid "Cannot format device %s, OPAL device seems to be fully write-protected now." msgstr "デバイス %s をフォーマットできません。OPAL デバイスは完全に書き込み禁止になっているようです。" -#: lib/setup.c:2624 +#: lib/setup.c:2627 msgid "This is perhaps a bug in firmware. Run OPAL PSID reset and reconnect for recovery." msgstr "おそらくファームウェアのバグです。OPAL PSID リセットをして復旧のために再接続してください。" -#: lib/setup.c:2644 +#: lib/setup.c:2647 #, c-format msgid "Locking range %d reset on device %s failed." msgstr "ロックレンジ %d のリセットをデバイス %s に試みましたが失敗しました。" -#: lib/setup.c:2664 +#: lib/setup.c:2667 msgid "Can't format LOOPAES without device." msgstr "LOOPAES としてフォーマットするにはデバイスが必要です。" -#: lib/setup.c:2709 +#: lib/setup.c:2712 msgid "Can't format VERITY without device." msgstr "VERITY としてフォーマットするにはデバイスが必要です。" -#: lib/setup.c:2720 lib/verity/verity.c:88 +#: lib/setup.c:2723 lib/verity/verity.c:88 #, c-format msgid "Unsupported VERITY hash type %d." msgstr "VERITY ハッシュタイプ %d はサポートしていません。" -#: lib/setup.c:2726 lib/verity/verity.c:96 +#: lib/setup.c:2729 lib/verity/verity.c:96 msgid "Unsupported VERITY block size." msgstr "サポートしていない VERITY ブロックサイズです。" -#: lib/setup.c:2731 lib/verity/verity.c:61 +#: lib/setup.c:2734 lib/verity/verity.c:61 msgid "Unsupported VERITY hash offset." msgstr "サポートしていない VERITY ハッシュオフセットです。" -#: lib/setup.c:2736 +#: lib/setup.c:2739 msgid "Unsupported VERITY FEC offset." msgstr "サポートしていない VERITY FEC オフセットです。" -#: lib/setup.c:2760 +#: lib/setup.c:2763 msgid "Data area overlaps with hash area." msgstr "データ領域がハッシュ領域と重なっています。" -#: lib/setup.c:2785 +#: lib/setup.c:2788 msgid "Hash area overlaps with FEC area." msgstr "ハッシュ領域が FEC 領域と重なっています。" -#: lib/setup.c:2792 +#: lib/setup.c:2795 msgid "Data area overlaps with FEC area." msgstr "データ領域が FEC 領域と重なっています。" -#: lib/setup.c:2884 +#: lib/setup.c:2887 msgid "Integrity key size mismatch." msgstr "整合性キーのサイズが一致しません。" -#: lib/setup.c:2935 +#: lib/setup.c:2938 #, c-format msgid "WARNING: Requested tag size %d bytes differs from %s size output (%d bytes).\n" msgstr "警告: 指定されたタグのサイズ %d バイトが %s の出力サイズと異なります (%d バイト)。\n" -#: lib/setup.c:3048 lib/setup.c:3150 +#: lib/setup.c:3051 lib/setup.c:3153 #, c-format msgid "Unknown or unsupported device type %s requested." msgstr "不明もしくはサポートされていないデバイスタイプ %s が指定されました。" -#: lib/setup.c:3064 +#: lib/setup.c:3067 #, c-format msgid "Device %s does not provide inline integrity data fields." msgstr "デバイス %s はインライン整合性データフィールドを提供しません。" -#: lib/setup.c:3070 +#: lib/setup.c:3073 #, c-format msgid "Inline tag size % [bytes] is larger than % provided by device %s." msgstr "インラインタグサイズ % [bytes] が % (デバイス %s より取得)より大きいです。" -#: lib/setup.c:3085 +#: lib/setup.c:3088 #, c-format msgid "Sector must be the same as device hardware sector (%zu bytes)." msgstr "セクタはデバイスハードウェアセクタ (%zu bytes) と同じでなければなりません。" -#: lib/setup.c:3515 lib/setup.c:3604 lib/setup.c:3617 +#: lib/setup.c:3518 lib/setup.c:3607 lib/setup.c:3620 #, c-format msgid "Unsupported parameters on device %s." msgstr "デバイス %s のパラメータはサポートしていません。" -#: lib/setup.c:3521 lib/setup.c:3624 lib/luks2/luks2_reencrypt.c:2928 -#: lib/luks2/luks2_reencrypt.c:3197 lib/luks2/luks2_reencrypt.c:3594 +#: lib/setup.c:3524 lib/setup.c:3627 lib/luks2/luks2_reencrypt.c:2929 +#: lib/luks2/luks2_reencrypt.c:3198 lib/luks2/luks2_reencrypt.c:3595 #, c-format msgid "Mismatching parameters on device %s." msgstr "デバイス %s のパラメータがミスマッチしています。" -#: lib/setup.c:3647 +#: lib/setup.c:3650 msgid "Crypt devices mismatch." msgstr "Crypt デバイスが一致しません。" -#: lib/setup.c:3679 lib/setup.c:3684 lib/luks2/luks2_reencrypt.c:2412 -#: lib/luks2/luks2_reencrypt.c:2944 lib/luks2/luks2_reencrypt.c:4236 +#: lib/setup.c:3682 lib/setup.c:3687 lib/luks2/luks2_reencrypt.c:2413 +#: lib/luks2/luks2_reencrypt.c:2945 lib/luks2/luks2_reencrypt.c:4237 #, c-format msgid "Failed to reload device %s." msgstr "デバイス %s のリロードに失敗しました。" -#: lib/setup.c:3690 lib/setup.c:3696 lib/luks2/luks2_reencrypt.c:2382 -#: lib/luks2/luks2_reencrypt.c:2389 lib/luks2/luks2_reencrypt.c:2958 +#: lib/setup.c:3693 lib/setup.c:3699 lib/luks2/luks2_reencrypt.c:2383 +#: lib/luks2/luks2_reencrypt.c:2390 lib/luks2/luks2_reencrypt.c:2959 #, c-format msgid "Failed to suspend device %s." msgstr "デバイス %s のサスペンドに失敗しました。" -#: lib/setup.c:3702 lib/luks2/luks2_reencrypt.c:2396 -#: lib/luks2/luks2_reencrypt.c:2979 lib/luks2/luks2_reencrypt.c:4149 -#: lib/luks2/luks2_reencrypt.c:4240 +#: lib/setup.c:3705 lib/luks2/luks2_reencrypt.c:2397 +#: lib/luks2/luks2_reencrypt.c:2980 lib/luks2/luks2_reencrypt.c:4150 +#: lib/luks2/luks2_reencrypt.c:4241 #, c-format msgid "Failed to resume device %s." msgstr "デバイス %s のリジュームに失敗しました。" -#: lib/setup.c:3717 +#: lib/setup.c:3720 #, c-format msgid "Fatal error while reloading device %s (on top of device %s)." msgstr "デバイス %s のリロード中に致命的なエラー(デバイス %s の上で)。" -#: lib/setup.c:3720 lib/setup.c:3722 +#: lib/setup.c:3723 lib/setup.c:3725 #, c-format msgid "Failed to switch device %s to dm-error." msgstr "デバイス %s を dm-error にスイッチできません。" -#: lib/setup.c:3765 +#: lib/setup.c:3768 msgid "Can not resize LUKS2 device with static size." msgstr "静的サイズの LUKS2 デバイスはリサイズできません。" -#: lib/setup.c:3770 +#: lib/setup.c:3773 msgid "Resize of LUKS2 device with integrity protection is not supported." msgstr "整合性プロテクションつきのLUKS2デバイスのリサイズはサポートされていません。" -#: lib/setup.c:3816 +#: lib/setup.c:3819 msgid "Cannot resize loop device." msgstr "ループデバイスはリサイズできません。" -#: lib/setup.c:3860 +#: lib/setup.c:3863 msgid "WARNING: Maximum size already set or kernel doesn't support resize.\n" msgstr "警告: 最大サイズが既に設定済かカーネルがリサイズをサポートしていません。\n" -#: lib/setup.c:3926 +#: lib/setup.c:3929 msgid "Resize failed, the kernel doesn't support it." msgstr "リサイズに失敗しました。カーネルがサポートしていません。" -#: lib/setup.c:3958 +#: lib/setup.c:3961 msgid "Do you really want to change UUID of device?" msgstr "デバイスの UUID を本当に変更してもいいですか?" -#: lib/setup.c:4050 +#: lib/setup.c:4053 msgid "Header backup file does not contain compatible LUKS header." msgstr "ヘッダのバックアップファイルの中味が LUKS ヘッダと互換性がありません。" -#: lib/setup.c:4143 +#: lib/setup.c:4160 #, c-format msgid "Volume %s is not active." msgstr "ボリューム %s はアクティブではありません。" -#: lib/setup.c:4198 +#: lib/setup.c:4215 #, c-format msgid "Volume %s is already suspended." msgstr "ボリューム %s は既に停止されています。" -#: lib/setup.c:4224 +#: lib/setup.c:4241 #, c-format msgid "Suspend is not supported for device %s." msgstr "デバイス %s の停止はサポートされていません。" -#: lib/setup.c:4226 lib/setup.c:4234 +#: lib/setup.c:4243 lib/setup.c:4251 #, c-format msgid "Error during suspending device %s." msgstr "デバイス %s 停止中にエラー。" -#: lib/setup.c:4249 +#: lib/setup.c:4266 #, c-format msgid "Device %s was suspended but hardware OPAL device cannot be locked." msgstr "デバイス %s は停止されましたが、ハードウェア OPAL デバイスはロックできません。" -#: lib/setup.c:4280 lib/setup.c:4457 +#: lib/setup.c:4297 lib/setup.c:4491 #, c-format msgid "Resume is not supported for device %s." msgstr "デバイス %s は再開をサポートしていません。" -#: lib/setup.c:4282 lib/setup.c:4447 lib/setup.c:4459 +#: lib/setup.c:4299 lib/setup.c:4481 lib/setup.c:4493 #, c-format msgid "Error during resuming device %s." msgstr "デバイス %s の再開中にエラー。" -#: lib/setup.c:4301 +#: lib/setup.c:4335 msgid "Failed to unlink volume key from user specified keyring." msgstr "ボリュームキーを指定されたキーリングからアンリンクできません。" -#: lib/setup.c:4423 lib/setup.c:5603 +#: lib/setup.c:4457 lib/setup.c:5637 msgid "Failed to link volume key in user defined keyring." msgstr "ボリュームキーを指定されたキーリングにリンクできません。" -#: lib/setup.c:4522 src/cryptsetup.c:2721 +#: lib/setup.c:4556 src/cryptsetup.c:2720 #, c-format msgid "Volume %s is not suspended." msgstr "ボリューム %s は停止されていません。" -#: lib/setup.c:4633 lib/setup.c:7276 lib/setup.c:7298 lib/setup.c:7352 -#: src/cryptsetup.c:1856 src/cryptsetup.c:2260 src/cryptsetup.c:2278 -#: src/utils_reencrypt.c:305 src/utils_reencrypt.c:1966 +#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1855 +#: src/cryptsetup.c:2259 src/cryptsetup.c:2277 src/utils_reencrypt.c:305 +#: src/utils_reencrypt.c:1966 msgid "Volume key does not match the volume." msgstr "ボリュームキーがボリュームに合いません。" -#: lib/setup.c:4787 +#: lib/setup.c:4821 msgid "Failed to swap new key slot." msgstr "新しいキースロットを交換できませんでした。" -#: lib/setup.c:4885 +#: lib/setup.c:4919 #, c-format msgid "Key slot %d is invalid." msgstr "キースロット %d は不正です。" -#: lib/setup.c:4891 src/cryptsetup.c:1977 src/cryptsetup.c:2437 -#: src/cryptsetup.c:3121 src/cryptsetup.c:3181 +#: lib/setup.c:4925 src/cryptsetup.c:1976 src/cryptsetup.c:2436 +#: src/cryptsetup.c:3120 src/cryptsetup.c:3180 #, c-format msgid "Keyslot %d is not active." msgstr "キースロット %d は非アクティブです。" -#: lib/setup.c:4910 +#: lib/setup.c:4944 msgid "Device header overlaps with data area." msgstr "デバイスヘッダがデータ領域に重なっています。" -#: lib/setup.c:5131 +#: lib/setup.c:5165 msgid "Reencryption in-progress. Cannot activate device." msgstr "既に再暗号化中です。デバイスをアクティベートできません。" -#: lib/setup.c:5133 lib/luks2/luks2_json_metadata.c:2888 -#: lib/luks2/luks2_reencrypt.c:3725 +#: lib/setup.c:5167 lib/luks2/luks2_json_metadata.c:2913 +#: lib/luks2/luks2_reencrypt.c:3726 msgid "Failed to get reencryption lock." msgstr "再暗号化ロックを取得できません。" -#: lib/setup.c:5155 +#: lib/setup.c:5189 msgid "LUKS2 reencryption recovery using volume key(s) failed." msgstr "ボリュームキーを使った LUKS2 の再暗号化のリカバリに失敗しました。" -#: lib/setup.c:5291 +#: lib/setup.c:5325 #, c-format msgid "Device %s already exists." msgstr "デバイス %s は既に存在します。" -#: lib/setup.c:5298 +#: lib/setup.c:5332 #, c-format msgid "Cannot use device %s, name is invalid or still in use." msgstr "デバイス %s を使えません。名前が不正か使用中です。" -#: lib/setup.c:5310 +#: lib/setup.c:5344 msgid "Reencryption volume keys do not match the volume." msgstr "再暗号化ボリュームキーがボリュームに合いません。" -#: lib/setup.c:5327 +#: lib/setup.c:5361 msgid "Incorrect volume key specified for plain device." msgstr "正しくないボリュームキーがプレーンデバイスに指定されました。" -#: lib/setup.c:5353 lib/setup.c:5414 +#: lib/setup.c:5387 lib/setup.c:5448 msgid "Device type is not properly initialized." msgstr "デバイスタイプが正しく初期化されていません。" -#: lib/setup.c:5452 +#: lib/setup.c:5486 msgid "Kernel keyring is not supported by the kernel." msgstr "カーネルがカーネルキーリングをサポートしていません。" -#: lib/setup.c:5456 +#: lib/setup.c:5490 msgid "Kernel keyring missing: required for passing signature to kernel." msgstr "署名をカーネルに渡すのに必要なカーネルキーリングをカーネルがサポートしていません。" -#: lib/setup.c:5511 +#: lib/setup.c:5545 #, c-format msgid "Cannot use keyring key %s." msgstr "キーリングキー %s が使えません。" -#: lib/setup.c:5724 +#: lib/setup.c:5758 msgid "Incorrect root hash specified for verity device." msgstr "正しくないルートハッシュが verity デバイスに指定されました。" -#: lib/setup.c:5765 lib/setup.c:5790 +#: lib/setup.c:5799 lib/setup.c:5824 msgid "OPAL does not support deferred deactivation." msgstr "OPAL は遅延デアクティベーションをサポートしていません。" -#: lib/setup.c:5780 lib/setup.c:5811 lib/luks2/luks2_json_metadata.c:2953 +#: lib/setup.c:5814 lib/setup.c:5845 lib/luks2/luks2_json_metadata.c:2978 #: src/utils_reencrypt.c:89 #, c-format msgid "Device %s is still in use." msgstr "デバイス %s は使用中です。" -#: lib/setup.c:5798 +#: lib/setup.c:5832 #, c-format msgid "Could not cancel deferred remove from device %s." msgstr "デバイス %s からの遅延削除をキャンセルできませんでした。" -#: lib/setup.c:5820 +#: lib/setup.c:5854 #, c-format msgid "Invalid device %s." msgstr "デバイス %s は不正です。" -#: lib/setup.c:5967 +#: lib/setup.c:6001 msgid "Volume key buffer too small." msgstr "ボリュームキーのバッファが小さすぎます。" -#: lib/setup.c:5978 +#: lib/setup.c:6012 msgid "Cannot retrieve volume key for LUKS2 device." msgstr "LUKS2 デバイス向けのボリュームキーが取得できません。" -#: lib/setup.c:5987 +#: lib/setup.c:6021 msgid "Cannot retrieve volume key for LUKS1 device." msgstr "LUKS1 デバイス向けのボリュームキーが取得できません。" -#: lib/setup.c:6001 +#: lib/setup.c:6035 msgid "Cannot retrieve volume key for plain device." msgstr "プレーンデバイス向けのボリュームキーが取得できません。" -#: lib/setup.c:6009 +#: lib/setup.c:6043 msgid "Cannot retrieve root hash for verity device." msgstr "verity デバイスのルートハッシュが読み出せません。" -#: lib/setup.c:6018 +#: lib/setup.c:6052 msgid "Cannot retrieve volume key for BITLK device." msgstr "BITLK デバイス向けのボリュームキーが取得できません。" -#: lib/setup.c:6023 +#: lib/setup.c:6057 msgid "Cannot retrieve volume key for FVAULT2 device." msgstr "FVAULT2 デバイス向けのボリュームキーが取得できません。" -#: lib/setup.c:6025 +#: lib/setup.c:6059 #, c-format msgid "This operation is not supported for %s crypt device." msgstr "この操作は %s 暗号化デバイスではサポートされていません。" -#: lib/setup.c:6210 lib/setup.c:6221 +#: lib/setup.c:6244 lib/setup.c:6255 msgid "Dump operation is not supported for this device type." msgstr "このデバイスタイプはダンプ操作をサポートしていません。" -#: lib/setup.c:6601 +#: lib/setup.c:6635 #, c-format msgid "Data offset is not multiple of %u bytes." msgstr "データオフセットが %u バイトの倍数である必要があります。" -#: lib/setup.c:6909 +#: lib/setup.c:6943 #, c-format msgid "Cannot convert device %s which is still in use." msgstr "使用中のデバイス %s を変換できません。" -#: lib/setup.c:7217 lib/setup.c:7361 +#: lib/setup.c:7251 lib/setup.c:7406 #, c-format msgid "Failed to assign keyslot %u as the new volume key." msgstr "新しいボリュームキー向けのキースロット %u を確保できません。" -#: lib/setup.c:7241 +#: lib/setup.c:7275 msgid "Failed to initialize default LUKS2 keyslot parameters." msgstr "デフォルト LUKS2 キースロットパラメータを初期化できません。" -#: lib/setup.c:7247 +#: lib/setup.c:7281 #, c-format msgid "Failed to assign keyslot %d to digest." msgstr "ダイジェストするためのキースロット %d が確保できません。" -#: lib/setup.c:7478 +#: lib/setup.c:7523 msgid "Cannot add key slot, all slots disabled and no volume key provided." msgstr "キースロットを追加できません。全てのスロットが無効でボリュームキーが渡されませんでした。" -#: lib/setup.c:7551 lib/verity/verity.c:333 +#: lib/setup.c:7611 lib/setup.c:7626 lib/verity/verity.c:333 msgid "Failed to load key in kernel keyring." msgstr "キーをカーネルキーリングにロードできません。" -#: lib/setup.c:7742 +#: lib/setup.c:7807 #, c-format msgid "Could not find keyring described by \"%s\"." msgstr "キーリング \"%s\" が見つかりませんでした。" -#: lib/setup.c:7807 +#: lib/setup.c:7872 msgid "Failed to acquire global memory-hard access serialization lock." msgstr "グローバル memory-hard アクセス直列化ロックが取れません。" -#: lib/utils.c:204 lib/tcrypt/tcrypt.c:490 +#: lib/utils.c:205 lib/tcrypt/tcrypt.c:488 msgid "Failed to open key file." msgstr "キーファイルがオープンできません。" -#: lib/utils.c:212 +#: lib/utils.c:213 msgid "Cannot read keyfile from a terminal." msgstr "ターミナルからキーファイルを読みこめません。" -#: lib/utils.c:228 +#: lib/utils.c:229 msgid "Failed to stat key file." msgstr "キーファイルを stat() できません。" -#: lib/utils.c:236 lib/utils.c:257 +#: lib/utils.c:237 lib/utils.c:258 msgid "Cannot seek to requested keyfile offset." msgstr "指定されたキーファイルオフセットにシークできません。" -#: lib/utils.c:251 lib/utils.c:266 src/utils_password.c:219 +#: lib/utils.c:252 lib/utils.c:267 src/utils_password.c:219 #: src/utils_password.c:231 msgid "Out of memory while reading passphrase." msgstr "パスフレーズ読み込み中にメモリが不足しました。" -#: lib/utils.c:286 +#: lib/utils.c:287 msgid "Error reading passphrase." msgstr "パスフレーズの読み込みでエラー。" -#: lib/utils.c:303 +#: lib/utils.c:304 msgid "Nothing to read on input." msgstr "読もうとしたら入力が空です。" -#: lib/utils.c:310 +#: lib/utils.c:311 msgid "Maximum keyfile size exceeded." msgstr "キーファイルが最大サイズを超えています。" -#: lib/utils.c:315 +#: lib/utils.c:316 msgid "Cannot read requested amount of data." msgstr "指定されたサイズのデータを読み込めません。" @@ -960,7 +960,7 @@ msgid "Cipher specification should be in [cipher]-[mode]-[iv] format." msgstr "暗号の指定は [暗号]-[モード]-[初期ベクタ] という形式であるべきです。" #: lib/luks1/keyencryption.c:85 lib/luks1/keymanage.c:353 -#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1150 +#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1132 #: lib/luks2/luks2_json_metadata.c:1518 lib/luks2/luks2_keyslot.c:711 #, c-format msgid "Cannot write to device %s, permission denied." @@ -974,13 +974,13 @@ msgstr "一時的なキーストアデバイスを開けません。" msgid "Failed to access temporary keystore device." msgstr "一時的なキーストアデバイスにアクセスできません。" -#: lib/luks1/keyencryption.c:189 lib/luks2/luks2_keyslot_luks2.c:49 -#: lib/luks2/luks2_keyslot_luks2.c:67 lib/luks2/luks2_keyslot_reenc.c:184 +#: lib/luks1/keyencryption.c:189 lib/luks2/luks2_keyslot_luks2.c:47 +#: lib/luks2/luks2_keyslot_reenc.c:184 msgid "IO error while encrypting keyslot." msgstr "キースロットを暗号化中にI/Oエラーが発生しました。" #: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:356 -#: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:668 +#: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:659 #: lib/fvault2/fvault2.c:872 lib/verity/verity.c:67 lib/verity/verity.c:183 #: lib/verity/verity_hash.c:312 lib/verity/verity_hash.c:321 #: lib/verity/verity_hash.c:350 lib/verity/verity_fec.c:247 @@ -991,7 +991,7 @@ msgstr "キースロットを暗号化中にI/Oエラーが発生しました。 msgid "Cannot open device %s." msgstr "デバイス %s を開けません。" -#: lib/luks1/keyencryption.c:247 lib/luks2/luks2_keyslot_luks2.c:128 +#: lib/luks1/keyencryption.c:247 lib/luks2/luks2_keyslot_luks2.c:85 msgid "IO error while decrypting keyslot." msgstr "キースロットを復号化中にI/Oエラーが発生しました。" @@ -1081,7 +1081,7 @@ msgid "Cipher hash repaired to lowercase (%s)." msgstr "暗号ハッシュを小文字に修復しました (%s)。" #: lib/luks1/keymanage.c:417 lib/luks1/keymanage.c:523 -#: lib/luks1/keymanage.c:777 +#: lib/luks1/keymanage.c:756 #, c-format msgid "Requested LUKS hash %s is not supported." msgstr "要求された LUKS ハッシュ %s はサポートしていません。" @@ -1128,7 +1128,7 @@ msgstr "LUKS 暗号モード %s は不正です。" msgid "LUKS hash %s is invalid." msgstr "LUKS ハッシュ %s は不正です。" -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 +#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1366 msgid "No known problems detected for LUKS header." msgstr "LUKS ヘッダに既知の不具合は検出されませんでした。" @@ -1142,50 +1142,50 @@ msgstr "デバイス %s の LUKS ヘッダを更新中にエラーが発生し msgid "Error re-reading LUKS header after update on device %s." msgstr "デバイス %s の LUKS ヘッダを更新後の再読み込み中にエラーが発生しました。" -#: lib/luks1/keymanage.c:771 +#: lib/luks1/keymanage.c:750 msgid "Data offset for LUKS header must be either 0 or higher than header size." msgstr "LUKS ヘッダのデータへのオフセットは 0 かヘッダサイズより大きくなければいけません。" -#: lib/luks1/keymanage.c:782 lib/luks1/keymanage.c:853 +#: lib/luks1/keymanage.c:761 lib/luks1/keymanage.c:832 #: lib/luks2/luks2_json_format.c:231 lib/luks2/luks2_json_metadata.c:1261 #: src/utils_reencrypt.c:701 msgid "Wrong LUKS UUID format provided." msgstr "LUKS UUID の形式が間違っています。" -#: lib/luks1/keymanage.c:804 +#: lib/luks1/keymanage.c:783 msgid "Cannot create LUKS header: reading random salt failed." msgstr "LUKS ヘッダを作成できません: ランダムなソルトを読み込めません。" -#: lib/luks1/keymanage.c:832 +#: lib/luks1/keymanage.c:811 #, c-format msgid "Cannot create LUKS header: header digest failed (using hash %s)." msgstr "LUKS ヘッダを作成できません: ヘッダのハッシュが求められません (ハッシュには %s を使用)。" -#: lib/luks1/keymanage.c:877 +#: lib/luks1/keymanage.c:856 #, c-format msgid "Key slot %d active, purge first." msgstr "キースロット %d が使用中なので、パージしてください。" -#: lib/luks1/keymanage.c:883 +#: lib/luks1/keymanage.c:862 #, c-format msgid "Key slot %d material includes too few stripes. Header manipulation?" msgstr "キースロット %d のストライプが少なすぎます。ヘッダを細工でもしましたか?" -#: lib/luks1/keymanage.c:921 lib/luks2/luks2_keyslot_luks2.c:260 +#: lib/luks1/keymanage.c:900 lib/luks2/luks2_keyslot_luks2.c:217 msgid "PBKDF2 iteration value overflow." msgstr "PBKDF2 イテレーション回数がオーバーフローしました。" -#: lib/luks1/keymanage.c:1040 +#: lib/luks1/keymanage.c:1022 #, c-format msgid "Cannot open keyslot (using hash %s)." msgstr "キースロットをオープンできません (ハッシュ %s を使用)。" -#: lib/luks1/keymanage.c:1136 +#: lib/luks1/keymanage.c:1118 #, c-format msgid "Key slot %d is invalid, please select keyslot between 0 and %d." msgstr "キースロット %d は不正です。0 から %d の間を選んでください。" -#: lib/luks1/keymanage.c:1154 lib/luks2/luks2_keyslot.c:715 +#: lib/luks1/keymanage.c:1136 lib/luks2/luks2_keyslot.c:715 #, c-format msgid "Cannot wipe device %s." msgstr "デバイス %s をワイプできません。" @@ -1206,56 +1206,48 @@ msgstr "互換性のない loop-AES キーファイルが検出されました msgid "Kernel does not support loop-AES compatible mapping." msgstr "カーネルが loop-AES 互換マッピングをサポートしていません。" -#: lib/tcrypt/tcrypt.c:497 +#: lib/tcrypt/tcrypt.c:495 #, c-format msgid "Error reading keyfile %s." msgstr "キーファイル %s を読み込み中にエラー。" -#: lib/tcrypt/tcrypt.c:547 +#: lib/tcrypt/tcrypt.c:549 #, c-format msgid "Maximum TCRYPT passphrase length (%zu) exceeded." msgstr "TCRYPT パスフレーズの最大長 (%zu) を超えました。" -#: lib/tcrypt/tcrypt.c:589 +#: lib/tcrypt/tcrypt.c:591 #, c-format msgid "PBKDF2 hash algorithm %s not available, skipping." msgstr "PBKDF2 ハッシュアルゴリズム %s が利用できないのでスキップします。" -#: lib/tcrypt/tcrypt.c:608 src/cryptsetup.c:1240 -msgid "Required kernel crypto interface not available." -msgstr "必要なカーネル crypto インターフェースが使用できません。" - -#: lib/tcrypt/tcrypt.c:610 src/cryptsetup.c:1242 -msgid "Ensure you have algif_skcipher kernel module loaded." -msgstr "algif_skcipher カーネルモジュールをロードしてください。" - -#: lib/tcrypt/tcrypt.c:752 +#: lib/tcrypt/tcrypt.c:743 #, c-format msgid "Activation is not supported for %d sector size." msgstr "アクティベーションは %d セクタサイズではサポートしていません。" -#: lib/tcrypt/tcrypt.c:758 +#: lib/tcrypt/tcrypt.c:749 msgid "Kernel does not support activation for this TCRYPT legacy mode." msgstr "カーネルが TCRYPT レガシーモードのアクティベーションをサポートしていません。" -#: lib/tcrypt/tcrypt.c:813 +#: lib/tcrypt/tcrypt.c:804 #, c-format msgid "Activating TCRYPT system encryption for partition %s." msgstr "TCRYPT システム暗号をパーティション %s に対してアクティベーションしました。" -#: lib/tcrypt/tcrypt.c:828 +#: lib/tcrypt/tcrypt.c:819 msgid "Cannot determine TCRYPT system partition offset, activating whole encrypted area." msgstr "TCRYPT システムパーティションのオフセットがわからないため、全暗号領域をアクティベートします。" -#: lib/tcrypt/tcrypt.c:837 +#: lib/tcrypt/tcrypt.c:828 msgid "Cannot determine TCRYPT system partition offset, activating device as a system partition." msgstr "TCRYPT システムパーティションのオフセットがわからないため、デバイスをシステムパーティションとしてアクティベートします。" -#: lib/tcrypt/tcrypt.c:917 +#: lib/tcrypt/tcrypt.c:908 msgid "Kernel does not support TCRYPT compatible mapping." msgstr "カーネルが TCRYPT 互換のマッピングをサポートしていません。" -#: lib/tcrypt/tcrypt.c:1146 +#: lib/tcrypt/tcrypt.c:1137 msgid "This function is not supported without TCRYPT header load." msgstr "この機能は TCRYPT ヘッダの読み込みなしではサポートしません。" @@ -1608,8 +1600,7 @@ msgid "WARNING: LUKS2 keyslots area size changed to % bytes.\n" msgstr "警告: LUKS2 キースロット領域サイズが % バイトに変更されました。\n" #: lib/luks2/luks2_json_metadata.c:1171 lib/luks2/luks2_json_metadata.c:1357 -#: lib/luks2/luks2_json_metadata.c:1417 lib/luks2/luks2_keyslot_luks2.c:81 -#: lib/luks2/luks2_keyslot_luks2.c:105 +#: lib/luks2/luks2_json_metadata.c:1417 lib/luks2/luks2_keyslot_luks2.c:71 #, c-format msgid "Failed to acquire read lock on device %s." msgstr "デバイス %s の読み込みのためのロックを取得できませんでした。" @@ -1669,79 +1660,79 @@ msgstr "" msgid "Ignored unknown flag %s." msgstr "不明なフラグ %s を無視しました。" -#: lib/luks2/luks2_json_metadata.c:2545 lib/luks2/luks2_reencrypt.c:2109 +#: lib/luks2/luks2_json_metadata.c:2563 lib/luks2/luks2_reencrypt.c:2110 #, c-format msgid "Missing key for dm-crypt segment %u" msgstr "dm-crypt セグメント %u にキーがありません" -#: lib/luks2/luks2_json_metadata.c:2557 lib/luks2/luks2_reencrypt.c:2122 +#: lib/luks2/luks2_json_metadata.c:2575 lib/luks2/luks2_reencrypt.c:2123 msgid "Failed to set dm-crypt segment." msgstr "dm-crypt セグメントの設定に失敗しました。" -#: lib/luks2/luks2_json_metadata.c:2563 lib/luks2/luks2_reencrypt.c:2128 +#: lib/luks2/luks2_json_metadata.c:2581 lib/luks2/luks2_reencrypt.c:2129 msgid "Failed to set dm-linear segment." msgstr "dm-linear セグメントの設定に失敗しました。" -#: lib/luks2/luks2_json_metadata.c:2683 src/utils_reencrypt.c:578 +#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:578 msgid "No known cipher specification pattern detected in LUKS2 header." msgstr "LUKS2 ヘッダに既知の暗号スペックパターンを検出できませんでした。" -#: lib/luks2/luks2_json_metadata.c:2691 +#: lib/luks2/luks2_json_metadata.c:2709 msgid "OPAL device must have static device size." msgstr "OPAL デバイスは固定デバイスサイズでなければなりません。" -#: lib/luks2/luks2_json_metadata.c:2711 +#: lib/luks2/luks2_json_metadata.c:2729 msgid "Encrypted OPAL device with integrity must be smaller than locking range." msgstr "整合性が有効な暗号化 OPAL デバイスはロックレンジより小さくなければなりません。" -#: lib/luks2/luks2_json_metadata.c:2716 +#: lib/luks2/luks2_json_metadata.c:2734 msgid "OPAL device must have same size as locking range." msgstr "OPAL デバイスはロックレンジと同じサイズでなければなりません。" -#: lib/luks2/luks2_json_metadata.c:2736 +#: lib/luks2/luks2_json_metadata.c:2754 #, c-format msgid "OPAL device is %s already unlocked.\n" msgstr "OPAL デバイス %s は既にアンロックされています。\n" -#: lib/luks2/luks2_json_metadata.c:2775 +#: lib/luks2/luks2_json_metadata.c:2793 msgid "Unsupported device integrity configuration." msgstr "サポートしていないデバイス整合性設定です。" -#: lib/luks2/luks2_json_metadata.c:2791 +#: lib/luks2/luks2_json_metadata.c:2809 msgid "Underlying dm-integrity device with unexpected provided data sectors." msgstr "dm-integrity デバイスがデータセクタに対して期待通りではありません。" -#: lib/luks2/luks2_json_metadata.c:2886 +#: lib/luks2/luks2_json_metadata.c:2911 msgid "Reencryption in-progress. Cannot deactivate device." msgstr "再暗号化が実行中なのでデバイスのデアクティベートできません。. Cannot deactivate device." -#: lib/luks2/luks2_json_metadata.c:2897 lib/luks2/luks2_reencrypt.c:4286 +#: lib/luks2/luks2_json_metadata.c:2922 lib/luks2/luks2_reencrypt.c:4287 #, c-format msgid "Failed to replace suspended device %s with dm-error target." msgstr "サスペンドされたデバイス %s を dm-error ターゲットで置き換えられません。" -#: lib/luks2/luks2_json_metadata.c:2976 lib/luks2/luks2_json_metadata.c:2998 +#: lib/luks2/luks2_json_metadata.c:3001 lib/luks2/luks2_json_metadata.c:3023 #, c-format msgid "Device %s was deactivated but hardware OPAL device cannot be locked." msgstr "デバイス %s はデアクティベートされましたが、ハードウェア OPAL デバイスはロックできません。" -#: lib/luks2/luks2_json_metadata.c:3020 +#: lib/luks2/luks2_json_metadata.c:3045 msgid "Unmet LUKS2 requirements detected." msgstr "満たせない LUKS2 の必要条件があります。" -#: lib/luks2/luks2_json_metadata.c:3028 +#: lib/luks2/luks2_json_metadata.c:3053 msgid "Operation incompatible with device marked for legacy reencryption. Aborting." msgstr "操作がレガシー再暗号化とマークされたデバイスと互換性がありません。中止します。" -#: lib/luks2/luks2_json_metadata.c:3030 +#: lib/luks2/luks2_json_metadata.c:3055 msgid "Operation incompatible with device marked for LUKS2 reencryption. Aborting." msgstr "操作が LUKS2 再暗号化とマークされたデバイスと互換性がありません。中止します。" -#: lib/luks2/luks2_json_metadata.c:3032 +#: lib/luks2/luks2_json_metadata.c:3057 msgid "Operation incompatible with device using OPAL. Aborting." msgstr "操作が OPAL を用いたデバイスと互換性がありません。中止します。" -#: lib/luks2/luks2_json_metadata.c:3034 +#: lib/luks2/luks2_json_metadata.c:3059 msgid "Operation incompatible with device using inline HW tags. Aborting." msgstr "操作がインラインHWタグを用いたデバイスと互換性がありません。中止します。" @@ -1753,22 +1744,22 @@ msgstr "キースロットをオープンするのにメモリが足りません msgid "Keyslot open failed." msgstr "キースロットのオープンに失敗しました。" -#: lib/luks2/luks2_keyslot_luks2.c:42 lib/luks2/luks2_keyslot_luks2.c:99 +#: lib/luks2/luks2_keyslot_luks2.c:40 lib/luks2/luks2_keyslot_luks2.c:77 #, c-format -msgid "Cannot use %s-%s cipher for keyslot encryption." -msgstr "キースロットの暗号化に %s- %s 暗号は使えません。" +msgid "Cannot use %s cipher for keyslot encryption." +msgstr "キースロットの暗号化に %s 暗号は使えません。" -#: lib/luks2/luks2_keyslot_luks2.c:262 +#: lib/luks2/luks2_keyslot_luks2.c:219 msgid "Not enough memory for keyslot key derivation." msgstr "キースロットキー派生のためのメモリが足りません。" -#: lib/luks2/luks2_keyslot_luks2.c:276 lib/luks2/luks2_keyslot_luks2.c:405 -#: lib/luks2/luks2_keyslot_reenc.c:434 lib/luks2/luks2_reencrypt.c:2733 +#: lib/luks2/luks2_keyslot_luks2.c:233 lib/luks2/luks2_keyslot_luks2.c:358 +#: lib/luks2/luks2_keyslot_reenc.c:434 lib/luks2/luks2_reencrypt.c:2734 #, c-format msgid "Hash algorithm %s is not available." msgstr "ハッシュアルゴリズム %s が利用できません。" -#: lib/luks2/luks2_keyslot_luks2.c:522 +#: lib/luks2/luks2_keyslot_luks2.c:475 msgid "No space for new keyslot." msgstr "新しいキースロット用の領域がありません。" @@ -1785,335 +1776,335 @@ msgstr "耐性タイプを更新できません。新しいタイプは %." msgstr "% から始めるホットゾーンエリアを読み込めません。" -#: lib/luks2/luks2_reencrypt.c:1649 +#: lib/luks2/luks2_reencrypt.c:1650 #, c-format msgid "Failed to decrypt sector %zu." msgstr "セクタ %zu を復号できません。" -#: lib/luks2/luks2_reencrypt.c:1655 +#: lib/luks2/luks2_reencrypt.c:1656 #, c-format msgid "Failed to recover sector %zu." msgstr "セクタ %zu を復元できません。" -#: lib/luks2/luks2_reencrypt.c:2208 +#: lib/luks2/luks2_reencrypt.c:2209 #, c-format msgid "Source and target device sizes don't match. Source %, target: %." msgstr "ソースとターゲットデバイスのサイズが一致しません。ソース %, ターゲット: %." -#: lib/luks2/luks2_reencrypt.c:2310 +#: lib/luks2/luks2_reencrypt.c:2311 #, c-format msgid "Failed to activate hotzone device %s." msgstr "ホットゾーンデバイス %s がアクティベートできません。" -#: lib/luks2/luks2_reencrypt.c:2322 +#: lib/luks2/luks2_reencrypt.c:2323 #, c-format msgid "Failed to allocate hotzone device %s." msgstr "ホットゾーンデバイス %s を確保できません。" -#: lib/luks2/luks2_reencrypt.c:2339 +#: lib/luks2/luks2_reencrypt.c:2340 #, c-format msgid "Failed to activate overlay device %s with actual origin table." msgstr "実際の origin table があるオーバーレイデバイス %s をアクティベートできません。" -#: lib/luks2/luks2_reencrypt.c:2346 +#: lib/luks2/luks2_reencrypt.c:2347 #, c-format msgid "Failed to load new mapping for device %s." msgstr "デバイス %s の新しいマッピングをロードできません。" -#: lib/luks2/luks2_reencrypt.c:2418 +#: lib/luks2/luks2_reencrypt.c:2419 msgid "Failed to refresh reencryption devices stack." msgstr "再暗号化デバイススタックのリフレッシュに失敗しました。" -#: lib/luks2/luks2_reencrypt.c:2615 +#: lib/luks2/luks2_reencrypt.c:2616 msgid "Failed to set new keyslots area size." msgstr "新しいキースロットエリアサイズを設定できません。" -#: lib/luks2/luks2_reencrypt.c:2751 +#: lib/luks2/luks2_reencrypt.c:2752 #, c-format msgid "Data shift value is not aligned to encryption sector size (% bytes)." msgstr "データシフト値が要求された暗号化セクタサイズにアラインされていません(% バイト)。" -#: lib/luks2/luks2_reencrypt.c:2788 src/utils_reencrypt.c:162 +#: lib/luks2/luks2_reencrypt.c:2789 src/utils_reencrypt.c:162 #, c-format msgid "Unsupported resilience mode %s" msgstr "耐性(resilience)モード %s はサポートしていません" -#: lib/luks2/luks2_reencrypt.c:2824 +#: lib/luks2/luks2_reencrypt.c:2825 msgid "Moved segment size can not be greater than data shift value." msgstr "移動されるセグメントサイズはデータシフト値より大きくできません。" -#: lib/luks2/luks2_reencrypt.c:2866 +#: lib/luks2/luks2_reencrypt.c:2867 msgid "Invalid reencryption resilience parameters." msgstr "不正な再暗号化耐性パラメータを要求されました。" -#: lib/luks2/luks2_reencrypt.c:2888 +#: lib/luks2/luks2_reencrypt.c:2889 #, c-format msgid "Moved segment too large. Requested size %, available space for: %." msgstr "移動されるセグメントが大きすぎます。要求されているサイズは % ですが、使えるサイズは % です。" -#: lib/luks2/luks2_reencrypt.c:2977 +#: lib/luks2/luks2_reencrypt.c:2978 msgid "Failed to clear table." msgstr "テーブルをクリアできません。" -#: lib/luks2/luks2_reencrypt.c:3063 +#: lib/luks2/luks2_reencrypt.c:3064 #, c-format msgid "Data shift (% sectors) is less than future data offset (% sectors)." msgstr "データシフト (% セクタ) が今後のデータオフセットより少ないです (% セクタ)。" -#: lib/luks2/luks2_reencrypt.c:3078 lib/luks2/luks2_reencrypt.c:3085 +#: lib/luks2/luks2_reencrypt.c:3079 lib/luks2/luks2_reencrypt.c:3086 msgid "Reduced data size is larger than real device size." msgstr "小さくしたデータサイズが実際のデバイスサイズより大きいです。" -#: lib/luks2/luks2_reencrypt.c:3095 +#: lib/luks2/luks2_reencrypt.c:3096 #, c-format msgid "Data device is not aligned to encryption sector size (% bytes)." msgstr "データデバイスが暗号化セクタサイズにアラインされていません(% バイト)." -#: lib/luks2/luks2_reencrypt.c:3125 lib/luks2/luks2_reencrypt.c:3643 -#: lib/luks2/luks2_reencrypt.c:3664 +#: lib/luks2/luks2_reencrypt.c:3126 lib/luks2/luks2_reencrypt.c:3644 +#: lib/luks2/luks2_reencrypt.c:3665 #, c-format msgid "Failed to open %s in exclusive mode (already mapped or mounted)." msgstr "デバイス %s を排他モードでオープンでません (既にマップされているかマウントされています)。" -#: lib/luks2/luks2_reencrypt.c:3332 +#: lib/luks2/luks2_reencrypt.c:3333 msgid "Device not marked for LUKS2 reencryption." msgstr "デバイスは LUKS2 再暗号化向けにマークされていません。" -#: lib/luks2/luks2_reencrypt.c:3349 lib/luks2/luks2_reencrypt.c:4403 +#: lib/luks2/luks2_reencrypt.c:3350 lib/luks2/luks2_reencrypt.c:4404 msgid "Failed to load LUKS2 reencryption context." msgstr "LUKS2 再暗号化コンテキストをロードできません。" -#: lib/luks2/luks2_reencrypt.c:3444 lib/luks2/luks2_reencrypt.c:3784 +#: lib/luks2/luks2_reencrypt.c:3445 lib/luks2/luks2_reencrypt.c:3785 msgid "Device is not in reencryption." msgstr "デバイス %s は再暗号化中ではありません。" -#: lib/luks2/luks2_reencrypt.c:3451 lib/luks2/luks2_reencrypt.c:3791 +#: lib/luks2/luks2_reencrypt.c:3452 lib/luks2/luks2_reencrypt.c:3792 msgid "Reencryption process is already running." msgstr "既に再暗号化中です。" -#: lib/luks2/luks2_reencrypt.c:3453 lib/luks2/luks2_reencrypt.c:3793 +#: lib/luks2/luks2_reencrypt.c:3454 lib/luks2/luks2_reencrypt.c:3794 msgid "Failed to acquire reencryption lock." msgstr "再暗号化ロックを取得できません。" -#: lib/luks2/luks2_reencrypt.c:3471 +#: lib/luks2/luks2_reencrypt.c:3472 msgid "Cannot proceed with reencryption. Run reencryption recovery first." msgstr "再暗号化を開始できません。再暗号化のリカバリを先にしてください。" -#: lib/luks2/luks2_reencrypt.c:3607 +#: lib/luks2/luks2_reencrypt.c:3608 msgid "Active device size and requested reencryption size don't match." msgstr "実際のデバイスサイズと要求された再暗号化サイズが一致しません。" -#: lib/luks2/luks2_reencrypt.c:3621 +#: lib/luks2/luks2_reencrypt.c:3622 msgid "Illegal device size requested in reencryption parameters." msgstr "再暗号化のパラメータとして不正なデバイスサイズが要求されました。" -#: lib/luks2/luks2_reencrypt.c:3723 +#: lib/luks2/luks2_reencrypt.c:3724 msgid "Reencryption in-progress. Cannot perform recovery." msgstr "既に再暗号化中です。復元を実行できません。" -#: lib/luks2/luks2_reencrypt.c:3744 +#: lib/luks2/luks2_reencrypt.c:3745 msgid "LUKS2 reencryption recovery failed." msgstr "LUKS2 の再暗号化は既に初期化されました。" -#: lib/luks2/luks2_reencrypt.c:3877 lib/luks2/luks2_reencrypt.c:4356 +#: lib/luks2/luks2_reencrypt.c:3878 lib/luks2/luks2_reencrypt.c:4357 msgid "Failed to initialize reencryption device stack." msgstr "再暗号化デバイススタックの初期化に失敗しました。" -#: lib/luks2/luks2_reencrypt.c:3910 +#: lib/luks2/luks2_reencrypt.c:3911 msgid "LUKS2 reencryption already initialized in metadata." msgstr "メタデータの LUKS2 の再暗号化は既に初期化されました。" -#: lib/luks2/luks2_reencrypt.c:3918 +#: lib/luks2/luks2_reencrypt.c:3919 msgid "Failed to initialize LUKS2 reencryption in metadata." msgstr "メタデータの LUKS2 再暗号化に失敗しました。" -#: lib/luks2/luks2_reencrypt.c:3971 lib/luks2/luks2_reencrypt.c:4003 -#: lib/luks2/luks2_reencrypt.c:4033 +#: lib/luks2/luks2_reencrypt.c:3972 lib/luks2/luks2_reencrypt.c:4004 +#: lib/luks2/luks2_reencrypt.c:4034 msgid "Reencryption is not supported for DAX (persistent memory) devices." msgstr "再暗号化は DAX デバイスではサポートされていません。" -#: lib/luks2/luks2_reencrypt.c:4062 +#: lib/luks2/luks2_reencrypt.c:4063 msgid "Failed to set device segments for next reencryption hotzone." msgstr "デバイスセグメントの次の再暗号化ホットゾーンの設定に失敗しました。" -#: lib/luks2/luks2_reencrypt.c:4115 +#: lib/luks2/luks2_reencrypt.c:4116 msgid "Failed to write reencryption resilience metadata." msgstr "再暗号化した耐性用メタデータを書き込めません。" -#: lib/luks2/luks2_reencrypt.c:4122 +#: lib/luks2/luks2_reencrypt.c:4123 msgid "Decryption failed." msgstr "復号に失敗しました。" -#: lib/luks2/luks2_reencrypt.c:4127 +#: lib/luks2/luks2_reencrypt.c:4128 #, c-format msgid "Failed to write hotzone area starting at %." msgstr "% から始まるホットゾーンエリアに書き込めません。" -#: lib/luks2/luks2_reencrypt.c:4132 +#: lib/luks2/luks2_reencrypt.c:4133 msgid "Failed to sync data." msgstr "データを sync できません。" -#: lib/luks2/luks2_reencrypt.c:4140 +#: lib/luks2/luks2_reencrypt.c:4141 msgid "Failed to update metadata after current reencryption hotzone completed." msgstr "現在のホットゾーンの再暗号化完了後にメタデータが更新できません。" -#: lib/luks2/luks2_reencrypt.c:4229 +#: lib/luks2/luks2_reencrypt.c:4230 msgid "Failed to write LUKS2 metadata." msgstr "LUKS2 メタデータが書き込めません。" -#: lib/luks2/luks2_reencrypt.c:4252 +#: lib/luks2/luks2_reencrypt.c:4253 msgid "Failed to wipe unused data device area." msgstr "未使用データデバイス領域を消せません。" -#: lib/luks2/luks2_reencrypt.c:4258 +#: lib/luks2/luks2_reencrypt.c:4259 #, c-format msgid "Failed to remove unused (unbound) keyslot %d." msgstr "未使用のキースロット %d を削除できませんでした。" -#: lib/luks2/luks2_reencrypt.c:4268 +#: lib/luks2/luks2_reencrypt.c:4269 msgid "Failed to remove reencryption keyslot." msgstr "再暗号化キースロットが削除できません。" -#: lib/luks2/luks2_reencrypt.c:4278 +#: lib/luks2/luks2_reencrypt.c:4279 #, c-format msgid "Fatal error while reencrypting chunk starting at %, % sectors long." msgstr "% から % セクタのチャンクの再暗号化中に致命的なエラー。" -#: lib/luks2/luks2_reencrypt.c:4282 +#: lib/luks2/luks2_reencrypt.c:4283 msgid "Online reencryption failed." msgstr "オンライン再暗号化に失敗しました。" -#: lib/luks2/luks2_reencrypt.c:4287 +#: lib/luks2/luks2_reencrypt.c:4288 msgid "Do not resume the device unless replaced with error target manually." msgstr "手動でエラーターゲットに置き換えた場合以外はデバイスのレジュームをしないでください。" -#: lib/luks2/luks2_reencrypt.c:4339 +#: lib/luks2/luks2_reencrypt.c:4340 msgid "Cannot proceed with reencryption. Unexpected reencryption status." msgstr "再暗号化を開始できません。予期しない再暗号化状態です。" -#: lib/luks2/luks2_reencrypt.c:4345 +#: lib/luks2/luks2_reencrypt.c:4346 msgid "Missing or invalid reencrypt context." msgstr "ないか不正な再暗号化コンテキストです。" -#: lib/luks2/luks2_reencrypt.c:4379 lib/luks2/luks2_reencrypt.c:4416 +#: lib/luks2/luks2_reencrypt.c:4380 lib/luks2/luks2_reencrypt.c:4417 msgid "Failed to update reencryption context." msgstr "再暗号化コンテキストが更新できません。" -#: lib/luks2/luks2_reencrypt_digest.c:401 +#: lib/luks2/luks2_reencrypt_digest.c:402 msgid "Reencryption metadata is invalid." msgstr "再暗号化メタデータが不正です。" @@ -2145,7 +2136,7 @@ msgstr "キースロットの暗号化パラメータは LUKS2 デバイスで msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encryption." msgstr "キースロットの暗号化パラメータは LUKS2 キースロット暗号化と互換性がありません。" -#: src/cryptsetup.c:150 src/cryptsetup.c:1178 src/cryptsetup.c:1545 +#: src/cryptsetup.c:150 src/cryptsetup.c:1179 src/cryptsetup.c:1544 #: src/utils_reencrypt.c:1887 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." @@ -2173,7 +2164,7 @@ msgstr "警告: --hash パラメータは plain モードでキーファイル msgid "WARNING: The --keyfile-size option is being ignored, the read size is the same as the encryption key size.\n" msgstr "警告: --keyfile-size オプションは無視されて、読み込みサイズは暗号鍵のサイズと同じになります。\n" -#: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 +#: src/cryptsetup.c:226 src/cryptsetup.c:1374 src/cryptsetup.c:1597 #: src/integritysetup.c:188 src/utils_reencrypt.c:2138 #, c-format msgid "Blkid scan failed for %s." @@ -2184,9 +2175,9 @@ msgstr "%s の Blkid スキャンが失敗しました。" msgid "Detected device signature(s) on %s. Proceeding further may damage existing data." msgstr "%s にデバイス署名が検出されました。既にあるデータを破壊しかねません。" -#: src/cryptsetup.c:238 src/cryptsetup.c:1261 src/cryptsetup.c:1309 -#: src/cryptsetup.c:1382 src/cryptsetup.c:1522 src/cryptsetup.c:1610 -#: src/cryptsetup.c:2495 src/cryptsetup.c:2924 src/integritysetup.c:178 +#: src/cryptsetup.c:238 src/cryptsetup.c:1260 src/cryptsetup.c:1308 +#: src/cryptsetup.c:1381 src/cryptsetup.c:1521 src/cryptsetup.c:1609 +#: src/cryptsetup.c:2494 src/cryptsetup.c:2923 src/integritysetup.c:178 #: src/utils_reencrypt.c:111 src/utils_reencrypt.c:457 #: src/utils_reencrypt.c:925 msgid "Operation aborted.\n" @@ -2235,7 +2226,7 @@ msgstr "" "暗号化されたパーティションにパスフレーズなしでアクセス可能にます。\n" "このダンプは暗号化された安全な所に保存してください。" -#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2520 +#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2519 msgid "" "The header dump with volume key is sensitive information\n" "that allows access to encrypted partition without a passphrase.\n" @@ -2259,9 +2250,9 @@ msgstr "FVAULT2 のボリュームキーサイズが決定できないので、- msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "デバイス %s はまたアクティブで後から削除される予定になっています。.\n" -#: src/cryptsetup.c:881 src/cryptsetup.c:1808 src/cryptsetup.c:2082 -#: src/cryptsetup.c:2229 src/cryptsetup.c:2648 src/cryptsetup.c:2729 -#: src/cryptsetup.c:3262 +#: src/cryptsetup.c:881 src/cryptsetup.c:1807 src/cryptsetup.c:2081 +#: src/cryptsetup.c:2228 src/cryptsetup.c:2647 src/cryptsetup.c:2728 +#: src/cryptsetup.c:3261 #, c-format msgid "Failed to set external tokens path %s." msgstr "外部トークンパス %s の設定に失敗しました。" @@ -2298,31 +2289,35 @@ msgstr "%-10s %4u 回, %5u KB使用, %1u スレッド (%zu のビットの鍵) ( msgid "Result of benchmark is not reliable." msgstr "ベンチマークの結果は信頼できません。" -#: src/cryptsetup.c:1170 +#: src/cryptsetup.c:1171 msgid "# Tests are approximate using memory only (no storage IO).\n" msgstr "# テストはストレージI/Oがなくメモリ上のもののため目安です。\n" #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1195 +#: src/cryptsetup.c:1196 #, c-format msgid "#%*s Algorithm | Key | Encryption | Decryption\n" msgstr "#%*s Algorithm | キー | 暗号化 | 復号化\n" -#: src/cryptsetup.c:1203 +#: src/cryptsetup.c:1204 #, c-format msgid "Cipher %s (with %i bits key) is not available." msgstr "暗号 %s (キーサイズ %i ビット) は利用できません。" #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1222 +#: src/cryptsetup.c:1225 msgid "# Algorithm | Key | Encryption | Decryption\n" msgstr "# Algorithm | キー | 暗号化 | 復号化\n" -#: src/cryptsetup.c:1233 +#: src/cryptsetup.c:1238 msgid "N/A" msgstr "計測値なし" -#: src/cryptsetup.c:1258 +#: src/cryptsetup.c:1241 +msgid "# Cipher speed test is not available.\n" +msgstr "# 暗号スピードテストは利用できません。\n" + +#: src/cryptsetup.c:1257 msgid "" "Unprotected LUKS2 reencryption metadata detected. Please verify the reencryption operation is desirable (see luksDump output)\n" "and continue (upgrade metadata) only if you acknowledge the operation as genuine." @@ -2330,27 +2325,27 @@ msgstr "" "保護されていない LUKS2 再暗号化メタデータが検出されました。再暗号化操作が望ましいものか確認してください。(luksDump の出力を見てください)\n" "そのうえで、この操作が問題ないと確認できたら継続(メタデータのアップグレード)してください。" -#: src/cryptsetup.c:1264 +#: src/cryptsetup.c:1263 msgid "Enter passphrase to protect and upgrade reencryption metadata: " msgstr "再暗号化メタデータの保護とアップグレードのためのパスフレーズを入力してください: " -#: src/cryptsetup.c:1308 +#: src/cryptsetup.c:1307 msgid "Really proceed with LUKS2 reencryption recovery?" msgstr "本当に LUKS2 再暗号化リカバリを行いますか?" -#: src/cryptsetup.c:1317 +#: src/cryptsetup.c:1316 msgid "Enter passphrase to verify reencryption metadata digest: " msgstr "再暗号化メタデータダイジェストを検証するためのパスフレーズを入力してください: " -#: src/cryptsetup.c:1319 +#: src/cryptsetup.c:1318 msgid "Enter passphrase for reencryption recovery: " msgstr "再暗号化のリカバリのためのパスフレーズを入力してください: " -#: src/cryptsetup.c:1381 +#: src/cryptsetup.c:1380 msgid "Really try to repair LUKS device header?" msgstr "本当に LUKS デバイスヘッダの復元を試みていいですか?" -#: src/cryptsetup.c:1409 src/integritysetup.c:76 src/integritysetup.c:244 +#: src/cryptsetup.c:1408 src/integritysetup.c:76 src/integritysetup.c:244 msgid "" "\n" "Wipe interrupted." @@ -2358,7 +2353,7 @@ msgstr "" "\n" "ワイプが中断されました。" -#: src/cryptsetup.c:1414 src/integritysetup.c:81 src/integritysetup.c:289 +#: src/cryptsetup.c:1413 src/integritysetup.c:81 src/integritysetup.c:289 msgid "" "Wiping device to initialize integrity checksum.\n" "You can interrupt this by pressing CTRL+c (rest of not wiped device will contain invalid checksum).\n" @@ -2366,167 +2361,167 @@ msgstr "" "整合性チェックサムの初期化のためにデバイスのデータを消去しています。\n" "CTRL+c で中止できます (初期化されなかったデバイスのチェックサムは正しくなくなります)。\n" -#: src/cryptsetup.c:1436 src/integritysetup.c:103 +#: src/cryptsetup.c:1435 src/integritysetup.c:103 #, c-format msgid "Cannot deactivate temporary device %s." msgstr "一時的デバイス %s を非アクティブにできません。" -#: src/cryptsetup.c:1484 +#: src/cryptsetup.c:1483 msgid "OPAL hw-only encryption does not support --cipher and --key-size, options ignored." msgstr "OPAL hw-only 暗号化は --cipher や --key-size をサポートしないため、無視されました。" -#: src/cryptsetup.c:1497 +#: src/cryptsetup.c:1496 msgid "Integrity option can be used only for LUKS2 format." msgstr "整合性オプションは LUKS2 形式でしか使えません。" -#: src/cryptsetup.c:1502 src/cryptsetup.c:1582 +#: src/cryptsetup.c:1501 src/cryptsetup.c:1581 msgid "Unsupported LUKS2 metadata size options." msgstr "サポートされていない LUKS2 メタデータのサイズオプションです。" -#: src/cryptsetup.c:1507 +#: src/cryptsetup.c:1506 msgid "OPAL is supported only for LUKS2 format." msgstr "OPAL は LUKS2 フォーマットでしかサポートされていません。" -#: src/cryptsetup.c:1512 +#: src/cryptsetup.c:1511 msgid "Inline hw tags are supported only for LUKS2 format." msgstr "インライン hw タグは LUKS2 フォーマットでしかサポートされていません。" -#: src/cryptsetup.c:1521 +#: src/cryptsetup.c:1520 msgid "Header file does not exist, do you want to create it?" msgstr "ヘッダファイルがありません。作成しますか?" -#: src/cryptsetup.c:1529 +#: src/cryptsetup.c:1528 #, c-format msgid "Cannot create header file %s." msgstr "ヘッダファイル %s を作成できません。" -#: src/cryptsetup.c:1555 src/integritysetup.c:126 src/integritysetup.c:141 +#: src/cryptsetup.c:1554 src/integritysetup.c:126 src/integritysetup.c:141 #: src/integritysetup.c:150 src/integritysetup.c:328 src/integritysetup.c:336 #: src/integritysetup.c:346 msgid "No known integrity specification pattern detected." msgstr "サポートしている整合性方式が検出されませんでした。" -#: src/cryptsetup.c:1557 +#: src/cryptsetup.c:1556 msgid "Cannot use specified integrity key size." msgstr "指定されたジャーナル整合性キーのサイズが使えません。" -#: src/cryptsetup.c:1575 +#: src/cryptsetup.c:1574 #, c-format msgid "Cannot use %s as on-disk header." msgstr "%s を on-disk ヘッダとして使えません。" -#: src/cryptsetup.c:1604 src/integritysetup.c:172 +#: src/cryptsetup.c:1603 src/integritysetup.c:172 #, c-format msgid "This will overwrite data on %s irrevocably." msgstr "%s のデータを上書きします。戻せません。" -#: src/cryptsetup.c:1641 +#: src/cryptsetup.c:1640 msgid "OPAL Admin password cannot be empty." msgstr "OPAL 管理者パスワードは空ではいけません。" -#: src/cryptsetup.c:1655 src/cryptsetup.c:2099 src/cryptsetup.c:2242 -#: src/cryptsetup.c:2377 src/cryptsetup.c:2443 src/utils_reencrypt_luks1.c:428 +#: src/cryptsetup.c:1654 src/cryptsetup.c:2098 src/cryptsetup.c:2241 +#: src/cryptsetup.c:2376 src/cryptsetup.c:2442 src/utils_reencrypt_luks1.c:428 msgid "Failed to set pbkdf parameters." msgstr "pbkdf パラメータを設定できません。" -#: src/cryptsetup.c:1786 +#: src/cryptsetup.c:1785 msgid "Reduced data offset is allowed only for detached LUKS header." msgstr "分離された LUKS ヘッダでのみ少ないデータオフセットが使えます。" -#: src/cryptsetup.c:1793 +#: src/cryptsetup.c:1792 #, c-format msgid "LUKS file container %s is too small for activation, there is no remaining space for data." msgstr "LUKS ファイルコンテナ %s がアクティベートするには小さすぎます。データ用の領域に空きがありません。" -#: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:277 +#: src/cryptsetup.c:1834 src/cryptsetup.c:2247 src/utils_reencrypt.c:277 #: src/utils_reencrypt.c:369 src/utils_reencrypt.c:1907 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "キースロットのない LUKS のボリュームキーサイズが決定できないので、--key-size を使ってください。" -#: src/cryptsetup.c:1854 src/utils_reencrypt.c:303 +#: src/cryptsetup.c:1853 src/utils_reencrypt.c:303 msgid "Device requires two volume keys." msgstr "デバイスには2つのボリュームキーが必要です。" -#: src/cryptsetup.c:1889 +#: src/cryptsetup.c:1888 msgid "Some specified activation parameters were ignored with OPAL hw-only encryption." msgstr "いくつかの指定されたアクティベーションパラメータは OPAL hw-only 暗号化では無視されました。" -#: src/cryptsetup.c:1894 +#: src/cryptsetup.c:1893 msgid "Device activated but cannot make flags persistent." msgstr "デバイスはアクティベートされましたが、フラグを恒常的なものにできません。" -#: src/cryptsetup.c:1974 src/cryptsetup.c:2042 +#: src/cryptsetup.c:1973 src/cryptsetup.c:2041 #, c-format msgid "Keyslot %d is selected for deletion." msgstr "キースロット %d は削除対象として選択されました。" -#: src/cryptsetup.c:1986 src/cryptsetup.c:2046 +#: src/cryptsetup.c:1985 src/cryptsetup.c:2045 msgid "This is the last keyslot. Device will become unusable after purging this key." msgstr "これは最後のキースロットです。このキーがなくなるとデバイスは使用不能になります。" -#: src/cryptsetup.c:1987 +#: src/cryptsetup.c:1986 msgid "Enter any remaining passphrase: " msgstr "残っているパスフレーズを入力してください: " -#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 +#: src/cryptsetup.c:1987 src/cryptsetup.c:2047 msgid "Operation aborted, the keyslot was NOT wiped.\n" msgstr "操作は中止されました。キースロットは消去されていません。\n" -#: src/cryptsetup.c:2024 +#: src/cryptsetup.c:2023 msgid "Enter passphrase to be deleted: " msgstr "削除するキーのパスフレーズを入力してください: " -#: src/cryptsetup.c:2074 src/cryptsetup.c:2426 src/cryptsetup.c:3086 -#: src/cryptsetup.c:3253 +#: src/cryptsetup.c:2073 src/cryptsetup.c:2425 src/cryptsetup.c:3085 +#: src/cryptsetup.c:3252 #, c-format msgid "Device %s is not a valid LUKS2 device." msgstr "デバイス %s は有効な LUKS2 デバイスではありません。" -#: src/cryptsetup.c:2113 src/cryptsetup.c:2312 +#: src/cryptsetup.c:2112 src/cryptsetup.c:2311 msgid "Enter new passphrase for key slot: " msgstr "キースロットの新しいパスフレーズを入力してください: " -#: src/cryptsetup.c:2147 src/utils_luks.c:342 +#: src/cryptsetup.c:2146 src/utils_luks.c:342 #, c-format msgid "Enter token PIN: " msgstr "トークンPINを入力してください: " -#: src/cryptsetup.c:2149 src/utils_luks.c:344 +#: src/cryptsetup.c:2148 src/utils_luks.c:344 #, c-format msgid "Enter token %d PIN: " msgstr "トークン %d PINを入力してください: " -#: src/cryptsetup.c:2208 +#: src/cryptsetup.c:2207 msgid "WARNING: The --key-slot parameter is used for new keyslot number.\n" msgstr "警告: --key-slot パラメータは新しいキースロット番号に使われます。\n" -#: src/cryptsetup.c:2285 src/utils_reencrypt_luks1.c:1094 +#: src/cryptsetup.c:2284 src/utils_reencrypt_luks1.c:1094 #, c-format msgid "Enter any existing passphrase: " msgstr "有効なパスフレーズをどれか入力してください: " -#: src/cryptsetup.c:2381 +#: src/cryptsetup.c:2380 msgid "Enter passphrase to be changed: " msgstr "変更するキーのパスフレーズを入力してください: " -#: src/cryptsetup.c:2397 src/utils_reencrypt_luks1.c:1080 +#: src/cryptsetup.c:2396 src/utils_reencrypt_luks1.c:1080 msgid "Enter new passphrase: " msgstr "新しいキーのパスフレーズを入力してください: " -#: src/cryptsetup.c:2447 +#: src/cryptsetup.c:2446 msgid "Enter passphrase for keyslot to be converted: " msgstr "変換されるキースロットのパスフレーズを入力してください: " -#: src/cryptsetup.c:2471 +#: src/cryptsetup.c:2470 msgid "Only one device argument for isLuks operation is supported." msgstr "isLuks は一つのデバイス引数しかサポートしていません。" -#: src/cryptsetup.c:2576 +#: src/cryptsetup.c:2575 #, c-format msgid "Keyslot %d does not contain unbound key." msgstr "キースロット %d は unbound キーを含んでいません。" -#: src/cryptsetup.c:2581 +#: src/cryptsetup.c:2580 msgid "" "The header dump with unbound key is sensitive information.\n" "This dump should be stored encrypted in a safe place." @@ -2534,52 +2529,52 @@ msgstr "" "unbound キーを使ったヘッダダンプは取り扱いに注意すべき情報です。\n" "このダンプは暗号化された安全な所に保存してください。" -#: src/cryptsetup.c:2676 src/cryptsetup.c:2712 +#: src/cryptsetup.c:2675 src/cryptsetup.c:2711 #, c-format msgid "%s is not active %s device name." msgstr "%s はアクティブな %s デバイスではありません。" -#: src/cryptsetup.c:2707 +#: src/cryptsetup.c:2706 #, c-format msgid "%s is not active LUKS device name or header is missing." msgstr "%s はアクティブな LUKS デバイス名ではないか、ヘッダがありません。" -#: src/cryptsetup.c:2784 src/cryptsetup.c:2803 +#: src/cryptsetup.c:2783 src/cryptsetup.c:2802 msgid "Option --header-backup-file is required." msgstr "オプション --header-backup-file が必要です。" -#: src/cryptsetup.c:2834 +#: src/cryptsetup.c:2833 #, c-format msgid "%s is not cryptsetup managed device." msgstr "%s は cryptsetup で管理されているデバイスではありません。" -#: src/cryptsetup.c:2845 +#: src/cryptsetup.c:2844 #, c-format msgid "Refresh is not supported for device type %s" msgstr "リフレッシュはデバイスタイプ %s ではサポートされていません。" -#: src/cryptsetup.c:2895 +#: src/cryptsetup.c:2894 #, c-format msgid "Unrecognized metadata device type %s." msgstr "%s は認識できないメタデータデータタイプです。" -#: src/cryptsetup.c:2897 +#: src/cryptsetup.c:2896 msgid "Command requires device and mapped name as arguments." msgstr "コマンドはデバイスとマップされた名前を引数として必要とします。" -#: src/cryptsetup.c:2915 +#: src/cryptsetup.c:2914 msgid "Enter OPAL PSID: " msgstr "OPAL PSID を入力してください: " -#: src/cryptsetup.c:2915 +#: src/cryptsetup.c:2914 msgid "Enter OPAL Admin password: " msgstr "OPAL 管理者パスワードを入力してください: " -#: src/cryptsetup.c:2923 +#: src/cryptsetup.c:2922 msgid "WARNING: WHOLE disk will be factory reset and all data will be lost! Continue?" msgstr "警告: ディスク「全体」が出荷状態にリセットされ、データは全て消失します!続けますか?" -#: src/cryptsetup.c:2966 +#: src/cryptsetup.c:2965 #, c-format msgid "" "This operation will erase all keyslots on device %s.\n" @@ -2588,363 +2583,363 @@ msgstr "" "この処理はデバイス %s の全てのキースロットを消去します。\n" "デバイスのデータは使用できなくなります。" -#: src/cryptsetup.c:2973 +#: src/cryptsetup.c:2972 msgid "Operation aborted, keyslots were NOT wiped.\n" msgstr "処理は中止されました。キースロットは消去されません。\n" -#: src/cryptsetup.c:3012 +#: src/cryptsetup.c:3011 msgid "Invalid LUKS type, only luks1 and luks2 are supported." msgstr "不正な LUKS タイプです。luks1 と luks2 しかサポートしていません。" -#: src/cryptsetup.c:3028 +#: src/cryptsetup.c:3027 #, c-format msgid "Device is already %s type." msgstr "デバイスは既にタイプ %s です。" -#: src/cryptsetup.c:3035 +#: src/cryptsetup.c:3034 #, c-format msgid "This operation will convert %s to %s format.\n" msgstr "この処理は %s から %s フォーマットに変換します。\n" -#: src/cryptsetup.c:3038 +#: src/cryptsetup.c:3037 msgid "Operation aborted, device was NOT converted.\n" msgstr "処理は中止されました。デバイスは変換されませんでした。\n" -#: src/cryptsetup.c:3078 +#: src/cryptsetup.c:3077 msgid "Option --priority, --label or --subsystem is missing." msgstr "オプション --priority, --label か --subsystem がありません。" -#: src/cryptsetup.c:3112 src/cryptsetup.c:3152 src/cryptsetup.c:3172 +#: src/cryptsetup.c:3111 src/cryptsetup.c:3151 src/cryptsetup.c:3171 #, c-format msgid "Token %d is invalid." msgstr "トークン %d は不正です。" -#: src/cryptsetup.c:3115 src/cryptsetup.c:3175 +#: src/cryptsetup.c:3114 src/cryptsetup.c:3174 #, c-format msgid "Token %d in use." msgstr "トークン %d は使用中です。" -#: src/cryptsetup.c:3127 +#: src/cryptsetup.c:3126 #, c-format msgid "Failed to add luks2-keyring token %d." msgstr "luks2-キーリングトークン %d を追加できませんでした。" -#: src/cryptsetup.c:3138 src/cryptsetup.c:3201 +#: src/cryptsetup.c:3137 src/cryptsetup.c:3200 #, c-format msgid "Failed to assign token %d to keyslot %d." msgstr "トークン %d をキースロット %d に割りあてられませんでした。" -#: src/cryptsetup.c:3155 +#: src/cryptsetup.c:3154 #, c-format msgid "Token %d is not in use." msgstr "トークン %d は使われていません。" -#: src/cryptsetup.c:3192 +#: src/cryptsetup.c:3191 msgid "Failed to import token from file." msgstr "ファイルからトークンをインポートできません。" -#: src/cryptsetup.c:3217 +#: src/cryptsetup.c:3216 #, c-format msgid "Failed to get token %d for export." msgstr "トークン %d をエクスポートのために取得できませんでした。" -#: src/cryptsetup.c:3230 +#: src/cryptsetup.c:3229 #, c-format msgid "Token %d is not assigned to keyslot %d." msgstr "トークン %d をキースロット %d に割りあてられませんでした。" -#: src/cryptsetup.c:3232 src/cryptsetup.c:3239 +#: src/cryptsetup.c:3231 src/cryptsetup.c:3238 #, c-format msgid "Failed to unassign token %d from keyslot %d." msgstr "トークン %d をキースロット %d の割り当てから解除できませんでした。" -#: src/cryptsetup.c:3298 +#: src/cryptsetup.c:3297 msgid "Option --tcrypt-hidden, --tcrypt-system or --tcrypt-backup is supported only for TCRYPT device." msgstr "--tcrypt-hidden と --tcrypt-system と --tcrypt-backup は TCRYPT デバイスしか使えません。" -#: src/cryptsetup.c:3301 +#: src/cryptsetup.c:3300 msgid "Option --veracrypt or --disable-veracrypt is supported only for TCRYPT device type." msgstr "--veracrypt や --disable-veracrypt は TCRYPT デバイスでしか使えません。" -#: src/cryptsetup.c:3304 +#: src/cryptsetup.c:3303 msgid "Option --veracrypt-pim is supported only for VeraCrypt compatible devices." msgstr "--veracrypt-pim は VeraCrypt 互換デバイスにしか使えません。" -#: src/cryptsetup.c:3308 +#: src/cryptsetup.c:3307 msgid "Option --veracrypt-query-pim is supported only for VeraCrypt compatible devices." msgstr "--veracrypt-query-pim は VeraCrypt 互換デバイスにしか使えません。" -#: src/cryptsetup.c:3310 +#: src/cryptsetup.c:3309 msgid "The options --veracrypt-pim and --veracrypt-query-pim are mutually exclusive." msgstr "--veracrypt-pim と --veracrypt-query-pim はどちらかしか使えません。" -#: src/cryptsetup.c:3319 +#: src/cryptsetup.c:3318 msgid "Option --persistent is not allowed with --test-passphrase." msgstr "--persistent は --test-passphrase と一緒には使えません。" -#: src/cryptsetup.c:3322 +#: src/cryptsetup.c:3321 msgid "Options --refresh and --test-passphrase are mutually exclusive." msgstr "--refresh と --test-passphrase は同時には使えません。" -#: src/cryptsetup.c:3325 +#: src/cryptsetup.c:3324 msgid "Option --shared is allowed only for open of plain device." msgstr "--shared は plain デバイスの open にしか使えません。" -#: src/cryptsetup.c:3328 +#: src/cryptsetup.c:3327 msgid "Option --skip is supported only for open of plain and loopaes devices." msgstr "--skip は plain か loopaes デバイスの open にしか使えません。" -#: src/cryptsetup.c:3331 +#: src/cryptsetup.c:3330 msgid "Option --offset with open action is only supported for plain and loopaes devices." msgstr "--offset は plain か loopaes デバイスの open にしか使えません。" -#: src/cryptsetup.c:3334 +#: src/cryptsetup.c:3333 msgid "Option --tcrypt-hidden cannot be combined with --allow-discards." msgstr "--tcrypt-hidden は --allow-discards と一緒に使えません。" -#: src/cryptsetup.c:3338 +#: src/cryptsetup.c:3337 msgid "Sector size option with open action is supported only for plain devices." msgstr "オープン時のセクタサイズオプションは plain デバイスでしかサポートされていません。" -#: src/cryptsetup.c:3342 +#: src/cryptsetup.c:3341 msgid "Large IV sectors option is supported only for opening plain type device with sector size larger than 512 bytes." msgstr "大きな IV セクタオプションは plain タイプでセクタサイズが 512 バイトより大きいものをオープンする時しかサポートしていません。" -#: src/cryptsetup.c:3347 +#: src/cryptsetup.c:3346 msgid "Option --test-passphrase is allowed only for open of LUKS, TCRYPT, BITLK and FVAULT2 devices." msgstr "--test-passphrase は LUKS か TCRYPT か BITLK か FVAULT2 デバイスの open にしか使えません。." -#: src/cryptsetup.c:3350 src/cryptsetup.c:3380 +#: src/cryptsetup.c:3349 src/cryptsetup.c:3379 msgid "Options --device-size and --size cannot be combined." msgstr "--device-size と --size は一緒に使えません。" -#: src/cryptsetup.c:3353 +#: src/cryptsetup.c:3352 msgid "Option --unbound is allowed only for open of luks device." msgstr "オプション --unbound は luks デバイスの open にしか使えません。" -#: src/cryptsetup.c:3356 +#: src/cryptsetup.c:3355 msgid "Option --unbound cannot be used without --test-passphrase." msgstr "オプション --unbound は --test-passphrase がないと使えません。" -#: src/cryptsetup.c:3360 +#: src/cryptsetup.c:3359 msgid "Option --volume-key-keyring cannot be combined with --hash or --volume-key-file." msgstr "--volume-key-keyring オプションは --hash や --volume-key-file と一緒には使えません。" -#: src/cryptsetup.c:3363 +#: src/cryptsetup.c:3362 msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "--volume-key-file オプションは対応する --key-size オプションとペアになる必要があります。" -#: src/cryptsetup.c:3372 src/veritysetup.c:673 src/integritysetup.c:787 +#: src/cryptsetup.c:3371 src/veritysetup.c:673 src/integritysetup.c:787 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "オプション --cancel-deferred と --deferred は同時に使えません。" -#: src/cryptsetup.c:3388 +#: src/cryptsetup.c:3387 msgid "Option --active-name can be set only for LUKS2 device." msgstr "オプション --active-nameは LUKS2 デバイスでしか設定できません。" -#: src/cryptsetup.c:3391 +#: src/cryptsetup.c:3390 msgid "Options --active-name and --force-offline-reencrypt cannot be combined." msgstr "オプション --active-name と --force-offline-reencrypt は一緒に使えません。" -#: src/cryptsetup.c:3394 +#: src/cryptsetup.c:3393 msgid "Options --new-volume-key-file and --keep-key cannot be combined." msgstr "--new-volume-key-file オプションと --keep-key は一緒に使えません。" -#: src/cryptsetup.c:3397 +#: src/cryptsetup.c:3396 msgid "Options --new-volume-key-keyring and --keep-key cannot be combined." msgstr "--new-volume-key-keyring オプションと --keep-key は一緒に使えません。" -#: src/cryptsetup.c:3405 src/cryptsetup.c:3435 +#: src/cryptsetup.c:3404 src/cryptsetup.c:3434 msgid "Keyslot specification is required." msgstr "キースロットの指定が必要です。" -#: src/cryptsetup.c:3413 +#: src/cryptsetup.c:3412 msgid "Options --align-payload and --offset cannot be combined." msgstr "--align-payload と --offset は一緒に使えません。" -#: src/cryptsetup.c:3416 +#: src/cryptsetup.c:3415 msgid "Option --integrity-no-wipe can be used only for format action with integrity extension." msgstr "--integrity-no-wipe は format で整合性拡張付きの時しか使えません。" -#: src/cryptsetup.c:3419 +#: src/cryptsetup.c:3418 msgid "Only one of --use-[u]random options is allowed." msgstr "--use-[u]random は一つしか使えません。" -#: src/cryptsetup.c:3427 +#: src/cryptsetup.c:3426 msgid "Key size is required with --unbound option." msgstr "--unbound にはキーサイズが必要です。" -#: src/cryptsetup.c:3447 +#: src/cryptsetup.c:3446 msgid "Invalid token action." msgstr "不正なトークンアクションです。" -#: src/cryptsetup.c:3450 +#: src/cryptsetup.c:3449 msgid "--key-description parameter is mandatory for token add action." msgstr "--key-description はトークン追加には必須です。" -#: src/cryptsetup.c:3454 src/cryptsetup.c:3467 +#: src/cryptsetup.c:3453 src/cryptsetup.c:3466 msgid "Action requires specific token. Use --token-id parameter." msgstr "トークンを必要としています。--token-id を使用してください。" -#: src/cryptsetup.c:3458 +#: src/cryptsetup.c:3457 msgid "Option --unbound is valid only with token add action." msgstr "オプション --unbound はトークンの追加にしか使えません。" -#: src/cryptsetup.c:3460 +#: src/cryptsetup.c:3459 msgid "Options --key-slot and --unbound cannot be combined." msgstr "--key-slot と --unbound は一緒に使えません。" -#: src/cryptsetup.c:3465 +#: src/cryptsetup.c:3464 msgid "Action requires specific keyslot. Use --key-slot parameter." msgstr "特定のキースロットを必要としています。--key-slot を使用してください。" -#: src/cryptsetup.c:3481 +#: src/cryptsetup.c:3480 msgid " [--type ] []" msgstr "<デバイス> [--type <タイプ>] [<名前>]" -#: src/cryptsetup.c:3481 src/veritysetup.c:487 src/integritysetup.c:554 +#: src/cryptsetup.c:3480 src/veritysetup.c:487 src/integritysetup.c:554 msgid "open device as " msgstr "デバイスを <名前> としてオープン" -#: src/cryptsetup.c:3482 src/cryptsetup.c:3483 src/cryptsetup.c:3484 +#: src/cryptsetup.c:3481 src/cryptsetup.c:3482 src/cryptsetup.c:3483 #: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:555 #: src/integritysetup.c:556 src/integritysetup.c:558 msgid "" msgstr "<名前>" -#: src/cryptsetup.c:3482 src/veritysetup.c:488 src/integritysetup.c:555 +#: src/cryptsetup.c:3481 src/veritysetup.c:488 src/integritysetup.c:555 msgid "close device (remove mapping)" msgstr "デバイスをクローズします (マッピングを削除します)" -#: src/cryptsetup.c:3483 src/integritysetup.c:558 +#: src/cryptsetup.c:3482 src/integritysetup.c:558 msgid "resize active device" msgstr "アクティブデバイスをリサイズ" -#: src/cryptsetup.c:3484 +#: src/cryptsetup.c:3483 msgid "show device status" msgstr "デバイスステータスを表示" -#: src/cryptsetup.c:3485 +#: src/cryptsetup.c:3484 msgid "[--cipher ]" msgstr "[--cipher <暗号>]" -#: src/cryptsetup.c:3485 +#: src/cryptsetup.c:3484 msgid "benchmark cipher" msgstr "暗号ベンチマーク" -#: src/cryptsetup.c:3486 src/cryptsetup.c:3487 src/cryptsetup.c:3488 -#: src/cryptsetup.c:3489 src/cryptsetup.c:3490 src/cryptsetup.c:3497 -#: src/cryptsetup.c:3498 src/cryptsetup.c:3499 src/cryptsetup.c:3500 -#: src/cryptsetup.c:3501 src/cryptsetup.c:3502 src/cryptsetup.c:3503 -#: src/cryptsetup.c:3504 src/cryptsetup.c:3505 src/cryptsetup.c:3506 +#: src/cryptsetup.c:3485 src/cryptsetup.c:3486 src/cryptsetup.c:3487 +#: src/cryptsetup.c:3488 src/cryptsetup.c:3489 src/cryptsetup.c:3496 +#: src/cryptsetup.c:3497 src/cryptsetup.c:3498 src/cryptsetup.c:3499 +#: src/cryptsetup.c:3500 src/cryptsetup.c:3501 src/cryptsetup.c:3502 +#: src/cryptsetup.c:3503 src/cryptsetup.c:3504 src/cryptsetup.c:3505 msgid "" msgstr "<デバイス>" -#: src/cryptsetup.c:3486 +#: src/cryptsetup.c:3485 msgid "try to repair on-disk metadata" msgstr "on-disk メタデータを修復しようとしています" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3486 msgid "reencrypt LUKS2 device" msgstr "LUKS2 デバイスを再暗号化" -#: src/cryptsetup.c:3488 +#: src/cryptsetup.c:3487 msgid "erase all keyslots (remove encryption key)" msgstr "全てのキースロットを消去します (暗号鍵も削除します)" -#: src/cryptsetup.c:3489 +#: src/cryptsetup.c:3488 msgid "convert LUKS from/to LUKS2 format" msgstr "LUKS2 から LUKS もしくは LUKS から LUKS2 形式に変換します" -#: src/cryptsetup.c:3490 +#: src/cryptsetup.c:3489 msgid "set permanent configuration options for LUKS2" msgstr "LUKS2 の permanent configuration オプションを設定します" -#: src/cryptsetup.c:3491 src/cryptsetup.c:3492 +#: src/cryptsetup.c:3490 src/cryptsetup.c:3491 msgid " []" msgstr "<デバイス> [<新しいキーファイル>]" -#: src/cryptsetup.c:3491 +#: src/cryptsetup.c:3490 msgid "formats a LUKS device" msgstr "LUKS デバイスをフォーマットします" -#: src/cryptsetup.c:3492 +#: src/cryptsetup.c:3491 msgid "add key to LUKS device" msgstr "LUKS デバイスにキーを追加します" -#: src/cryptsetup.c:3493 src/cryptsetup.c:3494 src/cryptsetup.c:3495 +#: src/cryptsetup.c:3492 src/cryptsetup.c:3493 src/cryptsetup.c:3494 msgid " []" msgstr "<デバイス> [<キーファイル>]" -#: src/cryptsetup.c:3493 +#: src/cryptsetup.c:3492 msgid "removes supplied key or key file from LUKS device" msgstr "与えられたキーかキーファイルを LUKS デバイスから削除します。" -#: src/cryptsetup.c:3494 +#: src/cryptsetup.c:3493 msgid "changes supplied key or key file of LUKS device" msgstr "与えられた LUKS デバイスのキーかキーファイルを変更します" -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3494 msgid "converts a key to new pbkdf parameters" msgstr "キーを新しい pbkdf パラメータに変換します" -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3495 msgid " " msgstr "<デバイス> <キースロット>" -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3495 msgid "wipes key with number from LUKS device" msgstr "<キースロット>のキーを LUKS デバイスから削除します" -#: src/cryptsetup.c:3497 +#: src/cryptsetup.c:3496 msgid "print UUID of LUKS device" msgstr "LUKS デバイスの UUID を表示" -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3497 msgid "tests for LUKS partition header" msgstr "<デバイス> の LUKS パーティションヘッダをテストします" -#: src/cryptsetup.c:3499 +#: src/cryptsetup.c:3498 msgid "dump LUKS partition information" msgstr "LUKS パーティション情報をダンプします" -#: src/cryptsetup.c:3500 +#: src/cryptsetup.c:3499 msgid "dump TCRYPT device information" msgstr "TCRYPT デバイス情報をダンプします" -#: src/cryptsetup.c:3501 +#: src/cryptsetup.c:3500 msgid "dump BITLK device information" msgstr "BITLK デバイス情報をダンプします" -#: src/cryptsetup.c:3502 +#: src/cryptsetup.c:3501 msgid "dump FVAULT2 device information" msgstr "FVAULT2 デバイス情報をダンプします" -#: src/cryptsetup.c:3503 +#: src/cryptsetup.c:3502 msgid "Suspend LUKS device and wipe key (all IOs are frozen)" msgstr "LUKS デバイスを停止してキーを削除します (全てのI/Oは停止します)" -#: src/cryptsetup.c:3504 +#: src/cryptsetup.c:3503 msgid "Resume suspended LUKS device" msgstr "停止していた LUKS デバイスを再開します" -#: src/cryptsetup.c:3505 +#: src/cryptsetup.c:3504 msgid "Backup LUKS device header and keyslots" msgstr "LUKS デバイスヘッダとキースロットをバックアップします" -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3505 msgid "Restore LUKS device header and keyslots" msgstr "LUKS デバイスヘッダとキースロットをリストアします" -#: src/cryptsetup.c:3507 +#: src/cryptsetup.c:3506 msgid " " msgstr " <デバイス>" -#: src/cryptsetup.c:3507 +#: src/cryptsetup.c:3506 msgid "Manipulate LUKS2 tokens" msgstr "LUKS2 トークンを操作します" -#: src/cryptsetup.c:3526 src/veritysetup.c:505 src/integritysetup.c:573 +#: src/cryptsetup.c:3525 src/veritysetup.c:505 src/integritysetup.c:573 msgid "" "\n" " is one of:\n" @@ -2952,7 +2947,7 @@ msgstr "" "\n" " は以下のうちの一つです:\n" -#: src/cryptsetup.c:3532 +#: src/cryptsetup.c:3531 msgid "" "\n" "You can also use old syntax aliases:\n" @@ -2964,7 +2959,7 @@ msgstr "" "\topen: create (plainOpen), luksOpen, loopaesOpen, tcryptOpen, bitlkOpen, fvault2Open\n" "\tclose: remove (plainClose), luksClose, loopaesClose, tcryptClose, bitlkClose, fvault2Close\n" -#: src/cryptsetup.c:3536 +#: src/cryptsetup.c:3535 #, c-format msgid "" "\n" @@ -2979,7 +2974,7 @@ msgstr "" "<キースロット> は変更する LUKS キースロット番号\n" "<キーファイル> は luskAddKey でオプションで与えられる新しいキーのキーファイル\n" -#: src/cryptsetup.c:3543 +#: src/cryptsetup.c:3542 #, c-format msgid "" "\n" @@ -2988,7 +2983,7 @@ msgstr "" "\n" "デフォルトのコンパイル時に決められたメタデータ形式は %s です(luksFormat で使われます)。\n" -#: src/cryptsetup.c:3548 +#: src/cryptsetup.c:3547 msgid "" "\n" "LUKS2 external token plugin support is enabled.\n" @@ -2996,12 +2991,12 @@ msgstr "" "\n" "LUKS2 外部トークンプラグインサポートは有効です。\n" -#: src/cryptsetup.c:3549 +#: src/cryptsetup.c:3548 #, c-format msgid "LUKS2 external token plugin path: %s.\n" msgstr "LUKS2 外部トークンプラグインパス: %s.\n" -#: src/cryptsetup.c:3551 +#: src/cryptsetup.c:3550 msgid "" "\n" "LUKS2 external token plugin support is disabled.\n" @@ -3009,7 +3004,7 @@ msgstr "" "\n" "LUKS2 外部トークンプラグインサポートは無効です。\n" -#: src/cryptsetup.c:3555 +#: src/cryptsetup.c:3554 #, c-format msgid "" "\n" @@ -3026,7 +3021,7 @@ msgstr "" "デフォルト LUKS2 向け PBKDF: %s\n" "\t繰り返す時間: %d, 使うメモリ: %dkB, 並列スレッド: %d\n" -#: src/cryptsetup.c:3566 +#: src/cryptsetup.c:3565 #, c-format msgid "" "\n" @@ -3041,122 +3036,122 @@ msgstr "" "\tplain: %s, キー: %d ビット, パスワードハッシュ: %s\n" "\tLUKS: %s, キー: %d ビット, LUKS ヘッダハッシュ: %s, 乱数生成: %s\n" -#: src/cryptsetup.c:3575 +#: src/cryptsetup.c:3574 msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: XTS モードのデフォルトキーサイズは (2つの内部キーがあるため) 倍になります。\n" -#: src/cryptsetup.c:3593 src/veritysetup.c:647 src/integritysetup.c:733 +#: src/cryptsetup.c:3592 src/veritysetup.c:647 src/integritysetup.c:733 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: は %s を引数で与える必要があります" -#: src/cryptsetup.c:3633 src/utils_reencrypt_luks1.c:1143 +#: src/cryptsetup.c:3632 src/utils_reencrypt_luks1.c:1143 msgid "Key slot is invalid." msgstr "キースロットは不正です。" -#: src/cryptsetup.c:3661 +#: src/cryptsetup.c:3660 msgid "Device size must be multiple of 512 bytes sector." msgstr "デバイスサイズは 512 バイトセクタの倍数である必要があります。" -#: src/cryptsetup.c:3666 +#: src/cryptsetup.c:3665 msgid "Invalid max reencryption hotzone size specification." msgstr "再暗号化ホットゾーン最大サイズの指定が不正です。" -#: src/cryptsetup.c:3680 src/cryptsetup.c:3697 src/cryptsetup.c:3709 +#: src/cryptsetup.c:3679 src/cryptsetup.c:3696 src/cryptsetup.c:3708 msgid "Key size must be a multiple of 8 bits" msgstr "キーサイズは 8bit の倍数でなければなりません" -#: src/cryptsetup.c:3687 +#: src/cryptsetup.c:3686 msgid "At most 2 key size specifications can be supplied." msgstr "多くても2つのキーサイズ設定しか指定できません。" -#: src/cryptsetup.c:3716 src/cryptsetup.c:3727 +#: src/cryptsetup.c:3715 src/cryptsetup.c:3726 #, c-format msgid "At most %d volume key specifications can be supplied." msgstr "多くても %d 個のボリュームキーしか指定できません。" -#: src/cryptsetup.c:3739 +#: src/cryptsetup.c:3738 #, c-format msgid "At most %d keyring link specifications can be supplied." msgstr "多くても %d 個のキーリングリンクしか指定できません。" -#: src/cryptsetup.c:3748 +#: src/cryptsetup.c:3747 msgid "Maximum device reduce size is 1 GiB." msgstr "デバイスを減らせる最大値は 1 GiB です。" -#: src/cryptsetup.c:3751 +#: src/cryptsetup.c:3750 msgid "Reduce size must be multiple of 512 bytes sector." msgstr "減らすサイズは 512 バイトセクタの倍数である必要があります。" -#: src/cryptsetup.c:3768 +#: src/cryptsetup.c:3767 msgid "Option --priority can be only ignore/normal/prefer." msgstr "--priority の引数は ignore/normal/prefer のいずれかのみです。" -#: src/cryptsetup.c:3787 src/veritysetup.c:568 src/integritysetup.c:653 +#: src/cryptsetup.c:3786 src/veritysetup.c:568 src/integritysetup.c:653 msgid "Show this help message" msgstr "このヘルプを表示します" -#: src/cryptsetup.c:3788 src/veritysetup.c:569 src/integritysetup.c:654 +#: src/cryptsetup.c:3787 src/veritysetup.c:569 src/integritysetup.c:654 msgid "Display brief usage" msgstr "コンパクトな使用法表示をします" -#: src/cryptsetup.c:3789 src/veritysetup.c:570 src/integritysetup.c:655 +#: src/cryptsetup.c:3788 src/veritysetup.c:570 src/integritysetup.c:655 msgid "Print package version" msgstr "パッケージのバージョンを表示" -#: src/cryptsetup.c:3800 src/veritysetup.c:581 src/integritysetup.c:666 +#: src/cryptsetup.c:3799 src/veritysetup.c:581 src/integritysetup.c:666 msgid "Help options:" msgstr "ヘルプオプション:" -#: src/cryptsetup.c:3823 src/veritysetup.c:602 src/integritysetup.c:686 +#: src/cryptsetup.c:3822 src/veritysetup.c:602 src/integritysetup.c:686 msgid "[OPTION...] " msgstr "[オプション...] <アクション> <アクション特有>" -#: src/cryptsetup.c:3832 src/veritysetup.c:611 src/integritysetup.c:697 +#: src/cryptsetup.c:3831 src/veritysetup.c:611 src/integritysetup.c:697 msgid "Argument missing." msgstr "<アクション> がありません。" -#: src/cryptsetup.c:3911 src/veritysetup.c:642 src/integritysetup.c:728 +#: src/cryptsetup.c:3910 src/veritysetup.c:642 src/integritysetup.c:728 msgid "Unknown action." msgstr "未知のアクションです。" -#: src/cryptsetup.c:3929 +#: src/cryptsetup.c:3928 msgid "Option --key-file takes precedence over specified key file argument." msgstr "--key-file は他で指定されたキーファイルを上書きします。" -#: src/cryptsetup.c:3935 +#: src/cryptsetup.c:3934 msgid "Only one --key-file argument is allowed." msgstr "--key-file は一つしか使えません。" -#: src/cryptsetup.c:3940 +#: src/cryptsetup.c:3939 msgid "Password-based key derivation function (PBKDF) can be only pbkdf2 or argon2i/argon2id." msgstr "パスワードからキーを作る関数 (PBKDF) は pbkdf2 argon2i argon2id のいずれかのみです。" -#: src/cryptsetup.c:3945 +#: src/cryptsetup.c:3944 msgid "PBKDF forced iterations cannot be combined with iteration time option." msgstr "PBKDF の繰り返し回数の強制と繰り返し時間指定オプションは共存できません。" -#: src/cryptsetup.c:3950 +#: src/cryptsetup.c:3949 msgid "Cannot link volume key to a keyring when keyring is disabled." msgstr "キーリングが無効化されているためボリュームキーをキーリングにリンクできません。" -#: src/cryptsetup.c:3955 +#: src/cryptsetup.c:3954 msgid "Cannot use keyring key description when keyring is disabled." msgstr "キーリングが無効化されているためキーリングキー記述を使えません。" -#: src/cryptsetup.c:3960 +#: src/cryptsetup.c:3959 msgid "Inline integrity must be used together with --integrity option." msgstr "インライン整合性拡張は --integrity オプション付きの時しか使えません。" -#: src/cryptsetup.c:3971 +#: src/cryptsetup.c:3970 msgid "Options --keyslot-cipher and --keyslot-key-size must be used together." msgstr "--keyslot-cipher と --keyslot-key-size は同時に使う必要があります。" -#: src/cryptsetup.c:3979 +#: src/cryptsetup.c:3978 msgid "No action taken. Invoked with --test-args option.\n" msgstr "--test-args オプションつきだったため、何もしません。\n" -#: src/cryptsetup.c:3992 +#: src/cryptsetup.c:3991 msgid "Cannot disable metadata locking." msgstr "メタデータロックを禁止できません。" From a6ea67d47a8915a8ec827212fa70e5c1b28a6163 Mon Sep 17 00:00:00 2001 From: Jakub Bogusz Date: Sat, 4 Jul 2026 18:12:56 +0200 Subject: [PATCH 164/244] po: update pl.po (from translationproject.org) --- po/pl.po | 1013 +++++++++++++++++++++++++++--------------------------- 1 file changed, 504 insertions(+), 509 deletions(-) diff --git a/po/pl.po b/po/pl.po index c72e7c39b..d3970610c 100644 --- a/po/pl.po +++ b/po/pl.po @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.5-rc0\n" +"Project-Id-Version: cryptsetup 2.8.7-rc1\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2026-03-30 14:18+0200\n" -"PO-Revision-Date: 2026-03-30 17:31+0200\n" +"POT-Creation-Date: 2026-06-29 21:30+0200\n" +"PO-Revision-Date: 2026-07-03 19:35+0200\n" "Last-Translator: Jakub Bogusz \n" "Language-Team: Polish \n" "Language: pl\n" @@ -77,7 +77,7 @@ msgid "Requested automatic recalculation of integrity tags is not supported." msgstr "Żądane automatyczne przeliczenie znaczników integralności nie jest obsługiwane." #: lib/libdevmapper.c:1802 lib/libdevmapper.c:1856 lib/libdevmapper.c:1859 -#: lib/luks2/luks2_json_metadata.c:2781 +#: lib/luks2/luks2_json_metadata.c:2799 msgid "Discard/TRIM is not supported." msgstr "Porzucenie/TRIM nie jest obsługiwane." @@ -123,665 +123,665 @@ msgstr "Nieznane żądanie jakości RNG." msgid "Error reading from RNG." msgstr "Błąd odczytu z RNG." -#: lib/setup.c:248 +#: lib/setup.c:251 msgid "OPAL support is disabled in libcryptsetup." msgstr "Obsługa OPAL jest wyłączona w libcryptsetup." -#: lib/setup.c:250 +#: lib/setup.c:253 #, c-format msgid "Device %s or kernel does not support OPAL encryption." msgstr "Urządzenie %s lub jądro nie obsługuje szyfrowania OPAL." -#: lib/setup.c:266 +#: lib/setup.c:269 msgid "Cannot initialize crypto RNG backend." msgstr "Nie można zainicjować backendu kryptograficznego RNG." -#: lib/setup.c:272 +#: lib/setup.c:275 msgid "Cannot initialize crypto backend." msgstr "Nie można zainicjować backendu kryptograficznego." -#: lib/setup.c:305 lib/setup.c:2766 lib/verity/verity.c:109 +#: lib/setup.c:308 lib/setup.c:2769 lib/verity/verity.c:109 #, c-format msgid "Hash algorithm %s not supported." msgstr "Algorytm skrótu %s nie jest obsługiwany." -#: lib/setup.c:308 lib/loopaes/loopaes.c:78 +#: lib/setup.c:311 lib/loopaes/loopaes.c:78 #, c-format msgid "Key processing error (using hash %s)." msgstr "Błąd przetwarzania klucza (użyto algorytmu skrótu %s)." -#: lib/setup.c:389 lib/setup.c:426 +#: lib/setup.c:392 lib/setup.c:429 msgid "Cannot determine device type. Incompatible activation of device?" msgstr "Nie można określić rodzaju urządzenia. Niezgodny sposób uaktywniania urządzenia?" -#: lib/setup.c:395 lib/setup.c:4160 +#: lib/setup.c:398 lib/setup.c:4177 msgid "This operation is supported only for LUKS device." msgstr "Ta operacja jest obsługiwana tylko dla urządzeń LUKS." -#: lib/setup.c:432 +#: lib/setup.c:435 msgid "This operation is supported only for LUKS2 device." msgstr "Ta operacja jest obsługiwana tylko dla urządzeń LUKS2." -#: lib/setup.c:489 lib/luks2/luks2_reencrypt.c:3101 +#: lib/setup.c:492 lib/luks2/luks2_reencrypt.c:3102 msgid "All key slots full." msgstr "Wszyskie miejsca na klucze są pełne." -#: lib/setup.c:500 +#: lib/setup.c:503 #, c-format msgid "Key slot %d is invalid, please select between 0 and %d." msgstr "Numer klucza %d jest błędny, proszę wybrać wartość między 0 a %d." -#: lib/setup.c:506 +#: lib/setup.c:509 #, c-format msgid "Key slot %d is full, please select another one." msgstr "Miejsce na klucz %d jest pełne, proszę wybrać inne." -#: lib/setup.c:531 lib/setup.c:3875 +#: lib/setup.c:534 lib/setup.c:3878 msgid "Device size is not aligned to device logical block size." msgstr "Rozmiar urządzenia nie jest wyrównany do rozmiaru bloku logicznego urządzenia." -#: lib/setup.c:628 +#: lib/setup.c:631 #, c-format msgid "Header detected but device %s is too small." msgstr "Wykryto nagłówek, ale urządzenie %s jest zbyt małe." -#: lib/setup.c:669 lib/setup.c:3760 lib/setup.c:5238 -#: lib/luks2/luks2_reencrypt.c:3948 lib/luks2/luks2_reencrypt.c:4437 +#: lib/setup.c:672 lib/setup.c:3763 lib/setup.c:5272 +#: lib/luks2/luks2_reencrypt.c:3949 lib/luks2/luks2_reencrypt.c:4438 msgid "This operation is not supported for this device type." msgstr "Ta operacja nie jest obsługiwana dla tego rodzaju urządzenia." -#: lib/setup.c:674 +#: lib/setup.c:677 msgid "Illegal operation with reencryption in-progress." msgstr "Niedozwolona operacja w trakcie ponownego szyfrowania." -#: lib/setup.c:806 +#: lib/setup.c:809 msgid "Failed to rollback LUKS2 metadata in memory." msgstr "Nie udało się wycofać zmian w metadanych LUKS2 w pamięci." -#: lib/setup.c:893 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 -#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 -#: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 -#: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2953 -#: src/cryptsetup.c:3021 src/utils_reencrypt.c:2281 +#: lib/setup.c:896 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 +#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1779 +#: src/cryptsetup.c:1963 src/cryptsetup.c:2018 src/cryptsetup.c:2216 +#: src/cryptsetup.c:2361 src/cryptsetup.c:2639 src/cryptsetup.c:2952 +#: src/cryptsetup.c:3020 src/utils_reencrypt.c:2281 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." msgstr "Urządzenie %s nie jest prawidłowym urządzeniem LUKS." -#: lib/setup.c:896 lib/luks1/keymanage.c:517 +#: lib/setup.c:899 lib/luks1/keymanage.c:517 #, c-format msgid "Unsupported LUKS version %d." msgstr "Nieobsługiwana wersja LUKS %d." -#: lib/setup.c:1270 +#: lib/setup.c:1273 #, c-format msgid "No known cipher specification pattern detected for active device %s." msgstr "Nie wykryto znanego wzorca określającego szyfr dla aktywnego urządzenia %s." -#: lib/setup.c:1515 lib/setup.c:3507 lib/setup.c:3599 lib/setup.c:3611 -#: lib/setup.c:3783 lib/setup.c:5816 +#: lib/setup.c:1518 lib/setup.c:3510 lib/setup.c:3602 lib/setup.c:3614 +#: lib/setup.c:3786 lib/setup.c:5850 #, c-format msgid "Device %s is not active." msgstr "Urządzenie %s nie jest aktywne." -#: lib/setup.c:1532 +#: lib/setup.c:1535 #, c-format msgid "Underlying device for crypt device %s disappeared." msgstr "Urządzenie stojące za urządzeniem szyfrowanym %s zniknęło." -#: lib/setup.c:1614 +#: lib/setup.c:1617 msgid "Invalid plain crypt parameters." msgstr "Błędne parametry szyfru plain." -#: lib/setup.c:1619 lib/setup.c:2669 +#: lib/setup.c:1622 lib/setup.c:2672 msgid "Invalid key size." msgstr "Błędny rozmiar klucza." -#: lib/setup.c:1624 lib/setup.c:2674 lib/setup.c:2879 +#: lib/setup.c:1627 lib/setup.c:2677 lib/setup.c:2882 msgid "UUID is not supported for this crypt type." msgstr "UUID nie jest obsługiwany dla tego rodzaju szyfrowania." -#: lib/setup.c:1629 lib/setup.c:2679 +#: lib/setup.c:1632 lib/setup.c:2682 msgid "Detached metadata device is not supported for this crypt type." msgstr "Osobne urządzenie metadanych nie jest obsługiwane dla tego rodzaju szyfrowania." -#: lib/setup.c:1639 lib/setup.c:1887 lib/luks2/luks2_reencrypt.c:3034 -#: src/cryptsetup.c:1492 src/cryptsetup.c:3760 +#: lib/setup.c:1642 lib/setup.c:1890 lib/luks2/luks2_reencrypt.c:3035 +#: src/cryptsetup.c:1491 src/cryptsetup.c:3759 msgid "Unsupported encryption sector size." msgstr "Nieobsługiwany rozmiar sektora szyfrowania." -#: lib/setup.c:1647 lib/setup.c:1916 lib/setup.c:3869 +#: lib/setup.c:1650 lib/setup.c:1919 lib/setup.c:3872 msgid "Device size is not aligned to requested sector size." msgstr "Rozmiar urządzenia nie jest wyrównany do żądanego rozmiaru sektura." -#: lib/setup.c:1699 lib/setup.c:1951 lib/setup.c:2328 +#: lib/setup.c:1702 lib/setup.c:1954 lib/setup.c:2331 msgid "Can't format LUKS without device." msgstr "Nie można sformatować LUKS-a bez urządzenia." -#: lib/setup.c:1704 lib/setup.c:1956 +#: lib/setup.c:1707 lib/setup.c:1959 #, c-format msgid "Zoned device %s cannot be used for LUKS header." msgstr "Urządzenie Zoned %s nie może być używane dla nagłówka LUKS." -#: lib/setup.c:1711 lib/setup.c:1963 lib/setup.c:2334 +#: lib/setup.c:1714 lib/setup.c:1966 lib/setup.c:2337 msgid "Requested data alignment is not compatible with data offset." msgstr "Żądane wyrównanie metadanych nie jest zgodne z offsetem danych." -#: lib/setup.c:1751 lib/setup.c:1981 +#: lib/setup.c:1754 lib/setup.c:1984 msgid "WARNING: DAX device can corrupt data as it does not guarantee atomic sector updates.\n" msgstr "UWAGA: urządzenie DAX może uszkodzić dane, ponieważ nie gwarantuje atomowych uaktualnień sektorów.\n" -#: lib/setup.c:1789 lib/setup.c:2088 lib/setup.c:2109 lib/setup.c:2517 -#: lib/setup.c:2564 lib/setup.c:2896 +#: lib/setup.c:1792 lib/setup.c:2091 lib/setup.c:2112 lib/setup.c:2520 +#: lib/setup.c:2567 lib/setup.c:2899 #, c-format msgid "Cannot wipe header on device %s." msgstr "Nie można wymazać nagłówka na urządzeniu %s." -#: lib/setup.c:1802 lib/setup.c:2161 +#: lib/setup.c:1805 lib/setup.c:2164 #, c-format msgid "Device %s is too small for activation, there is no remaining space for data.\n" msgstr "Urządzenie %s jest zbyt małe do uaktywnienia, nie ma miejsca pozostałego na dane.\n" -#: lib/setup.c:1843 +#: lib/setup.c:1846 msgid "Volume key is too small for encryption with integrity extensions." msgstr "Klucz wolumenu jest zbyt mały do szyfrowania z rozszerzeniami integralności." -#: lib/setup.c:1847 +#: lib/setup.c:1850 msgid "Integrity key size is too small." msgstr "Rozmiar klucza integralności jest zbyt mały." -#: lib/setup.c:1856 +#: lib/setup.c:1859 #, c-format msgid "Cipher %s-%s (key size %zd bits) is not available." msgstr "Szyfr %s-%s (rozmiar klucza w bitach: %zd) nie jest dostępny." -#: lib/setup.c:1897 +#: lib/setup.c:1900 msgid "WARNING: The device activation will fail, dm-crypt is missing support for requested encryption sector size.\n" msgstr "UWAGA: uaktywnienie urządzenia się nie powiedzie, dm-crypt nie ma obsługi żądanego rozmiaru sektora szyfrowania.\n" -#: lib/setup.c:2091 lib/setup.c:2458 lib/setup.c:2520 lib/utils_device.c:906 -#: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3073 -#: lib/luks2/luks2_reencrypt.c:4497 +#: lib/setup.c:2094 lib/setup.c:2461 lib/setup.c:2523 lib/utils_device.c:906 +#: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3074 +#: lib/luks2/luks2_reencrypt.c:4498 #, c-format msgid "Device %s is too small." msgstr "Urządzenie %s jest zbyt małe." -#: lib/setup.c:2102 lib/setup.c:2141 lib/setup.c:2557 lib/setup.c:2615 +#: lib/setup.c:2105 lib/setup.c:2144 lib/setup.c:2560 lib/setup.c:2618 #, c-format msgid "Cannot format device %s in use." msgstr "Nie można sformatować urządzenia %s, które jest w użyciu." -#: lib/setup.c:2105 lib/setup.c:2144 lib/setup.c:2560 lib/setup.c:2618 +#: lib/setup.c:2108 lib/setup.c:2147 lib/setup.c:2563 lib/setup.c:2621 #, c-format msgid "Cannot format device %s, permission denied." msgstr "Nie można sformatować urządzenia %s, brak uprawnień." -#: lib/setup.c:2129 lib/setup.c:2587 lib/setup.c:2969 +#: lib/setup.c:2132 lib/setup.c:2590 lib/setup.c:2972 #, c-format msgid "Cannot format integrity for device %s." msgstr "Nie można sformatować integralności dla urządzenia %s." -#: lib/setup.c:2148 lib/setup.c:2626 +#: lib/setup.c:2151 lib/setup.c:2629 #, c-format msgid "Cannot format device %s." msgstr "Nie można sformatować urządzenia %s." -#: lib/setup.c:2191 +#: lib/setup.c:2194 msgid "Cannot get OPAL alignment parameters." msgstr "Nie można pobrać parametrów wyrównania OPAL." -#: lib/setup.c:2203 +#: lib/setup.c:2206 msgid "Bogus OPAL logical block size." msgstr "Błędny rozmiar bloku logicznego OPAL." -#: lib/setup.c:2208 lib/luks2/hw_opal/hw_opal.c:305 +#: lib/setup.c:2211 lib/luks2/hw_opal/hw_opal.c:305 msgid "Bogus OPAL logical block size differs from device block size." msgstr "Błędny rozmiar bloku logicznego OPAL różni się od rozmiaru bloku urządzenia." -#: lib/setup.c:2214 +#: lib/setup.c:2217 msgid "Requested data offset is not compatible with OPAL block size." msgstr "Żądana pozycja danych nie jest zgodna z rozmiarem bloku OPAL." -#: lib/setup.c:2221 +#: lib/setup.c:2224 msgid "Requested data alignment is not compatible with OPAL alignment." msgstr "Żądane wyrównanie danych nie jest zgodne z wyrównaniem OPAL." -#: lib/setup.c:2241 +#: lib/setup.c:2244 msgid "Data offset does not satisfy OPAL alignment requirements." msgstr "Pozycja danych nie jest zgodna z wymaganiami wyrównania OPAL." -#: lib/setup.c:2254 +#: lib/setup.c:2257 msgid "Requested data alignment does not satisfy locking range alignment requirements." msgstr "Żądane wyrównanie danych nie jest zgodne z wymaganiami wyrównania zakresu blokowania." -#: lib/setup.c:2468 +#: lib/setup.c:2471 #, c-format msgid "Compensating device size by % sectors to align it with OPAL alignment granularity." msgstr "Kompensacja rozmiaru urządzenia o % sektorów, aby wyrównać do rozdzielczości wyrównania OPAL." -#: lib/setup.c:2528 lib/setup.c:4243 lib/setup.c:4432 lib/utils_wipe.c:356 -#: lib/luks2/luks2_json_metadata.c:2724 lib/luks2/luks2_json_metadata.c:2992 +#: lib/setup.c:2531 lib/setup.c:4260 lib/setup.c:4466 lib/utils_wipe.c:356 +#: lib/luks2/luks2_json_metadata.c:2742 lib/luks2/luks2_json_metadata.c:3017 #, c-format msgid "Failed to acquire OPAL lock on device %s." msgstr "Nie udało się uzyskać blokady OPAL na urządzeniu %s." -#: lib/setup.c:2538 +#: lib/setup.c:2541 msgid "Incorrect OPAL Admin key." msgstr "Niepoprawny klucz administratora OPAL." -#: lib/setup.c:2540 +#: lib/setup.c:2543 msgid "Cannot setup OPAL segment." msgstr "Nie można ustawić segmentu OPAL." -#: lib/setup.c:2622 +#: lib/setup.c:2625 #, c-format msgid "Cannot format device %s, OPAL device seems to be fully write-protected now." msgstr "Nie można sformatować urządzenia %s, urządzenie OPAL obecnie wygląda na w pełni zabezpieczone przed zapisem." -#: lib/setup.c:2624 +#: lib/setup.c:2627 msgid "This is perhaps a bug in firmware. Run OPAL PSID reset and reconnect for recovery." msgstr "To prawdopodobnie błąd w oprogramowaniu sprzętowym. W celu odtworzenia można zresetować PSID OPAL i połączyć ponownie." -#: lib/setup.c:2644 +#: lib/setup.c:2647 #, c-format msgid "Locking range %d reset on device %s failed." msgstr "Reset zakresu blokowania %d na urządzeniu %s nie powiódł się." -#: lib/setup.c:2664 +#: lib/setup.c:2667 msgid "Can't format LOOPAES without device." msgstr "Nie można sformatować urządzenia LUKSAES bez urządzenia." -#: lib/setup.c:2709 +#: lib/setup.c:2712 msgid "Can't format VERITY without device." msgstr "Nie można sformatować VERITY bez urządzenia." -#: lib/setup.c:2720 lib/verity/verity.c:88 +#: lib/setup.c:2723 lib/verity/verity.c:88 #, c-format msgid "Unsupported VERITY hash type %d." msgstr "Nieobsługiwany typ hasza VERITY %d." -#: lib/setup.c:2726 lib/verity/verity.c:96 +#: lib/setup.c:2729 lib/verity/verity.c:96 msgid "Unsupported VERITY block size." msgstr "Nieobsługiwany rozmiar bloku VERITY." -#: lib/setup.c:2731 lib/verity/verity.c:61 +#: lib/setup.c:2734 lib/verity/verity.c:61 msgid "Unsupported VERITY hash offset." msgstr "Nieobsługiwany offset hasza VERITY." -#: lib/setup.c:2736 +#: lib/setup.c:2739 msgid "Unsupported VERITY FEC offset." msgstr "Nieobsługiwany offset FEC VERITY." -#: lib/setup.c:2760 +#: lib/setup.c:2763 msgid "Data area overlaps with hash area." msgstr "Obszar danych zachodzi na obszar skrótów." -#: lib/setup.c:2785 +#: lib/setup.c:2788 msgid "Hash area overlaps with FEC area." msgstr "Obszar skrótu zachodzi na obszar FEC." -#: lib/setup.c:2792 +#: lib/setup.c:2795 msgid "Data area overlaps with FEC area." msgstr "Obszar danych zachodzi na obszar FEC." -#: lib/setup.c:2884 +#: lib/setup.c:2887 msgid "Integrity key size mismatch." msgstr "Niezgodność rozmiaru klucza integralności." -#: lib/setup.c:2935 +#: lib/setup.c:2938 #, c-format msgid "WARNING: Requested tag size %d bytes differs from %s size output (%d bytes).\n" msgstr "UWAGA: żądany rozmiar znacznika %d B różni się od rozmiaru wyjścia %s (%d B).\n" -#: lib/setup.c:3048 lib/setup.c:3150 +#: lib/setup.c:3051 lib/setup.c:3153 #, c-format msgid "Unknown or unsupported device type %s requested." msgstr "Żądany nieznany lub nieobsługiwany typ urządzenia %s." -#: lib/setup.c:3064 +#: lib/setup.c:3067 #, c-format msgid "Device %s does not provide inline integrity data fields." msgstr "Urządzenie %s nie zapewnia wbudowanych pól danych integralności." -#: lib/setup.c:3070 +#: lib/setup.c:3073 #, c-format msgid "Inline tag size % [bytes] is larger than % provided by device %s." msgstr "Rozmiar znacznika wbudowanego % B jest większy niż % zapewniany przez urządzenie %s." -#: lib/setup.c:3085 +#: lib/setup.c:3088 #, c-format msgid "Sector must be the same as device hardware sector (%zu bytes)." msgstr "Sektor musi być tego samego rozmiaru, co sektor sprzętowy urządzenia (%zu B)." -#: lib/setup.c:3515 lib/setup.c:3604 lib/setup.c:3617 +#: lib/setup.c:3518 lib/setup.c:3607 lib/setup.c:3620 #, c-format msgid "Unsupported parameters on device %s." msgstr "Nieobsługiwane parametry urządzenia %s." -#: lib/setup.c:3521 lib/setup.c:3624 lib/luks2/luks2_reencrypt.c:2928 -#: lib/luks2/luks2_reencrypt.c:3197 lib/luks2/luks2_reencrypt.c:3594 +#: lib/setup.c:3524 lib/setup.c:3627 lib/luks2/luks2_reencrypt.c:2929 +#: lib/luks2/luks2_reencrypt.c:3198 lib/luks2/luks2_reencrypt.c:3595 #, c-format msgid "Mismatching parameters on device %s." msgstr "Niezgodne parametry dla urządzenia %s." -#: lib/setup.c:3647 +#: lib/setup.c:3650 msgid "Crypt devices mismatch." msgstr "Urządzenia szyfrowane nie zgadzają się." -#: lib/setup.c:3679 lib/setup.c:3684 lib/luks2/luks2_reencrypt.c:2412 -#: lib/luks2/luks2_reencrypt.c:2944 lib/luks2/luks2_reencrypt.c:4236 +#: lib/setup.c:3682 lib/setup.c:3687 lib/luks2/luks2_reencrypt.c:2413 +#: lib/luks2/luks2_reencrypt.c:2945 lib/luks2/luks2_reencrypt.c:4237 #, c-format msgid "Failed to reload device %s." msgstr "Nie udało się przeładować urządzenia %s." -#: lib/setup.c:3690 lib/setup.c:3696 lib/luks2/luks2_reencrypt.c:2382 -#: lib/luks2/luks2_reencrypt.c:2389 lib/luks2/luks2_reencrypt.c:2958 +#: lib/setup.c:3693 lib/setup.c:3699 lib/luks2/luks2_reencrypt.c:2383 +#: lib/luks2/luks2_reencrypt.c:2390 lib/luks2/luks2_reencrypt.c:2959 #, c-format msgid "Failed to suspend device %s." msgstr "Nie udało się wstrzymać urządzenia %s." -#: lib/setup.c:3702 lib/luks2/luks2_reencrypt.c:2396 -#: lib/luks2/luks2_reencrypt.c:2979 lib/luks2/luks2_reencrypt.c:4149 -#: lib/luks2/luks2_reencrypt.c:4240 +#: lib/setup.c:3705 lib/luks2/luks2_reencrypt.c:2397 +#: lib/luks2/luks2_reencrypt.c:2980 lib/luks2/luks2_reencrypt.c:4150 +#: lib/luks2/luks2_reencrypt.c:4241 #, c-format msgid "Failed to resume device %s." msgstr "Nie udało wznowić urządzenia %s." -#: lib/setup.c:3717 +#: lib/setup.c:3720 #, c-format msgid "Fatal error while reloading device %s (on top of device %s)." msgstr "Błąd krytyczny przy przeładowywaniu urządzenia %s (w oparciu o urządzenie %s)." -#: lib/setup.c:3720 lib/setup.c:3722 +#: lib/setup.c:3723 lib/setup.c:3725 #, c-format msgid "Failed to switch device %s to dm-error." msgstr "Nie udało się przełączyć urządzenia %s na dm-error." -#: lib/setup.c:3765 +#: lib/setup.c:3768 msgid "Can not resize LUKS2 device with static size." msgstr "Nie można zmienić rozmiaru urządzenia LUKS2 o rozmiarze statycznym." -#: lib/setup.c:3770 +#: lib/setup.c:3773 msgid "Resize of LUKS2 device with integrity protection is not supported." msgstr "Zmiana rozmiaru urządzenia LUKS2 z ochroną integralności nie jest obsługiwana." -#: lib/setup.c:3816 +#: lib/setup.c:3819 msgid "Cannot resize loop device." msgstr "Nie można zmienić rozmiaru urządzenia loopback." -#: lib/setup.c:3860 +#: lib/setup.c:3863 msgid "WARNING: Maximum size already set or kernel doesn't support resize.\n" msgstr "UWAGA: maksymalny rozmiar jest już ustawiony lub jądro nie obsługuje zmiany rozmiaru.\n" -#: lib/setup.c:3926 +#: lib/setup.c:3929 msgid "Resize failed, the kernel doesn't support it." msgstr "Zmiana rozmiaru nie powiodła się, jądro tego nie obsługuje." -#: lib/setup.c:3958 +#: lib/setup.c:3961 msgid "Do you really want to change UUID of device?" msgstr "Czy na pewno zmienić UUID urządzenia?" -#: lib/setup.c:4050 +#: lib/setup.c:4053 msgid "Header backup file does not contain compatible LUKS header." msgstr "Plik nagłówka kopii zapasowej nie zawiera zgodnego nagłówka LUKS." -#: lib/setup.c:4143 +#: lib/setup.c:4160 #, c-format msgid "Volume %s is not active." msgstr "Wolumen %s nie jest aktywny." -#: lib/setup.c:4198 +#: lib/setup.c:4215 #, c-format msgid "Volume %s is already suspended." msgstr "Wolumen %s już został wstrzymany." -#: lib/setup.c:4224 +#: lib/setup.c:4241 #, c-format msgid "Suspend is not supported for device %s." msgstr "Wstrzymywanie nie jest obsługiwane dla urządzenia %s." -#: lib/setup.c:4226 lib/setup.c:4234 +#: lib/setup.c:4243 lib/setup.c:4251 #, c-format msgid "Error during suspending device %s." msgstr "Błąd podczas wstrzymywania urządzenia %s." -#: lib/setup.c:4249 +#: lib/setup.c:4266 #, c-format msgid "Device %s was suspended but hardware OPAL device cannot be locked." msgstr "Urządzenie %s zostało wstrzymane, ale sprzętowe urządzenie OPAL nie może być zablokowane." -#: lib/setup.c:4280 lib/setup.c:4457 +#: lib/setup.c:4297 lib/setup.c:4491 #, c-format msgid "Resume is not supported for device %s." msgstr "Wznawianie nie jest obsługiwane dla urządzenia %s." -#: lib/setup.c:4282 lib/setup.c:4447 lib/setup.c:4459 +#: lib/setup.c:4299 lib/setup.c:4481 lib/setup.c:4493 #, c-format msgid "Error during resuming device %s." msgstr "Błąd podczas wznawiania urządzenia %s." -#: lib/setup.c:4301 +#: lib/setup.c:4335 msgid "Failed to unlink volume key from user specified keyring." msgstr "Nie udało się odłączyć klucza wolumenu z pęku kluczy podanego przez użytkownika." -#: lib/setup.c:4423 lib/setup.c:5603 +#: lib/setup.c:4457 lib/setup.c:5637 msgid "Failed to link volume key in user defined keyring." msgstr "Nie udało się dołączuć klucza wolumenu do pęku kluczy zdefiniowanego przez użytkownika." -#: lib/setup.c:4522 src/cryptsetup.c:2721 +#: lib/setup.c:4556 src/cryptsetup.c:2720 #, c-format msgid "Volume %s is not suspended." msgstr "Wolumen %s nie jest wstrzymany." -#: lib/setup.c:4633 lib/setup.c:7276 lib/setup.c:7298 lib/setup.c:7352 -#: src/cryptsetup.c:1856 src/cryptsetup.c:2260 src/cryptsetup.c:2278 -#: src/utils_reencrypt.c:305 src/utils_reencrypt.c:1966 +#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1855 +#: src/cryptsetup.c:2259 src/cryptsetup.c:2277 src/utils_reencrypt.c:305 +#: src/utils_reencrypt.c:1966 msgid "Volume key does not match the volume." msgstr "Klucz wolumenu nie pasuje do wolumenu." -#: lib/setup.c:4787 +#: lib/setup.c:4821 msgid "Failed to swap new key slot." msgstr "Nie udało się podstawić nowego klucza." -#: lib/setup.c:4885 +#: lib/setup.c:4919 #, c-format msgid "Key slot %d is invalid." msgstr "Numer klucza %d jest nieprawidłowy." -#: lib/setup.c:4891 src/cryptsetup.c:1977 src/cryptsetup.c:2437 -#: src/cryptsetup.c:3121 src/cryptsetup.c:3181 +#: lib/setup.c:4925 src/cryptsetup.c:1976 src/cryptsetup.c:2436 +#: src/cryptsetup.c:3120 src/cryptsetup.c:3180 #, c-format msgid "Keyslot %d is not active." msgstr "Klucz %d nie jest aktywny." -#: lib/setup.c:4910 +#: lib/setup.c:4944 msgid "Device header overlaps with data area." msgstr "Nagłówek urządzenia zachodzi na obszar danych." -#: lib/setup.c:5131 +#: lib/setup.c:5165 msgid "Reencryption in-progress. Cannot activate device." msgstr "Ponowne szyfrowanie trwa. Nie można uaktywnić urządzenia." -#: lib/setup.c:5133 lib/luks2/luks2_json_metadata.c:2888 -#: lib/luks2/luks2_reencrypt.c:3725 +#: lib/setup.c:5167 lib/luks2/luks2_json_metadata.c:2913 +#: lib/luks2/luks2_reencrypt.c:3726 msgid "Failed to get reencryption lock." msgstr "Nie udało się uzyskać blokady ponownego szyfrowania." -#: lib/setup.c:5155 +#: lib/setup.c:5189 msgid "LUKS2 reencryption recovery using volume key(s) failed." msgstr "Odtwarzanie ponownego szyfrowania LUKS2 przy użyciu kluczy wolumenu nie powiodło się." -#: lib/setup.c:5291 +#: lib/setup.c:5325 #, c-format msgid "Device %s already exists." msgstr "Urządzenie %s już istnieje." -#: lib/setup.c:5298 +#: lib/setup.c:5332 #, c-format msgid "Cannot use device %s, name is invalid or still in use." msgstr "Nie można użyć urządzenia %s, nazwa jest nieprawidłowa lub nadal w użyciu." -#: lib/setup.c:5310 +#: lib/setup.c:5344 msgid "Reencryption volume keys do not match the volume." msgstr "Klucze ponownego szyfrowania wolumenu nie pasują do wolumenu." -#: lib/setup.c:5327 +#: lib/setup.c:5361 msgid "Incorrect volume key specified for plain device." msgstr "Podano niewłaściwy klucz wolumenu dla zwykłego urządzenia." -#: lib/setup.c:5353 lib/setup.c:5414 +#: lib/setup.c:5387 lib/setup.c:5448 msgid "Device type is not properly initialized." msgstr "Typ urządzenia nie został właściwie zainicjalizowany." -#: lib/setup.c:5452 +#: lib/setup.c:5486 msgid "Kernel keyring is not supported by the kernel." msgstr "Pęk kluczy w jądrze nie jest obsługiwany przez jądro." -#: lib/setup.c:5456 +#: lib/setup.c:5490 msgid "Kernel keyring missing: required for passing signature to kernel." msgstr "Brak pęku kluczy w jądrze: wymagany do przekazania podpisu do jądra." -#: lib/setup.c:5511 +#: lib/setup.c:5545 #, c-format msgid "Cannot use keyring key %s." msgstr "Nie można użyć klucza pęku kluczy %s." -#: lib/setup.c:5724 +#: lib/setup.c:5758 msgid "Incorrect root hash specified for verity device." msgstr "Podano niewłaściwy hasz główny dla urządzenia VERITY." -#: lib/setup.c:5765 lib/setup.c:5790 +#: lib/setup.c:5799 lib/setup.c:5824 msgid "OPAL does not support deferred deactivation." msgstr "OPAL nie obsługuje odroczonej dezaktywacji." -#: lib/setup.c:5780 lib/setup.c:5811 lib/luks2/luks2_json_metadata.c:2953 +#: lib/setup.c:5814 lib/setup.c:5845 lib/luks2/luks2_json_metadata.c:2978 #: src/utils_reencrypt.c:89 #, c-format msgid "Device %s is still in use." msgstr "Urządzenie %s jest nadal w użyciu." -#: lib/setup.c:5798 +#: lib/setup.c:5832 #, c-format msgid "Could not cancel deferred remove from device %s." msgstr "Nie udało się anulować opóźnionego usuwania z urządzenia %s." -#: lib/setup.c:5820 +#: lib/setup.c:5854 #, c-format msgid "Invalid device %s." msgstr "Błędne urządzenie %s." -#: lib/setup.c:5967 +#: lib/setup.c:6001 msgid "Volume key buffer too small." msgstr "Bufor klucza wolumenu zbyt mały." -#: lib/setup.c:5978 +#: lib/setup.c:6012 msgid "Cannot retrieve volume key for LUKS2 device." msgstr "Nie można odtworzyć klucza wolumenu dla urządzenia LUKS2." -#: lib/setup.c:5987 +#: lib/setup.c:6021 msgid "Cannot retrieve volume key for LUKS1 device." msgstr "Nie można odtworzyć klucza wolumenu dla urządzenia LUKS1." -#: lib/setup.c:6001 +#: lib/setup.c:6035 msgid "Cannot retrieve volume key for plain device." msgstr "Nie można odtworzyć klucza wolumenu dla zwykłego urządzenia." -#: lib/setup.c:6009 +#: lib/setup.c:6043 msgid "Cannot retrieve root hash for verity device." msgstr "Nie można odtworzyć hasza głównego dla urządzenia VERITY." -#: lib/setup.c:6018 +#: lib/setup.c:6052 msgid "Cannot retrieve volume key for BITLK device." msgstr "Nie można odtworzyć klucza wolumenu dla urządzenia BITLK." -#: lib/setup.c:6023 +#: lib/setup.c:6057 msgid "Cannot retrieve volume key for FVAULT2 device." msgstr "Nie można odtworzyć klucza wolumenu dla urządzenia FVAULT2." -#: lib/setup.c:6025 +#: lib/setup.c:6059 #, c-format msgid "This operation is not supported for %s crypt device." msgstr "Ta operacja nie jest obsługiwana dla urządzenia szyfrującego %s." -#: lib/setup.c:6210 lib/setup.c:6221 +#: lib/setup.c:6244 lib/setup.c:6255 msgid "Dump operation is not supported for this device type." msgstr "Operacja zrzutu nie jest obsługiwana dla tego rodzaju urządzenia." -#: lib/setup.c:6601 +#: lib/setup.c:6635 #, c-format msgid "Data offset is not multiple of %u bytes." msgstr "Offset danych nie jest wielokrotnością liczby bajtów %u." -#: lib/setup.c:6909 +#: lib/setup.c:6943 #, c-format msgid "Cannot convert device %s which is still in use." msgstr "Nie można przekonwertować urządzenia %s, które jest nadal w użyciu." -#: lib/setup.c:7217 lib/setup.c:7361 +#: lib/setup.c:7251 lib/setup.c:7406 #, c-format msgid "Failed to assign keyslot %u as the new volume key." msgstr "Nie udało się przypisać klucza %u jako nowego klucza wolumenu." -#: lib/setup.c:7241 +#: lib/setup.c:7275 msgid "Failed to initialize default LUKS2 keyslot parameters." msgstr "Nie udało się zainicjować domyślnych parametrów klucza LUKS2." -#: lib/setup.c:7247 +#: lib/setup.c:7281 #, c-format msgid "Failed to assign keyslot %d to digest." msgstr "Nie udało się przypisać klucza %d do skrótu." -#: lib/setup.c:7478 +#: lib/setup.c:7523 msgid "Cannot add key slot, all slots disabled and no volume key provided." msgstr "Nie można dodać klucza, wszystkie miejsca na klucze wyłączone i nie podano klucza wolumenu." -#: lib/setup.c:7551 lib/verity/verity.c:333 +#: lib/setup.c:7611 lib/setup.c:7626 lib/verity/verity.c:333 msgid "Failed to load key in kernel keyring." msgstr "Nie udało się załadować klucza do pęku kluczy w jądrze." -#: lib/setup.c:7742 +#: lib/setup.c:7807 #, c-format msgid "Could not find keyring described by \"%s\"." msgstr "Nie udało się odnaleźć pęku kluczy opisanego przez \"%s\"." -#: lib/setup.c:7807 +#: lib/setup.c:7872 msgid "Failed to acquire global memory-hard access serialization lock." msgstr "Nie udało się uzyskać globalnej blokady serializacji dostępu ciężkiego pamięciowo." -#: lib/utils.c:204 lib/tcrypt/tcrypt.c:490 +#: lib/utils.c:205 lib/tcrypt/tcrypt.c:488 msgid "Failed to open key file." msgstr "Nie udało się otworzyć pliku klucza." -#: lib/utils.c:212 +#: lib/utils.c:213 msgid "Cannot read keyfile from a terminal." msgstr "Nie można odczytać pliku klucza z terminala." -#: lib/utils.c:228 +#: lib/utils.c:229 msgid "Failed to stat key file." msgstr "Nie udało się wykonać stat na pliku klucza." -#: lib/utils.c:236 lib/utils.c:257 +#: lib/utils.c:237 lib/utils.c:258 msgid "Cannot seek to requested keyfile offset." msgstr "Nie można przemieścić się do żądanego położenia pliku klucza." -#: lib/utils.c:251 lib/utils.c:266 src/utils_password.c:219 +#: lib/utils.c:252 lib/utils.c:267 src/utils_password.c:219 #: src/utils_password.c:231 msgid "Out of memory while reading passphrase." msgstr "Brak pamięci podczas odczytu hasła." -#: lib/utils.c:286 +#: lib/utils.c:287 msgid "Error reading passphrase." msgstr "Błąd podczas odczytu hasła." -#: lib/utils.c:303 +#: lib/utils.c:304 msgid "Nothing to read on input." msgstr "Na wejściu nie ma nic do odczytu." -#: lib/utils.c:310 +#: lib/utils.c:311 msgid "Maximum keyfile size exceeded." msgstr "Przekroczono maksymalny rozmiar pliku klucza." -#: lib/utils.c:315 +#: lib/utils.c:316 msgid "Cannot read requested amount of data." msgstr "Nie można odczytać żądanej ilości danych." @@ -961,7 +961,7 @@ msgid "Cipher specification should be in [cipher]-[mode]-[iv] format." msgstr "Określenie szyfru powinno być w formacie [szyfr]-[tryb]-[iv]." #: lib/luks1/keyencryption.c:85 lib/luks1/keymanage.c:353 -#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1150 +#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1132 #: lib/luks2/luks2_json_metadata.c:1518 lib/luks2/luks2_keyslot.c:711 #, c-format msgid "Cannot write to device %s, permission denied." @@ -975,13 +975,13 @@ msgstr "Nie udało się otworzyć urządzenia do tymczasowego przechowywania klu msgid "Failed to access temporary keystore device." msgstr "Nie udało się uzyskać dostępu do urządzenia do tymczasowego przechowywania kluczy." -#: lib/luks1/keyencryption.c:189 lib/luks2/luks2_keyslot_luks2.c:49 -#: lib/luks2/luks2_keyslot_luks2.c:67 lib/luks2/luks2_keyslot_reenc.c:184 +#: lib/luks1/keyencryption.c:189 lib/luks2/luks2_keyslot_luks2.c:47 +#: lib/luks2/luks2_keyslot_reenc.c:184 msgid "IO error while encrypting keyslot." msgstr "Błąd we/wy podczas szyfrowania klucza." #: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:356 -#: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:668 +#: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:659 #: lib/fvault2/fvault2.c:872 lib/verity/verity.c:67 lib/verity/verity.c:183 #: lib/verity/verity_hash.c:312 lib/verity/verity_hash.c:321 #: lib/verity/verity_hash.c:350 lib/verity/verity_fec.c:247 @@ -992,7 +992,7 @@ msgstr "Błąd we/wy podczas szyfrowania klucza." msgid "Cannot open device %s." msgstr "Nie można otworzyć urządzenia %s." -#: lib/luks1/keyencryption.c:247 lib/luks2/luks2_keyslot_luks2.c:128 +#: lib/luks1/keyencryption.c:247 lib/luks2/luks2_keyslot_luks2.c:85 msgid "IO error while decrypting keyslot." msgstr "Błąd we/wy podczas odszyfrowywania klucza." @@ -1082,7 +1082,7 @@ msgid "Cipher hash repaired to lowercase (%s)." msgstr "Skrót szyfru poprawiony na małe litery (%s)." #: lib/luks1/keymanage.c:417 lib/luks1/keymanage.c:523 -#: lib/luks1/keymanage.c:777 +#: lib/luks1/keymanage.c:756 #, c-format msgid "Requested LUKS hash %s is not supported." msgstr "Żądany skrót LUKS %s nie jest obsługiwany." @@ -1129,7 +1129,7 @@ msgstr "Tryb szyfru LUKS %s jest nieprawidłowy." msgid "LUKS hash %s is invalid." msgstr "Skrót LUKS %s jest nieprawidłowy." -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 +#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1366 msgid "No known problems detected for LUKS header." msgstr "W nagłówku LUKS nie wykryto żadnych znanych problemów." @@ -1143,50 +1143,50 @@ msgstr "Błąd podczas uaktualniania nagłówka LUKS na urządzeniu %s." msgid "Error re-reading LUKS header after update on device %s." msgstr "Błęd podczas ponownego odczytu nagłówka LUKS po uaktualnieniu na urządzeniu %s." -#: lib/luks1/keymanage.c:771 +#: lib/luks1/keymanage.c:750 msgid "Data offset for LUKS header must be either 0 or higher than header size." msgstr "Offset danych dla nagłówka LUKS musi wynosić 0 lub więcej niż rozmiar nagłówka." -#: lib/luks1/keymanage.c:782 lib/luks1/keymanage.c:853 +#: lib/luks1/keymanage.c:761 lib/luks1/keymanage.c:832 #: lib/luks2/luks2_json_format.c:231 lib/luks2/luks2_json_metadata.c:1261 #: src/utils_reencrypt.c:701 msgid "Wrong LUKS UUID format provided." msgstr "Podano zły format LUKS UUID." -#: lib/luks1/keymanage.c:804 +#: lib/luks1/keymanage.c:783 msgid "Cannot create LUKS header: reading random salt failed." msgstr "Nie można utworzyć nagłówka LUKS: odczyt losowego zarodka nie powiódł się." -#: lib/luks1/keymanage.c:832 +#: lib/luks1/keymanage.c:811 #, c-format msgid "Cannot create LUKS header: header digest failed (using hash %s)." msgstr "Nie można utworzyć nagłówka LUKS: uzyskanie skrótu nagłówka nie powiodło się (przy użyciu algorytmu %s)." -#: lib/luks1/keymanage.c:877 +#: lib/luks1/keymanage.c:856 #, c-format msgid "Key slot %d active, purge first." msgstr "Klucz numer %d jest aktywny, należy go najpierw wyczyścić." -#: lib/luks1/keymanage.c:883 +#: lib/luks1/keymanage.c:862 #, c-format msgid "Key slot %d material includes too few stripes. Header manipulation?" msgstr "Klucz %d zawiera zbyt mało pasów. Zmieniony nagłówek?" -#: lib/luks1/keymanage.c:921 lib/luks2/luks2_keyslot_luks2.c:260 +#: lib/luks1/keymanage.c:900 lib/luks2/luks2_keyslot_luks2.c:217 msgid "PBKDF2 iteration value overflow." msgstr "Przepełnienie wartości iteracji PBKDF2" -#: lib/luks1/keymanage.c:1040 +#: lib/luks1/keymanage.c:1022 #, c-format msgid "Cannot open keyslot (using hash %s)." msgstr "Nie można otworzyć klucza (przy użyciu skrótu %s)." -#: lib/luks1/keymanage.c:1136 +#: lib/luks1/keymanage.c:1118 #, c-format msgid "Key slot %d is invalid, please select keyslot between 0 and %d." msgstr "Numer klucza %d jest błędny, proszę wybrać numer od 0 do %d." -#: lib/luks1/keymanage.c:1154 lib/luks2/luks2_keyslot.c:715 +#: lib/luks1/keymanage.c:1136 lib/luks2/luks2_keyslot.c:715 #, c-format msgid "Cannot wipe device %s." msgstr "Nie można wymazać urządzenia %s." @@ -1207,56 +1207,48 @@ msgstr "Wykryto niekompatybilny plik klucza loop-AES." msgid "Kernel does not support loop-AES compatible mapping." msgstr "Jądro nie obsługuje odwzorowań zgodnych z loop-AES." -#: lib/tcrypt/tcrypt.c:497 +#: lib/tcrypt/tcrypt.c:495 #, c-format msgid "Error reading keyfile %s." msgstr "Błąd odczytu pliku klucza %s." -#: lib/tcrypt/tcrypt.c:547 +#: lib/tcrypt/tcrypt.c:549 #, c-format msgid "Maximum TCRYPT passphrase length (%zu) exceeded." msgstr "Przekroczono maksymalną długość hasła TCRYPT (%zu)." -#: lib/tcrypt/tcrypt.c:589 +#: lib/tcrypt/tcrypt.c:591 #, c-format msgid "PBKDF2 hash algorithm %s not available, skipping." msgstr "Algorytm skrótu PBKDF2 %s nie jest dostępny, pominięto." -#: lib/tcrypt/tcrypt.c:608 src/cryptsetup.c:1240 -msgid "Required kernel crypto interface not available." -msgstr "Wymagany interfejs kryptograficzny jądra nie jest dostępny." - -#: lib/tcrypt/tcrypt.c:610 src/cryptsetup.c:1242 -msgid "Ensure you have algif_skcipher kernel module loaded." -msgstr "Proszę upewnić się, że moduł jądra algif_skcipher został załadowany." - -#: lib/tcrypt/tcrypt.c:752 +#: lib/tcrypt/tcrypt.c:743 #, c-format msgid "Activation is not supported for %d sector size." msgstr "Uaktywnianie nie jest obsługiwane dla rozmiaru sektora %d." -#: lib/tcrypt/tcrypt.c:758 +#: lib/tcrypt/tcrypt.c:749 msgid "Kernel does not support activation for this TCRYPT legacy mode." msgstr "Jądro nie obsługuje uaktywniania dla tego starego trybu TCRYPT." -#: lib/tcrypt/tcrypt.c:813 +#: lib/tcrypt/tcrypt.c:804 #, c-format msgid "Activating TCRYPT system encryption for partition %s." msgstr "Włączanie szyfrowania systemu TCRYPT dla partycji %s." -#: lib/tcrypt/tcrypt.c:828 +#: lib/tcrypt/tcrypt.c:819 msgid "Cannot determine TCRYPT system partition offset, activating whole encrypted area." msgstr "Nie można określić pozycji partycji systemowej TCRYPT, aktywacja całego obszaru zaszyfrowanego." -#: lib/tcrypt/tcrypt.c:837 +#: lib/tcrypt/tcrypt.c:828 msgid "Cannot determine TCRYPT system partition offset, activating device as a system partition." msgstr "Nie można określić pozycji partycji systemowej TCRYPT, aktywacja urządzenia jako partycji systemowej." -#: lib/tcrypt/tcrypt.c:917 +#: lib/tcrypt/tcrypt.c:908 msgid "Kernel does not support TCRYPT compatible mapping." msgstr "Jądro nie obsługuje odwzorowań zgodnych z TCRYPT." -#: lib/tcrypt/tcrypt.c:1146 +#: lib/tcrypt/tcrypt.c:1137 msgid "This function is not supported without TCRYPT header load." msgstr "Ta funkcja nie jest obsługiwana bez załadowanego nagłówka TCRYPT." @@ -1609,8 +1601,7 @@ msgid "WARNING: LUKS2 keyslots area size changed to % bytes.\n" msgstr "UWAGA: rozmiar obszaru kluczy LUKS2 zmienił się na % (w bajtach).\n" #: lib/luks2/luks2_json_metadata.c:1171 lib/luks2/luks2_json_metadata.c:1357 -#: lib/luks2/luks2_json_metadata.c:1417 lib/luks2/luks2_keyslot_luks2.c:81 -#: lib/luks2/luks2_keyslot_luks2.c:105 +#: lib/luks2/luks2_json_metadata.c:1417 lib/luks2/luks2_keyslot_luks2.c:71 #, c-format msgid "Failed to acquire read lock on device %s." msgstr "Nie udało się uzyskać blokady do odczytu na urządzeniu %s." @@ -1670,79 +1661,79 @@ msgstr "" msgid "Ignored unknown flag %s." msgstr "Zignorowano nieznaną flagę %s." -#: lib/luks2/luks2_json_metadata.c:2545 lib/luks2/luks2_reencrypt.c:2109 +#: lib/luks2/luks2_json_metadata.c:2563 lib/luks2/luks2_reencrypt.c:2110 #, c-format msgid "Missing key for dm-crypt segment %u" msgstr "Brak klucza dla segmentu dm-crypt %u" -#: lib/luks2/luks2_json_metadata.c:2557 lib/luks2/luks2_reencrypt.c:2122 +#: lib/luks2/luks2_json_metadata.c:2575 lib/luks2/luks2_reencrypt.c:2123 msgid "Failed to set dm-crypt segment." msgstr "Nie udało się ustawić segmentu dm-crypt." -#: lib/luks2/luks2_json_metadata.c:2563 lib/luks2/luks2_reencrypt.c:2128 +#: lib/luks2/luks2_json_metadata.c:2581 lib/luks2/luks2_reencrypt.c:2129 msgid "Failed to set dm-linear segment." msgstr "Nie udało się ustawić segmentu dm-linear." -#: lib/luks2/luks2_json_metadata.c:2683 src/utils_reencrypt.c:578 +#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:578 msgid "No known cipher specification pattern detected in LUKS2 header." msgstr "Nie wykryto znanego wzorca określającego szyfr w nagłówku LUKS2." -#: lib/luks2/luks2_json_metadata.c:2691 +#: lib/luks2/luks2_json_metadata.c:2709 msgid "OPAL device must have static device size." msgstr "Urządzenie OPAL musi mieć statyczny rozmiar." -#: lib/luks2/luks2_json_metadata.c:2711 +#: lib/luks2/luks2_json_metadata.c:2729 msgid "Encrypted OPAL device with integrity must be smaller than locking range." msgstr "Szyfrowane urządzenie OPAL z integralnością musi być mniejsze, niż zakres blokowania." -#: lib/luks2/luks2_json_metadata.c:2716 +#: lib/luks2/luks2_json_metadata.c:2734 msgid "OPAL device must have same size as locking range." msgstr "Urządzenie OPAL musi mieć ten sam rozmiar, co zakres blokowania." -#: lib/luks2/luks2_json_metadata.c:2736 +#: lib/luks2/luks2_json_metadata.c:2754 #, c-format msgid "OPAL device is %s already unlocked.\n" msgstr "Urządzenie OPAL %s jest już odblokowane.\n" -#: lib/luks2/luks2_json_metadata.c:2775 +#: lib/luks2/luks2_json_metadata.c:2793 msgid "Unsupported device integrity configuration." msgstr "Nieobsługiwana konfiguracja integralności urządzenia." -#: lib/luks2/luks2_json_metadata.c:2791 +#: lib/luks2/luks2_json_metadata.c:2809 msgid "Underlying dm-integrity device with unexpected provided data sectors." msgstr "Urządzenie dm-integrity stojące poniżej o nieoczekiwanych sektorach danych." -#: lib/luks2/luks2_json_metadata.c:2886 +#: lib/luks2/luks2_json_metadata.c:2911 msgid "Reencryption in-progress. Cannot deactivate device." msgstr "Podobne szyfrowanie trwa. Nie można dezaktywować urządzenia." -#: lib/luks2/luks2_json_metadata.c:2897 lib/luks2/luks2_reencrypt.c:4286 +#: lib/luks2/luks2_json_metadata.c:2922 lib/luks2/luks2_reencrypt.c:4287 #, c-format msgid "Failed to replace suspended device %s with dm-error target." msgstr "Nie udało się zastąpić wstrzymanego urządzenia %s celem dm-error." -#: lib/luks2/luks2_json_metadata.c:2976 lib/luks2/luks2_json_metadata.c:2998 +#: lib/luks2/luks2_json_metadata.c:3001 lib/luks2/luks2_json_metadata.c:3023 #, c-format msgid "Device %s was deactivated but hardware OPAL device cannot be locked." msgstr "Urządzenie %s zostało dezaktywowane, ale sprzętowe urządzenie OPAL nie może być zablokowane." -#: lib/luks2/luks2_json_metadata.c:3020 +#: lib/luks2/luks2_json_metadata.c:3045 msgid "Unmet LUKS2 requirements detected." msgstr "Wykryto niespełnione wymagania LUKS2." -#: lib/luks2/luks2_json_metadata.c:3028 +#: lib/luks2/luks2_json_metadata.c:3053 msgid "Operation incompatible with device marked for legacy reencryption. Aborting." msgstr "Operacja niezgodna z urządzeniem oznaczonym do ponownego szyfrowania starym szyfrem. Przerwano." -#: lib/luks2/luks2_json_metadata.c:3030 +#: lib/luks2/luks2_json_metadata.c:3055 msgid "Operation incompatible with device marked for LUKS2 reencryption. Aborting." msgstr "Operacja niezgodna z urządzeniem oznaczonym do ponownego szyfrowania LUKS2. Przerwano." -#: lib/luks2/luks2_json_metadata.c:3032 +#: lib/luks2/luks2_json_metadata.c:3057 msgid "Operation incompatible with device using OPAL. Aborting." msgstr "Operacja niezgodna z urządzeniem używającym OPAL. Przerwano." -#: lib/luks2/luks2_json_metadata.c:3034 +#: lib/luks2/luks2_json_metadata.c:3059 msgid "Operation incompatible with device using inline HW tags. Aborting." msgstr "Operacja niezgodna z urządzeniem używającym wbudowanych znaczników HW. Przerwano." @@ -1754,22 +1745,22 @@ msgstr "Za mało dostępnej pamięci, aby otworzyć klucz." msgid "Keyslot open failed." msgstr "Nie udało się otworzyć klucza." -#: lib/luks2/luks2_keyslot_luks2.c:42 lib/luks2/luks2_keyslot_luks2.c:99 +#: lib/luks2/luks2_keyslot_luks2.c:40 lib/luks2/luks2_keyslot_luks2.c:77 #, c-format -msgid "Cannot use %s-%s cipher for keyslot encryption." -msgstr "Nie można użyć szyfru %s-%s do szyfrowania kluczy." +msgid "Cannot use %s cipher for keyslot encryption." +msgstr "Nie można użyć szyfru %s do szyfrowania kluczy." -#: lib/luks2/luks2_keyslot_luks2.c:262 +#: lib/luks2/luks2_keyslot_luks2.c:219 msgid "Not enough memory for keyslot key derivation." msgstr "Za mało pamięci na wyprowadzenie klucza z miejsca." -#: lib/luks2/luks2_keyslot_luks2.c:276 lib/luks2/luks2_keyslot_luks2.c:405 -#: lib/luks2/luks2_keyslot_reenc.c:434 lib/luks2/luks2_reencrypt.c:2733 +#: lib/luks2/luks2_keyslot_luks2.c:233 lib/luks2/luks2_keyslot_luks2.c:358 +#: lib/luks2/luks2_keyslot_reenc.c:434 lib/luks2/luks2_reencrypt.c:2734 #, c-format msgid "Hash algorithm %s is not available." msgstr "Algorytm skrótu %s nie jest dostępny." -#: lib/luks2/luks2_keyslot_luks2.c:522 +#: lib/luks2/luks2_keyslot_luks2.c:475 msgid "No space for new keyslot." msgstr "Brak miejsca na nowy klucz." @@ -1786,335 +1777,335 @@ msgstr "Nie można uaktualnić rodzaju odporności. Nowy typ zapewnia % msgid "Failed to refresh reencryption verification digest." msgstr "Nie udało się odświeżyć skrótu weryfikacji ponownego szyfrowania." -#: lib/luks2/luks2_luks1_convert.c:532 +#: lib/luks2/luks2_luks1_convert.c:498 #, c-format msgid "Cannot check status of device with uuid: %s." msgstr "Nie można sprawdzić stanu urządzenia mającego UUID: %s." -#: lib/luks2/luks2_luks1_convert.c:558 +#: lib/luks2/luks2_luks1_convert.c:524 msgid "Unable to convert header with LUKSMETA additional metadata." msgstr "Nie można przekonwertować nagłówka z dodatkowymi metadanymi LUKSMETA." -#: lib/luks2/luks2_luks1_convert.c:590 lib/luks2/luks2_reencrypt.c:3893 +#: lib/luks2/luks2_luks1_convert.c:556 lib/luks2/luks2_reencrypt.c:3894 #, c-format msgid "Unable to use cipher specification %s-%s for LUKS2." msgstr "Nie można użyć określenia szyfru %s-%s dla LUKS2." -#: lib/luks2/luks2_luks1_convert.c:599 +#: lib/luks2/luks2_luks1_convert.c:565 #, c-format msgid "Unable to use cipher specification %s-%s for LUKS2 keyslot." msgstr "Nie można użyć określenia szyfru %s-%s dla klucza LUKS2." -#: lib/luks2/luks2_luks1_convert.c:614 +#: lib/luks2/luks2_luks1_convert.c:580 msgid "Unable to move keyslot area. Not enough space." msgstr "Nie można przenieść obszaru kluczy. Brak miejsca." -#: lib/luks2/luks2_luks1_convert.c:653 +#: lib/luks2/luks2_luks1_convert.c:619 msgid "Cannot convert to LUKS2 format - invalid metadata." msgstr "Nie można przekonwertować do formatu LUKS1 - błędne metadane." -#: lib/luks2/luks2_luks1_convert.c:670 +#: lib/luks2/luks2_luks1_convert.c:636 msgid "Unable to move keyslot area. LUKS2 keyslots area too small." msgstr "Nie można przenieść obszaru kluczy. Obszar kluczy LUKS2 zbyt mały." -#: lib/luks2/luks2_luks1_convert.c:676 lib/luks2/luks2_luks1_convert.c:1006 +#: lib/luks2/luks2_luks1_convert.c:642 lib/luks2/luks2_luks1_convert.c:972 msgid "Unable to move keyslot area." msgstr "Nie można przenieść obszaru kluczy." -#: lib/luks2/luks2_luks1_convert.c:791 +#: lib/luks2/luks2_luks1_convert.c:757 msgid "Cannot convert to LUKS1 format - default segment encryption sector size is not 512 bytes." msgstr "Nie można przekonwertować do formatu LUKS1 - domyślny rozmiar sektora szyfrowania segmentu nie wynosi 512 bajtów." -#: lib/luks2/luks2_luks1_convert.c:799 +#: lib/luks2/luks2_luks1_convert.c:765 msgid "Cannot convert to LUKS1 format - key slot digests are not LUKS1 compatible." msgstr "Nie można przekonwertować formatu LUKS1 - skróty kluczy nie są zgodne z LUKS1." -#: lib/luks2/luks2_luks1_convert.c:813 +#: lib/luks2/luks2_luks1_convert.c:779 #, c-format msgid "Cannot convert to LUKS1 format - device uses wrapped key cipher %s." msgstr "Nie można przekonwertować formatu LUKS1 - urządzenie używa szyfru %s z obudowanym kluczem." -#: lib/luks2/luks2_luks1_convert.c:818 +#: lib/luks2/luks2_luks1_convert.c:784 msgid "Cannot convert to LUKS1 format - device uses more segments." msgstr "Nie można przekonwertować formatu LUKS1 - urządzenie używa większej liczby segmentów." -#: lib/luks2/luks2_luks1_convert.c:826 +#: lib/luks2/luks2_luks1_convert.c:792 #, c-format msgid "Cannot convert to LUKS1 format - LUKS2 header contains %u token(s)." msgstr "Nie można przekonwertować do formatu LUKS1 - nagłówek LUKS2 zawiera %u token(ów)." -#: lib/luks2/luks2_luks1_convert.c:832 +#: lib/luks2/luks2_luks1_convert.c:798 msgid "Cannot convert to LUKS1 format - there are no active keyslots." msgstr "Nie można przekonwertować do formatu LUKS1 - nie ma aktywnych kluczy." -#: lib/luks2/luks2_luks1_convert.c:844 +#: lib/luks2/luks2_luks1_convert.c:810 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is in invalid state." msgstr "Nie można przekonwertować do formatu LUKS1 - klucz %u jest w błędnym stanie." -#: lib/luks2/luks2_luks1_convert.c:849 +#: lib/luks2/luks2_luks1_convert.c:815 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is unbound." msgstr "Nie można przekonwertować do formatu LUKS1 - klucz %u nie jest podłączony." -#: lib/luks2/luks2_luks1_convert.c:854 +#: lib/luks2/luks2_luks1_convert.c:820 #, c-format msgid "Cannot convert to LUKS1 format - slot %u (over maximum slots) is still active." msgstr "Nie można przekonwertować do formatu LUKS1 - klucz %u (powyzej maksimum) jest nadal aktywny." -#: lib/luks2/luks2_luks1_convert.c:859 +#: lib/luks2/luks2_luks1_convert.c:825 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is not LUKS1 compatible." msgstr "Nie można przekonwertować do formatu LUKS1 - klucz %u nie jest zgodny z LUKS1." -#: lib/luks2/luks2_reencrypt.c:1198 +#: lib/luks2/luks2_reencrypt.c:1199 #, c-format msgid "Hotzone size must be multiple of calculated zone alignment (%zu bytes)." msgstr "Rozmiar strefy gorącej musi być wielokrotnością wyliczonego wyrównania strefy (bajtów: %zu)." -#: lib/luks2/luks2_reencrypt.c:1203 +#: lib/luks2/luks2_reencrypt.c:1204 #, c-format msgid "Device size must be multiple of calculated zone alignment (%zu bytes)." msgstr "Rozmiar urządzenia musi być wielokrotnością wyliczonego wyrównania strefy (bajtów: %zu)." -#: lib/luks2/luks2_reencrypt.c:1410 lib/luks2/luks2_reencrypt.c:1596 -#: lib/luks2/luks2_reencrypt.c:1679 lib/luks2/luks2_reencrypt.c:1721 -#: lib/luks2/luks2_reencrypt.c:4080 +#: lib/luks2/luks2_reencrypt.c:1411 lib/luks2/luks2_reencrypt.c:1597 +#: lib/luks2/luks2_reencrypt.c:1680 lib/luks2/luks2_reencrypt.c:1722 +#: lib/luks2/luks2_reencrypt.c:4081 msgid "Failed to initialize old segment storage wrapper." msgstr "Nie udało się zainicjować obudowania przestrzeni starego segmentu." -#: lib/luks2/luks2_reencrypt.c:1424 lib/luks2/luks2_reencrypt.c:1574 +#: lib/luks2/luks2_reencrypt.c:1425 lib/luks2/luks2_reencrypt.c:1575 msgid "Failed to initialize new segment storage wrapper." msgstr "Nie udało się zainicjować obudowania przestrzeni nowego segmentu." -#: lib/luks2/luks2_reencrypt.c:1550 lib/luks2/luks2_reencrypt.c:4092 +#: lib/luks2/luks2_reencrypt.c:1551 lib/luks2/luks2_reencrypt.c:4093 msgid "Failed to initialize hotzone protection." msgstr "Nie udało się zainicjować ochrony strefy gorącej." -#: lib/luks2/luks2_reencrypt.c:1623 +#: lib/luks2/luks2_reencrypt.c:1624 msgid "Failed to read checksums for current hotzone." msgstr "Nie udało się odczytać sum kontrolnych dla aktualnej strefy gorącej." -#: lib/luks2/luks2_reencrypt.c:1630 lib/luks2/luks2_reencrypt.c:4107 +#: lib/luks2/luks2_reencrypt.c:1631 lib/luks2/luks2_reencrypt.c:4108 #, c-format msgid "Failed to read hotzone area starting at %." msgstr "Nie udało się odczytać obszaru strefy gorącej zaczynającego się od %." -#: lib/luks2/luks2_reencrypt.c:1649 +#: lib/luks2/luks2_reencrypt.c:1650 #, c-format msgid "Failed to decrypt sector %zu." msgstr "Nie udało się odszyfrować sektora %zu." -#: lib/luks2/luks2_reencrypt.c:1655 +#: lib/luks2/luks2_reencrypt.c:1656 #, c-format msgid "Failed to recover sector %zu." msgstr "Nie udało się odtworzyć sektora %zu." -#: lib/luks2/luks2_reencrypt.c:2208 +#: lib/luks2/luks2_reencrypt.c:2209 #, c-format msgid "Source and target device sizes don't match. Source %, target: %." msgstr "Rozmiary urządzenia źródłowego i docelowego różnią się. Źródłowe %, docelowe: %." -#: lib/luks2/luks2_reencrypt.c:2310 +#: lib/luks2/luks2_reencrypt.c:2311 #, c-format msgid "Failed to activate hotzone device %s." msgstr "Nie udało się uaktywnić urządzenia strefy gorącej %s." -#: lib/luks2/luks2_reencrypt.c:2322 +#: lib/luks2/luks2_reencrypt.c:2323 #, c-format msgid "Failed to allocate hotzone device %s." msgstr "Nie udało się przydzielić urządzenia strefy gorącej %s." -#: lib/luks2/luks2_reencrypt.c:2339 +#: lib/luks2/luks2_reencrypt.c:2340 #, c-format msgid "Failed to activate overlay device %s with actual origin table." msgstr "Nie udało się uaktywnić urządzenia nakładkowego %s z aktualną tablicą źródła." -#: lib/luks2/luks2_reencrypt.c:2346 +#: lib/luks2/luks2_reencrypt.c:2347 #, c-format msgid "Failed to load new mapping for device %s." msgstr "Nie udało się załadować nowego odwzorowania dla urządzenia %s." -#: lib/luks2/luks2_reencrypt.c:2418 +#: lib/luks2/luks2_reencrypt.c:2419 msgid "Failed to refresh reencryption devices stack." msgstr "Nie udało się odświeżyć stosu urządzenia ponownego szyfrowania." -#: lib/luks2/luks2_reencrypt.c:2615 +#: lib/luks2/luks2_reencrypt.c:2616 msgid "Failed to set new keyslots area size." msgstr "Nie udało się ustawić nowego rozmiaru obszaru kluczy." -#: lib/luks2/luks2_reencrypt.c:2751 +#: lib/luks2/luks2_reencrypt.c:2752 #, c-format msgid "Data shift value is not aligned to encryption sector size (% bytes)." msgstr "Wartość przesunięcia danych nie jest wyrównana do rozmiaru sektora szyfrowania (% B)." -#: lib/luks2/luks2_reencrypt.c:2788 src/utils_reencrypt.c:162 +#: lib/luks2/luks2_reencrypt.c:2789 src/utils_reencrypt.c:162 #, c-format msgid "Unsupported resilience mode %s" msgstr "Nieobsługiwany tryb odporności %s" -#: lib/luks2/luks2_reencrypt.c:2824 +#: lib/luks2/luks2_reencrypt.c:2825 msgid "Moved segment size can not be greater than data shift value." msgstr "Rozmiar przenoszonego segmentu nie może być większy niż wartość przesunięcia danych." -#: lib/luks2/luks2_reencrypt.c:2866 +#: lib/luks2/luks2_reencrypt.c:2867 msgid "Invalid reencryption resilience parameters." msgstr "Błędne parametry odporności przy ponownym szyfrowaniu." -#: lib/luks2/luks2_reencrypt.c:2888 +#: lib/luks2/luks2_reencrypt.c:2889 #, c-format msgid "Moved segment too large. Requested size %, available space for: %." msgstr "Przenoszony segment zbyt duży. Żądany rozmiar %, dostępne miejsce: %." -#: lib/luks2/luks2_reencrypt.c:2977 +#: lib/luks2/luks2_reencrypt.c:2978 msgid "Failed to clear table." msgstr "Nie udało się wyczyścić tablicy." -#: lib/luks2/luks2_reencrypt.c:3063 +#: lib/luks2/luks2_reencrypt.c:3064 #, c-format msgid "Data shift (% sectors) is less than future data offset (% sectors)." msgstr "Przesunięcie danych (sektorów: %) jest mniejsze niż przyszły offset danych (sektorów: %)." -#: lib/luks2/luks2_reencrypt.c:3078 lib/luks2/luks2_reencrypt.c:3085 +#: lib/luks2/luks2_reencrypt.c:3079 lib/luks2/luks2_reencrypt.c:3086 msgid "Reduced data size is larger than real device size." msgstr "Zmniejszony rozmiar danych jest większy niż rzeczywisty rozmiar urządzenia." -#: lib/luks2/luks2_reencrypt.c:3095 +#: lib/luks2/luks2_reencrypt.c:3096 #, c-format msgid "Data device is not aligned to encryption sector size (% bytes)." msgstr "Urzędzenie danych nie jest wyrównane do rozmiaru sektora szyfrowania (% B)." -#: lib/luks2/luks2_reencrypt.c:3125 lib/luks2/luks2_reencrypt.c:3643 -#: lib/luks2/luks2_reencrypt.c:3664 +#: lib/luks2/luks2_reencrypt.c:3126 lib/luks2/luks2_reencrypt.c:3644 +#: lib/luks2/luks2_reencrypt.c:3665 #, c-format msgid "Failed to open %s in exclusive mode (already mapped or mounted)." msgstr "Nie udało się otworzyć %s w trybie wyłączności (już odwzorowano lub zamontowano)." -#: lib/luks2/luks2_reencrypt.c:3332 +#: lib/luks2/luks2_reencrypt.c:3333 msgid "Device not marked for LUKS2 reencryption." msgstr "Urządzenie nie jest oznaczone do ponownego szyfrowania LUKS2." -#: lib/luks2/luks2_reencrypt.c:3349 lib/luks2/luks2_reencrypt.c:4403 +#: lib/luks2/luks2_reencrypt.c:3350 lib/luks2/luks2_reencrypt.c:4404 msgid "Failed to load LUKS2 reencryption context." msgstr "Nie udało się załadować kontekstu ponownego szyfrowania LUKS2." -#: lib/luks2/luks2_reencrypt.c:3444 lib/luks2/luks2_reencrypt.c:3784 +#: lib/luks2/luks2_reencrypt.c:3445 lib/luks2/luks2_reencrypt.c:3785 msgid "Device is not in reencryption." msgstr "Urządzenie nie jest w trakcie ponownego szyfrowania." -#: lib/luks2/luks2_reencrypt.c:3451 lib/luks2/luks2_reencrypt.c:3791 +#: lib/luks2/luks2_reencrypt.c:3452 lib/luks2/luks2_reencrypt.c:3792 msgid "Reencryption process is already running." msgstr "Proces ponownego szyfrowania już trwa." -#: lib/luks2/luks2_reencrypt.c:3453 lib/luks2/luks2_reencrypt.c:3793 +#: lib/luks2/luks2_reencrypt.c:3454 lib/luks2/luks2_reencrypt.c:3794 msgid "Failed to acquire reencryption lock." msgstr "Nie udało się uzyskać blokady dla ponownego szyfrowania." -#: lib/luks2/luks2_reencrypt.c:3471 +#: lib/luks2/luks2_reencrypt.c:3472 msgid "Cannot proceed with reencryption. Run reencryption recovery first." msgstr "Nie można kontynuować ponownego szyfrowania. Należy najpierw uruchomić odtworzenie ponownego szyfrowania." -#: lib/luks2/luks2_reencrypt.c:3607 +#: lib/luks2/luks2_reencrypt.c:3608 msgid "Active device size and requested reencryption size don't match." msgstr "Rozmiar urządzenia aktywnego oraz żądany rozmiar ponownego szyfrowania różnią się." -#: lib/luks2/luks2_reencrypt.c:3621 +#: lib/luks2/luks2_reencrypt.c:3622 msgid "Illegal device size requested in reencryption parameters." msgstr "W parametrach ponownego szyfrowania zażądano niedozwolonego rozmiaru urządzenia." -#: lib/luks2/luks2_reencrypt.c:3723 +#: lib/luks2/luks2_reencrypt.c:3724 msgid "Reencryption in-progress. Cannot perform recovery." msgstr "Ponowne szyfrowanie trwa. Nie można wykonać odzyskiwania." -#: lib/luks2/luks2_reencrypt.c:3744 +#: lib/luks2/luks2_reencrypt.c:3745 msgid "LUKS2 reencryption recovery failed." msgstr "Odtwarzanie ponownego szyfrowania LUKS2 nie powiodło się." -#: lib/luks2/luks2_reencrypt.c:3877 lib/luks2/luks2_reencrypt.c:4356 +#: lib/luks2/luks2_reencrypt.c:3878 lib/luks2/luks2_reencrypt.c:4357 msgid "Failed to initialize reencryption device stack." msgstr "Nie udało się zainicjować stosu urządzenia ponownego szyfrowania." -#: lib/luks2/luks2_reencrypt.c:3910 +#: lib/luks2/luks2_reencrypt.c:3911 msgid "LUKS2 reencryption already initialized in metadata." msgstr "Ponowne szyfrowanie LUKS2 jest już zainicjowane w metadanych." -#: lib/luks2/luks2_reencrypt.c:3918 +#: lib/luks2/luks2_reencrypt.c:3919 msgid "Failed to initialize LUKS2 reencryption in metadata." msgstr "Nie udało się zainicjować ponownego szyfrowania LUKS2 w metadanych." -#: lib/luks2/luks2_reencrypt.c:3971 lib/luks2/luks2_reencrypt.c:4003 -#: lib/luks2/luks2_reencrypt.c:4033 +#: lib/luks2/luks2_reencrypt.c:3972 lib/luks2/luks2_reencrypt.c:4004 +#: lib/luks2/luks2_reencrypt.c:4034 msgid "Reencryption is not supported for DAX (persistent memory) devices." msgstr "Ponowne szyfrowanie nie jest obsługiwane dla urządzeń DAX (pamięci trwałej)." -#: lib/luks2/luks2_reencrypt.c:4062 +#: lib/luks2/luks2_reencrypt.c:4063 msgid "Failed to set device segments for next reencryption hotzone." msgstr "Nie udało się ustawić segmentów urządzeń dla następnej strefy gorącej ponownego szyfrowania." -#: lib/luks2/luks2_reencrypt.c:4115 +#: lib/luks2/luks2_reencrypt.c:4116 msgid "Failed to write reencryption resilience metadata." msgstr "Nie udało się zapisać metadanych odporności ponownego szyfrowania." -#: lib/luks2/luks2_reencrypt.c:4122 +#: lib/luks2/luks2_reencrypt.c:4123 msgid "Decryption failed." msgstr "Odszyfrowanie nie powiodło się." -#: lib/luks2/luks2_reencrypt.c:4127 +#: lib/luks2/luks2_reencrypt.c:4128 #, c-format msgid "Failed to write hotzone area starting at %." msgstr "Nie udało się zapisać obszaru strefy gorącej zaczynającego się od %." -#: lib/luks2/luks2_reencrypt.c:4132 +#: lib/luks2/luks2_reencrypt.c:4133 msgid "Failed to sync data." msgstr "Nie udało się zsynchronizować danych." -#: lib/luks2/luks2_reencrypt.c:4140 +#: lib/luks2/luks2_reencrypt.c:4141 msgid "Failed to update metadata after current reencryption hotzone completed." msgstr "Nie udało się uaktualnić metadanych po zakończeniu aktualnej strefy gorącej ponownego szyfrowania." -#: lib/luks2/luks2_reencrypt.c:4229 +#: lib/luks2/luks2_reencrypt.c:4230 msgid "Failed to write LUKS2 metadata." msgstr "Nie udało się zapisać metadanych LUKS2." -#: lib/luks2/luks2_reencrypt.c:4252 +#: lib/luks2/luks2_reencrypt.c:4253 msgid "Failed to wipe unused data device area." msgstr "Nie udało się wymazać nieużywanego obszaru urządzenia danych." -#: lib/luks2/luks2_reencrypt.c:4258 +#: lib/luks2/luks2_reencrypt.c:4259 #, c-format msgid "Failed to remove unused (unbound) keyslot %d." msgstr "Nie udało się usunąć nieużywanego (nieprzypisanego) obszaru klucza %d." -#: lib/luks2/luks2_reencrypt.c:4268 +#: lib/luks2/luks2_reencrypt.c:4269 msgid "Failed to remove reencryption keyslot." msgstr "Nie udało się usunąć obszaru klucza ponownego szyfrowania." -#: lib/luks2/luks2_reencrypt.c:4278 +#: lib/luks2/luks2_reencrypt.c:4279 #, c-format msgid "Fatal error while reencrypting chunk starting at %, % sectors long." msgstr "Błąd krytyczny podczas ponownego szyfrowania fragmentu zaczynającego się od % o długości w sektorach %." -#: lib/luks2/luks2_reencrypt.c:4282 +#: lib/luks2/luks2_reencrypt.c:4283 msgid "Online reencryption failed." msgstr "Ponowne szyfrowanie online nie powiodło się." -#: lib/luks2/luks2_reencrypt.c:4287 +#: lib/luks2/luks2_reencrypt.c:4288 msgid "Do not resume the device unless replaced with error target manually." msgstr "Proszę nie wznawiać urządzenia dopóki nie zostanie zastąpione celem błędnym ręcznie." -#: lib/luks2/luks2_reencrypt.c:4339 +#: lib/luks2/luks2_reencrypt.c:4340 msgid "Cannot proceed with reencryption. Unexpected reencryption status." msgstr "Nie można kontynuować ponownego szyfrowania. Nieoczekiwany stan ponownego szyfrowania." -#: lib/luks2/luks2_reencrypt.c:4345 +#: lib/luks2/luks2_reencrypt.c:4346 msgid "Missing or invalid reencrypt context." msgstr "Brak lub błędny kontekst ponownego szyfrowania." -#: lib/luks2/luks2_reencrypt.c:4379 lib/luks2/luks2_reencrypt.c:4416 +#: lib/luks2/luks2_reencrypt.c:4380 lib/luks2/luks2_reencrypt.c:4417 msgid "Failed to update reencryption context." msgstr "Nie udało się uaktualnić kontekstu ponownego szyfrowania." -#: lib/luks2/luks2_reencrypt_digest.c:401 +#: lib/luks2/luks2_reencrypt_digest.c:402 msgid "Reencryption metadata is invalid." msgstr "Metadane ponownego szyfrowania są błędne." @@ -2146,7 +2137,7 @@ msgstr "Parametry szyfrowania kluczy mogą być ustawione tylko dla urządzeń L msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encryption." msgstr "Parametry szyfrowania kluczy nie są zgodne z szyfrowaniem kluczy LUKS2." -#: src/cryptsetup.c:150 src/cryptsetup.c:1178 src/cryptsetup.c:1545 +#: src/cryptsetup.c:150 src/cryptsetup.c:1179 src/cryptsetup.c:1544 #: src/utils_reencrypt.c:1887 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." @@ -2174,7 +2165,7 @@ msgstr "UWAGA: Parametr --hash jest ignorowany w trybie zwykłym z podanym pliki msgid "WARNING: The --keyfile-size option is being ignored, the read size is the same as the encryption key size.\n" msgstr "UWAGA: Opcja --keyfile-size jest ignorowana, rozmiar odczytu jest taki sam, jak rozmiar klucza szyfrującego.\n" -#: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 +#: src/cryptsetup.c:226 src/cryptsetup.c:1374 src/cryptsetup.c:1597 #: src/integritysetup.c:188 src/utils_reencrypt.c:2138 #, c-format msgid "Blkid scan failed for %s." @@ -2185,9 +2176,9 @@ msgstr "Skanowanie blkid dla %s nie powiodło się." msgid "Detected device signature(s) on %s. Proceeding further may damage existing data." msgstr "Wykryto sygnatury urządzeń na %s. Dalsze operacje mogą uszkodzić istniejące dane." -#: src/cryptsetup.c:238 src/cryptsetup.c:1261 src/cryptsetup.c:1309 -#: src/cryptsetup.c:1382 src/cryptsetup.c:1522 src/cryptsetup.c:1610 -#: src/cryptsetup.c:2495 src/cryptsetup.c:2924 src/integritysetup.c:178 +#: src/cryptsetup.c:238 src/cryptsetup.c:1260 src/cryptsetup.c:1308 +#: src/cryptsetup.c:1381 src/cryptsetup.c:1521 src/cryptsetup.c:1609 +#: src/cryptsetup.c:2494 src/cryptsetup.c:2923 src/integritysetup.c:178 #: src/utils_reencrypt.c:111 src/utils_reencrypt.c:457 #: src/utils_reencrypt.c:925 msgid "Operation aborted.\n" @@ -2237,7 +2228,7 @@ msgstr "" "Zrzut ten powinien być zawsze zapisywany w postaci zaszyfrowanej\n" "w bezpiecznym miejscu." -#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2520 +#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2519 msgid "" "The header dump with volume key is sensitive information\n" "that allows access to encrypted partition without a passphrase.\n" @@ -2262,9 +2253,9 @@ msgstr "Nie można określić rozmiaru klucza wolumenu dla FVAULT2, proszę uży msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "Urządzenie %s jest nadal aktywne i zaplanowane do odroczonego usunięcia.\n" -#: src/cryptsetup.c:881 src/cryptsetup.c:1808 src/cryptsetup.c:2082 -#: src/cryptsetup.c:2229 src/cryptsetup.c:2648 src/cryptsetup.c:2729 -#: src/cryptsetup.c:3262 +#: src/cryptsetup.c:881 src/cryptsetup.c:1807 src/cryptsetup.c:2081 +#: src/cryptsetup.c:2228 src/cryptsetup.c:2647 src/cryptsetup.c:2728 +#: src/cryptsetup.c:3261 #, c-format msgid "Failed to set external tokens path %s." msgstr "Nie udało się ustawić ścieżki tokenów zewnętrznych %s." @@ -2301,31 +2292,35 @@ msgstr "%-10s %4u iteracji, pamięć: %5u, równoległe wątki (CPU): %1u dla kl msgid "Result of benchmark is not reliable." msgstr "Wynik testu wydajności nie jest wiarygodny." -#: src/cryptsetup.c:1170 +#: src/cryptsetup.c:1171 msgid "# Tests are approximate using memory only (no storage IO).\n" msgstr "# Testy są przybliżone tylko z użyciem pamięci (bez we/wy na dysk).\n" #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1195 +#: src/cryptsetup.c:1196 #, c-format msgid "#%*s Algorithm | Key | Encryption | Decryption\n" msgstr "#%*s Algorytm | Klucz | Szyfrowanie | Odszyfrowywanie\n" -#: src/cryptsetup.c:1203 +#: src/cryptsetup.c:1204 #, c-format msgid "Cipher %s (with %i bits key) is not available." msgstr "Szyfr %s (rozmiar klucza w bitach: %i) nie jest dostępny." #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1222 +#: src/cryptsetup.c:1225 msgid "# Algorithm | Key | Encryption | Decryption\n" msgstr "# Algorytm | Klucz | Szyfrowanie | Odszyfrowywanie\n" -#: src/cryptsetup.c:1233 +#: src/cryptsetup.c:1238 msgid "N/A" msgstr "N/D" -#: src/cryptsetup.c:1258 +#: src/cryptsetup.c:1241 +msgid "# Cipher speed test is not available.\n" +msgstr "# Test szybkości szyfru nie jest dostępny.\n" + +#: src/cryptsetup.c:1257 msgid "" "Unprotected LUKS2 reencryption metadata detected. Please verify the reencryption operation is desirable (see luksDump output)\n" "and continue (upgrade metadata) only if you acknowledge the operation as genuine." @@ -2333,27 +2328,27 @@ msgstr "" "Wybryto niezabezpieczone metadane ponownego szyfrowania LUKS2. Proszę sprawdzić, czy operacja ponownego szyfrowania jest pożądana (p. wyjście luksDump)\n" "i kontynuować (uaktualnić metadane) tylko jeśli ta operacja ma być faktycznie wykonana." -#: src/cryptsetup.c:1264 +#: src/cryptsetup.c:1263 msgid "Enter passphrase to protect and upgrade reencryption metadata: " msgstr "Hasło do zabezpieczenia i uaktualnienia metadanych ponownego szyfrowania: " -#: src/cryptsetup.c:1308 +#: src/cryptsetup.c:1307 msgid "Really proceed with LUKS2 reencryption recovery?" msgstr "Naprawdę kontynuować odtwarzanie ponownego szyfrowania LUKS2?" -#: src/cryptsetup.c:1317 +#: src/cryptsetup.c:1316 msgid "Enter passphrase to verify reencryption metadata digest: " msgstr "Hasło do weryfikacji skrótu metadanych ponownego szyfrowania: " -#: src/cryptsetup.c:1319 +#: src/cryptsetup.c:1318 msgid "Enter passphrase for reencryption recovery: " msgstr "Hasło do odtwarzania ponownego szyfrowania: " -#: src/cryptsetup.c:1381 +#: src/cryptsetup.c:1380 msgid "Really try to repair LUKS device header?" msgstr "Naprawdę próbować naprawić nagłówek urządzenia LUKS?" -#: src/cryptsetup.c:1409 src/integritysetup.c:76 src/integritysetup.c:244 +#: src/cryptsetup.c:1408 src/integritysetup.c:76 src/integritysetup.c:244 msgid "" "\n" "Wipe interrupted." @@ -2361,7 +2356,7 @@ msgstr "" "\n" "Wymazywanie przerwane." -#: src/cryptsetup.c:1414 src/integritysetup.c:81 src/integritysetup.c:289 +#: src/cryptsetup.c:1413 src/integritysetup.c:81 src/integritysetup.c:289 msgid "" "Wiping device to initialize integrity checksum.\n" "You can interrupt this by pressing CTRL+c (rest of not wiped device will contain invalid checksum).\n" @@ -2369,167 +2364,167 @@ msgstr "" "Czyszczenie urządzenia w celu zainicjowania sumy kontrolnej integralności.\n" "Można przerwać ten proces wciskając Ctrl+C (reszta niewymazanego urządzenia będzie zawierać błędną sumę kontrolną).\n" -#: src/cryptsetup.c:1436 src/integritysetup.c:103 +#: src/cryptsetup.c:1435 src/integritysetup.c:103 #, c-format msgid "Cannot deactivate temporary device %s." msgstr "Nie można dezaktywować urządzenia tymczasowego %s." -#: src/cryptsetup.c:1484 +#: src/cryptsetup.c:1483 msgid "OPAL hw-only encryption does not support --cipher and --key-size, options ignored." msgstr "Szyfrowanie wyłącznie sprzętowe OPAL nie obsługuje --cipher i --key-size, opcje zignorowano." -#: src/cryptsetup.c:1497 +#: src/cryptsetup.c:1496 msgid "Integrity option can be used only for LUKS2 format." msgstr "Opcja integralności może być używana tylko dla formatu LUKS2." -#: src/cryptsetup.c:1502 src/cryptsetup.c:1582 +#: src/cryptsetup.c:1501 src/cryptsetup.c:1581 msgid "Unsupported LUKS2 metadata size options." msgstr "Nieobsługiwane opcje rozmiaru metadanych LUKS2." -#: src/cryptsetup.c:1507 +#: src/cryptsetup.c:1506 msgid "OPAL is supported only for LUKS2 format." msgstr "OPAL jest obsługiwany tylko dla formatu LUKS2." -#: src/cryptsetup.c:1512 +#: src/cryptsetup.c:1511 msgid "Inline hw tags are supported only for LUKS2 format." msgstr "Znaczniki hw wbudowane są obsługiwane tylko dla formatu LUKS2." -#: src/cryptsetup.c:1521 +#: src/cryptsetup.c:1520 msgid "Header file does not exist, do you want to create it?" msgstr "Plik nagłówka nie istnieje, czy utworzyć go?" -#: src/cryptsetup.c:1529 +#: src/cryptsetup.c:1528 #, c-format msgid "Cannot create header file %s." msgstr "Nie można utworzyć pliku nagłówka %s." -#: src/cryptsetup.c:1555 src/integritysetup.c:126 src/integritysetup.c:141 +#: src/cryptsetup.c:1554 src/integritysetup.c:126 src/integritysetup.c:141 #: src/integritysetup.c:150 src/integritysetup.c:328 src/integritysetup.c:336 #: src/integritysetup.c:346 msgid "No known integrity specification pattern detected." msgstr "Nie wykryto znanego wzorca określającego integralność." -#: src/cryptsetup.c:1557 +#: src/cryptsetup.c:1556 msgid "Cannot use specified integrity key size." msgstr "Nie można użyć podanego rozmiaru klucza integralności." -#: src/cryptsetup.c:1575 +#: src/cryptsetup.c:1574 #, c-format msgid "Cannot use %s as on-disk header." msgstr "Nie można użyć %s jako nagłówka na dysku." -#: src/cryptsetup.c:1604 src/integritysetup.c:172 +#: src/cryptsetup.c:1603 src/integritysetup.c:172 #, c-format msgid "This will overwrite data on %s irrevocably." msgstr "To nieodwołalnie nadpisze dane na %s." -#: src/cryptsetup.c:1641 +#: src/cryptsetup.c:1640 msgid "OPAL Admin password cannot be empty." msgstr "Hasło administratora OPAL nie może być puste." -#: src/cryptsetup.c:1655 src/cryptsetup.c:2099 src/cryptsetup.c:2242 -#: src/cryptsetup.c:2377 src/cryptsetup.c:2443 src/utils_reencrypt_luks1.c:428 +#: src/cryptsetup.c:1654 src/cryptsetup.c:2098 src/cryptsetup.c:2241 +#: src/cryptsetup.c:2376 src/cryptsetup.c:2442 src/utils_reencrypt_luks1.c:428 msgid "Failed to set pbkdf parameters." msgstr "Nie udało się ustawić parametrów PBKDF." -#: src/cryptsetup.c:1786 +#: src/cryptsetup.c:1785 msgid "Reduced data offset is allowed only for detached LUKS header." msgstr "Offset zmniejszonych danych jest dozwolony tylko dla odłączonego nagłówka LUKS." -#: src/cryptsetup.c:1793 +#: src/cryptsetup.c:1792 #, c-format msgid "LUKS file container %s is too small for activation, there is no remaining space for data." msgstr "Kontener plikowy LUKS %s jest zbyt mały do uaktywnienia, nie ma miejsca pozostałego na dane." -#: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:277 +#: src/cryptsetup.c:1834 src/cryptsetup.c:2247 src/utils_reencrypt.c:277 #: src/utils_reencrypt.c:369 src/utils_reencrypt.c:1907 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "Nie można określić rozmiaru klucza wolumenu dla LUKS bez kluczy, proszę użyć opcji --key-size." -#: src/cryptsetup.c:1854 src/utils_reencrypt.c:303 +#: src/cryptsetup.c:1853 src/utils_reencrypt.c:303 msgid "Device requires two volume keys." msgstr "Urządzenie wymaga dwóch kluczy wolumenu." -#: src/cryptsetup.c:1889 +#: src/cryptsetup.c:1888 msgid "Some specified activation parameters were ignored with OPAL hw-only encryption." msgstr "Niektóre podane parametry aktywacji zostały zignorowane przy szyforwaniu wyłącznie sprzętowym OPAL." -#: src/cryptsetup.c:1894 +#: src/cryptsetup.c:1893 msgid "Device activated but cannot make flags persistent." msgstr "Urządzenie uaktywnione, ale nie można uczynić flag trwałymi." -#: src/cryptsetup.c:1974 src/cryptsetup.c:2042 +#: src/cryptsetup.c:1973 src/cryptsetup.c:2041 #, c-format msgid "Keyslot %d is selected for deletion." msgstr "Klucz %d jest wybrany do usunięcia." -#: src/cryptsetup.c:1986 src/cryptsetup.c:2046 +#: src/cryptsetup.c:1985 src/cryptsetup.c:2045 msgid "This is the last keyslot. Device will become unusable after purging this key." msgstr "To jest ostatni klucz. Urządzenie stanie się bezużyteczne po usunięciu tego klucza." -#: src/cryptsetup.c:1987 +#: src/cryptsetup.c:1986 msgid "Enter any remaining passphrase: " msgstr "Dowolne pozostałe hasło: " -#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 +#: src/cryptsetup.c:1987 src/cryptsetup.c:2047 msgid "Operation aborted, the keyslot was NOT wiped.\n" msgstr "Operacja przerwana, klucz NIE został wymazany.\n" -#: src/cryptsetup.c:2024 +#: src/cryptsetup.c:2023 msgid "Enter passphrase to be deleted: " msgstr "Hasło do usunięcia: " -#: src/cryptsetup.c:2074 src/cryptsetup.c:2426 src/cryptsetup.c:3086 -#: src/cryptsetup.c:3253 +#: src/cryptsetup.c:2073 src/cryptsetup.c:2425 src/cryptsetup.c:3085 +#: src/cryptsetup.c:3252 #, c-format msgid "Device %s is not a valid LUKS2 device." msgstr "Urządzenie %s nie jest prawidłowym urządzeniem LUKS2." -#: src/cryptsetup.c:2113 src/cryptsetup.c:2312 +#: src/cryptsetup.c:2112 src/cryptsetup.c:2311 msgid "Enter new passphrase for key slot: " msgstr "Nowe hasło dla klucza: " -#: src/cryptsetup.c:2147 src/utils_luks.c:342 +#: src/cryptsetup.c:2146 src/utils_luks.c:342 #, c-format msgid "Enter token PIN: " msgstr "Proszę wprowadzić PIN: " -#: src/cryptsetup.c:2149 src/utils_luks.c:344 +#: src/cryptsetup.c:2148 src/utils_luks.c:344 #, c-format msgid "Enter token %d PIN: " msgstr "Proszę wprowadzić PIN tokenu %d: " -#: src/cryptsetup.c:2208 +#: src/cryptsetup.c:2207 msgid "WARNING: The --key-slot parameter is used for new keyslot number.\n" msgstr "UWAGA: Parametr --key-slot jest używany do numeru nowego klucza.\n" -#: src/cryptsetup.c:2285 src/utils_reencrypt_luks1.c:1094 +#: src/cryptsetup.c:2284 src/utils_reencrypt_luks1.c:1094 #, c-format msgid "Enter any existing passphrase: " msgstr "Dowolne istniejące hasło: " -#: src/cryptsetup.c:2381 +#: src/cryptsetup.c:2380 msgid "Enter passphrase to be changed: " msgstr "Hasło, które ma być zmienione: " -#: src/cryptsetup.c:2397 src/utils_reencrypt_luks1.c:1080 +#: src/cryptsetup.c:2396 src/utils_reencrypt_luks1.c:1080 msgid "Enter new passphrase: " msgstr "Nowe hasło: " -#: src/cryptsetup.c:2447 +#: src/cryptsetup.c:2446 msgid "Enter passphrase for keyslot to be converted: " msgstr "Hasło dla klucza do konwersji: " -#: src/cryptsetup.c:2471 +#: src/cryptsetup.c:2470 msgid "Only one device argument for isLuks operation is supported." msgstr "Dla operacji isLuks obsługiwany jest tylko jeden argument będący urządzeniem." -#: src/cryptsetup.c:2576 +#: src/cryptsetup.c:2575 #, c-format msgid "Keyslot %d does not contain unbound key." msgstr "Miejsce %d nie zawiera niepowiązanego klucza." -#: src/cryptsetup.c:2581 +#: src/cryptsetup.c:2580 msgid "" "The header dump with unbound key is sensitive information.\n" "This dump should be stored encrypted in a safe place." @@ -2538,52 +2533,52 @@ msgstr "" "Zrzut ten powinien być zawsze zapisywany w postaci zaszyfrowanej\n" "w bezpiecznym miejscu." -#: src/cryptsetup.c:2676 src/cryptsetup.c:2712 +#: src/cryptsetup.c:2675 src/cryptsetup.c:2711 #, c-format msgid "%s is not active %s device name." msgstr "%s nie jest nazwą aktywnego urządzenia %s." -#: src/cryptsetup.c:2707 +#: src/cryptsetup.c:2706 #, c-format msgid "%s is not active LUKS device name or header is missing." msgstr "%s nie jest nazwą aktywnego urządzenia LUKS lub brak nagłówka." -#: src/cryptsetup.c:2784 src/cryptsetup.c:2803 +#: src/cryptsetup.c:2783 src/cryptsetup.c:2802 msgid "Option --header-backup-file is required." msgstr "Wymagana jest opcja --header-backup-file." -#: src/cryptsetup.c:2834 +#: src/cryptsetup.c:2833 #, c-format msgid "%s is not cryptsetup managed device." msgstr "%s nie jest urządzeniem zarządzanym przez cryptsetup." -#: src/cryptsetup.c:2845 +#: src/cryptsetup.c:2844 #, c-format msgid "Refresh is not supported for device type %s" msgstr "Odświeżanie nie jest obsługiwane dla typu urządzenia %s" -#: src/cryptsetup.c:2895 +#: src/cryptsetup.c:2894 #, c-format msgid "Unrecognized metadata device type %s." msgstr "Nierozpoznany typ urządzenia metadanych %s." -#: src/cryptsetup.c:2897 +#: src/cryptsetup.c:2896 msgid "Command requires device and mapped name as arguments." msgstr "Polecenie wymaga urządzenia i nazwy odwzorowywanej jako argumentów." -#: src/cryptsetup.c:2915 +#: src/cryptsetup.c:2914 msgid "Enter OPAL PSID: " msgstr "Proszę wprowadzić PSID OPAL: " -#: src/cryptsetup.c:2915 +#: src/cryptsetup.c:2914 msgid "Enter OPAL Admin password: " msgstr "Hasło administratora OPAL: " -#: src/cryptsetup.c:2923 +#: src/cryptsetup.c:2922 msgid "WARNING: WHOLE disk will be factory reset and all data will be lost! Continue?" msgstr "UWAGA: CAŁY dysk będzie przywrócony do stanu fabrycznego i wszystkie dane zostaną utracone! Kontynuować?" -#: src/cryptsetup.c:2966 +#: src/cryptsetup.c:2965 #, c-format msgid "" "This operation will erase all keyslots on device %s.\n" @@ -2592,363 +2587,363 @@ msgstr "" "Ta operacja usunię wszystkie klucze na urządzeniu %s.\n" "Urządzenie po tej operacji stanie się bezużyteczne." -#: src/cryptsetup.c:2973 +#: src/cryptsetup.c:2972 msgid "Operation aborted, keyslots were NOT wiped.\n" msgstr "Operacja przerwana, klucze NIE zostały wymazane.\n" -#: src/cryptsetup.c:3012 +#: src/cryptsetup.c:3011 msgid "Invalid LUKS type, only luks1 and luks2 are supported." msgstr "Błędny typ LUKS, obsługiwane są tylko luks1 i luks2." -#: src/cryptsetup.c:3028 +#: src/cryptsetup.c:3027 #, c-format msgid "Device is already %s type." msgstr "Urządzenie już ma typ %s." -#: src/cryptsetup.c:3035 +#: src/cryptsetup.c:3034 #, c-format msgid "This operation will convert %s to %s format.\n" msgstr "Ta operacja przekonwertuje %s do formatu %s.\n" -#: src/cryptsetup.c:3038 +#: src/cryptsetup.c:3037 msgid "Operation aborted, device was NOT converted.\n" msgstr "Operacja przerwana, urządzenie NIE zostało skonwertowane.\n" -#: src/cryptsetup.c:3078 +#: src/cryptsetup.c:3077 msgid "Option --priority, --label or --subsystem is missing." msgstr "Brak opcji --priority, --label lub --subsystem." -#: src/cryptsetup.c:3112 src/cryptsetup.c:3152 src/cryptsetup.c:3172 +#: src/cryptsetup.c:3111 src/cryptsetup.c:3151 src/cryptsetup.c:3171 #, c-format msgid "Token %d is invalid." msgstr "Token %d jest błędny." -#: src/cryptsetup.c:3115 src/cryptsetup.c:3175 +#: src/cryptsetup.c:3114 src/cryptsetup.c:3174 #, c-format msgid "Token %d in use." msgstr "Token %d jest w użyciu." -#: src/cryptsetup.c:3127 +#: src/cryptsetup.c:3126 #, c-format msgid "Failed to add luks2-keyring token %d." msgstr "Nie udało się dodać tokenu %d do pęku kluczy luks2." -#: src/cryptsetup.c:3138 src/cryptsetup.c:3201 +#: src/cryptsetup.c:3137 src/cryptsetup.c:3200 #, c-format msgid "Failed to assign token %d to keyslot %d." msgstr "Nie udało się przypisać tokenu %d do klucza %d." -#: src/cryptsetup.c:3155 +#: src/cryptsetup.c:3154 #, c-format msgid "Token %d is not in use." msgstr "Token %d nie jest w użyciu." -#: src/cryptsetup.c:3192 +#: src/cryptsetup.c:3191 msgid "Failed to import token from file." msgstr "Nie udało się zaimportować tokenu z pliku." -#: src/cryptsetup.c:3217 +#: src/cryptsetup.c:3216 #, c-format msgid "Failed to get token %d for export." msgstr "Nie udało się pobrać tokenu %d do eksportu." -#: src/cryptsetup.c:3230 +#: src/cryptsetup.c:3229 #, c-format msgid "Token %d is not assigned to keyslot %d." msgstr "Token %d nie jest przypisany do klucza %d." -#: src/cryptsetup.c:3232 src/cryptsetup.c:3239 +#: src/cryptsetup.c:3231 src/cryptsetup.c:3238 #, c-format msgid "Failed to unassign token %d from keyslot %d." msgstr "Nie udało się usunąć przypisania tokenu %d do klucza %d." -#: src/cryptsetup.c:3298 +#: src/cryptsetup.c:3297 msgid "Option --tcrypt-hidden, --tcrypt-system or --tcrypt-backup is supported only for TCRYPT device." msgstr "Opcje --tcrypt-hidden, --tcrypt-system i --tcrypt-backup są obsługiwane tylko dla urządzeń TCRYPT." -#: src/cryptsetup.c:3301 +#: src/cryptsetup.c:3300 msgid "Option --veracrypt or --disable-veracrypt is supported only for TCRYPT device type." msgstr "Opcje --veracrypt i --disable-veracrypt są obsługiwane tylko dla typu urządzeń TCRYPT." -#: src/cryptsetup.c:3304 +#: src/cryptsetup.c:3303 msgid "Option --veracrypt-pim is supported only for VeraCrypt compatible devices." msgstr "Opcja --veracrypt-pim jest obsługiwana tylko dla urządzeń zgodnych z VeraCryptem." -#: src/cryptsetup.c:3308 +#: src/cryptsetup.c:3307 msgid "Option --veracrypt-query-pim is supported only for VeraCrypt compatible devices." msgstr "Opcja --veracrypt-query-pim jest obsługiwana tylko dla urządzeń zgodnych z VeraCryptem." -#: src/cryptsetup.c:3310 +#: src/cryptsetup.c:3309 msgid "The options --veracrypt-pim and --veracrypt-query-pim are mutually exclusive." msgstr "Opcje --veracrypt-pim i --veracrypt-query-pim wykluczają się wzajemnie." -#: src/cryptsetup.c:3319 +#: src/cryptsetup.c:3318 msgid "Option --persistent is not allowed with --test-passphrase." msgstr "Opcja --persistent nie jest dozwolona z --test-passphrase." -#: src/cryptsetup.c:3322 +#: src/cryptsetup.c:3321 msgid "Options --refresh and --test-passphrase are mutually exclusive." msgstr "Opcje --refresh i --test-passphrase wykluczają się wzajemnie." -#: src/cryptsetup.c:3325 +#: src/cryptsetup.c:3324 msgid "Option --shared is allowed only for open of plain device." msgstr "Opcja --shared jest dozwolona tylko dla operacji otwarcia zwykłego urządzenia." -#: src/cryptsetup.c:3328 +#: src/cryptsetup.c:3327 msgid "Option --skip is supported only for open of plain and loopaes devices." msgstr "Opcja --skip jest obsługiwana tylko przy otwieraniu urządzeń plain i loopaes." -#: src/cryptsetup.c:3331 +#: src/cryptsetup.c:3330 msgid "Option --offset with open action is only supported for plain and loopaes devices." msgstr "Opcja --offset z akcją open jest obsługiwana tylko dla urządzeń plain i loopaes." -#: src/cryptsetup.c:3334 +#: src/cryptsetup.c:3333 msgid "Option --tcrypt-hidden cannot be combined with --allow-discards." msgstr "Opcji --tcrypt-hidden nie można łączyć z --allow-discards." -#: src/cryptsetup.c:3338 +#: src/cryptsetup.c:3337 msgid "Sector size option with open action is supported only for plain devices." msgstr "Opcja rozmiaru sektora z akcją open jest obsługiwana tylko dla urządzeń plain." -#: src/cryptsetup.c:3342 +#: src/cryptsetup.c:3341 msgid "Large IV sectors option is supported only for opening plain type device with sector size larger than 512 bytes." msgstr "Opcja dużych rozmiarów sektorów IV jest obsługiwana tylko przy otwieraniu urządzeń typu plain z sektorem większym niż 512 bajtów." -#: src/cryptsetup.c:3347 +#: src/cryptsetup.c:3346 msgid "Option --test-passphrase is allowed only for open of LUKS, TCRYPT, BITLK and FVAULT2 devices." msgstr "Opcja --test-passphrase jest dozwolona tylko przy otwieraniu urządzeń LUKS, TRCYPT, BITLK i FVAULT2." -#: src/cryptsetup.c:3350 src/cryptsetup.c:3380 +#: src/cryptsetup.c:3349 src/cryptsetup.c:3379 msgid "Options --device-size and --size cannot be combined." msgstr "Opcji --device-size i --size nie można łączyć." -#: src/cryptsetup.c:3353 +#: src/cryptsetup.c:3352 msgid "Option --unbound is allowed only for open of luks device." msgstr "Opcja --unbound jest dozwolona tylko dla operacji otwarcia urządzenia LUKS." -#: src/cryptsetup.c:3356 +#: src/cryptsetup.c:3355 msgid "Option --unbound cannot be used without --test-passphrase." msgstr "Opcja --unbound nie może być użyta bez --test-passphrase." -#: src/cryptsetup.c:3360 +#: src/cryptsetup.c:3359 msgid "Option --volume-key-keyring cannot be combined with --hash or --volume-key-file." msgstr "Opcji --volume-key-keyring nie można łączyć z --hash ani --volume-key-file." -#: src/cryptsetup.c:3363 +#: src/cryptsetup.c:3362 msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "Obie opcje --volume-key-file muszą być sparowane z odpowiednimi opcjami --key-size." -#: src/cryptsetup.c:3372 src/veritysetup.c:673 src/integritysetup.c:787 +#: src/cryptsetup.c:3371 src/veritysetup.c:673 src/integritysetup.c:787 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "Opcje --cancel-deferred i --deferred nie mogą być użyte naraz." -#: src/cryptsetup.c:3388 +#: src/cryptsetup.c:3387 msgid "Option --active-name can be set only for LUKS2 device." msgstr "Opcja --active-name może być ustawiona tylko dla urządzenia LUKS2." -#: src/cryptsetup.c:3391 +#: src/cryptsetup.c:3390 msgid "Options --active-name and --force-offline-reencrypt cannot be combined." msgstr "Opcji --active-name i --force-offline-reencrypt nie można łączyć." -#: src/cryptsetup.c:3394 +#: src/cryptsetup.c:3393 msgid "Options --new-volume-key-file and --keep-key cannot be combined." msgstr "Opcji --new-volume-key-file i --keep-key nie można łączyć." -#: src/cryptsetup.c:3397 +#: src/cryptsetup.c:3396 msgid "Options --new-volume-key-keyring and --keep-key cannot be combined." msgstr "Opcji --new-volume-key-keyring i --keep-key nie można łączyć." -#: src/cryptsetup.c:3405 src/cryptsetup.c:3435 +#: src/cryptsetup.c:3404 src/cryptsetup.c:3434 msgid "Keyslot specification is required." msgstr "Wymagane jest określenie klucza." -#: src/cryptsetup.c:3413 +#: src/cryptsetup.c:3412 msgid "Options --align-payload and --offset cannot be combined." msgstr "Opcji --align-payload i --offset nie można łączyć." -#: src/cryptsetup.c:3416 +#: src/cryptsetup.c:3415 msgid "Option --integrity-no-wipe can be used only for format action with integrity extension." msgstr "Opcja --integrity-no-wipe może być użyta tylko do akcji formatowania z rozszerzeniem integralności." -#: src/cryptsetup.c:3419 +#: src/cryptsetup.c:3418 msgid "Only one of --use-[u]random options is allowed." msgstr "Dozwolona jest tylko jedna z opcji --use-[u]random." -#: src/cryptsetup.c:3427 +#: src/cryptsetup.c:3426 msgid "Key size is required with --unbound option." msgstr "Przy opcji --unbound wymagany jest rozmiar klucza." -#: src/cryptsetup.c:3447 +#: src/cryptsetup.c:3446 msgid "Invalid token action." msgstr "Błędna akcja token." -#: src/cryptsetup.c:3450 +#: src/cryptsetup.c:3449 msgid "--key-description parameter is mandatory for token add action." msgstr "Parametr --key-description jest wymagany do akcji dodania tokenu." -#: src/cryptsetup.c:3454 src/cryptsetup.c:3467 +#: src/cryptsetup.c:3453 src/cryptsetup.c:3466 msgid "Action requires specific token. Use --token-id parameter." msgstr "Akcja wymaga określonego tokenu. Należy użyć parametru --token-id." -#: src/cryptsetup.c:3458 +#: src/cryptsetup.c:3457 msgid "Option --unbound is valid only with token add action." msgstr "Opcja --unbound jest dozwolona tylko dla operacji dodania tokenu." -#: src/cryptsetup.c:3460 +#: src/cryptsetup.c:3459 msgid "Options --key-slot and --unbound cannot be combined." msgstr "Opcji --key-slot i --unbound nie można łączyć." -#: src/cryptsetup.c:3465 +#: src/cryptsetup.c:3464 msgid "Action requires specific keyslot. Use --key-slot parameter." msgstr "Akcja wymaga określonego klucza. Należy użyć parametru --key-slot." -#: src/cryptsetup.c:3481 +#: src/cryptsetup.c:3480 msgid " [--type ] []" msgstr " [--type ] []" -#: src/cryptsetup.c:3481 src/veritysetup.c:487 src/integritysetup.c:554 +#: src/cryptsetup.c:3480 src/veritysetup.c:487 src/integritysetup.c:554 msgid "open device as " msgstr "otwarcie urządzenia jako " -#: src/cryptsetup.c:3482 src/cryptsetup.c:3483 src/cryptsetup.c:3484 +#: src/cryptsetup.c:3481 src/cryptsetup.c:3482 src/cryptsetup.c:3483 #: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:555 #: src/integritysetup.c:556 src/integritysetup.c:558 msgid "" msgstr "" -#: src/cryptsetup.c:3482 src/veritysetup.c:488 src/integritysetup.c:555 +#: src/cryptsetup.c:3481 src/veritysetup.c:488 src/integritysetup.c:555 msgid "close device (remove mapping)" msgstr "zamknięcie urządzenia (usunięcie odwzorowania)" -#: src/cryptsetup.c:3483 src/integritysetup.c:558 +#: src/cryptsetup.c:3482 src/integritysetup.c:558 msgid "resize active device" msgstr "zmiana rozmiaru aktywnego urządzenia" -#: src/cryptsetup.c:3484 +#: src/cryptsetup.c:3483 msgid "show device status" msgstr "pokazanie stanu urządzenia" -#: src/cryptsetup.c:3485 +#: src/cryptsetup.c:3484 msgid "[--cipher ]" msgstr "[--cipher ]" -#: src/cryptsetup.c:3485 +#: src/cryptsetup.c:3484 msgid "benchmark cipher" msgstr "test szybkości szyfru" -#: src/cryptsetup.c:3486 src/cryptsetup.c:3487 src/cryptsetup.c:3488 -#: src/cryptsetup.c:3489 src/cryptsetup.c:3490 src/cryptsetup.c:3497 -#: src/cryptsetup.c:3498 src/cryptsetup.c:3499 src/cryptsetup.c:3500 -#: src/cryptsetup.c:3501 src/cryptsetup.c:3502 src/cryptsetup.c:3503 -#: src/cryptsetup.c:3504 src/cryptsetup.c:3505 src/cryptsetup.c:3506 +#: src/cryptsetup.c:3485 src/cryptsetup.c:3486 src/cryptsetup.c:3487 +#: src/cryptsetup.c:3488 src/cryptsetup.c:3489 src/cryptsetup.c:3496 +#: src/cryptsetup.c:3497 src/cryptsetup.c:3498 src/cryptsetup.c:3499 +#: src/cryptsetup.c:3500 src/cryptsetup.c:3501 src/cryptsetup.c:3502 +#: src/cryptsetup.c:3503 src/cryptsetup.c:3504 src/cryptsetup.c:3505 msgid "" msgstr "" -#: src/cryptsetup.c:3486 +#: src/cryptsetup.c:3485 msgid "try to repair on-disk metadata" msgstr "próba naprawy metadanych na dysku" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3486 msgid "reencrypt LUKS2 device" msgstr "ponowne szyfrowanie urządzenia LUKS2" -#: src/cryptsetup.c:3488 +#: src/cryptsetup.c:3487 msgid "erase all keyslots (remove encryption key)" msgstr "usunięcie wszystkich kluczy (usunięcie klucza szyfrującego)" -#: src/cryptsetup.c:3489 +#: src/cryptsetup.c:3488 msgid "convert LUKS from/to LUKS2 format" msgstr "przekonwertowanie formatu LUKS z/do LUKS2" -#: src/cryptsetup.c:3490 +#: src/cryptsetup.c:3489 msgid "set permanent configuration options for LUKS2" msgstr "ustawienie opcji trwałej konfiguracji dla LUKS2" -#: src/cryptsetup.c:3491 src/cryptsetup.c:3492 +#: src/cryptsetup.c:3490 src/cryptsetup.c:3491 msgid " []" msgstr " []" -#: src/cryptsetup.c:3491 +#: src/cryptsetup.c:3490 msgid "formats a LUKS device" msgstr "sformatowanie urządzenia LUKS" -#: src/cryptsetup.c:3492 +#: src/cryptsetup.c:3491 msgid "add key to LUKS device" msgstr "dodanie klucza do urządzenia LUKS" -#: src/cryptsetup.c:3493 src/cryptsetup.c:3494 src/cryptsetup.c:3495 +#: src/cryptsetup.c:3492 src/cryptsetup.c:3493 src/cryptsetup.c:3494 msgid " []" msgstr " []" -#: src/cryptsetup.c:3493 +#: src/cryptsetup.c:3492 msgid "removes supplied key or key file from LUKS device" msgstr "usunięcie podanego klucza lub pliku klucza z urządzenia LUKS" -#: src/cryptsetup.c:3494 +#: src/cryptsetup.c:3493 msgid "changes supplied key or key file of LUKS device" msgstr "zmiana podanego klucza lub pliku klucza urządzenia LUKS" -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3494 msgid "converts a key to new pbkdf parameters" msgstr "konwersja klucza na nowe parametry pbkdf" -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3495 msgid " " msgstr " " -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3495 msgid "wipes key with number from LUKS device" msgstr "wymazanie klucza o numerze z urządzenia LUKS" -#: src/cryptsetup.c:3497 +#: src/cryptsetup.c:3496 msgid "print UUID of LUKS device" msgstr "wypisanie UUID-a urządzenia LUKS" -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3497 msgid "tests for LUKS partition header" msgstr "sprawdzenie pod kątem nagłówka partycji LUKS" -#: src/cryptsetup.c:3499 +#: src/cryptsetup.c:3498 msgid "dump LUKS partition information" msgstr "zrzut informacji o partycji LUKS" -#: src/cryptsetup.c:3500 +#: src/cryptsetup.c:3499 msgid "dump TCRYPT device information" msgstr "zrzut informacji o urządzeniu TCRYPT" -#: src/cryptsetup.c:3501 +#: src/cryptsetup.c:3500 msgid "dump BITLK device information" msgstr "zrzut informacji o urządzeniu BITLK" -#: src/cryptsetup.c:3502 +#: src/cryptsetup.c:3501 msgid "dump FVAULT2 device information" msgstr "zrzut informacji o urządzeniu FVAULT2" -#: src/cryptsetup.c:3503 +#: src/cryptsetup.c:3502 msgid "Suspend LUKS device and wipe key (all IOs are frozen)" msgstr "Wstrzymanie urządzenia LUKS i wymazanie klucza (zamraża wszystkie operacje we/wy)" -#: src/cryptsetup.c:3504 +#: src/cryptsetup.c:3503 msgid "Resume suspended LUKS device" msgstr "Wznowienie zatrzymanego urządzenia LUKS" -#: src/cryptsetup.c:3505 +#: src/cryptsetup.c:3504 msgid "Backup LUKS device header and keyslots" msgstr "Kopia zapasowa nagłówka i kluczy urządzenia LUKS" -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3505 msgid "Restore LUKS device header and keyslots" msgstr "Odtworzenie nagłówka i kluczy urządzenia LUKS z kopii zapasowej" -#: src/cryptsetup.c:3507 +#: src/cryptsetup.c:3506 msgid " " msgstr " " -#: src/cryptsetup.c:3507 +#: src/cryptsetup.c:3506 msgid "Manipulate LUKS2 tokens" msgstr "Operacja na tokenach LUKS2" -#: src/cryptsetup.c:3526 src/veritysetup.c:505 src/integritysetup.c:573 +#: src/cryptsetup.c:3525 src/veritysetup.c:505 src/integritysetup.c:573 msgid "" "\n" " is one of:\n" @@ -2956,7 +2951,7 @@ msgstr "" "\n" " to jedno z:\n" -#: src/cryptsetup.c:3532 +#: src/cryptsetup.c:3531 msgid "" "\n" "You can also use old syntax aliases:\n" @@ -2968,7 +2963,7 @@ msgstr "" "\topen: create (plainOpen), luksOpen, loopaesOpen, tcryptOpen, bitlkOpen, fvault2Open\n" "\tclose: remove (plainClose), luksClose, loopaesClose, tcryptClose, bitlkClose, fvault2Close\n" -#: src/cryptsetup.c:3536 +#: src/cryptsetup.c:3535 #, c-format msgid "" "\n" @@ -2983,7 +2978,7 @@ msgstr "" " to numer klucza LUKS do zmiany\n" " to opcjonalny plik nowego klucza dla akcji luksAddKey\n" -#: src/cryptsetup.c:3543 +#: src/cryptsetup.c:3542 #, c-format msgid "" "\n" @@ -2992,7 +2987,7 @@ msgstr "" "\n" "Domyślny wkompilowany format metadanych to %s (dla akcji luksFormat).\n" -#: src/cryptsetup.c:3548 +#: src/cryptsetup.c:3547 msgid "" "\n" "LUKS2 external token plugin support is enabled.\n" @@ -3000,12 +2995,12 @@ msgstr "" "\n" "Obsługa zewnętrznych wtyczek tokenów LUKS2 jest włączona.\n" -#: src/cryptsetup.c:3549 +#: src/cryptsetup.c:3548 #, c-format msgid "LUKS2 external token plugin path: %s.\n" msgstr "Ścieżka zewnętrznych wtyczek tokenów LUKS2: %s.\n" -#: src/cryptsetup.c:3551 +#: src/cryptsetup.c:3550 msgid "" "\n" "LUKS2 external token plugin support is disabled.\n" @@ -3013,7 +3008,7 @@ msgstr "" "\n" "Obsługa zewnętrznych wtyczek tokenów LUKS2 jest wyłączona.\n" -#: src/cryptsetup.c:3555 +#: src/cryptsetup.c:3554 #, c-format msgid "" "\n" @@ -3030,7 +3025,7 @@ msgstr "" "Domyślny PBKDF dla LUKS2: %s\n" "\tCzas iteracji: %d, wymagana pamięć: %dkB, liczba wątków: %d\n" -#: src/cryptsetup.c:3566 +#: src/cryptsetup.c:3565 #, c-format msgid "" "\n" @@ -3045,122 +3040,122 @@ msgstr "" "\tplain: %s, bitów klucza: %d, skrót hasła: %s\n" "\tLUKS: %s, bitów klucza: %d, skrót nagłówka LUKS: %s, RNG: %s\n" -#: src/cryptsetup.c:3575 +#: src/cryptsetup.c:3574 msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: Domyślny rozmiar klucza z trybem XTS (dwa klucze wewnętrzne) będzie podwojony.\n" -#: src/cryptsetup.c:3593 src/veritysetup.c:647 src/integritysetup.c:733 +#: src/cryptsetup.c:3592 src/veritysetup.c:647 src/integritysetup.c:733 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: wymaga %s jako argumentów" -#: src/cryptsetup.c:3633 src/utils_reencrypt_luks1.c:1143 +#: src/cryptsetup.c:3632 src/utils_reencrypt_luks1.c:1143 msgid "Key slot is invalid." msgstr "Numer klucza jest nieprawidłowy." -#: src/cryptsetup.c:3661 +#: src/cryptsetup.c:3660 msgid "Device size must be multiple of 512 bytes sector." msgstr "Rozmiar urządzenia musi być wielokrotnością 512-bajtowego sektora." -#: src/cryptsetup.c:3666 +#: src/cryptsetup.c:3665 msgid "Invalid max reencryption hotzone size specification." msgstr "Błędne określenie maksymalnego rozmiaru strefy gorącej ponownego szyfrowania." -#: src/cryptsetup.c:3680 src/cryptsetup.c:3697 src/cryptsetup.c:3709 +#: src/cryptsetup.c:3679 src/cryptsetup.c:3696 src/cryptsetup.c:3708 msgid "Key size must be a multiple of 8 bits" msgstr "Rozmiar klucza musi być wielokrotnością 8 bitów" -#: src/cryptsetup.c:3687 +#: src/cryptsetup.c:3686 msgid "At most 2 key size specifications can be supplied." msgstr "Można podać najwyżej 2 określenia rozmiarów kluczy." -#: src/cryptsetup.c:3716 src/cryptsetup.c:3727 +#: src/cryptsetup.c:3715 src/cryptsetup.c:3726 #, c-format msgid "At most %d volume key specifications can be supplied." msgstr "Określono za dużo kluczy wolumenu, można podać najwyżej %d." -#: src/cryptsetup.c:3739 +#: src/cryptsetup.c:3738 #, c-format msgid "At most %d keyring link specifications can be supplied." msgstr "Określono za dużo dołączeń pęków kluczy, można podać najwyżej %d." -#: src/cryptsetup.c:3748 +#: src/cryptsetup.c:3747 msgid "Maximum device reduce size is 1 GiB." msgstr "Maksymalna wartość ograniczenia rozmiaru urządzenia to 1GiB." -#: src/cryptsetup.c:3751 +#: src/cryptsetup.c:3750 msgid "Reduce size must be multiple of 512 bytes sector." msgstr "Rozmiar ograniczenia musi być wielokrotnością 512-bajtowego sektora." -#: src/cryptsetup.c:3768 +#: src/cryptsetup.c:3767 msgid "Option --priority can be only ignore/normal/prefer." msgstr "Opcja --priority może mieć wartości tylko ignore/normal/prefer." -#: src/cryptsetup.c:3787 src/veritysetup.c:568 src/integritysetup.c:653 +#: src/cryptsetup.c:3786 src/veritysetup.c:568 src/integritysetup.c:653 msgid "Show this help message" msgstr "Wyświetlenie tego opisu" -#: src/cryptsetup.c:3788 src/veritysetup.c:569 src/integritysetup.c:654 +#: src/cryptsetup.c:3787 src/veritysetup.c:569 src/integritysetup.c:654 msgid "Display brief usage" msgstr "Wyświetlenie krótkiej informacji o składni" -#: src/cryptsetup.c:3789 src/veritysetup.c:570 src/integritysetup.c:655 +#: src/cryptsetup.c:3788 src/veritysetup.c:570 src/integritysetup.c:655 msgid "Print package version" msgstr "Wypisanie wersji pakietu" -#: src/cryptsetup.c:3800 src/veritysetup.c:581 src/integritysetup.c:666 +#: src/cryptsetup.c:3799 src/veritysetup.c:581 src/integritysetup.c:666 msgid "Help options:" msgstr "Opcje pomocnicze:" -#: src/cryptsetup.c:3823 src/veritysetup.c:602 src/integritysetup.c:686 +#: src/cryptsetup.c:3822 src/veritysetup.c:602 src/integritysetup.c:686 msgid "[OPTION...] " msgstr "[OPCJA...] " -#: src/cryptsetup.c:3832 src/veritysetup.c:611 src/integritysetup.c:697 +#: src/cryptsetup.c:3831 src/veritysetup.c:611 src/integritysetup.c:697 msgid "Argument missing." msgstr "Brak argumentu ." -#: src/cryptsetup.c:3911 src/veritysetup.c:642 src/integritysetup.c:728 +#: src/cryptsetup.c:3910 src/veritysetup.c:642 src/integritysetup.c:728 msgid "Unknown action." msgstr "Nieznana akcja." -#: src/cryptsetup.c:3929 +#: src/cryptsetup.c:3928 msgid "Option --key-file takes precedence over specified key file argument." msgstr "Opcja --key-file ma priorytet nad podanym argumentem pliku klucza." -#: src/cryptsetup.c:3935 +#: src/cryptsetup.c:3934 msgid "Only one --key-file argument is allowed." msgstr "Dozwolony jest tylko jeden argument --key-file." -#: src/cryptsetup.c:3940 +#: src/cryptsetup.c:3939 msgid "Password-based key derivation function (PBKDF) can be only pbkdf2 or argon2i/argon2id." msgstr "Funkcja pochodna klucza oparta na haśle (PBKDF) może być tylko pbkdf2 lub argon2i/argon2id." -#: src/cryptsetup.c:3945 +#: src/cryptsetup.c:3944 msgid "PBKDF forced iterations cannot be combined with iteration time option." msgstr "Wymuszonych iteracji PBKDF nie można łączyć z opcją czasu iteracji." -#: src/cryptsetup.c:3950 +#: src/cryptsetup.c:3949 msgid "Cannot link volume key to a keyring when keyring is disabled." msgstr "Nie można dołączyć klucza wolumenu do pęku kluczy, kiedy pęk kluczy jest wyłączony." -#: src/cryptsetup.c:3955 +#: src/cryptsetup.c:3954 msgid "Cannot use keyring key description when keyring is disabled." msgstr "Nie można użyć opisu klucza pęku kluczy, kiedy pęk kluczy jest wyłączony." -#: src/cryptsetup.c:3960 +#: src/cryptsetup.c:3959 msgid "Inline integrity must be used together with --integrity option." msgstr "Integralności wbudowanej należy używać wraz z opcją --integrity." -#: src/cryptsetup.c:3971 +#: src/cryptsetup.c:3970 msgid "Options --keyslot-cipher and --keyslot-key-size must be used together." msgstr "Opcje --keyslot-cipher i --keyslot-key-size muszą być użyte łącznie." -#: src/cryptsetup.c:3979 +#: src/cryptsetup.c:3978 msgid "No action taken. Invoked with --test-args option.\n" msgstr "Nie wykonano akcji. Wywołano z opcją --test-args.\n" -#: src/cryptsetup.c:3992 +#: src/cryptsetup.c:3991 msgid "Cannot disable metadata locking." msgstr "Nie można wyłączyć blokowania metadanych." From 71b2397f9d558bf3f3d7400bffd903392a546cd2 Mon Sep 17 00:00:00 2001 From: Remus-Gabriel Chelu Date: Sat, 4 Jul 2026 18:12:56 +0200 Subject: [PATCH 165/244] po: update ro.po (from translationproject.org) --- po/ro.po | 1020 +++++++++++++++++++++++++++--------------------------- 1 file changed, 511 insertions(+), 509 deletions(-) diff --git a/po/ro.po b/po/ro.po index 308eb325a..144a5bcd2 100644 --- a/po/ro.po +++ b/po/ro.po @@ -18,14 +18,15 @@ # Actualizare a traducerii pentru versiunea 2.8.1-rc0, făcută de R-GC, aug-2025. # Actualizare a traducerii pentru versiunea 2.8.2-rc0, făcută de R-GC, dec-2025. # Actualizare a traducerii pentru versiunea 2.8.5-rc0, făcută de R-GC, mar-2026. +# Actualizare a traducerii pentru versiunea 2.8.7-rc1, făcută de R-GC, iun-2026. # Actualizare a traducerii pentru versiunea Y, făcută de X, Y(luna-anul). # msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.5-rc0\n" +"Project-Id-Version: cryptsetup 2.8.7-rc1\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2026-03-30 14:18+0200\n" -"PO-Revision-Date: 2026-03-30 19:37+0200\n" +"POT-Creation-Date: 2026-06-29 21:30+0200\n" +"PO-Revision-Date: 2026-06-30 15:24+0200\n" "Last-Translator: Remus-Gabriel Chelu \n" "Language-Team: Romanian \n" "Language: ro\n" @@ -95,7 +96,7 @@ msgid "Requested automatic recalculation of integrity tags is not supported." msgstr "Recalcularea automată a etichetelor de integritate solicitată nu este acceptată." #: lib/libdevmapper.c:1802 lib/libdevmapper.c:1856 lib/libdevmapper.c:1859 -#: lib/luks2/luks2_json_metadata.c:2781 +#: lib/luks2/luks2_json_metadata.c:2799 msgid "Discard/TRIM is not supported." msgstr "Înlăturarea/Decuparea(TRIM) nu este acceptată." @@ -141,665 +142,665 @@ msgstr "Calitatea solicitată pentru generatorul de numere aleatoare(RNG) este n msgid "Error reading from RNG." msgstr "Eroare la citirea din generatorul de numere aleatorii(RNG)." -#: lib/setup.c:248 +#: lib/setup.c:251 msgid "OPAL support is disabled in libcryptsetup." msgstr "Suportul pentru OPAL este dezactivat în libcryptsetup." -#: lib/setup.c:250 +#: lib/setup.c:253 #, c-format msgid "Device %s or kernel does not support OPAL encryption." msgstr "Dispozitivul %s sau nucleul nu acceptă criptarea OPAL." -#: lib/setup.c:266 +#: lib/setup.c:269 msgid "Cannot initialize crypto RNG backend." msgstr "Nu s-a putut inițializa utilitarul de criptare al generatorului de numere aleatorii(RNG)." -#: lib/setup.c:272 +#: lib/setup.c:275 msgid "Cannot initialize crypto backend." msgstr "Nu s-a putut inițializa utilitarul de criptare ." -#: lib/setup.c:305 lib/setup.c:2766 lib/verity/verity.c:109 +#: lib/setup.c:308 lib/setup.c:2769 lib/verity/verity.c:109 #, c-format msgid "Hash algorithm %s not supported." msgstr "Algoritmul sumei de control %s nu este acceptat." -#: lib/setup.c:308 lib/loopaes/loopaes.c:78 +#: lib/setup.c:311 lib/loopaes/loopaes.c:78 #, c-format msgid "Key processing error (using hash %s)." msgstr "Eroare de procesare a cheii (folosind suma de control %s)." -#: lib/setup.c:389 lib/setup.c:426 +#: lib/setup.c:392 lib/setup.c:429 msgid "Cannot determine device type. Incompatible activation of device?" msgstr "Nu se poate determina tipul de dispozitiv. Activare a dispozitivului incompatibilă?" -#: lib/setup.c:395 lib/setup.c:4160 +#: lib/setup.c:398 lib/setup.c:4177 msgid "This operation is supported only for LUKS device." msgstr "Această operație este acceptată doar pentru dispozitive LUKS." -#: lib/setup.c:432 +#: lib/setup.c:435 msgid "This operation is supported only for LUKS2 device." msgstr "Această operație este acceptată doar pentru dispozitive LUKS2." -#: lib/setup.c:489 lib/luks2/luks2_reencrypt.c:3101 +#: lib/setup.c:492 lib/luks2/luks2_reencrypt.c:3102 msgid "All key slots full." msgstr "Toate sloturile pentru chei sunt ocupate." -#: lib/setup.c:500 +#: lib/setup.c:503 #, c-format msgid "Key slot %d is invalid, please select between 0 and %d." msgstr "Slotul de cheie %d este nu este valid, selectați între 0 și %d." -#: lib/setup.c:506 +#: lib/setup.c:509 #, c-format msgid "Key slot %d is full, please select another one." msgstr "Slotul pentru chei %d este ocupat, selectați altul." -#: lib/setup.c:531 lib/setup.c:3875 +#: lib/setup.c:534 lib/setup.c:3878 msgid "Device size is not aligned to device logical block size." msgstr "Dimensiunea dispozitivului nu este aliniată la dimensiunea blocului logic al dispozitivului." -#: lib/setup.c:628 +#: lib/setup.c:631 #, c-format msgid "Header detected but device %s is too small." msgstr "Antet detectat, dar dispozitivul %s este prea mic." -#: lib/setup.c:669 lib/setup.c:3760 lib/setup.c:5238 -#: lib/luks2/luks2_reencrypt.c:3948 lib/luks2/luks2_reencrypt.c:4437 +#: lib/setup.c:672 lib/setup.c:3763 lib/setup.c:5272 +#: lib/luks2/luks2_reencrypt.c:3949 lib/luks2/luks2_reencrypt.c:4438 msgid "This operation is not supported for this device type." msgstr "Această operație nu este suportată pentru acest tip de dispozitiv." -#: lib/setup.c:674 +#: lib/setup.c:677 msgid "Illegal operation with reencryption in-progress." msgstr "Operație ilegală cu recriptare în curs." -#: lib/setup.c:806 +#: lib/setup.c:809 msgid "Failed to rollback LUKS2 metadata in memory." msgstr "Nu s-au putut reîncărca metadatele LUKS2 în memorie." -#: lib/setup.c:893 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 -#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 -#: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 -#: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2953 -#: src/cryptsetup.c:3021 src/utils_reencrypt.c:2281 +#: lib/setup.c:896 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 +#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1779 +#: src/cryptsetup.c:1963 src/cryptsetup.c:2018 src/cryptsetup.c:2216 +#: src/cryptsetup.c:2361 src/cryptsetup.c:2639 src/cryptsetup.c:2952 +#: src/cryptsetup.c:3020 src/utils_reencrypt.c:2281 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." msgstr "Dispozitivul %s nu este un dispozitiv LUKS valid." -#: lib/setup.c:896 lib/luks1/keymanage.c:517 +#: lib/setup.c:899 lib/luks1/keymanage.c:517 #, c-format msgid "Unsupported LUKS version %d." msgstr "Versiunea %d de LUKS nu este acceptată." -#: lib/setup.c:1270 +#: lib/setup.c:1273 #, c-format msgid "No known cipher specification pattern detected for active device %s." msgstr "Nu a fost detectat niciun model cunoscut de specificație de cifrare pentru dispozitivul activ %s." -#: lib/setup.c:1515 lib/setup.c:3507 lib/setup.c:3599 lib/setup.c:3611 -#: lib/setup.c:3783 lib/setup.c:5816 +#: lib/setup.c:1518 lib/setup.c:3510 lib/setup.c:3602 lib/setup.c:3614 +#: lib/setup.c:3786 lib/setup.c:5850 #, c-format msgid "Device %s is not active." msgstr "Dispozitivul %s nu este activ." -#: lib/setup.c:1532 +#: lib/setup.c:1535 #, c-format msgid "Underlying device for crypt device %s disappeared." msgstr "Dispozitivul subiacent pentru dispozitivul criptat %s a dispărut." -#: lib/setup.c:1614 +#: lib/setup.c:1617 msgid "Invalid plain crypt parameters." msgstr "Parametrii de criptare simplă sunt incorecți." -#: lib/setup.c:1619 lib/setup.c:2669 +#: lib/setup.c:1622 lib/setup.c:2672 msgid "Invalid key size." msgstr "Dimensiunea cheii este nevalidă." -#: lib/setup.c:1624 lib/setup.c:2674 lib/setup.c:2879 +#: lib/setup.c:1627 lib/setup.c:2677 lib/setup.c:2882 msgid "UUID is not supported for this crypt type." msgstr "UUID-ul nu este acceptat pentru acest tip de criptare." -#: lib/setup.c:1629 lib/setup.c:2679 +#: lib/setup.c:1632 lib/setup.c:2682 msgid "Detached metadata device is not supported for this crypt type." msgstr "Dispozitivul cu metadate detașate nu este acceptat pentru acest tip de criptare." -#: lib/setup.c:1639 lib/setup.c:1887 lib/luks2/luks2_reencrypt.c:3034 -#: src/cryptsetup.c:1492 src/cryptsetup.c:3760 +#: lib/setup.c:1642 lib/setup.c:1890 lib/luks2/luks2_reencrypt.c:3035 +#: src/cryptsetup.c:1491 src/cryptsetup.c:3759 msgid "Unsupported encryption sector size." msgstr "Dimensiunea sectorului de criptare nu este acceptată." -#: lib/setup.c:1647 lib/setup.c:1916 lib/setup.c:3869 +#: lib/setup.c:1650 lib/setup.c:1919 lib/setup.c:3872 msgid "Device size is not aligned to requested sector size." msgstr "Dimensiunea dispozitivului nu este aliniată la dimensiunea sectorului solicitată." -#: lib/setup.c:1699 lib/setup.c:1951 lib/setup.c:2328 +#: lib/setup.c:1702 lib/setup.c:1954 lib/setup.c:2331 msgid "Can't format LUKS without device." msgstr "Formatarea LUKS fără dispozitiv nu este posibilă." -#: lib/setup.c:1704 lib/setup.c:1956 +#: lib/setup.c:1707 lib/setup.c:1959 #, c-format msgid "Zoned device %s cannot be used for LUKS header." msgstr "Dispozitivul %s divizat în zone nu poate fi utilizat pentru antetul LUKS." -#: lib/setup.c:1711 lib/setup.c:1963 lib/setup.c:2334 +#: lib/setup.c:1714 lib/setup.c:1966 lib/setup.c:2337 msgid "Requested data alignment is not compatible with data offset." msgstr "Alinierea datelor solicitată nu este compatibilă cu poziția datelor." -#: lib/setup.c:1751 lib/setup.c:1981 +#: lib/setup.c:1754 lib/setup.c:1984 msgid "WARNING: DAX device can corrupt data as it does not guarantee atomic sector updates.\n" msgstr "AVERTISMENT: Dispozitivul DAX poate corupe datele, deoarece nu garantează actualizări atomice ale sectoarelor.\n" -#: lib/setup.c:1789 lib/setup.c:2088 lib/setup.c:2109 lib/setup.c:2517 -#: lib/setup.c:2564 lib/setup.c:2896 +#: lib/setup.c:1792 lib/setup.c:2091 lib/setup.c:2112 lib/setup.c:2520 +#: lib/setup.c:2567 lib/setup.c:2899 #, c-format msgid "Cannot wipe header on device %s." msgstr "Nu se poate șterge antetul pe dispozitivul %s." -#: lib/setup.c:1802 lib/setup.c:2161 +#: lib/setup.c:1805 lib/setup.c:2164 #, c-format msgid "Device %s is too small for activation, there is no remaining space for data.\n" msgstr "Dispozitivul %s este prea mic pentru activare, nu a mai rămas spațiu pentru date.\n" -#: lib/setup.c:1843 +#: lib/setup.c:1846 msgid "Volume key is too small for encryption with integrity extensions." msgstr "Cheia de volum este prea mică pentru criptare cu extensii de integritate." -#: lib/setup.c:1847 +#: lib/setup.c:1850 msgid "Integrity key size is too small." msgstr "Dimensiunea cheii de integritate este prea mică." -#: lib/setup.c:1856 +#: lib/setup.c:1859 #, c-format msgid "Cipher %s-%s (key size %zd bits) is not available." msgstr "Cifrul %s-%s (dimensiunea cheii %zd biți) nu este disponibil." -#: lib/setup.c:1897 +#: lib/setup.c:1900 msgid "WARNING: The device activation will fail, dm-crypt is missing support for requested encryption sector size.\n" msgstr "AVERTISMENT: Activarea dispozitivului va eșua, dm-crypt nu are suport pentru dimensiunea sectorului de criptare solicitată.\n" -#: lib/setup.c:2091 lib/setup.c:2458 lib/setup.c:2520 lib/utils_device.c:906 -#: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3073 -#: lib/luks2/luks2_reencrypt.c:4497 +#: lib/setup.c:2094 lib/setup.c:2461 lib/setup.c:2523 lib/utils_device.c:906 +#: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3074 +#: lib/luks2/luks2_reencrypt.c:4498 #, c-format msgid "Device %s is too small." msgstr "Dispozitivul %s este prea mic." -#: lib/setup.c:2102 lib/setup.c:2141 lib/setup.c:2557 lib/setup.c:2615 +#: lib/setup.c:2105 lib/setup.c:2144 lib/setup.c:2560 lib/setup.c:2618 #, c-format msgid "Cannot format device %s in use." msgstr "Nu se poate formata dispozitivul %s, este în uz." -#: lib/setup.c:2105 lib/setup.c:2144 lib/setup.c:2560 lib/setup.c:2618 +#: lib/setup.c:2108 lib/setup.c:2147 lib/setup.c:2563 lib/setup.c:2621 #, c-format msgid "Cannot format device %s, permission denied." msgstr "Nu se poate formata dispozitivul %s; permisiune refuzată." -#: lib/setup.c:2129 lib/setup.c:2587 lib/setup.c:2969 +#: lib/setup.c:2132 lib/setup.c:2590 lib/setup.c:2972 #, c-format msgid "Cannot format integrity for device %s." msgstr "Nu se poate formata integritatea pentru dispozitivul %s." -#: lib/setup.c:2148 lib/setup.c:2626 +#: lib/setup.c:2151 lib/setup.c:2629 #, c-format msgid "Cannot format device %s." msgstr "Nu se poate formata dispozitivul %s." -#: lib/setup.c:2191 +#: lib/setup.c:2194 msgid "Cannot get OPAL alignment parameters." msgstr "Nu se pot obține parametrii de aliniere OPAL." -#: lib/setup.c:2203 +#: lib/setup.c:2206 msgid "Bogus OPAL logical block size." msgstr "Dimensiune falsă a blocului logic OPAL." -#: lib/setup.c:2208 lib/luks2/hw_opal/hw_opal.c:305 +#: lib/setup.c:2211 lib/luks2/hw_opal/hw_opal.c:305 msgid "Bogus OPAL logical block size differs from device block size." msgstr "Dimensiunea falsă a blocului logic OPAL diferă de dimensiunea blocului dispozitivului." -#: lib/setup.c:2214 +#: lib/setup.c:2217 msgid "Requested data offset is not compatible with OPAL block size." msgstr "Intervalul(offset) de date solicitat nu este compatibil cu dimensiunea blocului OPAL." -#: lib/setup.c:2221 +#: lib/setup.c:2224 msgid "Requested data alignment is not compatible with OPAL alignment." msgstr "Alinierea datelor solicitată nu este compatibilă cu alinierea OPAL." -#: lib/setup.c:2241 +#: lib/setup.c:2244 msgid "Data offset does not satisfy OPAL alignment requirements." msgstr "Intervalul datelor nu îndeplinește cerințele de aliniere OPAL." -#: lib/setup.c:2254 +#: lib/setup.c:2257 msgid "Requested data alignment does not satisfy locking range alignment requirements." msgstr "Alinierea datelor solicitată nu satisface cerințele de aliniere a intervalului de blocare." -#: lib/setup.c:2468 +#: lib/setup.c:2471 #, c-format msgid "Compensating device size by % sectors to align it with OPAL alignment granularity." msgstr "Compensarea dimensiunii dispozitivului cu % sectoare pentru a-l alinia cu gradul de finețe al alinierii OPAL." -#: lib/setup.c:2528 lib/setup.c:4243 lib/setup.c:4432 lib/utils_wipe.c:356 -#: lib/luks2/luks2_json_metadata.c:2724 lib/luks2/luks2_json_metadata.c:2992 +#: lib/setup.c:2531 lib/setup.c:4260 lib/setup.c:4466 lib/utils_wipe.c:356 +#: lib/luks2/luks2_json_metadata.c:2742 lib/luks2/luks2_json_metadata.c:3017 #, c-format msgid "Failed to acquire OPAL lock on device %s." msgstr "Nu s-a putut obține blocarea OPAL pe dispozitivul %s." -#: lib/setup.c:2538 +#: lib/setup.c:2541 msgid "Incorrect OPAL Admin key." msgstr "Cheie de administrare OPAL incorectă." -#: lib/setup.c:2540 +#: lib/setup.c:2543 msgid "Cannot setup OPAL segment." msgstr "Nu se poate configura segmentul OPAL." -#: lib/setup.c:2622 +#: lib/setup.c:2625 #, c-format msgid "Cannot format device %s, OPAL device seems to be fully write-protected now." msgstr "Nu se poate formata dispozitivul %s, dispozitivul OPAL pare a fi complet protejat la scriere acum." -#: lib/setup.c:2624 +#: lib/setup.c:2627 msgid "This is perhaps a bug in firmware. Run OPAL PSID reset and reconnect for recovery." msgstr "Aceasta este probabil o eroare în firmware. Efectuați reinițierea PSID OPAL și reconectați-vă pentru recuperare." -#: lib/setup.c:2644 +#: lib/setup.c:2647 #, c-format msgid "Locking range %d reset on device %s failed." msgstr "Reinițierea intervalului de blocare %d pe dispozitivul %s a eșuat." -#: lib/setup.c:2664 +#: lib/setup.c:2667 msgid "Can't format LOOPAES without device." msgstr "Nu se poate formata LOOPAES fără dispozitiv." -#: lib/setup.c:2709 +#: lib/setup.c:2712 msgid "Can't format VERITY without device." msgstr "Nu se poate formata VERITY fără dispozitiv." -#: lib/setup.c:2720 lib/verity/verity.c:88 +#: lib/setup.c:2723 lib/verity/verity.c:88 #, c-format msgid "Unsupported VERITY hash type %d." msgstr "Tip de sumă de control VERITY neacceptat %d." -#: lib/setup.c:2726 lib/verity/verity.c:96 +#: lib/setup.c:2729 lib/verity/verity.c:96 msgid "Unsupported VERITY block size." msgstr "Dimensiunea blocului VERITY nu este acceptată." -#: lib/setup.c:2731 lib/verity/verity.c:61 +#: lib/setup.c:2734 lib/verity/verity.c:61 msgid "Unsupported VERITY hash offset." msgstr "Decalajul sumei de control VERITY nu este acceptat." -#: lib/setup.c:2736 +#: lib/setup.c:2739 msgid "Unsupported VERITY FEC offset." msgstr "Decalajul FEC VERITY nu este acceptat." -#: lib/setup.c:2760 +#: lib/setup.c:2763 msgid "Data area overlaps with hash area." msgstr "Zona de date se suprapune cu zona de sume de control." -#: lib/setup.c:2785 +#: lib/setup.c:2788 msgid "Hash area overlaps with FEC area." msgstr "Zona sumelor de control se suprapune cu zona FEC." -#: lib/setup.c:2792 +#: lib/setup.c:2795 msgid "Data area overlaps with FEC area." msgstr "Zona de date se suprapune cu zona FEC." -#: lib/setup.c:2884 +#: lib/setup.c:2887 msgid "Integrity key size mismatch." msgstr "Dimensiunea cheii de integritate nu coincide." -#: lib/setup.c:2935 +#: lib/setup.c:2938 #, c-format msgid "WARNING: Requested tag size %d bytes differs from %s size output (%d bytes).\n" msgstr "AVERTISMENT: Dimensiunea solicitată a etichetei %d octeți diferă de dimensiunea %s de ieșire (%d octeți).\n" -#: lib/setup.c:3048 lib/setup.c:3150 +#: lib/setup.c:3051 lib/setup.c:3153 #, c-format msgid "Unknown or unsupported device type %s requested." msgstr "A fost solicitat un tip de dispozitiv %s necunoscut sau neacceptat." -#: lib/setup.c:3064 +#: lib/setup.c:3067 #, c-format msgid "Device %s does not provide inline integrity data fields." msgstr "Dispozitivul %s nu furnizează câmpuri de date de integritate în linie „inline”." -#: lib/setup.c:3070 +#: lib/setup.c:3073 #, c-format msgid "Inline tag size % [bytes] is larger than % provided by device %s." msgstr "Dimensiunea etichetei în linie % [ cteți] este mai mare decât % furnizată de dispozitivul %s." -#: lib/setup.c:3085 +#: lib/setup.c:3088 #, c-format msgid "Sector must be the same as device hardware sector (%zu bytes)." msgstr "Sectorul trebuie să fie la fel ca sectorul hardware al dispozitivului (%zu octeți)." -#: lib/setup.c:3515 lib/setup.c:3604 lib/setup.c:3617 +#: lib/setup.c:3518 lib/setup.c:3607 lib/setup.c:3620 #, c-format msgid "Unsupported parameters on device %s." msgstr "Parametri neacceptați pentru dispozitivul %s." -#: lib/setup.c:3521 lib/setup.c:3624 lib/luks2/luks2_reencrypt.c:2928 -#: lib/luks2/luks2_reencrypt.c:3197 lib/luks2/luks2_reencrypt.c:3594 +#: lib/setup.c:3524 lib/setup.c:3627 lib/luks2/luks2_reencrypt.c:2929 +#: lib/luks2/luks2_reencrypt.c:3198 lib/luks2/luks2_reencrypt.c:3595 #, c-format msgid "Mismatching parameters on device %s." msgstr "Parametrii nepotriviți în dispozitivul %s." -#: lib/setup.c:3647 +#: lib/setup.c:3650 msgid "Crypt devices mismatch." msgstr "Dispozitivele de criptare nu se potrivesc." -#: lib/setup.c:3679 lib/setup.c:3684 lib/luks2/luks2_reencrypt.c:2412 -#: lib/luks2/luks2_reencrypt.c:2944 lib/luks2/luks2_reencrypt.c:4236 +#: lib/setup.c:3682 lib/setup.c:3687 lib/luks2/luks2_reencrypt.c:2413 +#: lib/luks2/luks2_reencrypt.c:2945 lib/luks2/luks2_reencrypt.c:4237 #, c-format msgid "Failed to reload device %s." msgstr "Nu s-a putut reîncărca dispozitivul %s." -#: lib/setup.c:3690 lib/setup.c:3696 lib/luks2/luks2_reencrypt.c:2382 -#: lib/luks2/luks2_reencrypt.c:2389 lib/luks2/luks2_reencrypt.c:2958 +#: lib/setup.c:3693 lib/setup.c:3699 lib/luks2/luks2_reencrypt.c:2383 +#: lib/luks2/luks2_reencrypt.c:2390 lib/luks2/luks2_reencrypt.c:2959 #, c-format msgid "Failed to suspend device %s." msgstr "Nu s-a putut suspenda dispozitivul %s." -#: lib/setup.c:3702 lib/luks2/luks2_reencrypt.c:2396 -#: lib/luks2/luks2_reencrypt.c:2979 lib/luks2/luks2_reencrypt.c:4149 -#: lib/luks2/luks2_reencrypt.c:4240 +#: lib/setup.c:3705 lib/luks2/luks2_reencrypt.c:2397 +#: lib/luks2/luks2_reencrypt.c:2980 lib/luks2/luks2_reencrypt.c:4150 +#: lib/luks2/luks2_reencrypt.c:4241 #, c-format msgid "Failed to resume device %s." msgstr "Nu s-a putut reîncărca dispozitivul %s." -#: lib/setup.c:3717 +#: lib/setup.c:3720 #, c-format msgid "Fatal error while reloading device %s (on top of device %s)." msgstr "Eroare fatală la reîncărcarea dispozitivului %s (în partea superioară a dispozitivului %s)." -#: lib/setup.c:3720 lib/setup.c:3722 +#: lib/setup.c:3723 lib/setup.c:3725 #, c-format msgid "Failed to switch device %s to dm-error." msgstr "Nu s-a putut comuta dispozitivul %s la dm-error." -#: lib/setup.c:3765 +#: lib/setup.c:3768 msgid "Can not resize LUKS2 device with static size." msgstr "Nu se poate redimensiona dispozitivul LUKS2 cu o dimensiune statică." -#: lib/setup.c:3770 +#: lib/setup.c:3773 msgid "Resize of LUKS2 device with integrity protection is not supported." msgstr "Redimensionarea dispozitivului LUKS2 cu protecție de integritate nu este acceptată." -#: lib/setup.c:3816 +#: lib/setup.c:3819 msgid "Cannot resize loop device." msgstr "Nu se poate redimensiona dispozitivul de buclă." -#: lib/setup.c:3860 +#: lib/setup.c:3863 msgid "WARNING: Maximum size already set or kernel doesn't support resize.\n" msgstr "AVERTISMENT: Dimensiunea maximă a fost deja stabilită sau nucleul nu acceptă redimensionarea.\n" -#: lib/setup.c:3926 +#: lib/setup.c:3929 msgid "Resize failed, the kernel doesn't support it." msgstr "Redimensionarea nu a reușit, nucleul nu acceptă redimensionarea." -#: lib/setup.c:3958 +#: lib/setup.c:3961 msgid "Do you really want to change UUID of device?" msgstr "Chiar doriți să schimbați UUID-ul dispozitivului?" -#: lib/setup.c:4050 +#: lib/setup.c:4053 msgid "Header backup file does not contain compatible LUKS header." msgstr "Fișierul de copie de rezervă pentru antet nu conține un antet LUKS compatibil." -#: lib/setup.c:4143 +#: lib/setup.c:4160 #, c-format msgid "Volume %s is not active." msgstr "Volumul %s nu este activ." -#: lib/setup.c:4198 +#: lib/setup.c:4215 #, c-format msgid "Volume %s is already suspended." msgstr "Volumul %s este deja suspendat." -#: lib/setup.c:4224 +#: lib/setup.c:4241 #, c-format msgid "Suspend is not supported for device %s." msgstr "Suspendarea nu este acceptată pentru dispozitivul %s." -#: lib/setup.c:4226 lib/setup.c:4234 +#: lib/setup.c:4243 lib/setup.c:4251 #, c-format msgid "Error during suspending device %s." msgstr "Eroare la suspendarea dispozitivului %s." -#: lib/setup.c:4249 +#: lib/setup.c:4266 #, c-format msgid "Device %s was suspended but hardware OPAL device cannot be locked." msgstr "Dispozitivul %s a fost suspendat, dar dispozitivul hardware OPAL nu poate fi blocat." -#: lib/setup.c:4280 lib/setup.c:4457 +#: lib/setup.c:4297 lib/setup.c:4491 #, c-format msgid "Resume is not supported for device %s." msgstr "Reluarea activității nu este acceptată pentru dispozitivul %s." -#: lib/setup.c:4282 lib/setup.c:4447 lib/setup.c:4459 +#: lib/setup.c:4299 lib/setup.c:4481 lib/setup.c:4493 #, c-format msgid "Error during resuming device %s." msgstr "Eroare la reluarea activității dispozitivului %s." -#: lib/setup.c:4301 +#: lib/setup.c:4335 msgid "Failed to unlink volume key from user specified keyring." msgstr "Nu s-a putut dezlega cheia de volum de la inelul de chei specificat de utilizator." -#: lib/setup.c:4423 lib/setup.c:5603 +#: lib/setup.c:4457 lib/setup.c:5637 msgid "Failed to link volume key in user defined keyring." msgstr "Nu s-a putut leg cheia de volum la inelul de chei specificat de utilizator." -#: lib/setup.c:4522 src/cryptsetup.c:2721 +#: lib/setup.c:4556 src/cryptsetup.c:2720 #, c-format msgid "Volume %s is not suspended." msgstr "Volumul %s nu este suspendat." -#: lib/setup.c:4633 lib/setup.c:7276 lib/setup.c:7298 lib/setup.c:7352 -#: src/cryptsetup.c:1856 src/cryptsetup.c:2260 src/cryptsetup.c:2278 -#: src/utils_reencrypt.c:305 src/utils_reencrypt.c:1966 +#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1855 +#: src/cryptsetup.c:2259 src/cryptsetup.c:2277 src/utils_reencrypt.c:305 +#: src/utils_reencrypt.c:1966 msgid "Volume key does not match the volume." msgstr "Cheia de volum nu se potrivește cu volumul." -#: lib/setup.c:4787 +#: lib/setup.c:4821 msgid "Failed to swap new key slot." msgstr "Nu s-a putut efectua interschimbarea cu noul slot pentru cheie." -#: lib/setup.c:4885 +#: lib/setup.c:4919 #, c-format msgid "Key slot %d is invalid." msgstr "Slotul de cheie %d nu este valid." -#: lib/setup.c:4891 src/cryptsetup.c:1977 src/cryptsetup.c:2437 -#: src/cryptsetup.c:3121 src/cryptsetup.c:3181 +#: lib/setup.c:4925 src/cryptsetup.c:1976 src/cryptsetup.c:2436 +#: src/cryptsetup.c:3120 src/cryptsetup.c:3180 #, c-format msgid "Keyslot %d is not active." msgstr "Slotul de cheie %d nu este activ." -#: lib/setup.c:4910 +#: lib/setup.c:4944 msgid "Device header overlaps with data area." msgstr "Antetul dispozitivului se suprapune cu zona de date." -#: lib/setup.c:5131 +#: lib/setup.c:5165 msgid "Reencryption in-progress. Cannot activate device." msgstr "Recriptare în curs. Nu se poate activa dispozitivul." -#: lib/setup.c:5133 lib/luks2/luks2_json_metadata.c:2888 -#: lib/luks2/luks2_reencrypt.c:3725 +#: lib/setup.c:5167 lib/luks2/luks2_json_metadata.c:2913 +#: lib/luks2/luks2_reencrypt.c:3726 msgid "Failed to get reencryption lock." msgstr "Nu s-a putut obține blocarea pentru recriptare." -#: lib/setup.c:5155 +#: lib/setup.c:5189 msgid "LUKS2 reencryption recovery using volume key(s) failed." msgstr "Recuperarea recriptării LUKS2 utilizând cheia (cheile) de volum a eșuat." -#: lib/setup.c:5291 +#: lib/setup.c:5325 #, c-format msgid "Device %s already exists." msgstr "Dispozitivul %s există deja." -#: lib/setup.c:5298 +#: lib/setup.c:5332 #, c-format msgid "Cannot use device %s, name is invalid or still in use." msgstr "Nu se poate folosi dispozitivul %s, numele este nevalid sau este încă în uz." -#: lib/setup.c:5310 +#: lib/setup.c:5344 msgid "Reencryption volume keys do not match the volume." msgstr "Cheile de recriptare a volumului nu se potrivesc cu volumul." -#: lib/setup.c:5327 +#: lib/setup.c:5361 msgid "Incorrect volume key specified for plain device." msgstr "Este specificată o cheie de volum incorectă pentru un dispozitiv cu criptare normală." -#: lib/setup.c:5353 lib/setup.c:5414 +#: lib/setup.c:5387 lib/setup.c:5448 msgid "Device type is not properly initialized." msgstr "Tipul de dispozitiv nu este inițializat corect." -#: lib/setup.c:5452 +#: lib/setup.c:5486 msgid "Kernel keyring is not supported by the kernel." msgstr "Inelul de chei pentru nucleu nu este acceptat de nucleu actual." -#: lib/setup.c:5456 +#: lib/setup.c:5490 msgid "Kernel keyring missing: required for passing signature to kernel." msgstr "Lipsește inelul de chei pentru nucleu: este necesar pentru transmiterea semnăturii către nucleu." -#: lib/setup.c:5511 +#: lib/setup.c:5545 #, c-format msgid "Cannot use keyring key %s." msgstr "Nu se poate utiliza cheia inelului de chei %s." -#: lib/setup.c:5724 +#: lib/setup.c:5758 msgid "Incorrect root hash specified for verity device." msgstr "Sumă de control rădăcină incorectă specificată pentru dispozitivul verity." -#: lib/setup.c:5765 lib/setup.c:5790 +#: lib/setup.c:5799 lib/setup.c:5824 msgid "OPAL does not support deferred deactivation." msgstr "OPAL nu acceptă dezactivarea amânată." -#: lib/setup.c:5780 lib/setup.c:5811 lib/luks2/luks2_json_metadata.c:2953 +#: lib/setup.c:5814 lib/setup.c:5845 lib/luks2/luks2_json_metadata.c:2978 #: src/utils_reencrypt.c:89 #, c-format msgid "Device %s is still in use." msgstr "Dispozitivul %s este încă în uz." -#: lib/setup.c:5798 +#: lib/setup.c:5832 #, c-format msgid "Could not cancel deferred remove from device %s." msgstr "Nu s-a putut anula eliminarea întârziată din dispozitivul %s." -#: lib/setup.c:5820 +#: lib/setup.c:5854 #, c-format msgid "Invalid device %s." msgstr "Dispozitiv nevalid %s." -#: lib/setup.c:5967 +#: lib/setup.c:6001 msgid "Volume key buffer too small." msgstr "Memoria tampon a cheii de volum este prea mică." -#: lib/setup.c:5978 +#: lib/setup.c:6012 msgid "Cannot retrieve volume key for LUKS2 device." msgstr "Nu se poate recupera cheia de volum pentru dispozitivul LUKS2." -#: lib/setup.c:5987 +#: lib/setup.c:6021 msgid "Cannot retrieve volume key for LUKS1 device." msgstr "Nu se poate recupera cheia de volum pentru dispozitivul LUKS1." -#: lib/setup.c:6001 +#: lib/setup.c:6035 msgid "Cannot retrieve volume key for plain device." msgstr "Nu se poate recupera tasta de volum pentru dispozitivul normal." -#: lib/setup.c:6009 +#: lib/setup.c:6043 msgid "Cannot retrieve root hash for verity device." msgstr "Nu se poate recupera suma de control rădăcină pentru dispozitivul verity." -#: lib/setup.c:6018 +#: lib/setup.c:6052 msgid "Cannot retrieve volume key for BITLK device." msgstr "Nu se poate recupera cheia de volum pentru dispozitivul BITLK." -#: lib/setup.c:6023 +#: lib/setup.c:6057 msgid "Cannot retrieve volume key for FVAULT2 device." msgstr "Nu se poate recupera cheia de volum pentru dispozitivul FVAULT2." -#: lib/setup.c:6025 +#: lib/setup.c:6059 #, c-format msgid "This operation is not supported for %s crypt device." msgstr "Această operație nu este acceptată pentru dispozitivul criptat %s." -#: lib/setup.c:6210 lib/setup.c:6221 +#: lib/setup.c:6244 lib/setup.c:6255 msgid "Dump operation is not supported for this device type." msgstr "Operația de descărcare nu este acceptată pentru acest tip de dispozitiv." -#: lib/setup.c:6601 +#: lib/setup.c:6635 #, c-format msgid "Data offset is not multiple of %u bytes." msgstr "Decalajul datelor nu este multiplu de %u octeți." -#: lib/setup.c:6909 +#: lib/setup.c:6943 #, c-format msgid "Cannot convert device %s which is still in use." msgstr "Nu se poate converti dispozitivul %s care este încă în uz." -#: lib/setup.c:7217 lib/setup.c:7361 +#: lib/setup.c:7251 lib/setup.c:7406 #, c-format msgid "Failed to assign keyslot %u as the new volume key." msgstr "Nu s-a putut atribui slotul %u ca nouă cheie de volum." -#: lib/setup.c:7241 +#: lib/setup.c:7275 msgid "Failed to initialize default LUKS2 keyslot parameters." msgstr "Nu s-au putut inițializa parametrii impliciți pentru slotul de cheie LUKS2." -#: lib/setup.c:7247 +#: lib/setup.c:7281 #, c-format msgid "Failed to assign keyslot %d to digest." msgstr "Nu s-a putut aloca slotul de cheie %d pentru a digera." -#: lib/setup.c:7478 +#: lib/setup.c:7523 msgid "Cannot add key slot, all slots disabled and no volume key provided." msgstr "Nu se poate adăuga slotul pentru cheie, toate sloturile sunt dezactivate și nu este furnizată nicio cheie pentru volum." -#: lib/setup.c:7551 lib/verity/verity.c:333 +#: lib/setup.c:7611 lib/setup.c:7626 lib/verity/verity.c:333 msgid "Failed to load key in kernel keyring." msgstr "Nu s-a putut încărca cheia în inelul de chei al nucleului." -#: lib/setup.c:7742 +#: lib/setup.c:7807 #, c-format msgid "Could not find keyring described by \"%s\"." msgstr "Nu s-a putut găsi inelul de chei descris de „%s”." -#: lib/setup.c:7807 +#: lib/setup.c:7872 msgid "Failed to acquire global memory-hard access serialization lock." msgstr "Nu s-a putut obține blocarea de serializare a accesului la memoria-hardwarw globală." -#: lib/utils.c:204 lib/tcrypt/tcrypt.c:490 +#: lib/utils.c:205 lib/tcrypt/tcrypt.c:488 msgid "Failed to open key file." msgstr "Nu s-a putut deschide fișierul cheii." -#: lib/utils.c:212 +#: lib/utils.c:213 msgid "Cannot read keyfile from a terminal." msgstr "Nu se poate citi fișierul de cheie de la un terminal." -#: lib/utils.c:228 +#: lib/utils.c:229 msgid "Failed to stat key file." msgstr "Nu s-a putut obține starea fișierului de cheie." -#: lib/utils.c:236 lib/utils.c:257 +#: lib/utils.c:237 lib/utils.c:258 msgid "Cannot seek to requested keyfile offset." msgstr "Nu se poate căuta poziția fișierului de cheie solicitat." -#: lib/utils.c:251 lib/utils.c:266 src/utils_password.c:219 +#: lib/utils.c:252 lib/utils.c:267 src/utils_password.c:219 #: src/utils_password.c:231 msgid "Out of memory while reading passphrase." msgstr "Memoria epuizată în timpul citirii frazei de acces." -#: lib/utils.c:286 +#: lib/utils.c:287 msgid "Error reading passphrase." msgstr "Eroare la citirea frazei de acces." -#: lib/utils.c:303 +#: lib/utils.c:304 msgid "Nothing to read on input." msgstr "Nimic de citit la intrare." -#: lib/utils.c:310 +#: lib/utils.c:311 msgid "Maximum keyfile size exceeded." msgstr "Dimensiunea maximă a fișierului de cheie a fost depășită." -#: lib/utils.c:315 +#: lib/utils.c:316 msgid "Cannot read requested amount of data." msgstr "Nu se poate citi cantitatea de date solicitată." @@ -979,7 +980,7 @@ msgid "Cipher specification should be in [cipher]-[mode]-[iv] format." msgstr "Specificațiile de cifrare ar trebui să fie în formatul [cifrarea]-[mod]-[iv]." #: lib/luks1/keyencryption.c:85 lib/luks1/keymanage.c:353 -#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1150 +#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1132 #: lib/luks2/luks2_json_metadata.c:1518 lib/luks2/luks2_keyslot.c:711 #, c-format msgid "Cannot write to device %s, permission denied." @@ -993,13 +994,13 @@ msgstr "Nu s-a putut deschide dispozitivul pentru stocarea temporară a cheilor. msgid "Failed to access temporary keystore device." msgstr "Nu s-a putut accesa dispozitivul pentru stocarea temporară a cheilor." -#: lib/luks1/keyencryption.c:189 lib/luks2/luks2_keyslot_luks2.c:49 -#: lib/luks2/luks2_keyslot_luks2.c:67 lib/luks2/luks2_keyslot_reenc.c:184 +#: lib/luks1/keyencryption.c:189 lib/luks2/luks2_keyslot_luks2.c:47 +#: lib/luks2/luks2_keyslot_reenc.c:184 msgid "IO error while encrypting keyslot." msgstr "Eroare de In/Ieș în timpul criptării slotului de cheie." #: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:356 -#: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:668 +#: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:659 #: lib/fvault2/fvault2.c:872 lib/verity/verity.c:67 lib/verity/verity.c:183 #: lib/verity/verity_hash.c:312 lib/verity/verity_hash.c:321 #: lib/verity/verity_hash.c:350 lib/verity/verity_fec.c:247 @@ -1010,7 +1011,7 @@ msgstr "Eroare de In/Ieș în timpul criptării slotului de cheie." msgid "Cannot open device %s." msgstr "Nu s-a putut deschide dispozitivul %s." -#: lib/luks1/keyencryption.c:247 lib/luks2/luks2_keyslot_luks2.c:128 +#: lib/luks1/keyencryption.c:247 lib/luks2/luks2_keyslot_luks2.c:85 msgid "IO error while decrypting keyslot." msgstr "Eroare de In/Ieș la decriptarea slotului de cheie." @@ -1100,7 +1101,7 @@ msgid "Cipher hash repaired to lowercase (%s)." msgstr "Cifrul sumei de control(hash) reparat la minuscule (%s)." #: lib/luks1/keymanage.c:417 lib/luks1/keymanage.c:523 -#: lib/luks1/keymanage.c:777 +#: lib/luks1/keymanage.c:756 #, c-format msgid "Requested LUKS hash %s is not supported." msgstr "Suma de control(hash) LUKS solicitată %s nu este acceptată." @@ -1147,7 +1148,7 @@ msgstr "Modul de cifrare LUKS %s este nevalid." msgid "LUKS hash %s is invalid." msgstr "Suma de control(hash) LUKS %s nu este validă." -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 +#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1366 msgid "No known problems detected for LUKS header." msgstr "Nu s-a detectat nicio problemă cunoscută pentru antetul LUKS." @@ -1161,50 +1162,50 @@ msgstr "Eroare în timpul actualizării antetului LUKS pe dispozitivul %s." msgid "Error re-reading LUKS header after update on device %s." msgstr "Eroare la recitirea antetului LUKS după actualizare pe dispozitivul %s." -#: lib/luks1/keymanage.c:771 +#: lib/luks1/keymanage.c:750 msgid "Data offset for LUKS header must be either 0 or higher than header size." msgstr "Decalajul datelor pentru antetul LUKS trebuie să fie 0 sau mai mare decât dimensiunea antetului." -#: lib/luks1/keymanage.c:782 lib/luks1/keymanage.c:853 +#: lib/luks1/keymanage.c:761 lib/luks1/keymanage.c:832 #: lib/luks2/luks2_json_format.c:231 lib/luks2/luks2_json_metadata.c:1261 #: src/utils_reencrypt.c:701 msgid "Wrong LUKS UUID format provided." msgstr "Formatul UUID LUKS furnizat este greșit." -#: lib/luks1/keymanage.c:804 +#: lib/luks1/keymanage.c:783 msgid "Cannot create LUKS header: reading random salt failed." msgstr "Nu se poate crea antetul LUKS: citirea datelor «salt» aleatoare a eșuat." -#: lib/luks1/keymanage.c:832 +#: lib/luks1/keymanage.c:811 #, c-format msgid "Cannot create LUKS header: header digest failed (using hash %s)." msgstr "Nu se poate crea antetul LUKS: calcularea sumei de control a antetului a eșuat (folosind suma de control(hash) %s)." -#: lib/luks1/keymanage.c:877 +#: lib/luks1/keymanage.c:856 #, c-format msgid "Key slot %d active, purge first." msgstr "Slot de cheie %d activ, curățați mai întâi." -#: lib/luks1/keymanage.c:883 +#: lib/luks1/keymanage.c:862 #, c-format msgid "Key slot %d material includes too few stripes. Header manipulation?" msgstr "Materialul de la slotul de cheie %d nu are suficiente benzi. Antetul a fost manipulat?" -#: lib/luks1/keymanage.c:921 lib/luks2/luks2_keyslot_luks2.c:260 +#: lib/luks1/keymanage.c:900 lib/luks2/luks2_keyslot_luks2.c:217 msgid "PBKDF2 iteration value overflow." msgstr "Depășire a valorii de iterație a PBKDF2." -#: lib/luks1/keymanage.c:1040 +#: lib/luks1/keymanage.c:1022 #, c-format msgid "Cannot open keyslot (using hash %s)." msgstr "Nu se poate deschide slotul de cheie (folosind suma de control(hash) %s)." -#: lib/luks1/keymanage.c:1136 +#: lib/luks1/keymanage.c:1118 #, c-format msgid "Key slot %d is invalid, please select keyslot between 0 and %d." msgstr "Slotul de cheie %d nu este valid, selectați slotul de cheie între 0 și %d." -#: lib/luks1/keymanage.c:1154 lib/luks2/luks2_keyslot.c:715 +#: lib/luks1/keymanage.c:1136 lib/luks2/luks2_keyslot.c:715 #, c-format msgid "Cannot wipe device %s." msgstr "Nu se poate șterge dispozitivul %s." @@ -1225,56 +1226,48 @@ msgstr "S-a detectat un fișier de cheie loop-AES incompatibil." msgid "Kernel does not support loop-AES compatible mapping." msgstr "Nucleul nu acceptă asocierea compatibilă cu bucla loop-AES." -#: lib/tcrypt/tcrypt.c:497 +#: lib/tcrypt/tcrypt.c:495 #, c-format msgid "Error reading keyfile %s." msgstr "Eroare la citirea fișierului de cheie %s." -#: lib/tcrypt/tcrypt.c:547 +#: lib/tcrypt/tcrypt.c:549 #, c-format msgid "Maximum TCRYPT passphrase length (%zu) exceeded." msgstr "Lungimea maximă a frazei de acces TCRYPT (%zu) a fost depășită." -#: lib/tcrypt/tcrypt.c:589 +#: lib/tcrypt/tcrypt.c:591 #, c-format msgid "PBKDF2 hash algorithm %s not available, skipping." msgstr "Algoritmul sumei de control(hash) PBKDF2 %s nu este disponibil, se omite." -#: lib/tcrypt/tcrypt.c:608 src/cryptsetup.c:1240 -msgid "Required kernel crypto interface not available." -msgstr "Interfața necesară de criptare a nucleului nu este disponibilă." - -#: lib/tcrypt/tcrypt.c:610 src/cryptsetup.c:1242 -msgid "Ensure you have algif_skcipher kernel module loaded." -msgstr "Asigurați-vă că aveți modulul nucleului «algif_skcipher», încărcat." - -#: lib/tcrypt/tcrypt.c:752 +#: lib/tcrypt/tcrypt.c:743 #, c-format msgid "Activation is not supported for %d sector size." msgstr "Activarea nu este acceptată pentru dimensiunea sectorului de %d." -#: lib/tcrypt/tcrypt.c:758 +#: lib/tcrypt/tcrypt.c:749 msgid "Kernel does not support activation for this TCRYPT legacy mode." msgstr "Nucleul nu acceptă activarea pentru acest mod vechi TCRYPT." -#: lib/tcrypt/tcrypt.c:813 +#: lib/tcrypt/tcrypt.c:804 #, c-format msgid "Activating TCRYPT system encryption for partition %s." msgstr "Se activează criptarea sistemului TCRYPT pentru partiția %s." -#: lib/tcrypt/tcrypt.c:828 +#: lib/tcrypt/tcrypt.c:819 msgid "Cannot determine TCRYPT system partition offset, activating whole encrypted area." msgstr "Nu se poate determina decalajul partiției de sistem TCRYPT, se activează întreaga zonă criptată." -#: lib/tcrypt/tcrypt.c:837 +#: lib/tcrypt/tcrypt.c:828 msgid "Cannot determine TCRYPT system partition offset, activating device as a system partition." msgstr "Nu se poate determina decalajul partiției de sistem TCRYPT, se activează dispozitivul ca partiție de sistem." -#: lib/tcrypt/tcrypt.c:917 +#: lib/tcrypt/tcrypt.c:908 msgid "Kernel does not support TCRYPT compatible mapping." msgstr "Nucleul nu acceptă asocierea compatibilă cu TCRYPT." -#: lib/tcrypt/tcrypt.c:1146 +#: lib/tcrypt/tcrypt.c:1137 msgid "This function is not supported without TCRYPT header load." msgstr "Această funcție nu este acceptată fără încărcarea antetului TCRYPT." @@ -1627,8 +1620,7 @@ msgid "WARNING: LUKS2 keyslots area size changed to % bytes.\n" msgstr "AVERTISMENT: dimensiunea zonei sloturilor de chei LUKS2 s-a schimbat la % octeți.\n" #: lib/luks2/luks2_json_metadata.c:1171 lib/luks2/luks2_json_metadata.c:1357 -#: lib/luks2/luks2_json_metadata.c:1417 lib/luks2/luks2_keyslot_luks2.c:81 -#: lib/luks2/luks2_keyslot_luks2.c:105 +#: lib/luks2/luks2_json_metadata.c:1417 lib/luks2/luks2_keyslot_luks2.c:71 #, c-format msgid "Failed to acquire read lock on device %s." msgstr "Nu s-a putut obține blocarea pentru citire pe dispozitivul %s." @@ -1688,79 +1680,79 @@ msgstr "" msgid "Ignored unknown flag %s." msgstr "S-a ignorat fanionul necunoscut %s." -#: lib/luks2/luks2_json_metadata.c:2545 lib/luks2/luks2_reencrypt.c:2109 +#: lib/luks2/luks2_json_metadata.c:2563 lib/luks2/luks2_reencrypt.c:2110 #, c-format msgid "Missing key for dm-crypt segment %u" msgstr "Lipsește cheia pentru segmentul dm-crypt %u" -#: lib/luks2/luks2_json_metadata.c:2557 lib/luks2/luks2_reencrypt.c:2122 +#: lib/luks2/luks2_json_metadata.c:2575 lib/luks2/luks2_reencrypt.c:2123 msgid "Failed to set dm-crypt segment." msgstr "Nu s-a putut definii segmentul dm-crypt." -#: lib/luks2/luks2_json_metadata.c:2563 lib/luks2/luks2_reencrypt.c:2128 +#: lib/luks2/luks2_json_metadata.c:2581 lib/luks2/luks2_reencrypt.c:2129 msgid "Failed to set dm-linear segment." msgstr "Nu s-a putut definii segmentul dm-linear." -#: lib/luks2/luks2_json_metadata.c:2683 src/utils_reencrypt.c:578 +#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:578 msgid "No known cipher specification pattern detected in LUKS2 header." msgstr "Nu s-a detectat niciun model de specificație de cifrare cunoscut în antetul LUKS2." -#: lib/luks2/luks2_json_metadata.c:2691 +#: lib/luks2/luks2_json_metadata.c:2709 msgid "OPAL device must have static device size." msgstr "Dispozitivul OPAL trebuie să aibă dimensiunea dispozitivului statică." -#: lib/luks2/luks2_json_metadata.c:2711 +#: lib/luks2/luks2_json_metadata.c:2729 msgid "Encrypted OPAL device with integrity must be smaller than locking range." msgstr "Dispozitivul OPAL criptat cu integritate trebuie să fie mai mic decât intervalul de blocare." -#: lib/luks2/luks2_json_metadata.c:2716 +#: lib/luks2/luks2_json_metadata.c:2734 msgid "OPAL device must have same size as locking range." msgstr "Dispozitivul OPAL trebuie să aibă aceeași dimensiune ca și intervalul de blocare." -#: lib/luks2/luks2_json_metadata.c:2736 +#: lib/luks2/luks2_json_metadata.c:2754 #, c-format msgid "OPAL device is %s already unlocked.\n" msgstr "Dispozitivul OPAL %s este deja deblocat.\n" -#: lib/luks2/luks2_json_metadata.c:2775 +#: lib/luks2/luks2_json_metadata.c:2793 msgid "Unsupported device integrity configuration." msgstr "Configurație de integritate a dispozitivului neacceptată." -#: lib/luks2/luks2_json_metadata.c:2791 +#: lib/luks2/luks2_json_metadata.c:2809 msgid "Underlying dm-integrity device with unexpected provided data sectors." msgstr "Dispozitiv dm-integrity subiacent cu sectoare de date neașteptate furnizate." -#: lib/luks2/luks2_json_metadata.c:2886 +#: lib/luks2/luks2_json_metadata.c:2911 msgid "Reencryption in-progress. Cannot deactivate device." msgstr "Recriptare în curs. Nu se poate dezactiva dispozitivul." -#: lib/luks2/luks2_json_metadata.c:2897 lib/luks2/luks2_reencrypt.c:4286 +#: lib/luks2/luks2_json_metadata.c:2922 lib/luks2/luks2_reencrypt.c:4287 #, c-format msgid "Failed to replace suspended device %s with dm-error target." msgstr "Nu s-a putut înlocui dispozitivul suspendat %s cu ținta dm-error." -#: lib/luks2/luks2_json_metadata.c:2976 lib/luks2/luks2_json_metadata.c:2998 +#: lib/luks2/luks2_json_metadata.c:3001 lib/luks2/luks2_json_metadata.c:3023 #, c-format msgid "Device %s was deactivated but hardware OPAL device cannot be locked." msgstr "Dispozitivul %s a fost dezactivat, dar dispozitivul hardware OPAL nu poate fi blocat." -#: lib/luks2/luks2_json_metadata.c:3020 +#: lib/luks2/luks2_json_metadata.c:3045 msgid "Unmet LUKS2 requirements detected." msgstr "Au fost detectate cerințe LUKS2 neîndeplinite." -#: lib/luks2/luks2_json_metadata.c:3028 +#: lib/luks2/luks2_json_metadata.c:3053 msgid "Operation incompatible with device marked for legacy reencryption. Aborting." msgstr "Operație incompatibilă cu dispozitivul marcat pentru recriptare învechită. Se abandonează." -#: lib/luks2/luks2_json_metadata.c:3030 +#: lib/luks2/luks2_json_metadata.c:3055 msgid "Operation incompatible with device marked for LUKS2 reencryption. Aborting." msgstr "Operație incompatibilă cu dispozitivul marcat pentru recriptare LUKS2. Se abandonează." -#: lib/luks2/luks2_json_metadata.c:3032 +#: lib/luks2/luks2_json_metadata.c:3057 msgid "Operation incompatible with device using OPAL. Aborting." msgstr "Operație incompatibilă cu dispozitivul care utilizează OPAL. Se abandonează." -#: lib/luks2/luks2_json_metadata.c:3034 +#: lib/luks2/luks2_json_metadata.c:3059 msgid "Operation incompatible with device using inline HW tags. Aborting." msgstr "Operație incompatibilă cu dispozitivul care utilizează etichete HW în linie. Se abandonează." @@ -1772,22 +1764,22 @@ msgstr "Nu există suficientă memorie disponibilă pentru a deschide un slot de msgid "Keyslot open failed." msgstr "Deschiderea slotului de cheie a eșuat." -#: lib/luks2/luks2_keyslot_luks2.c:42 lib/luks2/luks2_keyslot_luks2.c:99 +#: lib/luks2/luks2_keyslot_luks2.c:40 lib/luks2/luks2_keyslot_luks2.c:77 #, c-format -msgid "Cannot use %s-%s cipher for keyslot encryption." -msgstr "Nu se poate utiliza cifrul %s-%s pentru criptarea slotului de cheie." +msgid "Cannot use %s cipher for keyslot encryption." +msgstr "Nu se poate utiliza cifrul %s pentru criptarea slotului de cheie." -#: lib/luks2/luks2_keyslot_luks2.c:262 +#: lib/luks2/luks2_keyslot_luks2.c:219 msgid "Not enough memory for keyslot key derivation." msgstr "Memorie insuficientă pentru derivarea cheilor slotului de chei." -#: lib/luks2/luks2_keyslot_luks2.c:276 lib/luks2/luks2_keyslot_luks2.c:405 -#: lib/luks2/luks2_keyslot_reenc.c:434 lib/luks2/luks2_reencrypt.c:2733 +#: lib/luks2/luks2_keyslot_luks2.c:233 lib/luks2/luks2_keyslot_luks2.c:358 +#: lib/luks2/luks2_keyslot_reenc.c:434 lib/luks2/luks2_reencrypt.c:2734 #, c-format msgid "Hash algorithm %s is not available." msgstr "Algoritmul sumei de control(hash) %s nu este disponibil." -#: lib/luks2/luks2_keyslot_luks2.c:522 +#: lib/luks2/luks2_keyslot_luks2.c:475 msgid "No space for new keyslot." msgstr "Nu există spațiu pentru noul slot de cheie." @@ -1804,335 +1796,335 @@ msgstr "Nu se poate actualiza tipul de adaptabilitate. Tipul nou oferă numai %< msgid "Failed to refresh reencryption verification digest." msgstr "Nu s-a putut reîmprospăta calcularea sumei de control de verificare a recriptării." -#: lib/luks2/luks2_luks1_convert.c:532 +#: lib/luks2/luks2_luks1_convert.c:498 #, c-format msgid "Cannot check status of device with uuid: %s." msgstr "Nu se poate verifica starea dispozitivului cu uuid: %s." -#: lib/luks2/luks2_luks1_convert.c:558 +#: lib/luks2/luks2_luks1_convert.c:524 msgid "Unable to convert header with LUKSMETA additional metadata." msgstr "Nu s-a putut converti antetul cu metadate suplimentare LUKSMETA." -#: lib/luks2/luks2_luks1_convert.c:590 lib/luks2/luks2_reencrypt.c:3893 +#: lib/luks2/luks2_luks1_convert.c:556 lib/luks2/luks2_reencrypt.c:3894 #, c-format msgid "Unable to use cipher specification %s-%s for LUKS2." msgstr "Nu se poate utiliza specificația de cifrare %s-%s pentru LUKS2." -#: lib/luks2/luks2_luks1_convert.c:599 +#: lib/luks2/luks2_luks1_convert.c:565 #, c-format msgid "Unable to use cipher specification %s-%s for LUKS2 keyslot." msgstr "Nu se poate utiliza specificația de cifrare %s-%s pentru slotul de chei LUKS2." -#: lib/luks2/luks2_luks1_convert.c:614 +#: lib/luks2/luks2_luks1_convert.c:580 msgid "Unable to move keyslot area. Not enough space." msgstr "Nu se poate muta zona slotului pentru chei. Spațiu insuficient." -#: lib/luks2/luks2_luks1_convert.c:653 +#: lib/luks2/luks2_luks1_convert.c:619 msgid "Cannot convert to LUKS2 format - invalid metadata." msgstr "Nu se poate converti în format LUKS2 - metadate nevalide." -#: lib/luks2/luks2_luks1_convert.c:670 +#: lib/luks2/luks2_luks1_convert.c:636 msgid "Unable to move keyslot area. LUKS2 keyslots area too small." msgstr "Nu se poate muta zona slotului pentru chei. Zona sloturilor pentru chei LUKS2 este prea mică." -#: lib/luks2/luks2_luks1_convert.c:676 lib/luks2/luks2_luks1_convert.c:1006 +#: lib/luks2/luks2_luks1_convert.c:642 lib/luks2/luks2_luks1_convert.c:972 msgid "Unable to move keyslot area." msgstr "Nu se poate muta zona slotului pentru chei." -#: lib/luks2/luks2_luks1_convert.c:791 +#: lib/luks2/luks2_luks1_convert.c:757 msgid "Cannot convert to LUKS1 format - default segment encryption sector size is not 512 bytes." msgstr "Nu se poate converti în format LUKS1 - dimensiunea implicită a sectorului de criptare al segmentului nu este de 512 octeți." -#: lib/luks2/luks2_luks1_convert.c:799 +#: lib/luks2/luks2_luks1_convert.c:765 msgid "Cannot convert to LUKS1 format - key slot digests are not LUKS1 compatible." msgstr "Nu se poate converti în formatul LUKS1 - calcularea sumelor de control ale slotului de cheie nu este compatibilă cu LUKS1." -#: lib/luks2/luks2_luks1_convert.c:813 +#: lib/luks2/luks2_luks1_convert.c:779 #, c-format msgid "Cannot convert to LUKS1 format - device uses wrapped key cipher %s." msgstr "Nu se poate converti în formatul LUKS1 - dispozitivul folosește cifrul de cheie încapsulat %s." -#: lib/luks2/luks2_luks1_convert.c:818 +#: lib/luks2/luks2_luks1_convert.c:784 msgid "Cannot convert to LUKS1 format - device uses more segments." msgstr "Nu se poate converti în formatul LUKS1 - dispozitivul utilizează mai multe segmente." -#: lib/luks2/luks2_luks1_convert.c:826 +#: lib/luks2/luks2_luks1_convert.c:792 #, c-format msgid "Cannot convert to LUKS1 format - LUKS2 header contains %u token(s)." msgstr "Nu se poate converti în formatul LUKS1 - antetul LUKS2 conține %u jetoane(tokens)." -#: lib/luks2/luks2_luks1_convert.c:832 +#: lib/luks2/luks2_luks1_convert.c:798 msgid "Cannot convert to LUKS1 format - there are no active keyslots." msgstr "Nu se poate converti în formatul LUKS1 - nu există sloturi de chei active." -#: lib/luks2/luks2_luks1_convert.c:844 +#: lib/luks2/luks2_luks1_convert.c:810 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is in invalid state." msgstr "Nu se poate converti în formatul LUKS1 - slotul de cheie %u este într-o stare nevalidă." -#: lib/luks2/luks2_luks1_convert.c:849 +#: lib/luks2/luks2_luks1_convert.c:815 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is unbound." msgstr "Nu se poate converti în formatul LUKS1 - slotul de cheie %u nu este legat." -#: lib/luks2/luks2_luks1_convert.c:854 +#: lib/luks2/luks2_luks1_convert.c:820 #, c-format msgid "Cannot convert to LUKS1 format - slot %u (over maximum slots) is still active." msgstr "Nu se poate converti în formatul LUKS1 - slotul %u (peste sloturile maxime) este încă activ." -#: lib/luks2/luks2_luks1_convert.c:859 +#: lib/luks2/luks2_luks1_convert.c:825 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is not LUKS1 compatible." msgstr "Nu se poate converti în formatul LUKS1 - slotul de cheie %u nu este compatibil cu LUKS1." -#: lib/luks2/luks2_reencrypt.c:1198 +#: lib/luks2/luks2_reencrypt.c:1199 #, c-format msgid "Hotzone size must be multiple of calculated zone alignment (%zu bytes)." msgstr "Dimensiunea zonei „fierbinți” (active) trebuie să fie multiplu al alinierii zonei calculate (%zu octeți)." -#: lib/luks2/luks2_reencrypt.c:1203 +#: lib/luks2/luks2_reencrypt.c:1204 #, c-format msgid "Device size must be multiple of calculated zone alignment (%zu bytes)." msgstr "Dimensiunea dispozitivului trebuie să fie multiplu al alinierii zonei calculate (%zu octeți)." -#: lib/luks2/luks2_reencrypt.c:1410 lib/luks2/luks2_reencrypt.c:1596 -#: lib/luks2/luks2_reencrypt.c:1679 lib/luks2/luks2_reencrypt.c:1721 -#: lib/luks2/luks2_reencrypt.c:4080 +#: lib/luks2/luks2_reencrypt.c:1411 lib/luks2/luks2_reencrypt.c:1597 +#: lib/luks2/luks2_reencrypt.c:1680 lib/luks2/luks2_reencrypt.c:1722 +#: lib/luks2/luks2_reencrypt.c:4081 msgid "Failed to initialize old segment storage wrapper." msgstr "Nu s-a putut inițializa vechea încapsulare de stocare a segmentului." -#: lib/luks2/luks2_reencrypt.c:1424 lib/luks2/luks2_reencrypt.c:1574 +#: lib/luks2/luks2_reencrypt.c:1425 lib/luks2/luks2_reencrypt.c:1575 msgid "Failed to initialize new segment storage wrapper." msgstr "Nu s-a putut inițializa noua încapsulare de stocare a segmentului." -#: lib/luks2/luks2_reencrypt.c:1550 lib/luks2/luks2_reencrypt.c:4092 +#: lib/luks2/luks2_reencrypt.c:1551 lib/luks2/luks2_reencrypt.c:4093 msgid "Failed to initialize hotzone protection." msgstr "Nu s-a putut inițializa protecția zonei „fierbinți” (active)." -#: lib/luks2/luks2_reencrypt.c:1623 +#: lib/luks2/luks2_reencrypt.c:1624 msgid "Failed to read checksums for current hotzone." msgstr "Nu s-au putut citii sumele de control pentru zona „fierbinte” (activă) actuală." -#: lib/luks2/luks2_reencrypt.c:1630 lib/luks2/luks2_reencrypt.c:4107 +#: lib/luks2/luks2_reencrypt.c:1631 lib/luks2/luks2_reencrypt.c:4108 #, c-format msgid "Failed to read hotzone area starting at %." msgstr "Nu s-a putut citi zona „fierbinte” (activă) începând cu %." -#: lib/luks2/luks2_reencrypt.c:1649 +#: lib/luks2/luks2_reencrypt.c:1650 #, c-format msgid "Failed to decrypt sector %zu." msgstr "Nu s-a putut decripta sectorul %zu." -#: lib/luks2/luks2_reencrypt.c:1655 +#: lib/luks2/luks2_reencrypt.c:1656 #, c-format msgid "Failed to recover sector %zu." msgstr "Nu s-a putut recupera sectorul %zu." -#: lib/luks2/luks2_reencrypt.c:2208 +#: lib/luks2/luks2_reencrypt.c:2209 #, c-format msgid "Source and target device sizes don't match. Source %, target: %." msgstr "Dimensiunile dispozitivelor sursă și țintă nu se potrivesc. Sursa %, ținta: %." -#: lib/luks2/luks2_reencrypt.c:2310 +#: lib/luks2/luks2_reencrypt.c:2311 #, c-format msgid "Failed to activate hotzone device %s." msgstr "Nu s-a putut activa zona „fierbinte” (activă) a dispozitivului %s." -#: lib/luks2/luks2_reencrypt.c:2322 +#: lib/luks2/luks2_reencrypt.c:2323 #, c-format msgid "Failed to allocate hotzone device %s." msgstr "Nu s-a putut aloca dispozitivul de zonă „fierbinte” (hotzone) %s." -#: lib/luks2/luks2_reencrypt.c:2339 +#: lib/luks2/luks2_reencrypt.c:2340 #, c-format msgid "Failed to activate overlay device %s with actual origin table." msgstr "Nu s-a putut activa dispozitivul de suprapunere %s cu tabelul de origine actual." -#: lib/luks2/luks2_reencrypt.c:2346 +#: lib/luks2/luks2_reencrypt.c:2347 #, c-format msgid "Failed to load new mapping for device %s." msgstr "Nu s-a putut încărca noua asociere pentru dispozitivul %s." -#: lib/luks2/luks2_reencrypt.c:2418 +#: lib/luks2/luks2_reencrypt.c:2419 msgid "Failed to refresh reencryption devices stack." msgstr "Nu s-a putut reîmprospăta stiva de dispozitive de recriptare." -#: lib/luks2/luks2_reencrypt.c:2615 +#: lib/luks2/luks2_reencrypt.c:2616 msgid "Failed to set new keyslots area size." msgstr "Nu s-a putut definii dimensiunea zonei noilor sloturi pentru chei." -#: lib/luks2/luks2_reencrypt.c:2751 +#: lib/luks2/luks2_reencrypt.c:2752 #, c-format msgid "Data shift value is not aligned to encryption sector size (% bytes)." msgstr "Valoarea deplasării datelor nu este aliniată la dimensiunea sectorului de criptare (% octeți)." -#: lib/luks2/luks2_reencrypt.c:2788 src/utils_reencrypt.c:162 +#: lib/luks2/luks2_reencrypt.c:2789 src/utils_reencrypt.c:162 #, c-format msgid "Unsupported resilience mode %s" msgstr "Modul de adaptabilitate neacceptat %s" -#: lib/luks2/luks2_reencrypt.c:2824 +#: lib/luks2/luks2_reencrypt.c:2825 msgid "Moved segment size can not be greater than data shift value." msgstr "Dimensiunea segmentului mutat nu poate fi mai mare decât valoarea deplasării de date." -#: lib/luks2/luks2_reencrypt.c:2866 +#: lib/luks2/luks2_reencrypt.c:2867 msgid "Invalid reencryption resilience parameters." msgstr "Parametri de adaptabilitate de recriptare nevalizi." -#: lib/luks2/luks2_reencrypt.c:2888 +#: lib/luks2/luks2_reencrypt.c:2889 #, c-format msgid "Moved segment too large. Requested size %, available space for: %." msgstr "Segmentul mutat este prea mare. Dimensiunea solicitată este de %, iar spațiul disponibil pentru aceasta este de: %." -#: lib/luks2/luks2_reencrypt.c:2977 +#: lib/luks2/luks2_reencrypt.c:2978 msgid "Failed to clear table." msgstr "Nu s-a putut șterge tabelul." -#: lib/luks2/luks2_reencrypt.c:3063 +#: lib/luks2/luks2_reencrypt.c:3064 #, c-format msgid "Data shift (% sectors) is less than future data offset (% sectors)." msgstr "Deplasarea datelor (% sectoare) este mai mică decât decalajul viitor al datelor (% sectoare)." -#: lib/luks2/luks2_reencrypt.c:3078 lib/luks2/luks2_reencrypt.c:3085 +#: lib/luks2/luks2_reencrypt.c:3079 lib/luks2/luks2_reencrypt.c:3086 msgid "Reduced data size is larger than real device size." msgstr "Dimensiunea redusă a datelor este mai mare decât dimensiunea dispozitivului real." -#: lib/luks2/luks2_reencrypt.c:3095 +#: lib/luks2/luks2_reencrypt.c:3096 #, c-format msgid "Data device is not aligned to encryption sector size (% bytes)." msgstr "Dispozitivul de date nu este aliniat la dimensiunea sectorului de criptare (% octeți)." -#: lib/luks2/luks2_reencrypt.c:3125 lib/luks2/luks2_reencrypt.c:3643 -#: lib/luks2/luks2_reencrypt.c:3664 +#: lib/luks2/luks2_reencrypt.c:3126 lib/luks2/luks2_reencrypt.c:3644 +#: lib/luks2/luks2_reencrypt.c:3665 #, c-format msgid "Failed to open %s in exclusive mode (already mapped or mounted)." msgstr "Nu s-a putut deschide %s în modul exclusiv (deja cartografiat sau montat)." -#: lib/luks2/luks2_reencrypt.c:3332 +#: lib/luks2/luks2_reencrypt.c:3333 msgid "Device not marked for LUKS2 reencryption." msgstr "Dispozitivul nu este marcat pentru recriptarea LUKS2." -#: lib/luks2/luks2_reencrypt.c:3349 lib/luks2/luks2_reencrypt.c:4403 +#: lib/luks2/luks2_reencrypt.c:3350 lib/luks2/luks2_reencrypt.c:4404 msgid "Failed to load LUKS2 reencryption context." msgstr "Nu s-a putut încărca contextul de recriptare LUKS2." -#: lib/luks2/luks2_reencrypt.c:3444 lib/luks2/luks2_reencrypt.c:3784 +#: lib/luks2/luks2_reencrypt.c:3445 lib/luks2/luks2_reencrypt.c:3785 msgid "Device is not in reencryption." msgstr "Dispozitivul nu se află în recriptare." -#: lib/luks2/luks2_reencrypt.c:3451 lib/luks2/luks2_reencrypt.c:3791 +#: lib/luks2/luks2_reencrypt.c:3452 lib/luks2/luks2_reencrypt.c:3792 msgid "Reencryption process is already running." msgstr "Procesul de recriptare rulează deja." -#: lib/luks2/luks2_reencrypt.c:3453 lib/luks2/luks2_reencrypt.c:3793 +#: lib/luks2/luks2_reencrypt.c:3454 lib/luks2/luks2_reencrypt.c:3794 msgid "Failed to acquire reencryption lock." msgstr "Nu s-a putut obține blocarea pentru recriptare." -#: lib/luks2/luks2_reencrypt.c:3471 +#: lib/luks2/luks2_reencrypt.c:3472 msgid "Cannot proceed with reencryption. Run reencryption recovery first." msgstr "Nu se poate continua cu recriptarea. Rulați mai întâi recuperarea recriptării." -#: lib/luks2/luks2_reencrypt.c:3607 +#: lib/luks2/luks2_reencrypt.c:3608 msgid "Active device size and requested reencryption size don't match." msgstr "Dimensiunea dispozitivului activ și dimensiunea de recriptare solicitată nu se potrivesc." -#: lib/luks2/luks2_reencrypt.c:3621 +#: lib/luks2/luks2_reencrypt.c:3622 msgid "Illegal device size requested in reencryption parameters." msgstr "Dimensiunea dispozitivului solicitată în parametrii de recriptare este incorectă." -#: lib/luks2/luks2_reencrypt.c:3723 +#: lib/luks2/luks2_reencrypt.c:3724 msgid "Reencryption in-progress. Cannot perform recovery." msgstr "Recriptare în curs. Nu se poate efectua recuperarea." -#: lib/luks2/luks2_reencrypt.c:3744 +#: lib/luks2/luks2_reencrypt.c:3745 msgid "LUKS2 reencryption recovery failed." msgstr "Recuperarea recriptării LUKS2 a eșuat." -#: lib/luks2/luks2_reencrypt.c:3877 lib/luks2/luks2_reencrypt.c:4356 +#: lib/luks2/luks2_reencrypt.c:3878 lib/luks2/luks2_reencrypt.c:4357 msgid "Failed to initialize reencryption device stack." msgstr "Nu s-a putut inițializa stiva dispozitivului de recriptare." -#: lib/luks2/luks2_reencrypt.c:3910 +#: lib/luks2/luks2_reencrypt.c:3911 msgid "LUKS2 reencryption already initialized in metadata." msgstr "Recriptare LUKS2 deja inițializată în metadate." -#: lib/luks2/luks2_reencrypt.c:3918 +#: lib/luks2/luks2_reencrypt.c:3919 msgid "Failed to initialize LUKS2 reencryption in metadata." msgstr "Nu s-a putut inițializa recriptarea LUKS2 în metadate." -#: lib/luks2/luks2_reencrypt.c:3971 lib/luks2/luks2_reencrypt.c:4003 -#: lib/luks2/luks2_reencrypt.c:4033 +#: lib/luks2/luks2_reencrypt.c:3972 lib/luks2/luks2_reencrypt.c:4004 +#: lib/luks2/luks2_reencrypt.c:4034 msgid "Reencryption is not supported for DAX (persistent memory) devices." msgstr "Recriptarea nu este acceptată pentru dispozitivele DAX (memorie persistentă)." -#: lib/luks2/luks2_reencrypt.c:4062 +#: lib/luks2/luks2_reencrypt.c:4063 msgid "Failed to set device segments for next reencryption hotzone." msgstr "Nu s-au putut definii segmentele dispozitivului pentru următoarea zonă „fierbinte” (activă) de recriptare." -#: lib/luks2/luks2_reencrypt.c:4115 +#: lib/luks2/luks2_reencrypt.c:4116 msgid "Failed to write reencryption resilience metadata." msgstr "Nu s-au putut scrie metadatele adaptabilității recriptării." -#: lib/luks2/luks2_reencrypt.c:4122 +#: lib/luks2/luks2_reencrypt.c:4123 msgid "Decryption failed." msgstr "Decriptarea a eșuat." -#: lib/luks2/luks2_reencrypt.c:4127 +#: lib/luks2/luks2_reencrypt.c:4128 #, c-format msgid "Failed to write hotzone area starting at %." msgstr "Nu s-a putut scrie zona „fierbinte” (activă) începând de la %." -#: lib/luks2/luks2_reencrypt.c:4132 +#: lib/luks2/luks2_reencrypt.c:4133 msgid "Failed to sync data." msgstr "Nu s-au putut sincroniza datele." -#: lib/luks2/luks2_reencrypt.c:4140 +#: lib/luks2/luks2_reencrypt.c:4141 msgid "Failed to update metadata after current reencryption hotzone completed." msgstr "Nu s-au putut actualiza metadatele după finalizarea zonei „fierbinți” (active) de recriptare actuală." -#: lib/luks2/luks2_reencrypt.c:4229 +#: lib/luks2/luks2_reencrypt.c:4230 msgid "Failed to write LUKS2 metadata." msgstr "Nu s-au putut scrie metadatele LUKS2." -#: lib/luks2/luks2_reencrypt.c:4252 +#: lib/luks2/luks2_reencrypt.c:4253 msgid "Failed to wipe unused data device area." msgstr "Nu s-a putut șterge zona nefolosită a dispozitivului de date." -#: lib/luks2/luks2_reencrypt.c:4258 +#: lib/luks2/luks2_reencrypt.c:4259 #, c-format msgid "Failed to remove unused (unbound) keyslot %d." msgstr "Nu s-a putut elimina slotul de cheie neutilizat (neasociat) %d." -#: lib/luks2/luks2_reencrypt.c:4268 +#: lib/luks2/luks2_reencrypt.c:4269 msgid "Failed to remove reencryption keyslot." msgstr "Nu s-a putut elimina slotul de cheie de recriptare." -#: lib/luks2/luks2_reencrypt.c:4278 +#: lib/luks2/luks2_reencrypt.c:4279 #, c-format msgid "Fatal error while reencrypting chunk starting at %, % sectors long." msgstr "Eroare fatală la recriptarea porțiunii începând de la %, % sectoare lungi." -#: lib/luks2/luks2_reencrypt.c:4282 +#: lib/luks2/luks2_reencrypt.c:4283 msgid "Online reencryption failed." msgstr "Recriptarea «online» a eșuat." -#: lib/luks2/luks2_reencrypt.c:4287 +#: lib/luks2/luks2_reencrypt.c:4288 msgid "Do not resume the device unless replaced with error target manually." msgstr "Nu reluați dispozitivul decât dacă este înlocuit manual cu ținta erorii." -#: lib/luks2/luks2_reencrypt.c:4339 +#: lib/luks2/luks2_reencrypt.c:4340 msgid "Cannot proceed with reencryption. Unexpected reencryption status." msgstr "Nu se poate continua cu recriptarea. Stare neașteptată a recriptării." -#: lib/luks2/luks2_reencrypt.c:4345 +#: lib/luks2/luks2_reencrypt.c:4346 msgid "Missing or invalid reencrypt context." msgstr "Context de recriptare lipsă sau nevalid." -#: lib/luks2/luks2_reencrypt.c:4379 lib/luks2/luks2_reencrypt.c:4416 +#: lib/luks2/luks2_reencrypt.c:4380 lib/luks2/luks2_reencrypt.c:4417 msgid "Failed to update reencryption context." msgstr "Nu s-a putut actualiza contextul de recriptare." -#: lib/luks2/luks2_reencrypt_digest.c:401 +#: lib/luks2/luks2_reencrypt_digest.c:402 msgid "Reencryption metadata is invalid." msgstr "Metadatele de recriptare sunt nevalide." @@ -2164,7 +2156,7 @@ msgstr "Parametrii de criptare a slotului de cheie pot fi stabiliți numai pentr msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encryption." msgstr "Parametrii de criptare a slotului de chei nu sunt compatibili cu criptarea slotului de chei LUKS2." -#: src/cryptsetup.c:150 src/cryptsetup.c:1178 src/cryptsetup.c:1545 +#: src/cryptsetup.c:150 src/cryptsetup.c:1179 src/cryptsetup.c:1544 #: src/utils_reencrypt.c:1887 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." @@ -2192,7 +2184,7 @@ msgstr "AVERTISMENT: Parametrul „--hash” este ignorat în modul simplu, cu f msgid "WARNING: The --keyfile-size option is being ignored, the read size is the same as the encryption key size.\n" msgstr "AVERTISMENT: Opțiunea „--keyfile-size” este ignorată, dimensiunea de citire este aceeași cu dimensiunea cheii de criptare.\n" -#: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 +#: src/cryptsetup.c:226 src/cryptsetup.c:1374 src/cryptsetup.c:1597 #: src/integritysetup.c:188 src/utils_reencrypt.c:2138 #, c-format msgid "Blkid scan failed for %s." @@ -2203,9 +2195,9 @@ msgstr "Scanarea «blkid» a eșuat pentru %s." msgid "Detected device signature(s) on %s. Proceeding further may damage existing data." msgstr "S-au detectat semnături de dispozitiv pe %s. Continuarea operației, riscă să deterioreze datele existente." -#: src/cryptsetup.c:238 src/cryptsetup.c:1261 src/cryptsetup.c:1309 -#: src/cryptsetup.c:1382 src/cryptsetup.c:1522 src/cryptsetup.c:1610 -#: src/cryptsetup.c:2495 src/cryptsetup.c:2924 src/integritysetup.c:178 +#: src/cryptsetup.c:238 src/cryptsetup.c:1260 src/cryptsetup.c:1308 +#: src/cryptsetup.c:1381 src/cryptsetup.c:1521 src/cryptsetup.c:1609 +#: src/cryptsetup.c:2494 src/cryptsetup.c:2923 src/integritysetup.c:178 #: src/utils_reencrypt.c:111 src/utils_reencrypt.c:457 #: src/utils_reencrypt.c:925 msgid "Operation aborted.\n" @@ -2254,7 +2246,7 @@ msgstr "" "care permite accesul la partiția criptată fără fraza de acces.\n" "Acest conținut ar trebui să fie întotdeauna stocat criptat într-un loc sigur." -#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2520 +#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2519 msgid "" "The header dump with volume key is sensitive information\n" "that allows access to encrypted partition without a passphrase.\n" @@ -2278,9 +2270,9 @@ msgstr "Nu se poate determina dimensiunea cheii de volum pentru FVAULT2; utiliza msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "Dispozitivul %s este încă activ și programat pentru eliminare temporizată.\n" -#: src/cryptsetup.c:881 src/cryptsetup.c:1808 src/cryptsetup.c:2082 -#: src/cryptsetup.c:2229 src/cryptsetup.c:2648 src/cryptsetup.c:2729 -#: src/cryptsetup.c:3262 +#: src/cryptsetup.c:881 src/cryptsetup.c:1807 src/cryptsetup.c:2081 +#: src/cryptsetup.c:2228 src/cryptsetup.c:2647 src/cryptsetup.c:2728 +#: src/cryptsetup.c:3261 #, c-format msgid "Failed to set external tokens path %s." msgstr "Nu s-a putut definii ruta jetoanelor(tokens) externe %s." @@ -2317,57 +2309,61 @@ msgstr "%-10s %4u iterații, %5u memorie, %1u fire paralele (CPU-uri) pentru che msgid "Result of benchmark is not reliable." msgstr "Rezultatul testului de evaluare a performanței nu este fiabil." -#: src/cryptsetup.c:1170 +#: src/cryptsetup.c:1171 msgid "# Tests are approximate using memory only (no storage IO).\n" msgstr "# Testele sunt aproximative folosind doar memoria (fără In/Ieș de stocare).\n" #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1195 +#: src/cryptsetup.c:1196 #, c-format msgid "#%*s Algorithm | Key | Encryption | Decryption\n" msgstr "#%*s Algoritm | Cheie | Criptare | Decriptare\n" -#: src/cryptsetup.c:1203 +#: src/cryptsetup.c:1204 #, c-format msgid "Cipher %s (with %i bits key) is not available." msgstr "Cifrarea %s (cu cheie de %i biți) nu este disponibilă." #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1222 +#: src/cryptsetup.c:1225 msgid "# Algorithm | Key | Encryption | Decryption\n" msgstr "# Algoritm | Cheie | Criptare | Decriptare\n" -#: src/cryptsetup.c:1233 +#: src/cryptsetup.c:1238 msgid "N/A" msgstr "nedisponibil" -#: src/cryptsetup.c:1258 +#: src/cryptsetup.c:1241 +msgid "# Cipher speed test is not available.\n" +msgstr "# Testul de viteză al cifrului nu este disponibil.\n" + +#: src/cryptsetup.c:1257 msgid "" "Unprotected LUKS2 reencryption metadata detected. Please verify the reencryption operation is desirable (see luksDump output)\n" "and continue (upgrade metadata) only if you acknowledge the operation as genuine." msgstr "Au fost detectate metadate neprotejate de recriptare LUKS2. Verificați că operațiunea de recriptare este de dorit (consultați ieșirea luksDump) și continuați (să actualizați metadatele) numai dacă recunoașteți operația ca fiind autentică." -#: src/cryptsetup.c:1264 +#: src/cryptsetup.c:1263 msgid "Enter passphrase to protect and upgrade reencryption metadata: " msgstr "Introduceți fraza de acces pentru a proteja și actualiza metadatele de recriptare: " -#: src/cryptsetup.c:1308 +#: src/cryptsetup.c:1307 msgid "Really proceed with LUKS2 reencryption recovery?" msgstr "Continuați cu adevărat cu recuperarea recriptării LUKS2?" -#: src/cryptsetup.c:1317 +#: src/cryptsetup.c:1316 msgid "Enter passphrase to verify reencryption metadata digest: " msgstr "Introduceți fraza de acces pentru a verifica calcularea sumele de control a metadatelor de recriptare: " -#: src/cryptsetup.c:1319 +#: src/cryptsetup.c:1318 msgid "Enter passphrase for reencryption recovery: " msgstr "Introduceți fraza de acces pentru recuperarea recriptării: " -#: src/cryptsetup.c:1381 +#: src/cryptsetup.c:1380 msgid "Really try to repair LUKS device header?" msgstr "Încercați cu adevărat să reparați antetul dispozitivului LUKS?" -#: src/cryptsetup.c:1409 src/integritysetup.c:76 src/integritysetup.c:244 +#: src/cryptsetup.c:1408 src/integritysetup.c:76 src/integritysetup.c:244 msgid "" "\n" "Wipe interrupted." @@ -2375,7 +2371,7 @@ msgstr "" "\n" "Ștergere întreruptă." -#: src/cryptsetup.c:1414 src/integritysetup.c:81 src/integritysetup.c:289 +#: src/cryptsetup.c:1413 src/integritysetup.c:81 src/integritysetup.c:289 msgid "" "Wiping device to initialize integrity checksum.\n" "You can interrupt this by pressing CTRL+c (rest of not wiped device will contain invalid checksum).\n" @@ -2383,167 +2379,167 @@ msgstr "" "Se șterge dispozitivul pentru a inițializa calcularea sumei de control a integrității.\n" "Puteți întrerupe acest lucru apăsând CTRL+c (restul dispozitivului care nu este șters va conține o sumă de control nevalidă).\n" -#: src/cryptsetup.c:1436 src/integritysetup.c:103 +#: src/cryptsetup.c:1435 src/integritysetup.c:103 #, c-format msgid "Cannot deactivate temporary device %s." msgstr "Nu se poate dezactiva dispozitivul temporar %s." -#: src/cryptsetup.c:1484 +#: src/cryptsetup.c:1483 msgid "OPAL hw-only encryption does not support --cipher and --key-size, options ignored." msgstr "Criptarea OPAL hw-only nu acceptă „--cipher” și „--key-size”, opțiunile sunt ignorate." -#: src/cryptsetup.c:1497 +#: src/cryptsetup.c:1496 msgid "Integrity option can be used only for LUKS2 format." msgstr "Opțiunea de integritate poate fi utilizată numai pentru formatul LUKS2." -#: src/cryptsetup.c:1502 src/cryptsetup.c:1582 +#: src/cryptsetup.c:1501 src/cryptsetup.c:1581 msgid "Unsupported LUKS2 metadata size options." msgstr "Opțiuni de dimensiune a metadatelor LUKS2 neacceptate." -#: src/cryptsetup.c:1507 +#: src/cryptsetup.c:1506 msgid "OPAL is supported only for LUKS2 format." msgstr "OPAL este acceptat numai pentru formatul LUKS2." -#: src/cryptsetup.c:1512 +#: src/cryptsetup.c:1511 msgid "Inline hw tags are supported only for LUKS2 format." msgstr "Etichetele hw în linie „inline” sunt acceptate numai pentru formatul LUKS2." -#: src/cryptsetup.c:1521 +#: src/cryptsetup.c:1520 msgid "Header file does not exist, do you want to create it?" msgstr "Fișierul antet nu există, doriți să îl creați?" -#: src/cryptsetup.c:1529 +#: src/cryptsetup.c:1528 #, c-format msgid "Cannot create header file %s." msgstr "Nu se poate crea fișierul antet %s." -#: src/cryptsetup.c:1555 src/integritysetup.c:126 src/integritysetup.c:141 +#: src/cryptsetup.c:1554 src/integritysetup.c:126 src/integritysetup.c:141 #: src/integritysetup.c:150 src/integritysetup.c:328 src/integritysetup.c:336 #: src/integritysetup.c:346 msgid "No known integrity specification pattern detected." msgstr "Nu a fost detectat niciun model de specificație de integritate cunoscut." -#: src/cryptsetup.c:1557 +#: src/cryptsetup.c:1556 msgid "Cannot use specified integrity key size." msgstr "Nu se poate utiliza dimensiunea specificată a cheii de integritate." -#: src/cryptsetup.c:1575 +#: src/cryptsetup.c:1574 #, c-format msgid "Cannot use %s as on-disk header." msgstr "Nu se poate folosi %s ca antet pe disc." -#: src/cryptsetup.c:1604 src/integritysetup.c:172 +#: src/cryptsetup.c:1603 src/integritysetup.c:172 #, c-format msgid "This will overwrite data on %s irrevocably." msgstr "Acest lucru va suprascrie datele de pe %s în mod irevocabil." -#: src/cryptsetup.c:1641 +#: src/cryptsetup.c:1640 msgid "OPAL Admin password cannot be empty." msgstr "Parola de administrator OPAL nu poate fi goală." -#: src/cryptsetup.c:1655 src/cryptsetup.c:2099 src/cryptsetup.c:2242 -#: src/cryptsetup.c:2377 src/cryptsetup.c:2443 src/utils_reencrypt_luks1.c:428 +#: src/cryptsetup.c:1654 src/cryptsetup.c:2098 src/cryptsetup.c:2241 +#: src/cryptsetup.c:2376 src/cryptsetup.c:2442 src/utils_reencrypt_luks1.c:428 msgid "Failed to set pbkdf parameters." msgstr "Nu s-au putut definii parametrii pbkdf." -#: src/cryptsetup.c:1786 +#: src/cryptsetup.c:1785 msgid "Reduced data offset is allowed only for detached LUKS header." msgstr "Decalajul redus de date este permis numai pentru antetul LUKS detașat." -#: src/cryptsetup.c:1793 +#: src/cryptsetup.c:1792 #, c-format msgid "LUKS file container %s is too small for activation, there is no remaining space for data." msgstr "Containerul de fișiere LUKS %s este prea mic pentru activare, nu mai rămâne spațiu pentru date." -#: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:277 +#: src/cryptsetup.c:1834 src/cryptsetup.c:2247 src/utils_reencrypt.c:277 #: src/utils_reencrypt.c:369 src/utils_reencrypt.c:1907 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "Nu se poate determina dimensiunea cheii de volum pentru LUKS fără sloturi de chei; folosiți opțiunea „--key-size” pentru a furniza aceste date." -#: src/cryptsetup.c:1854 src/utils_reencrypt.c:303 +#: src/cryptsetup.c:1853 src/utils_reencrypt.c:303 msgid "Device requires two volume keys." msgstr "Dispozitivul necesită două chei de volum." -#: src/cryptsetup.c:1889 +#: src/cryptsetup.c:1888 msgid "Some specified activation parameters were ignored with OPAL hw-only encryption." msgstr "Unii parametri de activare specificați au fost ignorați cu criptarea OPAL hw-only." -#: src/cryptsetup.c:1894 +#: src/cryptsetup.c:1893 msgid "Device activated but cannot make flags persistent." msgstr "Dispozitivul a fost activat, dar nu se poate face ca fanioanele să fie persistente." -#: src/cryptsetup.c:1974 src/cryptsetup.c:2042 +#: src/cryptsetup.c:1973 src/cryptsetup.c:2041 #, c-format msgid "Keyslot %d is selected for deletion." msgstr "Slotul de cheie %d este selectat pentru ștergere." -#: src/cryptsetup.c:1986 src/cryptsetup.c:2046 +#: src/cryptsetup.c:1985 src/cryptsetup.c:2045 msgid "This is the last keyslot. Device will become unusable after purging this key." msgstr "Acesta este ultimul slot de cheie. Dispozitivul va deveni inutilizabil după eliminarea acestei chei." -#: src/cryptsetup.c:1987 +#: src/cryptsetup.c:1986 msgid "Enter any remaining passphrase: " msgstr "Introduceți orice frază de acces rămasă: " -#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 +#: src/cryptsetup.c:1987 src/cryptsetup.c:2047 msgid "Operation aborted, the keyslot was NOT wiped.\n" msgstr "Operația a fost întreruptă, slotul de cheie NU a fost șters.\n" -#: src/cryptsetup.c:2024 +#: src/cryptsetup.c:2023 msgid "Enter passphrase to be deleted: " msgstr "Introduceți fraza de acces pentru a fi ștearsă: " -#: src/cryptsetup.c:2074 src/cryptsetup.c:2426 src/cryptsetup.c:3086 -#: src/cryptsetup.c:3253 +#: src/cryptsetup.c:2073 src/cryptsetup.c:2425 src/cryptsetup.c:3085 +#: src/cryptsetup.c:3252 #, c-format msgid "Device %s is not a valid LUKS2 device." msgstr "Dispozitivul %s nu este un dispozitiv LUKS2 valid." -#: src/cryptsetup.c:2113 src/cryptsetup.c:2312 +#: src/cryptsetup.c:2112 src/cryptsetup.c:2311 msgid "Enter new passphrase for key slot: " msgstr "Introduceți noua frază de acces pentru slotul de cheie: " -#: src/cryptsetup.c:2147 src/utils_luks.c:342 +#: src/cryptsetup.c:2146 src/utils_luks.c:342 #, c-format msgid "Enter token PIN: " msgstr "Introduceți codul PIN al jetonului: " -#: src/cryptsetup.c:2149 src/utils_luks.c:344 +#: src/cryptsetup.c:2148 src/utils_luks.c:344 #, c-format msgid "Enter token %d PIN: " msgstr "Introduceți codul PIN al jetonului(token) %d: " -#: src/cryptsetup.c:2208 +#: src/cryptsetup.c:2207 msgid "WARNING: The --key-slot parameter is used for new keyslot number.\n" msgstr "AVERTISMENT: Parametrul „--key-slot” este utilizat pentru noul număr de slot de cheie.\n" -#: src/cryptsetup.c:2285 src/utils_reencrypt_luks1.c:1094 +#: src/cryptsetup.c:2284 src/utils_reencrypt_luks1.c:1094 #, c-format msgid "Enter any existing passphrase: " msgstr "Introduceți orice frază de acces existentă: " -#: src/cryptsetup.c:2381 +#: src/cryptsetup.c:2380 msgid "Enter passphrase to be changed: " msgstr "Introduceți fraza de acces pentru a fi schimbată: " -#: src/cryptsetup.c:2397 src/utils_reencrypt_luks1.c:1080 +#: src/cryptsetup.c:2396 src/utils_reencrypt_luks1.c:1080 msgid "Enter new passphrase: " msgstr "Introduceți nouă frază de acces: " -#: src/cryptsetup.c:2447 +#: src/cryptsetup.c:2446 msgid "Enter passphrase for keyslot to be converted: " msgstr "Introduceți fraza de acces pentru slotul de cheie care urmează să fie convertit: " -#: src/cryptsetup.c:2471 +#: src/cryptsetup.c:2470 msgid "Only one device argument for isLuks operation is supported." msgstr "Doar un singur dispozitiv este admis ca argument pentru operația isLuks." -#: src/cryptsetup.c:2576 +#: src/cryptsetup.c:2575 #, c-format msgid "Keyslot %d does not contain unbound key." msgstr "Slotul de cheie %d nu conține o cheie neasociată." -#: src/cryptsetup.c:2581 +#: src/cryptsetup.c:2580 msgid "" "The header dump with unbound key is sensitive information.\n" "This dump should be stored encrypted in a safe place." @@ -2551,52 +2547,52 @@ msgstr "" "Conținutul antetului cu cheia neasociată este o informație sensibilă.\n" "Acest conținut ar trebui să fie stocat criptat într-un loc sigur." -#: src/cryptsetup.c:2676 src/cryptsetup.c:2712 +#: src/cryptsetup.c:2675 src/cryptsetup.c:2711 #, c-format msgid "%s is not active %s device name." msgstr "%s nu este numele dispozitivului activ %s." -#: src/cryptsetup.c:2707 +#: src/cryptsetup.c:2706 #, c-format msgid "%s is not active LUKS device name or header is missing." msgstr "%s nu este numele unui dispozitiv LUKS activ sau antetul lipsește." -#: src/cryptsetup.c:2784 src/cryptsetup.c:2803 +#: src/cryptsetup.c:2783 src/cryptsetup.c:2802 msgid "Option --header-backup-file is required." msgstr "Este necesară opțiunea „--header-backup-file”." -#: src/cryptsetup.c:2834 +#: src/cryptsetup.c:2833 #, c-format msgid "%s is not cryptsetup managed device." msgstr "%s nu este un dispozitiv gestionat de «cryptsetup»." -#: src/cryptsetup.c:2845 +#: src/cryptsetup.c:2844 #, c-format msgid "Refresh is not supported for device type %s" msgstr "Reîmprospătarea nu este disponibilă pentru tipul de dispozitiv %s" -#: src/cryptsetup.c:2895 +#: src/cryptsetup.c:2894 #, c-format msgid "Unrecognized metadata device type %s." msgstr "Tip de dispozitiv de metadate nerecunoscut %s." -#: src/cryptsetup.c:2897 +#: src/cryptsetup.c:2896 msgid "Command requires device and mapped name as arguments." msgstr "Comanda necesită un dispozitiv și numele asociat acestuia ca argumente." -#: src/cryptsetup.c:2915 +#: src/cryptsetup.c:2914 msgid "Enter OPAL PSID: " msgstr "Introduceți PSID OPAL: " -#: src/cryptsetup.c:2915 +#: src/cryptsetup.c:2914 msgid "Enter OPAL Admin password: " msgstr "Introduceți parola de administrator OPAL: " -#: src/cryptsetup.c:2923 +#: src/cryptsetup.c:2922 msgid "WARNING: WHOLE disk will be factory reset and all data will be lost! Continue?" msgstr "AVERTISMENT: ÎNTREGUL disc va fi reinițializat la valorile din fabrică și toate datele se vor pierde! Continuați?" -#: src/cryptsetup.c:2966 +#: src/cryptsetup.c:2965 #, c-format msgid "" "This operation will erase all keyslots on device %s.\n" @@ -2605,363 +2601,363 @@ msgstr "" "Această operație va șterge toate sloturile de chei de pe dispozitivul %s.\n" "Dispozitivul va deveni inutilizabil după această operație." -#: src/cryptsetup.c:2973 +#: src/cryptsetup.c:2972 msgid "Operation aborted, keyslots were NOT wiped.\n" msgstr "Operația a fost întreruptă, sloturile de chei NU au fost șterse.\n" -#: src/cryptsetup.c:3012 +#: src/cryptsetup.c:3011 msgid "Invalid LUKS type, only luks1 and luks2 are supported." msgstr "Tip LUKS nevalid, numai luks1 și luks2 sunt acceptate." -#: src/cryptsetup.c:3028 +#: src/cryptsetup.c:3027 #, c-format msgid "Device is already %s type." msgstr "Dispozitivul este deja de tip %s." -#: src/cryptsetup.c:3035 +#: src/cryptsetup.c:3034 #, c-format msgid "This operation will convert %s to %s format.\n" msgstr "Această operație va converti %s în formatul %s.\n" -#: src/cryptsetup.c:3038 +#: src/cryptsetup.c:3037 msgid "Operation aborted, device was NOT converted.\n" msgstr "Operația a fost întreruptă, dispozitivul NU a fost convertit.\n" -#: src/cryptsetup.c:3078 +#: src/cryptsetup.c:3077 msgid "Option --priority, --label or --subsystem is missing." msgstr "Opțiunea „--priority”, „--label” sau „--subsystem” lipsește." -#: src/cryptsetup.c:3112 src/cryptsetup.c:3152 src/cryptsetup.c:3172 +#: src/cryptsetup.c:3111 src/cryptsetup.c:3151 src/cryptsetup.c:3171 #, c-format msgid "Token %d is invalid." msgstr "Jetonul(token) %d nu este valid." -#: src/cryptsetup.c:3115 src/cryptsetup.c:3175 +#: src/cryptsetup.c:3114 src/cryptsetup.c:3174 #, c-format msgid "Token %d in use." msgstr "Jetonul(token) %d este în uz." -#: src/cryptsetup.c:3127 +#: src/cryptsetup.c:3126 #, c-format msgid "Failed to add luks2-keyring token %d." msgstr "Nu s-a putut adăuga jetonul(token) %d la inelul de chei luks2." -#: src/cryptsetup.c:3138 src/cryptsetup.c:3201 +#: src/cryptsetup.c:3137 src/cryptsetup.c:3200 #, c-format msgid "Failed to assign token %d to keyslot %d." msgstr "Nu s-a putut atribui jetonul(token) %d slotului pentru cheie %d." -#: src/cryptsetup.c:3155 +#: src/cryptsetup.c:3154 #, c-format msgid "Token %d is not in use." msgstr "Jetonul %d nu este în uz." -#: src/cryptsetup.c:3192 +#: src/cryptsetup.c:3191 msgid "Failed to import token from file." msgstr "Nu s-a putut importa jetonul din fișier." -#: src/cryptsetup.c:3217 +#: src/cryptsetup.c:3216 #, c-format msgid "Failed to get token %d for export." msgstr "Nu s-a putut obține jetonul %d pentru export." -#: src/cryptsetup.c:3230 +#: src/cryptsetup.c:3229 #, c-format msgid "Token %d is not assigned to keyslot %d." msgstr "Jetonul %d nu este alocat slotului de cheie %d." -#: src/cryptsetup.c:3232 src/cryptsetup.c:3239 +#: src/cryptsetup.c:3231 src/cryptsetup.c:3238 #, c-format msgid "Failed to unassign token %d from keyslot %d." msgstr "Nu s-a putut anula atribuirea jetonului %d din slotul de cheie %d." -#: src/cryptsetup.c:3298 +#: src/cryptsetup.c:3297 msgid "Option --tcrypt-hidden, --tcrypt-system or --tcrypt-backup is supported only for TCRYPT device." msgstr "Opțiunea „--tcrypt-hidden”, „--tcrypt-system” sau „--tcrypt-backup” este acceptată doar pentru dispozitivele TCRYPT." -#: src/cryptsetup.c:3301 +#: src/cryptsetup.c:3300 msgid "Option --veracrypt or --disable-veracrypt is supported only for TCRYPT device type." msgstr "Opțiunea „--veracrypt” sau „--disable-veracrypt” este acceptată numai pentru tipul de dispozitiv TCRYPT." -#: src/cryptsetup.c:3304 +#: src/cryptsetup.c:3303 msgid "Option --veracrypt-pim is supported only for VeraCrypt compatible devices." msgstr "Opțiunea „--veracrypt-pim” este acceptată numai pentru dispozitivele compatibile cu VeraCrypt." -#: src/cryptsetup.c:3308 +#: src/cryptsetup.c:3307 msgid "Option --veracrypt-query-pim is supported only for VeraCrypt compatible devices." msgstr "Opțiunea „--veracrypt-query-pim” este acceptată numai pentru dispozitivele compatibile cu VeraCrypt." -#: src/cryptsetup.c:3310 +#: src/cryptsetup.c:3309 msgid "The options --veracrypt-pim and --veracrypt-query-pim are mutually exclusive." msgstr "Opțiunile „--veracrypt-pim” și „--veracrypt-query-pim” se exclud reciproc." -#: src/cryptsetup.c:3319 +#: src/cryptsetup.c:3318 msgid "Option --persistent is not allowed with --test-passphrase." msgstr "Opțiunea „--persistent” nu este permisă cu opțiunea „--test-passphrase”." -#: src/cryptsetup.c:3322 +#: src/cryptsetup.c:3321 msgid "Options --refresh and --test-passphrase are mutually exclusive." msgstr "Opțiunile „--refresh” și „--test-passphrase” se exclud reciproc." -#: src/cryptsetup.c:3325 +#: src/cryptsetup.c:3324 msgid "Option --shared is allowed only for open of plain device." msgstr "Opțiunea „--shared” este permisă numai pentru deschiderea unui dispozitiv simplu." -#: src/cryptsetup.c:3328 +#: src/cryptsetup.c:3327 msgid "Option --skip is supported only for open of plain and loopaes devices." msgstr "Opțiunea „--skip” este acceptată numai pentru deschiderea dispozitivelor simple și a dispozitivelor loopaes." -#: src/cryptsetup.c:3331 +#: src/cryptsetup.c:3330 msgid "Option --offset with open action is only supported for plain and loopaes devices." msgstr "Opțiunea „--offset” cu acțiune de deschidere este acceptată numai pentru dispozitivele simple și dispozitivele loopaes." -#: src/cryptsetup.c:3334 +#: src/cryptsetup.c:3333 msgid "Option --tcrypt-hidden cannot be combined with --allow-discards." msgstr "Opțiunea „--tcrypt-hidden” nu poate fi combinată cu opțiunea „--allow-discards”." -#: src/cryptsetup.c:3338 +#: src/cryptsetup.c:3337 msgid "Sector size option with open action is supported only for plain devices." msgstr "Opțiunea de dimensiune a sectorului cu acțiune de deschidere este acceptată numai pentru dispozitivele simple." -#: src/cryptsetup.c:3342 +#: src/cryptsetup.c:3341 msgid "Large IV sectors option is supported only for opening plain type device with sector size larger than 512 bytes." msgstr "Opțiunea sectoare IV (vector de inițializare) mari este acceptată numai pentru deschiderea dispozitivelor de tip simplu, cu dimensiunea sectorului mai mare de 512 de octeți." -#: src/cryptsetup.c:3347 +#: src/cryptsetup.c:3346 msgid "Option --test-passphrase is allowed only for open of LUKS, TCRYPT, BITLK and FVAULT2 devices." msgstr "Opțiunea „--test-passphrase” este permisă numai pentru deschiderea dispozitivelor LUKS, TCRYPT, BITLK și FVAULT2." -#: src/cryptsetup.c:3350 src/cryptsetup.c:3380 +#: src/cryptsetup.c:3349 src/cryptsetup.c:3379 msgid "Options --device-size and --size cannot be combined." msgstr "Opțiunile „--device-size” și „--size” nu pot fi combinate." -#: src/cryptsetup.c:3353 +#: src/cryptsetup.c:3352 msgid "Option --unbound is allowed only for open of luks device." msgstr "Opțiunea „--unbound” este permisă numai pentru deschiderea dispozitivelor luks." -#: src/cryptsetup.c:3356 +#: src/cryptsetup.c:3355 msgid "Option --unbound cannot be used without --test-passphrase." msgstr "Opțiunea „--unbound” nu poate fi utilizată fără opțiunea „--test-passphrase”." -#: src/cryptsetup.c:3360 +#: src/cryptsetup.c:3359 msgid "Option --volume-key-keyring cannot be combined with --hash or --volume-key-file." msgstr "Opțiunea „--volume-key-keyring” nu poate fi combinată cu opțiunea „--hash” sau cu opțiunea „--volume-key-file”." -#: src/cryptsetup.c:3363 +#: src/cryptsetup.c:3362 msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "Ambele opțiuni „--volume-key-file” trebuie să fie asociate cu opțiunile „--key-size” respective." -#: src/cryptsetup.c:3372 src/veritysetup.c:673 src/integritysetup.c:787 +#: src/cryptsetup.c:3371 src/veritysetup.c:673 src/integritysetup.c:787 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "Opțiunile „--cancel-deferred” și „--deferred” nu pot fi utilizate în același timp." -#: src/cryptsetup.c:3388 +#: src/cryptsetup.c:3387 msgid "Option --active-name can be set only for LUKS2 device." msgstr "Opțiunea „--active-name” poate fi utilizată numai pentru dispozitivele LUKS2." -#: src/cryptsetup.c:3391 +#: src/cryptsetup.c:3390 msgid "Options --active-name and --force-offline-reencrypt cannot be combined." msgstr "Opțiunile „--active-name” și „--force-offline-reencrypt” nu pot fi combinate." -#: src/cryptsetup.c:3394 +#: src/cryptsetup.c:3393 msgid "Options --new-volume-key-file and --keep-key cannot be combined." msgstr "Opțiunile „--new-volume-key-file” și „--keep-key” nu pot fi combinate." -#: src/cryptsetup.c:3397 +#: src/cryptsetup.c:3396 msgid "Options --new-volume-key-keyring and --keep-key cannot be combined." msgstr "Opțiunile „--new-volume-key-keyring” și „--keep-key” nu pot fi combinate." -#: src/cryptsetup.c:3405 src/cryptsetup.c:3435 +#: src/cryptsetup.c:3404 src/cryptsetup.c:3434 msgid "Keyslot specification is required." msgstr "Este necesară specificarea slotului de cheie." -#: src/cryptsetup.c:3413 +#: src/cryptsetup.c:3412 msgid "Options --align-payload and --offset cannot be combined." msgstr "Opțiunile „--align-payload” și „--offset” nu pot fi combinate." -#: src/cryptsetup.c:3416 +#: src/cryptsetup.c:3415 msgid "Option --integrity-no-wipe can be used only for format action with integrity extension." msgstr "Opțiunea „--integrity-no-wipe” poate fi utilizată numai pentru acțiuni de formatare cu extensie de integritate." -#: src/cryptsetup.c:3419 +#: src/cryptsetup.c:3418 msgid "Only one of --use-[u]random options is allowed." msgstr "Numai una dintre opțiunile „--use-[u]random” este permisă." -#: src/cryptsetup.c:3427 +#: src/cryptsetup.c:3426 msgid "Key size is required with --unbound option." msgstr "Dimensiunea cheii este necesară cu opțiunea „--unbound”." -#: src/cryptsetup.c:3447 +#: src/cryptsetup.c:3446 msgid "Invalid token action." msgstr "Operație cu jeton(token) nevalidă." -#: src/cryptsetup.c:3450 +#: src/cryptsetup.c:3449 msgid "--key-description parameter is mandatory for token add action." msgstr "Parametrul „--key-description” este obligatoriu pentru acțiunea de adăugare a jetonului." -#: src/cryptsetup.c:3454 src/cryptsetup.c:3467 +#: src/cryptsetup.c:3453 src/cryptsetup.c:3466 msgid "Action requires specific token. Use --token-id parameter." msgstr "Acțiunea necesită un jeton(token)l specific. Utilizați parametrul „--token-id”." -#: src/cryptsetup.c:3458 +#: src/cryptsetup.c:3457 msgid "Option --unbound is valid only with token add action." msgstr "Opțiunea „--unbound” este validă numai cu acțiunea de adăugare a jetonului." -#: src/cryptsetup.c:3460 +#: src/cryptsetup.c:3459 msgid "Options --key-slot and --unbound cannot be combined." msgstr "Opțiunile „--key-slot” și „--unbound” nu pot fi combinate." -#: src/cryptsetup.c:3465 +#: src/cryptsetup.c:3464 msgid "Action requires specific keyslot. Use --key-slot parameter." msgstr "Acțiunea necesită un slot de cheie specific. Utilizați parametrul „--key-slot”." -#: src/cryptsetup.c:3481 +#: src/cryptsetup.c:3480 msgid " [--type ] []" msgstr " [--type ] []" -#: src/cryptsetup.c:3481 src/veritysetup.c:487 src/integritysetup.c:554 +#: src/cryptsetup.c:3480 src/veritysetup.c:487 src/integritysetup.c:554 msgid "open device as " msgstr "deschide dispozitivul ca " -#: src/cryptsetup.c:3482 src/cryptsetup.c:3483 src/cryptsetup.c:3484 +#: src/cryptsetup.c:3481 src/cryptsetup.c:3482 src/cryptsetup.c:3483 #: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:555 #: src/integritysetup.c:556 src/integritysetup.c:558 msgid "" msgstr "" -#: src/cryptsetup.c:3482 src/veritysetup.c:488 src/integritysetup.c:555 +#: src/cryptsetup.c:3481 src/veritysetup.c:488 src/integritysetup.c:555 msgid "close device (remove mapping)" msgstr "închide dispozitivul (elimină asocierea)" -#: src/cryptsetup.c:3483 src/integritysetup.c:558 +#: src/cryptsetup.c:3482 src/integritysetup.c:558 msgid "resize active device" msgstr "redimensionează dispozitivul activ" -#: src/cryptsetup.c:3484 +#: src/cryptsetup.c:3483 msgid "show device status" msgstr "afișează starea dispozitivului" -#: src/cryptsetup.c:3485 +#: src/cryptsetup.c:3484 msgid "[--cipher ]" msgstr "[--cipher ]" -#: src/cryptsetup.c:3485 +#: src/cryptsetup.c:3484 msgid "benchmark cipher" msgstr "evaluează performanța cifrului" -#: src/cryptsetup.c:3486 src/cryptsetup.c:3487 src/cryptsetup.c:3488 -#: src/cryptsetup.c:3489 src/cryptsetup.c:3490 src/cryptsetup.c:3497 -#: src/cryptsetup.c:3498 src/cryptsetup.c:3499 src/cryptsetup.c:3500 -#: src/cryptsetup.c:3501 src/cryptsetup.c:3502 src/cryptsetup.c:3503 -#: src/cryptsetup.c:3504 src/cryptsetup.c:3505 src/cryptsetup.c:3506 +#: src/cryptsetup.c:3485 src/cryptsetup.c:3486 src/cryptsetup.c:3487 +#: src/cryptsetup.c:3488 src/cryptsetup.c:3489 src/cryptsetup.c:3496 +#: src/cryptsetup.c:3497 src/cryptsetup.c:3498 src/cryptsetup.c:3499 +#: src/cryptsetup.c:3500 src/cryptsetup.c:3501 src/cryptsetup.c:3502 +#: src/cryptsetup.c:3503 src/cryptsetup.c:3504 src/cryptsetup.c:3505 msgid "" msgstr "" -#: src/cryptsetup.c:3486 +#: src/cryptsetup.c:3485 msgid "try to repair on-disk metadata" msgstr "încearcă să repare metadatele de pe disc" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3486 msgid "reencrypt LUKS2 device" msgstr "recriptează dispozitivul LUKS2" -#: src/cryptsetup.c:3488 +#: src/cryptsetup.c:3487 msgid "erase all keyslots (remove encryption key)" msgstr "șterge toate sloturile de chei (elimină cheia de criptare)" -#: src/cryptsetup.c:3489 +#: src/cryptsetup.c:3488 msgid "convert LUKS from/to LUKS2 format" msgstr "convertește LUKS din/în formatul LUKS2" -#: src/cryptsetup.c:3490 +#: src/cryptsetup.c:3489 msgid "set permanent configuration options for LUKS2" msgstr "definește opțiunile permanente de configurare pentru LUKS2" -#: src/cryptsetup.c:3491 src/cryptsetup.c:3492 +#: src/cryptsetup.c:3490 src/cryptsetup.c:3491 msgid " []" msgstr " []" -#: src/cryptsetup.c:3491 +#: src/cryptsetup.c:3490 msgid "formats a LUKS device" msgstr "formatează un dispozitiv LUKS" -#: src/cryptsetup.c:3492 +#: src/cryptsetup.c:3491 msgid "add key to LUKS device" msgstr "adaugă o cheie la dispozitivul LUKS" -#: src/cryptsetup.c:3493 src/cryptsetup.c:3494 src/cryptsetup.c:3495 +#: src/cryptsetup.c:3492 src/cryptsetup.c:3493 src/cryptsetup.c:3494 msgid " []" msgstr " []" -#: src/cryptsetup.c:3493 +#: src/cryptsetup.c:3492 msgid "removes supplied key or key file from LUKS device" msgstr "elimină cheia sau fișierul cheie furnizat de pe dispozitivul LUKS" -#: src/cryptsetup.c:3494 +#: src/cryptsetup.c:3493 msgid "changes supplied key or key file of LUKS device" msgstr "modifică cheia furnizată sau fișierul cheie al dispozitivului LUKS" -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3494 msgid "converts a key to new pbkdf parameters" msgstr "convertește o cheie în noii parametri pbkdf" -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3495 msgid " " msgstr " " -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3495 msgid "wipes key with number from LUKS device" msgstr "șterge cheia cu numărul de pe dispozitivul LUKS" -#: src/cryptsetup.c:3497 +#: src/cryptsetup.c:3496 msgid "print UUID of LUKS device" msgstr "afișează UUID-ul dispozitivului LUKS" -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3497 msgid "tests for LUKS partition header" msgstr "testează pentru antetul partiției LUKS" -#: src/cryptsetup.c:3499 +#: src/cryptsetup.c:3498 msgid "dump LUKS partition information" msgstr "afișează informațiile despre partiția LUKS" -#: src/cryptsetup.c:3500 +#: src/cryptsetup.c:3499 msgid "dump TCRYPT device information" msgstr "afișează informațiile despre dispozitivul TCRYPT" -#: src/cryptsetup.c:3501 +#: src/cryptsetup.c:3500 msgid "dump BITLK device information" msgstr "afișează informațiile despre dispozitivul BITLK" -#: src/cryptsetup.c:3502 +#: src/cryptsetup.c:3501 msgid "dump FVAULT2 device information" msgstr "afișează informațiile despre dispozitivul FVAULT2" -#: src/cryptsetup.c:3503 +#: src/cryptsetup.c:3502 msgid "Suspend LUKS device and wipe key (all IOs are frozen)" msgstr "Suspendă dispozitivul LUKS și șterge cheia (toate In/Ieșirile sunt înghețate)" -#: src/cryptsetup.c:3504 +#: src/cryptsetup.c:3503 msgid "Resume suspended LUKS device" msgstr "Repune în funcțiune dispozitivul LUKS suspendat" -#: src/cryptsetup.c:3505 +#: src/cryptsetup.c:3504 msgid "Backup LUKS device header and keyslots" msgstr "Face copie de rezervă pentru antetul dispozitivului LUKS și pentru sloturile de chei" -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3505 msgid "Restore LUKS device header and keyslots" msgstr "Restaurează antetul dispozitivului LUKS și sloturile de chei" -#: src/cryptsetup.c:3507 +#: src/cryptsetup.c:3506 msgid " " msgstr " " -#: src/cryptsetup.c:3507 +#: src/cryptsetup.c:3506 msgid "Manipulate LUKS2 tokens" msgstr "Manipulează jetoanele LUKS2" -#: src/cryptsetup.c:3526 src/veritysetup.c:505 src/integritysetup.c:573 +#: src/cryptsetup.c:3525 src/veritysetup.c:505 src/integritysetup.c:573 msgid "" "\n" " is one of:\n" @@ -2976,7 +2972,7 @@ msgstr "" # nume, sau alias pentru primele. # A se vedea ieșirea comenzii: # «cryptsetup -?|--help» -#: src/cryptsetup.c:3532 +#: src/cryptsetup.c:3531 msgid "" "\n" "You can also use old syntax aliases:\n" @@ -2988,7 +2984,7 @@ msgstr "" "\topen: create (plainOpen), luksOpen, loopaesOpen, tcryptOpen, bitlkOpen, fvault2Open\n" "\tclose: remove (plainClose), luksClose, loopaesClose, tcryptClose, bitlkClose, fvault2Close\n" -#: src/cryptsetup.c:3536 +#: src/cryptsetup.c:3535 #, c-format msgid "" "\n" @@ -3003,7 +2999,7 @@ msgstr "" " este numărul slotului de cheie LUKS de modificat\n" " fișier cheie opțional pentru noua cheie pentru acțiunea luksAddKey\n" -#: src/cryptsetup.c:3543 +#: src/cryptsetup.c:3542 #, c-format msgid "" "\n" @@ -3012,7 +3008,7 @@ msgstr "" "\n" "Formatul implicit de metadate compilate este %s (pentru acțiunea luksFormat).\n" -#: src/cryptsetup.c:3548 +#: src/cryptsetup.c:3547 msgid "" "\n" "LUKS2 external token plugin support is enabled.\n" @@ -3020,12 +3016,12 @@ msgstr "" "\n" "Suportul pentru modulul de jeton(token) extern LUKS2 este activat.\n" -#: src/cryptsetup.c:3549 +#: src/cryptsetup.c:3548 #, c-format msgid "LUKS2 external token plugin path: %s.\n" msgstr "Ruta modulului pentru jetonul(token) extern LUKS2: %s.\n" -#: src/cryptsetup.c:3551 +#: src/cryptsetup.c:3550 msgid "" "\n" "LUKS2 external token plugin support is disabled.\n" @@ -3033,7 +3029,7 @@ msgstr "" "\n" "Suportul pentru modulul de jeton(token) extern LUKS2 este dezactivat.\n" -#: src/cryptsetup.c:3555 +#: src/cryptsetup.c:3554 #, c-format msgid "" "\n" @@ -3050,7 +3046,7 @@ msgstr "" "PBKDF implicit pentru LUKS2: %s\n" "\tTimp de iterare: %d, Memorie necesară: %dko, Fire de execuție paralele: %d\n" -#: src/cryptsetup.c:3566 +#: src/cryptsetup.c:3565 #, c-format msgid "" "\n" @@ -3065,122 +3061,122 @@ msgstr "" "\tsimplu: %s, Cheie: %d biți, Suma de control a parolei: %s\n" "\tLUKS: %s, Cheie: %d biți, Suma de control a antetului LUKS: %s, RNG: %s\n" -#: src/cryptsetup.c:3575 +#: src/cryptsetup.c:3574 msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: Dimensiunea implicită a cheii cu modul XTS (două chei interne) va fi dublată.\n" -#: src/cryptsetup.c:3593 src/veritysetup.c:647 src/integritysetup.c:733 +#: src/cryptsetup.c:3592 src/veritysetup.c:647 src/integritysetup.c:733 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: necesită %s ca argumente" -#: src/cryptsetup.c:3633 src/utils_reencrypt_luks1.c:1143 +#: src/cryptsetup.c:3632 src/utils_reencrypt_luks1.c:1143 msgid "Key slot is invalid." msgstr "Slotul de cheie nu este valid." -#: src/cryptsetup.c:3661 +#: src/cryptsetup.c:3660 msgid "Device size must be multiple of 512 bytes sector." msgstr "Dimensiunea dispozitivului trebuie să fie multiplu al sectorului de 512 octeți." -#: src/cryptsetup.c:3666 +#: src/cryptsetup.c:3665 msgid "Invalid max reencryption hotzone size specification." msgstr "Specificația pentru dimensiunea zonei fierbinți(active) pentru recriptare maximă nu este validă." -#: src/cryptsetup.c:3680 src/cryptsetup.c:3697 src/cryptsetup.c:3709 +#: src/cryptsetup.c:3679 src/cryptsetup.c:3696 src/cryptsetup.c:3708 msgid "Key size must be a multiple of 8 bits" msgstr "Dimensiunea cheii trebuie să fie multiplu de 8 biți" -#: src/cryptsetup.c:3687 +#: src/cryptsetup.c:3686 msgid "At most 2 key size specifications can be supplied." msgstr "Pot fi furnizate cel mult 2 specificații privind dimensiunea cheii." -#: src/cryptsetup.c:3716 src/cryptsetup.c:3727 +#: src/cryptsetup.c:3715 src/cryptsetup.c:3726 #, c-format msgid "At most %d volume key specifications can be supplied." msgstr "Pot fi furnizate cel mult %d specificații ale cheilor de volum." -#: src/cryptsetup.c:3739 +#: src/cryptsetup.c:3738 #, c-format msgid "At most %d keyring link specifications can be supplied." msgstr "Pot fi furnizate cel mult %d specificații de legătură a inelului de chei." -#: src/cryptsetup.c:3748 +#: src/cryptsetup.c:3747 msgid "Maximum device reduce size is 1 GiB." msgstr "Dimensiunea maximă de reducere a dispozitivului este de 1 GiB." -#: src/cryptsetup.c:3751 +#: src/cryptsetup.c:3750 msgid "Reduce size must be multiple of 512 bytes sector." msgstr "Dimensiunea redusă trebuie să fie multiplu al sectorului de 512 octeți." -#: src/cryptsetup.c:3768 +#: src/cryptsetup.c:3767 msgid "Option --priority can be only ignore/normal/prefer." msgstr "Argumentul opțiuni „--priority” poate fi doar «ignore/normal/prefer»." -#: src/cryptsetup.c:3787 src/veritysetup.c:568 src/integritysetup.c:653 +#: src/cryptsetup.c:3786 src/veritysetup.c:568 src/integritysetup.c:653 msgid "Show this help message" msgstr "Afișează acest mesaj de ajutor" -#: src/cryptsetup.c:3788 src/veritysetup.c:569 src/integritysetup.c:654 +#: src/cryptsetup.c:3787 src/veritysetup.c:569 src/integritysetup.c:654 msgid "Display brief usage" msgstr "Afișează modul de utilizare pe scurt" -#: src/cryptsetup.c:3789 src/veritysetup.c:570 src/integritysetup.c:655 +#: src/cryptsetup.c:3788 src/veritysetup.c:570 src/integritysetup.c:655 msgid "Print package version" msgstr "Afișează versiunea pachetului" -#: src/cryptsetup.c:3800 src/veritysetup.c:581 src/integritysetup.c:666 +#: src/cryptsetup.c:3799 src/veritysetup.c:581 src/integritysetup.c:666 msgid "Help options:" msgstr "Opțiuni de ajutor:" -#: src/cryptsetup.c:3823 src/veritysetup.c:602 src/integritysetup.c:686 +#: src/cryptsetup.c:3822 src/veritysetup.c:602 src/integritysetup.c:686 msgid "[OPTION...] " msgstr "[OPȚIUNE...] " -#: src/cryptsetup.c:3832 src/veritysetup.c:611 src/integritysetup.c:697 +#: src/cryptsetup.c:3831 src/veritysetup.c:611 src/integritysetup.c:697 msgid "Argument missing." msgstr "Argumentul lipsește." -#: src/cryptsetup.c:3911 src/veritysetup.c:642 src/integritysetup.c:728 +#: src/cryptsetup.c:3910 src/veritysetup.c:642 src/integritysetup.c:728 msgid "Unknown action." msgstr "Acțiune necunoscută." -#: src/cryptsetup.c:3929 +#: src/cryptsetup.c:3928 msgid "Option --key-file takes precedence over specified key file argument." msgstr "Opțiunea „--key-file” are prioritate față de argumentul specificat pentru fișierul cheie." -#: src/cryptsetup.c:3935 +#: src/cryptsetup.c:3934 msgid "Only one --key-file argument is allowed." msgstr "Numai un argument „--key-file” este permis." -#: src/cryptsetup.c:3940 +#: src/cryptsetup.c:3939 msgid "Password-based key derivation function (PBKDF) can be only pbkdf2 or argon2i/argon2id." msgstr "Funcția de derivare a unei chei bazată pe parolă (PBKDF=Password-Based Key Derivation Function) poate fi doar pbkdf2 sau argon2i/argon2id." -#: src/cryptsetup.c:3945 +#: src/cryptsetup.c:3944 msgid "PBKDF forced iterations cannot be combined with iteration time option." msgstr "Iterațiile forțate PBKDF nu pot fi combinate cu opțiunea de timp de iterație." -#: src/cryptsetup.c:3950 +#: src/cryptsetup.c:3949 msgid "Cannot link volume key to a keyring when keyring is disabled." msgstr "Nu se poate lega cheia de volum la un inel de chei când este dezactivat." -#: src/cryptsetup.c:3955 +#: src/cryptsetup.c:3954 msgid "Cannot use keyring key description when keyring is disabled." msgstr "Nu se poate utiliza descrierea cheii pentru inelul de chei atunci când inelul de chei este dezactivat." -#: src/cryptsetup.c:3960 +#: src/cryptsetup.c:3959 msgid "Inline integrity must be used together with --integrity option." msgstr "Integritatea în linie trebuie utilizată împreună cu opțiunea „--integrity”." -#: src/cryptsetup.c:3971 +#: src/cryptsetup.c:3970 msgid "Options --keyslot-cipher and --keyslot-key-size must be used together." msgstr "Opțiunile „--keyslot-cipher” și „--keyslot-key-size” trebuie să fie folosite împreună." -#: src/cryptsetup.c:3979 +#: src/cryptsetup.c:3978 msgid "No action taken. Invoked with --test-args option.\n" msgstr "Nu s-a executat nicio acțiune. Programul a fost invocat cu opțiunea „--test-args”.\n" -#: src/cryptsetup.c:3992 +#: src/cryptsetup.c:3991 msgid "Cannot disable metadata locking." msgstr "Nu se poate dezactiva blocarea metadatelor." @@ -4378,6 +4374,12 @@ msgstr "Metoda de autentificare cu cheie publică nu este permisă pe gazdă.\n" msgid "Public key authentication error: " msgstr "Eroare la autentificarea cu cheia publică: " +#~ msgid "Required kernel crypto interface not available." +#~ msgstr "Interfața necesară de criptare a nucleului nu este disponibilă." + +#~ msgid "Ensure you have algif_skcipher kernel module loaded." +#~ msgstr "Asigurați-vă că aveți modulul nucleului «algif_skcipher», încărcat." + #, c-format #~ msgid "Failed to read or validate BITLK FVE metadata copy #%d from %s." #~ msgstr "Nu s-a putut citi sau valida copia metadatelor BITLK FVE #%d din %s." From bed8275189eed6b7e22996dbf8387d8b1de0a1f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mari=C3=A1n=20Haburaj?= Date: Sat, 4 Jul 2026 18:12:56 +0200 Subject: [PATCH 166/244] po: update sk.po (from translationproject.org) --- po/sk.po | 1019 +++++++++++++++++++++++++++--------------------------- 1 file changed, 510 insertions(+), 509 deletions(-) diff --git a/po/sk.po b/po/sk.po index 1887b99f7..2ffed35e7 100644 --- a/po/sk.po +++ b/po/sk.po @@ -16,10 +16,10 @@ # msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.5-rc0\n" +"Project-Id-Version: cryptsetup 2.8.7-rc1\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2026-03-30 14:18+0200\n" -"PO-Revision-Date: 2026-03-30 22:37+0200\n" +"POT-Creation-Date: 2026-06-29 21:30+0200\n" +"PO-Revision-Date: 2026-06-30 13:17+0200\n" "Last-Translator: Marián Haburaj \n" "Language-Team: Slovak \n" "Language: sk\n" @@ -88,7 +88,7 @@ msgid "Requested automatic recalculation of integrity tags is not supported." msgstr "Požadované automatické prepočítanie príznakov integrity nie je podporované." #: lib/libdevmapper.c:1802 lib/libdevmapper.c:1856 lib/libdevmapper.c:1859 -#: lib/luks2/luks2_json_metadata.c:2781 +#: lib/luks2/luks2_json_metadata.c:2799 msgid "Discard/TRIM is not supported." msgstr "Zahadzovanie/TRIM nie je podporované." @@ -134,665 +134,665 @@ msgstr "Je požadovaná neznáma kvalita generátoru náhodných čísel." msgid "Error reading from RNG." msgstr "Chyba pri čítaní z generátoru náhodných čísel." -#: lib/setup.c:248 +#: lib/setup.c:251 msgid "OPAL support is disabled in libcryptsetup." msgstr "Podpora OPAL je vypnutá v libcryptsetup." -#: lib/setup.c:250 +#: lib/setup.c:253 #, c-format msgid "Device %s or kernel does not support OPAL encryption." msgstr "Zariadenie %s alebo jadro nepodporuje šifrovanie OPAL." -#: lib/setup.c:266 +#: lib/setup.c:269 msgid "Cannot initialize crypto RNG backend." msgstr "Neviem inicializovať implementáciu šifr generátora náhodných čísel." -#: lib/setup.c:272 +#: lib/setup.c:275 msgid "Cannot initialize crypto backend." msgstr "Neviem inicializovať implementáciu šifrovania." -#: lib/setup.c:305 lib/setup.c:2766 lib/verity/verity.c:109 +#: lib/setup.c:308 lib/setup.c:2769 lib/verity/verity.c:109 #, c-format msgid "Hash algorithm %s not supported." msgstr "Hashovací algoritmus %s nie je podporovaný." -#: lib/setup.c:308 lib/loopaes/loopaes.c:78 +#: lib/setup.c:311 lib/loopaes/loopaes.c:78 #, c-format msgid "Key processing error (using hash %s)." msgstr "Chyba pri spracovaní kľúča (používa sa hash %s)." -#: lib/setup.c:389 lib/setup.c:426 +#: lib/setup.c:392 lib/setup.c:429 msgid "Cannot determine device type. Incompatible activation of device?" msgstr "Neviem určiť typ zariadenia. Nekompatibilná aktivácia zariadenia?" -#: lib/setup.c:395 lib/setup.c:4160 +#: lib/setup.c:398 lib/setup.c:4177 msgid "This operation is supported only for LUKS device." msgstr "Táto operácie je podporované len pre LUKS zariadenie." -#: lib/setup.c:432 +#: lib/setup.c:435 msgid "This operation is supported only for LUKS2 device." msgstr "Táto operácia je podporovaná len pre LUKS2 zariadenie." -#: lib/setup.c:489 lib/luks2/luks2_reencrypt.c:3101 +#: lib/setup.c:492 lib/luks2/luks2_reencrypt.c:3102 msgid "All key slots full." msgstr "Všetky miesta pre kľúče sú obsadené." -#: lib/setup.c:500 +#: lib/setup.c:503 #, c-format msgid "Key slot %d is invalid, please select between 0 and %d." msgstr "Miesto pre kľúč %d je neplatné, prosím vyberte číslo medzi 0 a %d." -#: lib/setup.c:506 +#: lib/setup.c:509 #, c-format msgid "Key slot %d is full, please select another one." msgstr "Miesto pre kľúč %d je obsadené, prosím vyberte iné." -#: lib/setup.c:531 lib/setup.c:3875 +#: lib/setup.c:534 lib/setup.c:3878 msgid "Device size is not aligned to device logical block size." msgstr "Veľkosť zariadenia nie je zarovnaná na veľkosť logického bloku zariadenia." -#: lib/setup.c:628 +#: lib/setup.c:631 #, c-format msgid "Header detected but device %s is too small." msgstr "Hlavička bola nájdená, ale zariadenie %s je veľmi malé." -#: lib/setup.c:669 lib/setup.c:3760 lib/setup.c:5238 -#: lib/luks2/luks2_reencrypt.c:3948 lib/luks2/luks2_reencrypt.c:4437 +#: lib/setup.c:672 lib/setup.c:3763 lib/setup.c:5272 +#: lib/luks2/luks2_reencrypt.c:3949 lib/luks2/luks2_reencrypt.c:4438 msgid "This operation is not supported for this device type." msgstr "Táto operácie nie je podporovaná pre tento typ zariadenia." -#: lib/setup.c:674 +#: lib/setup.c:677 msgid "Illegal operation with reencryption in-progress." msgstr "Zakázaná operácie počas prešifrovania." -#: lib/setup.c:806 +#: lib/setup.c:809 msgid "Failed to rollback LUKS2 metadata in memory." msgstr "Nahradenie pôvodných LUKS2 metadát v pamäti zlyhalo." -#: lib/setup.c:893 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 -#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 -#: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 -#: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2953 -#: src/cryptsetup.c:3021 src/utils_reencrypt.c:2281 +#: lib/setup.c:896 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 +#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1779 +#: src/cryptsetup.c:1963 src/cryptsetup.c:2018 src/cryptsetup.c:2216 +#: src/cryptsetup.c:2361 src/cryptsetup.c:2639 src/cryptsetup.c:2952 +#: src/cryptsetup.c:3020 src/utils_reencrypt.c:2281 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." msgstr "Zariadenie %s nie je platné LUKS zariadenie." -#: lib/setup.c:896 lib/luks1/keymanage.c:517 +#: lib/setup.c:899 lib/luks1/keymanage.c:517 #, c-format msgid "Unsupported LUKS version %d." msgstr "Nepodporovaná LUKS verzia %d." -#: lib/setup.c:1270 +#: lib/setup.c:1273 #, c-format msgid "No known cipher specification pattern detected for active device %s." msgstr "Žiadna známa špecifikácia šifry nebola nájdená pre aktívne zariadenie %s." -#: lib/setup.c:1515 lib/setup.c:3507 lib/setup.c:3599 lib/setup.c:3611 -#: lib/setup.c:3783 lib/setup.c:5816 +#: lib/setup.c:1518 lib/setup.c:3510 lib/setup.c:3602 lib/setup.c:3614 +#: lib/setup.c:3786 lib/setup.c:5850 #, c-format msgid "Device %s is not active." msgstr "Zariadenie %s nie je aktívne." -#: lib/setup.c:1532 +#: lib/setup.c:1535 #, c-format msgid "Underlying device for crypt device %s disappeared." msgstr "Zariadenie nižšej úrovne pre šifrované zariadenie %s zmizlo." -#: lib/setup.c:1614 +#: lib/setup.c:1617 msgid "Invalid plain crypt parameters." msgstr "Neplatné parametre plain šifrovania." -#: lib/setup.c:1619 lib/setup.c:2669 +#: lib/setup.c:1622 lib/setup.c:2672 msgid "Invalid key size." msgstr "Neplatná veľkosť kľúča." -#: lib/setup.c:1624 lib/setup.c:2674 lib/setup.c:2879 +#: lib/setup.c:1627 lib/setup.c:2677 lib/setup.c:2882 msgid "UUID is not supported for this crypt type." msgstr "UUID nie je podporované pre tento typ šifrovania." -#: lib/setup.c:1629 lib/setup.c:2679 +#: lib/setup.c:1632 lib/setup.c:2682 msgid "Detached metadata device is not supported for this crypt type." msgstr "Zariadenie s oddelenými metadátami nie je podporované pre tento typ šifrovania." -#: lib/setup.c:1639 lib/setup.c:1887 lib/luks2/luks2_reencrypt.c:3034 -#: src/cryptsetup.c:1492 src/cryptsetup.c:3760 +#: lib/setup.c:1642 lib/setup.c:1890 lib/luks2/luks2_reencrypt.c:3035 +#: src/cryptsetup.c:1491 src/cryptsetup.c:3759 msgid "Unsupported encryption sector size." msgstr "Nepodporovaná veľkosť šifrovaného sektoru." -#: lib/setup.c:1647 lib/setup.c:1916 lib/setup.c:3869 +#: lib/setup.c:1650 lib/setup.c:1919 lib/setup.c:3872 msgid "Device size is not aligned to requested sector size." msgstr "Veľkosť zariadenia nie je zarovnaná k vyžadovanej veľkosti sektoru." -#: lib/setup.c:1699 lib/setup.c:1951 lib/setup.c:2328 +#: lib/setup.c:1702 lib/setup.c:1954 lib/setup.c:2331 msgid "Can't format LUKS without device." msgstr "Nie je možné formátovať LUKS bez zariadenia." -#: lib/setup.c:1704 lib/setup.c:1956 +#: lib/setup.c:1707 lib/setup.c:1959 #, c-format msgid "Zoned device %s cannot be used for LUKS header." msgstr "Zónové zariadenie %s nemôže byť použité pre LUKS hlavičku." -#: lib/setup.c:1711 lib/setup.c:1963 lib/setup.c:2334 +#: lib/setup.c:1714 lib/setup.c:1966 lib/setup.c:2337 msgid "Requested data alignment is not compatible with data offset." msgstr "Požadované zarovnanie údajov nie je kompatibilné s odsadením údajov." -#: lib/setup.c:1751 lib/setup.c:1981 +#: lib/setup.c:1754 lib/setup.c:1984 msgid "WARNING: DAX device can corrupt data as it does not guarantee atomic sector updates.\n" msgstr "VAROVANIE: DAX zariadenie môže poškodiť údaje, pretože nezaručuje atomické aktualizácie sektorov.\n" -#: lib/setup.c:1789 lib/setup.c:2088 lib/setup.c:2109 lib/setup.c:2517 -#: lib/setup.c:2564 lib/setup.c:2896 +#: lib/setup.c:1792 lib/setup.c:2091 lib/setup.c:2112 lib/setup.c:2520 +#: lib/setup.c:2567 lib/setup.c:2899 #, c-format msgid "Cannot wipe header on device %s." msgstr "Hlavička na zariadení %s nejde vymazať." -#: lib/setup.c:1802 lib/setup.c:2161 +#: lib/setup.c:1805 lib/setup.c:2164 #, c-format msgid "Device %s is too small for activation, there is no remaining space for data.\n" msgstr "Zariadenie %s je príliš malé pre aktiváciu, nie je tam žiadne zvyšné miesto pre údaje.\n" -#: lib/setup.c:1843 +#: lib/setup.c:1846 msgid "Volume key is too small for encryption with integrity extensions." msgstr "Kľúč zväzku je príliš malý na šifrovanie s rozšíreniami pre integritu." -#: lib/setup.c:1847 +#: lib/setup.c:1850 msgid "Integrity key size is too small." msgstr "Veľkosť kľúča integrity je príliš malá." -#: lib/setup.c:1856 +#: lib/setup.c:1859 #, c-format msgid "Cipher %s-%s (key size %zd bits) is not available." msgstr "Šifra %s-%s (veľkosť kľúča %zd bitov) nie je dostupná." -#: lib/setup.c:1897 +#: lib/setup.c:1900 msgid "WARNING: The device activation will fail, dm-crypt is missing support for requested encryption sector size.\n" msgstr "VAROVANIE: Aktivácia zariadenia zlyhá, dm-crypt nepodporuje vyžadovanú veľkosť šifrovaného sektoru.\n" -#: lib/setup.c:2091 lib/setup.c:2458 lib/setup.c:2520 lib/utils_device.c:906 -#: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3073 -#: lib/luks2/luks2_reencrypt.c:4497 +#: lib/setup.c:2094 lib/setup.c:2461 lib/setup.c:2523 lib/utils_device.c:906 +#: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3074 +#: lib/luks2/luks2_reencrypt.c:4498 #, c-format msgid "Device %s is too small." msgstr "Zariadenie %s je príliš malé." -#: lib/setup.c:2102 lib/setup.c:2141 lib/setup.c:2557 lib/setup.c:2615 +#: lib/setup.c:2105 lib/setup.c:2144 lib/setup.c:2560 lib/setup.c:2618 #, c-format msgid "Cannot format device %s in use." msgstr "Nedá sa naformátovať používané zariadenie %s." -#: lib/setup.c:2105 lib/setup.c:2144 lib/setup.c:2560 lib/setup.c:2618 +#: lib/setup.c:2108 lib/setup.c:2147 lib/setup.c:2563 lib/setup.c:2621 #, c-format msgid "Cannot format device %s, permission denied." msgstr "Prístup odmietnutý, nedá sa naformátovať zariadenie %s." -#: lib/setup.c:2129 lib/setup.c:2587 lib/setup.c:2969 +#: lib/setup.c:2132 lib/setup.c:2590 lib/setup.c:2972 #, c-format msgid "Cannot format integrity for device %s." msgstr "Pre zariadenie %s sa nedá formátovať integrita." -#: lib/setup.c:2148 lib/setup.c:2626 +#: lib/setup.c:2151 lib/setup.c:2629 #, c-format msgid "Cannot format device %s." msgstr "Nedá sa formátovať zariadenie %s." -#: lib/setup.c:2191 +#: lib/setup.c:2194 msgid "Cannot get OPAL alignment parameters." msgstr "Nedajú sa získať parametre zarovnania OPAL." -#: lib/setup.c:2203 +#: lib/setup.c:2206 msgid "Bogus OPAL logical block size." msgstr "Neplatná veľkosť logického bloku OPAL." -#: lib/setup.c:2208 lib/luks2/hw_opal/hw_opal.c:305 +#: lib/setup.c:2211 lib/luks2/hw_opal/hw_opal.c:305 msgid "Bogus OPAL logical block size differs from device block size." msgstr "Neplatná veľkosť logického bloku OPAL sa líši od veľkosti bloku zariadenia." -#: lib/setup.c:2214 +#: lib/setup.c:2217 msgid "Requested data offset is not compatible with OPAL block size." msgstr "Požadované odsadenie údajov nie je kompatibilné s veľkosťou bloku OPAL." -#: lib/setup.c:2221 +#: lib/setup.c:2224 msgid "Requested data alignment is not compatible with OPAL alignment." msgstr "Požadované zarovnanie údajov nie je kompatibilné so zarovnaním OPAL." -#: lib/setup.c:2241 +#: lib/setup.c:2244 msgid "Data offset does not satisfy OPAL alignment requirements." msgstr "Odsadenie údajov nespĺňa požiadavky zarovnania OPAL." -#: lib/setup.c:2254 +#: lib/setup.c:2257 msgid "Requested data alignment does not satisfy locking range alignment requirements." msgstr "Požadované zarovnanie údajov nespĺňa požiadavky na zarovnanie uzamykateľnej oblasti." -#: lib/setup.c:2468 +#: lib/setup.c:2471 #, c-format msgid "Compensating device size by % sectors to align it with OPAL alignment granularity." msgstr "Kompenzovanie veľkosti zariadenia o % sektorov na jeho zarovnanie s granualitou zarovnania OPAL." -#: lib/setup.c:2528 lib/setup.c:4243 lib/setup.c:4432 lib/utils_wipe.c:356 -#: lib/luks2/luks2_json_metadata.c:2724 lib/luks2/luks2_json_metadata.c:2992 +#: lib/setup.c:2531 lib/setup.c:4260 lib/setup.c:4466 lib/utils_wipe.c:356 +#: lib/luks2/luks2_json_metadata.c:2742 lib/luks2/luks2_json_metadata.c:3017 #, c-format msgid "Failed to acquire OPAL lock on device %s." msgstr "Zlyhalo získanie zámku OPAL na zariadení %s." -#: lib/setup.c:2538 +#: lib/setup.c:2541 msgid "Incorrect OPAL Admin key." msgstr "Nesprávny kľúč správcu OPAL." -#: lib/setup.c:2540 +#: lib/setup.c:2543 msgid "Cannot setup OPAL segment." msgstr "Nedá sa nastaviť segment OPAL." -#: lib/setup.c:2622 +#: lib/setup.c:2625 #, c-format msgid "Cannot format device %s, OPAL device seems to be fully write-protected now." msgstr "Nedá sa formátovať zariadenie %s, zariadenie OPAL sa teraz zdá byť úplne chránené voči zápisu." -#: lib/setup.c:2624 +#: lib/setup.c:2627 msgid "This is perhaps a bug in firmware. Run OPAL PSID reset and reconnect for recovery." msgstr "Toto je možno chyba vo firmvéri. Spustite resetovanie OPAL PSID a znova sa pripojte pre obnovu." -#: lib/setup.c:2644 +#: lib/setup.c:2647 #, c-format msgid "Locking range %d reset on device %s failed." msgstr "Reset uzamykateľnej oblasti %d na zariadení %s zlyhal." -#: lib/setup.c:2664 +#: lib/setup.c:2667 msgid "Can't format LOOPAES without device." msgstr "Nie je možné formátovať LOOPAES bez zariadenia." -#: lib/setup.c:2709 +#: lib/setup.c:2712 msgid "Can't format VERITY without device." msgstr "Nie je možné formátovať VERITY bez zariadenia." -#: lib/setup.c:2720 lib/verity/verity.c:88 +#: lib/setup.c:2723 lib/verity/verity.c:88 #, c-format msgid "Unsupported VERITY hash type %d." msgstr "Nepodporovaný typ hashu VERITY %d." -#: lib/setup.c:2726 lib/verity/verity.c:96 +#: lib/setup.c:2729 lib/verity/verity.c:96 msgid "Unsupported VERITY block size." msgstr "Nepodporovaná veľkosť bloku VERITY." -#: lib/setup.c:2731 lib/verity/verity.c:61 +#: lib/setup.c:2734 lib/verity/verity.c:61 msgid "Unsupported VERITY hash offset." msgstr "Nepodporované odsadenie hashu VERITY." -#: lib/setup.c:2736 +#: lib/setup.c:2739 msgid "Unsupported VERITY FEC offset." msgstr "Nepodporované odsadenie VERITY FEC." -#: lib/setup.c:2760 +#: lib/setup.c:2763 msgid "Data area overlaps with hash area." msgstr "Oblasť údajov presahuje do oblasti hashu." -#: lib/setup.c:2785 +#: lib/setup.c:2788 msgid "Hash area overlaps with FEC area." msgstr "Oblasť hashu presahuje do oblasti FEC." -#: lib/setup.c:2792 +#: lib/setup.c:2795 msgid "Data area overlaps with FEC area." msgstr "Oblasť údajov presahuje do oblasti FEC." -#: lib/setup.c:2884 +#: lib/setup.c:2887 msgid "Integrity key size mismatch." msgstr "Nesúlad vo veľkosti kľúča integrity." -#: lib/setup.c:2935 +#: lib/setup.c:2938 #, c-format msgid "WARNING: Requested tag size %d bytes differs from %s size output (%d bytes).\n" msgstr "VAROVANIE: Požadovaná veľkosť príznaku %d bajtov sa líši od %s veľkosti výstupu (%d bajtov).\n" -#: lib/setup.c:3048 lib/setup.c:3150 +#: lib/setup.c:3051 lib/setup.c:3153 #, c-format msgid "Unknown or unsupported device type %s requested." msgstr "Vyžadovaný neznámy alebo nepodporovaný typ šifrovaného zariadenia %s." -#: lib/setup.c:3064 +#: lib/setup.c:3067 #, c-format msgid "Device %s does not provide inline integrity data fields." msgstr "Zariadenie %s neposkytuje dátové polia pre inline integritu." -#: lib/setup.c:3070 +#: lib/setup.c:3073 #, c-format msgid "Inline tag size % [bytes] is larger than % provided by device %s." msgstr "Veľkosť príznaku inline % [bajtov] je väčšia ako % poskytnutá zariadením %s." -#: lib/setup.c:3085 +#: lib/setup.c:3088 #, c-format msgid "Sector must be the same as device hardware sector (%zu bytes)." msgstr "Sektor musí byť rovnaký ako hardvérový sektor zariadenia (%zu bajtov)." -#: lib/setup.c:3515 lib/setup.c:3604 lib/setup.c:3617 +#: lib/setup.c:3518 lib/setup.c:3607 lib/setup.c:3620 #, c-format msgid "Unsupported parameters on device %s." msgstr "Nepodporované parametre na zariadení %s." -#: lib/setup.c:3521 lib/setup.c:3624 lib/luks2/luks2_reencrypt.c:2928 -#: lib/luks2/luks2_reencrypt.c:3197 lib/luks2/luks2_reencrypt.c:3594 +#: lib/setup.c:3524 lib/setup.c:3627 lib/luks2/luks2_reencrypt.c:2929 +#: lib/luks2/luks2_reencrypt.c:3198 lib/luks2/luks2_reencrypt.c:3595 #, c-format msgid "Mismatching parameters on device %s." msgstr "Neodpovedajúce parametre na zariadení %s." -#: lib/setup.c:3647 +#: lib/setup.c:3650 msgid "Crypt devices mismatch." msgstr "Nesúlad v šifrovaných zariadeniach." -#: lib/setup.c:3679 lib/setup.c:3684 lib/luks2/luks2_reencrypt.c:2412 -#: lib/luks2/luks2_reencrypt.c:2944 lib/luks2/luks2_reencrypt.c:4236 +#: lib/setup.c:3682 lib/setup.c:3687 lib/luks2/luks2_reencrypt.c:2413 +#: lib/luks2/luks2_reencrypt.c:2945 lib/luks2/luks2_reencrypt.c:4237 #, c-format msgid "Failed to reload device %s." msgstr "Nepodarilo sa znovu načítať zariadenie %s." -#: lib/setup.c:3690 lib/setup.c:3696 lib/luks2/luks2_reencrypt.c:2382 -#: lib/luks2/luks2_reencrypt.c:2389 lib/luks2/luks2_reencrypt.c:2958 +#: lib/setup.c:3693 lib/setup.c:3699 lib/luks2/luks2_reencrypt.c:2383 +#: lib/luks2/luks2_reencrypt.c:2390 lib/luks2/luks2_reencrypt.c:2959 #, c-format msgid "Failed to suspend device %s." msgstr "Zlyhalo pozastavenie zariadenia %s." -#: lib/setup.c:3702 lib/luks2/luks2_reencrypt.c:2396 -#: lib/luks2/luks2_reencrypt.c:2979 lib/luks2/luks2_reencrypt.c:4149 -#: lib/luks2/luks2_reencrypt.c:4240 +#: lib/setup.c:3705 lib/luks2/luks2_reencrypt.c:2397 +#: lib/luks2/luks2_reencrypt.c:2980 lib/luks2/luks2_reencrypt.c:4150 +#: lib/luks2/luks2_reencrypt.c:4241 #, c-format msgid "Failed to resume device %s." msgstr "Zlyhalo prebudenie zariadenia %s." -#: lib/setup.c:3717 +#: lib/setup.c:3720 #, c-format msgid "Fatal error while reloading device %s (on top of device %s)." msgstr "Fatálna chyba počas opätovného načítavania zariadenia %s (nad zariadením %s)." -#: lib/setup.c:3720 lib/setup.c:3722 +#: lib/setup.c:3723 lib/setup.c:3725 #, c-format msgid "Failed to switch device %s to dm-error." msgstr "Zlyhalo prepnutie zariadenia %s na dm-error." -#: lib/setup.c:3765 +#: lib/setup.c:3768 msgid "Can not resize LUKS2 device with static size." msgstr "Nedá sa zmeniť veľkosť LUKS2 zariadenia so statickou veľkosťou." -#: lib/setup.c:3770 +#: lib/setup.c:3773 msgid "Resize of LUKS2 device with integrity protection is not supported." msgstr "Zmena veľkosti zariadenia s ochranou integrity nie je podporovaná." -#: lib/setup.c:3816 +#: lib/setup.c:3819 msgid "Cannot resize loop device." msgstr "Nie je možné zmeniť veľkosť loop zariadenia." -#: lib/setup.c:3860 +#: lib/setup.c:3863 msgid "WARNING: Maximum size already set or kernel doesn't support resize.\n" msgstr "VAROVANIE: Maximálna veľkosť je už dosiahnutá alebo jadro nepodporuje zmenu veľkosti.\n" -#: lib/setup.c:3926 +#: lib/setup.c:3929 msgid "Resize failed, the kernel doesn't support it." msgstr "Zmena veľkosti zlyhala, jadro toto nepodporuje." -#: lib/setup.c:3958 +#: lib/setup.c:3961 msgid "Do you really want to change UUID of device?" msgstr "Naozaj chcete zmeniť UUID zariadenia?" -#: lib/setup.c:4050 +#: lib/setup.c:4053 msgid "Header backup file does not contain compatible LUKS header." msgstr "Záložný súbor s hlavičkou neobsahuje kompatibilnú LUKS hlavičku." -#: lib/setup.c:4143 +#: lib/setup.c:4160 #, c-format msgid "Volume %s is not active." msgstr "Zväzok %s nie je aktívny." -#: lib/setup.c:4198 +#: lib/setup.c:4215 #, c-format msgid "Volume %s is already suspended." msgstr "Zväzok %s už je pozastavený." -#: lib/setup.c:4224 +#: lib/setup.c:4241 #, c-format msgid "Suspend is not supported for device %s." msgstr "Pozastavenie nie je podporované pre zariadenie %s." -#: lib/setup.c:4226 lib/setup.c:4234 +#: lib/setup.c:4243 lib/setup.c:4251 #, c-format msgid "Error during suspending device %s." msgstr "Chyba počas pozastavovania zariadenia %s." -#: lib/setup.c:4249 +#: lib/setup.c:4266 #, c-format msgid "Device %s was suspended but hardware OPAL device cannot be locked." msgstr "Zariadenie %s bolo pozastavené, ale hardvérové zariadenie OPAL nemôže byť uzamknuté." -#: lib/setup.c:4280 lib/setup.c:4457 +#: lib/setup.c:4297 lib/setup.c:4491 #, c-format msgid "Resume is not supported for device %s." msgstr "Prebudenie nie je podporované pre zariadenie %s." -#: lib/setup.c:4282 lib/setup.c:4447 lib/setup.c:4459 +#: lib/setup.c:4299 lib/setup.c:4481 lib/setup.c:4493 #, c-format msgid "Error during resuming device %s." msgstr "Chyba počas prebúdzania zariadenia %s." -#: lib/setup.c:4301 +#: lib/setup.c:4335 msgid "Failed to unlink volume key from user specified keyring." msgstr "Zlyhalo odpojenie kľúča zväzku od používateľom zadaného zväzku kľúčov." -#: lib/setup.c:4423 lib/setup.c:5603 +#: lib/setup.c:4457 lib/setup.c:5637 msgid "Failed to link volume key in user defined keyring." msgstr "Zlyhalo pripojenie kľúča zväzku do používateľom zadaného zväzku kľúčov." -#: lib/setup.c:4522 src/cryptsetup.c:2721 +#: lib/setup.c:4556 src/cryptsetup.c:2720 #, c-format msgid "Volume %s is not suspended." msgstr "Zväzok %s nie je pozastavený." -#: lib/setup.c:4633 lib/setup.c:7276 lib/setup.c:7298 lib/setup.c:7352 -#: src/cryptsetup.c:1856 src/cryptsetup.c:2260 src/cryptsetup.c:2278 -#: src/utils_reencrypt.c:305 src/utils_reencrypt.c:1966 +#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1855 +#: src/cryptsetup.c:2259 src/cryptsetup.c:2277 src/utils_reencrypt.c:305 +#: src/utils_reencrypt.c:1966 msgid "Volume key does not match the volume." msgstr "Kľúč zväzku nezodpovedá zväzku." -#: lib/setup.c:4787 +#: lib/setup.c:4821 msgid "Failed to swap new key slot." msgstr "Zlyhala výmena nového miesta pre kľúč." -#: lib/setup.c:4885 +#: lib/setup.c:4919 #, c-format msgid "Key slot %d is invalid." msgstr "Miesto pre kľúč %d je neplatné." -#: lib/setup.c:4891 src/cryptsetup.c:1977 src/cryptsetup.c:2437 -#: src/cryptsetup.c:3121 src/cryptsetup.c:3181 +#: lib/setup.c:4925 src/cryptsetup.c:1976 src/cryptsetup.c:2436 +#: src/cryptsetup.c:3120 src/cryptsetup.c:3180 #, c-format msgid "Keyslot %d is not active." msgstr "Miesto pre kľúč %d nie je aktívne." -#: lib/setup.c:4910 +#: lib/setup.c:4944 msgid "Device header overlaps with data area." msgstr "Hlavička zariadenia zasahuje do oblasti údajov." -#: lib/setup.c:5131 +#: lib/setup.c:5165 msgid "Reencryption in-progress. Cannot activate device." msgstr "Prebieha prešifrovanie. Nie je možné aktivovať zariadenie." -#: lib/setup.c:5133 lib/luks2/luks2_json_metadata.c:2888 -#: lib/luks2/luks2_reencrypt.c:3725 +#: lib/setup.c:5167 lib/luks2/luks2_json_metadata.c:2913 +#: lib/luks2/luks2_reencrypt.c:3726 msgid "Failed to get reencryption lock." msgstr "Zlyhalo získanie zámku pre prešifrovanie." -#: lib/setup.c:5155 +#: lib/setup.c:5189 msgid "LUKS2 reencryption recovery using volume key(s) failed." msgstr "Obnova prešifrovaním LUKS2 s použitím kľúču(ov) zväzku zlyhala." -#: lib/setup.c:5291 +#: lib/setup.c:5325 #, c-format msgid "Device %s already exists." msgstr "Zariadenie %s už existuje." -#: lib/setup.c:5298 +#: lib/setup.c:5332 #, c-format msgid "Cannot use device %s, name is invalid or still in use." msgstr "Nie je možné použiť zariadenie %s, názov je neplatný alebo sa stále používa." -#: lib/setup.c:5310 +#: lib/setup.c:5344 msgid "Reencryption volume keys do not match the volume." msgstr "Kľúče zväzku na prešifrovanie sa líšia od zväzku." -#: lib/setup.c:5327 +#: lib/setup.c:5361 msgid "Incorrect volume key specified for plain device." msgstr "Zadaný nesprávny kľúč zväzku pre plain zariadenie." -#: lib/setup.c:5353 lib/setup.c:5414 +#: lib/setup.c:5387 lib/setup.c:5448 msgid "Device type is not properly initialized." msgstr "Typ zariadenia nie je riadne inicializovaný." -#: lib/setup.c:5452 +#: lib/setup.c:5486 msgid "Kernel keyring is not supported by the kernel." msgstr "Zväzok kľúčov jadra nie je jadrom podporovaný." -#: lib/setup.c:5456 +#: lib/setup.c:5490 msgid "Kernel keyring missing: required for passing signature to kernel." msgstr "Zväzok kľúčov jadra chýba: vyžadované pre odovzdanie podpisu jadru." -#: lib/setup.c:5511 +#: lib/setup.c:5545 #, c-format msgid "Cannot use keyring key %s." msgstr "Nedá sa použiť kľúč %s zo zväzku kľúčov." -#: lib/setup.c:5724 +#: lib/setup.c:5758 msgid "Incorrect root hash specified for verity device." msgstr "Nesprávny koreňový hash zadaný pre verity zariadenie." -#: lib/setup.c:5765 lib/setup.c:5790 +#: lib/setup.c:5799 lib/setup.c:5824 msgid "OPAL does not support deferred deactivation." msgstr "OPAL nepodporuje odloženú deaktiváciu." -#: lib/setup.c:5780 lib/setup.c:5811 lib/luks2/luks2_json_metadata.c:2953 +#: lib/setup.c:5814 lib/setup.c:5845 lib/luks2/luks2_json_metadata.c:2978 #: src/utils_reencrypt.c:89 #, c-format msgid "Device %s is still in use." msgstr "Zariadenie %s sa stále používa." -#: lib/setup.c:5798 +#: lib/setup.c:5832 #, c-format msgid "Could not cancel deferred remove from device %s." msgstr "Nedá sa zrušiť odložené odstránenie zo zariadenia %s." -#: lib/setup.c:5820 +#: lib/setup.c:5854 #, c-format msgid "Invalid device %s." msgstr "Neplatné zariadenie %s." -#: lib/setup.c:5967 +#: lib/setup.c:6001 msgid "Volume key buffer too small." msgstr "Vyhradená pamäť pre kľúč zväzku je príliš malá." -#: lib/setup.c:5978 +#: lib/setup.c:6012 msgid "Cannot retrieve volume key for LUKS2 device." msgstr "Nedá sa získať kľúč zväzku pre LUKS2 zariadenie." -#: lib/setup.c:5987 +#: lib/setup.c:6021 msgid "Cannot retrieve volume key for LUKS1 device." msgstr "Nedá sa získať kľúč zväzku pre LUKS1 zariadenie." -#: lib/setup.c:6001 +#: lib/setup.c:6035 msgid "Cannot retrieve volume key for plain device." msgstr "Nedá sa získať kľúč zväzku pre plain zariadenie." -#: lib/setup.c:6009 +#: lib/setup.c:6043 msgid "Cannot retrieve root hash for verity device." msgstr "Nedá sa získať koreňový hash pre verity zariadenie." -#: lib/setup.c:6018 +#: lib/setup.c:6052 msgid "Cannot retrieve volume key for BITLK device." msgstr "Nedá sa získať kľúč zväzku pre BITLK zariadenie." -#: lib/setup.c:6023 +#: lib/setup.c:6057 msgid "Cannot retrieve volume key for FVAULT2 device." msgstr "Nedá sa získať kľúč zväzku pre FVAULT2 zariadenie." -#: lib/setup.c:6025 +#: lib/setup.c:6059 #, c-format msgid "This operation is not supported for %s crypt device." msgstr "Táto operácia nie je podporovaná pre %s šifrované zariadenie." -#: lib/setup.c:6210 lib/setup.c:6221 +#: lib/setup.c:6244 lib/setup.c:6255 msgid "Dump operation is not supported for this device type." msgstr "Operácia výpisu nie je podporovaná pre tento typ zariadenia." -#: lib/setup.c:6601 +#: lib/setup.c:6635 #, c-format msgid "Data offset is not multiple of %u bytes." msgstr "Odsadenie údajov nie je násobkom %u bajtov." -#: lib/setup.c:6909 +#: lib/setup.c:6943 #, c-format msgid "Cannot convert device %s which is still in use." msgstr "Nedá sa konvertovať zariadenie %s, ktoré sa stále používa." -#: lib/setup.c:7217 lib/setup.c:7361 +#: lib/setup.c:7251 lib/setup.c:7406 #, c-format msgid "Failed to assign keyslot %u as the new volume key." msgstr "Za nový kľúč zväzku sa nepodarilo priradiť miesto s kľúčom %u." -#: lib/setup.c:7241 +#: lib/setup.c:7275 msgid "Failed to initialize default LUKS2 keyslot parameters." msgstr "Zlyhala inicializácia predvolených parametrov LUKS2 miesta na kľúč." -#: lib/setup.c:7247 +#: lib/setup.c:7281 #, c-format msgid "Failed to assign keyslot %d to digest." msgstr "Zlyhalo priradenie miesta pre kľúč %d k otlačku (digest)." -#: lib/setup.c:7478 +#: lib/setup.c:7523 msgid "Cannot add key slot, all slots disabled and no volume key provided." msgstr "Nedá sa pridať miesto pre kľúč, všetky miesta sú vypnuté a nie je poskytnutý žiaden kľúč zväzku." -#: lib/setup.c:7551 lib/verity/verity.c:333 +#: lib/setup.c:7611 lib/setup.c:7626 lib/verity/verity.c:333 msgid "Failed to load key in kernel keyring." msgstr "Zlyhalo načítanie kľúča zo zväzku kľúčov jadra." -#: lib/setup.c:7742 +#: lib/setup.c:7807 #, c-format msgid "Could not find keyring described by \"%s\"." msgstr "Nedá sa nájsť zväzok kľúčov opísaný podľa \"%s\"." -#: lib/setup.c:7807 +#: lib/setup.c:7872 msgid "Failed to acquire global memory-hard access serialization lock." msgstr "Zlyhalo získanie zámku pre tvrdý prístup ku globálnej pamäti." -#: lib/utils.c:204 lib/tcrypt/tcrypt.c:490 +#: lib/utils.c:205 lib/tcrypt/tcrypt.c:488 msgid "Failed to open key file." msgstr "Zlyhalo otvorenie súboru s kľúčom." -#: lib/utils.c:212 +#: lib/utils.c:213 msgid "Cannot read keyfile from a terminal." msgstr "Nedá sa prečítať súbor s kľúčom z terminálu." -#: lib/utils.c:228 +#: lib/utils.c:229 msgid "Failed to stat key file." msgstr "Nepodarilo sa získať informácie o súbore s kľúčom." -#: lib/utils.c:236 lib/utils.c:257 +#: lib/utils.c:237 lib/utils.c:258 msgid "Cannot seek to requested keyfile offset." msgstr "Nedá sa posunúť na požadované miesto v súbore s kľúčom." -#: lib/utils.c:251 lib/utils.c:266 src/utils_password.c:219 +#: lib/utils.c:252 lib/utils.c:267 src/utils_password.c:219 #: src/utils_password.c:231 msgid "Out of memory while reading passphrase." msgstr "Počas čítania hesla došla pamäť." -#: lib/utils.c:286 +#: lib/utils.c:287 msgid "Error reading passphrase." msgstr "Chyba pri čítaní hesla." -#: lib/utils.c:303 +#: lib/utils.c:304 msgid "Nothing to read on input." msgstr "Na vstupe nie je nič na prečítanie." -#: lib/utils.c:310 +#: lib/utils.c:311 msgid "Maximum keyfile size exceeded." msgstr "Maximálna veľkosť súboru s kľúčom presiahnutá." -#: lib/utils.c:315 +#: lib/utils.c:316 msgid "Cannot read requested amount of data." msgstr "Nedá sa prečítať požadované množstvo údajov." @@ -972,7 +972,7 @@ msgid "Cipher specification should be in [cipher]-[mode]-[iv] format." msgstr "Špecifikácia šifry musí byť vo formáte [šifra]-[režim]-[iv]." #: lib/luks1/keyencryption.c:85 lib/luks1/keymanage.c:353 -#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1150 +#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1132 #: lib/luks2/luks2_json_metadata.c:1518 lib/luks2/luks2_keyslot.c:711 #, c-format msgid "Cannot write to device %s, permission denied." @@ -986,13 +986,13 @@ msgstr "Zlyhalo otvorenie dočasného zariadenia s úložiskom kľúča." msgid "Failed to access temporary keystore device." msgstr "Zlyhal prístup k dočasnému zariadeniu s úložiskom kľúča." -#: lib/luks1/keyencryption.c:189 lib/luks2/luks2_keyslot_luks2.c:49 -#: lib/luks2/luks2_keyslot_luks2.c:67 lib/luks2/luks2_keyslot_reenc.c:184 +#: lib/luks1/keyencryption.c:189 lib/luks2/luks2_keyslot_luks2.c:47 +#: lib/luks2/luks2_keyslot_reenc.c:184 msgid "IO error while encrypting keyslot." msgstr "Chyba vstupu/výstupu počas šifrovania miesta pre kľúč." #: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:356 -#: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:668 +#: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:659 #: lib/fvault2/fvault2.c:872 lib/verity/verity.c:67 lib/verity/verity.c:183 #: lib/verity/verity_hash.c:312 lib/verity/verity_hash.c:321 #: lib/verity/verity_hash.c:350 lib/verity/verity_fec.c:247 @@ -1003,7 +1003,7 @@ msgstr "Chyba vstupu/výstupu počas šifrovania miesta pre kľúč." msgid "Cannot open device %s." msgstr "Nedá sa otvoriť zariadenie %s." -#: lib/luks1/keyencryption.c:247 lib/luks2/luks2_keyslot_luks2.c:128 +#: lib/luks1/keyencryption.c:247 lib/luks2/luks2_keyslot_luks2.c:85 msgid "IO error while decrypting keyslot." msgstr "Chyba vstupu/výstupu počas dešifrovania miesta pre kľúč." @@ -1093,7 +1093,7 @@ msgid "Cipher hash repaired to lowercase (%s)." msgstr "Hash šifry opravený na malé písmená (%s)." #: lib/luks1/keymanage.c:417 lib/luks1/keymanage.c:523 -#: lib/luks1/keymanage.c:777 +#: lib/luks1/keymanage.c:756 #, c-format msgid "Requested LUKS hash %s is not supported." msgstr "Požadovaný LUKS hash %s nie je podporovaný." @@ -1140,7 +1140,7 @@ msgstr "LUKS šifrovací režim %s je neplatný." msgid "LUKS hash %s is invalid." msgstr "LUKS hash %s je neplatný." -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 +#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1366 msgid "No known problems detected for LUKS header." msgstr "Žiadne známe problémy neboli zistené pre hlavičku LUKS." @@ -1154,50 +1154,50 @@ msgstr "Chyba počas aktualizácie hlavičky LUKS na zariadení %s." msgid "Error re-reading LUKS header after update on device %s." msgstr "Chyba pri opätovnom čítaní hlavičky LUKS po aktualizácií na zariadení %s." -#: lib/luks1/keymanage.c:771 +#: lib/luks1/keymanage.c:750 msgid "Data offset for LUKS header must be either 0 or higher than header size." msgstr "Odsadenie údajov pre LUKS hlavičku musí byť 0 alebo číslo väčšie ako veľkosť hlavičky." -#: lib/luks1/keymanage.c:782 lib/luks1/keymanage.c:853 +#: lib/luks1/keymanage.c:761 lib/luks1/keymanage.c:832 #: lib/luks2/luks2_json_format.c:231 lib/luks2/luks2_json_metadata.c:1261 #: src/utils_reencrypt.c:701 msgid "Wrong LUKS UUID format provided." msgstr "Poskytnutý nesprávny formát LUKS UUID." -#: lib/luks1/keymanage.c:804 +#: lib/luks1/keymanage.c:783 msgid "Cannot create LUKS header: reading random salt failed." msgstr "Nedá sa vytvoriť hlavička LUKS: zlyhalo čítanie náhodnej soli." -#: lib/luks1/keymanage.c:832 +#: lib/luks1/keymanage.c:811 #, c-format msgid "Cannot create LUKS header: header digest failed (using hash %s)." msgstr "Nedá sa vytvoriť hlavička LUKS: zlyhal otlačok (digest) hlavičky (používa sa hash %s)." -#: lib/luks1/keymanage.c:877 +#: lib/luks1/keymanage.c:856 #, c-format msgid "Key slot %d active, purge first." msgstr "Miesto pre kľúč %d aktívne, najprv ho vymažte." -#: lib/luks1/keymanage.c:883 +#: lib/luks1/keymanage.c:862 #, c-format msgid "Key slot %d material includes too few stripes. Header manipulation?" msgstr "Miesto pre kľúč %d obsahuje príliš málo prúžkov. Manipulácia s hlavičkou?" -#: lib/luks1/keymanage.c:921 lib/luks2/luks2_keyslot_luks2.c:260 +#: lib/luks1/keymanage.c:900 lib/luks2/luks2_keyslot_luks2.c:217 msgid "PBKDF2 iteration value overflow." msgstr "PBKDF2 hodnota iterácií pretečená." -#: lib/luks1/keymanage.c:1040 +#: lib/luks1/keymanage.c:1022 #, c-format msgid "Cannot open keyslot (using hash %s)." msgstr "Nedá sa otvoriť miesto pre kľúč (používa sa hash %s)." -#: lib/luks1/keymanage.c:1136 +#: lib/luks1/keymanage.c:1118 #, c-format msgid "Key slot %d is invalid, please select keyslot between 0 and %d." msgstr "Miesto pre kľúč %d je neplatné, prosím vyberte miesto pre kľúč medzi 0 a %d." -#: lib/luks1/keymanage.c:1154 lib/luks2/luks2_keyslot.c:715 +#: lib/luks1/keymanage.c:1136 lib/luks2/luks2_keyslot.c:715 #, c-format msgid "Cannot wipe device %s." msgstr "Nedá sa vymazať zariadenie %s." @@ -1218,56 +1218,48 @@ msgstr "Nekompatibilný loop-AES súbor s kľúčom bol zaznamenaný." msgid "Kernel does not support loop-AES compatible mapping." msgstr "Jadro nepodporuje mapovanie kompatibilné s loop-AES." -#: lib/tcrypt/tcrypt.c:497 +#: lib/tcrypt/tcrypt.c:495 #, c-format msgid "Error reading keyfile %s." msgstr "Chyba pri čítaní súboru s kľúčom %s." -#: lib/tcrypt/tcrypt.c:547 +#: lib/tcrypt/tcrypt.c:549 #, c-format msgid "Maximum TCRYPT passphrase length (%zu) exceeded." msgstr "Maximálna dĺžka TCRYPT hesla (%zu) bola prekročená." -#: lib/tcrypt/tcrypt.c:589 +#: lib/tcrypt/tcrypt.c:591 #, c-format msgid "PBKDF2 hash algorithm %s not available, skipping." msgstr "PBKDF2 hash algoritmus %s nie je dostupný, vynecháva sa." -#: lib/tcrypt/tcrypt.c:608 src/cryptsetup.c:1240 -msgid "Required kernel crypto interface not available." -msgstr "Vyžadované kryptografické rozhranie jadra nie je dostupné." - -#: lib/tcrypt/tcrypt.c:610 src/cryptsetup.c:1242 -msgid "Ensure you have algif_skcipher kernel module loaded." -msgstr "Uistite sa, že máte načítaný modul jadra algif_skcipher." - -#: lib/tcrypt/tcrypt.c:752 +#: lib/tcrypt/tcrypt.c:743 #, c-format msgid "Activation is not supported for %d sector size." msgstr "Aktivácia nie je podporovaná pre veľkosť sektoru %d." -#: lib/tcrypt/tcrypt.c:758 +#: lib/tcrypt/tcrypt.c:749 msgid "Kernel does not support activation for this TCRYPT legacy mode." msgstr "Jadro nepodporuje aktiváciu pre tento zastaralý režim TCRYPT." -#: lib/tcrypt/tcrypt.c:813 +#: lib/tcrypt/tcrypt.c:804 #, c-format msgid "Activating TCRYPT system encryption for partition %s." msgstr "Aktivuje sa TCRYPT systémové šifrovanie pre oddiel %s." -#: lib/tcrypt/tcrypt.c:828 +#: lib/tcrypt/tcrypt.c:819 msgid "Cannot determine TCRYPT system partition offset, activating whole encrypted area." msgstr "Nedá sa zistiť odsadenie systémového oddielu TCRYPT, aktivuje sa celá šifrovaná oblasť." -#: lib/tcrypt/tcrypt.c:837 +#: lib/tcrypt/tcrypt.c:828 msgid "Cannot determine TCRYPT system partition offset, activating device as a system partition." msgstr "Nedá sa zistiť odsadenie systémového oddielu TCRYPT, aktivuje sa zariadenie ako systémový oddiel." -#: lib/tcrypt/tcrypt.c:917 +#: lib/tcrypt/tcrypt.c:908 msgid "Kernel does not support TCRYPT compatible mapping." msgstr "Jadro nepodporuje mapovanie kompatibilné s TCRYPT." -#: lib/tcrypt/tcrypt.c:1146 +#: lib/tcrypt/tcrypt.c:1137 msgid "This function is not supported without TCRYPT header load." msgstr "Táto funkcia nie je podporovaná bez načítania hlavičky TCRYPT." @@ -1620,8 +1612,7 @@ msgid "WARNING: LUKS2 keyslots area size changed to % bytes.\n" msgstr "VAROVANIE: veľkosť LUKS2 oblasti pre kľúče sa zmenila na % bajtov.\n" #: lib/luks2/luks2_json_metadata.c:1171 lib/luks2/luks2_json_metadata.c:1357 -#: lib/luks2/luks2_json_metadata.c:1417 lib/luks2/luks2_keyslot_luks2.c:81 -#: lib/luks2/luks2_keyslot_luks2.c:105 +#: lib/luks2/luks2_json_metadata.c:1417 lib/luks2/luks2_keyslot_luks2.c:71 #, c-format msgid "Failed to acquire read lock on device %s." msgstr "Zlyhalo získanie zámku čítania na zariadení %s." @@ -1681,79 +1672,79 @@ msgstr "" msgid "Ignored unknown flag %s." msgstr "Ignorovaný neznámy príznak %s." -#: lib/luks2/luks2_json_metadata.c:2545 lib/luks2/luks2_reencrypt.c:2109 +#: lib/luks2/luks2_json_metadata.c:2563 lib/luks2/luks2_reencrypt.c:2110 #, c-format msgid "Missing key for dm-crypt segment %u" msgstr "Chýbajúci kľúč pre dm-crypt segment %u" -#: lib/luks2/luks2_json_metadata.c:2557 lib/luks2/luks2_reencrypt.c:2122 +#: lib/luks2/luks2_json_metadata.c:2575 lib/luks2/luks2_reencrypt.c:2123 msgid "Failed to set dm-crypt segment." msgstr "Zlyhalo nastavenie dm-crypt segmentu." -#: lib/luks2/luks2_json_metadata.c:2563 lib/luks2/luks2_reencrypt.c:2128 +#: lib/luks2/luks2_json_metadata.c:2581 lib/luks2/luks2_reencrypt.c:2129 msgid "Failed to set dm-linear segment." msgstr "Zlyhalo nastavenie dm-linear segmentu." -#: lib/luks2/luks2_json_metadata.c:2683 src/utils_reencrypt.c:578 +#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:578 msgid "No known cipher specification pattern detected in LUKS2 header." msgstr "Nebol nájdený žiaden známy vzor špecifikácie šifry v hlavičke LUKS2." -#: lib/luks2/luks2_json_metadata.c:2691 +#: lib/luks2/luks2_json_metadata.c:2709 msgid "OPAL device must have static device size." msgstr "Zariadenie OPAL musí mať statickú veľkosť zariadenia." -#: lib/luks2/luks2_json_metadata.c:2711 +#: lib/luks2/luks2_json_metadata.c:2729 msgid "Encrypted OPAL device with integrity must be smaller than locking range." msgstr "Šifrované zariadenie OPAL s integritou musí byť menšie ako uzamykateľná oblasť." -#: lib/luks2/luks2_json_metadata.c:2716 +#: lib/luks2/luks2_json_metadata.c:2734 msgid "OPAL device must have same size as locking range." msgstr "Zariadenie OPAL musí mať rovnakú veľkosť ako uzamykateľná oblasť." -#: lib/luks2/luks2_json_metadata.c:2736 +#: lib/luks2/luks2_json_metadata.c:2754 #, c-format msgid "OPAL device is %s already unlocked.\n" msgstr "Zariadenie OPAL je %s už odomknuté.\n" -#: lib/luks2/luks2_json_metadata.c:2775 +#: lib/luks2/luks2_json_metadata.c:2793 msgid "Unsupported device integrity configuration." msgstr "Nepodporovaná konfigurácia integrity zariadenia." -#: lib/luks2/luks2_json_metadata.c:2791 +#: lib/luks2/luks2_json_metadata.c:2809 msgid "Underlying dm-integrity device with unexpected provided data sectors." msgstr "Prislúchajúce zariadenie dm-integrity neočakávane poskytlo sektory s údajmi." -#: lib/luks2/luks2_json_metadata.c:2886 +#: lib/luks2/luks2_json_metadata.c:2911 msgid "Reencryption in-progress. Cannot deactivate device." msgstr "Prebieha opätovné šifrovanie. Nedá sa deaktivovať zariadenie." -#: lib/luks2/luks2_json_metadata.c:2897 lib/luks2/luks2_reencrypt.c:4286 +#: lib/luks2/luks2_json_metadata.c:2922 lib/luks2/luks2_reencrypt.c:4287 #, c-format msgid "Failed to replace suspended device %s with dm-error target." msgstr "Zlyhala výmena pozastaveného zariadenia %s za cieľ dm-error." -#: lib/luks2/luks2_json_metadata.c:2976 lib/luks2/luks2_json_metadata.c:2998 +#: lib/luks2/luks2_json_metadata.c:3001 lib/luks2/luks2_json_metadata.c:3023 #, c-format msgid "Device %s was deactivated but hardware OPAL device cannot be locked." msgstr "Zariadenie %s bolo deaktivované, ale hardvérové zariadenie OPAL nemôže byť uzamknuté." -#: lib/luks2/luks2_json_metadata.c:3020 +#: lib/luks2/luks2_json_metadata.c:3045 msgid "Unmet LUKS2 requirements detected." msgstr "Zistené nesplnené požiadavky LUKS2." -#: lib/luks2/luks2_json_metadata.c:3028 +#: lib/luks2/luks2_json_metadata.c:3053 msgid "Operation incompatible with device marked for legacy reencryption. Aborting." msgstr "Operácia je nekompatibilná so zariadením, ktoré je označené pre zastaralé prešifrovanie. Operácia sa ruší." -#: lib/luks2/luks2_json_metadata.c:3030 +#: lib/luks2/luks2_json_metadata.c:3055 msgid "Operation incompatible with device marked for LUKS2 reencryption. Aborting." msgstr "Operácia je nekompatibilná so zariadením, ktoré je označené pre LUKS2 prešifrovanie. Operácia sa ruší." -#: lib/luks2/luks2_json_metadata.c:3032 +#: lib/luks2/luks2_json_metadata.c:3057 msgid "Operation incompatible with device using OPAL. Aborting." msgstr "Operácia je nekompatibilná so zariadením, ktoré používa OPAL. Operácia sa ruší." -#: lib/luks2/luks2_json_metadata.c:3034 +#: lib/luks2/luks2_json_metadata.c:3059 msgid "Operation incompatible with device using inline HW tags. Aborting." msgstr "Operácia je nekompatibilná so zariadením, ktoré používa hardvérové inline príznaky. Operácia sa ruší." @@ -1765,22 +1756,22 @@ msgstr "Nie je dostupné dostatočné množstvo pamäte na otvorenie miesta s k msgid "Keyslot open failed." msgstr "Zlyhalo otvorenie miesta s kľúčom." -#: lib/luks2/luks2_keyslot_luks2.c:42 lib/luks2/luks2_keyslot_luks2.c:99 +#: lib/luks2/luks2_keyslot_luks2.c:40 lib/luks2/luks2_keyslot_luks2.c:77 #, c-format -msgid "Cannot use %s-%s cipher for keyslot encryption." -msgstr "Nedá sa použiť šifra %s-%s pre šifrovanie miesta s kľúčom." +msgid "Cannot use %s cipher for keyslot encryption." +msgstr "Nedá sa použiť šifra %s pre šifrovanie miesta s kľúčom." -#: lib/luks2/luks2_keyslot_luks2.c:262 +#: lib/luks2/luks2_keyslot_luks2.c:219 msgid "Not enough memory for keyslot key derivation." msgstr "Nie je dosť pamäte pre odvodenie kľúču od miesta s kľúčom." -#: lib/luks2/luks2_keyslot_luks2.c:276 lib/luks2/luks2_keyslot_luks2.c:405 -#: lib/luks2/luks2_keyslot_reenc.c:434 lib/luks2/luks2_reencrypt.c:2733 +#: lib/luks2/luks2_keyslot_luks2.c:233 lib/luks2/luks2_keyslot_luks2.c:358 +#: lib/luks2/luks2_keyslot_reenc.c:434 lib/luks2/luks2_reencrypt.c:2734 #, c-format msgid "Hash algorithm %s is not available." msgstr "Hashovací algoritmus %s nie je dostupný." -#: lib/luks2/luks2_keyslot_luks2.c:522 +#: lib/luks2/luks2_keyslot_luks2.c:475 msgid "No space for new keyslot." msgstr "Žiadne miesto pre nový kľúč." @@ -1797,335 +1788,335 @@ msgstr "Nedá sa aktualizovať typ odolnosti. Nový typ poskytuje len % msgid "Failed to refresh reencryption verification digest." msgstr "Zlyhalo obnovenie otlačku (digest) overenia prešifrovania." -#: lib/luks2/luks2_luks1_convert.c:532 +#: lib/luks2/luks2_luks1_convert.c:498 #, c-format msgid "Cannot check status of device with uuid: %s." msgstr "Nedá sa skontrolovať stav zariadenia s uuid: %s." -#: lib/luks2/luks2_luks1_convert.c:558 +#: lib/luks2/luks2_luks1_convert.c:524 msgid "Unable to convert header with LUKSMETA additional metadata." msgstr "Nedá sa zmeniť hlavička s dodatočnými metadátami LUKSMETA." -#: lib/luks2/luks2_luks1_convert.c:590 lib/luks2/luks2_reencrypt.c:3893 +#: lib/luks2/luks2_luks1_convert.c:556 lib/luks2/luks2_reencrypt.c:3894 #, c-format msgid "Unable to use cipher specification %s-%s for LUKS2." msgstr "Nedá sa použiť špecifikácia šifry %s-%s pre LUKS2." -#: lib/luks2/luks2_luks1_convert.c:599 +#: lib/luks2/luks2_luks1_convert.c:565 #, c-format msgid "Unable to use cipher specification %s-%s for LUKS2 keyslot." msgstr "Nedá sa použiť špecifikácia šifry %s-%s pre LUKS2 miesto s kľúčom." -#: lib/luks2/luks2_luks1_convert.c:614 +#: lib/luks2/luks2_luks1_convert.c:580 msgid "Unable to move keyslot area. Not enough space." msgstr "Nedá sa presunúť oblasť s kľúčmi. Nie je dostatok miesta." -#: lib/luks2/luks2_luks1_convert.c:653 +#: lib/luks2/luks2_luks1_convert.c:619 msgid "Cannot convert to LUKS2 format - invalid metadata." msgstr "Nedá sa zmeniť formát na LUKS2 - neplatné metadáta." -#: lib/luks2/luks2_luks1_convert.c:670 +#: lib/luks2/luks2_luks1_convert.c:636 msgid "Unable to move keyslot area. LUKS2 keyslots area too small." msgstr "Nedá sa presunúť oblasť s kľúčmi. LUKS2 oblasť s kľúčmi je príliš malá." -#: lib/luks2/luks2_luks1_convert.c:676 lib/luks2/luks2_luks1_convert.c:1006 +#: lib/luks2/luks2_luks1_convert.c:642 lib/luks2/luks2_luks1_convert.c:972 msgid "Unable to move keyslot area." msgstr "Nedá sa presunúť oblasť s kľúčmi." -#: lib/luks2/luks2_luks1_convert.c:791 +#: lib/luks2/luks2_luks1_convert.c:757 msgid "Cannot convert to LUKS1 format - default segment encryption sector size is not 512 bytes." msgstr "Nedá sa zmeniť formát na LUKS1 - predvolená veľkosť sektora šifrovania segmentov nie je 512 bajtov." -#: lib/luks2/luks2_luks1_convert.c:799 +#: lib/luks2/luks2_luks1_convert.c:765 msgid "Cannot convert to LUKS1 format - key slot digests are not LUKS1 compatible." msgstr "Nedá sa zmeniť formát na LUKS1 - otlačok (digest) miesta pre kľúč nie je kompatibilný s LUKS1." -#: lib/luks2/luks2_luks1_convert.c:813 +#: lib/luks2/luks2_luks1_convert.c:779 #, c-format msgid "Cannot convert to LUKS1 format - device uses wrapped key cipher %s." msgstr "Nedá sa zmeniť formát na LUKS1 - zariadenie používa šifru so zabaleným kľúčom %s." -#: lib/luks2/luks2_luks1_convert.c:818 +#: lib/luks2/luks2_luks1_convert.c:784 msgid "Cannot convert to LUKS1 format - device uses more segments." msgstr "Nedá sa zmeniť formát na LUKS1 - zariadenie používa viac segmentov." -#: lib/luks2/luks2_luks1_convert.c:826 +#: lib/luks2/luks2_luks1_convert.c:792 #, c-format msgid "Cannot convert to LUKS1 format - LUKS2 header contains %u token(s)." msgstr "Nedá sa zmeniť formát na LUKS1 - hlavička LUKS2 obsahuje %u token(y)." -#: lib/luks2/luks2_luks1_convert.c:832 +#: lib/luks2/luks2_luks1_convert.c:798 msgid "Cannot convert to LUKS1 format - there are no active keyslots." msgstr "Nedá sa zmeniť formát na LUKS1 - nie sú žiadne aktívne miesta s kľúčmi." -#: lib/luks2/luks2_luks1_convert.c:844 +#: lib/luks2/luks2_luks1_convert.c:810 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is in invalid state." msgstr "Nedá sa zmeniť formát na LUKS1 - miesto pre kľúč %u je v neplatnom stave." -#: lib/luks2/luks2_luks1_convert.c:849 +#: lib/luks2/luks2_luks1_convert.c:815 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is unbound." msgstr "Nedá sa zmeniť formát na LUKS1 - miesto pre kľúč %u je neviazané." -#: lib/luks2/luks2_luks1_convert.c:854 +#: lib/luks2/luks2_luks1_convert.c:820 #, c-format msgid "Cannot convert to LUKS1 format - slot %u (over maximum slots) is still active." msgstr "Nedá sa zmeniť formát na LUKS1 - miesto %u (nad max. množstvom miest) je stále aktívne." -#: lib/luks2/luks2_luks1_convert.c:859 +#: lib/luks2/luks2_luks1_convert.c:825 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is not LUKS1 compatible." msgstr "Nedá sa zmeniť formát na LUKS1 - miesto pre kľúč %u nie je kompatibilné s LUKS1." -#: lib/luks2/luks2_reencrypt.c:1198 +#: lib/luks2/luks2_reencrypt.c:1199 #, c-format msgid "Hotzone size must be multiple of calculated zone alignment (%zu bytes)." msgstr "Veľkosť horúcej zóny musí byť násobkom vypočítaného zarovnania zóny (%zu bajtov)." -#: lib/luks2/luks2_reencrypt.c:1203 +#: lib/luks2/luks2_reencrypt.c:1204 #, c-format msgid "Device size must be multiple of calculated zone alignment (%zu bytes)." msgstr "Veľkosť zariadenia musí byť násobkom vypočítaného zarovnania zóny (%zu bajtov)." -#: lib/luks2/luks2_reencrypt.c:1410 lib/luks2/luks2_reencrypt.c:1596 -#: lib/luks2/luks2_reencrypt.c:1679 lib/luks2/luks2_reencrypt.c:1721 -#: lib/luks2/luks2_reencrypt.c:4080 +#: lib/luks2/luks2_reencrypt.c:1411 lib/luks2/luks2_reencrypt.c:1597 +#: lib/luks2/luks2_reencrypt.c:1680 lib/luks2/luks2_reencrypt.c:1722 +#: lib/luks2/luks2_reencrypt.c:4081 msgid "Failed to initialize old segment storage wrapper." msgstr "Zlyhala inicializácia obalu úložiska pre staré segmenty." -#: lib/luks2/luks2_reencrypt.c:1424 lib/luks2/luks2_reencrypt.c:1574 +#: lib/luks2/luks2_reencrypt.c:1425 lib/luks2/luks2_reencrypt.c:1575 msgid "Failed to initialize new segment storage wrapper." msgstr "Zlyhala inicializácia obalu úložiska pre nové segmenty." -#: lib/luks2/luks2_reencrypt.c:1550 lib/luks2/luks2_reencrypt.c:4092 +#: lib/luks2/luks2_reencrypt.c:1551 lib/luks2/luks2_reencrypt.c:4093 msgid "Failed to initialize hotzone protection." msgstr "Zlyhala inicializácia ochrany horúcej zóny." -#: lib/luks2/luks2_reencrypt.c:1623 +#: lib/luks2/luks2_reencrypt.c:1624 msgid "Failed to read checksums for current hotzone." msgstr "Zlyhalo čítanie kontrolných súčtov pre aktuálnu horúcu zónu." -#: lib/luks2/luks2_reencrypt.c:1630 lib/luks2/luks2_reencrypt.c:4107 +#: lib/luks2/luks2_reencrypt.c:1631 lib/luks2/luks2_reencrypt.c:4108 #, c-format msgid "Failed to read hotzone area starting at %." msgstr "Zlyhalo čítanie oblasti horúcej zóny začínajúcej na %." -#: lib/luks2/luks2_reencrypt.c:1649 +#: lib/luks2/luks2_reencrypt.c:1650 #, c-format msgid "Failed to decrypt sector %zu." msgstr "Zlyhalo dešifrovanie sektoru %zu." -#: lib/luks2/luks2_reencrypt.c:1655 +#: lib/luks2/luks2_reencrypt.c:1656 #, c-format msgid "Failed to recover sector %zu." msgstr "Zlyhalo obnovenie sektoru %zu." -#: lib/luks2/luks2_reencrypt.c:2208 +#: lib/luks2/luks2_reencrypt.c:2209 #, c-format msgid "Source and target device sizes don't match. Source %, target: %." msgstr "Veľkosti zdrojového a cieľového zariadenia sa nezhodujú. Zdroj: %, cieľ: %." -#: lib/luks2/luks2_reencrypt.c:2310 +#: lib/luks2/luks2_reencrypt.c:2311 #, c-format msgid "Failed to activate hotzone device %s." msgstr "Zlyhalo aktivovanie zariadenia horúcej zóny %s." -#: lib/luks2/luks2_reencrypt.c:2322 +#: lib/luks2/luks2_reencrypt.c:2323 #, c-format msgid "Failed to allocate hotzone device %s." msgstr "Zlyhala alokácia zariadenia horúcej zóny %s." -#: lib/luks2/luks2_reencrypt.c:2339 +#: lib/luks2/luks2_reencrypt.c:2340 #, c-format msgid "Failed to activate overlay device %s with actual origin table." msgstr "Zlyhalo aktivovanie prekrývajúceho zariadenia %s s aktuálnou tabuľkou pôvodu." -#: lib/luks2/luks2_reencrypt.c:2346 +#: lib/luks2/luks2_reencrypt.c:2347 #, c-format msgid "Failed to load new mapping for device %s." msgstr "Zlyhalo načítanie nového mapovania pre zariadenie %s." -#: lib/luks2/luks2_reencrypt.c:2418 +#: lib/luks2/luks2_reencrypt.c:2419 msgid "Failed to refresh reencryption devices stack." msgstr "Zlyhalo obnovenie zásobníka zariadení k prešifrovaniu." -#: lib/luks2/luks2_reencrypt.c:2615 +#: lib/luks2/luks2_reencrypt.c:2616 msgid "Failed to set new keyslots area size." msgstr "Zlyhalo nastavenie novej veľkosti oblasti s kľúčmi." -#: lib/luks2/luks2_reencrypt.c:2751 +#: lib/luks2/luks2_reencrypt.c:2752 #, c-format msgid "Data shift value is not aligned to encryption sector size (% bytes)." msgstr "Hodnota posunu údajov nie je zarovnaná s veľkosťou šifrovaného sektoru (% bajtov)." -#: lib/luks2/luks2_reencrypt.c:2788 src/utils_reencrypt.c:162 +#: lib/luks2/luks2_reencrypt.c:2789 src/utils_reencrypt.c:162 #, c-format msgid "Unsupported resilience mode %s" msgstr "Nepodporovaný režim odolnosti %s" -#: lib/luks2/luks2_reencrypt.c:2824 +#: lib/luks2/luks2_reencrypt.c:2825 msgid "Moved segment size can not be greater than data shift value." msgstr "Veľkosť posunutého segmentu nemôže byť väčšia ako hodnota posunu údajov." -#: lib/luks2/luks2_reencrypt.c:2866 +#: lib/luks2/luks2_reencrypt.c:2867 msgid "Invalid reencryption resilience parameters." msgstr "Neplatné parametre odolnosti prešifrovania." -#: lib/luks2/luks2_reencrypt.c:2888 +#: lib/luks2/luks2_reencrypt.c:2889 #, c-format msgid "Moved segment too large. Requested size %, available space for: %." msgstr "Presunutý segment príliš veľký. Požadovaná veľkosť %, dostupné miesto pre: %." -#: lib/luks2/luks2_reencrypt.c:2977 +#: lib/luks2/luks2_reencrypt.c:2978 msgid "Failed to clear table." msgstr "Zlyhalo vyčistenie tabuľky." -#: lib/luks2/luks2_reencrypt.c:3063 +#: lib/luks2/luks2_reencrypt.c:3064 #, c-format msgid "Data shift (% sectors) is less than future data offset (% sectors)." msgstr "Posun údajov (% sektorov) je menší než budúce odsadenie údajov (% sektorov)." -#: lib/luks2/luks2_reencrypt.c:3078 lib/luks2/luks2_reencrypt.c:3085 +#: lib/luks2/luks2_reencrypt.c:3079 lib/luks2/luks2_reencrypt.c:3086 msgid "Reduced data size is larger than real device size." msgstr "Zmenšená veľkosť údajov je väčšia ako skutočná veľkosť zariadenia." -#: lib/luks2/luks2_reencrypt.c:3095 +#: lib/luks2/luks2_reencrypt.c:3096 #, c-format msgid "Data device is not aligned to encryption sector size (% bytes)." msgstr "Zariadenie s údajmi nie je zarovnané k veľkosti šifrovaného sektoru (% bajtov)." -#: lib/luks2/luks2_reencrypt.c:3125 lib/luks2/luks2_reencrypt.c:3643 -#: lib/luks2/luks2_reencrypt.c:3664 +#: lib/luks2/luks2_reencrypt.c:3126 lib/luks2/luks2_reencrypt.c:3644 +#: lib/luks2/luks2_reencrypt.c:3665 #, c-format msgid "Failed to open %s in exclusive mode (already mapped or mounted)." msgstr "Zlyhalo otvorenie %s vo výlučnom režime (už mapované alebo pripojené)." -#: lib/luks2/luks2_reencrypt.c:3332 +#: lib/luks2/luks2_reencrypt.c:3333 msgid "Device not marked for LUKS2 reencryption." msgstr "Zariadenie nie je označené pre LUKS2 prešifrovanie." -#: lib/luks2/luks2_reencrypt.c:3349 lib/luks2/luks2_reencrypt.c:4403 +#: lib/luks2/luks2_reencrypt.c:3350 lib/luks2/luks2_reencrypt.c:4404 msgid "Failed to load LUKS2 reencryption context." msgstr "Zlyhalo načítanie kontextu LUKS2 prešifrovania." -#: lib/luks2/luks2_reencrypt.c:3444 lib/luks2/luks2_reencrypt.c:3784 +#: lib/luks2/luks2_reencrypt.c:3445 lib/luks2/luks2_reencrypt.c:3785 msgid "Device is not in reencryption." msgstr "Zariadenie nie je opätovne šifrované." -#: lib/luks2/luks2_reencrypt.c:3451 lib/luks2/luks2_reencrypt.c:3791 +#: lib/luks2/luks2_reencrypt.c:3452 lib/luks2/luks2_reencrypt.c:3792 msgid "Reencryption process is already running." msgstr "Proces prešifrovania už beží." -#: lib/luks2/luks2_reencrypt.c:3453 lib/luks2/luks2_reencrypt.c:3793 +#: lib/luks2/luks2_reencrypt.c:3454 lib/luks2/luks2_reencrypt.c:3794 msgid "Failed to acquire reencryption lock." msgstr "Zlyhalo získanie zámku prešifrovania." -#: lib/luks2/luks2_reencrypt.c:3471 +#: lib/luks2/luks2_reencrypt.c:3472 msgid "Cannot proceed with reencryption. Run reencryption recovery first." msgstr "Nedá sa pokračovať v prešifrovaní. Spustite najprv obnovu prešifrovania." -#: lib/luks2/luks2_reencrypt.c:3607 +#: lib/luks2/luks2_reencrypt.c:3608 msgid "Active device size and requested reencryption size don't match." msgstr "Veľkosť aktívneho zariadenia a požadovaná veľkosť prešifrovania sa nezhoduje." -#: lib/luks2/luks2_reencrypt.c:3621 +#: lib/luks2/luks2_reencrypt.c:3622 msgid "Illegal device size requested in reencryption parameters." msgstr "V parametroch prešifrovania je požadovaná nedovolená veľkosť zariadenia." -#: lib/luks2/luks2_reencrypt.c:3723 +#: lib/luks2/luks2_reencrypt.c:3724 msgid "Reencryption in-progress. Cannot perform recovery." msgstr "Prebieha prešifrovanie. Nedá sa vykonať obnova." -#: lib/luks2/luks2_reencrypt.c:3744 +#: lib/luks2/luks2_reencrypt.c:3745 msgid "LUKS2 reencryption recovery failed." msgstr "Obnova prešifrovaním LUKS2 zlyhala." -#: lib/luks2/luks2_reencrypt.c:3877 lib/luks2/luks2_reencrypt.c:4356 +#: lib/luks2/luks2_reencrypt.c:3878 lib/luks2/luks2_reencrypt.c:4357 msgid "Failed to initialize reencryption device stack." msgstr "Zlyhala inicializácia zásobníka zariadenia k prešifrovaniu." -#: lib/luks2/luks2_reencrypt.c:3910 +#: lib/luks2/luks2_reencrypt.c:3911 msgid "LUKS2 reencryption already initialized in metadata." msgstr "LUKS2 prešifrovanie je už inicializované v metadátach." -#: lib/luks2/luks2_reencrypt.c:3918 +#: lib/luks2/luks2_reencrypt.c:3919 msgid "Failed to initialize LUKS2 reencryption in metadata." msgstr "Zlyhala inicializácia LUKS2 prešifrovania v metadátach." -#: lib/luks2/luks2_reencrypt.c:3971 lib/luks2/luks2_reencrypt.c:4003 -#: lib/luks2/luks2_reencrypt.c:4033 +#: lib/luks2/luks2_reencrypt.c:3972 lib/luks2/luks2_reencrypt.c:4004 +#: lib/luks2/luks2_reencrypt.c:4034 msgid "Reencryption is not supported for DAX (persistent memory) devices." msgstr "Prešifrovanie nie je podporované na DAX (trvalá pamäť) zariadeniach." -#: lib/luks2/luks2_reencrypt.c:4062 +#: lib/luks2/luks2_reencrypt.c:4063 msgid "Failed to set device segments for next reencryption hotzone." msgstr "Zlyhalo nastavenie segmentov zariadenia pre ďalšiu horúcu zónu prešifrovania." -#: lib/luks2/luks2_reencrypt.c:4115 +#: lib/luks2/luks2_reencrypt.c:4116 msgid "Failed to write reencryption resilience metadata." msgstr "Zlyhal zápis odolných metadát prešifrovania." -#: lib/luks2/luks2_reencrypt.c:4122 +#: lib/luks2/luks2_reencrypt.c:4123 msgid "Decryption failed." msgstr "Dešifrovanie zlyhalo." -#: lib/luks2/luks2_reencrypt.c:4127 +#: lib/luks2/luks2_reencrypt.c:4128 #, c-format msgid "Failed to write hotzone area starting at %." msgstr "Zlyhal zápis oblasti s horúcou zónou začínajúci na %." -#: lib/luks2/luks2_reencrypt.c:4132 +#: lib/luks2/luks2_reencrypt.c:4133 msgid "Failed to sync data." msgstr "Zlyhala synchronizácia údajov." -#: lib/luks2/luks2_reencrypt.c:4140 +#: lib/luks2/luks2_reencrypt.c:4141 msgid "Failed to update metadata after current reencryption hotzone completed." msgstr "Zlyhalo aktualizovanie metadát po dokončení aktuálnej horúcej zóny prešifrovania." -#: lib/luks2/luks2_reencrypt.c:4229 +#: lib/luks2/luks2_reencrypt.c:4230 msgid "Failed to write LUKS2 metadata." msgstr "Zlyhal zápis LUKS2 metadát." -#: lib/luks2/luks2_reencrypt.c:4252 +#: lib/luks2/luks2_reencrypt.c:4253 msgid "Failed to wipe unused data device area." msgstr "Zlyhalo vymazanie oblasti zariadenia s nepoužívanými údajmi." -#: lib/luks2/luks2_reencrypt.c:4258 +#: lib/luks2/luks2_reencrypt.c:4259 #, c-format msgid "Failed to remove unused (unbound) keyslot %d." msgstr "Zlyhalo odstránenie nepoužívaného (neviazaného) miesta pre kľúč %d." -#: lib/luks2/luks2_reencrypt.c:4268 +#: lib/luks2/luks2_reencrypt.c:4269 msgid "Failed to remove reencryption keyslot." msgstr "Zlyhalo odstránenie miesta pre kľúč prešifrovania." -#: lib/luks2/luks2_reencrypt.c:4278 +#: lib/luks2/luks2_reencrypt.c:4279 #, c-format msgid "Fatal error while reencrypting chunk starting at %, % sectors long." msgstr "Fatálna chyba počas prešifrovania časti začínajúcej na %, dlhej % sektorov." -#: lib/luks2/luks2_reencrypt.c:4282 +#: lib/luks2/luks2_reencrypt.c:4283 msgid "Online reencryption failed." msgstr "Zlyhalo prešifrovanie za behu." -#: lib/luks2/luks2_reencrypt.c:4287 +#: lib/luks2/luks2_reencrypt.c:4288 msgid "Do not resume the device unless replaced with error target manually." msgstr "Zariadenie neprebuďte pokiaľ ho manuálne nenahradíte s chybovým cieľom." -#: lib/luks2/luks2_reencrypt.c:4339 +#: lib/luks2/luks2_reencrypt.c:4340 msgid "Cannot proceed with reencryption. Unexpected reencryption status." msgstr "Nedá sa pokračovať v prešifrovaní. Neočakávaný stav prešifrovania." -#: lib/luks2/luks2_reencrypt.c:4345 +#: lib/luks2/luks2_reencrypt.c:4346 msgid "Missing or invalid reencrypt context." msgstr "Chýbajúci alebo neplatný kontext prešifrovania." -#: lib/luks2/luks2_reencrypt.c:4379 lib/luks2/luks2_reencrypt.c:4416 +#: lib/luks2/luks2_reencrypt.c:4380 lib/luks2/luks2_reencrypt.c:4417 msgid "Failed to update reencryption context." msgstr "Zlyhala aktualizácia kontextu prešifrovania." -#: lib/luks2/luks2_reencrypt_digest.c:401 +#: lib/luks2/luks2_reencrypt_digest.c:402 msgid "Reencryption metadata is invalid." msgstr "Metadáta prešifrovania sú neplatné." @@ -2157,7 +2148,7 @@ msgstr "Parametre šifrovania miesta pre kľúč môžu byť nastavené len pre msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encryption." msgstr "Parametre šifrovania miesta pre kľúč nie sú kompatibilné so šifrovaním miesta pre kľúč LUKS2." -#: src/cryptsetup.c:150 src/cryptsetup.c:1178 src/cryptsetup.c:1545 +#: src/cryptsetup.c:150 src/cryptsetup.c:1179 src/cryptsetup.c:1544 #: src/utils_reencrypt.c:1887 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." @@ -2185,7 +2176,7 @@ msgstr "VAROVANIE: Parameter --hash je ignorovaný v režime plain so zadaným s msgid "WARNING: The --keyfile-size option is being ignored, the read size is the same as the encryption key size.\n" msgstr "VAROVANIE: Možnosť --keyfile-size je ignorovaná, veľkosť čítania je rovnaká ako veľkosť kľúča šifrovania.\n" -#: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 +#: src/cryptsetup.c:226 src/cryptsetup.c:1374 src/cryptsetup.c:1597 #: src/integritysetup.c:188 src/utils_reencrypt.c:2138 #, c-format msgid "Blkid scan failed for %s." @@ -2196,9 +2187,9 @@ msgstr "Skenovanie blkid zlyhalo pre %s." msgid "Detected device signature(s) on %s. Proceeding further may damage existing data." msgstr "Zaznamenané podpis(y) zariadenia na %s. Pokračovanie ďalej môže poškodiť existujúce údaje." -#: src/cryptsetup.c:238 src/cryptsetup.c:1261 src/cryptsetup.c:1309 -#: src/cryptsetup.c:1382 src/cryptsetup.c:1522 src/cryptsetup.c:1610 -#: src/cryptsetup.c:2495 src/cryptsetup.c:2924 src/integritysetup.c:178 +#: src/cryptsetup.c:238 src/cryptsetup.c:1260 src/cryptsetup.c:1308 +#: src/cryptsetup.c:1381 src/cryptsetup.c:1521 src/cryptsetup.c:1609 +#: src/cryptsetup.c:2494 src/cryptsetup.c:2923 src/integritysetup.c:178 #: src/utils_reencrypt.c:111 src/utils_reencrypt.c:457 #: src/utils_reencrypt.c:925 msgid "Operation aborted.\n" @@ -2247,7 +2238,7 @@ msgstr "" "ktorý povoľuje prístup k zašifrovaným oddielom bez hesla.\n" "Tento výpis by mal byť vždy uložený zašifrovaný na bezpečnom mieste." -#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2520 +#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2519 msgid "" "The header dump with volume key is sensitive information\n" "that allows access to encrypted partition without a passphrase.\n" @@ -2271,9 +2262,9 @@ msgstr "Nedá sa určiť veľkosť kľúča zväzku pre FVAULT2, prosím použit msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "Zariadenie %s je stále aktívne a naplánované pre odložené odstránenie.\n" -#: src/cryptsetup.c:881 src/cryptsetup.c:1808 src/cryptsetup.c:2082 -#: src/cryptsetup.c:2229 src/cryptsetup.c:2648 src/cryptsetup.c:2729 -#: src/cryptsetup.c:3262 +#: src/cryptsetup.c:881 src/cryptsetup.c:1807 src/cryptsetup.c:2081 +#: src/cryptsetup.c:2228 src/cryptsetup.c:2647 src/cryptsetup.c:2728 +#: src/cryptsetup.c:3261 #, c-format msgid "Failed to set external tokens path %s." msgstr "Zlyhalo nastavenie cesty k externým tokenom %s." @@ -2310,31 +2301,35 @@ msgstr "%-10s %4u iterácií, %5u pamäte, %1u paralelných vlákien (CPU) pre % msgid "Result of benchmark is not reliable." msgstr "Výsledok hodnotenia výkonu nie je spoľahlivý." -#: src/cryptsetup.c:1170 +#: src/cryptsetup.c:1171 msgid "# Tests are approximate using memory only (no storage IO).\n" msgstr "# Testy sú len približné a používajú iba pamäť (žiadne vstupno-výstupné úložisko).\n" #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1195 +#: src/cryptsetup.c:1196 #, c-format msgid "#%*s Algorithm | Key | Encryption | Decryption\n" msgstr "#%*s Algoritmus| Kľúč | Šifrovanie | Dešifrovanie\n" -#: src/cryptsetup.c:1203 +#: src/cryptsetup.c:1204 #, c-format msgid "Cipher %s (with %i bits key) is not available." msgstr "Šifra %s (s %i bitovým kľúčom) nie je dostupná." #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1222 +#: src/cryptsetup.c:1225 msgid "# Algorithm | Key | Encryption | Decryption\n" msgstr "# Algoritmus| Kľúč | Šifrovanie | Dešifrovanie\n" -#: src/cryptsetup.c:1233 +#: src/cryptsetup.c:1238 msgid "N/A" msgstr "–" -#: src/cryptsetup.c:1258 +#: src/cryptsetup.c:1241 +msgid "# Cipher speed test is not available.\n" +msgstr "# Test rýchlosti šifry nie je dostupný.\n" + +#: src/cryptsetup.c:1257 msgid "" "Unprotected LUKS2 reencryption metadata detected. Please verify the reencryption operation is desirable (see luksDump output)\n" "and continue (upgrade metadata) only if you acknowledge the operation as genuine." @@ -2342,27 +2337,27 @@ msgstr "" "Zaznamenané nechránené metadáta LUKS2 prešifrovania. Prosím overte, či je operácia prešifrovania žiadúca (pozri výstup luksDump)\n" "a pokračujte (aktualizujte metadáta) iba keď operáciu uznáte za žiadúcu." -#: src/cryptsetup.c:1264 +#: src/cryptsetup.c:1263 msgid "Enter passphrase to protect and upgrade reencryption metadata: " msgstr "Zadajte heslo na ochránenie a aktualizáciu metadát prešifrovania: " -#: src/cryptsetup.c:1308 +#: src/cryptsetup.c:1307 msgid "Really proceed with LUKS2 reencryption recovery?" msgstr "Naozaj pokračovať s obnovou LUKS2 prešifrovania?" -#: src/cryptsetup.c:1317 +#: src/cryptsetup.c:1316 msgid "Enter passphrase to verify reencryption metadata digest: " msgstr "Zadajte heslo na overenie otlačku (digest) metadát prešifrovania: " -#: src/cryptsetup.c:1319 +#: src/cryptsetup.c:1318 msgid "Enter passphrase for reencryption recovery: " msgstr "Zadajte heslo pre obnovu prešifrovania: " -#: src/cryptsetup.c:1381 +#: src/cryptsetup.c:1380 msgid "Really try to repair LUKS device header?" msgstr "Naozaj sa pokúsiť opraviť hlavičku LUKS zariadenia?" -#: src/cryptsetup.c:1409 src/integritysetup.c:76 src/integritysetup.c:244 +#: src/cryptsetup.c:1408 src/integritysetup.c:76 src/integritysetup.c:244 msgid "" "\n" "Wipe interrupted." @@ -2370,7 +2365,7 @@ msgstr "" "\n" "Mazanie prerušené." -#: src/cryptsetup.c:1414 src/integritysetup.c:81 src/integritysetup.c:289 +#: src/cryptsetup.c:1413 src/integritysetup.c:81 src/integritysetup.c:289 msgid "" "Wiping device to initialize integrity checksum.\n" "You can interrupt this by pressing CTRL+c (rest of not wiped device will contain invalid checksum).\n" @@ -2378,167 +2373,167 @@ msgstr "" "Mazanie zariadenia na inicializáciu kontrolného súčtu integrity.\n" "Môžete to prerušiť stlačením CTRL+c (zvyšok nevymazaného zariadenia bude obsahovať neplatný kontrolný súčet).\n" -#: src/cryptsetup.c:1436 src/integritysetup.c:103 +#: src/cryptsetup.c:1435 src/integritysetup.c:103 #, c-format msgid "Cannot deactivate temporary device %s." msgstr "Nedá sa deaktivovať dočasné zariadenie %s." -#: src/cryptsetup.c:1484 +#: src/cryptsetup.c:1483 msgid "OPAL hw-only encryption does not support --cipher and --key-size, options ignored." msgstr "Iba hardvérové šifrovanie OPAL nepodporuje --cipher a --key-size, možnosti sa ignorujú." -#: src/cryptsetup.c:1497 +#: src/cryptsetup.c:1496 msgid "Integrity option can be used only for LUKS2 format." msgstr "Možnosti integrity môžu byť použité len pre formát LUKS2." -#: src/cryptsetup.c:1502 src/cryptsetup.c:1582 +#: src/cryptsetup.c:1501 src/cryptsetup.c:1581 msgid "Unsupported LUKS2 metadata size options." msgstr "Nepodporovaná možnosť veľkosti LUKS2 metadát." -#: src/cryptsetup.c:1507 +#: src/cryptsetup.c:1506 msgid "OPAL is supported only for LUKS2 format." msgstr "OPAL je podporovaný len pre formát LUKS2." -#: src/cryptsetup.c:1512 +#: src/cryptsetup.c:1511 msgid "Inline hw tags are supported only for LUKS2 format." msgstr "Hardvérové inline príznaky sú podporované len pre LUKS2 formát." -#: src/cryptsetup.c:1521 +#: src/cryptsetup.c:1520 msgid "Header file does not exist, do you want to create it?" msgstr "Súbor s hlavičkou neexistuje, chcete ho vytvoriť?" -#: src/cryptsetup.c:1529 +#: src/cryptsetup.c:1528 #, c-format msgid "Cannot create header file %s." msgstr "Nedá sa vytvoriť súbor s hlavičkou %s." -#: src/cryptsetup.c:1555 src/integritysetup.c:126 src/integritysetup.c:141 +#: src/cryptsetup.c:1554 src/integritysetup.c:126 src/integritysetup.c:141 #: src/integritysetup.c:150 src/integritysetup.c:328 src/integritysetup.c:336 #: src/integritysetup.c:346 msgid "No known integrity specification pattern detected." msgstr "Nebol rozpoznaný žiaden známy vzor špecifikácie integrity." -#: src/cryptsetup.c:1557 +#: src/cryptsetup.c:1556 msgid "Cannot use specified integrity key size." msgstr "Nedá sa použiť zadaná veľkosť kľúča integrity." -#: src/cryptsetup.c:1575 +#: src/cryptsetup.c:1574 #, c-format msgid "Cannot use %s as on-disk header." msgstr "Nedá sa použiť %s ako hlavička na disku." -#: src/cryptsetup.c:1604 src/integritysetup.c:172 +#: src/cryptsetup.c:1603 src/integritysetup.c:172 #, c-format msgid "This will overwrite data on %s irrevocably." msgstr "Toto prepíše údaje na %s nenávratne." -#: src/cryptsetup.c:1641 +#: src/cryptsetup.c:1640 msgid "OPAL Admin password cannot be empty." msgstr "OPAL heslo administrátora nemôže byť prázdne." -#: src/cryptsetup.c:1655 src/cryptsetup.c:2099 src/cryptsetup.c:2242 -#: src/cryptsetup.c:2377 src/cryptsetup.c:2443 src/utils_reencrypt_luks1.c:428 +#: src/cryptsetup.c:1654 src/cryptsetup.c:2098 src/cryptsetup.c:2241 +#: src/cryptsetup.c:2376 src/cryptsetup.c:2442 src/utils_reencrypt_luks1.c:428 msgid "Failed to set pbkdf parameters." msgstr "Zlyhalo nastavenie pbkdf parametrov." -#: src/cryptsetup.c:1786 +#: src/cryptsetup.c:1785 msgid "Reduced data offset is allowed only for detached LUKS header." msgstr "Znížené odsadenie údajov je povolené len pre oddelenú hlavičku LUKS." -#: src/cryptsetup.c:1793 +#: src/cryptsetup.c:1792 #, c-format msgid "LUKS file container %s is too small for activation, there is no remaining space for data." msgstr "Kontajnerový súbor LUKS %s je príliš malý na aktiváciu, nie je tam žiadne zvyšné miesto pre údaje." -#: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:277 +#: src/cryptsetup.c:1834 src/cryptsetup.c:2247 src/utils_reencrypt.c:277 #: src/utils_reencrypt.c:369 src/utils_reencrypt.c:1907 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "Nedá sa zistiť veľkosť kľúču zväzku pre LUKS bez miest pre kľúče, prosím použite voľbu --key-size." -#: src/cryptsetup.c:1854 src/utils_reencrypt.c:303 +#: src/cryptsetup.c:1853 src/utils_reencrypt.c:303 msgid "Device requires two volume keys." msgstr "Zariadenie vyžaduje dve kľúče zväzku." -#: src/cryptsetup.c:1889 +#: src/cryptsetup.c:1888 msgid "Some specified activation parameters were ignored with OPAL hw-only encryption." msgstr "Niektoré zadané aktivačné parametre boli ignorované s len hardvérovým šifrovaním OPAL." -#: src/cryptsetup.c:1894 +#: src/cryptsetup.c:1893 msgid "Device activated but cannot make flags persistent." msgstr "Zariadenie aktivované, ale nedajú sa urobiť príznaky trvalými." -#: src/cryptsetup.c:1974 src/cryptsetup.c:2042 +#: src/cryptsetup.c:1973 src/cryptsetup.c:2041 #, c-format msgid "Keyslot %d is selected for deletion." msgstr "Miesto pre kľúč %d je vybrané pre vymazanie." -#: src/cryptsetup.c:1986 src/cryptsetup.c:2046 +#: src/cryptsetup.c:1985 src/cryptsetup.c:2045 msgid "This is the last keyslot. Device will become unusable after purging this key." msgstr "Toto je posledné miesto pre kľúč. Zariadenie sa stane nepoužiteľné po odstránení tohto kľúča." -#: src/cryptsetup.c:1987 +#: src/cryptsetup.c:1986 msgid "Enter any remaining passphrase: " msgstr "Zadajte akékoľvek zvyšné heslo: " -#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 +#: src/cryptsetup.c:1987 src/cryptsetup.c:2047 msgid "Operation aborted, the keyslot was NOT wiped.\n" msgstr "Operácia zrušená, miesto pre kľúč NEBOLO zmazané.\n" -#: src/cryptsetup.c:2024 +#: src/cryptsetup.c:2023 msgid "Enter passphrase to be deleted: " msgstr "Zadajte heslo, ktoré má byť vymazané: " -#: src/cryptsetup.c:2074 src/cryptsetup.c:2426 src/cryptsetup.c:3086 -#: src/cryptsetup.c:3253 +#: src/cryptsetup.c:2073 src/cryptsetup.c:2425 src/cryptsetup.c:3085 +#: src/cryptsetup.c:3252 #, c-format msgid "Device %s is not a valid LUKS2 device." msgstr "Zariadenie %s nie je platné LUKS2 zariadenie." -#: src/cryptsetup.c:2113 src/cryptsetup.c:2312 +#: src/cryptsetup.c:2112 src/cryptsetup.c:2311 msgid "Enter new passphrase for key slot: " msgstr "Zadajte nové heslo k miestu pre kľúč: " -#: src/cryptsetup.c:2147 src/utils_luks.c:342 +#: src/cryptsetup.c:2146 src/utils_luks.c:342 #, c-format msgid "Enter token PIN: " msgstr "Zadaj PIN k tokenu: " -#: src/cryptsetup.c:2149 src/utils_luks.c:344 +#: src/cryptsetup.c:2148 src/utils_luks.c:344 #, c-format msgid "Enter token %d PIN: " msgstr "Zadaj PIN k tokenu %d: " -#: src/cryptsetup.c:2208 +#: src/cryptsetup.c:2207 msgid "WARNING: The --key-slot parameter is used for new keyslot number.\n" msgstr "VAROVANIE: Parameter --key-slot je použitý pre nové číslo miesta pre kľúč.\n" -#: src/cryptsetup.c:2285 src/utils_reencrypt_luks1.c:1094 +#: src/cryptsetup.c:2284 src/utils_reencrypt_luks1.c:1094 #, c-format msgid "Enter any existing passphrase: " msgstr "Zadajte akékoľvek existujúce heslo: " -#: src/cryptsetup.c:2381 +#: src/cryptsetup.c:2380 msgid "Enter passphrase to be changed: " msgstr "Zadajte heslo, ktoré sa má zmeniť: " -#: src/cryptsetup.c:2397 src/utils_reencrypt_luks1.c:1080 +#: src/cryptsetup.c:2396 src/utils_reencrypt_luks1.c:1080 msgid "Enter new passphrase: " msgstr "Zadajte nové heslo: " -#: src/cryptsetup.c:2447 +#: src/cryptsetup.c:2446 msgid "Enter passphrase for keyslot to be converted: " msgstr "Zadajte heslo k miestu pre kľúč, ktoré má byť konvertované: " -#: src/cryptsetup.c:2471 +#: src/cryptsetup.c:2470 msgid "Only one device argument for isLuks operation is supported." msgstr "Iba jeden argument so zariadením pre operáciu isLuks je podporovaný." -#: src/cryptsetup.c:2576 +#: src/cryptsetup.c:2575 #, c-format msgid "Keyslot %d does not contain unbound key." msgstr "Miesto pre kľúč %d neobsahuje neviazaný kľúč." -#: src/cryptsetup.c:2581 +#: src/cryptsetup.c:2580 msgid "" "The header dump with unbound key is sensitive information.\n" "This dump should be stored encrypted in a safe place." @@ -2546,52 +2541,52 @@ msgstr "" "Výpis hlavičky s neviazaným kľúčom je citlivý údaj.\n" "Tento výpis by mal byť uložený šifrovaný na bezpečnom mieste." -#: src/cryptsetup.c:2676 src/cryptsetup.c:2712 +#: src/cryptsetup.c:2675 src/cryptsetup.c:2711 #, c-format msgid "%s is not active %s device name." msgstr "%s nie je názov aktívneho zariadenia %s." -#: src/cryptsetup.c:2707 +#: src/cryptsetup.c:2706 #, c-format msgid "%s is not active LUKS device name or header is missing." msgstr "%s nie je názov aktívneho LUKS zariadenia alebo chýba hlavička." -#: src/cryptsetup.c:2784 src/cryptsetup.c:2803 +#: src/cryptsetup.c:2783 src/cryptsetup.c:2802 msgid "Option --header-backup-file is required." msgstr "Možnosť --header-backup-file je vyžadovaná." -#: src/cryptsetup.c:2834 +#: src/cryptsetup.c:2833 #, c-format msgid "%s is not cryptsetup managed device." msgstr "%s nie je zariadenie spravované cryptsetup-om." -#: src/cryptsetup.c:2845 +#: src/cryptsetup.c:2844 #, c-format msgid "Refresh is not supported for device type %s" msgstr "Obnovenie nie je podporované pre typ zariadenia %s" -#: src/cryptsetup.c:2895 +#: src/cryptsetup.c:2894 #, c-format msgid "Unrecognized metadata device type %s." msgstr "Nerozpoznaný typ zariadenia %s v metadátach." -#: src/cryptsetup.c:2897 +#: src/cryptsetup.c:2896 msgid "Command requires device and mapped name as arguments." msgstr "Príkaz požaduje zariadenie a mapovaný názov ako argumenty." -#: src/cryptsetup.c:2915 +#: src/cryptsetup.c:2914 msgid "Enter OPAL PSID: " msgstr "Zadajte OPAL PSID: " -#: src/cryptsetup.c:2915 +#: src/cryptsetup.c:2914 msgid "Enter OPAL Admin password: " msgstr "Zadajte OPAL heslo administrátora: " -#: src/cryptsetup.c:2923 +#: src/cryptsetup.c:2922 msgid "WARNING: WHOLE disk will be factory reset and all data will be lost! Continue?" msgstr "VAROVANIE: CELÝ disk bude obnovený do továrenských nastavení a všetky údaje budú stratené! Pokračovať?" -#: src/cryptsetup.c:2966 +#: src/cryptsetup.c:2965 #, c-format msgid "" "This operation will erase all keyslots on device %s.\n" @@ -2600,363 +2595,363 @@ msgstr "" "Táto operácia vymaže všetky miesta s kľúčmi na zariadení %s.\n" "Zariadenie sa stane nepoužiteľné po tejto operácií." -#: src/cryptsetup.c:2973 +#: src/cryptsetup.c:2972 msgid "Operation aborted, keyslots were NOT wiped.\n" msgstr "Operácia zrušená, miesta s kľúčmi NEBOLI vymazané.\n" -#: src/cryptsetup.c:3012 +#: src/cryptsetup.c:3011 msgid "Invalid LUKS type, only luks1 and luks2 are supported." msgstr "Neplatný typ LUKS, iba luks1 a luks2 sú podporované." -#: src/cryptsetup.c:3028 +#: src/cryptsetup.c:3027 #, c-format msgid "Device is already %s type." msgstr "Zariadenie je už typom %s." -#: src/cryptsetup.c:3035 +#: src/cryptsetup.c:3034 #, c-format msgid "This operation will convert %s to %s format.\n" msgstr "Táto operácia premení %s na formát %s.\n" -#: src/cryptsetup.c:3038 +#: src/cryptsetup.c:3037 msgid "Operation aborted, device was NOT converted.\n" msgstr "Operácia zrušená, zariadenie NEBOLO premenené.\n" -#: src/cryptsetup.c:3078 +#: src/cryptsetup.c:3077 msgid "Option --priority, --label or --subsystem is missing." msgstr "Možnosť --priority, --label alebo --subsystem chýba." -#: src/cryptsetup.c:3112 src/cryptsetup.c:3152 src/cryptsetup.c:3172 +#: src/cryptsetup.c:3111 src/cryptsetup.c:3151 src/cryptsetup.c:3171 #, c-format msgid "Token %d is invalid." msgstr "Token %d je neplatný." -#: src/cryptsetup.c:3115 src/cryptsetup.c:3175 +#: src/cryptsetup.c:3114 src/cryptsetup.c:3174 #, c-format msgid "Token %d in use." msgstr "Token %d je používaný." -#: src/cryptsetup.c:3127 +#: src/cryptsetup.c:3126 #, c-format msgid "Failed to add luks2-keyring token %d." msgstr "Zlyhalo pridanie tokenu luks2-keyring %d." -#: src/cryptsetup.c:3138 src/cryptsetup.c:3201 +#: src/cryptsetup.c:3137 src/cryptsetup.c:3200 #, c-format msgid "Failed to assign token %d to keyslot %d." msgstr "Zlyhalo priradenie tokenu %d k miestu pre kľúč %d." -#: src/cryptsetup.c:3155 +#: src/cryptsetup.c:3154 #, c-format msgid "Token %d is not in use." msgstr "Token %d sa nepoužíva." -#: src/cryptsetup.c:3192 +#: src/cryptsetup.c:3191 msgid "Failed to import token from file." msgstr "Zlyhalo importovanie tokenu zo súboru." -#: src/cryptsetup.c:3217 +#: src/cryptsetup.c:3216 #, c-format msgid "Failed to get token %d for export." msgstr "Zlyhalo získanie tokenu %d pre export." -#: src/cryptsetup.c:3230 +#: src/cryptsetup.c:3229 #, c-format msgid "Token %d is not assigned to keyslot %d." msgstr "Token %d nie je priradený k miestu pre kľúč %d." -#: src/cryptsetup.c:3232 src/cryptsetup.c:3239 +#: src/cryptsetup.c:3231 src/cryptsetup.c:3238 #, c-format msgid "Failed to unassign token %d from keyslot %d." msgstr "Zlyhalo zrušenie priradenia tokenu %d z miesta pre kľúč %d." -#: src/cryptsetup.c:3298 +#: src/cryptsetup.c:3297 msgid "Option --tcrypt-hidden, --tcrypt-system or --tcrypt-backup is supported only for TCRYPT device." msgstr "Možnosť --tcrypt-hidden, --tcrypt-system alebo --tcrypt-backup je podporovaná len pre TCRYPT zariadenie." -#: src/cryptsetup.c:3301 +#: src/cryptsetup.c:3300 msgid "Option --veracrypt or --disable-veracrypt is supported only for TCRYPT device type." msgstr "Možnosť --veracrypt alebo --disable-veracrypt je podporovaná len pre zariadenie typu TCRYPT." -#: src/cryptsetup.c:3304 +#: src/cryptsetup.c:3303 msgid "Option --veracrypt-pim is supported only for VeraCrypt compatible devices." msgstr "Možnosť --veracrypt-pim je podporovaná len pre zariadenia kompatibilné s VeraCrypt." -#: src/cryptsetup.c:3308 +#: src/cryptsetup.c:3307 msgid "Option --veracrypt-query-pim is supported only for VeraCrypt compatible devices." msgstr "Možnosť --veracrypt-query-pim je podporovaná len pre zariadenia kompatibilné s VeraCrypt." -#: src/cryptsetup.c:3310 +#: src/cryptsetup.c:3309 msgid "The options --veracrypt-pim and --veracrypt-query-pim are mutually exclusive." msgstr "Možnosti --veracrypt-pim a --veracrypt-query-pim sa vzájomne vylučujú." -#: src/cryptsetup.c:3319 +#: src/cryptsetup.c:3318 msgid "Option --persistent is not allowed with --test-passphrase." msgstr "Možnosť --persistent nie je povolené s --test-passphrase." -#: src/cryptsetup.c:3322 +#: src/cryptsetup.c:3321 msgid "Options --refresh and --test-passphrase are mutually exclusive." msgstr "Možnosti --refresh a --test-passphrase sa navzájom vylučujú." -#: src/cryptsetup.c:3325 +#: src/cryptsetup.c:3324 msgid "Option --shared is allowed only for open of plain device." msgstr "Možnosť --shared je povolená len pre otvorenie zariadenia plain." -#: src/cryptsetup.c:3328 +#: src/cryptsetup.c:3327 msgid "Option --skip is supported only for open of plain and loopaes devices." msgstr "Možnosť --skip je podporovaná len pre otvorenie zariadení plain a loopaes." -#: src/cryptsetup.c:3331 +#: src/cryptsetup.c:3330 msgid "Option --offset with open action is only supported for plain and loopaes devices." msgstr "Možnosť --offset s akciou otvorenia je podporovaná len pre zariadenia plain a loopaes." -#: src/cryptsetup.c:3334 +#: src/cryptsetup.c:3333 msgid "Option --tcrypt-hidden cannot be combined with --allow-discards." msgstr "Možnosť --tcrypt-hidden nemôže byť kombinovaná s --allow-discards." -#: src/cryptsetup.c:3338 +#: src/cryptsetup.c:3337 msgid "Sector size option with open action is supported only for plain devices." msgstr "Možnosť veľkosti sektora s akciou otvorenia je podporovaná len pre zariadenia plain." -#: src/cryptsetup.c:3342 +#: src/cryptsetup.c:3341 msgid "Large IV sectors option is supported only for opening plain type device with sector size larger than 512 bytes." msgstr "Možnosť veľkých IV sektorov je podporovaná len pre otváranie zariadenia typu plain s veľkosťou sektora väčšou než 512 bajtov." -#: src/cryptsetup.c:3347 +#: src/cryptsetup.c:3346 msgid "Option --test-passphrase is allowed only for open of LUKS, TCRYPT, BITLK and FVAULT2 devices." msgstr "Možnosť --test-passphrase je povolená len pre otvorenie LUKS, TCRYPT, BITLK a FVAULT2 zariadení." -#: src/cryptsetup.c:3350 src/cryptsetup.c:3380 +#: src/cryptsetup.c:3349 src/cryptsetup.c:3379 msgid "Options --device-size and --size cannot be combined." msgstr "Možnosť --device-size a --size nemôžu byť kombinované." -#: src/cryptsetup.c:3353 +#: src/cryptsetup.c:3352 msgid "Option --unbound is allowed only for open of luks device." msgstr "Možnosť --unbound je povolená len pre otvorenie zariadení luks." -#: src/cryptsetup.c:3356 +#: src/cryptsetup.c:3355 msgid "Option --unbound cannot be used without --test-passphrase." msgstr "Možnosť --unbound nemôže byť použitá bez --test-passphrase." -#: src/cryptsetup.c:3360 +#: src/cryptsetup.c:3359 msgid "Option --volume-key-keyring cannot be combined with --hash or --volume-key-file." msgstr "Možnosť --volume-key-keyring nemôže byť kombinovaná s --hash alebo --volume-key-file." -#: src/cryptsetup.c:3363 +#: src/cryptsetup.c:3362 msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "Obe možnosti --volume-key-file musia byť zadané spolu s príslušnými možnosťami --key-size." -#: src/cryptsetup.c:3372 src/veritysetup.c:673 src/integritysetup.c:787 +#: src/cryptsetup.c:3371 src/veritysetup.c:673 src/integritysetup.c:787 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "Možnosti --cancal-deferred a --deferred nemôžu byť použité naraz." -#: src/cryptsetup.c:3388 +#: src/cryptsetup.c:3387 msgid "Option --active-name can be set only for LUKS2 device." msgstr "Možnosť --active-name možno nastaviť len pre zariadenie LUKS2." -#: src/cryptsetup.c:3391 +#: src/cryptsetup.c:3390 msgid "Options --active-name and --force-offline-reencrypt cannot be combined." msgstr "Možnosti --active-name a --force-offline-reencrypt nemožno kombinovať." -#: src/cryptsetup.c:3394 +#: src/cryptsetup.c:3393 msgid "Options --new-volume-key-file and --keep-key cannot be combined." msgstr "Možnosti --new-volume-key-file a --keep-key nemožno kombinovať." -#: src/cryptsetup.c:3397 +#: src/cryptsetup.c:3396 msgid "Options --new-volume-key-keyring and --keep-key cannot be combined." msgstr "Možnosti --new-volume-key-keyring a --keep-key nemožno kombinovať." -#: src/cryptsetup.c:3405 src/cryptsetup.c:3435 +#: src/cryptsetup.c:3404 src/cryptsetup.c:3434 msgid "Keyslot specification is required." msgstr "Vyžaduje sa zadanie miesta pre kľúč." -#: src/cryptsetup.c:3413 +#: src/cryptsetup.c:3412 msgid "Options --align-payload and --offset cannot be combined." msgstr "Možnosti --align-payload a --offset nemožno kombinovať." -#: src/cryptsetup.c:3416 +#: src/cryptsetup.c:3415 msgid "Option --integrity-no-wipe can be used only for format action with integrity extension." msgstr "Možnosť --integrity-no-wipe môže byť použitá len pre formátovanie s rozšírením integrity." -#: src/cryptsetup.c:3419 +#: src/cryptsetup.c:3418 msgid "Only one of --use-[u]random options is allowed." msgstr "Iba jedna z možností --use-[u]random je povolená." -#: src/cryptsetup.c:3427 +#: src/cryptsetup.c:3426 msgid "Key size is required with --unbound option." msgstr "Veľkosť kľúča sa vyžaduje s možnosťou --unbound." -#: src/cryptsetup.c:3447 +#: src/cryptsetup.c:3446 msgid "Invalid token action." msgstr "Neplatná operácia s tokenom." -#: src/cryptsetup.c:3450 +#: src/cryptsetup.c:3449 msgid "--key-description parameter is mandatory for token add action." msgstr "Parameter --key-description je povinný pre pridanie tokenu." -#: src/cryptsetup.c:3454 src/cryptsetup.c:3467 +#: src/cryptsetup.c:3453 src/cryptsetup.c:3466 msgid "Action requires specific token. Use --token-id parameter." msgstr "Akcia vyžaduje špecifický token. Použite --token-id parameter." -#: src/cryptsetup.c:3458 +#: src/cryptsetup.c:3457 msgid "Option --unbound is valid only with token add action." msgstr "Možnosť --unbound je platná len pri pridávaní tokenu." -#: src/cryptsetup.c:3460 +#: src/cryptsetup.c:3459 msgid "Options --key-slot and --unbound cannot be combined." msgstr "Možnosti --key-slot a --unbound nemožno kombinovať." -#: src/cryptsetup.c:3465 +#: src/cryptsetup.c:3464 msgid "Action requires specific keyslot. Use --key-slot parameter." msgstr "Akcia vyžaduje špecifický token. Použite --key-slot parameter." -#: src/cryptsetup.c:3481 +#: src/cryptsetup.c:3480 msgid " [--type ] []" msgstr " [--type ] []" -#: src/cryptsetup.c:3481 src/veritysetup.c:487 src/integritysetup.c:554 +#: src/cryptsetup.c:3480 src/veritysetup.c:487 src/integritysetup.c:554 msgid "open device as " msgstr "otvorí zariadenie ako " -#: src/cryptsetup.c:3482 src/cryptsetup.c:3483 src/cryptsetup.c:3484 +#: src/cryptsetup.c:3481 src/cryptsetup.c:3482 src/cryptsetup.c:3483 #: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:555 #: src/integritysetup.c:556 src/integritysetup.c:558 msgid "" msgstr "" -#: src/cryptsetup.c:3482 src/veritysetup.c:488 src/integritysetup.c:555 +#: src/cryptsetup.c:3481 src/veritysetup.c:488 src/integritysetup.c:555 msgid "close device (remove mapping)" msgstr "zatvorí zariadenie (odstráni mapovanie)" -#: src/cryptsetup.c:3483 src/integritysetup.c:558 +#: src/cryptsetup.c:3482 src/integritysetup.c:558 msgid "resize active device" msgstr "zmení veľkosť aktívneho zariadenia" -#: src/cryptsetup.c:3484 +#: src/cryptsetup.c:3483 msgid "show device status" msgstr "zobrazí stav zariadenia" -#: src/cryptsetup.c:3485 +#: src/cryptsetup.c:3484 msgid "[--cipher ]" msgstr "[--cipher <šifra>]" -#: src/cryptsetup.c:3485 +#: src/cryptsetup.c:3484 msgid "benchmark cipher" msgstr "zhodnotí výkon šifry" -#: src/cryptsetup.c:3486 src/cryptsetup.c:3487 src/cryptsetup.c:3488 -#: src/cryptsetup.c:3489 src/cryptsetup.c:3490 src/cryptsetup.c:3497 -#: src/cryptsetup.c:3498 src/cryptsetup.c:3499 src/cryptsetup.c:3500 -#: src/cryptsetup.c:3501 src/cryptsetup.c:3502 src/cryptsetup.c:3503 -#: src/cryptsetup.c:3504 src/cryptsetup.c:3505 src/cryptsetup.c:3506 +#: src/cryptsetup.c:3485 src/cryptsetup.c:3486 src/cryptsetup.c:3487 +#: src/cryptsetup.c:3488 src/cryptsetup.c:3489 src/cryptsetup.c:3496 +#: src/cryptsetup.c:3497 src/cryptsetup.c:3498 src/cryptsetup.c:3499 +#: src/cryptsetup.c:3500 src/cryptsetup.c:3501 src/cryptsetup.c:3502 +#: src/cryptsetup.c:3503 src/cryptsetup.c:3504 src/cryptsetup.c:3505 msgid "" msgstr "" -#: src/cryptsetup.c:3486 +#: src/cryptsetup.c:3485 msgid "try to repair on-disk metadata" msgstr "pokúsi sa opraviť metadáta uložené na disku" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3486 msgid "reencrypt LUKS2 device" msgstr "prešifruje zariadenie LUKS2" -#: src/cryptsetup.c:3488 +#: src/cryptsetup.c:3487 msgid "erase all keyslots (remove encryption key)" msgstr "vymaže všetky miesta s kľúčmi (odstráni šifrovací kľúč)" -#: src/cryptsetup.c:3489 +#: src/cryptsetup.c:3488 msgid "convert LUKS from/to LUKS2 format" msgstr "prevedie LUKS z/na LUKS2 formát(u)" -#: src/cryptsetup.c:3490 +#: src/cryptsetup.c:3489 msgid "set permanent configuration options for LUKS2" msgstr "nastaví trvalé možnosti konfigurácie pre LUKS2" -#: src/cryptsetup.c:3491 src/cryptsetup.c:3492 +#: src/cryptsetup.c:3490 src/cryptsetup.c:3491 msgid " []" msgstr " []" -#: src/cryptsetup.c:3491 +#: src/cryptsetup.c:3490 msgid "formats a LUKS device" msgstr "naformátuje zariadenie LUKS" -#: src/cryptsetup.c:3492 +#: src/cryptsetup.c:3491 msgid "add key to LUKS device" msgstr "pridá kľúč do zariadenia LUKS" -#: src/cryptsetup.c:3493 src/cryptsetup.c:3494 src/cryptsetup.c:3495 +#: src/cryptsetup.c:3492 src/cryptsetup.c:3493 src/cryptsetup.c:3494 msgid " []" msgstr " []" -#: src/cryptsetup.c:3493 +#: src/cryptsetup.c:3492 msgid "removes supplied key or key file from LUKS device" msgstr "odstráni poskytnutý kľúč alebo súbor s kľúčom zo zariadenia LUKS" -#: src/cryptsetup.c:3494 +#: src/cryptsetup.c:3493 msgid "changes supplied key or key file of LUKS device" msgstr "zmení poskytnutý kľúč alebo súbor s kľúčom na zariadení LUKS" -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3494 msgid "converts a key to new pbkdf parameters" msgstr "prevedie kľúč na nové parametre pbkdf" -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3495 msgid " " msgstr " " -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3495 msgid "wipes key with number from LUKS device" msgstr "vymaže kľúč s číslom zo zariadenia LUKS" -#: src/cryptsetup.c:3497 +#: src/cryptsetup.c:3496 msgid "print UUID of LUKS device" msgstr "vypíše UUID zariadení LUKS" -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3497 msgid "tests for LUKS partition header" msgstr "otestuje na hlavičku diskového oddielu LUKS" -#: src/cryptsetup.c:3499 +#: src/cryptsetup.c:3498 msgid "dump LUKS partition information" msgstr "vypíše informácie o oddiely LUKS" -#: src/cryptsetup.c:3500 +#: src/cryptsetup.c:3499 msgid "dump TCRYPT device information" msgstr "vypíše informácie o zariadení TCRYPT" -#: src/cryptsetup.c:3501 +#: src/cryptsetup.c:3500 msgid "dump BITLK device information" msgstr "vypíše informácie o zariadení BITLK" -#: src/cryptsetup.c:3502 +#: src/cryptsetup.c:3501 msgid "dump FVAULT2 device information" msgstr "vypíše informácie o zariadení FVAULT2" -#: src/cryptsetup.c:3503 +#: src/cryptsetup.c:3502 msgid "Suspend LUKS device and wipe key (all IOs are frozen)" msgstr "Pozastaví zariadenie LUKS a vymaže kľúč (všetky vstupno-výstupné operácie budú zmrazené)" -#: src/cryptsetup.c:3504 +#: src/cryptsetup.c:3503 msgid "Resume suspended LUKS device" msgstr "Prebudí pozastavené zariadenie LUKS" -#: src/cryptsetup.c:3505 +#: src/cryptsetup.c:3504 msgid "Backup LUKS device header and keyslots" msgstr "Zálohuje hlavičku a miesta s kľúčmi zariadenia LUKS" -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3505 msgid "Restore LUKS device header and keyslots" msgstr "Obnoví hlavičku a miesta s kľúčmi zariadenia LUKS" -#: src/cryptsetup.c:3507 +#: src/cryptsetup.c:3506 msgid " " msgstr " " -#: src/cryptsetup.c:3507 +#: src/cryptsetup.c:3506 msgid "Manipulate LUKS2 tokens" msgstr "Manipuluje s tokenmi LUKS2" -#: src/cryptsetup.c:3526 src/veritysetup.c:505 src/integritysetup.c:573 +#: src/cryptsetup.c:3525 src/veritysetup.c:505 src/integritysetup.c:573 msgid "" "\n" " is one of:\n" @@ -2964,7 +2959,7 @@ msgstr "" "\n" " je jedna z:\n" -#: src/cryptsetup.c:3532 +#: src/cryptsetup.c:3531 msgid "" "\n" "You can also use old syntax aliases:\n" @@ -2976,7 +2971,7 @@ msgstr "" "\topen: create (plainOpen), luksOpen, loopaesOpen, tcryptOpen, bitlkOpen, fvault2Open\n" "\tclose: remove (plainClose), luksClose, loopaesClose, tcryptClose, bitlkClose, fvault2Close\n" -#: src/cryptsetup.c:3536 +#: src/cryptsetup.c:3535 #, c-format msgid "" "\n" @@ -2991,7 +2986,7 @@ msgstr "" " je číslo miesta pre kľúč LUKS na upravovanie\n" " je voliteľný súbor s kľúčom pre nový kľúč pre akciu luksAddKey\n" -#: src/cryptsetup.c:3543 +#: src/cryptsetup.c:3542 #, c-format msgid "" "\n" @@ -3000,7 +2995,7 @@ msgstr "" "\n" "Predvolené zakompilovaný formát metadát je %s (pre akciu luksFormat).\n" -#: src/cryptsetup.c:3548 +#: src/cryptsetup.c:3547 msgid "" "\n" "LUKS2 external token plugin support is enabled.\n" @@ -3008,12 +3003,12 @@ msgstr "" "\n" "LUKS2 podpora zásuvného modulu externého tokenu je zapnutá.\n" -#: src/cryptsetup.c:3549 +#: src/cryptsetup.c:3548 #, c-format msgid "LUKS2 external token plugin path: %s.\n" msgstr "Cesta k zásuvnému modulu externého tokenu LUKS2: %s.\n" -#: src/cryptsetup.c:3551 +#: src/cryptsetup.c:3550 msgid "" "\n" "LUKS2 external token plugin support is disabled.\n" @@ -3021,7 +3016,7 @@ msgstr "" "\n" "LUKS2 podpora zásuvného modulu externého tokenu je vypnutá.\n" -#: src/cryptsetup.c:3555 +#: src/cryptsetup.c:3554 #, c-format msgid "" "\n" @@ -3038,7 +3033,7 @@ msgstr "" "Predvolené PBKDF pre LUKS2: %s\n" "\tČas iterácie: %d, Pamäť potrebná: %d kB, Paralelné vlákna: %d\n" -#: src/cryptsetup.c:3566 +#: src/cryptsetup.c:3565 #, c-format msgid "" "\n" @@ -3053,122 +3048,122 @@ msgstr "" "\tplain: %s, Kľúč: %d bitov, Hashovanie hesla: %s\n" "\tLUKS: %s, Kľúč: %d bitov, Hashovanie LUKS hlavičky: %s, RNG: %s\n" -#: src/cryptsetup.c:3575 +#: src/cryptsetup.c:3574 msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: Predvolená veľkosť kľúča s režimom XTS (dva interné kľúče) bude zdvojnásobená.\n" -#: src/cryptsetup.c:3593 src/veritysetup.c:647 src/integritysetup.c:733 +#: src/cryptsetup.c:3592 src/veritysetup.c:647 src/integritysetup.c:733 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: požaduje %s ako argumenty" -#: src/cryptsetup.c:3633 src/utils_reencrypt_luks1.c:1143 +#: src/cryptsetup.c:3632 src/utils_reencrypt_luks1.c:1143 msgid "Key slot is invalid." msgstr "Miesto pre kľúč je neplatné." -#: src/cryptsetup.c:3661 +#: src/cryptsetup.c:3660 msgid "Device size must be multiple of 512 bytes sector." msgstr "Veľkosť zariadenie musí byť násobkom 512-bajtového sektora." -#: src/cryptsetup.c:3666 +#: src/cryptsetup.c:3665 msgid "Invalid max reencryption hotzone size specification." msgstr "Zadaná neplatná maximálna veľkosť horúcej zóny prešifrovania." -#: src/cryptsetup.c:3680 src/cryptsetup.c:3697 src/cryptsetup.c:3709 +#: src/cryptsetup.c:3679 src/cryptsetup.c:3696 src/cryptsetup.c:3708 msgid "Key size must be a multiple of 8 bits" msgstr "Veľkosť kľúča musí byť násobkom 8 bitov" -#: src/cryptsetup.c:3687 +#: src/cryptsetup.c:3686 msgid "At most 2 key size specifications can be supplied." msgstr "Najviac dve veľkosti kľúčov môžu byť zadané." -#: src/cryptsetup.c:3716 src/cryptsetup.c:3727 +#: src/cryptsetup.c:3715 src/cryptsetup.c:3726 #, c-format msgid "At most %d volume key specifications can be supplied." msgstr "Najviac %d špecifikácií kľúča zväzku môže byť zadaných." -#: src/cryptsetup.c:3739 +#: src/cryptsetup.c:3738 #, c-format msgid "At most %d keyring link specifications can be supplied." msgstr "Najviac %d zväzkov kľúčov môže byť zadaných." -#: src/cryptsetup.c:3748 +#: src/cryptsetup.c:3747 msgid "Maximum device reduce size is 1 GiB." msgstr "Maximálna veľkosť zmenšenia zariadenia je 1 GiB." -#: src/cryptsetup.c:3751 +#: src/cryptsetup.c:3750 msgid "Reduce size must be multiple of 512 bytes sector." msgstr "Veľkosť zmenšenia musí byť násobkom 512-bajtového sektora." -#: src/cryptsetup.c:3768 +#: src/cryptsetup.c:3767 msgid "Option --priority can be only ignore/normal/prefer." msgstr "Možnosť --priority môže byť len ignore/normal/prefer." -#: src/cryptsetup.c:3787 src/veritysetup.c:568 src/integritysetup.c:653 +#: src/cryptsetup.c:3786 src/veritysetup.c:568 src/integritysetup.c:653 msgid "Show this help message" msgstr "Zobrazí túto pomocnú správu" -#: src/cryptsetup.c:3788 src/veritysetup.c:569 src/integritysetup.c:654 +#: src/cryptsetup.c:3787 src/veritysetup.c:569 src/integritysetup.c:654 msgid "Display brief usage" msgstr "Zobrazí stručný návod na použitie" -#: src/cryptsetup.c:3789 src/veritysetup.c:570 src/integritysetup.c:655 +#: src/cryptsetup.c:3788 src/veritysetup.c:570 src/integritysetup.c:655 msgid "Print package version" msgstr "Vypíše verziu balíka" -#: src/cryptsetup.c:3800 src/veritysetup.c:581 src/integritysetup.c:666 +#: src/cryptsetup.c:3799 src/veritysetup.c:581 src/integritysetup.c:666 msgid "Help options:" msgstr "Možnosti pomoci:" -#: src/cryptsetup.c:3823 src/veritysetup.c:602 src/integritysetup.c:686 +#: src/cryptsetup.c:3822 src/veritysetup.c:602 src/integritysetup.c:686 msgid "[OPTION...] " msgstr "[MOŽNOSŤ...] <špecifikácia akcie>" -#: src/cryptsetup.c:3832 src/veritysetup.c:611 src/integritysetup.c:697 +#: src/cryptsetup.c:3831 src/veritysetup.c:611 src/integritysetup.c:697 msgid "Argument missing." msgstr "Chýba argument ." -#: src/cryptsetup.c:3911 src/veritysetup.c:642 src/integritysetup.c:728 +#: src/cryptsetup.c:3910 src/veritysetup.c:642 src/integritysetup.c:728 msgid "Unknown action." msgstr "Neznáma akcia." -#: src/cryptsetup.c:3929 +#: src/cryptsetup.c:3928 msgid "Option --key-file takes precedence over specified key file argument." msgstr "Možnosť --key-file má prednosť pred zadaným argumentom súboru s kľúčom." -#: src/cryptsetup.c:3935 +#: src/cryptsetup.c:3934 msgid "Only one --key-file argument is allowed." msgstr "Iba jeden argument --key-file je dovolený." -#: src/cryptsetup.c:3940 +#: src/cryptsetup.c:3939 msgid "Password-based key derivation function (PBKDF) can be only pbkdf2 or argon2i/argon2id." msgstr "Funkcia na odvodenie kľúča na základe hesla (PBKDF) môže byť iba pbkdf2 alebo argon2i/argon2id." -#: src/cryptsetup.c:3945 +#: src/cryptsetup.c:3944 msgid "PBKDF forced iterations cannot be combined with iteration time option." msgstr "Vynútené iterácie PBKDF nemôžu byť kombinované s možnosťou času iterácie." -#: src/cryptsetup.c:3950 +#: src/cryptsetup.c:3949 msgid "Cannot link volume key to a keyring when keyring is disabled." msgstr "Nedá sa prepojiť kľúč zväzku na zväzok kľúčov, keď je zväzok kľúčov vypnutý." -#: src/cryptsetup.c:3955 +#: src/cryptsetup.c:3954 msgid "Cannot use keyring key description when keyring is disabled." msgstr "Nedá sa použiť popis kľúča zo zväzku kľúčov, keď je zväzok kľúčov vypnutý." -#: src/cryptsetup.c:3960 +#: src/cryptsetup.c:3959 msgid "Inline integrity must be used together with --integrity option." msgstr "Inline integrita musí byť použitá spolu s možnosťou --integrity." -#: src/cryptsetup.c:3971 +#: src/cryptsetup.c:3970 msgid "Options --keyslot-cipher and --keyslot-key-size must be used together." msgstr "Možnosti --keyslot-cipher a --keyslot-key-size musia byť použité spolu." -#: src/cryptsetup.c:3979 +#: src/cryptsetup.c:3978 msgid "No action taken. Invoked with --test-args option.\n" msgstr "Žiadna akcia sa nevykonala. Zavolané s možnosťou --test-args.\n" -#: src/cryptsetup.c:3992 +#: src/cryptsetup.c:3991 msgid "Cannot disable metadata locking." msgstr "Nedá sa vypnúť zamykanie metadát." @@ -4356,6 +4351,12 @@ msgstr "Pre hostiteľa nie je povolená autentifikačný metóda s verejným kľ msgid "Public key authentication error: " msgstr "Chyba autentifikácie s verejným kľúčom: " +#~ msgid "Required kernel crypto interface not available." +#~ msgstr "Vyžadované kryptografické rozhranie jadra nie je dostupné." + +#~ msgid "Ensure you have algif_skcipher kernel module loaded." +#~ msgstr "Uistite sa, že máte načítaný modul jadra algif_skcipher." + #, c-format #~ msgid "Failed to read or validate BITLK FVE metadata copy #%d from %s." #~ msgstr "Zlyhalo čítanie alebo overenie kópie metadát BITLK FVE #%d z %s." From d5c87859e52d416e43f40e7e2f58f2bcf181ad6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=80=D0=BE=D1=81=D0=BB=D0=B0=D0=B2=20=D0=9D?= =?UTF-8?q?=D0=B8=D0=BA=D0=BE=D0=BB=D0=B8=D1=9B?= Date: Sat, 4 Jul 2026 18:12:56 +0200 Subject: [PATCH 167/244] po: update sr.po (from translationproject.org) --- po/sr.po | 732 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 368 insertions(+), 364 deletions(-) diff --git a/po/sr.po b/po/sr.po index 85a2b3fbd..db01161a0 100644 --- a/po/sr.po +++ b/po/sr.po @@ -4,10 +4,10 @@ # Мирослав Николић , 2014–2026. msgid "" msgstr "" -"Project-Id-Version: cryptsetup-2.8.2-rc0\n" +"Project-Id-Version: cryptsetup-2.8.5-rc0\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2025-12-12 18:51+0100\n" -"PO-Revision-Date: 2026-01-14 15:04+0200\n" +"POT-Creation-Date: 2026-03-30 14:18+0200\n" +"PO-Revision-Date: 2026-04-04 12:24+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" @@ -185,8 +185,8 @@ msgstr "Величина уређаја није поравната на вел msgid "Header detected but device %s is too small." msgstr "Заглавље је откривено али уређај „%s“ је премали." -#: lib/setup.c:669 lib/setup.c:3760 lib/setup.c:5227 -#: lib/luks2/luks2_reencrypt.c:3945 lib/luks2/luks2_reencrypt.c:4434 +#: lib/setup.c:669 lib/setup.c:3760 lib/setup.c:5238 +#: lib/luks2/luks2_reencrypt.c:3948 lib/luks2/luks2_reencrypt.c:4437 msgid "This operation is not supported for this device type." msgstr "Ова радња није подржана за ову врсту уређаја." @@ -199,10 +199,10 @@ msgid "Failed to rollback LUKS2 metadata in memory." msgstr "Нисам успео да повратим ЛУКС2 метаподатке у меморију." #: lib/setup.c:893 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 -#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1782 -#: src/cryptsetup.c:1966 src/cryptsetup.c:2021 src/cryptsetup.c:2219 -#: src/cryptsetup.c:2364 src/cryptsetup.c:2642 src/cryptsetup.c:2955 -#: src/cryptsetup.c:3023 src/utils_reencrypt.c:2281 +#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 +#: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 +#: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2953 +#: src/cryptsetup.c:3021 src/utils_reencrypt.c:2281 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." @@ -219,7 +219,7 @@ msgid "No known cipher specification pattern detected for active device %s." msgstr "Није откривен познат образац одреднице шифрера за активан уређај „%s“." #: lib/setup.c:1515 lib/setup.c:3507 lib/setup.c:3599 lib/setup.c:3611 -#: lib/setup.c:3783 lib/setup.c:5805 +#: lib/setup.c:3783 lib/setup.c:5816 #, c-format msgid "Device %s is not active." msgstr "Уређај „%s“ није радан." @@ -246,7 +246,7 @@ msgid "Detached metadata device is not supported for this crypt type." msgstr "Откачени уређај метаподатака није подржан за ову врсту криптографије." #: lib/setup.c:1639 lib/setup.c:1887 lib/luks2/luks2_reencrypt.c:3034 -#: src/cryptsetup.c:1494 src/cryptsetup.c:3762 +#: src/cryptsetup.c:1492 src/cryptsetup.c:3760 msgid "Unsupported encryption sector size." msgstr "Неподржана величина одељка шифровања." @@ -299,9 +299,9 @@ msgstr "Шифрер %s-%s (величина кључа %zd бита) није msgid "WARNING: The device activation will fail, dm-crypt is missing support for requested encryption sector size.\n" msgstr "УПОЗОРЕЊЕ: Покретање уређаја неће успети, „dm-crypt“-у недостаје подршка за затражену величину одељка шифровања.\n" -#: lib/setup.c:2091 lib/setup.c:2458 lib/setup.c:2520 lib/utils_device.c:896 +#: lib/setup.c:2091 lib/setup.c:2458 lib/setup.c:2520 lib/utils_device.c:906 #: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3073 -#: lib/luks2/luks2_reencrypt.c:4494 +#: lib/luks2/luks2_reencrypt.c:4497 #, c-format msgid "Device %s is too small." msgstr "Уређај „%s“ је премали." @@ -459,7 +459,7 @@ msgid "Unsupported parameters on device %s." msgstr "Неподржани параметри на уређају „%s“." #: lib/setup.c:3521 lib/setup.c:3624 lib/luks2/luks2_reencrypt.c:2928 -#: lib/luks2/luks2_reencrypt.c:3197 lib/luks2/luks2_reencrypt.c:3591 +#: lib/luks2/luks2_reencrypt.c:3197 lib/luks2/luks2_reencrypt.c:3594 #, c-format msgid "Mismatching parameters on device %s." msgstr "Неодговарајући параметри на уређају „%s“." @@ -469,7 +469,7 @@ msgid "Crypt devices mismatch." msgstr "Криптографски уређаји се не поклапају." #: lib/setup.c:3679 lib/setup.c:3684 lib/luks2/luks2_reencrypt.c:2412 -#: lib/luks2/luks2_reencrypt.c:2944 lib/luks2/luks2_reencrypt.c:4233 +#: lib/luks2/luks2_reencrypt.c:2944 lib/luks2/luks2_reencrypt.c:4236 #, c-format msgid "Failed to reload device %s." msgstr "Нисам успео поново да учитам уређај „%s“." @@ -481,8 +481,8 @@ msgid "Failed to suspend device %s." msgstr "Нисам успео да обуставим уређај „%s“." #: lib/setup.c:3702 lib/luks2/luks2_reencrypt.c:2396 -#: lib/luks2/luks2_reencrypt.c:2979 lib/luks2/luks2_reencrypt.c:4146 -#: lib/luks2/luks2_reencrypt.c:4237 +#: lib/luks2/luks2_reencrypt.c:2979 lib/luks2/luks2_reencrypt.c:4149 +#: lib/luks2/luks2_reencrypt.c:4240 #, c-format msgid "Failed to resume device %s." msgstr "Нисам успео да наставим са уређајем „%s“." @@ -566,187 +566,187 @@ msgstr "Грешка за време настављања уређаја „%s msgid "Failed to unlink volume key from user specified keyring." msgstr "Нисам успео да развежем кључ волумена од привеска кључева које је навео корисник." -#: lib/setup.c:4423 lib/setup.c:5592 +#: lib/setup.c:4423 lib/setup.c:5603 msgid "Failed to link volume key in user defined keyring." msgstr "Нисам успео да свежем кључ волумена у привезак кључева који је корисник одредио." -#: lib/setup.c:4521 src/cryptsetup.c:2723 +#: lib/setup.c:4522 src/cryptsetup.c:2721 #, c-format msgid "Volume %s is not suspended." msgstr "Волумен „%s“ није обустављен." -#: lib/setup.c:4622 lib/setup.c:7265 lib/setup.c:7287 lib/setup.c:7341 -#: src/cryptsetup.c:1858 src/cryptsetup.c:2262 src/cryptsetup.c:2280 +#: lib/setup.c:4633 lib/setup.c:7276 lib/setup.c:7298 lib/setup.c:7352 +#: src/cryptsetup.c:1856 src/cryptsetup.c:2260 src/cryptsetup.c:2278 #: src/utils_reencrypt.c:305 src/utils_reencrypt.c:1966 msgid "Volume key does not match the volume." msgstr "Кључ волумена не одговара волумену." -#: lib/setup.c:4776 +#: lib/setup.c:4787 msgid "Failed to swap new key slot." msgstr "Нисам успео да разменим нови утор кључа." -#: lib/setup.c:4874 +#: lib/setup.c:4885 #, c-format msgid "Key slot %d is invalid." msgstr "Утор кључа „%d“ није исправан." -#: lib/setup.c:4880 src/cryptsetup.c:1979 src/cryptsetup.c:2439 -#: src/cryptsetup.c:3123 src/cryptsetup.c:3183 +#: lib/setup.c:4891 src/cryptsetup.c:1977 src/cryptsetup.c:2437 +#: src/cryptsetup.c:3121 src/cryptsetup.c:3181 #, c-format msgid "Keyslot %d is not active." msgstr "Утор кључа „%d“ није радан." -#: lib/setup.c:4899 +#: lib/setup.c:4910 msgid "Device header overlaps with data area." msgstr "Заглавље уређаја се преклапа са облашћу података." -#: lib/setup.c:5120 +#: lib/setup.c:5131 msgid "Reencryption in-progress. Cannot activate device." msgstr "Поновно шифровање је у току. Не могу да активирам уређај." -#: lib/setup.c:5122 lib/luks2/luks2_json_metadata.c:2888 -#: lib/luks2/luks2_reencrypt.c:3722 +#: lib/setup.c:5133 lib/luks2/luks2_json_metadata.c:2888 +#: lib/luks2/luks2_reencrypt.c:3725 msgid "Failed to get reencryption lock." msgstr "Нисам успео да добавим закључавање поновног шифровања." -#: lib/setup.c:5144 +#: lib/setup.c:5155 msgid "LUKS2 reencryption recovery using volume key(s) failed." msgstr "Опоравак LUKS2 поновног шифровања коришћењем кључ(ев)а није успело." -#: lib/setup.c:5280 +#: lib/setup.c:5291 #, c-format msgid "Device %s already exists." msgstr "Већ постоји уређај „%s“." -#: lib/setup.c:5287 +#: lib/setup.c:5298 #, c-format msgid "Cannot use device %s, name is invalid or still in use." msgstr "Не могу да користим уређај „%s“, назив није исправан или је још у употреби." -#: lib/setup.c:5299 +#: lib/setup.c:5310 msgid "Reencryption volume keys do not match the volume." msgstr "Кључ волумена поновног шифровања не одговара волумену." -#: lib/setup.c:5316 +#: lib/setup.c:5327 msgid "Incorrect volume key specified for plain device." msgstr "Наведен је неисправан кључ волумена за обичан уређај." -#: lib/setup.c:5342 lib/setup.c:5403 +#: lib/setup.c:5353 lib/setup.c:5414 msgid "Device type is not properly initialized." msgstr "Врста уређаја није исправно покренута." -#: lib/setup.c:5441 +#: lib/setup.c:5452 msgid "Kernel keyring is not supported by the kernel." msgstr "Привезак кључева кернела није подржан кернелом." -#: lib/setup.c:5445 +#: lib/setup.c:5456 msgid "Kernel keyring missing: required for passing signature to kernel." msgstr "Привезак кључева кернела недостаје: потребан је за прослеђивање потписа кернелу." -#: lib/setup.c:5500 +#: lib/setup.c:5511 #, c-format msgid "Cannot use keyring key %s." msgstr "Не могу да користим кључ привеска „%s“." -#: lib/setup.c:5713 +#: lib/setup.c:5724 msgid "Incorrect root hash specified for verity device." msgstr "Наведен је неисправан хеш корена за уређај тачности." -#: lib/setup.c:5754 lib/setup.c:5779 +#: lib/setup.c:5765 lib/setup.c:5790 msgid "OPAL does not support deferred deactivation." msgstr "OPAL не подржава опцију одложену деактивацију." -#: lib/setup.c:5769 lib/setup.c:5800 lib/luks2/luks2_json_metadata.c:2953 +#: lib/setup.c:5780 lib/setup.c:5811 lib/luks2/luks2_json_metadata.c:2953 #: src/utils_reencrypt.c:89 #, c-format msgid "Device %s is still in use." msgstr "Уређај „%s“ је још увеку употреби." -#: lib/setup.c:5787 +#: lib/setup.c:5798 #, c-format msgid "Could not cancel deferred remove from device %s." msgstr "Не могу да откажем различно уклањање из уређаја „%s“." -#: lib/setup.c:5809 +#: lib/setup.c:5820 #, c-format msgid "Invalid device %s." msgstr "Неисправан уређај „%s“." -#: lib/setup.c:5956 +#: lib/setup.c:5967 msgid "Volume key buffer too small." msgstr "Међумеморија кључа волумена је премала." -#: lib/setup.c:5967 +#: lib/setup.c:5978 msgid "Cannot retrieve volume key for LUKS2 device." msgstr "Не могу да довучем кључ волумена за ЛУКС2 уређај." -#: lib/setup.c:5976 +#: lib/setup.c:5987 msgid "Cannot retrieve volume key for LUKS1 device." msgstr "Не могу да довучем кључ волумена за ЛУКС1 уређај." -#: lib/setup.c:5990 +#: lib/setup.c:6001 msgid "Cannot retrieve volume key for plain device." msgstr "Не могу да довучем кључ волумена за обичан уређај." -#: lib/setup.c:5998 +#: lib/setup.c:6009 msgid "Cannot retrieve root hash for verity device." msgstr "Не могу да довучем хеш корена за уређај тачности." -#: lib/setup.c:6007 +#: lib/setup.c:6018 msgid "Cannot retrieve volume key for BITLK device." msgstr "Не могу да довучем кључ волумена за BITLK уређај." -#: lib/setup.c:6012 +#: lib/setup.c:6023 msgid "Cannot retrieve volume key for FVAULT2 device." msgstr "Не могу да довучем кључ волумена за FVAULT2 уређај." -#: lib/setup.c:6014 +#: lib/setup.c:6025 #, c-format msgid "This operation is not supported for %s crypt device." msgstr "Ова радња није подржана за криптографски уређај „%s“." -#: lib/setup.c:6199 lib/setup.c:6210 +#: lib/setup.c:6210 lib/setup.c:6221 msgid "Dump operation is not supported for this device type." msgstr "Радња исписа није подржана за ову врсту уређаја." -#: lib/setup.c:6590 +#: lib/setup.c:6601 #, c-format msgid "Data offset is not multiple of %u bytes." msgstr "Померај података није умножак %u бајта." -#: lib/setup.c:6898 +#: lib/setup.c:6909 #, c-format msgid "Cannot convert device %s which is still in use." msgstr "Не могу да преобратим уређај „%s“ који је још увек у употреби." -#: lib/setup.c:7206 lib/setup.c:7350 +#: lib/setup.c:7217 lib/setup.c:7361 #, c-format msgid "Failed to assign keyslot %u as the new volume key." msgstr "Нисам успео да доделим утор кључа „%u“ као нови кључ волумена." -#: lib/setup.c:7230 +#: lib/setup.c:7241 msgid "Failed to initialize default LUKS2 keyslot parameters." msgstr "Нисам успео да покренем основне параметре ЛУКС2 утора кључа." -#: lib/setup.c:7236 +#: lib/setup.c:7247 #, c-format msgid "Failed to assign keyslot %d to digest." msgstr "Нисам успео да доделим утор кључа „%d“ за преглед." -#: lib/setup.c:7467 +#: lib/setup.c:7478 msgid "Cannot add key slot, all slots disabled and no volume key provided." msgstr "Не могу да додам утор кључа, сви утори су искључени а није обезбеђен ниједан кључ волумена." -#: lib/setup.c:7540 lib/verity/verity.c:333 +#: lib/setup.c:7551 lib/verity/verity.c:333 msgid "Failed to load key in kernel keyring." msgstr "Нисам успео да учитам кључ у привеску кључева кернела." -#: lib/setup.c:7731 +#: lib/setup.c:7742 #, c-format msgid "Could not find keyring described by \"%s\"." msgstr "Не могу да нађем привезак описан са „%s“." -#: lib/setup.c:7796 +#: lib/setup.c:7807 msgid "Failed to acquire global memory-hard access serialization lock." msgstr "Нисам успео да остварим опште закључавање серијализације приступа чврстој меморији." @@ -803,40 +803,45 @@ msgstr "Уређај „%s“ није сагласан." msgid "Ignoring bogus optimal-io size for data device (%u bytes)." msgstr "Занемарујем лажну оптималну-уи величину за уређај података (%u бајта)." -#: lib/utils_device.c:707 +#: lib/utils_device.c:711 +#, c-format +msgid "Cannot grow %s to % bytes (%s)." +msgstr "Не могу да повећам %s на % бајта (%s)." + +#: lib/utils_device.c:717 #, c-format msgid "Device %s is too small. Need at least % bytes." msgstr "Уређај „%s“ је премали. Захтева барем % бајта." -#: lib/utils_device.c:788 +#: lib/utils_device.c:798 #, c-format msgid "Cannot use device %s which is in use (already mapped or mounted)." msgstr "Не могу да користим уређај „%s“ који је у употреби (већ мапиран или прикачен)." -#: lib/utils_device.c:792 +#: lib/utils_device.c:802 #, c-format msgid "Cannot use device %s, permission denied." msgstr "Не могу да користим уређај „%s“, овлашћење је одбијено." -#: lib/utils_device.c:795 +#: lib/utils_device.c:805 #, c-format msgid "Cannot get info about device %s." msgstr "Не могу да добавим податке о уређају „%s“." -#: lib/utils_device.c:818 +#: lib/utils_device.c:828 msgid "Cannot use a loopback device, running as non-root user." msgstr "Не могу да користим уређај повратне петље, радим као обичан корисник." -#: lib/utils_device.c:829 +#: lib/utils_device.c:839 msgid "Attaching loopback device failed (loop device with autoclear flag is required)." msgstr "Прикачињање уређаја повратне петље није успело (потребан је уређај петље са опцијом самочишћења)." -#: lib/utils_device.c:877 +#: lib/utils_device.c:887 #, c-format msgid "Requested offset is beyond real size of device %s." msgstr "Захтевани померај је изван стварне величине уређаја „%s“." -#: lib/utils_device.c:885 +#: lib/utils_device.c:895 #, c-format msgid "Device %s has zero size." msgstr "Уређај „%s“ има нулту величину." @@ -979,9 +984,9 @@ msgstr "Грешка УИ приликом шифровања утора кљу #: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:356 #: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:668 -#: lib/fvault2/fvault2.c:870 lib/verity/verity.c:67 lib/verity/verity.c:183 +#: lib/fvault2/fvault2.c:872 lib/verity/verity.c:67 lib/verity/verity.c:183 #: lib/verity/verity_hash.c:312 lib/verity/verity_hash.c:321 -#: lib/verity/verity_hash.c:341 lib/verity/verity_fec.c:247 +#: lib/verity/verity_hash.c:350 lib/verity/verity_fec.c:247 #: lib/verity/verity_fec.c:259 lib/verity/verity_fec.c:264 #: lib/luks2/luks2_json_metadata.c:1521 src/utils_reencrypt_luks1.c:108 #: src/utils_reencrypt_luks1.c:120 @@ -1126,7 +1131,7 @@ msgstr "Режим ЛУКС шифрера „%s“ није исправан." msgid "LUKS hash %s is invalid." msgstr "ЛУКС хеш „%s“ није исправан." -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1369 +#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 msgid "No known problems detected for LUKS header." msgstr "Нису откривени познати проблеми за ЛУКС заглавље." @@ -1219,11 +1224,11 @@ msgstr "Премашена је највећа дужина „TCRYPT“ про msgid "PBKDF2 hash algorithm %s not available, skipping." msgstr "„PBKDF2“ алгоритам хеша „%s“ није доступан, прескачем." -#: lib/tcrypt/tcrypt.c:608 src/cryptsetup.c:1242 +#: lib/tcrypt/tcrypt.c:608 src/cryptsetup.c:1240 msgid "Required kernel crypto interface not available." msgstr "Није доступно затражено сучеље криптографије језгра." -#: lib/tcrypt/tcrypt.c:610 src/cryptsetup.c:1244 +#: lib/tcrypt/tcrypt.c:610 src/cryptsetup.c:1242 msgid "Ensure you have algif_skcipher kernel module loaded." msgstr "Уверите се да је учитан модул кернела „algif_skcipher“." @@ -1294,11 +1299,6 @@ msgstr "Неподржана величина одељка „%“." msgid "Failed to read BITLK header from %s." msgstr "Нисам успео да прочитам „BITLK“ заглавље из „%s“." -#: lib/bitlk/bitlk.c:593 -#, c-format -msgid "Failed to read or validate BITLK FVE metadata copy #%d from %s." -msgstr "Нисам успео да прочитам или да потврдим умножак #%d „BITLK FVE“ метаподатака из „%s“." - #: lib/bitlk/bitlk.c:603 #, c-format msgid "Failed to read and validate BITLK FVE metadata from %s." @@ -1374,42 +1374,42 @@ msgstr "Радња није подржана." msgid "Unexpected key data size." msgstr "Неочекивана величина података кључа." -#: lib/bitlk/bitlk.c:1431 +#: lib/bitlk/bitlk.c:1442 msgid "This BITLK device is in an unsupported state and cannot be activated." msgstr "Овај „BITLK“ уређај је у неподржаном стању и не може бити активиран." -#: lib/bitlk/bitlk.c:1436 +#: lib/bitlk/bitlk.c:1447 #, c-format msgid "BITLK devices with type '%s' cannot be activated." msgstr "„BITLK“ уређај са врстом „%s“ се не може активирати." -#: lib/bitlk/bitlk.c:1475 +#: lib/bitlk/bitlk.c:1486 #, c-format msgid "WARNING: BitLocker volume size % does not match the underlying device size %" msgstr "УПОЗОРЕЊЕ: Величина волумена закључавача бита % не одговара величини садржаног уређаја %" -#: lib/bitlk/bitlk.c:1602 +#: lib/bitlk/bitlk.c:1613 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK IV." msgstr "Не могу да активирам уређај, „dm-crypt“-у кернела недостаје подршка за „BITLK IV“." -#: lib/bitlk/bitlk.c:1606 +#: lib/bitlk/bitlk.c:1617 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK Elephant diffuser." msgstr "Не могу да активирам уређај, „dm-crypt“-у кернела недостаје подршка за „BITLK Elephant“ дифузера." -#: lib/bitlk/bitlk.c:1610 +#: lib/bitlk/bitlk.c:1621 msgid "Cannot activate device, kernel dm-crypt is missing support for large sector size." msgstr "Не могу да активирам уређај, „dm-crypt“-у кернела недостаје подршка за велику величину сектора." -#: lib/bitlk/bitlk.c:1614 +#: lib/bitlk/bitlk.c:1625 msgid "Cannot activate device, kernel dm-zero module is missing." msgstr "Не могу да активирам уређај, недостаје „dm-zero“ модул кернела." -#: lib/fvault2/fvault2.c:530 +#: lib/fvault2/fvault2.c:532 #, c-format msgid "Could not read %u bytes of volume header." msgstr "Не могу да прочитам %u бајта заглавља волумена." -#: lib/fvault2/fvault2.c:542 +#: lib/fvault2/fvault2.c:544 #, c-format msgid "Unsupported FVAULT2 version %." msgstr "Неподржано FVAULT2 издање „%“." @@ -1486,23 +1486,23 @@ msgstr "Провера није успела на положају %." msgid "Hash area overflow." msgstr "Прекорачење области хеша." -#: lib/verity/verity_hash.c:372 +#: lib/verity/verity_hash.c:381 msgid "Verification of data area failed." msgstr "Провера области података није успела." -#: lib/verity/verity_hash.c:377 +#: lib/verity/verity_hash.c:386 msgid "Verification of root hash failed." msgstr "Провера хеша корена није успела." -#: lib/verity/verity_hash.c:383 +#: lib/verity/verity_hash.c:392 msgid "Input/output error while creating hash area." msgstr "Улазно/излазна грешка приликом стварања области хеша." -#: lib/verity/verity_hash.c:385 +#: lib/verity/verity_hash.c:394 msgid "Creation of hash area failed." msgstr "Стварање области хеша није успело." -#: lib/verity/verity_hash.c:420 +#: lib/verity/verity_hash.c:429 #, c-format msgid "WARNING: Kernel cannot activate device if data block size exceeds page size (%u)." msgstr "УПОЗОРЕЊЕ: Језгро не може да покрене уређајако величина блока података премашује величину странице (%u)." @@ -1557,19 +1557,19 @@ msgstr "Нисам успео да одредим величину за уређ msgid "Incompatible kernel dm-integrity metadata (version %u) detected on %s." msgstr "Недоследни „dm-integrity“ метаподаци кернела (издање %u) су откривени на „%s“." -#: lib/integrity/integrity.c:304 lib/integrity/integrity.c:488 +#: lib/integrity/integrity.c:308 lib/integrity/integrity.c:492 msgid "Kernel does not support dm-integrity mapping." msgstr "Кернел не подржава мапирање дм-целовитости." -#: lib/integrity/integrity.c:310 +#: lib/integrity/integrity.c:314 msgid "Kernel does not support dm-integrity fixed metadata alignment." msgstr "Кернел не подржава поравнање фиксних метаподатака дм-целовитости." -#: lib/integrity/integrity.c:319 +#: lib/integrity/integrity.c:323 msgid "Kernel refuses to activate insecure recalculate option (see legacy activation options to override)." msgstr "Кернел одбија да покрене небезбедну опцију поновног израчунавања (видите старе опције покретања да избегнете ово)." -#: lib/integrity/integrity.c:325 +#: lib/integrity/integrity.c:329 msgid "Kernel does not support dm-integrity inline mode." msgstr "Кернел не подржава унутарњи режим дм-целовитости." @@ -1718,7 +1718,7 @@ msgstr "Основни „dm-integrity“ уређај са неочекиван msgid "Reencryption in-progress. Cannot deactivate device." msgstr "Поновно шифровање је у току. Не могу да деактивирам уређај." -#: lib/luks2/luks2_json_metadata.c:2897 lib/luks2/luks2_reencrypt.c:4283 +#: lib/luks2/luks2_json_metadata.c:2897 lib/luks2/luks2_reencrypt.c:4286 #, c-format msgid "Failed to replace suspended device %s with dm-error target." msgstr "Нисам успео да заменим обустављени уређај „%s“ са метом „dm-error“." @@ -1797,7 +1797,7 @@ msgstr "Не могу да проверим стање уређаја са уј msgid "Unable to convert header with LUKSMETA additional metadata." msgstr "Не могу да претворим заглавље са „LUKSMETA“ додатним метаподацима." -#: lib/luks2/luks2_luks1_convert.c:590 lib/luks2/luks2_reencrypt.c:3890 +#: lib/luks2/luks2_luks1_convert.c:590 lib/luks2/luks2_reencrypt.c:3893 #, c-format msgid "Unable to use cipher specification %s-%s for LUKS2." msgstr "Не могу да користим спецификацију шифрера „%s-%s“ за ЛУКС2." @@ -1881,7 +1881,7 @@ msgstr "Величина уређаја мора бити производ пр #: lib/luks2/luks2_reencrypt.c:1410 lib/luks2/luks2_reencrypt.c:1596 #: lib/luks2/luks2_reencrypt.c:1679 lib/luks2/luks2_reencrypt.c:1721 -#: lib/luks2/luks2_reencrypt.c:4077 +#: lib/luks2/luks2_reencrypt.c:4080 msgid "Failed to initialize old segment storage wrapper." msgstr "Нисам успео да покренем старог увијача смештаја подеока." @@ -1889,7 +1889,7 @@ msgstr "Нисам успео да покренем старог увијача msgid "Failed to initialize new segment storage wrapper." msgstr "Нисам успео да покренем новог увијача смештаја подеока." -#: lib/luks2/luks2_reencrypt.c:1550 lib/luks2/luks2_reencrypt.c:4089 +#: lib/luks2/luks2_reencrypt.c:1550 lib/luks2/luks2_reencrypt.c:4092 msgid "Failed to initialize hotzone protection." msgstr "Нисам успео да покренем заштиту вруће зоне." @@ -1897,7 +1897,7 @@ msgstr "Нисам успео да покренем заштиту вруће з msgid "Failed to read checksums for current hotzone." msgstr "Нисам успео да прочитам суму провере за текућу врућу зону." -#: lib/luks2/luks2_reencrypt.c:1630 lib/luks2/luks2_reencrypt.c:4104 +#: lib/luks2/luks2_reencrypt.c:1630 lib/luks2/luks2_reencrypt.c:4107 #, c-format msgid "Failed to read hotzone area starting at %." msgstr "Нисам успео да прочитам област вруће зоне са почетком на %." @@ -1986,8 +1986,8 @@ msgstr "Величина умањених података је већа од с msgid "Data device is not aligned to encryption sector size (% bytes)." msgstr "Уређај података није поравнат на величину одељка шифровања (% бајта)." -#: lib/luks2/luks2_reencrypt.c:3125 lib/luks2/luks2_reencrypt.c:3640 -#: lib/luks2/luks2_reencrypt.c:3661 +#: lib/luks2/luks2_reencrypt.c:3125 lib/luks2/luks2_reencrypt.c:3643 +#: lib/luks2/luks2_reencrypt.c:3664 #, c-format msgid "Failed to open %s in exclusive mode (already mapped or mounted)." msgstr "Нисам успео да отворим „%s“ у искључивом режиму (већ мапиран или прикачен)." @@ -1996,123 +1996,123 @@ msgstr "Нисам успео да отворим „%s“ у искључиво msgid "Device not marked for LUKS2 reencryption." msgstr "Уређај није означен за ЛУКС2 поновно шифровање." -#: lib/luks2/luks2_reencrypt.c:3349 lib/luks2/luks2_reencrypt.c:4400 +#: lib/luks2/luks2_reencrypt.c:3349 lib/luks2/luks2_reencrypt.c:4403 msgid "Failed to load LUKS2 reencryption context." msgstr "Нисам успео да учитам контекст ЛУКС2 поновног шифровања." -#: lib/luks2/luks2_reencrypt.c:3441 lib/luks2/luks2_reencrypt.c:3781 +#: lib/luks2/luks2_reencrypt.c:3444 lib/luks2/luks2_reencrypt.c:3784 msgid "Device is not in reencryption." msgstr "Уређај није у поновном шифровању." -#: lib/luks2/luks2_reencrypt.c:3448 lib/luks2/luks2_reencrypt.c:3788 +#: lib/luks2/luks2_reencrypt.c:3451 lib/luks2/luks2_reencrypt.c:3791 msgid "Reencryption process is already running." msgstr "Процес поновног шифровања је већ покренут." -#: lib/luks2/luks2_reencrypt.c:3450 lib/luks2/luks2_reencrypt.c:3790 +#: lib/luks2/luks2_reencrypt.c:3453 lib/luks2/luks2_reencrypt.c:3793 msgid "Failed to acquire reencryption lock." msgstr "Нисам успео да остварим закључавање поновног шифровања." -#: lib/luks2/luks2_reencrypt.c:3468 +#: lib/luks2/luks2_reencrypt.c:3471 msgid "Cannot proceed with reencryption. Run reencryption recovery first." msgstr "Не могу да наставим са поновним шифровањем. Прво покрените опоравак поновног шифровања." -#: lib/luks2/luks2_reencrypt.c:3604 +#: lib/luks2/luks2_reencrypt.c:3607 msgid "Active device size and requested reencryption size don't match." msgstr "Активна величина уређаја и величина затраженог поновног шифровања не одговарају." -#: lib/luks2/luks2_reencrypt.c:3618 +#: lib/luks2/luks2_reencrypt.c:3621 msgid "Illegal device size requested in reencryption parameters." msgstr "Неисправна величина уређаја је затражена у параметрима поновног шифровања." -#: lib/luks2/luks2_reencrypt.c:3720 +#: lib/luks2/luks2_reencrypt.c:3723 msgid "Reencryption in-progress. Cannot perform recovery." msgstr "Поновно шифровање је у току. Не могу да обавим опоравак." -#: lib/luks2/luks2_reencrypt.c:3741 +#: lib/luks2/luks2_reencrypt.c:3744 msgid "LUKS2 reencryption recovery failed." msgstr "Опоравак ЛУКС2 поновног шифровања није успело." -#: lib/luks2/luks2_reencrypt.c:3874 lib/luks2/luks2_reencrypt.c:4353 +#: lib/luks2/luks2_reencrypt.c:3877 lib/luks2/luks2_reencrypt.c:4356 msgid "Failed to initialize reencryption device stack." msgstr "Нисам успео да покренем поновно шифровање спремника уређаја." -#: lib/luks2/luks2_reencrypt.c:3907 +#: lib/luks2/luks2_reencrypt.c:3910 msgid "LUKS2 reencryption already initialized in metadata." msgstr "ЛУКС2 поновно шифровање је већ покренуто у метаподацима." -#: lib/luks2/luks2_reencrypt.c:3915 +#: lib/luks2/luks2_reencrypt.c:3918 msgid "Failed to initialize LUKS2 reencryption in metadata." msgstr "Нисам успео да покренем ЛУКС2 поновно шифровање у метаподацима." -#: lib/luks2/luks2_reencrypt.c:3968 lib/luks2/luks2_reencrypt.c:4000 -#: lib/luks2/luks2_reencrypt.c:4030 +#: lib/luks2/luks2_reencrypt.c:3971 lib/luks2/luks2_reencrypt.c:4003 +#: lib/luks2/luks2_reencrypt.c:4033 msgid "Reencryption is not supported for DAX (persistent memory) devices." msgstr "Поновно шифровање није подржано за DAX (сталне меморије) уређаје." -#: lib/luks2/luks2_reencrypt.c:4059 +#: lib/luks2/luks2_reencrypt.c:4062 msgid "Failed to set device segments for next reencryption hotzone." msgstr "Нисам успео да поставим подеоке уређаја за следећу врућу зону поновног шифровања." -#: lib/luks2/luks2_reencrypt.c:4112 +#: lib/luks2/luks2_reencrypt.c:4115 msgid "Failed to write reencryption resilience metadata." msgstr "Нисам успео да запишем метаподатаке гипкости поновног шифровања." -#: lib/luks2/luks2_reencrypt.c:4119 +#: lib/luks2/luks2_reencrypt.c:4122 msgid "Decryption failed." msgstr "Дешифровање није успело." -#: lib/luks2/luks2_reencrypt.c:4124 +#: lib/luks2/luks2_reencrypt.c:4127 #, c-format msgid "Failed to write hotzone area starting at %." msgstr "Нисам успео да запишем област вруће зоне са почетком на %." -#: lib/luks2/luks2_reencrypt.c:4129 +#: lib/luks2/luks2_reencrypt.c:4132 msgid "Failed to sync data." msgstr "Нисам успео да усагласим податке." -#: lib/luks2/luks2_reencrypt.c:4137 +#: lib/luks2/luks2_reencrypt.c:4140 msgid "Failed to update metadata after current reencryption hotzone completed." msgstr "Нисам успео да освежим метаподатке након тренутно завршеног поновног шифровања вруће зоне." -#: lib/luks2/luks2_reencrypt.c:4226 +#: lib/luks2/luks2_reencrypt.c:4229 msgid "Failed to write LUKS2 metadata." msgstr "Нисам успео да запишем ЛУКС2 метаподатке." -#: lib/luks2/luks2_reencrypt.c:4249 +#: lib/luks2/luks2_reencrypt.c:4252 msgid "Failed to wipe unused data device area." msgstr "Нисам успео да обришем област уређаја података." -#: lib/luks2/luks2_reencrypt.c:4255 +#: lib/luks2/luks2_reencrypt.c:4258 #, c-format msgid "Failed to remove unused (unbound) keyslot %d." msgstr "Нисам успео да уклоним некоришћени (несвезани) утор кључа %d." -#: lib/luks2/luks2_reencrypt.c:4265 +#: lib/luks2/luks2_reencrypt.c:4268 msgid "Failed to remove reencryption keyslot." msgstr "Нисам успео да уклоним утор кључа поновног шифровања." -#: lib/luks2/luks2_reencrypt.c:4275 +#: lib/luks2/luks2_reencrypt.c:4278 #, c-format msgid "Fatal error while reencrypting chunk starting at %, % sectors long." msgstr "Кобна грешка приликом поновног шифровања комада који почиње на %, % подеока дуг." -#: lib/luks2/luks2_reencrypt.c:4279 +#: lib/luks2/luks2_reencrypt.c:4282 msgid "Online reencryption failed." msgstr "Поновно шифровање на мрежи није успело." -#: lib/luks2/luks2_reencrypt.c:4284 +#: lib/luks2/luks2_reencrypt.c:4287 msgid "Do not resume the device unless replaced with error target manually." msgstr "Не наставља са уређајем осим ако није ручно замењен метом грешке." -#: lib/luks2/luks2_reencrypt.c:4336 +#: lib/luks2/luks2_reencrypt.c:4339 msgid "Cannot proceed with reencryption. Unexpected reencryption status." msgstr "Не могу да наставим са поновним шифровањем. Неочекивано стање поновног шифровања." -#: lib/luks2/luks2_reencrypt.c:4342 +#: lib/luks2/luks2_reencrypt.c:4345 msgid "Missing or invalid reencrypt context." msgstr "Недостаје или неисправан контекст поновног шифровања." -#: lib/luks2/luks2_reencrypt.c:4376 lib/luks2/luks2_reencrypt.c:4413 +#: lib/luks2/luks2_reencrypt.c:4379 lib/luks2/luks2_reencrypt.c:4416 msgid "Failed to update reencryption context." msgstr "Нисам успео да освежим контекст поновног шифровања." @@ -2148,7 +2148,7 @@ msgstr "Параметри шифровања утора кључа се мог msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encryption." msgstr "Параметри шифровања утора кључа нису сагласни са шифровањем LUKS2 утора кључа." -#: src/cryptsetup.c:150 src/cryptsetup.c:1180 src/cryptsetup.c:1547 +#: src/cryptsetup.c:150 src/cryptsetup.c:1178 src/cryptsetup.c:1545 #: src/utils_reencrypt.c:1887 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." @@ -2176,7 +2176,7 @@ msgstr "УПОЗОРЕЊЕ: Параметар „--hash“ је занемар msgid "WARNING: The --keyfile-size option is being ignored, the read size is the same as the encryption key size.\n" msgstr "УПОЗОРЕЊЕ: Опција „--keyfile-size“ је занемарена, величина читања је иста као величина кључа шифровања.\n" -#: src/cryptsetup.c:226 src/cryptsetup.c:1377 src/cryptsetup.c:1600 +#: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 #: src/integritysetup.c:188 src/utils_reencrypt.c:2138 #, c-format msgid "Blkid scan failed for %s." @@ -2187,9 +2187,9 @@ msgstr "Скенирање ид-а блока није успело за „%s msgid "Detected device signature(s) on %s. Proceeding further may damage existing data." msgstr "Открих потпис(е) уређаја на „%s“. Даље настављање може оштетити постојеће податке." -#: src/cryptsetup.c:238 src/cryptsetup.c:1263 src/cryptsetup.c:1311 -#: src/cryptsetup.c:1384 src/cryptsetup.c:1524 src/cryptsetup.c:1612 -#: src/cryptsetup.c:2497 src/cryptsetup.c:2926 src/integritysetup.c:178 +#: src/cryptsetup.c:238 src/cryptsetup.c:1261 src/cryptsetup.c:1309 +#: src/cryptsetup.c:1382 src/cryptsetup.c:1522 src/cryptsetup.c:1610 +#: src/cryptsetup.c:2495 src/cryptsetup.c:2924 src/integritysetup.c:178 #: src/utils_reencrypt.c:111 src/utils_reencrypt.c:457 #: src/utils_reencrypt.c:925 msgid "Operation aborted.\n" @@ -2238,7 +2238,7 @@ msgstr "" "који омогућава приступ шифрованој партицији без лозинке.\n" "Овај избачај треба увек бити смештен шифрован на безбедном месту." -#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2522 +#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2520 msgid "" "The header dump with volume key is sensitive information\n" "that allows access to encrypted partition without a passphrase.\n" @@ -2257,14 +2257,14 @@ msgstr "Уређај „%s“ није исправан FVAULT2 уређај." msgid "Cannot determine volume key size for FVAULT2, please use --key-size option." msgstr "Не могу да одредим величину кључа волумена за FVAULT2, користите „--key-size“ опцију." -#: src/cryptsetup.c:848 src/veritysetup.c:317 src/integritysetup.c:410 +#: src/cryptsetup.c:848 src/veritysetup.c:317 src/integritysetup.c:416 #, c-format msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "Уређај „%s“ је још увек активан и заказан за одложено уклањање.\n" -#: src/cryptsetup.c:881 src/cryptsetup.c:1810 src/cryptsetup.c:2084 -#: src/cryptsetup.c:2231 src/cryptsetup.c:2650 src/cryptsetup.c:2731 -#: src/cryptsetup.c:3264 +#: src/cryptsetup.c:881 src/cryptsetup.c:1808 src/cryptsetup.c:2082 +#: src/cryptsetup.c:2229 src/cryptsetup.c:2648 src/cryptsetup.c:2729 +#: src/cryptsetup.c:3262 #, c-format msgid "Failed to set external tokens path %s." msgstr "Нисам успео да поставим спољну путању скупина „%s“." @@ -2273,59 +2273,59 @@ msgstr "Нисам успео да поставим спољну путању с msgid "Resize of active device requires volume key in keyring but --disable-keyring option is set." msgstr "Сразмеравање активног уређаја захтева кључ волумена у привеску кључева али је постављена „--disable-keyring“ опција." -#: src/cryptsetup.c:1059 +#: src/cryptsetup.c:1057 msgid "Benchmark interrupted." msgstr "Оцењивање је прекинуто." -#: src/cryptsetup.c:1080 +#: src/cryptsetup.c:1078 #, c-format msgid "PBKDF2-%-9s N/A\n" msgstr "„PBKDF2-%-9s“ Н/Д\n" -#: src/cryptsetup.c:1082 +#: src/cryptsetup.c:1080 #, c-format msgid "PBKDF2-%-9s %7u iterations per second for %zu-bit key\n" msgstr "„PBKDF2-%-9s“ %7u понављања у секунди за %zu-битни кључ\n" -#: src/cryptsetup.c:1096 +#: src/cryptsetup.c:1094 #, c-format msgid "%-10s N/A\n" msgstr "%-10s Н/Д\n" -#: src/cryptsetup.c:1098 +#: src/cryptsetup.c:1096 #, c-format msgid "%-10s %4u iterations, %5u memory, %1u parallel threads (CPUs) for %zu-bit key (requested %u ms time)\n" msgstr "%-10s %4u понављања, %5u меморије, %1u паралелних нити (процесора) за %zu-битни кључ (захтева се %u ms време)\n" -#: src/cryptsetup.c:1122 +#: src/cryptsetup.c:1120 msgid "Result of benchmark is not reliable." msgstr "Резултат оцењивања није поуздан." -#: src/cryptsetup.c:1172 +#: src/cryptsetup.c:1170 msgid "# Tests are approximate using memory only (no storage IO).\n" msgstr "# Пробе су приближне користећи само меморију (без УИ смештаја).\n" #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1197 +#: src/cryptsetup.c:1195 #, c-format msgid "#%*s Algorithm | Key | Encryption | Decryption\n" msgstr "#%*s Алгоритам | Кључ | Шифровање | Дешифровање\n" -#: src/cryptsetup.c:1205 +#: src/cryptsetup.c:1203 #, c-format msgid "Cipher %s (with %i bits key) is not available." msgstr "Шифрер „%s“ (са %i битним кључем) није доступан." #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1224 +#: src/cryptsetup.c:1222 msgid "# Algorithm | Key | Encryption | Decryption\n" msgstr "# Алгоритам | Кључ | Шифровање | Дешифровање\n" -#: src/cryptsetup.c:1235 +#: src/cryptsetup.c:1233 msgid "N/A" msgstr "Недоступно" -#: src/cryptsetup.c:1260 +#: src/cryptsetup.c:1258 msgid "" "Unprotected LUKS2 reencryption metadata detected. Please verify the reencryption operation is desirable (see luksDump output)\n" "and continue (upgrade metadata) only if you acknowledge the operation as genuine." @@ -2333,27 +2333,27 @@ msgstr "" "Откривени су незаштићени ЛУКС2 метаподаци поновног шифровања. Проверите да ли је радња поновног шифровања пожељна (видите „luksDump“ излаз)\n" "и наставите (са надоградњом метаподатака само ако знате да је радња безопасна." -#: src/cryptsetup.c:1266 +#: src/cryptsetup.c:1264 msgid "Enter passphrase to protect and upgrade reencryption metadata: " msgstr "Унесите пропусну реч да заштитите и надоградите метаподатке поновног шифровања: " -#: src/cryptsetup.c:1310 +#: src/cryptsetup.c:1308 msgid "Really proceed with LUKS2 reencryption recovery?" msgstr "Да наставим са опоравком ЛУКС2 поновног шифровања?" -#: src/cryptsetup.c:1319 +#: src/cryptsetup.c:1317 msgid "Enter passphrase to verify reencryption metadata digest: " msgstr "Унесите пропусну реч да проверите упит метаподатака поновног шифровања: " -#: src/cryptsetup.c:1321 +#: src/cryptsetup.c:1319 msgid "Enter passphrase for reencryption recovery: " msgstr "Унесите пропусну реч за опоравак поновног шифровања: " -#: src/cryptsetup.c:1383 +#: src/cryptsetup.c:1381 msgid "Really try to repair LUKS device header?" msgstr "Стварно да покушам да поправим заглавље ЛУКС уређаја?" -#: src/cryptsetup.c:1411 src/integritysetup.c:76 src/integritysetup.c:244 +#: src/cryptsetup.c:1409 src/integritysetup.c:76 src/integritysetup.c:244 msgid "" "\n" "Wipe interrupted." @@ -2361,7 +2361,7 @@ msgstr "" "\n" "Брисање је прекинуто." -#: src/cryptsetup.c:1416 src/integritysetup.c:81 src/integritysetup.c:283 +#: src/cryptsetup.c:1414 src/integritysetup.c:81 src/integritysetup.c:289 msgid "" "Wiping device to initialize integrity checksum.\n" "You can interrupt this by pressing CTRL+c (rest of not wiped device will contain invalid checksum).\n" @@ -2369,167 +2369,167 @@ msgstr "" "Бришем уређај да бих започео суму провере целовитости.\n" "Можете прекинути ово притиском на „CTRL+c“ (остатак необрисаног уређаја садржаће неисправну суму провере).\n" -#: src/cryptsetup.c:1438 src/integritysetup.c:103 +#: src/cryptsetup.c:1436 src/integritysetup.c:103 #, c-format msgid "Cannot deactivate temporary device %s." msgstr "Не могу да деактивирам привремени уређај „%s“." -#: src/cryptsetup.c:1486 +#: src/cryptsetup.c:1484 msgid "OPAL hw-only encryption does not support --cipher and --key-size, options ignored." msgstr "OPAL hw-only шифровање не подржава „--cipher“ и „--key-size“, опције су занемарене." -#: src/cryptsetup.c:1499 +#: src/cryptsetup.c:1497 msgid "Integrity option can be used only for LUKS2 format." msgstr "Опција целовитости се може користити само за ЛУКС2 запис." -#: src/cryptsetup.c:1504 src/cryptsetup.c:1584 +#: src/cryptsetup.c:1502 src/cryptsetup.c:1582 msgid "Unsupported LUKS2 metadata size options." msgstr "Неподржана опција величине ЛУКС2 метаподатака." -#: src/cryptsetup.c:1509 +#: src/cryptsetup.c:1507 msgid "OPAL is supported only for LUKS2 format." msgstr "OPAL је подржано само за LUKS2 запис." -#: src/cryptsetup.c:1514 +#: src/cryptsetup.c:1512 msgid "Inline hw tags are supported only for LUKS2 format." msgstr "Унутарње хардверске ознаке су подржане само за LUKS2 запис." -#: src/cryptsetup.c:1523 +#: src/cryptsetup.c:1521 msgid "Header file does not exist, do you want to create it?" msgstr "Датотека заглавља не постоји, да ли желите да је направите?" -#: src/cryptsetup.c:1531 +#: src/cryptsetup.c:1529 #, c-format msgid "Cannot create header file %s." msgstr "Не могу да направим датотеку заглавља „%s“." -#: src/cryptsetup.c:1557 src/integritysetup.c:126 src/integritysetup.c:141 -#: src/integritysetup.c:150 src/integritysetup.c:322 src/integritysetup.c:330 -#: src/integritysetup.c:340 +#: src/cryptsetup.c:1555 src/integritysetup.c:126 src/integritysetup.c:141 +#: src/integritysetup.c:150 src/integritysetup.c:328 src/integritysetup.c:336 +#: src/integritysetup.c:346 msgid "No known integrity specification pattern detected." msgstr "Није откривен познат образац одреднице целовитости." -#: src/cryptsetup.c:1559 +#: src/cryptsetup.c:1557 msgid "Cannot use specified integrity key size." msgstr "Не могу да користим наведену величину кључа целовитости." -#: src/cryptsetup.c:1577 +#: src/cryptsetup.c:1575 #, c-format msgid "Cannot use %s as on-disk header." msgstr "Не могу да користим „%s“ као заглавље на-диску." -#: src/cryptsetup.c:1606 src/integritysetup.c:172 +#: src/cryptsetup.c:1604 src/integritysetup.c:172 #, c-format msgid "This will overwrite data on %s irrevocably." msgstr "Ово ће неповратно да препише податке на „%s“." -#: src/cryptsetup.c:1643 +#: src/cryptsetup.c:1641 msgid "OPAL Admin password cannot be empty." msgstr "Лозинка OPAL админа не може бити празна." -#: src/cryptsetup.c:1657 src/cryptsetup.c:2101 src/cryptsetup.c:2244 -#: src/cryptsetup.c:2379 src/cryptsetup.c:2445 src/utils_reencrypt_luks1.c:428 +#: src/cryptsetup.c:1655 src/cryptsetup.c:2099 src/cryptsetup.c:2242 +#: src/cryptsetup.c:2377 src/cryptsetup.c:2443 src/utils_reencrypt_luks1.c:428 msgid "Failed to set pbkdf parameters." msgstr "Нисам успео да подесим „pbkdf“ параметре." -#: src/cryptsetup.c:1788 +#: src/cryptsetup.c:1786 msgid "Reduced data offset is allowed only for detached LUKS header." msgstr "Смањени померај података је допуштен само за откачена ЛУКС заглавља." -#: src/cryptsetup.c:1795 +#: src/cryptsetup.c:1793 #, c-format msgid "LUKS file container %s is too small for activation, there is no remaining space for data." msgstr "Садржалац ЛУКС датотеке „%s“ је премали за активирање, није преостао простор за податке." -#: src/cryptsetup.c:1837 src/cryptsetup.c:2250 src/utils_reencrypt.c:277 +#: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:277 #: src/utils_reencrypt.c:369 src/utils_reencrypt.c:1907 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "Не могу да одредим величину кључа за ЛУКС без утора кључа, користите „--key-size“ опцију." -#: src/cryptsetup.c:1856 src/utils_reencrypt.c:303 +#: src/cryptsetup.c:1854 src/utils_reencrypt.c:303 msgid "Device requires two volume keys." msgstr "Уређај захтева два кључа волумена." -#: src/cryptsetup.c:1891 +#: src/cryptsetup.c:1889 msgid "Some specified activation parameters were ignored with OPAL hw-only encryption." msgstr "Неки наведени параметри активирања су занемарени са „OPAL hw-only“ шифровањем." -#: src/cryptsetup.c:1896 +#: src/cryptsetup.c:1894 msgid "Device activated but cannot make flags persistent." msgstr "Уређај је активиран али не могу да учиним заставице трајним." -#: src/cryptsetup.c:1976 src/cryptsetup.c:2044 +#: src/cryptsetup.c:1974 src/cryptsetup.c:2042 #, c-format msgid "Keyslot %d is selected for deletion." msgstr "Утор кључа „%d“ је изабран за брисање." -#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 +#: src/cryptsetup.c:1986 src/cryptsetup.c:2046 msgid "This is the last keyslot. Device will become unusable after purging this key." msgstr "Ово је последњи утор кључа. Уређај ће постати неупотребљив након чишћења овог кључа." -#: src/cryptsetup.c:1989 +#: src/cryptsetup.c:1987 msgid "Enter any remaining passphrase: " msgstr "Унесите неку преосталу пропусну реч: " -#: src/cryptsetup.c:1990 src/cryptsetup.c:2050 +#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 msgid "Operation aborted, the keyslot was NOT wiped.\n" msgstr "Радња је прекинута, утор кључа НИЈЕ обрисан.\n" -#: src/cryptsetup.c:2026 +#: src/cryptsetup.c:2024 msgid "Enter passphrase to be deleted: " msgstr "Унесите пропусну реч за брисање: " -#: src/cryptsetup.c:2076 src/cryptsetup.c:2428 src/cryptsetup.c:3088 -#: src/cryptsetup.c:3255 +#: src/cryptsetup.c:2074 src/cryptsetup.c:2426 src/cryptsetup.c:3086 +#: src/cryptsetup.c:3253 #, c-format msgid "Device %s is not a valid LUKS2 device." msgstr "Уређај „%s“ није исправан ЛУКС2 уређај." -#: src/cryptsetup.c:2115 src/cryptsetup.c:2314 +#: src/cryptsetup.c:2113 src/cryptsetup.c:2312 msgid "Enter new passphrase for key slot: " msgstr "Унесите нову пропусну реч за утор кључа: " -#: src/cryptsetup.c:2149 src/utils_luks.c:342 +#: src/cryptsetup.c:2147 src/utils_luks.c:342 #, c-format msgid "Enter token PIN: " msgstr "Унесите ПИН скупине: " -#: src/cryptsetup.c:2151 src/utils_luks.c:344 +#: src/cryptsetup.c:2149 src/utils_luks.c:344 #, c-format msgid "Enter token %d PIN: " msgstr "Унесите %d ПИН скупине: " -#: src/cryptsetup.c:2210 +#: src/cryptsetup.c:2208 msgid "WARNING: The --key-slot parameter is used for new keyslot number.\n" msgstr "УПОЗОРЕЊЕ: Параметар „--key-slot“ се користи за нови број утора кључа.\n" -#: src/cryptsetup.c:2287 src/utils_reencrypt_luks1.c:1094 +#: src/cryptsetup.c:2285 src/utils_reencrypt_luks1.c:1094 #, c-format msgid "Enter any existing passphrase: " msgstr "Унесите неку постојећу пропусну реч: " -#: src/cryptsetup.c:2383 +#: src/cryptsetup.c:2381 msgid "Enter passphrase to be changed: " msgstr "Унесите пропусну реч за мењање: " -#: src/cryptsetup.c:2399 src/utils_reencrypt_luks1.c:1080 +#: src/cryptsetup.c:2397 src/utils_reencrypt_luks1.c:1080 msgid "Enter new passphrase: " msgstr "Унесите нову пропусну реч: " -#: src/cryptsetup.c:2449 +#: src/cryptsetup.c:2447 msgid "Enter passphrase for keyslot to be converted: " msgstr "Унесите пропусну реч за утор кључа за претварање: " -#: src/cryptsetup.c:2473 +#: src/cryptsetup.c:2471 msgid "Only one device argument for isLuks operation is supported." msgstr "Подржан је само један аргумент уређаја за радњу „isLuks“." -#: src/cryptsetup.c:2578 +#: src/cryptsetup.c:2576 #, c-format msgid "Keyslot %d does not contain unbound key." msgstr "Утор кључа %d не садржи несвезани кључ." -#: src/cryptsetup.c:2583 +#: src/cryptsetup.c:2581 msgid "" "The header dump with unbound key is sensitive information.\n" "This dump should be stored encrypted in a safe place." @@ -2537,52 +2537,52 @@ msgstr "" "Избачај заглавља са кључем волумена је осетљив податак\n" "Овај избачај треба увек бити смештен шифрован на безбедном месту." -#: src/cryptsetup.c:2678 src/cryptsetup.c:2714 +#: src/cryptsetup.c:2676 src/cryptsetup.c:2712 #, c-format msgid "%s is not active %s device name." msgstr "„%s“ није назив активног „%s“ уређаја." -#: src/cryptsetup.c:2709 +#: src/cryptsetup.c:2707 #, c-format msgid "%s is not active LUKS device name or header is missing." msgstr "„%s“ није назив активног ЛУКС уређаја или недостаје заглавље." -#: src/cryptsetup.c:2786 src/cryptsetup.c:2805 +#: src/cryptsetup.c:2784 src/cryptsetup.c:2803 msgid "Option --header-backup-file is required." msgstr "Захтевана је опција „--header-backup-file“." -#: src/cryptsetup.c:2836 +#: src/cryptsetup.c:2834 #, c-format msgid "%s is not cryptsetup managed device." msgstr "„%s“ није уређај управљан криптоподешавањем." -#: src/cryptsetup.c:2847 +#: src/cryptsetup.c:2845 #, c-format msgid "Refresh is not supported for device type %s" msgstr "Освежавање није подржано за врсту уређаја „%s“" -#: src/cryptsetup.c:2897 +#: src/cryptsetup.c:2895 #, c-format msgid "Unrecognized metadata device type %s." msgstr "Непозната врста уређаја метаподатака „%s“." -#: src/cryptsetup.c:2899 +#: src/cryptsetup.c:2897 msgid "Command requires device and mapped name as arguments." msgstr "Наредба захтева уређај и мапирани назив као аргумент." -#: src/cryptsetup.c:2917 +#: src/cryptsetup.c:2915 msgid "Enter OPAL PSID: " msgstr "Унесите OPAL ПСИД: " -#: src/cryptsetup.c:2917 +#: src/cryptsetup.c:2915 msgid "Enter OPAL Admin password: " msgstr "Унесите лозинку OPAL админа: " -#: src/cryptsetup.c:2925 +#: src/cryptsetup.c:2923 msgid "WARNING: WHOLE disk will be factory reset and all data will be lost! Continue?" msgstr "УПОЗОРЕЊЕ: ЧИТАВ диск биће враћен на фабричка подешавања и сви подаци биће изгубљени! Да наставим?" -#: src/cryptsetup.c:2968 +#: src/cryptsetup.c:2966 #, c-format msgid "" "This operation will erase all keyslots on device %s.\n" @@ -2591,363 +2591,363 @@ msgstr "" "Ова радња ће обрисати све уторе кључева на уређају „%s“.\n" "Уређај ће постати неупотребљив након ове радње." -#: src/cryptsetup.c:2975 +#: src/cryptsetup.c:2973 msgid "Operation aborted, keyslots were NOT wiped.\n" msgstr "Радња је прекинута, утори кључева НИСУ обрисани.\n" -#: src/cryptsetup.c:3014 +#: src/cryptsetup.c:3012 msgid "Invalid LUKS type, only luks1 and luks2 are supported." msgstr "Неисправна ЛУКС врста, само „luks1“ и „luks2“ су подржане." -#: src/cryptsetup.c:3030 +#: src/cryptsetup.c:3028 #, c-format msgid "Device is already %s type." msgstr "Уређај је већ „%s“ врсте." -#: src/cryptsetup.c:3037 +#: src/cryptsetup.c:3035 #, c-format msgid "This operation will convert %s to %s format.\n" msgstr "Ова радња ће претворити „%s“ у „%s“ запис.\n" -#: src/cryptsetup.c:3040 +#: src/cryptsetup.c:3038 msgid "Operation aborted, device was NOT converted.\n" msgstr "Радња је прекинута, уређај НИЈЕ претворен.\n" -#: src/cryptsetup.c:3080 +#: src/cryptsetup.c:3078 msgid "Option --priority, --label or --subsystem is missing." msgstr "Недостаје опција „--priority“, „--label“ или „--subsystem“." -#: src/cryptsetup.c:3114 src/cryptsetup.c:3154 src/cryptsetup.c:3174 +#: src/cryptsetup.c:3112 src/cryptsetup.c:3152 src/cryptsetup.c:3172 #, c-format msgid "Token %d is invalid." msgstr "Скупина „%d“ није исправна." -#: src/cryptsetup.c:3117 src/cryptsetup.c:3177 +#: src/cryptsetup.c:3115 src/cryptsetup.c:3175 #, c-format msgid "Token %d in use." msgstr "Скупина „%d“ је у употреби." -#: src/cryptsetup.c:3129 +#: src/cryptsetup.c:3127 #, c-format msgid "Failed to add luks2-keyring token %d." msgstr "Нисам успео да додам „luks2-keyring“ скупину „%d“." -#: src/cryptsetup.c:3140 src/cryptsetup.c:3203 +#: src/cryptsetup.c:3138 src/cryptsetup.c:3201 #, c-format msgid "Failed to assign token %d to keyslot %d." msgstr "Нисам успео да доделим скупину „%d“ утору кључа %d." -#: src/cryptsetup.c:3157 +#: src/cryptsetup.c:3155 #, c-format msgid "Token %d is not in use." msgstr "Скупина „%d“ није у употреби." -#: src/cryptsetup.c:3194 +#: src/cryptsetup.c:3192 msgid "Failed to import token from file." msgstr "Нисам успео да увезем скупину из датотеке." -#: src/cryptsetup.c:3219 +#: src/cryptsetup.c:3217 #, c-format msgid "Failed to get token %d for export." msgstr "Нисам успео да добавим скупину „%d“ за извоз." -#: src/cryptsetup.c:3232 +#: src/cryptsetup.c:3230 #, c-format msgid "Token %d is not assigned to keyslot %d." msgstr "Скупина „%d“ није додељена утору кључа %d." -#: src/cryptsetup.c:3234 src/cryptsetup.c:3241 +#: src/cryptsetup.c:3232 src/cryptsetup.c:3239 #, c-format msgid "Failed to unassign token %d from keyslot %d." msgstr "Нисам успео да поништим доделу скупине „%d“ из утора кључа %d." -#: src/cryptsetup.c:3300 +#: src/cryptsetup.c:3298 msgid "Option --tcrypt-hidden, --tcrypt-system or --tcrypt-backup is supported only for TCRYPT device." msgstr "Опција „--tcrypt-hidden“, „--tcrypt-system“ или „--tcrypt-backup“ је подржана само за ТКРИПТ уређај." -#: src/cryptsetup.c:3303 +#: src/cryptsetup.c:3301 msgid "Option --veracrypt or --disable-veracrypt is supported only for TCRYPT device type." msgstr "Опција „--veracrypt“ или „--disable-veracrypt“ је подржана само за ТКРИПТ врсту уређаја." -#: src/cryptsetup.c:3306 +#: src/cryptsetup.c:3304 msgid "Option --veracrypt-pim is supported only for VeraCrypt compatible devices." msgstr "Опција „--veracrypt-pim“ је подржана само за „VeraCrypt“ сагласне уређаје." -#: src/cryptsetup.c:3310 +#: src/cryptsetup.c:3308 msgid "Option --veracrypt-query-pim is supported only for VeraCrypt compatible devices." msgstr "Опција „--veracrypt-query-pim“ је подржана само за „VeraCrypt“ сагласне уређаје." -#: src/cryptsetup.c:3312 +#: src/cryptsetup.c:3310 msgid "The options --veracrypt-pim and --veracrypt-query-pim are mutually exclusive." msgstr "Опције „--veracrypt-pim“ и „--veracrypt-query-pim“ се узајамно искључују." -#: src/cryptsetup.c:3321 +#: src/cryptsetup.c:3319 msgid "Option --persistent is not allowed with --test-passphrase." msgstr "Опција „--persistent“ није допуштена са опцијом „--test-passphrase“." -#: src/cryptsetup.c:3324 +#: src/cryptsetup.c:3322 msgid "Options --refresh and --test-passphrase are mutually exclusive." msgstr "Опције „--refresh“ и „--test-passphrase“ се узајамно искључују." -#: src/cryptsetup.c:3327 +#: src/cryptsetup.c:3325 msgid "Option --shared is allowed only for open of plain device." msgstr "Опција „--shared“ је допуштена само за отварање обичног уређаја." -#: src/cryptsetup.c:3330 +#: src/cryptsetup.c:3328 msgid "Option --skip is supported only for open of plain and loopaes devices." msgstr "Опција „--skip“ је подржана само за отварање обичних и упетљаних уређаја." -#: src/cryptsetup.c:3333 +#: src/cryptsetup.c:3331 msgid "Option --offset with open action is only supported for plain and loopaes devices." msgstr "Опција „--offset“ са отвореном радњом је подржана само за обичне и упетљане уређаје." -#: src/cryptsetup.c:3336 +#: src/cryptsetup.c:3334 msgid "Option --tcrypt-hidden cannot be combined with --allow-discards." msgstr "Опција „--tcrypt-hidden“ не може бити обједињена са „--allow-discards“." -#: src/cryptsetup.c:3340 +#: src/cryptsetup.c:3338 msgid "Sector size option with open action is supported only for plain devices." msgstr "Опција величине одељка са отвореном радњом је подржана само за обичне уређаје." -#: src/cryptsetup.c:3344 +#: src/cryptsetup.c:3342 msgid "Large IV sectors option is supported only for opening plain type device with sector size larger than 512 bytes." msgstr "Опција великих IV одељака је подржана само за отварање обичних уређаја са величином одељка већом од 512 бајта." -#: src/cryptsetup.c:3349 +#: src/cryptsetup.c:3347 msgid "Option --test-passphrase is allowed only for open of LUKS, TCRYPT, BITLK and FVAULT2 devices." msgstr "Опција „--test-passphrase“ је допуштена само за отварање LUKS, TCRYPT, BITLK и FVAULT2 уређаја." -#: src/cryptsetup.c:3352 src/cryptsetup.c:3382 +#: src/cryptsetup.c:3350 src/cryptsetup.c:3380 msgid "Options --device-size and --size cannot be combined." msgstr "Опције „--device-size“ и „--size“ се не могу комбиновати." -#: src/cryptsetup.c:3355 +#: src/cryptsetup.c:3353 msgid "Option --unbound is allowed only for open of luks device." msgstr "Опција „--unbound“ је допуштена само за отварање лукс уређаја." -#: src/cryptsetup.c:3358 +#: src/cryptsetup.c:3356 msgid "Option --unbound cannot be used without --test-passphrase." msgstr "Опција „--unbound“ се не може користити без „--test-passphrase“." -#: src/cryptsetup.c:3362 +#: src/cryptsetup.c:3360 msgid "Option --volume-key-keyring cannot be combined with --hash or --volume-key-file." msgstr "Опција „--volume-key-keyring“ не може бити обједињена са „--hash“ или „--volume-key-file“." -#: src/cryptsetup.c:3365 +#: src/cryptsetup.c:3363 msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "Обе „--volume-key-file“ опције се морају упарити са одговарајућим „--key-size“ опцијама." -#: src/cryptsetup.c:3374 src/veritysetup.c:673 src/integritysetup.c:784 +#: src/cryptsetup.c:3372 src/veritysetup.c:673 src/integritysetup.c:787 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "Опције „--cancel-deferred“ и „--deferred“ се не могу користити у исто време." -#: src/cryptsetup.c:3390 +#: src/cryptsetup.c:3388 msgid "Option --active-name can be set only for LUKS2 device." msgstr "Опција „--active-name“ се може поставити само за ЛУКС2 уређај." -#: src/cryptsetup.c:3393 +#: src/cryptsetup.c:3391 msgid "Options --active-name and --force-offline-reencrypt cannot be combined." msgstr "Опције „--active-name“ и „--force-offline-reencrypt“ се не могу комбиновати." -#: src/cryptsetup.c:3396 +#: src/cryptsetup.c:3394 msgid "Options --new-volume-key-file and --keep-key cannot be combined." msgstr "Опције „--new-volume-key-file“ и „--keep-key“ се не могу комбиновати." -#: src/cryptsetup.c:3399 +#: src/cryptsetup.c:3397 msgid "Options --new-volume-key-keyring and --keep-key cannot be combined." msgstr "Опције „--new-volume-key-keyring“ и „--keep-key“ се не могу комбиновати." -#: src/cryptsetup.c:3407 src/cryptsetup.c:3437 +#: src/cryptsetup.c:3405 src/cryptsetup.c:3435 msgid "Keyslot specification is required." msgstr "Одредба утора кључа је потребна." -#: src/cryptsetup.c:3415 +#: src/cryptsetup.c:3413 msgid "Options --align-payload and --offset cannot be combined." msgstr "Опције „--align-payload“ и „--offset“ се не могу комбиновати." -#: src/cryptsetup.c:3418 +#: src/cryptsetup.c:3416 msgid "Option --integrity-no-wipe can be used only for format action with integrity extension." msgstr "Опција „--integrity-no-wipe“ се може користити само за радњу форматирања са проширењем целовитости." -#: src/cryptsetup.c:3421 +#: src/cryptsetup.c:3419 msgid "Only one of --use-[u]random options is allowed." msgstr "Дозвољена је само једна опција „--use-[u]random“." -#: src/cryptsetup.c:3429 +#: src/cryptsetup.c:3427 msgid "Key size is required with --unbound option." msgstr "Величина кључа је потребна са опцијом „--unbound“." -#: src/cryptsetup.c:3449 +#: src/cryptsetup.c:3447 msgid "Invalid token action." msgstr "Неисправна радња скупине." -#: src/cryptsetup.c:3452 +#: src/cryptsetup.c:3450 msgid "--key-description parameter is mandatory for token add action." msgstr "„--key-description“ параметар је обавезан за радњу додавања скупине." -#: src/cryptsetup.c:3456 src/cryptsetup.c:3469 +#: src/cryptsetup.c:3454 src/cryptsetup.c:3467 msgid "Action requires specific token. Use --token-id parameter." msgstr "Радња захтева нарочиту скупину. Користите параметар „--token-id“." -#: src/cryptsetup.c:3460 +#: src/cryptsetup.c:3458 msgid "Option --unbound is valid only with token add action." msgstr "Опција „--unbound“ је исправна само са радњом додавања скупине." -#: src/cryptsetup.c:3462 +#: src/cryptsetup.c:3460 msgid "Options --key-slot and --unbound cannot be combined." msgstr "Опције „--key-slot“ и „--unbound“ се не могу комбиновати." -#: src/cryptsetup.c:3467 +#: src/cryptsetup.c:3465 msgid "Action requires specific keyslot. Use --key-slot parameter." msgstr "Радња захтева нарочити утор кључа. Користите параметар „--key-slot“." -#: src/cryptsetup.c:3483 +#: src/cryptsetup.c:3481 msgid " [--type ] []" msgstr "<уређај> [--type <врста>] [<назив>]" -#: src/cryptsetup.c:3483 src/veritysetup.c:487 src/integritysetup.c:551 +#: src/cryptsetup.c:3481 src/veritysetup.c:487 src/integritysetup.c:554 msgid "open device as " msgstr "отвара уређај као <назив>" -#: src/cryptsetup.c:3484 src/cryptsetup.c:3485 src/cryptsetup.c:3486 -#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:552 -#: src/integritysetup.c:553 src/integritysetup.c:555 +#: src/cryptsetup.c:3482 src/cryptsetup.c:3483 src/cryptsetup.c:3484 +#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:555 +#: src/integritysetup.c:556 src/integritysetup.c:558 msgid "" msgstr "<назив>" -#: src/cryptsetup.c:3484 src/veritysetup.c:488 src/integritysetup.c:552 +#: src/cryptsetup.c:3482 src/veritysetup.c:488 src/integritysetup.c:555 msgid "close device (remove mapping)" msgstr "затвара уређај (уклања мапирање)" -#: src/cryptsetup.c:3485 src/integritysetup.c:555 +#: src/cryptsetup.c:3483 src/integritysetup.c:558 msgid "resize active device" msgstr "мења величину радног уређаја" -#: src/cryptsetup.c:3486 +#: src/cryptsetup.c:3484 msgid "show device status" msgstr "показује стање уређаја" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3485 msgid "[--cipher ]" msgstr "[--cipher <шифрер>]" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3485 msgid "benchmark cipher" msgstr "шифрер оцењивања" -#: src/cryptsetup.c:3488 src/cryptsetup.c:3489 src/cryptsetup.c:3490 -#: src/cryptsetup.c:3491 src/cryptsetup.c:3492 src/cryptsetup.c:3499 -#: src/cryptsetup.c:3500 src/cryptsetup.c:3501 src/cryptsetup.c:3502 -#: src/cryptsetup.c:3503 src/cryptsetup.c:3504 src/cryptsetup.c:3505 -#: src/cryptsetup.c:3506 src/cryptsetup.c:3507 src/cryptsetup.c:3508 +#: src/cryptsetup.c:3486 src/cryptsetup.c:3487 src/cryptsetup.c:3488 +#: src/cryptsetup.c:3489 src/cryptsetup.c:3490 src/cryptsetup.c:3497 +#: src/cryptsetup.c:3498 src/cryptsetup.c:3499 src/cryptsetup.c:3500 +#: src/cryptsetup.c:3501 src/cryptsetup.c:3502 src/cryptsetup.c:3503 +#: src/cryptsetup.c:3504 src/cryptsetup.c:3505 src/cryptsetup.c:3506 msgid "" msgstr "<уређај>" -#: src/cryptsetup.c:3488 +#: src/cryptsetup.c:3486 msgid "try to repair on-disk metadata" msgstr "покушава да поправи метаподатке на-диску" -#: src/cryptsetup.c:3489 +#: src/cryptsetup.c:3487 msgid "reencrypt LUKS2 device" msgstr "поново шифрујем ЛУКС2 уређај" -#: src/cryptsetup.c:3490 +#: src/cryptsetup.c:3488 msgid "erase all keyslots (remove encryption key)" msgstr "брише све уторе кључева (уклања кључ шифровања)" -#: src/cryptsetup.c:3491 +#: src/cryptsetup.c:3489 msgid "convert LUKS from/to LUKS2 format" msgstr "претвара ЛУКС из/у ЛУКС2 запис" -#: src/cryptsetup.c:3492 +#: src/cryptsetup.c:3490 msgid "set permanent configuration options for LUKS2" msgstr "поставља трајне опције подешавања за ЛУКС2" -#: src/cryptsetup.c:3493 src/cryptsetup.c:3494 +#: src/cryptsetup.c:3491 src/cryptsetup.c:3492 msgid " []" msgstr "<уређај> [<нова датотека кључа>]" -#: src/cryptsetup.c:3493 +#: src/cryptsetup.c:3491 msgid "formats a LUKS device" msgstr "форматира ЛУКС уређај" -#: src/cryptsetup.c:3494 +#: src/cryptsetup.c:3492 msgid "add key to LUKS device" msgstr "додаје кључ у ЛУКС уређај" -#: src/cryptsetup.c:3495 src/cryptsetup.c:3496 src/cryptsetup.c:3497 +#: src/cryptsetup.c:3493 src/cryptsetup.c:3494 src/cryptsetup.c:3495 msgid " []" msgstr "<уређај> [<датотека кључа>]" -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3493 msgid "removes supplied key or key file from LUKS device" msgstr "уклања достављени кључ или датотеку кључа из ЛУКС уређаја" -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3494 msgid "changes supplied key or key file of LUKS device" msgstr "мења достављени кључ или датотеку кључа ЛУКС уређаја" -#: src/cryptsetup.c:3497 +#: src/cryptsetup.c:3495 msgid "converts a key to new pbkdf parameters" msgstr "претвара кључ у нове „pbkdf“ параметре" -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3496 msgid " " msgstr "<уређај> <утор кључа>" -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3496 msgid "wipes key with number from LUKS device" msgstr "брише кључ са бројем <утор кључа> са ЛУКС уређаја" -#: src/cryptsetup.c:3499 +#: src/cryptsetup.c:3497 msgid "print UUID of LUKS device" msgstr "исписује УЈИБ ЛУКС уређаја" -#: src/cryptsetup.c:3500 +#: src/cryptsetup.c:3498 msgid "tests for LUKS partition header" msgstr "испробава <уређај> за заглављем ЛУКС партиције" -#: src/cryptsetup.c:3501 +#: src/cryptsetup.c:3499 msgid "dump LUKS partition information" msgstr "исписује податке ЛУКС партиције" -#: src/cryptsetup.c:3502 +#: src/cryptsetup.c:3500 msgid "dump TCRYPT device information" msgstr "исписује податке ТКРИПТ уређаја" -#: src/cryptsetup.c:3503 +#: src/cryptsetup.c:3501 msgid "dump BITLK device information" msgstr "исписује податке „BITLK“ уређаја" -#: src/cryptsetup.c:3504 +#: src/cryptsetup.c:3502 msgid "dump FVAULT2 device information" msgstr "исписује податке „FVAULT2“ уређаја" -#: src/cryptsetup.c:3505 +#: src/cryptsetup.c:3503 msgid "Suspend LUKS device and wipe key (all IOs are frozen)" msgstr "Обуставља ЛУКС уређај и брише кључ (сви УИ су замрзнути)" -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3504 msgid "Resume suspended LUKS device" msgstr "Наставља са обустављеним ЛУКС уређајем" -#: src/cryptsetup.c:3507 +#: src/cryptsetup.c:3505 msgid "Backup LUKS device header and keyslots" msgstr "Прави резерву заглавља „LUKS“ уређаја и утора кључева" -#: src/cryptsetup.c:3508 +#: src/cryptsetup.c:3506 msgid "Restore LUKS device header and keyslots" msgstr "Враћа заглавље „LUKS“ уређаја и уторе кључева" -#: src/cryptsetup.c:3509 +#: src/cryptsetup.c:3507 msgid " " msgstr "<додај|уклони|увези|извези> <уређај>" -#: src/cryptsetup.c:3509 +#: src/cryptsetup.c:3507 msgid "Manipulate LUKS2 tokens" msgstr "Управља ЛУКС2 скупинама" -#: src/cryptsetup.c:3528 src/veritysetup.c:505 src/integritysetup.c:570 +#: src/cryptsetup.c:3526 src/veritysetup.c:505 src/integritysetup.c:573 msgid "" "\n" " is one of:\n" @@ -2955,7 +2955,7 @@ msgstr "" "\n" "<радња> је једна од следећих:\n" -#: src/cryptsetup.c:3534 +#: src/cryptsetup.c:3532 msgid "" "\n" "You can also use old syntax aliases:\n" @@ -2967,7 +2967,7 @@ msgstr "" "\tотвори: create (plainOpen), luksOpen, loopaesOpen, tcryptOpen, bitlkOpen, fvault2Open\n" "\tзатвори: remove (plainClose), luksClose, loopaesClose, tcryptClose, bitlkClose, fvault2Close\n" -#: src/cryptsetup.c:3538 +#: src/cryptsetup.c:3536 #, c-format msgid "" "\n" @@ -2982,7 +2982,7 @@ msgstr "" "<утор кључа> је број ЛУКС утора кључа за мењање\n" "<датотека кључа> изборна датотека кључа за нови кључ за радњу „luksAddKey“\n" -#: src/cryptsetup.c:3545 +#: src/cryptsetup.c:3543 #, c-format msgid "" "\n" @@ -2991,7 +2991,7 @@ msgstr "" "\n" "Основни уграђени запис метаподатака је „%s“ (за „luksFormat“ радњу).\n" -#: src/cryptsetup.c:3550 +#: src/cryptsetup.c:3548 msgid "" "\n" "LUKS2 external token plugin support is enabled.\n" @@ -2999,12 +2999,12 @@ msgstr "" "\n" "Подршка прикључка спољне скупине за LUKS2 је укључена.\n" -#: src/cryptsetup.c:3551 +#: src/cryptsetup.c:3549 #, c-format msgid "LUKS2 external token plugin path: %s.\n" msgstr "Путања прикључка спољне скупине за „LUKS2“: %s.\n" -#: src/cryptsetup.c:3553 +#: src/cryptsetup.c:3551 msgid "" "\n" "LUKS2 external token plugin support is disabled.\n" @@ -3012,7 +3012,7 @@ msgstr "" "\n" "Подршка прикључка спољне скупине за LUKS2 је искључена.\n" -#: src/cryptsetup.c:3557 +#: src/cryptsetup.c:3555 #, c-format msgid "" "\n" @@ -3029,7 +3029,7 @@ msgstr "" "Основни „PBKDF“ за ЛУКС2: %s\n" "\tВреме понављања: %d, Захтевана меморија: %dkB, Паралелне нити: %d\n" -#: src/cryptsetup.c:3568 +#: src/cryptsetup.c:3566 #, c-format msgid "" "\n" @@ -3044,122 +3044,122 @@ msgstr "" "\tобично: %s, Кључ: %d бита, Хеширање лозинке: %s\n" "\tЛУКС: %s, Кључ: %d бита, Хеширање ЛУКС заглавља: %s, РНГ: %s\n" -#: src/cryptsetup.c:3577 +#: src/cryptsetup.c:3575 msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tЛУКС: Основна величина кључа са „XTS“ режимом (два унутрашња кључа) биће удвостручена.\n" -#: src/cryptsetup.c:3595 src/veritysetup.c:647 src/integritysetup.c:730 +#: src/cryptsetup.c:3593 src/veritysetup.c:647 src/integritysetup.c:733 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: захтева „%s“ као аргумент" -#: src/cryptsetup.c:3635 src/utils_reencrypt_luks1.c:1143 +#: src/cryptsetup.c:3633 src/utils_reencrypt_luks1.c:1143 msgid "Key slot is invalid." msgstr "Утор кључа није исправан." -#: src/cryptsetup.c:3663 +#: src/cryptsetup.c:3661 msgid "Device size must be multiple of 512 bytes sector." msgstr "Величина уређаја мора бити умножак одељка од 512 бајта." -#: src/cryptsetup.c:3668 +#: src/cryptsetup.c:3666 msgid "Invalid max reencryption hotzone size specification." msgstr "Неисправна одредба највеће величине вруће зоне поновног шифровања." -#: src/cryptsetup.c:3682 src/cryptsetup.c:3699 src/cryptsetup.c:3711 +#: src/cryptsetup.c:3680 src/cryptsetup.c:3697 src/cryptsetup.c:3709 msgid "Key size must be a multiple of 8 bits" msgstr "Величина кључа мора бити умножак од 8 бита" -#: src/cryptsetup.c:3689 +#: src/cryptsetup.c:3687 msgid "At most 2 key size specifications can be supplied." msgstr "Могу се доставити одредбе величине највише 2 кључа." -#: src/cryptsetup.c:3718 src/cryptsetup.c:3729 +#: src/cryptsetup.c:3716 src/cryptsetup.c:3727 #, c-format msgid "At most %d volume key specifications can be supplied." msgstr "Највише %d одредбе кључа волумена се могу доставити." -#: src/cryptsetup.c:3741 +#: src/cryptsetup.c:3739 #, c-format msgid "At most %d keyring link specifications can be supplied." msgstr "Највише %d одредбе везе привеска кључева се могу доставити." -#: src/cryptsetup.c:3750 +#: src/cryptsetup.c:3748 msgid "Maximum device reduce size is 1 GiB." msgstr "Највећа величина смањења уређаја је 1 GiB." -#: src/cryptsetup.c:3753 +#: src/cryptsetup.c:3751 msgid "Reduce size must be multiple of 512 bytes sector." msgstr "Величина смањивања мора бити умножак одељка од 512 бајта." -#: src/cryptsetup.c:3770 +#: src/cryptsetup.c:3768 msgid "Option --priority can be only ignore/normal/prefer." msgstr "Опција „--priority“ може бити само „ignore/normal/prefer“." -#: src/cryptsetup.c:3789 src/veritysetup.c:568 src/integritysetup.c:650 +#: src/cryptsetup.c:3787 src/veritysetup.c:568 src/integritysetup.c:653 msgid "Show this help message" msgstr "Приказује ову поруку помоћи" -#: src/cryptsetup.c:3790 src/veritysetup.c:569 src/integritysetup.c:651 +#: src/cryptsetup.c:3788 src/veritysetup.c:569 src/integritysetup.c:654 msgid "Display brief usage" msgstr "Прикажите кратку поруку о коришћењу" -#: src/cryptsetup.c:3791 src/veritysetup.c:570 src/integritysetup.c:652 +#: src/cryptsetup.c:3789 src/veritysetup.c:570 src/integritysetup.c:655 msgid "Print package version" msgstr "Исписује издање пакета" -#: src/cryptsetup.c:3802 src/veritysetup.c:581 src/integritysetup.c:663 +#: src/cryptsetup.c:3800 src/veritysetup.c:581 src/integritysetup.c:666 msgid "Help options:" msgstr "Опције помоћи:" -#: src/cryptsetup.c:3825 src/veritysetup.c:602 src/integritysetup.c:683 +#: src/cryptsetup.c:3823 src/veritysetup.c:602 src/integritysetup.c:686 msgid "[OPTION...] " msgstr "[ОПЦИЈА...] <радња> <посебност-радње>" -#: src/cryptsetup.c:3834 src/veritysetup.c:611 src/integritysetup.c:694 +#: src/cryptsetup.c:3832 src/veritysetup.c:611 src/integritysetup.c:697 msgid "Argument missing." msgstr "Недостаје аргумент <радња>." -#: src/cryptsetup.c:3913 src/veritysetup.c:642 src/integritysetup.c:725 +#: src/cryptsetup.c:3911 src/veritysetup.c:642 src/integritysetup.c:728 msgid "Unknown action." msgstr "Непозната радња." -#: src/cryptsetup.c:3931 +#: src/cryptsetup.c:3929 msgid "Option --key-file takes precedence over specified key file argument." msgstr "Опција „--key-file“ има првенство над наведеним аргументом датотеке кључа." -#: src/cryptsetup.c:3937 +#: src/cryptsetup.c:3935 msgid "Only one --key-file argument is allowed." msgstr "Дозвољен је само један аргумент „--key-file“." -#: src/cryptsetup.c:3942 +#: src/cryptsetup.c:3940 msgid "Password-based key derivation function (PBKDF) can be only pbkdf2 or argon2i/argon2id." msgstr "Функција произилажења кључа заснованог на пропусној речи (PBKDF) може бити само „pbkdf2“ или „argon2i/argon2id“." -#: src/cryptsetup.c:3947 +#: src/cryptsetup.c:3945 msgid "PBKDF forced iterations cannot be combined with iteration time option." msgstr "„PBKDF“ присиљена понављања се не могу комбиновати са опцијом времена понављања." -#: src/cryptsetup.c:3952 +#: src/cryptsetup.c:3950 msgid "Cannot link volume key to a keyring when keyring is disabled." msgstr "Не могу да свежем кључ волумена на привезак кључева када је привезак искључен." -#: src/cryptsetup.c:3957 +#: src/cryptsetup.c:3955 msgid "Cannot use keyring key description when keyring is disabled." msgstr "Не могу да користим опис кључа привеска када је привезак искључен." -#: src/cryptsetup.c:3962 +#: src/cryptsetup.c:3960 msgid "Inline integrity must be used together with --integrity option." msgstr "Унутарња целовитост се мора користити заједно са опцијом „--integrity“." -#: src/cryptsetup.c:3973 +#: src/cryptsetup.c:3971 msgid "Options --keyslot-cipher and --keyslot-key-size must be used together." msgstr "Опције „--keyslot-cipher“ и „--keyslot-key-size“ се морају користити заједно." -#: src/cryptsetup.c:3981 +#: src/cryptsetup.c:3979 msgid "No action taken. Invoked with --test-args option.\n" msgstr "Није предузета никаква радња. Призвана опцијом „--test-args“.\n" -#: src/cryptsetup.c:3994 +#: src/cryptsetup.c:3992 msgid "Cannot disable metadata locking." msgstr "Не могу да искључим закључавање метаподатака." @@ -3224,7 +3224,7 @@ msgstr "Наредба захтева „“ или „--root-hash-fi msgid " " msgstr "<уређај_података> <уређај_хеша>" -#: src/veritysetup.c:485 src/integritysetup.c:550 +#: src/veritysetup.c:485 src/integritysetup.c:553 msgid "format device" msgstr "форматира уређај" @@ -3240,7 +3240,7 @@ msgstr "проверава уређај" msgid " []" msgstr "<уређај_података> <назив> <уређај_хеша> [<хеш_корена>]" -#: src/veritysetup.c:489 src/integritysetup.c:553 +#: src/veritysetup.c:489 src/integritysetup.c:556 msgid "show active device status" msgstr "показује стање радног уређаја" @@ -3248,7 +3248,7 @@ msgstr "показује стање радног уређаја" msgid "" msgstr "<уређај_хеша>" -#: src/veritysetup.c:490 src/integritysetup.c:554 +#: src/veritysetup.c:490 src/integritysetup.c:557 msgid "show on-disk information" msgstr "приказује податке на-диску" @@ -3308,24 +3308,24 @@ msgstr "Форматирано ознаком величине %u%s, унутр msgid " (inline hw tags)" msgstr " (унутарње hw ознаке)" -#: src/integritysetup.c:297 +#: src/integritysetup.c:303 msgid "Setting recalculate flag is not supported, you may consider using --wipe instead." msgstr "Постављање заставице поновног рачунањ није подржано, можете узети у обзир коришћење опције „--wipe“." -#: src/integritysetup.c:374 src/integritysetup.c:537 +#: src/integritysetup.c:380 src/integritysetup.c:540 #, c-format msgid "Device %s is not a valid INTEGRITY device." msgstr "Уређај „%s“ није исправан „INTEGRITY“ уређај." -#: src/integritysetup.c:550 src/integritysetup.c:554 +#: src/integritysetup.c:553 src/integritysetup.c:557 msgid "" msgstr "<уређај_целовитости>" -#: src/integritysetup.c:551 +#: src/integritysetup.c:554 msgid " " msgstr "<уређај_целовитости> <назив>" -#: src/integritysetup.c:574 +#: src/integritysetup.c:577 #, c-format msgid "" "\n" @@ -3336,7 +3336,7 @@ msgstr "" "<назив> јесте уређај за стварање под „%s“\n" "<уређај_целовитости> јесте уређај који садржи податке са ознакама целовитости\n" -#: src/integritysetup.c:579 +#: src/integritysetup.c:582 #, c-format msgid "" "\n" @@ -3349,48 +3349,48 @@ msgstr "" "\tАлгоритам провере суме: %s\n" " Највећа величина датотеке кључа: %dkB\n" -#: src/integritysetup.c:636 +#: src/integritysetup.c:639 #, c-format msgid "Invalid --%s size. Maximum is %u bytes." msgstr "Неисправна величина „--%s“. Највећа је %u бајта." -#: src/integritysetup.c:739 +#: src/integritysetup.c:742 msgid "Both key file and key size options must be specified." msgstr "Мора бити наведена и опција датотеке кључа и опција величине кључа." -#: src/integritysetup.c:743 +#: src/integritysetup.c:746 msgid "Both journal integrity key file and key size options must be specified." msgstr "Мора бити наведена и опција датотеке кључа целовитости журнала и опција величине кључа." -#: src/integritysetup.c:746 +#: src/integritysetup.c:749 msgid "Journal integrity algorithm must be specified if journal integrity key is used." msgstr "Алгоритам целовитости журнала мора бити наведен ако се користи кључ целовитости журнала." -#: src/integritysetup.c:750 +#: src/integritysetup.c:753 msgid "Both journal encryption key file and key size options must be specified." msgstr "Мора бити наведена и опција датотеке кључа шифровања журнала и опција величине кључа." -#: src/integritysetup.c:753 +#: src/integritysetup.c:756 msgid "Journal encryption algorithm must be specified if journal encryption key is used." msgstr "Алгоритам шифровања журнала мора бити наведен ако се користи кључ шифровања журнала." -#: src/integritysetup.c:757 +#: src/integritysetup.c:760 msgid "Recovery and bitmap mode options are mutually exclusive." msgstr "Опције режима опоравка и битмапе се узајамно искључују." -#: src/integritysetup.c:764 +#: src/integritysetup.c:767 msgid "Journal options cannot be used in bitmap mode." msgstr "Опције журнала се не могу користити у режиму битмапе." -#: src/integritysetup.c:769 +#: src/integritysetup.c:772 msgid "Bitmap options can be used only in bitmap mode." msgstr "Опције битмапе се могу користити само у режиму битмапе." -#: src/integritysetup.c:775 +#: src/integritysetup.c:778 msgid "Inline mode cannot be combined with journal or bitmap options." msgstr "Унутарњи режим се не може комбиновати са опцијама „journal“ или „bitmap“." -#: src/integritysetup.c:779 +#: src/integritysetup.c:782 msgid "Inline mode cannot be combined with separate data device." msgstr "Унутарњи режим се не може комбиновати са одвојеним уређајем података." @@ -4347,6 +4347,10 @@ msgstr "Метода потврђивања идентитета јавног к msgid "Public key authentication error: " msgstr "Грешка потврђивања идентитета јавног кључа: " +#, c-format +#~ msgid "Failed to read or validate BITLK FVE metadata copy #%d from %s." +#~ msgstr "Нисам успео да прочитам или да потврдим умножак #%d „BITLK FVE“ метаподатака из „%s“." + #~ msgid "Activation of BITLK device with clear key protection is not supported." #~ msgstr "Активирање BITLK уређаја са јасном заштитом тастера није подржано." From 004e8706858f675f575a44b0130d0e1e13a00145 Mon Sep 17 00:00:00 2001 From: Yuri Chornoivan Date: Sat, 4 Jul 2026 18:12:56 +0200 Subject: [PATCH 168/244] po: update uk.po (from translationproject.org) --- po/uk.po | 1019 +++++++++++++++++++++++++++--------------------------- 1 file changed, 510 insertions(+), 509 deletions(-) diff --git a/po/uk.po b/po/uk.po index 59e284406..a9fe8f905 100644 --- a/po/uk.po +++ b/po/uk.po @@ -5,10 +5,10 @@ # Yuri Chornoivan , 2012-2023, 2024, 2025, 2026. msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.5-rc0\n" +"Project-Id-Version: cryptsetup 2.8.7-rc1\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2026-03-30 14:18+0200\n" -"PO-Revision-Date: 2026-03-30 18:18+0300\n" +"POT-Creation-Date: 2026-06-29 21:30+0200\n" +"PO-Revision-Date: 2026-06-30 13:31+0300\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" "Language: uk\n" @@ -78,7 +78,7 @@ msgid "Requested automatic recalculation of integrity tags is not supported." msgstr "Підтримки потрібного вам автоматичного повторного обчислення міток цілісності не передбачено." #: lib/libdevmapper.c:1802 lib/libdevmapper.c:1856 lib/libdevmapper.c:1859 -#: lib/luks2/luks2_json_metadata.c:2781 +#: lib/luks2/luks2_json_metadata.c:2799 msgid "Discard/TRIM is not supported." msgstr "Підтримки відкидання або обрізання не передбачено." @@ -124,665 +124,665 @@ msgstr "Надійшов запит щодо невідомої якості п msgid "Error reading from RNG." msgstr "Помилка читання з генератора псевдовипадкових чисел." -#: lib/setup.c:248 +#: lib/setup.c:251 msgid "OPAL support is disabled in libcryptsetup." msgstr "Підтримку OPAL у libcryptsetup вимкнено." -#: lib/setup.c:250 +#: lib/setup.c:253 #, c-format msgid "Device %s or kernel does not support OPAL encryption." msgstr "Для пристрою %s або ядра не передбачено підтримки шифрування OPAL." -#: lib/setup.c:266 +#: lib/setup.c:269 msgid "Cannot initialize crypto RNG backend." msgstr "Не вдалося ініціалізувати допоміжну програму шифрування генератора псевдовипадкових чисел." -#: lib/setup.c:272 +#: lib/setup.c:275 msgid "Cannot initialize crypto backend." msgstr "Не вдалося ініціалізувати допоміжну програму шифрування." -#: lib/setup.c:305 lib/setup.c:2766 lib/verity/verity.c:109 +#: lib/setup.c:308 lib/setup.c:2769 lib/verity/verity.c:109 #, c-format msgid "Hash algorithm %s not supported." msgstr "Підтримки алгоритму хешування %s не передбачено." -#: lib/setup.c:308 lib/loopaes/loopaes.c:78 +#: lib/setup.c:311 lib/loopaes/loopaes.c:78 #, c-format msgid "Key processing error (using hash %s)." msgstr "Помилка під час обробки ключа (на основі хешу %s)." -#: lib/setup.c:389 lib/setup.c:426 +#: lib/setup.c:392 lib/setup.c:429 msgid "Cannot determine device type. Incompatible activation of device?" msgstr "Не вдалося визначити тип пристрою. Несумісна дія з активації пристрою?" -#: lib/setup.c:395 lib/setup.c:4160 +#: lib/setup.c:398 lib/setup.c:4177 msgid "This operation is supported only for LUKS device." msgstr "Підтримку цієї дії передбачено лише для пристроїв LUKS." -#: lib/setup.c:432 +#: lib/setup.c:435 msgid "This operation is supported only for LUKS2 device." msgstr "Підтримку цієї дії передбачено лише для пристроїв LUKS2." -#: lib/setup.c:489 lib/luks2/luks2_reencrypt.c:3101 +#: lib/setup.c:492 lib/luks2/luks2_reencrypt.c:3102 msgid "All key slots full." msgstr "Заповнено всі слоти ключів." -#: lib/setup.c:500 +#: lib/setup.c:503 #, c-format msgid "Key slot %d is invalid, please select between 0 and %d." msgstr "Слот ключа %d є некоректним, будь ласка, виберіть число від 0 до %d." -#: lib/setup.c:506 +#: lib/setup.c:509 #, c-format msgid "Key slot %d is full, please select another one." msgstr "Слот ключа %d заповнено, будь ласка, виберіть інший." -#: lib/setup.c:531 lib/setup.c:3875 +#: lib/setup.c:534 lib/setup.c:3878 msgid "Device size is not aligned to device logical block size." msgstr "Розмір пристрою не вирівняно за розміром логічного блоку пристрою." -#: lib/setup.c:628 +#: lib/setup.c:631 #, c-format msgid "Header detected but device %s is too small." msgstr "Виявлено заголовок, але об’єм пристрою %s є надто малим." -#: lib/setup.c:669 lib/setup.c:3760 lib/setup.c:5238 -#: lib/luks2/luks2_reencrypt.c:3948 lib/luks2/luks2_reencrypt.c:4437 +#: lib/setup.c:672 lib/setup.c:3763 lib/setup.c:5272 +#: lib/luks2/luks2_reencrypt.c:3949 lib/luks2/luks2_reencrypt.c:4438 msgid "This operation is not supported for this device type." msgstr "Підтримки цієї дії для цього типу пристроїв не передбачено." -#: lib/setup.c:674 +#: lib/setup.c:677 msgid "Illegal operation with reencryption in-progress." msgstr "Виконуємо заборонену дію із повторного шифрування." -#: lib/setup.c:806 +#: lib/setup.c:809 msgid "Failed to rollback LUKS2 metadata in memory." msgstr "Не вдалося відкотити метадані LUKS2 у пам'яті." -#: lib/setup.c:893 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 -#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 -#: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 -#: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2953 -#: src/cryptsetup.c:3021 src/utils_reencrypt.c:2281 +#: lib/setup.c:896 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 +#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1779 +#: src/cryptsetup.c:1963 src/cryptsetup.c:2018 src/cryptsetup.c:2216 +#: src/cryptsetup.c:2361 src/cryptsetup.c:2639 src/cryptsetup.c:2952 +#: src/cryptsetup.c:3020 src/utils_reencrypt.c:2281 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." msgstr "Пристрій %s не є коректним пристроєм LUKS." -#: lib/setup.c:896 lib/luks1/keymanage.c:517 +#: lib/setup.c:899 lib/luks1/keymanage.c:517 #, c-format msgid "Unsupported LUKS version %d." msgstr "Непідтримувана версія LUKS, %d." -#: lib/setup.c:1270 +#: lib/setup.c:1273 #, c-format msgid "No known cipher specification pattern detected for active device %s." msgstr "Не виявлено жодного відомого зразка специфікації шифрування для активного пристрою %s." -#: lib/setup.c:1515 lib/setup.c:3507 lib/setup.c:3599 lib/setup.c:3611 -#: lib/setup.c:3783 lib/setup.c:5816 +#: lib/setup.c:1518 lib/setup.c:3510 lib/setup.c:3602 lib/setup.c:3614 +#: lib/setup.c:3786 lib/setup.c:5850 #, c-format msgid "Device %s is not active." msgstr "Пристрій %s є неактивним." -#: lib/setup.c:1532 +#: lib/setup.c:1535 #, c-format msgid "Underlying device for crypt device %s disappeared." msgstr "Зник основний пристрій для пристрою для шифрування %s." -#: lib/setup.c:1614 +#: lib/setup.c:1617 msgid "Invalid plain crypt parameters." msgstr "Некоректні параметри звичайного шифрування." -#: lib/setup.c:1619 lib/setup.c:2669 +#: lib/setup.c:1622 lib/setup.c:2672 msgid "Invalid key size." msgstr "Некоректний розмір ключа." -#: lib/setup.c:1624 lib/setup.c:2674 lib/setup.c:2879 +#: lib/setup.c:1627 lib/setup.c:2677 lib/setup.c:2882 msgid "UUID is not supported for this crypt type." msgstr "Підтримки UUID для цього типу шифрування не передбачено." -#: lib/setup.c:1629 lib/setup.c:2679 +#: lib/setup.c:1632 lib/setup.c:2682 msgid "Detached metadata device is not supported for this crypt type." msgstr "Підтримки пристрою від'єднаних метаданих для цього типу шифрування не передбачено." -#: lib/setup.c:1639 lib/setup.c:1887 lib/luks2/luks2_reencrypt.c:3034 -#: src/cryptsetup.c:1492 src/cryptsetup.c:3760 +#: lib/setup.c:1642 lib/setup.c:1890 lib/luks2/luks2_reencrypt.c:3035 +#: src/cryptsetup.c:1491 src/cryptsetup.c:3759 msgid "Unsupported encryption sector size." msgstr "Непідтримуваний розмір сектора шифрування." -#: lib/setup.c:1647 lib/setup.c:1916 lib/setup.c:3869 +#: lib/setup.c:1650 lib/setup.c:1919 lib/setup.c:3872 msgid "Device size is not aligned to requested sector size." msgstr "Розмір пристрою не вирівняно за вказаним розміром сектора." -#: lib/setup.c:1699 lib/setup.c:1951 lib/setup.c:2328 +#: lib/setup.c:1702 lib/setup.c:1954 lib/setup.c:2331 msgid "Can't format LUKS without device." msgstr "Форматування LUKS без пристрою неможливе." -#: lib/setup.c:1704 lib/setup.c:1956 +#: lib/setup.c:1707 lib/setup.c:1959 #, c-format msgid "Zoned device %s cannot be used for LUKS header." msgstr "Зонований пристрій %s не можна використовувати для заголовка LUKS." -#: lib/setup.c:1711 lib/setup.c:1963 lib/setup.c:2334 +#: lib/setup.c:1714 lib/setup.c:1966 lib/setup.c:2337 msgid "Requested data alignment is not compatible with data offset." msgstr "Потрібне вам вирівнювання даних є несумісним із відступом у даних." -#: lib/setup.c:1751 lib/setup.c:1981 +#: lib/setup.c:1754 lib/setup.c:1984 msgid "WARNING: DAX device can corrupt data as it does not guarantee atomic sector updates.\n" msgstr "УВАГА: пристрій DAX може пошкодити дані, оскільки для нього не гарантовано атомарні оновлення секторів.\n" -#: lib/setup.c:1789 lib/setup.c:2088 lib/setup.c:2109 lib/setup.c:2517 -#: lib/setup.c:2564 lib/setup.c:2896 +#: lib/setup.c:1792 lib/setup.c:2091 lib/setup.c:2112 lib/setup.c:2520 +#: lib/setup.c:2567 lib/setup.c:2899 #, c-format msgid "Cannot wipe header on device %s." msgstr "Не можна витирати заголовок на пристрої %s." -#: lib/setup.c:1802 lib/setup.c:2161 +#: lib/setup.c:1805 lib/setup.c:2164 #, c-format msgid "Device %s is too small for activation, there is no remaining space for data.\n" msgstr "Пристрій %s є надто малим для активації, на ньому не лишиться місця для даних.\n" -#: lib/setup.c:1843 +#: lib/setup.c:1846 msgid "Volume key is too small for encryption with integrity extensions." msgstr "Ключ тому є надто малим для шифрування із розширеннями цілісності." -#: lib/setup.c:1847 +#: lib/setup.c:1850 msgid "Integrity key size is too small." msgstr "Розмір ключа цілісності є надто малим." -#: lib/setup.c:1856 +#: lib/setup.c:1859 #, c-format msgid "Cipher %s-%s (key size %zd bits) is not available." msgstr "Шифрування %s-%s (розмір ключа — %zd бітів) є недоступним." -#: lib/setup.c:1897 +#: lib/setup.c:1900 msgid "WARNING: The device activation will fail, dm-crypt is missing support for requested encryption sector size.\n" msgstr "Увага: спроба активувати пристрій завершиться невдало, у dm-crypt не передбачено підтримки для вказаного розміру сектора шифрування.\n" -#: lib/setup.c:2091 lib/setup.c:2458 lib/setup.c:2520 lib/utils_device.c:906 -#: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3073 -#: lib/luks2/luks2_reencrypt.c:4497 +#: lib/setup.c:2094 lib/setup.c:2461 lib/setup.c:2523 lib/utils_device.c:906 +#: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3074 +#: lib/luks2/luks2_reencrypt.c:4498 #, c-format msgid "Device %s is too small." msgstr "Об’єм пристрою %s є надто малим." -#: lib/setup.c:2102 lib/setup.c:2141 lib/setup.c:2557 lib/setup.c:2615 +#: lib/setup.c:2105 lib/setup.c:2144 lib/setup.c:2560 lib/setup.c:2618 #, c-format msgid "Cannot format device %s in use." msgstr "Не можна форматувати пристрій %s, який перебуває у користуванні." -#: lib/setup.c:2105 lib/setup.c:2144 lib/setup.c:2560 lib/setup.c:2618 +#: lib/setup.c:2108 lib/setup.c:2147 lib/setup.c:2563 lib/setup.c:2621 #, c-format msgid "Cannot format device %s, permission denied." msgstr "Не можна форматувати пристрій %s, недостатні права доступу." -#: lib/setup.c:2129 lib/setup.c:2587 lib/setup.c:2969 +#: lib/setup.c:2132 lib/setup.c:2590 lib/setup.c:2972 #, c-format msgid "Cannot format integrity for device %s." msgstr "Не вдалося форматувати цілісність для пристрою %s." -#: lib/setup.c:2148 lib/setup.c:2626 +#: lib/setup.c:2151 lib/setup.c:2629 #, c-format msgid "Cannot format device %s." msgstr "Не вдалося форматувати пристрій %s." -#: lib/setup.c:2191 +#: lib/setup.c:2194 msgid "Cannot get OPAL alignment parameters." msgstr "Не вдалося отримати параметри вирівнювання OPAL." -#: lib/setup.c:2203 +#: lib/setup.c:2206 msgid "Bogus OPAL logical block size." msgstr "Фіктивний розмір логічного блоку OPAL." -#: lib/setup.c:2208 lib/luks2/hw_opal/hw_opal.c:305 +#: lib/setup.c:2211 lib/luks2/hw_opal/hw_opal.c:305 msgid "Bogus OPAL logical block size differs from device block size." msgstr "Фіктивний розмір логічного блоку OPAL відрізняється від розміру блоку пристрою." -#: lib/setup.c:2214 +#: lib/setup.c:2217 msgid "Requested data offset is not compatible with OPAL block size." msgstr "Потрібний вам відступ даних є несумісним із розміром блоку OPAL." -#: lib/setup.c:2221 +#: lib/setup.c:2224 msgid "Requested data alignment is not compatible with OPAL alignment." msgstr "Потрібне вам вирівнювання даних є несумісним із вирівнюванням OPAL." -#: lib/setup.c:2241 +#: lib/setup.c:2244 msgid "Data offset does not satisfy OPAL alignment requirements." msgstr "Відступ даних не відповідає вимогам вирівнювання OPAL." -#: lib/setup.c:2254 +#: lib/setup.c:2257 msgid "Requested data alignment does not satisfy locking range alignment requirements." msgstr "Потрібне вам вирівнювання даних не відповідає вимогам щодо вирівнювання заблокованого діапазону." -#: lib/setup.c:2468 +#: lib/setup.c:2471 #, c-format msgid "Compensating device size by % sectors to align it with OPAL alignment granularity." msgstr "Компенсуємо розмір пристрою на % секторів для вирівнювання його за рівнем розбиття вирівнювання OPAL." -#: lib/setup.c:2528 lib/setup.c:4243 lib/setup.c:4432 lib/utils_wipe.c:356 -#: lib/luks2/luks2_json_metadata.c:2724 lib/luks2/luks2_json_metadata.c:2992 +#: lib/setup.c:2531 lib/setup.c:4260 lib/setup.c:4466 lib/utils_wipe.c:356 +#: lib/luks2/luks2_json_metadata.c:2742 lib/luks2/luks2_json_metadata.c:3017 #, c-format msgid "Failed to acquire OPAL lock on device %s." msgstr "Не вдалося отримати блокування OPAL на пристрої %s." -#: lib/setup.c:2538 +#: lib/setup.c:2541 msgid "Incorrect OPAL Admin key." msgstr "Неправильний адміністративний ключ OPAL." -#: lib/setup.c:2540 +#: lib/setup.c:2543 msgid "Cannot setup OPAL segment." msgstr "Не вдалося налаштувати сегмент OPAL." -#: lib/setup.c:2622 +#: lib/setup.c:2625 #, c-format msgid "Cannot format device %s, OPAL device seems to be fully write-protected now." msgstr "Не вдалося форматувати пристрій %s, здається, пристрій OPAL тепер повністю захищено від запису." -#: lib/setup.c:2624 +#: lib/setup.c:2627 msgid "This is perhaps a bug in firmware. Run OPAL PSID reset and reconnect for recovery." msgstr "Можливо, це вада у мікропрограмі. Виконайте скидання PSID OPAL і повторно з'єднайте пристрій для відновлення." -#: lib/setup.c:2644 +#: lib/setup.c:2647 #, c-format msgid "Locking range %d reset on device %s failed." msgstr "Помилка під час спроби скидання діапазону блокування %d на пристрої %s." -#: lib/setup.c:2664 +#: lib/setup.c:2667 msgid "Can't format LOOPAES without device." msgstr "Не можна форматувати LOOPAES без пристрою." -#: lib/setup.c:2709 +#: lib/setup.c:2712 msgid "Can't format VERITY without device." msgstr "Форматування VERITY без пристрою неможливе." -#: lib/setup.c:2720 lib/verity/verity.c:88 +#: lib/setup.c:2723 lib/verity/verity.c:88 #, c-format msgid "Unsupported VERITY hash type %d." msgstr "Непідтримуваний тип хешування VERITY, %d." -#: lib/setup.c:2726 lib/verity/verity.c:96 +#: lib/setup.c:2729 lib/verity/verity.c:96 msgid "Unsupported VERITY block size." msgstr "Непідтримуваний розмір блоку VERITY." -#: lib/setup.c:2731 lib/verity/verity.c:61 +#: lib/setup.c:2734 lib/verity/verity.c:61 msgid "Unsupported VERITY hash offset." msgstr "Непідтримуваний відступ хешу VERITY." -#: lib/setup.c:2736 +#: lib/setup.c:2739 msgid "Unsupported VERITY FEC offset." msgstr "Непідтримуваний зсув FEC VERITY." -#: lib/setup.c:2760 +#: lib/setup.c:2763 msgid "Data area overlaps with hash area." msgstr "Область даних перекривається із областю хешу." -#: lib/setup.c:2785 +#: lib/setup.c:2788 msgid "Hash area overlaps with FEC area." msgstr "Область хешування перекриваються з областю FEC." -#: lib/setup.c:2792 +#: lib/setup.c:2795 msgid "Data area overlaps with FEC area." msgstr "Область даних перекривається із областю FEC." -#: lib/setup.c:2884 +#: lib/setup.c:2887 msgid "Integrity key size mismatch." msgstr "Невідповідність розмірів ключів цілісності." -#: lib/setup.c:2935 +#: lib/setup.c:2938 #, c-format msgid "WARNING: Requested tag size %d bytes differs from %s size output (%d bytes).\n" msgstr "Увага: бажаний розмір мітки у %d байтів відрізняється від розміру у результаті %s (%d байтів).\n" -#: lib/setup.c:3048 lib/setup.c:3150 +#: lib/setup.c:3051 lib/setup.c:3153 #, c-format msgid "Unknown or unsupported device type %s requested." msgstr "Надіслано запит щодо невідомого або непідтримуваного типу пристрою %s." -#: lib/setup.c:3064 +#: lib/setup.c:3067 #, c-format msgid "Device %s does not provide inline integrity data fields." msgstr "На пристрої %s не надається вбудованих полів даних цілісності." -#: lib/setup.c:3070 +#: lib/setup.c:3073 #, c-format msgid "Inline tag size % [bytes] is larger than % provided by device %s." msgstr "Розмір вбудованої мітки % [байтів] перевищує %, який надано пристроєм %s." -#: lib/setup.c:3085 +#: lib/setup.c:3088 #, c-format msgid "Sector must be the same as device hardware sector (%zu bytes)." msgstr "Сектор має збігатися із апаратним сектором пристрою (%zu байтів)." -#: lib/setup.c:3515 lib/setup.c:3604 lib/setup.c:3617 +#: lib/setup.c:3518 lib/setup.c:3607 lib/setup.c:3620 #, c-format msgid "Unsupported parameters on device %s." msgstr "Непідтримувані параметри на пристрої %s." -#: lib/setup.c:3521 lib/setup.c:3624 lib/luks2/luks2_reencrypt.c:2928 -#: lib/luks2/luks2_reencrypt.c:3197 lib/luks2/luks2_reencrypt.c:3594 +#: lib/setup.c:3524 lib/setup.c:3627 lib/luks2/luks2_reencrypt.c:2929 +#: lib/luks2/luks2_reencrypt.c:3198 lib/luks2/luks2_reencrypt.c:3595 #, c-format msgid "Mismatching parameters on device %s." msgstr "Невідповідність параметрів на пристрої %s." -#: lib/setup.c:3647 +#: lib/setup.c:3650 msgid "Crypt devices mismatch." msgstr "Невідповідність пристроїв шифрування." -#: lib/setup.c:3679 lib/setup.c:3684 lib/luks2/luks2_reencrypt.c:2412 -#: lib/luks2/luks2_reencrypt.c:2944 lib/luks2/luks2_reencrypt.c:4236 +#: lib/setup.c:3682 lib/setup.c:3687 lib/luks2/luks2_reencrypt.c:2413 +#: lib/luks2/luks2_reencrypt.c:2945 lib/luks2/luks2_reencrypt.c:4237 #, c-format msgid "Failed to reload device %s." msgstr "Не вдалося перезавантажити пристрій %s." -#: lib/setup.c:3690 lib/setup.c:3696 lib/luks2/luks2_reencrypt.c:2382 -#: lib/luks2/luks2_reencrypt.c:2389 lib/luks2/luks2_reencrypt.c:2958 +#: lib/setup.c:3693 lib/setup.c:3699 lib/luks2/luks2_reencrypt.c:2383 +#: lib/luks2/luks2_reencrypt.c:2390 lib/luks2/luks2_reencrypt.c:2959 #, c-format msgid "Failed to suspend device %s." msgstr "Не вдалося приспати пристрій %s." -#: lib/setup.c:3702 lib/luks2/luks2_reencrypt.c:2396 -#: lib/luks2/luks2_reencrypt.c:2979 lib/luks2/luks2_reencrypt.c:4149 -#: lib/luks2/luks2_reencrypt.c:4240 +#: lib/setup.c:3705 lib/luks2/luks2_reencrypt.c:2397 +#: lib/luks2/luks2_reencrypt.c:2980 lib/luks2/luks2_reencrypt.c:4150 +#: lib/luks2/luks2_reencrypt.c:4241 #, c-format msgid "Failed to resume device %s." msgstr "Не вдалося відновити роботу пристрою %s." -#: lib/setup.c:3717 +#: lib/setup.c:3720 #, c-format msgid "Fatal error while reloading device %s (on top of device %s)." msgstr "Критична помилка під час перезавантаження пристрої %s (над пристроєм %s)." -#: lib/setup.c:3720 lib/setup.c:3722 +#: lib/setup.c:3723 lib/setup.c:3725 #, c-format msgid "Failed to switch device %s to dm-error." msgstr "Не вдалося перемкнути пристрій %s у режим dm-error." -#: lib/setup.c:3765 +#: lib/setup.c:3768 msgid "Can not resize LUKS2 device with static size." msgstr "Неможливо змінити розмір пристрою LUKS2 зі статичним розміром." -#: lib/setup.c:3770 +#: lib/setup.c:3773 msgid "Resize of LUKS2 device with integrity protection is not supported." msgstr "Підтримки зміни розмірів пристрою LUKS2 із захистом цілісності не передбачено." -#: lib/setup.c:3816 +#: lib/setup.c:3819 msgid "Cannot resize loop device." msgstr "Неможливо змінити розмір петльового пристрою." -#: lib/setup.c:3860 +#: lib/setup.c:3863 msgid "WARNING: Maximum size already set or kernel doesn't support resize.\n" msgstr "УВАГА: уже вказано максимальний розмір або у ядрі не передбачено можливості зміни розміру.\n" -#: lib/setup.c:3926 +#: lib/setup.c:3929 msgid "Resize failed, the kernel doesn't support it." msgstr "Не вдалося змінити розмір, у ядрі не передбачено підтримки такої дії." -#: lib/setup.c:3958 +#: lib/setup.c:3961 msgid "Do you really want to change UUID of device?" msgstr "Ви справді хочете змінити UUID пристрою?" -#: lib/setup.c:4050 +#: lib/setup.c:4053 msgid "Header backup file does not contain compatible LUKS header." msgstr "Файл резервної копії заголовка не містить сумісного із LUKS заголовка." -#: lib/setup.c:4143 +#: lib/setup.c:4160 #, c-format msgid "Volume %s is not active." msgstr "Том %s не є активним." -#: lib/setup.c:4198 +#: lib/setup.c:4215 #, c-format msgid "Volume %s is already suspended." msgstr "Том %s вже приспано." -#: lib/setup.c:4224 +#: lib/setup.c:4241 #, c-format msgid "Suspend is not supported for device %s." msgstr "Підтримки присипляння для пристрою %s не передбачено." -#: lib/setup.c:4226 lib/setup.c:4234 +#: lib/setup.c:4243 lib/setup.c:4251 #, c-format msgid "Error during suspending device %s." msgstr "Помилка під час спроби приспати пристрій %s." -#: lib/setup.c:4249 +#: lib/setup.c:4266 #, c-format msgid "Device %s was suspended but hardware OPAL device cannot be locked." msgstr "Роботу пристрою %s було призупинено, але апаратний пристрій OPAL не може бути заблоковано." -#: lib/setup.c:4280 lib/setup.c:4457 +#: lib/setup.c:4297 lib/setup.c:4491 #, c-format msgid "Resume is not supported for device %s." msgstr "Підтримки дії з пробудження для пристрою %s не передбачено." -#: lib/setup.c:4282 lib/setup.c:4447 lib/setup.c:4459 +#: lib/setup.c:4299 lib/setup.c:4481 lib/setup.c:4493 #, c-format msgid "Error during resuming device %s." msgstr "Помилка під час спроби пробудити пристрій %s." -#: lib/setup.c:4301 +#: lib/setup.c:4335 msgid "Failed to unlink volume key from user specified keyring." msgstr "Не вдалося скасувати прив'язку ключа тому до вказаного користувачем сховища ключів." -#: lib/setup.c:4423 lib/setup.c:5603 +#: lib/setup.c:4457 lib/setup.c:5637 msgid "Failed to link volume key in user defined keyring." msgstr "Не вдалося пов'язати ключ тому із визначеним користувачем сховищем ключів." -#: lib/setup.c:4522 src/cryptsetup.c:2721 +#: lib/setup.c:4556 src/cryptsetup.c:2720 #, c-format msgid "Volume %s is not suspended." msgstr "Том %s не приспано." -#: lib/setup.c:4633 lib/setup.c:7276 lib/setup.c:7298 lib/setup.c:7352 -#: src/cryptsetup.c:1856 src/cryptsetup.c:2260 src/cryptsetup.c:2278 -#: src/utils_reencrypt.c:305 src/utils_reencrypt.c:1966 +#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1855 +#: src/cryptsetup.c:2259 src/cryptsetup.c:2277 src/utils_reencrypt.c:305 +#: src/utils_reencrypt.c:1966 msgid "Volume key does not match the volume." msgstr "Ключ тому не відповідає тому." -#: lib/setup.c:4787 +#: lib/setup.c:4821 msgid "Failed to swap new key slot." msgstr "Не вдалося зарезервувати новий слот ключа." -#: lib/setup.c:4885 +#: lib/setup.c:4919 #, c-format msgid "Key slot %d is invalid." msgstr "Слот ключа %d є некоректним." -#: lib/setup.c:4891 src/cryptsetup.c:1977 src/cryptsetup.c:2437 -#: src/cryptsetup.c:3121 src/cryptsetup.c:3181 +#: lib/setup.c:4925 src/cryptsetup.c:1976 src/cryptsetup.c:2436 +#: src/cryptsetup.c:3120 src/cryptsetup.c:3180 #, c-format msgid "Keyslot %d is not active." msgstr "Слот ключа %d не є активним." -#: lib/setup.c:4910 +#: lib/setup.c:4944 msgid "Device header overlaps with data area." msgstr "Заголовок пристрою перекривається із областю даних." -#: lib/setup.c:5131 +#: lib/setup.c:5165 msgid "Reencryption in-progress. Cannot activate device." msgstr "Виконуємо повторне шифрування. Не можна активувати пристрій." -#: lib/setup.c:5133 lib/luks2/luks2_json_metadata.c:2888 -#: lib/luks2/luks2_reencrypt.c:3725 +#: lib/setup.c:5167 lib/luks2/luks2_json_metadata.c:2913 +#: lib/luks2/luks2_reencrypt.c:3726 msgid "Failed to get reencryption lock." msgstr "Не вдалося отримати стан блокування для повторного шифрування." -#: lib/setup.c:5155 +#: lib/setup.c:5189 msgid "LUKS2 reencryption recovery using volume key(s) failed." msgstr "Не вдалося виконати відновлення даних повторного шифрування LUKS2 з використанням ключів тому." -#: lib/setup.c:5291 +#: lib/setup.c:5325 #, c-format msgid "Device %s already exists." msgstr "Пристрій %s вже існує." -#: lib/setup.c:5298 +#: lib/setup.c:5332 #, c-format msgid "Cannot use device %s, name is invalid or still in use." msgstr "Неможливо скористатися пристроєм %s, некоректна назва або пристрій усе ще використовується." -#: lib/setup.c:5310 +#: lib/setup.c:5344 msgid "Reencryption volume keys do not match the volume." msgstr "Ключі повторного шифрування тому не відповідають тому." -#: lib/setup.c:5327 +#: lib/setup.c:5361 msgid "Incorrect volume key specified for plain device." msgstr "Для пристрою зі звичайним шифруванням вказано помилковий ключ тому." -#: lib/setup.c:5353 lib/setup.c:5414 +#: lib/setup.c:5387 lib/setup.c:5448 msgid "Device type is not properly initialized." msgstr "Тип пристрою не ініціалізовано належним чином." -#: lib/setup.c:5452 +#: lib/setup.c:5486 msgid "Kernel keyring is not supported by the kernel." msgstr "У ядрі не передбачено підтримки сховища ключів ядра." -#: lib/setup.c:5456 +#: lib/setup.c:5490 msgid "Kernel keyring missing: required for passing signature to kernel." msgstr "Немає сховища ключів ядра: це сховище потрібне для передавання підпису ядру." -#: lib/setup.c:5511 +#: lib/setup.c:5545 #, c-format msgid "Cannot use keyring key %s." msgstr "Не можна використовувати ключ сховища ключів %s." -#: lib/setup.c:5724 +#: lib/setup.c:5758 msgid "Incorrect root hash specified for verity device." msgstr "Для пристрою перевірки вказано помилковий кореневий хеш." -#: lib/setup.c:5765 lib/setup.c:5790 +#: lib/setup.c:5799 lib/setup.c:5824 msgid "OPAL does not support deferred deactivation." msgstr "В OPAL не передбачено підтримки відкладеної деактивації." -#: lib/setup.c:5780 lib/setup.c:5811 lib/luks2/luks2_json_metadata.c:2953 +#: lib/setup.c:5814 lib/setup.c:5845 lib/luks2/luks2_json_metadata.c:2978 #: src/utils_reencrypt.c:89 #, c-format msgid "Device %s is still in use." msgstr "Пристрій %s все ще використовується." -#: lib/setup.c:5798 +#: lib/setup.c:5832 #, c-format msgid "Could not cancel deferred remove from device %s." msgstr "Не вдалося скасувати відкладене вилучення з пристрою %s." -#: lib/setup.c:5820 +#: lib/setup.c:5854 #, c-format msgid "Invalid device %s." msgstr "Некоректний пристрій %s." -#: lib/setup.c:5967 +#: lib/setup.c:6001 msgid "Volume key buffer too small." msgstr "Буфер ключів тому є занадто малим." -#: lib/setup.c:5978 +#: lib/setup.c:6012 msgid "Cannot retrieve volume key for LUKS2 device." msgstr "Неможливо отримати ключ тому для пристрою із шифруванням LUKS2." -#: lib/setup.c:5987 +#: lib/setup.c:6021 msgid "Cannot retrieve volume key for LUKS1 device." msgstr "Неможливо отримати ключ тому для пристрою із шифруванням LUKS1." -#: lib/setup.c:6001 +#: lib/setup.c:6035 msgid "Cannot retrieve volume key for plain device." msgstr "Неможливо отримати ключ тому для пристрою зі звичайним шифруванням." -#: lib/setup.c:6009 +#: lib/setup.c:6043 msgid "Cannot retrieve root hash for verity device." msgstr "Не вдалося отримати кореневий хеш для пристрою VERITY." -#: lib/setup.c:6018 +#: lib/setup.c:6052 msgid "Cannot retrieve volume key for BITLK device." msgstr "Неможливо отримати ключ тому для пристрою BITLK." -#: lib/setup.c:6023 +#: lib/setup.c:6057 msgid "Cannot retrieve volume key for FVAULT2 device." msgstr "Неможливо отримати ключ тому для пристрою FVAULT2." -#: lib/setup.c:6025 +#: lib/setup.c:6059 #, c-format msgid "This operation is not supported for %s crypt device." msgstr "Підтримки цієї дії для шифрованого пристрою %s не передбачено." -#: lib/setup.c:6210 lib/setup.c:6221 +#: lib/setup.c:6244 lib/setup.c:6255 msgid "Dump operation is not supported for this device type." msgstr "Підтримки дії зі створення дампу для цього типу пристроїв не передбачено." -#: lib/setup.c:6601 +#: lib/setup.c:6635 #, c-format msgid "Data offset is not multiple of %u bytes." msgstr "Зсув у даних не є кратним до %u байтів." -#: lib/setup.c:6909 +#: lib/setup.c:6943 #, c-format msgid "Cannot convert device %s which is still in use." msgstr "Не можна перетворити пристрій %s, який перебуває у користуванні." -#: lib/setup.c:7217 lib/setup.c:7361 +#: lib/setup.c:7251 lib/setup.c:7406 #, c-format msgid "Failed to assign keyslot %u as the new volume key." msgstr "Не вдалося прив'язати слот ключа %u як новий ключ тому." -#: lib/setup.c:7241 +#: lib/setup.c:7275 msgid "Failed to initialize default LUKS2 keyslot parameters." msgstr "Не вдалося ініціалізувати типові параметри слоту ключів LUKS2." -#: lib/setup.c:7247 +#: lib/setup.c:7281 #, c-format msgid "Failed to assign keyslot %d to digest." msgstr "Не вдалося прив'язати слот ключа %d до контрольної суми." -#: lib/setup.c:7478 +#: lib/setup.c:7523 msgid "Cannot add key slot, all slots disabled and no volume key provided." msgstr "Не вдалося додати слот ключа, всі слоти вимкнено і не вказано ключа тому." -#: lib/setup.c:7551 lib/verity/verity.c:333 +#: lib/setup.c:7611 lib/setup.c:7626 lib/verity/verity.c:333 msgid "Failed to load key in kernel keyring." msgstr "Не вдалося завантажити ключ до сховища ключів ядра." -#: lib/setup.c:7742 +#: lib/setup.c:7807 #, c-format msgid "Could not find keyring described by \"%s\"." msgstr "Не вдалося знайти сховище ключів, яке описано «%s»." -#: lib/setup.c:7807 +#: lib/setup.c:7872 msgid "Failed to acquire global memory-hard access serialization lock." msgstr "Не вдалося створити загальне блокування серіалізації доступу до пам'яті." -#: lib/utils.c:204 lib/tcrypt/tcrypt.c:490 +#: lib/utils.c:205 lib/tcrypt/tcrypt.c:488 msgid "Failed to open key file." msgstr "Не вдалося відкрити файл ключа." -#: lib/utils.c:212 +#: lib/utils.c:213 msgid "Cannot read keyfile from a terminal." msgstr "Не вдалося прочитати файл ключа з термінала." -#: lib/utils.c:228 +#: lib/utils.c:229 msgid "Failed to stat key file." msgstr "Не вдалося отримати статистичні дані щодо файла ключа." -#: lib/utils.c:236 lib/utils.c:257 +#: lib/utils.c:237 lib/utils.c:258 msgid "Cannot seek to requested keyfile offset." msgstr "Не вдалося встановити потрібну позицію у файлі ключа." -#: lib/utils.c:251 lib/utils.c:266 src/utils_password.c:219 +#: lib/utils.c:252 lib/utils.c:267 src/utils_password.c:219 #: src/utils_password.c:231 msgid "Out of memory while reading passphrase." msgstr "Під час читання пароля вичерпано пам’ять." -#: lib/utils.c:286 +#: lib/utils.c:287 msgid "Error reading passphrase." msgstr "Помилка під час читання пароля." -#: lib/utils.c:303 +#: lib/utils.c:304 msgid "Nothing to read on input." msgstr "Нічого читати з вхідних даних." -#: lib/utils.c:310 +#: lib/utils.c:311 msgid "Maximum keyfile size exceeded." msgstr "Перевищено максимальний розмір файла ключа." -#: lib/utils.c:315 +#: lib/utils.c:316 msgid "Cannot read requested amount of data." msgstr "Не вдалося прочитати бажаний об’єм даних." @@ -962,7 +962,7 @@ msgid "Cipher specification should be in [cipher]-[mode]-[iv] format." msgstr "Специфікацію шифрування слід вказувати так: [алгоритм]-[режим]-[iv]." #: lib/luks1/keyencryption.c:85 lib/luks1/keymanage.c:353 -#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1150 +#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1132 #: lib/luks2/luks2_json_metadata.c:1518 lib/luks2/luks2_keyslot.c:711 #, c-format msgid "Cannot write to device %s, permission denied." @@ -976,13 +976,13 @@ msgstr "Не вдалося відкрити пристрій тимчасово msgid "Failed to access temporary keystore device." msgstr "Не вдалося отримати доступ до пристрою тимчасового сховища ключів." -#: lib/luks1/keyencryption.c:189 lib/luks2/luks2_keyslot_luks2.c:49 -#: lib/luks2/luks2_keyslot_luks2.c:67 lib/luks2/luks2_keyslot_reenc.c:184 +#: lib/luks1/keyencryption.c:189 lib/luks2/luks2_keyslot_luks2.c:47 +#: lib/luks2/luks2_keyslot_reenc.c:184 msgid "IO error while encrypting keyslot." msgstr "Помилка введення-виведення під час шифрування слоту ключів." #: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:356 -#: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:668 +#: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:659 #: lib/fvault2/fvault2.c:872 lib/verity/verity.c:67 lib/verity/verity.c:183 #: lib/verity/verity_hash.c:312 lib/verity/verity_hash.c:321 #: lib/verity/verity_hash.c:350 lib/verity/verity_fec.c:247 @@ -993,7 +993,7 @@ msgstr "Помилка введення-виведення під час шиф msgid "Cannot open device %s." msgstr "Не вдалося відкрити пристрій %s." -#: lib/luks1/keyencryption.c:247 lib/luks2/luks2_keyslot_luks2.c:128 +#: lib/luks1/keyencryption.c:247 lib/luks2/luks2_keyslot_luks2.c:85 msgid "IO error while decrypting keyslot." msgstr "Помилка введення-виведення під час розшифрування слоту ключів." @@ -1083,7 +1083,7 @@ msgid "Cipher hash repaired to lowercase (%s)." msgstr "Виправлений хеш шифрування малими літерами (%s)." #: lib/luks1/keymanage.c:417 lib/luks1/keymanage.c:523 -#: lib/luks1/keymanage.c:777 +#: lib/luks1/keymanage.c:756 #, c-format msgid "Requested LUKS hash %s is not supported." msgstr "Підтримки бажаного хешування LUKS, %s, не передбачено." @@ -1130,7 +1130,7 @@ msgstr "Режим шифрування LUKS %s є некоректним." msgid "LUKS hash %s is invalid." msgstr "Хеш-сума LUKS %s є некоректною." -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 +#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1366 msgid "No known problems detected for LUKS header." msgstr "У заголовку LUKS не виявлено жодних проблем." @@ -1144,50 +1144,50 @@ msgstr "Помилка під час оновлення заголовка LUKS msgid "Error re-reading LUKS header after update on device %s." msgstr "Помилка під час спроби повторного читання заголовка LUKS після оновлення на пристрої %s." -#: lib/luks1/keymanage.c:771 +#: lib/luks1/keymanage.c:750 msgid "Data offset for LUKS header must be either 0 or higher than header size." msgstr "Відступ даних для заголовка LUKS має бути або рівним нулеві, або перевищувати розмір заголовка." -#: lib/luks1/keymanage.c:782 lib/luks1/keymanage.c:853 +#: lib/luks1/keymanage.c:761 lib/luks1/keymanage.c:832 #: lib/luks2/luks2_json_format.c:231 lib/luks2/luks2_json_metadata.c:1261 #: src/utils_reencrypt.c:701 msgid "Wrong LUKS UUID format provided." msgstr "Вказано UUID LUKS у помилковому форматі." -#: lib/luks1/keymanage.c:804 +#: lib/luks1/keymanage.c:783 msgid "Cannot create LUKS header: reading random salt failed." msgstr "Не вдалося створити заголовок LUKS: помилка читання випадкових даних для ініціалізації." -#: lib/luks1/keymanage.c:832 +#: lib/luks1/keymanage.c:811 #, c-format msgid "Cannot create LUKS header: header digest failed (using hash %s)." msgstr "Не вдалося створити заголовок LUKS: помилка під час обчислення контрольної суми заголовка (з використанням хешу %s)." -#: lib/luks1/keymanage.c:877 +#: lib/luks1/keymanage.c:856 #, c-format msgid "Key slot %d active, purge first." msgstr "Слот ключа %d є активним. Його слід спочатку спорожнити." -#: lib/luks1/keymanage.c:883 +#: lib/luks1/keymanage.c:862 #, c-format msgid "Key slot %d material includes too few stripes. Header manipulation?" msgstr "Ентропія даних слота ключа %d є надто низькою. Маніпуляції з заголовком?" -#: lib/luks1/keymanage.c:921 lib/luks2/luks2_keyslot_luks2.c:260 +#: lib/luks1/keymanage.c:900 lib/luks2/luks2_keyslot_luks2.c:217 msgid "PBKDF2 iteration value overflow." msgstr "Переповнення значення ітерації PBKDF2." -#: lib/luks1/keymanage.c:1040 +#: lib/luks1/keymanage.c:1022 #, c-format msgid "Cannot open keyslot (using hash %s)." msgstr "Не вдалося відкрити слот ключа (за допомогою хешу %s)." -#: lib/luks1/keymanage.c:1136 +#: lib/luks1/keymanage.c:1118 #, c-format msgid "Key slot %d is invalid, please select keyslot between 0 and %d." msgstr "Слот ключа %d є некоректним, будь ласка, виберіть слот ключа з номером від 0 до %d." -#: lib/luks1/keymanage.c:1154 lib/luks2/luks2_keyslot.c:715 +#: lib/luks1/keymanage.c:1136 lib/luks2/luks2_keyslot.c:715 #, c-format msgid "Cannot wipe device %s." msgstr "Не вдалося витерти пристрій %s." @@ -1208,56 +1208,48 @@ msgstr "Виявлено несумісний з loop-AES файл ключа." msgid "Kernel does not support loop-AES compatible mapping." msgstr "У ядрі не передбачено підтримки призначення, сумісного з loop-AES." -#: lib/tcrypt/tcrypt.c:497 +#: lib/tcrypt/tcrypt.c:495 #, c-format msgid "Error reading keyfile %s." msgstr "Помилка під час спроби читання файла ключа %s." -#: lib/tcrypt/tcrypt.c:547 +#: lib/tcrypt/tcrypt.c:549 #, c-format msgid "Maximum TCRYPT passphrase length (%zu) exceeded." msgstr "Перевищено максимальну можливу довжину пароля TCRYPT (%zu)." -#: lib/tcrypt/tcrypt.c:589 +#: lib/tcrypt/tcrypt.c:591 #, c-format msgid "PBKDF2 hash algorithm %s not available, skipping." msgstr "Засіб створення хешів PBKDF2 за алгоритмом %s недоступний, пропускаємо." -#: lib/tcrypt/tcrypt.c:608 src/cryptsetup.c:1240 -msgid "Required kernel crypto interface not available." -msgstr "Потрібний для роботи інтерфейс ядра для шифрування недоступний." - -#: lib/tcrypt/tcrypt.c:610 src/cryptsetup.c:1242 -msgid "Ensure you have algif_skcipher kernel module loaded." -msgstr "Переконайтеся, що завантажено модуль ядра algif_skcipher." - -#: lib/tcrypt/tcrypt.c:752 +#: lib/tcrypt/tcrypt.c:743 #, c-format msgid "Activation is not supported for %d sector size." msgstr "Підтримки активації для розміру сектора %d не передбачено." -#: lib/tcrypt/tcrypt.c:758 +#: lib/tcrypt/tcrypt.c:749 msgid "Kernel does not support activation for this TCRYPT legacy mode." msgstr "У ядрі не передбачено підтримки вмикання цього застарілого режиму TCRYPT." -#: lib/tcrypt/tcrypt.c:813 +#: lib/tcrypt/tcrypt.c:804 #, c-format msgid "Activating TCRYPT system encryption for partition %s." msgstr "Активуємо шифрування системи за допомогою TCRYPT для розділу %s." -#: lib/tcrypt/tcrypt.c:828 +#: lib/tcrypt/tcrypt.c:819 msgid "Cannot determine TCRYPT system partition offset, activating whole encrypted area." msgstr "Не вдалося визначити зсу розділу системи TCRYPT, активуємо усю зашифровану область." -#: lib/tcrypt/tcrypt.c:837 +#: lib/tcrypt/tcrypt.c:828 msgid "Cannot determine TCRYPT system partition offset, activating device as a system partition." msgstr "Не вдалося визначити зсу розділу системи TCRYPT, активуємо пристрій як системний розділ." -#: lib/tcrypt/tcrypt.c:917 +#: lib/tcrypt/tcrypt.c:908 msgid "Kernel does not support TCRYPT compatible mapping." msgstr "У ядрі не передбачено підтримки призначення, сумісного з TCRYPT." -#: lib/tcrypt/tcrypt.c:1146 +#: lib/tcrypt/tcrypt.c:1137 msgid "This function is not supported without TCRYPT header load." msgstr "Підтримки цієї дії без завантаження заголовка TCRYPT." @@ -1610,8 +1602,7 @@ msgid "WARNING: LUKS2 keyslots area size changed to % bytes.\n" msgstr "Увага: розмір області слотів ключів LUKS2 змінено до % байтів.\n" #: lib/luks2/luks2_json_metadata.c:1171 lib/luks2/luks2_json_metadata.c:1357 -#: lib/luks2/luks2_json_metadata.c:1417 lib/luks2/luks2_keyslot_luks2.c:81 -#: lib/luks2/luks2_keyslot_luks2.c:105 +#: lib/luks2/luks2_json_metadata.c:1417 lib/luks2/luks2_keyslot_luks2.c:71 #, c-format msgid "Failed to acquire read lock on device %s." msgstr "Не вдалося отримати блокування читання на пристрої %s." @@ -1671,79 +1662,79 @@ msgstr "" msgid "Ignored unknown flag %s." msgstr "Проігноровано невідомий прапорець %s." -#: lib/luks2/luks2_json_metadata.c:2545 lib/luks2/luks2_reencrypt.c:2109 +#: lib/luks2/luks2_json_metadata.c:2563 lib/luks2/luks2_reencrypt.c:2110 #, c-format msgid "Missing key for dm-crypt segment %u" msgstr "Не вистачає ключа для сегмента dm-crypt %u" -#: lib/luks2/luks2_json_metadata.c:2557 lib/luks2/luks2_reencrypt.c:2122 +#: lib/luks2/luks2_json_metadata.c:2575 lib/luks2/luks2_reencrypt.c:2123 msgid "Failed to set dm-crypt segment." msgstr "Не вдалося встановити сегмент dm-crypt." -#: lib/luks2/luks2_json_metadata.c:2563 lib/luks2/luks2_reencrypt.c:2128 +#: lib/luks2/luks2_json_metadata.c:2581 lib/luks2/luks2_reencrypt.c:2129 msgid "Failed to set dm-linear segment." msgstr "Не вдалося встановити сегмент dm-linear." -#: lib/luks2/luks2_json_metadata.c:2683 src/utils_reencrypt.c:578 +#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:578 msgid "No known cipher specification pattern detected in LUKS2 header." msgstr "Не виявлено жодного відомого зразка специфікації шифрування у заголовку LUKS." -#: lib/luks2/luks2_json_metadata.c:2691 +#: lib/luks2/luks2_json_metadata.c:2709 msgid "OPAL device must have static device size." msgstr "Пристій OPAL повинен мати статичний розмір пристрою." -#: lib/luks2/luks2_json_metadata.c:2711 +#: lib/luks2/luks2_json_metadata.c:2729 msgid "Encrypted OPAL device with integrity must be smaller than locking range." msgstr "Зашифрований пристрій OPAL із механізмами цілісності має бути меншим за діапазон блокування." -#: lib/luks2/luks2_json_metadata.c:2716 +#: lib/luks2/luks2_json_metadata.c:2734 msgid "OPAL device must have same size as locking range." msgstr "Пристрій OPAL повинен мати той самий розмір, що і діапазон блокування." -#: lib/luks2/luks2_json_metadata.c:2736 +#: lib/luks2/luks2_json_metadata.c:2754 #, c-format msgid "OPAL device is %s already unlocked.\n" msgstr "Пристрій OPAL %s вже розблоковано.\n" -#: lib/luks2/luks2_json_metadata.c:2775 +#: lib/luks2/luks2_json_metadata.c:2793 msgid "Unsupported device integrity configuration." msgstr "Непідтримувані налаштування цілісності даних на пристрої." -#: lib/luks2/luks2_json_metadata.c:2791 +#: lib/luks2/luks2_json_metadata.c:2809 msgid "Underlying dm-integrity device with unexpected provided data sectors." msgstr "Базовий пристрій dm-integrity із неочікуваними наданими секторами даних." -#: lib/luks2/luks2_json_metadata.c:2886 +#: lib/luks2/luks2_json_metadata.c:2911 msgid "Reencryption in-progress. Cannot deactivate device." msgstr "Виконуємо повторне шифрування. Не можна деактивувати пристрій." -#: lib/luks2/luks2_json_metadata.c:2897 lib/luks2/luks2_reencrypt.c:4286 +#: lib/luks2/luks2_json_metadata.c:2922 lib/luks2/luks2_reencrypt.c:4287 #, c-format msgid "Failed to replace suspended device %s with dm-error target." msgstr "Не вдалося замінити пристрій %s, роботу якого призупинено, ціллю dm-error." -#: lib/luks2/luks2_json_metadata.c:2976 lib/luks2/luks2_json_metadata.c:2998 +#: lib/luks2/luks2_json_metadata.c:3001 lib/luks2/luks2_json_metadata.c:3023 #, c-format msgid "Device %s was deactivated but hardware OPAL device cannot be locked." msgstr "Пристрій %s було деактивовано, але апаратний пристрій OPAL не може бути заблоковано." -#: lib/luks2/luks2_json_metadata.c:3020 +#: lib/luks2/luks2_json_metadata.c:3045 msgid "Unmet LUKS2 requirements detected." msgstr "Виявлено невідповідність вимог LUKS2." -#: lib/luks2/luks2_json_metadata.c:3028 +#: lib/luks2/luks2_json_metadata.c:3053 msgid "Operation incompatible with device marked for legacy reencryption. Aborting." msgstr "Дія є несумісною із пристроєм, який позначено для перешифрування застарілого варіанта. Перериваємо дію." -#: lib/luks2/luks2_json_metadata.c:3030 +#: lib/luks2/luks2_json_metadata.c:3055 msgid "Operation incompatible with device marked for LUKS2 reencryption. Aborting." msgstr "Дія є несумісною із пристроєм, який позначено для перешифрування LUKS2. Перериваємо дію." -#: lib/luks2/luks2_json_metadata.c:3032 +#: lib/luks2/luks2_json_metadata.c:3057 msgid "Operation incompatible with device using OPAL. Aborting." msgstr "Дія є несумісною із пристроєм з використанням OPAL. Перериваємо дію." -#: lib/luks2/luks2_json_metadata.c:3034 +#: lib/luks2/luks2_json_metadata.c:3059 msgid "Operation incompatible with device using inline HW tags. Aborting." msgstr "Дія є несумісною із пристроєм з використанням вбудованих апаратних міток. Перериваємо дію." @@ -1755,22 +1746,22 @@ msgstr "Недостатньо пам'яті для відкриття слот msgid "Keyslot open failed." msgstr "Не вдалося відкрити слот ключів." -#: lib/luks2/luks2_keyslot_luks2.c:42 lib/luks2/luks2_keyslot_luks2.c:99 +#: lib/luks2/luks2_keyslot_luks2.c:40 lib/luks2/luks2_keyslot_luks2.c:77 #, c-format -msgid "Cannot use %s-%s cipher for keyslot encryption." -msgstr "Не можна використовувати шифрування %s-%s для слотів ключів." +msgid "Cannot use %s cipher for keyslot encryption." +msgstr "Не можна використовувати шифрування %s для слотів ключів." -#: lib/luks2/luks2_keyslot_luks2.c:262 +#: lib/luks2/luks2_keyslot_luks2.c:219 msgid "Not enough memory for keyslot key derivation." msgstr "Недостатньо пам'яті для визначення ключа слоту ключів." -#: lib/luks2/luks2_keyslot_luks2.c:276 lib/luks2/luks2_keyslot_luks2.c:405 -#: lib/luks2/luks2_keyslot_reenc.c:434 lib/luks2/luks2_reencrypt.c:2733 +#: lib/luks2/luks2_keyslot_luks2.c:233 lib/luks2/luks2_keyslot_luks2.c:358 +#: lib/luks2/luks2_keyslot_reenc.c:434 lib/luks2/luks2_reencrypt.c:2734 #, c-format msgid "Hash algorithm %s is not available." msgstr "Алгоритм хешування %s є недоступним." -#: lib/luks2/luks2_keyslot_luks2.c:522 +#: lib/luks2/luks2_keyslot_luks2.c:475 msgid "No space for new keyslot." msgstr "Немає простору для нового слоту ключа." @@ -1787,335 +1778,335 @@ msgstr "Не вдалося оновити тип стійкості. Новим msgid "Failed to refresh reencryption verification digest." msgstr "Не вдалося освіжити контрольні суми для перевірки для повторного шифрування." -#: lib/luks2/luks2_luks1_convert.c:532 +#: lib/luks2/luks2_luks1_convert.c:498 #, c-format msgid "Cannot check status of device with uuid: %s." msgstr "Не вдалося перевірити стан пристрою з uuid %s." -#: lib/luks2/luks2_luks1_convert.c:558 +#: lib/luks2/luks2_luks1_convert.c:524 msgid "Unable to convert header with LUKSMETA additional metadata." msgstr "Не вдалося перетворити заголовок з додатковими метаданими LUKSMETA." -#: lib/luks2/luks2_luks1_convert.c:590 lib/luks2/luks2_reencrypt.c:3893 +#: lib/luks2/luks2_luks1_convert.c:556 lib/luks2/luks2_reencrypt.c:3894 #, c-format msgid "Unable to use cipher specification %s-%s for LUKS2." msgstr "Не вдалося використати специфікацію шифрування %s-%s для LUKS2." -#: lib/luks2/luks2_luks1_convert.c:599 +#: lib/luks2/luks2_luks1_convert.c:565 #, c-format msgid "Unable to use cipher specification %s-%s for LUKS2 keyslot." msgstr "Не вдалося використати специфікацію шифрування %s-%s для слоту ключів LUKS2." -#: lib/luks2/luks2_luks1_convert.c:614 +#: lib/luks2/luks2_luks1_convert.c:580 msgid "Unable to move keyslot area. Not enough space." msgstr "Не вдалося пересунути область слотів ключів. Недостатньо місця." -#: lib/luks2/luks2_luks1_convert.c:653 +#: lib/luks2/luks2_luks1_convert.c:619 msgid "Cannot convert to LUKS2 format - invalid metadata." msgstr "Не вдалося перетворити до формату LUKS2 - некоректні метадані." -#: lib/luks2/luks2_luks1_convert.c:670 +#: lib/luks2/luks2_luks1_convert.c:636 msgid "Unable to move keyslot area. LUKS2 keyslots area too small." msgstr "Не вдалося пересунути область слотів ключів. Область слотів ключів LUKS2 є надто малою." -#: lib/luks2/luks2_luks1_convert.c:676 lib/luks2/luks2_luks1_convert.c:1006 +#: lib/luks2/luks2_luks1_convert.c:642 lib/luks2/luks2_luks1_convert.c:972 msgid "Unable to move keyslot area." msgstr "Не вдалося пересунути область слотів ключів." -#: lib/luks2/luks2_luks1_convert.c:791 +#: lib/luks2/luks2_luks1_convert.c:757 msgid "Cannot convert to LUKS1 format - default segment encryption sector size is not 512 bytes." msgstr "Не вдалося перетворити на формат LUKS1 — типовий розмір сектору шифрування сегмента не дорівнює 512 байтам." -#: lib/luks2/luks2_luks1_convert.c:799 +#: lib/luks2/luks2_luks1_convert.c:765 msgid "Cannot convert to LUKS1 format - key slot digests are not LUKS1 compatible." msgstr "Не вдалося перетворити до формату LUKS1 — контрольні суми слотів ключів не сумісні з LUKS1." -#: lib/luks2/luks2_luks1_convert.c:813 +#: lib/luks2/luks2_luks1_convert.c:779 #, c-format msgid "Cannot convert to LUKS1 format - device uses wrapped key cipher %s." msgstr "Не вдалося перетворити до формату LUKS1 — на пристрої використовується загорнуте шифрування ключів %s." -#: lib/luks2/luks2_luks1_convert.c:818 +#: lib/luks2/luks2_luks1_convert.c:784 msgid "Cannot convert to LUKS1 format - device uses more segments." msgstr "Не вдалося перетворити до формату LUKS1 — на пристрої використовується більше сегментів." -#: lib/luks2/luks2_luks1_convert.c:826 +#: lib/luks2/luks2_luks1_convert.c:792 #, c-format msgid "Cannot convert to LUKS1 format - LUKS2 header contains %u token(s)." msgstr "Не вдалося перетворити до формату LUKS1 - заголовок LUKS2 містить %u жетонів." -#: lib/luks2/luks2_luks1_convert.c:832 +#: lib/luks2/luks2_luks1_convert.c:798 msgid "Cannot convert to LUKS1 format - there are no active keyslots." msgstr "Не вдалося перетворити до формату LUKS1 — немає активних слотів ключів." -#: lib/luks2/luks2_luks1_convert.c:844 +#: lib/luks2/luks2_luks1_convert.c:810 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is in invalid state." msgstr "Не вдалося перетворити до формату LUKS1 - слот ключа %u перебуває у некоректному стані." -#: lib/luks2/luks2_luks1_convert.c:849 +#: lib/luks2/luks2_luks1_convert.c:815 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is unbound." msgstr "Не вдалося перетворити до формату LUKS1 - слот ключів %u є неприв'язаним." -#: lib/luks2/luks2_luks1_convert.c:854 +#: lib/luks2/luks2_luks1_convert.c:820 #, c-format msgid "Cannot convert to LUKS1 format - slot %u (over maximum slots) is still active." msgstr "Не вдалося перетворити до формату LUKS1 — слот %u (перевищує максимальну кількість слотів) усе ще є активним." -#: lib/luks2/luks2_luks1_convert.c:859 +#: lib/luks2/luks2_luks1_convert.c:825 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is not LUKS1 compatible." msgstr "не вдалося перетворити до формату LUKS1 — слот ключів %u є несумісним з LUKS1." -#: lib/luks2/luks2_reencrypt.c:1198 +#: lib/luks2/luks2_reencrypt.c:1199 #, c-format msgid "Hotzone size must be multiple of calculated zone alignment (%zu bytes)." msgstr "Розмір «гарячої» ділянки має бути кратним до обчисленого вирівнювання ділянки (%zu байтів)." -#: lib/luks2/luks2_reencrypt.c:1203 +#: lib/luks2/luks2_reencrypt.c:1204 #, c-format msgid "Device size must be multiple of calculated zone alignment (%zu bytes)." msgstr "Розмір пристрою має бути кратним до обчисленого вирівнювання ділянки (%zu байтів)." -#: lib/luks2/luks2_reencrypt.c:1410 lib/luks2/luks2_reencrypt.c:1596 -#: lib/luks2/luks2_reencrypt.c:1679 lib/luks2/luks2_reencrypt.c:1721 -#: lib/luks2/luks2_reencrypt.c:4080 +#: lib/luks2/luks2_reencrypt.c:1411 lib/luks2/luks2_reencrypt.c:1597 +#: lib/luks2/luks2_reencrypt.c:1680 lib/luks2/luks2_reencrypt.c:1722 +#: lib/luks2/luks2_reencrypt.c:4081 msgid "Failed to initialize old segment storage wrapper." msgstr "Не вдалося ініціалізувати обгортку старого сховища сегментів." -#: lib/luks2/luks2_reencrypt.c:1424 lib/luks2/luks2_reencrypt.c:1574 +#: lib/luks2/luks2_reencrypt.c:1425 lib/luks2/luks2_reencrypt.c:1575 msgid "Failed to initialize new segment storage wrapper." msgstr "Не вдалося ініціалізувати обгортку нового сховища сегментів." -#: lib/luks2/luks2_reencrypt.c:1550 lib/luks2/luks2_reencrypt.c:4092 +#: lib/luks2/luks2_reencrypt.c:1551 lib/luks2/luks2_reencrypt.c:4093 msgid "Failed to initialize hotzone protection." msgstr "Не вдалося ініціалізувати захист «гарячої» зони" -#: lib/luks2/luks2_reencrypt.c:1623 +#: lib/luks2/luks2_reencrypt.c:1624 msgid "Failed to read checksums for current hotzone." msgstr "Не вдалося прочитати контрольні суми для поточної «гарячої» ділянки." -#: lib/luks2/luks2_reencrypt.c:1630 lib/luks2/luks2_reencrypt.c:4107 +#: lib/luks2/luks2_reencrypt.c:1631 lib/luks2/luks2_reencrypt.c:4108 #, c-format msgid "Failed to read hotzone area starting at %." msgstr "Не вдалося прочитати «гарячу» ділянку, починаючи з %." -#: lib/luks2/luks2_reencrypt.c:1649 +#: lib/luks2/luks2_reencrypt.c:1650 #, c-format msgid "Failed to decrypt sector %zu." msgstr "Не вдалося розшифрувати сектор %zu." -#: lib/luks2/luks2_reencrypt.c:1655 +#: lib/luks2/luks2_reencrypt.c:1656 #, c-format msgid "Failed to recover sector %zu." msgstr "Не вдалося відновити сектор %zu." -#: lib/luks2/luks2_reencrypt.c:2208 +#: lib/luks2/luks2_reencrypt.c:2209 #, c-format msgid "Source and target device sizes don't match. Source %, target: %." msgstr "Розміри пристроїв джерела та призначення не збігаються. Розмір джерела — %, розмір призначення — %." -#: lib/luks2/luks2_reencrypt.c:2310 +#: lib/luks2/luks2_reencrypt.c:2311 #, c-format msgid "Failed to activate hotzone device %s." msgstr "Не вдалося задіяти пристрій «гарячої» ділянки %s." -#: lib/luks2/luks2_reencrypt.c:2322 +#: lib/luks2/luks2_reencrypt.c:2323 #, c-format msgid "Failed to allocate hotzone device %s." msgstr "Не вдалося розмістити у пам'яті дані пристрою «гарячої» ділянки %s." -#: lib/luks2/luks2_reencrypt.c:2339 +#: lib/luks2/luks2_reencrypt.c:2340 #, c-format msgid "Failed to activate overlay device %s with actual origin table." msgstr "Не вдалося задіяти пристрій-накладку %s зі справжньою таблицею походження." -#: lib/luks2/luks2_reencrypt.c:2346 +#: lib/luks2/luks2_reencrypt.c:2347 #, c-format msgid "Failed to load new mapping for device %s." msgstr "Не вдалося завантажити нову прив'язку для пристрою %s." -#: lib/luks2/luks2_reencrypt.c:2418 +#: lib/luks2/luks2_reencrypt.c:2419 msgid "Failed to refresh reencryption devices stack." msgstr "Не вдалося освіжити тек пристрої для повторного шифрування." -#: lib/luks2/luks2_reencrypt.c:2615 +#: lib/luks2/luks2_reencrypt.c:2616 msgid "Failed to set new keyslots area size." msgstr "Не вдалося встановити розмір області нових слотів ключів." -#: lib/luks2/luks2_reencrypt.c:2751 +#: lib/luks2/luks2_reencrypt.c:2752 #, c-format msgid "Data shift value is not aligned to encryption sector size (% bytes)." msgstr "Значення зміщення даних не вирівняно до розміру сектора для шифрування (% байтів)." -#: lib/luks2/luks2_reencrypt.c:2788 src/utils_reencrypt.c:162 +#: lib/luks2/luks2_reencrypt.c:2789 src/utils_reencrypt.c:162 #, c-format msgid "Unsupported resilience mode %s" msgstr "Непідтримуваний режим стійкості %s" -#: lib/luks2/luks2_reencrypt.c:2824 +#: lib/luks2/luks2_reencrypt.c:2825 msgid "Moved segment size can not be greater than data shift value." msgstr "Розмір пересунутого сегмента не може перевищувати значення зсуву даних." -#: lib/luks2/luks2_reencrypt.c:2866 +#: lib/luks2/luks2_reencrypt.c:2867 msgid "Invalid reencryption resilience parameters." msgstr "Некоректні параметри стійкості для повторного шифрування." -#: lib/luks2/luks2_reencrypt.c:2888 +#: lib/luks2/luks2_reencrypt.c:2889 #, c-format msgid "Moved segment too large. Requested size %, available space for: %." msgstr "Пересунутий сегмент є надто великим. Потрібний розмір %, доступне місце: %." -#: lib/luks2/luks2_reencrypt.c:2977 +#: lib/luks2/luks2_reencrypt.c:2978 msgid "Failed to clear table." msgstr "Не вдалося очистити таблицю." -#: lib/luks2/luks2_reencrypt.c:3063 +#: lib/luks2/luks2_reencrypt.c:3064 #, c-format msgid "Data shift (% sectors) is less than future data offset (% sectors)." msgstr "Зміщення даних (% секторів) є меншим за майбутній зсув даних (% секторів)." -#: lib/luks2/luks2_reencrypt.c:3078 lib/luks2/luks2_reencrypt.c:3085 +#: lib/luks2/luks2_reencrypt.c:3079 lib/luks2/luks2_reencrypt.c:3086 msgid "Reduced data size is larger than real device size." msgstr "Зменшений розмір даних перевищує справжній розмір пристрою." -#: lib/luks2/luks2_reencrypt.c:3095 +#: lib/luks2/luks2_reencrypt.c:3096 #, c-format msgid "Data device is not aligned to encryption sector size (% bytes)." msgstr "Пристрій зберігання даних не вирівняно до розміру сектора для шифрування (% байтів)." -#: lib/luks2/luks2_reencrypt.c:3125 lib/luks2/luks2_reencrypt.c:3643 -#: lib/luks2/luks2_reencrypt.c:3664 +#: lib/luks2/luks2_reencrypt.c:3126 lib/luks2/luks2_reencrypt.c:3644 +#: lib/luks2/luks2_reencrypt.c:3665 #, c-format msgid "Failed to open %s in exclusive mode (already mapped or mounted)." msgstr "Не вдалося відкрити %s в ексклюзивному режимі (вже пов'язано або змонтовано)." -#: lib/luks2/luks2_reencrypt.c:3332 +#: lib/luks2/luks2_reencrypt.c:3333 msgid "Device not marked for LUKS2 reencryption." msgstr "Пристрій не позначено для повторного шифрування LUKS2." -#: lib/luks2/luks2_reencrypt.c:3349 lib/luks2/luks2_reencrypt.c:4403 +#: lib/luks2/luks2_reencrypt.c:3350 lib/luks2/luks2_reencrypt.c:4404 msgid "Failed to load LUKS2 reencryption context." msgstr "Не вдалося завантажити контекст повторного шифрування LUKS2." -#: lib/luks2/luks2_reencrypt.c:3444 lib/luks2/luks2_reencrypt.c:3784 +#: lib/luks2/luks2_reencrypt.c:3445 lib/luks2/luks2_reencrypt.c:3785 msgid "Device is not in reencryption." msgstr "Пристрій не перебуває у повторному шифруванні." -#: lib/luks2/luks2_reencrypt.c:3451 lib/luks2/luks2_reencrypt.c:3791 +#: lib/luks2/luks2_reencrypt.c:3452 lib/luks2/luks2_reencrypt.c:3792 msgid "Reencryption process is already running." msgstr "Процес повторного шифрування вже виконується." -#: lib/luks2/luks2_reencrypt.c:3453 lib/luks2/luks2_reencrypt.c:3793 +#: lib/luks2/luks2_reencrypt.c:3454 lib/luks2/luks2_reencrypt.c:3794 msgid "Failed to acquire reencryption lock." msgstr "Не вдалося створити блокування для повторного шифрування." -#: lib/luks2/luks2_reencrypt.c:3471 +#: lib/luks2/luks2_reencrypt.c:3472 msgid "Cannot proceed with reencryption. Run reencryption recovery first." msgstr "Продовження повторного шифрування неможливе. Спочатку слід виконати відновлення повторного шифрування." -#: lib/luks2/luks2_reencrypt.c:3607 +#: lib/luks2/luks2_reencrypt.c:3608 msgid "Active device size and requested reencryption size don't match." msgstr "Не збігаються розмір активного пристрою і запитаний розмір повторного шифрування." -#: lib/luks2/luks2_reencrypt.c:3621 +#: lib/luks2/luks2_reencrypt.c:3622 msgid "Illegal device size requested in reencryption parameters." msgstr "У параметрах повторного шифрування вказано некоректний розмір пристрою." -#: lib/luks2/luks2_reencrypt.c:3723 +#: lib/luks2/luks2_reencrypt.c:3724 msgid "Reencryption in-progress. Cannot perform recovery." msgstr "Виконується повторне шифрування. Неможливо виконати відновлення." -#: lib/luks2/luks2_reencrypt.c:3744 +#: lib/luks2/luks2_reencrypt.c:3745 msgid "LUKS2 reencryption recovery failed." msgstr "Не вдалося виконати відновлення даних повторного шифрування LUKS2." -#: lib/luks2/luks2_reencrypt.c:3877 lib/luks2/luks2_reencrypt.c:4356 +#: lib/luks2/luks2_reencrypt.c:3878 lib/luks2/luks2_reencrypt.c:4357 msgid "Failed to initialize reencryption device stack." msgstr "Не вдалося ініціалізувати стос пристроїв повторного шифрування." -#: lib/luks2/luks2_reencrypt.c:3910 +#: lib/luks2/luks2_reencrypt.c:3911 msgid "LUKS2 reencryption already initialized in metadata." msgstr "Повторне шифрування LUKS2 вже ініційовано у метаданих." -#: lib/luks2/luks2_reencrypt.c:3918 +#: lib/luks2/luks2_reencrypt.c:3919 msgid "Failed to initialize LUKS2 reencryption in metadata." msgstr "Не вдалося ініціалізувати повторне шифрування LUKS2 лише у метаданих." -#: lib/luks2/luks2_reencrypt.c:3971 lib/luks2/luks2_reencrypt.c:4003 -#: lib/luks2/luks2_reencrypt.c:4033 +#: lib/luks2/luks2_reencrypt.c:3972 lib/luks2/luks2_reencrypt.c:4004 +#: lib/luks2/luks2_reencrypt.c:4034 msgid "Reencryption is not supported for DAX (persistent memory) devices." msgstr "Для пристроїв DAX (сталої пам'яті) не передбачено підтримки повторного шифрування." -#: lib/luks2/luks2_reencrypt.c:4062 +#: lib/luks2/luks2_reencrypt.c:4063 msgid "Failed to set device segments for next reencryption hotzone." msgstr "Не вдалося встановити сегменти пристрою для наступної «гарячої» ділянки повторного шифрування." -#: lib/luks2/luks2_reencrypt.c:4115 +#: lib/luks2/luks2_reencrypt.c:4116 msgid "Failed to write reencryption resilience metadata." msgstr "Не вдалося записати метадані стійкості для повторного шифрування." -#: lib/luks2/luks2_reencrypt.c:4122 +#: lib/luks2/luks2_reencrypt.c:4123 msgid "Decryption failed." msgstr "Помилка розшифрування." -#: lib/luks2/luks2_reencrypt.c:4127 +#: lib/luks2/luks2_reencrypt.c:4128 #, c-format msgid "Failed to write hotzone area starting at %." msgstr "Не вдалося записати «гарячу» ділянку, починаючи з %." -#: lib/luks2/luks2_reencrypt.c:4132 +#: lib/luks2/luks2_reencrypt.c:4133 msgid "Failed to sync data." msgstr "Не вдалося синхронізувати дані." -#: lib/luks2/luks2_reencrypt.c:4140 +#: lib/luks2/luks2_reencrypt.c:4141 msgid "Failed to update metadata after current reencryption hotzone completed." msgstr "Не вдалося оновити метадані після завершення обробки поточної «гарячої» зони повторного шифрування." -#: lib/luks2/luks2_reencrypt.c:4229 +#: lib/luks2/luks2_reencrypt.c:4230 msgid "Failed to write LUKS2 metadata." msgstr "Не вдалося записати метадані LUKS2." -#: lib/luks2/luks2_reencrypt.c:4252 +#: lib/luks2/luks2_reencrypt.c:4253 msgid "Failed to wipe unused data device area." msgstr "Не вдалося витерти область невикористаних даних пристрою." -#: lib/luks2/luks2_reencrypt.c:4258 +#: lib/luks2/luks2_reencrypt.c:4259 #, c-format msgid "Failed to remove unused (unbound) keyslot %d." msgstr "Не вдалося вилучити невикористаний (непов'язаний) слот ключа %d." -#: lib/luks2/luks2_reencrypt.c:4268 +#: lib/luks2/luks2_reencrypt.c:4269 msgid "Failed to remove reencryption keyslot." msgstr "Не вдалося вилучити слот ключа для повторного шифрування." -#: lib/luks2/luks2_reencrypt.c:4278 +#: lib/luks2/luks2_reencrypt.c:4279 #, c-format msgid "Fatal error while reencrypting chunk starting at %, % sectors long." msgstr "Критична помилка під час повторного шифрування фрагмента, починаючи з %, довжиною у % секторів." -#: lib/luks2/luks2_reencrypt.c:4282 +#: lib/luks2/luks2_reencrypt.c:4283 msgid "Online reencryption failed." msgstr "Не вдалося виконати інтерактивне повторне шифрування." -#: lib/luks2/luks2_reencrypt.c:4287 +#: lib/luks2/luks2_reencrypt.c:4288 msgid "Do not resume the device unless replaced with error target manually." msgstr "Не відновлюйте пристрій, якщо не заміните вручну пристрій призначення для помилок." -#: lib/luks2/luks2_reencrypt.c:4339 +#: lib/luks2/luks2_reencrypt.c:4340 msgid "Cannot proceed with reencryption. Unexpected reencryption status." msgstr "Не вдалося виконати повторне шифрування. Неочікуваний стан засобу повторного шифрування." -#: lib/luks2/luks2_reencrypt.c:4345 +#: lib/luks2/luks2_reencrypt.c:4346 msgid "Missing or invalid reencrypt context." msgstr "Не вказано контекст повторного шифрування або вказано некоректний контекст." -#: lib/luks2/luks2_reencrypt.c:4379 lib/luks2/luks2_reencrypt.c:4416 +#: lib/luks2/luks2_reencrypt.c:4380 lib/luks2/luks2_reencrypt.c:4417 msgid "Failed to update reencryption context." msgstr "Не вдалося оновити контекст повторного шифрування." -#: lib/luks2/luks2_reencrypt_digest.c:401 +#: lib/luks2/luks2_reencrypt_digest.c:402 msgid "Reencryption metadata is invalid." msgstr "Метадані повторного шифрування є некоректними." @@ -2147,7 +2138,7 @@ msgstr "Параметри шифрування слоту ключів можн msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encryption." msgstr "Параметри шифрування слоту ключів є несумісними із шифруванням слотів ключів LUKS2." -#: src/cryptsetup.c:150 src/cryptsetup.c:1178 src/cryptsetup.c:1545 +#: src/cryptsetup.c:150 src/cryptsetup.c:1179 src/cryptsetup.c:1544 #: src/utils_reencrypt.c:1887 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." @@ -2175,7 +2166,7 @@ msgstr "Попередження: параметр --hash у простому р msgid "WARNING: The --keyfile-size option is being ignored, the read size is the same as the encryption key size.\n" msgstr "Попередження: параметр --keyfile-size проігноровано, розмір прочитаних даних збігається із розміром ключа шифрування.\n" -#: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 +#: src/cryptsetup.c:226 src/cryptsetup.c:1374 src/cryptsetup.c:1597 #: src/integritysetup.c:188 src/utils_reencrypt.c:2138 #, c-format msgid "Blkid scan failed for %s." @@ -2186,9 +2177,9 @@ msgstr "Помилка сканування Blkid для %s." msgid "Detected device signature(s) on %s. Proceeding further may damage existing data." msgstr "На %s виявлено підписи пристроїв. Подальша обробка може пошкодити наявні дані." -#: src/cryptsetup.c:238 src/cryptsetup.c:1261 src/cryptsetup.c:1309 -#: src/cryptsetup.c:1382 src/cryptsetup.c:1522 src/cryptsetup.c:1610 -#: src/cryptsetup.c:2495 src/cryptsetup.c:2924 src/integritysetup.c:178 +#: src/cryptsetup.c:238 src/cryptsetup.c:1260 src/cryptsetup.c:1308 +#: src/cryptsetup.c:1381 src/cryptsetup.c:1521 src/cryptsetup.c:1609 +#: src/cryptsetup.c:2494 src/cryptsetup.c:2923 src/integritysetup.c:178 #: src/utils_reencrypt.c:111 src/utils_reencrypt.c:457 #: src/utils_reencrypt.c:925 msgid "Operation aborted.\n" @@ -2238,7 +2229,7 @@ msgstr "" "без пароля. Цей дамп слід зберігати у зашифрованому форматі\n" "у безпечному місці." -#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2520 +#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2519 msgid "" "The header dump with volume key is sensitive information\n" "that allows access to encrypted partition without a passphrase.\n" @@ -2263,9 +2254,9 @@ msgstr "Неможливо визначити розмір ключа тому msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "Пристрій %s усе ще є активним, його заплановано для відкладеного вилучення.\n" -#: src/cryptsetup.c:881 src/cryptsetup.c:1808 src/cryptsetup.c:2082 -#: src/cryptsetup.c:2229 src/cryptsetup.c:2648 src/cryptsetup.c:2729 -#: src/cryptsetup.c:3262 +#: src/cryptsetup.c:881 src/cryptsetup.c:1807 src/cryptsetup.c:2081 +#: src/cryptsetup.c:2228 src/cryptsetup.c:2647 src/cryptsetup.c:2728 +#: src/cryptsetup.c:3261 #, c-format msgid "Failed to set external tokens path %s." msgstr "Не вдалося встановити шлях до зовнішніх жетонів %s." @@ -2302,31 +2293,35 @@ msgstr "%-10s %4u ітерацій, пам'ять: %5u, %1u паралельни msgid "Result of benchmark is not reliable." msgstr "Результат тестування є ненадійним." -#: src/cryptsetup.c:1170 +#: src/cryptsetup.c:1171 msgid "# Tests are approximate using memory only (no storage IO).\n" msgstr "# Наближені значення під час перевірки визначаються лише за допомогою оперативної пам’яті (без запису на диск).\n" #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1195 +#: src/cryptsetup.c:1196 #, c-format msgid "#%*s Algorithm | Key | Encryption | Decryption\n" msgstr "№%*s Алгоритм | Ключ | Шифрування | Розшифрування\n" -#: src/cryptsetup.c:1203 +#: src/cryptsetup.c:1204 #, c-format msgid "Cipher %s (with %i bits key) is not available." msgstr "Шифрування %s (розмір ключа — %i бітів) є недоступним." #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1222 +#: src/cryptsetup.c:1225 msgid "# Algorithm | Key | Encryption | Decryption\n" msgstr "№ Алгоритм | Ключ | Шифрування | Розшифрування\n" -#: src/cryptsetup.c:1233 +#: src/cryptsetup.c:1238 msgid "N/A" msgstr "н/д" -#: src/cryptsetup.c:1258 +#: src/cryptsetup.c:1241 +msgid "# Cipher speed test is not available.\n" +msgstr "# Перевірка швидкості шифрування недоступна.\n" + +#: src/cryptsetup.c:1257 msgid "" "Unprotected LUKS2 reencryption metadata detected. Please verify the reencryption operation is desirable (see luksDump output)\n" "and continue (upgrade metadata) only if you acknowledge the operation as genuine." @@ -2334,27 +2329,27 @@ msgstr "" "Виявлено незахищені метадані повторного шифрування LUKS2. Будь ласка, перевірте, чи бажаною є дія з повторного шифрування\n" "(див. виведення luksDump), і продовжуйте (оновлення метаданих), лише якщо впевнені, що дія є бажаною." -#: src/cryptsetup.c:1264 +#: src/cryptsetup.c:1263 msgid "Enter passphrase to protect and upgrade reencryption metadata: " msgstr "Вкажіть пароль для захисту і оновлення метаданих повторного шифрування: " -#: src/cryptsetup.c:1308 +#: src/cryptsetup.c:1307 msgid "Really proceed with LUKS2 reencryption recovery?" msgstr "Ви справді хочете продовжити процедуру відновлення повторного шифрування LUKS2?" -#: src/cryptsetup.c:1317 +#: src/cryptsetup.c:1316 msgid "Enter passphrase to verify reencryption metadata digest: " msgstr "Вкажіть пароль для перевірки контрольної суми метаданих повторного шифрування: " -#: src/cryptsetup.c:1319 +#: src/cryptsetup.c:1318 msgid "Enter passphrase for reencryption recovery: " msgstr "Вкажіть пароль для відновлення повторного шифрування: " -#: src/cryptsetup.c:1381 +#: src/cryptsetup.c:1380 msgid "Really try to repair LUKS device header?" msgstr "Спробувати відновити заголовок пристрою LUKS?" -#: src/cryptsetup.c:1409 src/integritysetup.c:76 src/integritysetup.c:244 +#: src/cryptsetup.c:1408 src/integritysetup.c:76 src/integritysetup.c:244 msgid "" "\n" "Wipe interrupted." @@ -2362,7 +2357,7 @@ msgstr "" "\n" "Витирання перервано." -#: src/cryptsetup.c:1414 src/integritysetup.c:81 src/integritysetup.c:289 +#: src/cryptsetup.c:1413 src/integritysetup.c:81 src/integritysetup.c:289 msgid "" "Wiping device to initialize integrity checksum.\n" "You can interrupt this by pressing CTRL+c (rest of not wiped device will contain invalid checksum).\n" @@ -2370,167 +2365,167 @@ msgstr "" "Витираємо пристрій для ініціалізації контрольних сум для цілісності.\n" "Ви можете перервати цей процес натисканням комбінації клавіш CTRL+C (решта невитертого пристрою міститиме некоректну контрольну суму).\n" -#: src/cryptsetup.c:1436 src/integritysetup.c:103 +#: src/cryptsetup.c:1435 src/integritysetup.c:103 #, c-format msgid "Cannot deactivate temporary device %s." msgstr "Не можна скасувати активацію тимчасового пристрою %s." -#: src/cryptsetup.c:1484 +#: src/cryptsetup.c:1483 msgid "OPAL hw-only encryption does not support --cipher and --key-size, options ignored." msgstr "У апаратному шифрування OPAL не передбачено підтримки параметрів --cipher і --key-size, параметри проігноровано." -#: src/cryptsetup.c:1497 +#: src/cryptsetup.c:1496 msgid "Integrity option can be used only for LUKS2 format." msgstr "Параметр цілісності може бути використано лише для формату LUKS2." -#: src/cryptsetup.c:1502 src/cryptsetup.c:1582 +#: src/cryptsetup.c:1501 src/cryptsetup.c:1581 msgid "Unsupported LUKS2 metadata size options." msgstr "Непідтримувані параметри розміру метаданих LUKS2." -#: src/cryptsetup.c:1507 +#: src/cryptsetup.c:1506 msgid "OPAL is supported only for LUKS2 format." msgstr "Підтримку OPAL передбачено лише для формату LUKS2." -#: src/cryptsetup.c:1512 +#: src/cryptsetup.c:1511 msgid "Inline hw tags are supported only for LUKS2 format." msgstr "Підтримку вбудованих апаратних міток передбачено лише для формату LUKS2." -#: src/cryptsetup.c:1521 +#: src/cryptsetup.c:1520 msgid "Header file does not exist, do you want to create it?" msgstr "Файла заголовка не існує. Хочете його створити?" -#: src/cryptsetup.c:1529 +#: src/cryptsetup.c:1528 #, c-format msgid "Cannot create header file %s." msgstr "Не вдалося створити файл заголовка %s." -#: src/cryptsetup.c:1555 src/integritysetup.c:126 src/integritysetup.c:141 +#: src/cryptsetup.c:1554 src/integritysetup.c:126 src/integritysetup.c:141 #: src/integritysetup.c:150 src/integritysetup.c:328 src/integritysetup.c:336 #: src/integritysetup.c:346 msgid "No known integrity specification pattern detected." msgstr "Не виявлено жодного відомого зразка специфікації цілісності." -#: src/cryptsetup.c:1557 +#: src/cryptsetup.c:1556 msgid "Cannot use specified integrity key size." msgstr "Не можна використовувати вказаний розмір ключа цілісності." -#: src/cryptsetup.c:1575 +#: src/cryptsetup.c:1574 #, c-format msgid "Cannot use %s as on-disk header." msgstr "Не можна використовувати %s як заголовок на диску." -#: src/cryptsetup.c:1604 src/integritysetup.c:172 +#: src/cryptsetup.c:1603 src/integritysetup.c:172 #, c-format msgid "This will overwrite data on %s irrevocably." msgstr "Дані на %s буде перезаписано без можливості відновлення." -#: src/cryptsetup.c:1641 +#: src/cryptsetup.c:1640 msgid "OPAL Admin password cannot be empty." msgstr "Пароль адміністратора OPAL не може бути порожнім." -#: src/cryptsetup.c:1655 src/cryptsetup.c:2099 src/cryptsetup.c:2242 -#: src/cryptsetup.c:2377 src/cryptsetup.c:2443 src/utils_reencrypt_luks1.c:428 +#: src/cryptsetup.c:1654 src/cryptsetup.c:2098 src/cryptsetup.c:2241 +#: src/cryptsetup.c:2376 src/cryptsetup.c:2442 src/utils_reencrypt_luks1.c:428 msgid "Failed to set pbkdf parameters." msgstr "Не вдалося встановити параметри pbkdf." -#: src/cryptsetup.c:1786 +#: src/cryptsetup.c:1785 msgid "Reduced data offset is allowed only for detached LUKS header." msgstr "Зменшений відступ даних можна використовувати лише для від’єднаних заголовків LUKS." -#: src/cryptsetup.c:1793 +#: src/cryptsetup.c:1792 #, c-format msgid "LUKS file container %s is too small for activation, there is no remaining space for data." msgstr "Контейнер файлів LUKS %s є надто малим для активації, на ньому не лишиться місця для даних." -#: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:277 +#: src/cryptsetup.c:1834 src/cryptsetup.c:2247 src/utils_reencrypt.c:277 #: src/utils_reencrypt.c:369 src/utils_reencrypt.c:1907 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "Неможливо визначити розмір ключа тому для LUKS без слотів ключів. Будь ласка, скористайтеся параметром --key-size." -#: src/cryptsetup.c:1854 src/utils_reencrypt.c:303 +#: src/cryptsetup.c:1853 src/utils_reencrypt.c:303 msgid "Device requires two volume keys." msgstr "Для пристрою потрібні два ключі тому." -#: src/cryptsetup.c:1889 +#: src/cryptsetup.c:1888 msgid "Some specified activation parameters were ignored with OPAL hw-only encryption." msgstr "Деякі із вказаних параметрів активації було проігноровано через апаратне шифрування OPAL." -#: src/cryptsetup.c:1894 +#: src/cryptsetup.c:1893 msgid "Device activated but cannot make flags persistent." msgstr "Пристрій задіяно, але не вдалося зробити прапорці сталими." -#: src/cryptsetup.c:1974 src/cryptsetup.c:2042 +#: src/cryptsetup.c:1973 src/cryptsetup.c:2041 #, c-format msgid "Keyslot %d is selected for deletion." msgstr "Слот ключа %d позначено для вилучення." -#: src/cryptsetup.c:1986 src/cryptsetup.c:2046 +#: src/cryptsetup.c:1985 src/cryptsetup.c:2045 msgid "This is the last keyslot. Device will become unusable after purging this key." msgstr "Це останній слот ключа. Пристрій стане непридатним для використання після спорожнення цього ключа." -#: src/cryptsetup.c:1987 +#: src/cryptsetup.c:1986 msgid "Enter any remaining passphrase: " msgstr "Введіть будь-який інший пароль: " -#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 +#: src/cryptsetup.c:1987 src/cryptsetup.c:2047 msgid "Operation aborted, the keyslot was NOT wiped.\n" msgstr "Дію перервано, слот ключів НЕ витерто.\n" -#: src/cryptsetup.c:2024 +#: src/cryptsetup.c:2023 msgid "Enter passphrase to be deleted: " msgstr "Введіть пароль, який слід вилучити: " -#: src/cryptsetup.c:2074 src/cryptsetup.c:2426 src/cryptsetup.c:3086 -#: src/cryptsetup.c:3253 +#: src/cryptsetup.c:2073 src/cryptsetup.c:2425 src/cryptsetup.c:3085 +#: src/cryptsetup.c:3252 #, c-format msgid "Device %s is not a valid LUKS2 device." msgstr "Пристрій %s не є коректним пристроєм LUKS2." -#: src/cryptsetup.c:2113 src/cryptsetup.c:2312 +#: src/cryptsetup.c:2112 src/cryptsetup.c:2311 msgid "Enter new passphrase for key slot: " msgstr "Введіть новий пароль для слота ключа: " -#: src/cryptsetup.c:2147 src/utils_luks.c:342 +#: src/cryptsetup.c:2146 src/utils_luks.c:342 #, c-format msgid "Enter token PIN: " msgstr "Введіть пінкод жетона: " -#: src/cryptsetup.c:2149 src/utils_luks.c:344 +#: src/cryptsetup.c:2148 src/utils_luks.c:344 #, c-format msgid "Enter token %d PIN: " msgstr "Введіть пінкод жетона %d: " -#: src/cryptsetup.c:2208 +#: src/cryptsetup.c:2207 msgid "WARNING: The --key-slot parameter is used for new keyslot number.\n" msgstr "Попередження: параметр --key-slot використано для нового числа слоту ключа.\n" -#: src/cryptsetup.c:2285 src/utils_reencrypt_luks1.c:1094 +#: src/cryptsetup.c:2284 src/utils_reencrypt_luks1.c:1094 #, c-format msgid "Enter any existing passphrase: " msgstr "Введіть будь-який пароль: " -#: src/cryptsetup.c:2381 +#: src/cryptsetup.c:2380 msgid "Enter passphrase to be changed: " msgstr "Введіть пароль, який слід змінити: " -#: src/cryptsetup.c:2397 src/utils_reencrypt_luks1.c:1080 +#: src/cryptsetup.c:2396 src/utils_reencrypt_luks1.c:1080 msgid "Enter new passphrase: " msgstr "Введіть новий пароль: " -#: src/cryptsetup.c:2447 +#: src/cryptsetup.c:2446 msgid "Enter passphrase for keyslot to be converted: " msgstr "Вкажіть пароль для слоту ключа, який буде перетворено: " -#: src/cryptsetup.c:2471 +#: src/cryptsetup.c:2470 msgid "Only one device argument for isLuks operation is supported." msgstr "У команді isLuks можна використовувати лише один аргумент назви пристрою." -#: src/cryptsetup.c:2576 +#: src/cryptsetup.c:2575 #, c-format msgid "Keyslot %d does not contain unbound key." msgstr "Слот ключа %d не містить непов'язаного ключа." -#: src/cryptsetup.c:2581 +#: src/cryptsetup.c:2580 msgid "" "The header dump with unbound key is sensitive information.\n" "This dump should be stored encrypted in a safe place." @@ -2538,52 +2533,52 @@ msgstr "" "Дамп заголовка з непов'язаним ключем є конфіденційними даними.\n" "Цей дамп слід зберігати у зашифрованому форматі у безпечному місці." -#: src/cryptsetup.c:2676 src/cryptsetup.c:2712 +#: src/cryptsetup.c:2675 src/cryptsetup.c:2711 #, c-format msgid "%s is not active %s device name." msgstr "%s не є назвою активного пристрою %s." -#: src/cryptsetup.c:2707 +#: src/cryptsetup.c:2706 #, c-format msgid "%s is not active LUKS device name or header is missing." msgstr "%s не є назвою активного пристрою LUKS або пропущено заголовок." -#: src/cryptsetup.c:2784 src/cryptsetup.c:2803 +#: src/cryptsetup.c:2783 src/cryptsetup.c:2802 msgid "Option --header-backup-file is required." msgstr "Слід вказати параметр --header-backup-file." -#: src/cryptsetup.c:2834 +#: src/cryptsetup.c:2833 #, c-format msgid "%s is not cryptsetup managed device." msgstr "%s не є керованим cryptsetup пристроєм." -#: src/cryptsetup.c:2845 +#: src/cryptsetup.c:2844 #, c-format msgid "Refresh is not supported for device type %s" msgstr "Підтримки дії з оновлення для пристрою типу %s не передбачено." -#: src/cryptsetup.c:2895 +#: src/cryptsetup.c:2894 #, c-format msgid "Unrecognized metadata device type %s." msgstr "Нерозпізнаний тип пристрою метаданих, %s." -#: src/cryptsetup.c:2897 +#: src/cryptsetup.c:2896 msgid "Command requires device and mapped name as arguments." msgstr "Аргументами команди мають бути назва пристрою та призначена до нього назва." -#: src/cryptsetup.c:2915 +#: src/cryptsetup.c:2914 msgid "Enter OPAL PSID: " msgstr "Введіть PSID OPAL: " -#: src/cryptsetup.c:2915 +#: src/cryptsetup.c:2914 msgid "Enter OPAL Admin password: " msgstr "Введіть пароль адміністратора OPAL: " -#: src/cryptsetup.c:2923 +#: src/cryptsetup.c:2922 msgid "WARNING: WHOLE disk will be factory reset and all data will be lost! Continue?" msgstr "УВАГА: УВЕСЬ диск буде повернуто до початкових параметрів, а усі дані на ньому буде втрачено! Виконати дію?" -#: src/cryptsetup.c:2966 +#: src/cryptsetup.c:2965 #, c-format msgid "" "This operation will erase all keyslots on device %s.\n" @@ -2592,363 +2587,363 @@ msgstr "" "У результаті виконання цієї операції буде витерто усі слоти ключів на пристрої %s.\n" "Після виконання цієї дії пристроєм не можна буде скористатися." -#: src/cryptsetup.c:2973 +#: src/cryptsetup.c:2972 msgid "Operation aborted, keyslots were NOT wiped.\n" msgstr "Дію перервано, слоти ключів НЕ витерто.\n" -#: src/cryptsetup.c:3012 +#: src/cryptsetup.c:3011 msgid "Invalid LUKS type, only luks1 and luks2 are supported." msgstr "Некоректний тип LUKS. Передбачено підтримку лише luks1 і luks2." -#: src/cryptsetup.c:3028 +#: src/cryptsetup.c:3027 #, c-format msgid "Device is already %s type." msgstr "Пристрій вже належить до типу %s." -#: src/cryptsetup.c:3035 +#: src/cryptsetup.c:3034 #, c-format msgid "This operation will convert %s to %s format.\n" msgstr "Ця дія перетворить %s до формату %s.\n" -#: src/cryptsetup.c:3038 +#: src/cryptsetup.c:3037 msgid "Operation aborted, device was NOT converted.\n" msgstr "Дію перервано, дані пристрою НЕ перетворено.\n" -#: src/cryptsetup.c:3078 +#: src/cryptsetup.c:3077 msgid "Option --priority, --label or --subsystem is missing." msgstr "Пропущено параметр --priority, --label або --subsystem." -#: src/cryptsetup.c:3112 src/cryptsetup.c:3152 src/cryptsetup.c:3172 +#: src/cryptsetup.c:3111 src/cryptsetup.c:3151 src/cryptsetup.c:3171 #, c-format msgid "Token %d is invalid." msgstr "Жетон %d є некоректним." -#: src/cryptsetup.c:3115 src/cryptsetup.c:3175 +#: src/cryptsetup.c:3114 src/cryptsetup.c:3174 #, c-format msgid "Token %d in use." msgstr "Жетон %d використовується." -#: src/cryptsetup.c:3127 +#: src/cryptsetup.c:3126 #, c-format msgid "Failed to add luks2-keyring token %d." msgstr "Не вдалося додати жетон %d зі сховища ключів luks2." -#: src/cryptsetup.c:3138 src/cryptsetup.c:3201 +#: src/cryptsetup.c:3137 src/cryptsetup.c:3200 #, c-format msgid "Failed to assign token %d to keyslot %d." msgstr "Не вдалося прив'язати жетон %d до слоту ключа %d." -#: src/cryptsetup.c:3155 +#: src/cryptsetup.c:3154 #, c-format msgid "Token %d is not in use." msgstr "Жетон %d не використовується." -#: src/cryptsetup.c:3192 +#: src/cryptsetup.c:3191 msgid "Failed to import token from file." msgstr "Не вдалося імпортувати жетон з файла." -#: src/cryptsetup.c:3217 +#: src/cryptsetup.c:3216 #, c-format msgid "Failed to get token %d for export." msgstr "Не вдалося отримати жетон %d для експортування." -#: src/cryptsetup.c:3230 +#: src/cryptsetup.c:3229 #, c-format msgid "Token %d is not assigned to keyslot %d." msgstr "Жетон %d не пов'язано зі слотом ключа %d." -#: src/cryptsetup.c:3232 src/cryptsetup.c:3239 +#: src/cryptsetup.c:3231 src/cryptsetup.c:3238 #, c-format msgid "Failed to unassign token %d from keyslot %d." msgstr "Не вдалося відв'язати жетон %d від слоту ключа %d." -#: src/cryptsetup.c:3298 +#: src/cryptsetup.c:3297 msgid "Option --tcrypt-hidden, --tcrypt-system or --tcrypt-backup is supported only for TCRYPT device." msgstr "Підтримку параметрів --tcrypt-hidden, --tcrypt-system і --tcrypt-backup передбачено лише для пристроїв TCRYPT." -#: src/cryptsetup.c:3301 +#: src/cryptsetup.c:3300 msgid "Option --veracrypt or --disable-veracrypt is supported only for TCRYPT device type." msgstr "Підтримку параметра --veracrypt або --disable-veracrypt передбачено лише для пристроїв TCRYPT." -#: src/cryptsetup.c:3304 +#: src/cryptsetup.c:3303 msgid "Option --veracrypt-pim is supported only for VeraCrypt compatible devices." msgstr "Параметр --veracrypt-pim можна використовувати лише для сумісних із VeraCrypt пристроїв." -#: src/cryptsetup.c:3308 +#: src/cryptsetup.c:3307 msgid "Option --veracrypt-query-pim is supported only for VeraCrypt compatible devices." msgstr "Параметр --veracrypt-query-pim можна використовувати лише для сумісних із VeraCrypt пристроїв." -#: src/cryptsetup.c:3310 +#: src/cryptsetup.c:3309 msgid "The options --veracrypt-pim and --veracrypt-query-pim are mutually exclusive." msgstr "Не можна поєднувати параметри --veracrypt-pim і --veracrypt-query-pim." -#: src/cryptsetup.c:3319 +#: src/cryptsetup.c:3318 msgid "Option --persistent is not allowed with --test-passphrase." msgstr "Параметр --persistent не можна використовувати разом із --test-passphrase." -#: src/cryptsetup.c:3322 +#: src/cryptsetup.c:3321 msgid "Options --refresh and --test-passphrase are mutually exclusive." msgstr "Не можна поєднувати параметри --refresh і --test-passphrase." -#: src/cryptsetup.c:3325 +#: src/cryptsetup.c:3324 msgid "Option --shared is allowed only for open of plain device." msgstr "Параметр --shared можна використовувати лише для відкриття незашифрованого пристрою." -#: src/cryptsetup.c:3328 +#: src/cryptsetup.c:3327 msgid "Option --skip is supported only for open of plain and loopaes devices." msgstr "Підтримку параметра --skip передбачено лише для відкриття незашифрованих пристроїв та пристроїв loopaes." -#: src/cryptsetup.c:3331 +#: src/cryptsetup.c:3330 msgid "Option --offset with open action is only supported for plain and loopaes devices." msgstr "Підтримку параметра --offset разом із дією з відкриття передбачено лише для незашифрованих пристроїв та пристроїв loopaes." -#: src/cryptsetup.c:3334 +#: src/cryptsetup.c:3333 msgid "Option --tcrypt-hidden cannot be combined with --allow-discards." msgstr "Параметр --tcrypt-hidden не можна поєднувати з --allow-discards." -#: src/cryptsetup.c:3338 +#: src/cryptsetup.c:3337 msgid "Sector size option with open action is supported only for plain devices." msgstr "Підтримку параметра розміру сектора разом із дією з відкриття передбачено лише для незашифрованих пристроїв." -#: src/cryptsetup.c:3342 +#: src/cryptsetup.c:3341 msgid "Large IV sectors option is supported only for opening plain type device with sector size larger than 512 bytes." msgstr "Підтримку можливості використання великих секторів IV передбачено лише для відкриття пристроїв простого типу з розміром сектора, який перевищує 512 байтів." -#: src/cryptsetup.c:3347 +#: src/cryptsetup.c:3346 msgid "Option --test-passphrase is allowed only for open of LUKS, TCRYPT, BITLK and FVAULT2 devices." msgstr "Параметр --test-passphrase можна використовувати лише для відкриття пристроїв LUKS, TCRYPT, BITLK та FVAULT2." -#: src/cryptsetup.c:3350 src/cryptsetup.c:3380 +#: src/cryptsetup.c:3349 src/cryptsetup.c:3379 msgid "Options --device-size and --size cannot be combined." msgstr "Не можна одночасно використовувати параметри --device-size і --size." -#: src/cryptsetup.c:3353 +#: src/cryptsetup.c:3352 msgid "Option --unbound is allowed only for open of luks device." msgstr "Параметр --sunbound можна використовувати лише для відкриття пристрою LUKS." -#: src/cryptsetup.c:3356 +#: src/cryptsetup.c:3355 msgid "Option --unbound cannot be used without --test-passphrase." msgstr "Параметр --unbound не можна використовувати без --test-passphrase." -#: src/cryptsetup.c:3360 +#: src/cryptsetup.c:3359 msgid "Option --volume-key-keyring cannot be combined with --hash or --volume-key-file." msgstr "Параметр --volume-key-keyring не можна поєднувати з --hash і --volume-key-file." -#: src/cryptsetup.c:3363 +#: src/cryptsetup.c:3362 msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "Обидва параметри --volume-key-file має бути поєднано із відповідними параметрами --key-size." -#: src/cryptsetup.c:3372 src/veritysetup.c:673 src/integritysetup.c:787 +#: src/cryptsetup.c:3371 src/veritysetup.c:673 src/integritysetup.c:787 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "Не можна одночасно використовувати параметр --cancel-deferred і --deferred." -#: src/cryptsetup.c:3388 +#: src/cryptsetup.c:3387 msgid "Option --active-name can be set only for LUKS2 device." msgstr "Параметр --active-name можна встановлювати лише для пристроїв LUKS2." -#: src/cryptsetup.c:3391 +#: src/cryptsetup.c:3390 msgid "Options --active-name and --force-offline-reencrypt cannot be combined." msgstr "Не можна одночасно використовувати параметри ---active-name і --force-offline-reencrypt." -#: src/cryptsetup.c:3394 +#: src/cryptsetup.c:3393 msgid "Options --new-volume-key-file and --keep-key cannot be combined." msgstr "Не можна поєднувати параметри --new-volume-key-file і --keep-key." -#: src/cryptsetup.c:3397 +#: src/cryptsetup.c:3396 msgid "Options --new-volume-key-keyring and --keep-key cannot be combined." msgstr "Не можна поєднувати параметри --new-volume-key-keyring і --keep-key." -#: src/cryptsetup.c:3405 src/cryptsetup.c:3435 +#: src/cryptsetup.c:3404 src/cryptsetup.c:3434 msgid "Keyslot specification is required." msgstr "Слід вказати специфікація слотів ключів." -#: src/cryptsetup.c:3413 +#: src/cryptsetup.c:3412 msgid "Options --align-payload and --offset cannot be combined." msgstr "Не можна одночасно використовувати параметри --align-payload і --offset." -#: src/cryptsetup.c:3416 +#: src/cryptsetup.c:3415 msgid "Option --integrity-no-wipe can be used only for format action with integrity extension." msgstr "Параметром --integrity-no-wipe можна користуватися лише для дії з форматування із розширенням забезпечення цілісності." -#: src/cryptsetup.c:3419 +#: src/cryptsetup.c:3418 msgid "Only one of --use-[u]random options is allowed." msgstr "Можна використовувати лише один з параметрів --use-[u]random." -#: src/cryptsetup.c:3427 +#: src/cryptsetup.c:3426 msgid "Key size is required with --unbound option." msgstr "Разом із параметром --unbound слід вказувати розмір ключа." -#: src/cryptsetup.c:3447 +#: src/cryptsetup.c:3446 msgid "Invalid token action." msgstr "Некоректна дія з жетоном." -#: src/cryptsetup.c:3450 +#: src/cryptsetup.c:3449 msgid "--key-description parameter is mandatory for token add action." msgstr "Параметр --key-description є обов'язковим для дій із додавання жетонів." -#: src/cryptsetup.c:3454 src/cryptsetup.c:3467 +#: src/cryptsetup.c:3453 src/cryptsetup.c:3466 msgid "Action requires specific token. Use --token-id parameter." msgstr "Для виконання дії потрібен специфічний жетон. Скористайтеся параметром --token-id." -#: src/cryptsetup.c:3458 +#: src/cryptsetup.c:3457 msgid "Option --unbound is valid only with token add action." msgstr "Параметр --unbound можна використовувати лише разом із дією з додавання жетона." -#: src/cryptsetup.c:3460 +#: src/cryptsetup.c:3459 msgid "Options --key-slot and --unbound cannot be combined." msgstr "Не можна поєднувати параметри --key-slot і --unbound." -#: src/cryptsetup.c:3465 +#: src/cryptsetup.c:3464 msgid "Action requires specific keyslot. Use --key-slot parameter." msgstr "Дія потребує зазначення слоту ключа. Скористайтеся параметром --key-slot." -#: src/cryptsetup.c:3481 +#: src/cryptsetup.c:3480 msgid " [--type ] []" msgstr "<пристрій> [--type <тип>] [<назва>]" -#: src/cryptsetup.c:3481 src/veritysetup.c:487 src/integritysetup.c:554 +#: src/cryptsetup.c:3480 src/veritysetup.c:487 src/integritysetup.c:554 msgid "open device as " msgstr "відкрити пристрій як <назва>" -#: src/cryptsetup.c:3482 src/cryptsetup.c:3483 src/cryptsetup.c:3484 +#: src/cryptsetup.c:3481 src/cryptsetup.c:3482 src/cryptsetup.c:3483 #: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:555 #: src/integritysetup.c:556 src/integritysetup.c:558 msgid "" msgstr "<назва>" -#: src/cryptsetup.c:3482 src/veritysetup.c:488 src/integritysetup.c:555 +#: src/cryptsetup.c:3481 src/veritysetup.c:488 src/integritysetup.c:555 msgid "close device (remove mapping)" msgstr "закрити пристрій (вилучити призначення)" -#: src/cryptsetup.c:3483 src/integritysetup.c:558 +#: src/cryptsetup.c:3482 src/integritysetup.c:558 msgid "resize active device" msgstr "змінити розмір активного пристрою" -#: src/cryptsetup.c:3484 +#: src/cryptsetup.c:3483 msgid "show device status" msgstr "показати стан пристрою" -#: src/cryptsetup.c:3485 +#: src/cryptsetup.c:3484 msgid "[--cipher ]" msgstr "[--cipher <шифр>]" -#: src/cryptsetup.c:3485 +#: src/cryptsetup.c:3484 msgid "benchmark cipher" msgstr "перевірити швидкодію шифрування" -#: src/cryptsetup.c:3486 src/cryptsetup.c:3487 src/cryptsetup.c:3488 -#: src/cryptsetup.c:3489 src/cryptsetup.c:3490 src/cryptsetup.c:3497 -#: src/cryptsetup.c:3498 src/cryptsetup.c:3499 src/cryptsetup.c:3500 -#: src/cryptsetup.c:3501 src/cryptsetup.c:3502 src/cryptsetup.c:3503 -#: src/cryptsetup.c:3504 src/cryptsetup.c:3505 src/cryptsetup.c:3506 +#: src/cryptsetup.c:3485 src/cryptsetup.c:3486 src/cryptsetup.c:3487 +#: src/cryptsetup.c:3488 src/cryptsetup.c:3489 src/cryptsetup.c:3496 +#: src/cryptsetup.c:3497 src/cryptsetup.c:3498 src/cryptsetup.c:3499 +#: src/cryptsetup.c:3500 src/cryptsetup.c:3501 src/cryptsetup.c:3502 +#: src/cryptsetup.c:3503 src/cryptsetup.c:3504 src/cryptsetup.c:3505 msgid "" msgstr "<пристрій>" -#: src/cryptsetup.c:3486 +#: src/cryptsetup.c:3485 msgid "try to repair on-disk metadata" msgstr "спробувати виправити метадані на диску" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3486 msgid "reencrypt LUKS2 device" msgstr "повторно зашифрувати пристрій LUKS2" -#: src/cryptsetup.c:3488 +#: src/cryptsetup.c:3487 msgid "erase all keyslots (remove encryption key)" msgstr "витерти усі слоти ключів (вилучити ключ шифрування)" -#: src/cryptsetup.c:3489 +#: src/cryptsetup.c:3488 msgid "convert LUKS from/to LUKS2 format" msgstr "перетворити LUKS із формату LUKS2 або навпаки" -#: src/cryptsetup.c:3490 +#: src/cryptsetup.c:3489 msgid "set permanent configuration options for LUKS2" msgstr "встановити сталі параметри налаштування для LUKS2" -#: src/cryptsetup.c:3491 src/cryptsetup.c:3492 +#: src/cryptsetup.c:3490 src/cryptsetup.c:3491 msgid " []" msgstr "<пристрій> [<новий файл ключа>]" -#: src/cryptsetup.c:3491 +#: src/cryptsetup.c:3490 msgid "formats a LUKS device" msgstr "форматує пристрій LUKS" -#: src/cryptsetup.c:3492 +#: src/cryptsetup.c:3491 msgid "add key to LUKS device" msgstr "додати ключ до пристрою LUKS" -#: src/cryptsetup.c:3493 src/cryptsetup.c:3494 src/cryptsetup.c:3495 +#: src/cryptsetup.c:3492 src/cryptsetup.c:3493 src/cryptsetup.c:3494 msgid " []" msgstr "<пристрій> [<файл ключа>]" -#: src/cryptsetup.c:3493 +#: src/cryptsetup.c:3492 msgid "removes supplied key or key file from LUKS device" msgstr "вилучає наданий ключ або файл ключа з пристрою LUKS" -#: src/cryptsetup.c:3494 +#: src/cryptsetup.c:3493 msgid "changes supplied key or key file of LUKS device" msgstr "змінює наданий ключ або файл ключа пристрою LUKS" -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3494 msgid "converts a key to new pbkdf parameters" msgstr "перетворює ключ до нових параметрів pbkdf" -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3495 msgid " " msgstr "<пристрій> <слот ключа>" -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3495 msgid "wipes key with number from LUKS device" msgstr "вилучає ключ з номером <слот ключа> з пристрою LUKS" -#: src/cryptsetup.c:3497 +#: src/cryptsetup.c:3496 msgid "print UUID of LUKS device" msgstr "вивести UUID пристрою LUKS" -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3497 msgid "tests for LUKS partition header" msgstr "виконати спробу виявлення заголовка розділу LUKS на пристрої <пристрій>" -#: src/cryptsetup.c:3499 +#: src/cryptsetup.c:3498 msgid "dump LUKS partition information" msgstr "створити дамп даних щодо розділу LUKS" -#: src/cryptsetup.c:3500 +#: src/cryptsetup.c:3499 msgid "dump TCRYPT device information" msgstr "створити дамп даних пристрою TCRYPT" -#: src/cryptsetup.c:3501 +#: src/cryptsetup.c:3500 msgid "dump BITLK device information" msgstr "створити дамп даних пристрою BITLK" -#: src/cryptsetup.c:3502 +#: src/cryptsetup.c:3501 msgid "dump FVAULT2 device information" msgstr "створити дамп даних пристрою FVAULT2" -#: src/cryptsetup.c:3503 +#: src/cryptsetup.c:3502 msgid "Suspend LUKS device and wipe key (all IOs are frozen)" msgstr "Приспати пристрій LUKS і витерти ключ (роботу всіх каналів введення-виведення буде заморожено)" -#: src/cryptsetup.c:3504 +#: src/cryptsetup.c:3503 msgid "Resume suspended LUKS device" msgstr "Відновити роботу приспаного пристрою LUKS" -#: src/cryptsetup.c:3505 +#: src/cryptsetup.c:3504 msgid "Backup LUKS device header and keyslots" msgstr "Створити резервну копію заголовка пристрою LUKS і слотів ключів" -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3505 msgid "Restore LUKS device header and keyslots" msgstr "Відновити заголовок пристрою LUKS і слоти ключів" -#: src/cryptsetup.c:3507 +#: src/cryptsetup.c:3506 msgid " " msgstr " <пристрій>" -#: src/cryptsetup.c:3507 +#: src/cryptsetup.c:3506 msgid "Manipulate LUKS2 tokens" msgstr "Керування жетонами LUKS2" -#: src/cryptsetup.c:3526 src/veritysetup.c:505 src/integritysetup.c:573 +#: src/cryptsetup.c:3525 src/veritysetup.c:505 src/integritysetup.c:573 msgid "" "\n" " is one of:\n" @@ -2956,7 +2951,7 @@ msgstr "" "\n" "<дія> є однією з таких:\n" -#: src/cryptsetup.c:3532 +#: src/cryptsetup.c:3531 msgid "" "\n" "You can also use old syntax aliases:\n" @@ -2969,7 +2964,7 @@ msgstr "" "\tвідкрити: create (plainOpen), luksOpen, loopaesOpen, tcryptOpen, bitlkOpen, fvault2Open\n" "\tзакрити: remove (plainClose), luksClose, loopaesClose, tcryptClose, bitlkClose, fvault2Close\n" -#: src/cryptsetup.c:3536 +#: src/cryptsetup.c:3535 #, c-format msgid "" "\n" @@ -2984,7 +2979,7 @@ msgstr "" "<слот ключа> — номер слота ключа LUKS, який слід змінити\n" "<файл ключа> — необов’язковий файл ключа для нового ключа для дії luksAddKey\n" -#: src/cryptsetup.c:3543 +#: src/cryptsetup.c:3542 #, c-format msgid "" "\n" @@ -2993,7 +2988,7 @@ msgstr "" "\n" "Типовий укомпільований формат метаданих — %s (для дії luksFormat).\n" -#: src/cryptsetup.c:3548 +#: src/cryptsetup.c:3547 msgid "" "\n" "LUKS2 external token plugin support is enabled.\n" @@ -3001,12 +2996,12 @@ msgstr "" "\n" "Підтримку додатків зовнішніх жетонів LUKS2 увімкнено.\n" -#: src/cryptsetup.c:3549 +#: src/cryptsetup.c:3548 #, c-format msgid "LUKS2 external token plugin path: %s.\n" msgstr "Шлях до теки додатків зовнішніх жетонів LUKS2: %s.\n" -#: src/cryptsetup.c:3551 +#: src/cryptsetup.c:3550 msgid "" "\n" "LUKS2 external token plugin support is disabled.\n" @@ -3014,7 +3009,7 @@ msgstr "" "\n" "Підтримку додатків зовнішніх жетонів LUKS2 вимкнено.\n" -#: src/cryptsetup.c:3555 +#: src/cryptsetup.c:3554 #, c-format msgid "" "\n" @@ -3031,7 +3026,7 @@ msgstr "" "Типовий PBKDF для LUKS2: %s\n" "\tЧас ітерації: %d, потрібний обсяг пам'яті: %d кБ, паралельних потоків: %d\n" -#: src/cryptsetup.c:3566 +#: src/cryptsetup.c:3565 #, c-format msgid "" "\n" @@ -3046,122 +3041,122 @@ msgstr "" "\tзвичайне: %s, ключ: %d-бітовий, хешування пароля: %s\n" "\tLUKS: %s, ключ: %d-бітовий, хешування заголовка LUKS: %s, RNG: %s\n" -#: src/cryptsetup.c:3575 +#: src/cryptsetup.c:3574 msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: типовий розмір ключа у режимі XTS (два вбудованих ключа) буде подвоєно.\n" -#: src/cryptsetup.c:3593 src/veritysetup.c:647 src/integritysetup.c:733 +#: src/cryptsetup.c:3592 src/veritysetup.c:647 src/integritysetup.c:733 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: слід вказати у параметрах %s" -#: src/cryptsetup.c:3633 src/utils_reencrypt_luks1.c:1143 +#: src/cryptsetup.c:3632 src/utils_reencrypt_luks1.c:1143 msgid "Key slot is invalid." msgstr "Некоректний слот ключа." -#: src/cryptsetup.c:3661 +#: src/cryptsetup.c:3660 msgid "Device size must be multiple of 512 bytes sector." msgstr "Розмір пристрою має бути кратним до 512-байтового сектора." -#: src/cryptsetup.c:3666 +#: src/cryptsetup.c:3665 msgid "Invalid max reencryption hotzone size specification." msgstr "Некоректна специфікація розміру «гарячої» ділянки повторного шифрування." -#: src/cryptsetup.c:3680 src/cryptsetup.c:3697 src/cryptsetup.c:3709 +#: src/cryptsetup.c:3679 src/cryptsetup.c:3696 src/cryptsetup.c:3708 msgid "Key size must be a multiple of 8 bits" msgstr "Розмір ключа має бути кратним 8 бітам" -#: src/cryptsetup.c:3687 +#: src/cryptsetup.c:3686 msgid "At most 2 key size specifications can be supplied." msgstr "Можна надати не більше 2 специфікацій розмірів ключів." -#: src/cryptsetup.c:3716 src/cryptsetup.c:3727 +#: src/cryptsetup.c:3715 src/cryptsetup.c:3726 #, c-format msgid "At most %d volume key specifications can be supplied." msgstr "Можна надати не більше %d специфікацій ключів томів." -#: src/cryptsetup.c:3739 +#: src/cryptsetup.c:3738 #, c-format msgid "At most %d keyring link specifications can be supplied." msgstr "Можна надати не більше %d специфікацій посилань на сховище ключів." -#: src/cryptsetup.c:3748 +#: src/cryptsetup.c:3747 msgid "Maximum device reduce size is 1 GiB." msgstr "Максимальний розмір зменшення розміру пристрою дорівнює 1 ГіБ." -#: src/cryptsetup.c:3751 +#: src/cryptsetup.c:3750 msgid "Reduce size must be multiple of 512 bytes sector." msgstr "Розмір зменшення має бути кратним до 512-байтового сектора." -#: src/cryptsetup.c:3768 +#: src/cryptsetup.c:3767 msgid "Option --priority can be only ignore/normal/prefer." msgstr "Значенням для параметра --priority може бути лише один з таких рядків: ignore, normal або prefer." -#: src/cryptsetup.c:3787 src/veritysetup.c:568 src/integritysetup.c:653 +#: src/cryptsetup.c:3786 src/veritysetup.c:568 src/integritysetup.c:653 msgid "Show this help message" msgstr "Показати цю довідку" -#: src/cryptsetup.c:3788 src/veritysetup.c:569 src/integritysetup.c:654 +#: src/cryptsetup.c:3787 src/veritysetup.c:569 src/integritysetup.c:654 msgid "Display brief usage" msgstr "Показати короткі настанови щодо користування" -#: src/cryptsetup.c:3789 src/veritysetup.c:570 src/integritysetup.c:655 +#: src/cryptsetup.c:3788 src/veritysetup.c:570 src/integritysetup.c:655 msgid "Print package version" msgstr "Вивести дані щодо версії пакунка" -#: src/cryptsetup.c:3800 src/veritysetup.c:581 src/integritysetup.c:666 +#: src/cryptsetup.c:3799 src/veritysetup.c:581 src/integritysetup.c:666 msgid "Help options:" msgstr "Пункти довідки:" -#: src/cryptsetup.c:3823 src/veritysetup.c:602 src/integritysetup.c:686 +#: src/cryptsetup.c:3822 src/veritysetup.c:602 src/integritysetup.c:686 msgid "[OPTION...] " msgstr "[ПАРАМЕТР...] <дія> <параметри_дії>" -#: src/cryptsetup.c:3832 src/veritysetup.c:611 src/integritysetup.c:697 +#: src/cryptsetup.c:3831 src/veritysetup.c:611 src/integritysetup.c:697 msgid "Argument missing." msgstr "Не вказано аргумент <дія>." -#: src/cryptsetup.c:3911 src/veritysetup.c:642 src/integritysetup.c:728 +#: src/cryptsetup.c:3910 src/veritysetup.c:642 src/integritysetup.c:728 msgid "Unknown action." msgstr "Невідома дія." -#: src/cryptsetup.c:3929 +#: src/cryptsetup.c:3928 msgid "Option --key-file takes precedence over specified key file argument." msgstr "Параметр --key-file має пріоритет над вказаним параметром файла ключа." -#: src/cryptsetup.c:3935 +#: src/cryptsetup.c:3934 msgid "Only one --key-file argument is allowed." msgstr "Можна використовувати лише один аргумент --key-file." -#: src/cryptsetup.c:3940 +#: src/cryptsetup.c:3939 msgid "Password-based key derivation function (PBKDF) can be only pbkdf2 or argon2i/argon2id." msgstr "Функцією отримання ключа на основі пароля (PBKDF) може бути лише pbkdf2 або argon2i/argon2id." -#: src/cryptsetup.c:3945 +#: src/cryptsetup.c:3944 msgid "PBKDF forced iterations cannot be combined with iteration time option." msgstr "Примусові ітерації PBKDF не можна поєднувати із параметром тривалості ітерацій." -#: src/cryptsetup.c:3950 +#: src/cryptsetup.c:3949 msgid "Cannot link volume key to a keyring when keyring is disabled." msgstr "Неможливо пов'язати ключ тому зі сховищем ключів, якщо сховище ключів вимкнено." -#: src/cryptsetup.c:3955 +#: src/cryptsetup.c:3954 msgid "Cannot use keyring key description when keyring is disabled." msgstr "Не можна скористатися описом ключа сховища ключів, якщо сховище ключів вимкнено." -#: src/cryptsetup.c:3960 +#: src/cryptsetup.c:3959 msgid "Inline integrity must be used together with --integrity option." msgstr "Вбудовану цілісність має бути використано разом із параметром --integrity." -#: src/cryptsetup.c:3971 +#: src/cryptsetup.c:3970 msgid "Options --keyslot-cipher and --keyslot-key-size must be used together." msgstr "Параметри --keyslot-cipher і --keyslot-key-size має бути використано разом." -#: src/cryptsetup.c:3979 +#: src/cryptsetup.c:3978 msgid "No action taken. Invoked with --test-args option.\n" msgstr "Дій не виконано. Викликано із параметром --test-args.\n" -#: src/cryptsetup.c:3992 +#: src/cryptsetup.c:3991 msgid "Cannot disable metadata locking." msgstr "Не вдалося вимкнути блокування метаданих." @@ -4349,6 +4344,12 @@ msgstr "На вузлі заборонено спосіб розпізнаван msgid "Public key authentication error: " msgstr "Помилка розпізнавання за відкритим ключем: " +#~ msgid "Required kernel crypto interface not available." +#~ msgstr "Потрібний для роботи інтерфейс ядра для шифрування недоступний." + +#~ msgid "Ensure you have algif_skcipher kernel module loaded." +#~ msgstr "Переконайтеся, що завантажено модуль ядра algif_skcipher." + #, c-format #~ msgid "Failed to read or validate BITLK FVE metadata copy #%d from %s." #~ msgstr "Не вдалося прочитати або перевірити копію метаданих FVE BITLK %d з %s." From f8bbe610d73c0fd69159602b5aa1fcfc8cf5561d Mon Sep 17 00:00:00 2001 From: Seong-ho Cho Date: Sat, 4 Jul 2026 18:12:56 +0200 Subject: [PATCH 169/244] po: add ko.po (from translationproject.org) --- po/ko.po | 4343 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 4343 insertions(+) create mode 100644 po/ko.po diff --git a/po/ko.po b/po/ko.po new file mode 100644 index 000000000..0053efdc4 --- /dev/null +++ b/po/ko.po @@ -0,0 +1,4343 @@ +# Korean translation of cryptsetup +# Copyright (C) 2026 Free Software Foundation, Inc. +# This file is distributed under the same license as the cryptsetup package. +# Seong-ho Cho , 2026. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: cryptsetup 2.8.7-rc1\n" +"Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" +"POT-Creation-Date: 2026-06-29 21:30+0200\n" +"PO-Revision-Date: 2026-07-02 09:35+0900\n" +"Last-Translator: Seong-ho Cho \n" +"Language-Team: Korean \n" +"Language: ko_KR\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"\n" +"X-Generator: Poedit 3.7\n" + +#: lib/libdevmapper.c:419 +msgid "Cannot initialize device-mapper, running as non-root user." +msgstr "device-mapper를 초기화할 수 없어, 일반 사용자로 실행합니다." + +#: lib/libdevmapper.c:422 +msgid "Cannot initialize device-mapper. Is dm_mod kernel module loaded?" +msgstr "device-mapper를 초기화할 수 없습니다. dm_mod 커널 모듈을 불러왔습니까?" + +#: lib/libdevmapper.c:1125 +msgid "Requested deferred flag is not supported." +msgstr "요청한 유예 플래그는 지원하지 않습니다." + +#: lib/libdevmapper.c:1194 +#, c-format +msgid "DM-UUID for device %s was truncated." +msgstr "%s 장치의 DM-UUID가 잘렸습니다." + +#: lib/libdevmapper.c:1598 +msgid "Unknown dm target type." +msgstr "알 수 없는 dm 대상 형식입니다." + +#: lib/libdevmapper.c:1725 lib/libdevmapper.c:1731 lib/libdevmapper.c:1850 +#: lib/libdevmapper.c:1853 +msgid "Requested dm-crypt performance options are not supported." +msgstr "요청한 dm-crypt 성능 옵션을 지원하지 않습니다." + +#: lib/libdevmapper.c:1740 lib/libdevmapper.c:1746 lib/libdevmapper.c:1758 +msgid "Requested dm-verity data corruption handling options are not supported." +msgstr "요청한 dm-verity 데이터 손상 처리 옵션을 지원하지 않습니다." + +#: lib/libdevmapper.c:1752 +msgid "Requested dm-verity tasklets option is not supported." +msgstr "요청한 dm-verity 작업 처리 옵션을 지원하지 않습니다." + +#: lib/libdevmapper.c:1764 +msgid "Requested dm-verity FEC options are not supported." +msgstr "요청한 dm-verity FEC 옵션을 지원하지 않습니다." + +#: lib/libdevmapper.c:1770 +msgid "Requested data integrity options are not supported." +msgstr "요청한 데이터 무결성 옵션을 지원하지 않습니다." + +#: lib/libdevmapper.c:1774 +msgid "Requested sector_size option is not supported." +msgstr "요청한 sector_size 옵션을 지원하지 않습니다." + +#: lib/libdevmapper.c:1779 +msgid "The device size is not multiple of the requested sector size." +msgstr "장치 용량은 요청한 섹터 용량의 배수가 아닙니다." + +#: lib/libdevmapper.c:1783 +msgid "Requested integrity_key_size option is not supported." +msgstr "요청한 integrity_key_size 옵션을 지원하지 않습니다." + +#: lib/libdevmapper.c:1790 lib/libdevmapper.c:1796 +msgid "Requested automatic recalculation of integrity tags is not supported." +msgstr "요청한 무결성 태그 자동 재계산을 지원하지 않습니다." + +#: lib/libdevmapper.c:1802 lib/libdevmapper.c:1856 lib/libdevmapper.c:1859 +#: lib/luks2/luks2_json_metadata.c:2799 +msgid "Discard/TRIM is not supported." +msgstr "버림/TRIM을 지원하지 않습니다." + +#: lib/libdevmapper.c:1808 +msgid "Requested dm-integrity bitmap mode is not supported." +msgstr "요청한 dm-integrity 비트맵 모드를 지원하지 않습니다." + +#: lib/libdevmapper.c:1814 +msgid "Requested dm-integrity inline mode is not supported." +msgstr "요청한 dm-integrity 인라인 모드를 지원하지 않습니다." + +#: lib/libdevmapper.c:2870 +#, c-format +msgid "Failed to query dm-%s segment." +msgstr "dm-%s 세그먼트 요청 실패." + +#: lib/random.c:60 +msgid "" +"System is out of entropy while generating volume key.\n" +"Please move mouse or type some text in another window to gather some random events.\n" +msgstr "" +"볼륨키 생성 중 시스템 엔트로피가 바닥났습니다.\n" +"마우스를 움직이거나 다른 창에서 텍스트를 입력하여 랜덤 이벤트를 가져올 수 있게 하십시오.\n" + +#: lib/random.c:64 +#, c-format +msgid "Generating key (%d%% done).\n" +msgstr "키 생성 중 (%d%% 완료).\n" + +#: lib/random.c:150 +msgid "Running in FIPS mode." +msgstr "FIPS 모드로 실행 중입니다." + +#: lib/random.c:156 +msgid "Fatal error during RNG initialisation." +msgstr "RNG 초기화 중 치명적 오류가 있습니다." + +#: lib/random.c:194 +msgid "Unknown RNG quality requested." +msgstr "알 수 없는 RNG 수준을 요청했습니다." + +#: lib/random.c:199 +msgid "Error reading from RNG." +msgstr "RNG 읽는 중 오류." + +#: lib/setup.c:251 +msgid "OPAL support is disabled in libcryptsetup." +msgstr "libcryptsetup에서 OPAL 지원 기능이 꺼졌습니다." + +#: lib/setup.c:253 +#, c-format +msgid "Device %s or kernel does not support OPAL encryption." +msgstr "%s 장치 또는 커널에서 OPAL 암호화를 지원하지 않습니다." + +#: lib/setup.c:269 +msgid "Cannot initialize crypto RNG backend." +msgstr "암호화 RNG 백엔드를 초기화할 수 없습니다." + +#: lib/setup.c:275 +msgid "Cannot initialize crypto backend." +msgstr "암호화 백엔드를 초기화할 수 없습니다." + +#: lib/setup.c:308 lib/setup.c:2769 lib/verity/verity.c:109 +#, c-format +msgid "Hash algorithm %s not supported." +msgstr "%s 해싱 알고리즘을 지원하지 않습니다." + +#: lib/setup.c:311 lib/loopaes/loopaes.c:78 +#, c-format +msgid "Key processing error (using hash %s)." +msgstr "키 처리 오류 (%s 해시 사용)." + +#: lib/setup.c:392 lib/setup.c:429 +msgid "Cannot determine device type. Incompatible activation of device?" +msgstr "장치 형식을 확인할 수 없습니다. 장치 활성 방식에 호환성이 없습니까?" + +#: lib/setup.c:398 lib/setup.c:4177 +msgid "This operation is supported only for LUKS device." +msgstr "이 동작은 LUKS 장치에서만 지원합니다." + +#: lib/setup.c:435 +msgid "This operation is supported only for LUKS2 device." +msgstr "이 동작은 LUKS2 장치에서만 지원합니다." + +#: lib/setup.c:492 lib/luks2/luks2_reencrypt.c:3102 +msgid "All key slots full." +msgstr "모든 키 슬롯이 가득찼습니다." + +#: lib/setup.c:503 +#, c-format +msgid "Key slot %d is invalid, please select between 0 and %d." +msgstr "키 슬롯 번호 %d번이 적절하지 않습니다. 0과 %d 사이의 숫자를 선택하십시오." + +#: lib/setup.c:509 +#, c-format +msgid "Key slot %d is full, please select another one." +msgstr "키 슬롯 %d번이 가득 찼습니다. 다른 번호를 선택하십시오." + +#: lib/setup.c:534 lib/setup.c:3878 +msgid "Device size is not aligned to device logical block size." +msgstr "장치 용량이 장치 논리 블록 용량에 맞지 않습니다." + +#: lib/setup.c:631 +#, c-format +msgid "Header detected but device %s is too small." +msgstr "헤더를 확인했지만 %s 장치 용량이 너무 작습니다." + +#: lib/setup.c:672 lib/setup.c:3763 lib/setup.c:5272 +#: lib/luks2/luks2_reencrypt.c:3949 lib/luks2/luks2_reencrypt.c:4438 +msgid "This operation is not supported for this device type." +msgstr "이 동작은 이 장치 형식에서 지원하지 않습니다." + +#: lib/setup.c:677 +msgid "Illegal operation with reencryption in-progress." +msgstr "재 암호화 처리 과정에서 부적절한 동작을 확인했습니다." + +#: lib/setup.c:809 +msgid "Failed to rollback LUKS2 metadata in memory." +msgstr "메모리에서 LUKS2 메타데이터 되돌리기 실패." + +#: lib/setup.c:896 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 +#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1779 +#: src/cryptsetup.c:1963 src/cryptsetup.c:2018 src/cryptsetup.c:2216 +#: src/cryptsetup.c:2361 src/cryptsetup.c:2639 src/cryptsetup.c:2952 +#: src/cryptsetup.c:3020 src/utils_reencrypt.c:2281 +#: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 +#, c-format +msgid "Device %s is not a valid LUKS device." +msgstr "%s 장치는 올바른 LUKS 장치가 아닙니다." + +#: lib/setup.c:899 lib/luks1/keymanage.c:517 +#, c-format +msgid "Unsupported LUKS version %d." +msgstr "지원하지 않는 %d 버전의 LUKS입니다." + +#: lib/setup.c:1273 +#, c-format +msgid "No known cipher specification pattern detected for active device %s." +msgstr "%s 활성 장치에서 알려진 암호화 명세 패턴이 없습니다." + +#: lib/setup.c:1518 lib/setup.c:3510 lib/setup.c:3602 lib/setup.c:3614 +#: lib/setup.c:3786 lib/setup.c:5850 +#, c-format +msgid "Device %s is not active." +msgstr "%s 장치는 동작 중이 아닙니다." + +#: lib/setup.c:1535 +#, c-format +msgid "Underlying device for crypt device %s disappeared." +msgstr "%s 암호화 장치의 기반 장치가 사라졌습니다." + +#: lib/setup.c:1617 +msgid "Invalid plain crypt parameters." +msgstr "부적절한 평문 암호화 매개변수입니다." + +#: lib/setup.c:1622 lib/setup.c:2672 +msgid "Invalid key size." +msgstr "부적절한 키 크기입니다." + +#: lib/setup.c:1627 lib/setup.c:2677 lib/setup.c:2882 +msgid "UUID is not supported for this crypt type." +msgstr "이 암호화 형식에서 UUID를 지원하지 않습니다." + +#: lib/setup.c:1632 lib/setup.c:2682 +msgid "Detached metadata device is not supported for this crypt type." +msgstr "이 암호화 형식에서 분리한 메타데이터 장치를 지원하지 않습니다." + +#: lib/setup.c:1642 lib/setup.c:1890 lib/luks2/luks2_reencrypt.c:3035 +#: src/cryptsetup.c:1491 src/cryptsetup.c:3759 +msgid "Unsupported encryption sector size." +msgstr "지원하지 않는 암호화 섹터 크기입니다." + +#: lib/setup.c:1650 lib/setup.c:1919 lib/setup.c:3872 +msgid "Device size is not aligned to requested sector size." +msgstr "장치 용량이 요청한 섹터 용량과 맞지 않습니다." + +#: lib/setup.c:1702 lib/setup.c:1954 lib/setup.c:2331 +msgid "Can't format LUKS without device." +msgstr "장치가 없는 상황에서 LUKS를 포매팅할 수 없습니다." + +#: lib/setup.c:1707 lib/setup.c:1959 +#, c-format +msgid "Zoned device %s cannot be used for LUKS header." +msgstr "%s 구역 지정 장치를 LUKS 헤더에 사용할 수 없습니다." + +#: lib/setup.c:1714 lib/setup.c:1966 lib/setup.c:2337 +msgid "Requested data alignment is not compatible with data offset." +msgstr "요청한 데이터 정렬 동작은 데이터 오프셋과 호환성이 없습니다." + +#: lib/setup.c:1754 lib/setup.c:1984 +msgid "WARNING: DAX device can corrupt data as it does not guarantee atomic sector updates.\n" +msgstr "경고: DAX 장치는 최소 단위 섹터 갱신을 보증할 수 없으므로 데이터를 파괴할 수 있습니다.\n" + +#: lib/setup.c:1792 lib/setup.c:2091 lib/setup.c:2112 lib/setup.c:2520 +#: lib/setup.c:2567 lib/setup.c:2899 +#, c-format +msgid "Cannot wipe header on device %s." +msgstr "%s 장치의 헤더를 소거할 수 없습니다." + +#: lib/setup.c:1805 lib/setup.c:2164 +#, c-format +msgid "Device %s is too small for activation, there is no remaining space for data.\n" +msgstr "%s 장치를 활성화하기에 너무 작습니다. 데이터를 둘 만한 여분 공간이 없습니다.\n" + +#: lib/setup.c:1846 +msgid "Volume key is too small for encryption with integrity extensions." +msgstr "볼륨 키 크기가 무결성 확장을 동반한 암호화를 처리하기에 너무 작습니다." + +#: lib/setup.c:1850 +msgid "Integrity key size is too small." +msgstr "무결성 키 크기가 너무 작습니다." + +#: lib/setup.c:1859 +#, c-format +msgid "Cipher %s-%s (key size %zd bits) is not available." +msgstr "암호화 알고리즘 %s-%s(%zd비트 키 크기)을(를) 사용할 수 없습니다." + +#: lib/setup.c:1900 +msgid "WARNING: The device activation will fail, dm-crypt is missing support for requested encryption sector size.\n" +msgstr "경고: 장치 활성에 실패합니다. dm-crypt에 요청한 암호화 섹터 크기 지원이 빠졌습니다.\n" + +#: lib/setup.c:2094 lib/setup.c:2461 lib/setup.c:2523 lib/utils_device.c:906 +#: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3074 +#: lib/luks2/luks2_reencrypt.c:4498 +#, c-format +msgid "Device %s is too small." +msgstr "%s 장치 용량이 너무 작습니다." + +#: lib/setup.c:2105 lib/setup.c:2144 lib/setup.c:2560 lib/setup.c:2618 +#, c-format +msgid "Cannot format device %s in use." +msgstr "사용 중인 %s 장치를 포매팅할 수 없습니다." + +#: lib/setup.c:2108 lib/setup.c:2147 lib/setup.c:2563 lib/setup.c:2621 +#, c-format +msgid "Cannot format device %s, permission denied." +msgstr "%s 장치를 포매팅할 수 없습니다. 권한 거부함." + +#: lib/setup.c:2132 lib/setup.c:2590 lib/setup.c:2972 +#, c-format +msgid "Cannot format integrity for device %s." +msgstr "%s 장치의 무결성을 포매팅할 수 없습니다." + +#: lib/setup.c:2151 lib/setup.c:2629 +#, c-format +msgid "Cannot format device %s." +msgstr "%s 장치를 포매팅할 수 없습니다." + +#: lib/setup.c:2194 +msgid "Cannot get OPAL alignment parameters." +msgstr "OPAL 정렬 매개변수를 가져올 수 없습니다." + +#: lib/setup.c:2206 +msgid "Bogus OPAL logical block size." +msgstr "위조한 OPAL 논리 블록 크기입니다." + +#: lib/setup.c:2211 lib/luks2/hw_opal/hw_opal.c:305 +msgid "Bogus OPAL logical block size differs from device block size." +msgstr "위조한 OPAL 논리 블록 크기가 장치 블록 크기와 다릅니다." + +#: lib/setup.c:2217 +msgid "Requested data offset is not compatible with OPAL block size." +msgstr "요청한 데이터 오프셋의 호환성이 OPAL 블록 크기와 맞지 않습니다." + +#: lib/setup.c:2224 +msgid "Requested data alignment is not compatible with OPAL alignment." +msgstr "요청한 데이터 정렬 호환성이 OPAL 정렬과 맞지 않습니다." + +#: lib/setup.c:2244 +msgid "Data offset does not satisfy OPAL alignment requirements." +msgstr "데이터 오프셋이 OPAL 정렬 요구 사항을 만족하지 않습니다." + +#: lib/setup.c:2257 +msgid "Requested data alignment does not satisfy locking range alignment requirements." +msgstr "요청한 데이터 정렬이 잠금 범위 정렬 요구 사항을 만족하지 않습니다." + +#: lib/setup.c:2471 +#, c-format +msgid "Compensating device size by % sectors to align it with OPAL alignment granularity." +msgstr "OPAL 정렬 분할성에 맞추기 위해 장치 용량을 % 섹터 보정합니다." + +#: lib/setup.c:2531 lib/setup.c:4260 lib/setup.c:4466 lib/utils_wipe.c:356 +#: lib/luks2/luks2_json_metadata.c:2742 lib/luks2/luks2_json_metadata.c:3017 +#, c-format +msgid "Failed to acquire OPAL lock on device %s." +msgstr "%s 장치에서 OPAL 잠금 획득 실패." + +#: lib/setup.c:2541 +msgid "Incorrect OPAL Admin key." +msgstr "올바르지 않은 OPAL 관리자 키입니다." + +#: lib/setup.c:2543 +msgid "Cannot setup OPAL segment." +msgstr "OPAL 세그먼트를 설정할 수 없습니다." + +#: lib/setup.c:2625 +#, c-format +msgid "Cannot format device %s, OPAL device seems to be fully write-protected now." +msgstr "%s 장치를 포매팅할 수 없습니다. OPAL 장치가 완전히 쓰기 방지 상태인 것 같습니다." + +#: lib/setup.c:2627 +msgid "This is perhaps a bug in firmware. Run OPAL PSID reset and reconnect for recovery." +msgstr "펌웨어 버그인 것 같습니다. 복원하려면 OPAL PSID를 초기화하고 다시 연결하십시오." + +#: lib/setup.c:2647 +#, c-format +msgid "Locking range %d reset on device %s failed." +msgstr "%2$s 장치 초기화 중 %1$d 범위 잠금 실패." + +#: lib/setup.c:2667 +msgid "Can't format LOOPAES without device." +msgstr "장치 없이 LOOPAES를 포매팅할 수 없습니다." + +#: lib/setup.c:2712 +msgid "Can't format VERITY without device." +msgstr "장치 없이 VERITY를 포매팅할 수 없습니다." + +#: lib/setup.c:2723 lib/verity/verity.c:88 +#, c-format +msgid "Unsupported VERITY hash type %d." +msgstr "지원하지 않는 %d번 VERITY 해시 형식입니다." + +#: lib/setup.c:2729 lib/verity/verity.c:96 +msgid "Unsupported VERITY block size." +msgstr "지원하지 않는 VERITY 블록 크기입니다." + +#: lib/setup.c:2734 lib/verity/verity.c:61 +msgid "Unsupported VERITY hash offset." +msgstr "지원하지 않는 VERITY 해시 오프셋입니다." + +#: lib/setup.c:2739 +msgid "Unsupported VERITY FEC offset." +msgstr "지원하지 않는 VERITY FEC 오프셋입니다." + +#: lib/setup.c:2763 +msgid "Data area overlaps with hash area." +msgstr "데이터 영역이 해시 영역과 겹칩니다." + +#: lib/setup.c:2788 +msgid "Hash area overlaps with FEC area." +msgstr "해시 영역이 FEC 영역과 겹칩니다." + +#: lib/setup.c:2795 +msgid "Data area overlaps with FEC area." +msgstr "데이터 영역이 FEC 영역과 겹칩니다." + +#: lib/setup.c:2887 +msgid "Integrity key size mismatch." +msgstr "무결성 키 크기가 일치하지 않습니다." + +#: lib/setup.c:2938 +#, c-format +msgid "WARNING: Requested tag size %d bytes differs from %s size output (%d bytes).\n" +msgstr "경고: 요청한 태그 크기 %d바이트가 %s의 크기 출력 (%d바이트)과 다릅니다.\n" + +#: lib/setup.c:3051 lib/setup.c:3153 +#, c-format +msgid "Unknown or unsupported device type %s requested." +msgstr "알 수 없는 또는 지원하지 않는 %s 장치 형식을 요청했습니다." + +#: lib/setup.c:3067 +#, c-format +msgid "Device %s does not provide inline integrity data fields." +msgstr "%s 장치에서 인라인 무결성 데이터 필드를 제공하지 않습니다." + +#: lib/setup.c:3073 +#, c-format +msgid "Inline tag size % [bytes] is larger than % provided by device %s." +msgstr "%1$ [바이트] 인라인 태그 크기가 %3$s 장치에서 지정한 %2$ 값보다 큽니다." + +#: lib/setup.c:3088 +#, c-format +msgid "Sector must be the same as device hardware sector (%zu bytes)." +msgstr "섹터 값은 장치 하드웨어 섹터 값(%zu 바이트)과 같아야 합니다." + +#: lib/setup.c:3518 lib/setup.c:3607 lib/setup.c:3620 +#, c-format +msgid "Unsupported parameters on device %s." +msgstr "%s 장치에서 지원하지 않는 매개변수입니다." + +#: lib/setup.c:3524 lib/setup.c:3627 lib/luks2/luks2_reencrypt.c:2929 +#: lib/luks2/luks2_reencrypt.c:3198 lib/luks2/luks2_reencrypt.c:3595 +#, c-format +msgid "Mismatching parameters on device %s." +msgstr "%s 장치에서 일치하지 않는 매개변수입니다." + +#: lib/setup.c:3650 +msgid "Crypt devices mismatch." +msgstr "암호화 장치가 일치하지 않습니다." + +#: lib/setup.c:3682 lib/setup.c:3687 lib/luks2/luks2_reencrypt.c:2413 +#: lib/luks2/luks2_reencrypt.c:2945 lib/luks2/luks2_reencrypt.c:4237 +#, c-format +msgid "Failed to reload device %s." +msgstr "%s 장치 다시 불러오기 실패." + +#: lib/setup.c:3693 lib/setup.c:3699 lib/luks2/luks2_reencrypt.c:2383 +#: lib/luks2/luks2_reencrypt.c:2390 lib/luks2/luks2_reencrypt.c:2959 +#, c-format +msgid "Failed to suspend device %s." +msgstr "%s 장치 대기 상태 전환 실패." + +#: lib/setup.c:3705 lib/luks2/luks2_reencrypt.c:2397 +#: lib/luks2/luks2_reencrypt.c:2980 lib/luks2/luks2_reencrypt.c:4150 +#: lib/luks2/luks2_reencrypt.c:4241 +#, c-format +msgid "Failed to resume device %s." +msgstr "%s 장치 상태 복귀 실패." + +#: lib/setup.c:3720 +#, c-format +msgid "Fatal error while reloading device %s (on top of device %s)." +msgstr "%s 장치(%s 장치 위)를 다시 불러오는 동안 치명적 오류가 있습니다." + +#: lib/setup.c:3723 lib/setup.c:3725 +#, c-format +msgid "Failed to switch device %s to dm-error." +msgstr "%s 장치의 dm-error 전환 실패." + +#: lib/setup.c:3768 +msgid "Can not resize LUKS2 device with static size." +msgstr "LUKS2 장치 크기를 정적 크기로 바꿀 수 없습니다." + +#: lib/setup.c:3773 +msgid "Resize of LUKS2 device with integrity protection is not supported." +msgstr "무결성 보호 기능이 있는 LUKS2 장치의 크기 변경을 지원하지 않습니다." + +#: lib/setup.c:3819 +msgid "Cannot resize loop device." +msgstr "루프 장치의 크기를 바꿀 수 없습니다." + +#: lib/setup.c:3863 +msgid "WARNING: Maximum size already set or kernel doesn't support resize.\n" +msgstr "경고: 최대 크기를 이미 설정했거나 커널에서 크기 변경을 지원하지 않습니다.\n" + +#: lib/setup.c:3929 +msgid "Resize failed, the kernel doesn't support it." +msgstr "크기 변경 실패. 커널에서 지원하지 않습니다." + +#: lib/setup.c:3961 +msgid "Do you really want to change UUID of device?" +msgstr "정말로 장치 UUID를 바꾸시겠습니까?" + +#: lib/setup.c:4053 +msgid "Header backup file does not contain compatible LUKS header." +msgstr "헤더 백업 파일에 호환 LUKS 헤더가 없습니다." + +#: lib/setup.c:4160 +#, c-format +msgid "Volume %s is not active." +msgstr "%s 볼륨이 동작 중이 아닙니다." + +#: lib/setup.c:4215 +#, c-format +msgid "Volume %s is already suspended." +msgstr "%s 볼륨이 이미 대기 상태에 있습니다." + +#: lib/setup.c:4241 +#, c-format +msgid "Suspend is not supported for device %s." +msgstr "%s 장치에서 대기 상태 전환을 지원하지 않습니다." + +#: lib/setup.c:4243 lib/setup.c:4251 +#, c-format +msgid "Error during suspending device %s." +msgstr "%s 장치 대기 상태 전환 중 오류가 있습니다." + +#: lib/setup.c:4266 +#, c-format +msgid "Device %s was suspended but hardware OPAL device cannot be locked." +msgstr "%s 장치를 대기 상태로 전환했으나 하드웨어 OPAL 장치를 잠글 수 없습니다." + +#: lib/setup.c:4297 lib/setup.c:4491 +#, c-format +msgid "Resume is not supported for device %s." +msgstr "%s 장치에서 상태 복귀를 지원하지 않습니다." + +#: lib/setup.c:4299 lib/setup.c:4481 lib/setup.c:4493 +#, c-format +msgid "Error during resuming device %s." +msgstr "%s 장치 상태 복귀 중 오류가 있습니다." + +#: lib/setup.c:4335 +msgid "Failed to unlink volume key from user specified keyring." +msgstr "사용자 지정 키 모음으로의 볼륨 키 연결 해제 실패." + +#: lib/setup.c:4457 lib/setup.c:5637 +msgid "Failed to link volume key in user defined keyring." +msgstr "사용자 지정 키 모음으로의 볼륨 키 연결 실패." + +#: lib/setup.c:4556 src/cryptsetup.c:2720 +#, c-format +msgid "Volume %s is not suspended." +msgstr "%s 볼륨은 대기 상태가 아닙니다." + +#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1855 +#: src/cryptsetup.c:2259 src/cryptsetup.c:2277 src/utils_reencrypt.c:305 +#: src/utils_reencrypt.c:1966 +msgid "Volume key does not match the volume." +msgstr "볼륨 키가 볼륨과 맞지 않습니다." + +#: lib/setup.c:4821 +msgid "Failed to swap new key slot." +msgstr "새 키 슬롯 교환 실패." + +#: lib/setup.c:4919 +#, c-format +msgid "Key slot %d is invalid." +msgstr "%d번 키 슬롯이 적절하지 않습니다." + +#: lib/setup.c:4925 src/cryptsetup.c:1976 src/cryptsetup.c:2436 +#: src/cryptsetup.c:3120 src/cryptsetup.c:3180 +#, c-format +msgid "Keyslot %d is not active." +msgstr "%d번 키 슬롯은 동작 중이 아닙니다." + +#: lib/setup.c:4944 +msgid "Device header overlaps with data area." +msgstr "장치 헤더가 데이터 영역과 겹칩니다." + +#: lib/setup.c:5165 +msgid "Reencryption in-progress. Cannot activate device." +msgstr "재암호화를 진행 중입니다. 장치를 동작하게 할 수 없습니다." + +#: lib/setup.c:5167 lib/luks2/luks2_json_metadata.c:2913 +#: lib/luks2/luks2_reencrypt.c:3726 +msgid "Failed to get reencryption lock." +msgstr "재 암호화 잠금 가져오기 실패." + +#: lib/setup.c:5189 +msgid "LUKS2 reencryption recovery using volume key(s) failed." +msgstr "볼륨 키를 활용한 LUKS2 재 암호화 복원 실패." + +#: lib/setup.c:5325 +#, c-format +msgid "Device %s already exists." +msgstr "%s 장치가 이미 있습니다." + +#: lib/setup.c:5332 +#, c-format +msgid "Cannot use device %s, name is invalid or still in use." +msgstr "%s 장치를 사용할 수 없습니다. 명칭이 부적절하거나 여전히 사용중입니다." + +#: lib/setup.c:5344 +msgid "Reencryption volume keys do not match the volume." +msgstr "재암호화 볼륨 키가 볼륨과 일치하지 않습니다." + +#: lib/setup.c:5361 +msgid "Incorrect volume key specified for plain device." +msgstr "원시 장치에 올바르지 않은 볼륨 키를 지정했습니다." + +#: lib/setup.c:5387 lib/setup.c:5448 +msgid "Device type is not properly initialized." +msgstr "장치 형식을 제대로 초기화하지 않았습니다." + +#: lib/setup.c:5486 +msgid "Kernel keyring is not supported by the kernel." +msgstr "커널 키 모음은 커널에서 지원하지 않습니다." + +#: lib/setup.c:5490 +msgid "Kernel keyring missing: required for passing signature to kernel." +msgstr "커널 키 모음 빠짐: 커널에 시그니처 전달에 필요합니다." + +#: lib/setup.c:5545 +#, c-format +msgid "Cannot use keyring key %s." +msgstr "%s 키 모음 키를 사용할 수 없습니다." + +#: lib/setup.c:5758 +msgid "Incorrect root hash specified for verity device." +msgstr "검증 장치에 올바르지 않은 루트 해시를 지정했습니다." + +#: lib/setup.c:5799 lib/setup.c:5824 +msgid "OPAL does not support deferred deactivation." +msgstr "OPAL은 지연된 동작 상태 해제를 지원하지 않습니다." + +#: lib/setup.c:5814 lib/setup.c:5845 lib/luks2/luks2_json_metadata.c:2978 +#: src/utils_reencrypt.c:89 +#, c-format +msgid "Device %s is still in use." +msgstr "%s 장치를 여전히 사용중입니다." + +#: lib/setup.c:5832 +#, c-format +msgid "Could not cancel deferred remove from device %s." +msgstr "%s 장치에서 지연된 제거 동작을 취소할 수 없습니다." + +#: lib/setup.c:5854 +#, c-format +msgid "Invalid device %s." +msgstr "부적절한 %s 장치입니다." + +#: lib/setup.c:6001 +msgid "Volume key buffer too small." +msgstr "볼륨 키 버퍼가 너무 작습니다." + +#: lib/setup.c:6012 +msgid "Cannot retrieve volume key for LUKS2 device." +msgstr "LUKS2 장치에 볼륨 키를 넣을 수 없습니다." + +#: lib/setup.c:6021 +msgid "Cannot retrieve volume key for LUKS1 device." +msgstr "LUKS1 장치에 볼륨 키를 넣을 수 없습니다." + +#: lib/setup.c:6035 +msgid "Cannot retrieve volume key for plain device." +msgstr "원시 장치에 볼륨 키를 넣을 수 없습니다." + +#: lib/setup.c:6043 +msgid "Cannot retrieve root hash for verity device." +msgstr "검증 장치에 루트 해시를 넣을 수 없습니다." + +#: lib/setup.c:6052 +msgid "Cannot retrieve volume key for BITLK device." +msgstr "BITLK 장치에 볼륨 키를 넣을 수 없습니다." + +#: lib/setup.c:6057 +msgid "Cannot retrieve volume key for FVAULT2 device." +msgstr "FVAULT2 장치에 볼륨 키를 넣을 수 없습니다." + +#: lib/setup.c:6059 +#, c-format +msgid "This operation is not supported for %s crypt device." +msgstr "이 동작은 %s 암호화 장치에서 지원하지 않습니다." + +#: lib/setup.c:6244 lib/setup.c:6255 +msgid "Dump operation is not supported for this device type." +msgstr "덤프 동작은 이 장치 형식에서 지원하지 않습니다." + +#: lib/setup.c:6635 +#, c-format +msgid "Data offset is not multiple of %u bytes." +msgstr "데이터 오프셋은 %u바이트의 배수가 아닙니다." + +#: lib/setup.c:6943 +#, c-format +msgid "Cannot convert device %s which is still in use." +msgstr "여전히 사용중인 %s 장치를 변환할 수 없습니다." + +#: lib/setup.c:7251 lib/setup.c:7406 +#, c-format +msgid "Failed to assign keyslot %u as the new volume key." +msgstr "새 볼륨 키 %u번 키 슬롯 할당 실패." + +#: lib/setup.c:7275 +msgid "Failed to initialize default LUKS2 keyslot parameters." +msgstr "기본 LUKS2 키 슬롯 매개변수 초기화 실패." + +#: lib/setup.c:7281 +#, c-format +msgid "Failed to assign keyslot %d to digest." +msgstr "키 슬롯 %d번 다이제스트 할당 실패." + +#: lib/setup.c:7523 +msgid "Cannot add key slot, all slots disabled and no volume key provided." +msgstr "키 슬롯을 추가할 수 없습니다. 모든 슬롯을 사용할 수 없으며, 볼륨 키를 지정하지 않았습니다." + +#: lib/setup.c:7611 lib/setup.c:7626 lib/verity/verity.c:333 +msgid "Failed to load key in kernel keyring." +msgstr "커널 키 모음에서 키 불러오기 실패." + +#: lib/setup.c:7807 +#, c-format +msgid "Could not find keyring described by \"%s\"." +msgstr "\"%s\"에서 설명하는 키 모음을 찾을 수 없습니다." + +#: lib/setup.c:7872 +msgid "Failed to acquire global memory-hard access serialization lock." +msgstr "전역 메모리-하드 액세스 직렬화 잠금 취득 실패." + +#: lib/utils.c:205 lib/tcrypt/tcrypt.c:488 +msgid "Failed to open key file." +msgstr "키 파일 열기 실패." + +#: lib/utils.c:213 +msgid "Cannot read keyfile from a terminal." +msgstr "터미널에서 키 파일을 읽을 수 없습니다." + +#: lib/utils.c:229 +msgid "Failed to stat key file." +msgstr "키 파일 상태 확인 실패." + +#: lib/utils.c:237 lib/utils.c:258 +msgid "Cannot seek to requested keyfile offset." +msgstr "요청한 키 파일 오프셋을 탐색할 수 없습니다." + +#: lib/utils.c:252 lib/utils.c:267 src/utils_password.c:219 +#: src/utils_password.c:231 +msgid "Out of memory while reading passphrase." +msgstr "암호를 읽는 동안 메모리 부족 발생." + +#: lib/utils.c:287 +msgid "Error reading passphrase." +msgstr "암호를 읽는 중 오류가 있습니다." + +#: lib/utils.c:304 +msgid "Nothing to read on input." +msgstr "입력에서 읽을 내용이 없습니다." + +#: lib/utils.c:311 +msgid "Maximum keyfile size exceeded." +msgstr "최대 키 파일 크기를 초과했습니다." + +#: lib/utils.c:316 +msgid "Cannot read requested amount of data." +msgstr "요청한 양의 데이터를 읽을 수 없습니다." + +#: lib/utils_device.c:207 lib/utils_storage_wrappers.c:99 +#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2254 +#, c-format +msgid "Device %s does not exist or access denied." +msgstr "%s 장치가 없거나 접근이 막혔습니다." + +#: lib/utils_device.c:217 +#, c-format +msgid "Device %s is not compatible." +msgstr "%s 장치의 호환성이 없습니다." + +#: lib/utils_device.c:546 +#, c-format +msgid "Ignoring bogus optimal-io size for data device (%u bytes)." +msgstr "데이터 장치에 대한 최적 입출력 크기 위조값(%u 바이트)을 무시합니다." + +#: lib/utils_device.c:711 +#, c-format +msgid "Cannot grow %s to % bytes (%s)." +msgstr "%s의 용량을 % 바이트로 늘릴 수 없습니다 (%s)." + +#: lib/utils_device.c:717 +#, c-format +msgid "Device %s is too small. Need at least % bytes." +msgstr "%s 장치의 크기가 너무 작습니다. 최소한 % 바이트가 필요합니다." + +#: lib/utils_device.c:798 +#, c-format +msgid "Cannot use device %s which is in use (already mapped or mounted)." +msgstr "사용중인 %s 장치를 사용할 수 없습니다 (이미 매핑했거나 마운트함)." + +#: lib/utils_device.c:802 +#, c-format +msgid "Cannot use device %s, permission denied." +msgstr "%s 장치를 사용할 수 없습니다. 권한 거절." + +#: lib/utils_device.c:805 +#, c-format +msgid "Cannot get info about device %s." +msgstr "%s 장치의 정보를 가져올 수 없습니다." + +#: lib/utils_device.c:828 +msgid "Cannot use a loopback device, running as non-root user." +msgstr "루프백 장치를 사용할 수 없어, 일반 사용자로 실행합니다." + +#: lib/utils_device.c:839 +msgid "Attaching loopback device failed (loop device with autoclear flag is required)." +msgstr "루프백 장치 연결 실패 (자동 정리 플래그를 루프 장치와 함께 사용해야 합니다)." + +#: lib/utils_device.c:887 +#, c-format +msgid "Requested offset is beyond real size of device %s." +msgstr "필요한 오프셋이 %s 장치의 실제 크기 앞부분에 있습니다." + +#: lib/utils_device.c:895 +#, c-format +msgid "Device %s has zero size." +msgstr "%s 장치의 크기가 0입니다." + +#: lib/utils_pbkdf.c:105 +msgid "Requested PBKDF target time cannot be zero." +msgstr "요청한 PBKDF 대상 시간은 0일 수 없습니다." + +#: lib/utils_pbkdf.c:111 +#, c-format +msgid "Unknown PBKDF type %s." +msgstr "알 수 없는 %s PBKDF 형식." + +#: lib/utils_pbkdf.c:116 +#, c-format +msgid "Requested hash %s is not supported." +msgstr "요청한 %s 해시는 지원하지 않습니다." + +#: lib/utils_pbkdf.c:127 +msgid "Requested PBKDF type is not supported for LUKS1." +msgstr "요청한 PBKDF 형식은 LUKS1에서 지원하지 않습니다." + +#: lib/utils_pbkdf.c:133 +msgid "PBKDF max memory or parallel threads must not be set with pbkdf2." +msgstr "PBKDF 최대 메모리 용량 또는 병렬 처리 스레드는 pbkdf2와 함께 설정하면 안됩니다." + +#: lib/utils_pbkdf.c:138 lib/utils_pbkdf.c:148 +#, c-format +msgid "Forced iteration count is too low for %s (minimum is %u)." +msgstr "강제 반복 계수 값이 %s에 대해 너무 낮습니다 (최소값 %u)." + +#: lib/utils_pbkdf.c:153 +#, c-format +msgid "Forced memory cost is too low for %s (minimum is %u kilobytes)." +msgstr "강제 메모리 할당 용량이 %s에 대해 너무 낮습니다 (최소 용량 %u kB)." + +#: lib/utils_pbkdf.c:160 +#, c-format +msgid "Requested maximum PBKDF memory cost is too high (maximum is %d kilobytes)." +msgstr "요청한 최대 PBKDF 메모리 용량이 너무 큽니다 (최대 %d kB)." + +#: lib/utils_pbkdf.c:165 +msgid "Requested maximum PBKDF memory cost is too high (limited by the integer maximal size)." +msgstr "요청한 최대 PBKDF 메모리 용량이 너무 높습니다 (정수 최대값 범위로 제한)." + +#: lib/utils_pbkdf.c:169 +msgid "Requested maximum PBKDF memory cannot be zero." +msgstr "요청한 최대 PBKDF 메모리 용량은 0일 수 없습니다." + +#: lib/utils_pbkdf.c:173 +#, c-format +msgid "Requested maximum PBKDF parallel cost is too high (maximum is %d)." +msgstr "요청한 최대 PBKDF 병렬 처리 갯수가 너무 큽니다 (최대 %d)." + +#: lib/utils_pbkdf.c:178 +msgid "Requested PBKDF parallel threads cannot be zero." +msgstr "요청한 PBKDF 병렬 처리 스레드 값은 0일 수 없습니다." + +#: lib/utils_pbkdf.c:198 +msgid "Only PBKDF2 is supported in FIPS mode." +msgstr "FIPS 모드에서는 PBKDF2만 지원합니다." + +#: lib/utils_benchmark.c:171 +msgid "PBKDF benchmark disabled but iterations not set." +msgstr "PBKDF 벤치마킹은 동작하지 않지만 반복 횟수는 설정하지 않았습니다." + +#: lib/utils_benchmark.c:190 +#, c-format +msgid "Not compatible PBKDF2 options (using hash algorithm %s)." +msgstr "PBKDF2 옵션의 호환성이 없습니다 (%s 해시 알고리즘 활용)." + +#: lib/utils_benchmark.c:210 +msgid "Not compatible PBKDF options." +msgstr "PBKDF 옵션 호환성이 없습니다." + +#: lib/utils_device_locking.c:88 +#, c-format +msgid "Locking aborted. The locking path %s/%s is unusable (not a directory or missing)." +msgstr "잠금 동작을 멈추었습니다 %s/%s 잠금 경로를 사용할 수 없습니다 (디렉터리가 아니거나 경로 빠짐)." + +#: lib/utils_device_locking.c:105 +#, c-format +msgid "Locking aborted. The locking path %s/%s is unusable (%s is not a directory)." +msgstr "잠금 동작을 멈추었습니다. %s/%s 잠금 경로를 사용할 수 없습니다 (%s은(는) 디렉터리가 아님)." + +#: lib/utils_wipe.c:143 lib/utils_wipe.c:218 src/utils_reencrypt_luks1.c:700 +#: src/utils_reencrypt_luks1.c:793 +msgid "Cannot seek to device offset." +msgstr "장치 오프셋을 탐색할 수 없습니다." + +#: lib/utils_wipe.c:240 +#, c-format +msgid "Device wipe error, offset %." +msgstr "장치 소거 오류, 오프셋 %." + +#: lib/utils_wipe.c:332 +msgid "Incorrect OPAL PSID." +msgstr "올바르지 않은 OPAL PSID." + +#: lib/utils_wipe.c:334 +msgid "Cannot erase OPAL device." +msgstr "OPAL 장치를 지울 수 없습니다." + +#: lib/luks1/keyencryption.c:27 +#, c-format +msgid "" +"Failed to setup dm-crypt key mapping for device %s.\n" +"Check that kernel supports %s cipher (check syslog for more info)." +msgstr "" +"%s 장치에 대한 dm-crypt 키 매핑 설정에 실패했습니다.\n" +"커널에서 %s 암호화 방식을 지원하는지 확인하십시오 (자세한 정보는 syslog 확인)." + +#: lib/luks1/keyencryption.c:32 +msgid "Key size in XTS mode must be 256 or 512 bits." +msgstr "XTS모드의 키 크기는 256비트 또는 512비트여야 합니다." + +#: lib/luks1/keyencryption.c:34 +msgid "Cipher specification should be in [cipher]-[mode]-[iv] format." +msgstr "암호화 방식 명세는 [cipher]-[mode]-[iv] 형식이어야 합니다." + +#: lib/luks1/keyencryption.c:85 lib/luks1/keymanage.c:353 +#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1132 +#: lib/luks2/luks2_json_metadata.c:1518 lib/luks2/luks2_keyslot.c:711 +#, c-format +msgid "Cannot write to device %s, permission denied." +msgstr "%s 장치에 기록할 수 없습니다. 권한 거부." + +#: lib/luks1/keyencryption.c:108 +msgid "Failed to open temporary keystore device." +msgstr "임시 키 스토어 장치 열기 실패." + +#: lib/luks1/keyencryption.c:115 +msgid "Failed to access temporary keystore device." +msgstr "임시 키 스토어 장치 접근 실패." + +#: lib/luks1/keyencryption.c:189 lib/luks2/luks2_keyslot_luks2.c:47 +#: lib/luks2/luks2_keyslot_reenc.c:184 +msgid "IO error while encrypting keyslot." +msgstr "키 슬롯 암호화 중 입출력 오류." + +#: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:356 +#: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:659 +#: lib/fvault2/fvault2.c:872 lib/verity/verity.c:67 lib/verity/verity.c:183 +#: lib/verity/verity_hash.c:312 lib/verity/verity_hash.c:321 +#: lib/verity/verity_hash.c:350 lib/verity/verity_fec.c:247 +#: lib/verity/verity_fec.c:259 lib/verity/verity_fec.c:264 +#: lib/luks2/luks2_json_metadata.c:1521 src/utils_reencrypt_luks1.c:108 +#: src/utils_reencrypt_luks1.c:120 +#, c-format +msgid "Cannot open device %s." +msgstr "%s 장치를 열 수 없습니다." + +#: lib/luks1/keyencryption.c:247 lib/luks2/luks2_keyslot_luks2.c:85 +msgid "IO error while decrypting keyslot." +msgstr "키 슬롯을 해독하는 중 입출력 오류." + +#: lib/luks1/keymanage.c:117 +#, c-format +msgid "Device %s is too small. (LUKS1 requires at least % bytes.)" +msgstr "%s 장치 크기가 너무 작습니다 (LUKS1 은 최소 % 바이트가 필요)." + +#: lib/luks1/keymanage.c:138 lib/luks1/keymanage.c:146 +#: lib/luks1/keymanage.c:158 lib/luks1/keymanage.c:169 +#: lib/luks1/keymanage.c:181 +#, c-format +msgid "LUKS keyslot %u is invalid." +msgstr "LUKS 키 슬롯 %u번이 적절하지 않습니다." + +#: lib/luks1/keymanage.c:254 lib/luks2/luks2_json_metadata.c:1382 +#, c-format +msgid "Requested header backup file %s already exists." +msgstr "요청한 %s 헤더 백업 파일이 이미 있습니다." + +#: lib/luks1/keymanage.c:256 lib/luks2/luks2_json_metadata.c:1384 +#, c-format +msgid "Cannot create header backup file %s." +msgstr "%s 헤더 백업 파일을 만들 수 없습니다." + +#: lib/luks1/keymanage.c:263 lib/luks2/luks2_json_metadata.c:1391 +#, c-format +msgid "Cannot write header backup file %s." +msgstr "%s 헤더 백업 파일을 기록할 수 없습니다." + +#: lib/luks1/keymanage.c:295 lib/luks2/luks2_json_metadata.c:1428 +msgid "Backup file does not contain valid LUKS header." +msgstr "백업 파일에 적절한 LUKS 헤더가 없습니다." + +#: lib/luks1/keymanage.c:308 lib/luks1/keymanage.c:580 +#: lib/luks2/luks2_json_metadata.c:1450 +#, c-format +msgid "Cannot open header backup file %s." +msgstr "%s 헤더 백업 파일을 열 수 없습니다." + +#: lib/luks1/keymanage.c:316 lib/luks2/luks2_json_metadata.c:1458 +#, c-format +msgid "Cannot read header backup file %s." +msgstr "%s 헤더 백업 파일을 읽을 수 없습니다." + +#: lib/luks1/keymanage.c:326 +msgid "Data offset or key size differs on device and backup, restore failed." +msgstr "장치와 백업의 데이터 오프셋 또는 키 크기가 다릅니다. 복구 실패." + +#: lib/luks1/keymanage.c:334 +#, c-format +msgid "Device %s %s%s" +msgstr "%s 장치 %s%s" + +#: lib/luks1/keymanage.c:335 +msgid "does not contain LUKS header. Replacing header can destroy data on that device." +msgstr "LUKS 헤더가 없습니다. 헤더를 교체하면 장치 데이터가 깨질 수 있습니다." + +#: lib/luks1/keymanage.c:336 +msgid "already contains LUKS header. Replacing header will destroy existing keyslots." +msgstr "LUKS 헤더가 이미 있습니다. 헤더를 교체하면 기존 키 슬롯이 깨질 수 있습니다." + +#: lib/luks1/keymanage.c:337 lib/luks2/luks2_json_metadata.c:1490 +msgid "" +"\n" +"WARNING: real device header has different UUID than backup!" +msgstr "" +"\n" +"경고: 실제 장치 헤더에 백업 때와 다른 UUID가 있습니다!" + +#: lib/luks1/keymanage.c:385 +msgid "Non standard key size, manual repair required." +msgstr "비 표준 키 길이, 직접 복구가 필요합니다." + +#: lib/luks1/keymanage.c:395 +msgid "Non standard keyslots alignment, manual repair required." +msgstr "비 표준 키 슬롯 정렬, 직접 복구가 필요합니다." + +#: lib/luks1/keymanage.c:404 +#, c-format +msgid "Cipher mode repaired (%s -> %s)." +msgstr "암호화 방식 모드를 복구했습니다 (%s -> %s)." + +#: lib/luks1/keymanage.c:415 +#, c-format +msgid "Cipher hash repaired to lowercase (%s)." +msgstr "암호화 방식 해시를 소문자로 복구했습니다 (%s)." + +#: lib/luks1/keymanage.c:417 lib/luks1/keymanage.c:523 +#: lib/luks1/keymanage.c:756 +#, c-format +msgid "Requested LUKS hash %s is not supported." +msgstr "요청한 %s LUKS 해시는 지원하지 않습니다." + +#: lib/luks1/keymanage.c:431 +msgid "Repairing keyslots." +msgstr "키 슬롯을 복원합니다." + +#: lib/luks1/keymanage.c:450 +#, c-format +msgid "Keyslot %i: offset repaired (%u -> %u)." +msgstr "키 슬롯 %i: 오프셋을 복원했습니다 (%u -> %u)." + +#: lib/luks1/keymanage.c:458 +#, c-format +msgid "Keyslot %i: stripes repaired (%u -> %u)." +msgstr "키 슬롯 %i: 스트라이프를 복원했습니다 (%u -> %u)." + +#: lib/luks1/keymanage.c:467 +#, c-format +msgid "Keyslot %i: bogus partition signature." +msgstr "키 슬롯 %i: 위조한 분할 영역 시그니처입니다." + +#: lib/luks1/keymanage.c:472 +#, c-format +msgid "Keyslot %i: salt wiped." +msgstr "키 슬롯 %i: 솔트 값을 소거했습니다." + +#: lib/luks1/keymanage.c:489 +msgid "Writing LUKS header to disk." +msgstr "LUKS 헤더를 디스크에 기록합니다." + +#: lib/luks1/keymanage.c:494 +msgid "Repair failed." +msgstr "복구 실패." + +#: lib/luks1/keymanage.c:549 +#, c-format +msgid "LUKS cipher mode %s is invalid." +msgstr "LUKS 암호화 방식 모드 %s이(가) 적절하지 않습니다." + +#: lib/luks1/keymanage.c:554 +#, c-format +msgid "LUKS hash %s is invalid." +msgstr "%s LUKS 해시가 적절하지 않습니다." + +#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1366 +msgid "No known problems detected for LUKS header." +msgstr "LUKS 헤더에 알려진 문제가 없습니다." + +#: lib/luks1/keymanage.c:689 +#, c-format +msgid "Error during update of LUKS header on device %s." +msgstr "%s 장치의 LUKS 헤더 업데이트 중 오류가 있습니다." + +#: lib/luks1/keymanage.c:697 +#, c-format +msgid "Error re-reading LUKS header after update on device %s." +msgstr "%s 장치 업데이트 후 LUKS 헤더 다시 읽기 오류" + +#: lib/luks1/keymanage.c:750 +msgid "Data offset for LUKS header must be either 0 or higher than header size." +msgstr "LUKS 헤더용 데이터 오프셋은 0 또는 헤더 길이보다 더 큰 값이어야 합니다." + +#: lib/luks1/keymanage.c:761 lib/luks1/keymanage.c:832 +#: lib/luks2/luks2_json_format.c:231 lib/luks2/luks2_json_metadata.c:1261 +#: src/utils_reencrypt.c:701 +msgid "Wrong LUKS UUID format provided." +msgstr "잘못된 LUKS UUID 형식을 지정했습니다." + +#: lib/luks1/keymanage.c:783 +msgid "Cannot create LUKS header: reading random salt failed." +msgstr "LUKS 헤더를 만들 수 없음: 임의 솔트 값 읽기 실패." + +#: lib/luks1/keymanage.c:811 +#, c-format +msgid "Cannot create LUKS header: header digest failed (using hash %s)." +msgstr "LUKS 헤더를 만들 수 없음: 헤더 다이제스트 실패 (%s 해시 사용)." + +#: lib/luks1/keymanage.c:856 +#, c-format +msgid "Key slot %d active, purge first." +msgstr "%d번 키 슬롯이 동작 중입니다. 우선 제거하십시오." + +#: lib/luks1/keymanage.c:862 +#, c-format +msgid "Key slot %d material includes too few stripes. Header manipulation?" +msgstr "%d번 키 슬롯의 스트라이프가 너무 적습니다. 헤더를 조작했습니까?" + +#: lib/luks1/keymanage.c:900 lib/luks2/luks2_keyslot_luks2.c:217 +msgid "PBKDF2 iteration value overflow." +msgstr "PBKDF2 반복 값이 지정 범위를 넘었습니다." + +#: lib/luks1/keymanage.c:1022 +#, c-format +msgid "Cannot open keyslot (using hash %s)." +msgstr "키 슬롯을 열 수 없습니다 (%s 해시 사용)." + +#: lib/luks1/keymanage.c:1118 +#, c-format +msgid "Key slot %d is invalid, please select keyslot between 0 and %d." +msgstr "키 슬롯 번호 %d번이 적절하지 않습니다. 0에서 %d 사이 값 중 하나로 키 슬롯을 선택하십시오." + +#: lib/luks1/keymanage.c:1136 lib/luks2/luks2_keyslot.c:715 +#, c-format +msgid "Cannot wipe device %s." +msgstr "%s 장치를 소거할 수 없습니다." + +#: lib/loopaes/loopaes.c:140 +msgid "Detected not yet supported GPG encrypted keyfile." +msgstr "아직 지원하지 않는 GPG 암호화 키 파일을 확인했습니다." + +#: lib/loopaes/loopaes.c:141 +msgid "Please use gpg --decrypt | cryptsetup --keyfile=- ...\n" +msgstr "gpg --decrypt <키_파일> | cryptsetup --keyfile=- ... 명령을 사용하십시오\n" + +#: lib/loopaes/loopaes.c:162 lib/loopaes/loopaes.c:182 +msgid "Incompatible loop-AES keyfile detected." +msgstr "loop-AES 키 파일 비호환 요소를 확인했습니다." + +#: lib/loopaes/loopaes.c:238 +msgid "Kernel does not support loop-AES compatible mapping." +msgstr "커널에서 loop-AES 호환 매핑을 지원하지 않습니다." + +#: lib/tcrypt/tcrypt.c:495 +#, c-format +msgid "Error reading keyfile %s." +msgstr "%s 키 파일 읽는 중 오류가 있습니다." + +#: lib/tcrypt/tcrypt.c:549 +#, c-format +msgid "Maximum TCRYPT passphrase length (%zu) exceeded." +msgstr "TCRYPT 최대 암호 길이(%zu)를 초과했습니다." + +#: lib/tcrypt/tcrypt.c:591 +#, c-format +msgid "PBKDF2 hash algorithm %s not available, skipping." +msgstr "%s PBKDF2 해시 알고리즘을 사용할 수 없습니다. 건너뜀." + +#: lib/tcrypt/tcrypt.c:743 +#, c-format +msgid "Activation is not supported for %d sector size." +msgstr "%d 섹터 크기의 장치 동작 개시를 지원하지 않습니다." + +#: lib/tcrypt/tcrypt.c:749 +msgid "Kernel does not support activation for this TCRYPT legacy mode." +msgstr "커널에서 TCRYPT 레거시 모드의 동작 시작을 지원하지 않습니다." + +#: lib/tcrypt/tcrypt.c:804 +#, c-format +msgid "Activating TCRYPT system encryption for partition %s." +msgstr "%s 분할 영역에 대한 TCRYPT 시스템 암호화 동작을 시작합니다." + +#: lib/tcrypt/tcrypt.c:819 +msgid "Cannot determine TCRYPT system partition offset, activating whole encrypted area." +msgstr "TCRYPT 시스템 분할 영역 오프셋을 확인할 수 없어, 전체 암호화 영역의 동작을 시작합니다." + +#: lib/tcrypt/tcrypt.c:828 +msgid "Cannot determine TCRYPT system partition offset, activating device as a system partition." +msgstr "TCRYPT 시스템 분할 영역 오프셋을 확인할 수 없어, 시스템 분할 영역 장치 동작을 시작합니다." + +#: lib/tcrypt/tcrypt.c:908 +msgid "Kernel does not support TCRYPT compatible mapping." +msgstr "커널에서 TCRYPT 호환 매핑을 지원하지 않습니다." + +#: lib/tcrypt/tcrypt.c:1137 +msgid "This function is not supported without TCRYPT header load." +msgstr "이 함수는 TCRYPT 헤더를 불러오지 않으면 동작을 지원하지 않습니다." + +#: lib/bitlk/bitlk.c:293 +#, c-format +msgid "Unexpected metadata entry type '%u' found when parsing supported Volume Master Key." +msgstr "지원하는 볼륨 마스터 키를 해석하는 동안 예기치 못한 '%u' 메타데이터 요소 형식을 찾았습니다." + +#: lib/bitlk/bitlk.c:351 +msgid "Invalid string found when parsing Volume Master Key." +msgstr "볼륨 마스터 키를 해석하는 동안 부적절한 문자열을 찾았습니다." + +#: lib/bitlk/bitlk.c:355 +#, c-format +msgid "Unexpected string ('%s') found when parsing supported Volume Master Key." +msgstr "지원하는 볼륨 마스터 키를 해석하는 동안 예기치 못한 문자열('%s')을 찾았습니다." + +#: lib/bitlk/bitlk.c:375 +#, c-format +msgid "Unexpected metadata entry value '%u' found when parsing supported Volume Master Key." +msgstr "지원하는 볼륨 마스터 키를 해석하는 동안 예기치 못한 '%u' 메타데이터 요소 값을 찾았습니다." + +#: lib/bitlk/bitlk.c:528 +msgid "BITLK version 1 is currently not supported." +msgstr "BITLK 버전 1은 현재 지원하지 않습니다." + +#: lib/bitlk/bitlk.c:534 +msgid "Invalid or unknown boot signature for BITLK device." +msgstr "부적절하거나 알 수 없는 BITLK 장치의 부팅 시그니처입니다." + +#: lib/bitlk/bitlk.c:546 +#, c-format +msgid "Unsupported sector size %." +msgstr "지원하지 않는 섹터 크기 값 %." + +#: lib/bitlk/bitlk.c:554 +#, c-format +msgid "Failed to read BITLK header from %s." +msgstr "%s에서 BITLK 헤더 읽기 실패." + +#: lib/bitlk/bitlk.c:603 +#, c-format +msgid "Failed to read and validate BITLK FVE metadata from %s." +msgstr "%s에서 BITLK FVE 메타데이터 읽기 및 검증 실패." + +#: lib/bitlk/bitlk.c:610 +#, c-format +msgid "Failed to validate the location of BITLK FVE metadata from %s." +msgstr "%s에서 BITLK FVE 메타데이터 위치 검증 실패." + +#: lib/bitlk/bitlk.c:621 +#, c-format +msgid "BITLK FVE metadata changed between reads from %s." +msgstr "%s에서 읽은 내용 대비 BITLK FVE 메타데이터가 바뀌었습니다." + +#: lib/bitlk/bitlk.c:628 +#, c-format +msgid "Failed to hash BITLK FVE metadata read from %s." +msgstr "%s에서 읽은 BITLK FVE 메타데이터 해싱 실패." + +#: lib/bitlk/bitlk.c:644 +#, c-format +msgid "Failed to parse BITLK FVE validation metadata from %s." +msgstr "%s에서 BITLK FVE 유효성 메타데이터 해석 실패." + +#: lib/bitlk/bitlk.c:695 +msgid "Unknown or unsupported encryption type." +msgstr "알 수 없거나 지원하지 않는 암호화 형식." + +#: lib/bitlk/bitlk.c:733 +#, c-format +msgid "Failed to check BITLK metadata entries previously read from %s." +msgstr "%s에서 앞서 읽은 BITLK 메타데이터 항목 확인 실패." + +#: lib/bitlk/bitlk.c:853 +msgid "Failed to convert BITLK volume description" +msgstr "BITLK 볼륨 설명 변환 실패" + +#: lib/bitlk/bitlk.c:1018 +#, c-format +msgid "Unexpected metadata entry type '%u' found when parsing external key." +msgstr "외부 키를 해석하는 동안 예기치 못한 '%u' 메타데이터 요소 형식을 찾았습니다." + +#: lib/bitlk/bitlk.c:1041 +#, c-format +msgid "BEK file GUID '%s' does not match GUID of the volume." +msgstr "BEK 파일 GUID '%s'는 볼륨의 GUID와 일치하지 않습니다." + +#: lib/bitlk/bitlk.c:1045 +#, c-format +msgid "Unexpected metadata entry value '%u' found when parsing external key." +msgstr "외부 키를 해석하는 동안 예기치 못한 '%u' 메타데이터 항목 값을 찾았습니다." + +#: lib/bitlk/bitlk.c:1084 +#, c-format +msgid "Unsupported BEK metadata version %" +msgstr "지원하지 않는 BEK 메타데이터 버전 %" + +#: lib/bitlk/bitlk.c:1089 +#, c-format +msgid "Unexpected BEK metadata size % does not match BEK file length" +msgstr "예기치 못한 % BEK 메타데이터 크기가 BEK 파일 길이와 일치하지 않습니다" + +#: lib/bitlk/bitlk.c:1115 +msgid "Unexpected metadata entry found when parsing startup key." +msgstr "시작 키를 해석하는 동안 예기치 못한 메타데이터 요소를 찾았습니다." + +#: lib/bitlk/bitlk.c:1218 +msgid "This operation is not supported." +msgstr "이 동작은 지원하지 않습니다." + +#: lib/bitlk/bitlk.c:1226 +msgid "Unexpected key data size." +msgstr "예기치 않은 키 데이터 크기." + +#: lib/bitlk/bitlk.c:1442 +msgid "This BITLK device is in an unsupported state and cannot be activated." +msgstr "이 BITLK 장치는 지원하지 않는 상태이며, 동작을 시작할 수 없습니다." + +#: lib/bitlk/bitlk.c:1447 +#, c-format +msgid "BITLK devices with type '%s' cannot be activated." +msgstr "'%s' 형식의 BITLK 장치의 동작을 시작할 수 없습니다." + +#: lib/bitlk/bitlk.c:1486 +#, c-format +msgid "WARNING: BitLocker volume size % does not match the underlying device size %" +msgstr "경고: 비트로커 볼륨 크기 %가 하부 장치 크기 %와 일치하지 않습니다" + +#: lib/bitlk/bitlk.c:1613 +msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK IV." +msgstr "장치 동작을 개시할 수 없습니다. 커널 dm-crypt 에 BITLK IV 지원이 빠졌습니다." + +#: lib/bitlk/bitlk.c:1617 +msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK Elephant diffuser." +msgstr "장치 동작을 개시할 수 없습니다. 커널 dm-crypt에 BITLK 엘레펀트 diffuser 지원이 빠졌습니다." + +#: lib/bitlk/bitlk.c:1621 +msgid "Cannot activate device, kernel dm-crypt is missing support for large sector size." +msgstr "장치 동작을 개시할 수 없습니다. 커널 dm-crypt 에 거대 섹터 크기 지원이 빠졌습니다." + +#: lib/bitlk/bitlk.c:1625 +msgid "Cannot activate device, kernel dm-zero module is missing." +msgstr "장치 동작을 개시할 수 없습니다. 커널 dm-zero 모듈이 빠졌습니다." + +#: lib/fvault2/fvault2.c:532 +#, c-format +msgid "Could not read %u bytes of volume header." +msgstr "볼륨 헤더의 %u 바이트를 읽을 수 없습니다." + +#: lib/fvault2/fvault2.c:544 +#, c-format +msgid "Unsupported FVAULT2 version %." +msgstr "지원하지 않는 FVAULT2 버전 %." + +#: lib/verity/verity.c:55 lib/verity/verity.c:169 +#, c-format +msgid "Verity device %s does not use on-disk header." +msgstr "%s 검증 장치가 디스크의 헤더를 사용하지 않고 있습니다." + +#: lib/verity/verity.c:83 +#, c-format +msgid "Unsupported VERITY version %d." +msgstr "지원하지 않는 VERITY 버전 %d." + +#: lib/verity/verity.c:118 +msgid "VERITY header corrupted." +msgstr "검증 헤더가 망가졌습니다." + +#: lib/verity/verity.c:163 +#, c-format +msgid "Wrong VERITY UUID format provided on device %s." +msgstr "%s 장치에서 제공하는 잘못된 검증 UUID 형식." + +#: lib/verity/verity.c:207 +#, c-format +msgid "Error during update of verity header on device %s." +msgstr "%s 장치에서 검증 헤더 업데이트 중 오류가 있습니다." + +#: lib/verity/verity.c:261 +msgid "Root hash signature verification is not supported." +msgstr "루트 해시 시그니처 검증을 지원하지 않습니다." + +#: lib/verity/verity.c:266 +msgid "Root hash signature required." +msgstr "루트 해시 시그니처가 필요합니다." + +#: lib/verity/verity.c:282 +msgid "Errors cannot be repaired with FEC device." +msgstr "FEC 장치로 오류를 복원할 수 없습니다" + +#: lib/verity/verity.c:284 +#, c-format +msgid "Found %u repairable errors with FEC device." +msgstr "FEC 장치로 복원할 수 있는 오류 %u건을 찾았습니다." + +#: lib/verity/verity.c:368 +msgid "Kernel does not support dm-verity mapping." +msgstr "커널에서 dm-verity 매핑을 지원하지 않습니다." + +#: lib/verity/verity.c:372 +msgid "Kernel does not support dm-verity signature option." +msgstr "커널에서 dm-verity 시그니처 옵션을 지원하지 않습니다." + +#: lib/verity/verity.c:383 +msgid "Verity device detected corruption after activation." +msgstr "동작 개시 후 검증 장치의 손상을 찾았습니다." + +#: lib/verity/verity_hash.c:53 +#, c-format +msgid "Spare area is not zeroed at position %." +msgstr "여분 영역 크기가 % 위치에서 0이 아닙니다." + +#: lib/verity/verity_hash.c:154 lib/verity/verity_hash.c:287 +#: lib/verity/verity_hash.c:298 +msgid "Device offset overflow." +msgstr "장치 오프셋 영역 넘어감." + +#: lib/verity/verity_hash.c:205 +#, c-format +msgid "Verification failed at position %." +msgstr "% 위치에서 검증 실패." + +#: lib/verity/verity_hash.c:294 +msgid "Hash area overflow." +msgstr "해시 영역 넘쳐남." + +#: lib/verity/verity_hash.c:381 +msgid "Verification of data area failed." +msgstr "데이터 영역 검증 실패." + +#: lib/verity/verity_hash.c:386 +msgid "Verification of root hash failed." +msgstr "루트 해시 검증 실패." + +#: lib/verity/verity_hash.c:392 +msgid "Input/output error while creating hash area." +msgstr "해시 영역을 만드는 동안 입출력 오류가 있습니다." + +#: lib/verity/verity_hash.c:394 +msgid "Creation of hash area failed." +msgstr "해시 영역 만들기 실패." + +#: lib/verity/verity_hash.c:429 +#, c-format +msgid "WARNING: Kernel cannot activate device if data block size exceeds page size (%u)." +msgstr "경고: 데이터 블록 크기가 페이지 크기(%u)를 초과하면 커널이 장치 동작을 개시할 수 없습니다." + +#: lib/verity/verity_fec.c:118 +msgid "Failed to allocate RS context." +msgstr "RS 컨텍스트 할당 실패." + +#: lib/verity/verity_fec.c:136 +msgid "Failed to allocate buffer." +msgstr "버퍼 할당 실패." + +#: lib/verity/verity_fec.c:146 +#, c-format +msgid "Failed to read RS block % byte %d." +msgstr "RS 블록 % 바이트 %d 읽기 실패." + +#: lib/verity/verity_fec.c:159 +#, c-format +msgid "Failed to read parity for RS block %." +msgstr "RS 블록 %의 패리티 읽기 실패." + +#: lib/verity/verity_fec.c:167 +#, c-format +msgid "Failed to repair parity for block %." +msgstr "RS 블록 % 패리티 복원 실패." + +#: lib/verity/verity_fec.c:179 +#, c-format +msgid "Failed to write parity for RS block %." +msgstr "RS 블록 % 패리티 기록 실패." + +#: lib/verity/verity_fec.c:195 +msgid "Block sizes must match for FEC." +msgstr "블록 크기는 FEC에 일치해야 합니다." + +#: lib/verity/verity_fec.c:201 +msgid "Invalid number of parity bytes." +msgstr "부적절한 많은 양의 패리티 바이트." + +#: lib/verity/verity_fec.c:235 +msgid "Invalid FEC segment length." +msgstr "부적절한 FEC 세그먼트 길이입니다." + +#: lib/verity/verity_fec.c:303 +#, c-format +msgid "Failed to determine size for device %s." +msgstr "%s 장치 크기 확인 실패." + +#: lib/integrity/integrity.c:50 +#, c-format +msgid "Incompatible kernel dm-integrity metadata (version %u) detected on %s." +msgstr "%2$s에서 커널의 비호환 dm-integrity 메타데이터(버전 %1$u)를 찾았습니다." + +#: lib/integrity/integrity.c:308 lib/integrity/integrity.c:492 +msgid "Kernel does not support dm-integrity mapping." +msgstr "커널에서 dm-integrity 매핑을 지원하지 않습니다" + +#: lib/integrity/integrity.c:314 +msgid "Kernel does not support dm-integrity fixed metadata alignment." +msgstr "커널에서 dm-integrity 고정 메타데이터 정렬을 지원하지 않습니다." + +#: lib/integrity/integrity.c:323 +msgid "Kernel refuses to activate insecure recalculate option (see legacy activation options to override)." +msgstr "커널에서 안전하지 않은 재계산 옵션 동작 개시를 거부했습니다 (그래도 실행하려면 이전 동작 개시 옵션 참고)." + +#: lib/integrity/integrity.c:329 +msgid "Kernel does not support dm-integrity inline mode." +msgstr "커널에서 dm-integrity 인라인 모드를 지원하지 않습니다." + +#: lib/luks2/luks2_disk_metadata.c:382 lib/luks2/luks2_json_metadata.c:1184 +#: lib/luks2/luks2_json_metadata.c:1510 +#, c-format +msgid "Failed to acquire write lock on device %s." +msgstr "%s 장치의 쓰기 잠금 획득 실패." + +#: lib/luks2/luks2_disk_metadata.c:391 +msgid "Detected attempt for concurrent LUKS2 metadata update. Aborting operation." +msgstr "LUKS2 메타데이터의 동시 업데이트 시도를 확인했습니다. 동작 멈춤." + +#: lib/luks2/luks2_disk_metadata.c:726 lib/luks2/luks2_disk_metadata.c:747 +msgid "" +"Device contains ambiguous signatures, cannot auto-recover LUKS2.\n" +"Please run \"cryptsetup repair\" for recovery." +msgstr "" +"장치에 모호한 시그니쳐가 있어, LUKS2를 자동으로 복구할 수 없습니다.\n" +"복구하려면, \"cryptsetup repair\" 명령을 수행하십시오." + +#: lib/luks2/luks2_json_format.c:219 +#, c-format +msgid "WARNING: keyslots area (% bytes) is very small, available LUKS2 keyslot count is very limited.\n" +msgstr "경고: 키 슬롯 영역(% 바이트)이 너무 작아서, 가능한 LUKS2 키 슬롯 수가 매우 제한적입니다.\n" + +#: lib/luks2/luks2_json_format.c:418 +msgid "Requested data offset is too small." +msgstr "요청 데이터 오프셋 값이 너무 작습니다." + +#: lib/luks2/luks2_json_format.c:459 +#, c-format +msgid "WARNING: LUKS2 metadata size changed to % bytes.\n" +msgstr "경고: LUKS2 메타데이터 크기가 % 바이트로 바뀌었습니다.\n" + +#: lib/luks2/luks2_json_format.c:463 +#, c-format +msgid "WARNING: LUKS2 keyslots area size changed to % bytes.\n" +msgstr "경고: LUKS2 키 슬롯 영역 크기가 % 바이트로 바뀌었습니다.\n" + +#: lib/luks2/luks2_json_metadata.c:1171 lib/luks2/luks2_json_metadata.c:1357 +#: lib/luks2/luks2_json_metadata.c:1417 lib/luks2/luks2_keyslot_luks2.c:71 +#, c-format +msgid "Failed to acquire read lock on device %s." +msgstr "%s 장치의 잠금 읽기 획득 실패." + +#: lib/luks2/luks2_json_metadata.c:1277 +msgid "Label is too long." +msgstr "레이블이 너무 깁니다." + +#: lib/luks2/luks2_json_metadata.c:1435 +#, c-format +msgid "Forbidden LUKS2 requirements detected in backup %s." +msgstr "%s 백업에서 금지하고 있는 LUKS2 요구 사항을 확인했습니다." + +#: lib/luks2/luks2_json_metadata.c:1474 +msgid "Data offset differ on device and backup, restore failed." +msgstr "장치와 백업 간 데이터 오프셋이 다릅니다. 복원 실패." + +#: lib/luks2/luks2_json_metadata.c:1480 +msgid "Binary header with keyslot areas size differ on device and backup, restore failed." +msgstr "장치와 백업간 키 슬롯 영역이 들어간 바이너리 헤더 크기가 다릅니다. 복구 실패." + +#: lib/luks2/luks2_json_metadata.c:1487 +#, c-format +msgid "Device %s %s%s%s%s" +msgstr "%s 장치 %s%s%s%s" + +#: lib/luks2/luks2_json_metadata.c:1488 +msgid "does not contain LUKS2 header. Replacing header can destroy data on that device." +msgstr "LUKS2 헤더가 없습니다. 헤더 내용을 바꾸면 장치의 데이터가 깨질 수 있습니다." + +#: lib/luks2/luks2_json_metadata.c:1489 +msgid "already contains LUKS2 header. Replacing header will destroy existing keyslots." +msgstr "이미 LUKS2 헤더가 있습니다. 헤더 내용을 바꾸면 기존 키 슬롯이 깨집니다." + +#: lib/luks2/luks2_json_metadata.c:1491 +msgid "" +"\n" +"WARNING: unknown LUKS2 requirements detected in real device header!\n" +"Replacing header with backup may corrupt the data on that device!" +msgstr "" +"\n" +"경고: 알 수 없는 LUKS2 요구사항을 실제 장치 헤더에서 찾았습니다!\n" +"헤더 내용을 바꾸면 해당 장치의 데이터가 깨질 수도 있습니다!" + +#: lib/luks2/luks2_json_metadata.c:1493 +msgid "" +"\n" +"WARNING: Unfinished offline reencryption detected on the device!\n" +"Replacing header with backup may corrupt data." +msgstr "" +"\n" +"경고: 끝내지 않은 오프라인 재암호화를 장치에서 확인했습니다!\n" +"헤더를 백업 내용으로 바뀌면 데이터가 깨잘 수도 있습니다." + +#: lib/luks2/luks2_json_metadata.c:1591 +#, c-format +msgid "Ignored unknown flag %s." +msgstr "알 수 없는 %s 플래그를 무시했습니다." + +#: lib/luks2/luks2_json_metadata.c:2563 lib/luks2/luks2_reencrypt.c:2110 +#, c-format +msgid "Missing key for dm-crypt segment %u" +msgstr "dm-crypt 세그먼트 %u번에 키 빠짐" + +#: lib/luks2/luks2_json_metadata.c:2575 lib/luks2/luks2_reencrypt.c:2123 +msgid "Failed to set dm-crypt segment." +msgstr "dm-crypt 세그먼트 설정 실패." + +#: lib/luks2/luks2_json_metadata.c:2581 lib/luks2/luks2_reencrypt.c:2129 +msgid "Failed to set dm-linear segment." +msgstr "dm-linear 세그먼트 설정 실패." + +#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:578 +msgid "No known cipher specification pattern detected in LUKS2 header." +msgstr "LUKS2 헤더에서 찾은 알려진 암호화 방식 명세 패턴이 없습니다." + +#: lib/luks2/luks2_json_metadata.c:2709 +msgid "OPAL device must have static device size." +msgstr "OPAL 장치에 정적 장치 크기 정보가 들어가야 합니다." + +#: lib/luks2/luks2_json_metadata.c:2729 +msgid "Encrypted OPAL device with integrity must be smaller than locking range." +msgstr "무결성 정보를 지닌 암호화한 OPAL 장치는 잠금 범위보다 작아야 합니다." + +#: lib/luks2/luks2_json_metadata.c:2734 +msgid "OPAL device must have same size as locking range." +msgstr "OPAL 장치는 잠금 범위와 같은 크기를 지녀야 합니다." + +#: lib/luks2/luks2_json_metadata.c:2754 +#, c-format +msgid "OPAL device is %s already unlocked.\n" +msgstr "OPAN 장치는 %s(이)며, 이미 잠금을 해제했습니다.\n" + +#: lib/luks2/luks2_json_metadata.c:2793 +msgid "Unsupported device integrity configuration." +msgstr "지원하지 않는 장치 무결성 설정." + +#: lib/luks2/luks2_json_metadata.c:2809 +msgid "Underlying dm-integrity device with unexpected provided data sectors." +msgstr "dm-integrity 장치 기저에 예기치 못한 지정 데이터 섹터가 있습니다." + +#: lib/luks2/luks2_json_metadata.c:2911 +msgid "Reencryption in-progress. Cannot deactivate device." +msgstr "재암호화 진행 중입니다. 장치 동작 상태를 해제할 수 없습니다." + +#: lib/luks2/luks2_json_metadata.c:2922 lib/luks2/luks2_reencrypt.c:4287 +#, c-format +msgid "Failed to replace suspended device %s with dm-error target." +msgstr "대기 상태에 있는 %s 장치의 dm-error 타겟 전환 실패." + +#: lib/luks2/luks2_json_metadata.c:3001 lib/luks2/luks2_json_metadata.c:3023 +#, c-format +msgid "Device %s was deactivated but hardware OPAL device cannot be locked." +msgstr "%s 장치의 동작 상태를 해제했지만 OPAL 장치 하드웨어를 잠글 수는 없습니다." + +#: lib/luks2/luks2_json_metadata.c:3045 +msgid "Unmet LUKS2 requirements detected." +msgstr "LUKS2 요구 사항의 불만족 요소를 확인했습니다." + +#: lib/luks2/luks2_json_metadata.c:3053 +msgid "Operation incompatible with device marked for legacy reencryption. Aborting." +msgstr "이전 재암호화 마킹한 장치의 동작 호환성이 없습니다. 멈춤." + +#: lib/luks2/luks2_json_metadata.c:3055 +msgid "Operation incompatible with device marked for LUKS2 reencryption. Aborting." +msgstr "LUKS2 재암호화 마킹한 장치의 동작 호환성이 없습니다. 멈춤." + +#: lib/luks2/luks2_json_metadata.c:3057 +msgid "Operation incompatible with device using OPAL. Aborting." +msgstr "OPAL을 활용하는 장치의 동작 호환성이 없습니다. 멈춤." + +#: lib/luks2/luks2_json_metadata.c:3059 +msgid "Operation incompatible with device using inline HW tags. Aborting." +msgstr "인라인 하드웨어 태그를 사용하는 장치의 동작 호환성이 없습니다. 멈춤." + +#: lib/luks2/luks2_keyslot.c:543 lib/luks2/luks2_keyslot.c:601 +msgid "Not enough available memory to open a keyslot." +msgstr "키 슬롯을 열 충분한 가용 메모리 공간이 없습니다." + +#: lib/luks2/luks2_keyslot.c:545 lib/luks2/luks2_keyslot.c:603 +msgid "Keyslot open failed." +msgstr "키 슬롯 열기 실패." + +#: lib/luks2/luks2_keyslot_luks2.c:40 lib/luks2/luks2_keyslot_luks2.c:77 +#, c-format +msgid "Cannot use %s cipher for keyslot encryption." +msgstr "%s 암호화 방식을 키 슬롯 암호화에 사용할 수 없습니다." + +#: lib/luks2/luks2_keyslot_luks2.c:219 +msgid "Not enough memory for keyslot key derivation." +msgstr "키 슬롯 키를 가져올 충분한 메모리 공간이 없습니다." + +#: lib/luks2/luks2_keyslot_luks2.c:233 lib/luks2/luks2_keyslot_luks2.c:358 +#: lib/luks2/luks2_keyslot_reenc.c:434 lib/luks2/luks2_reencrypt.c:2734 +#, c-format +msgid "Hash algorithm %s is not available." +msgstr "%s 해싱 알고리즘은 사용할 수 없습니다." + +#: lib/luks2/luks2_keyslot_luks2.c:475 +msgid "No space for new keyslot." +msgstr "새 키 슬롯을 저장할 공간이 없습니다." + +#: lib/luks2/luks2_keyslot_reenc.c:583 +msgid "Invalid reencryption resilience mode change requested." +msgstr "부적절한 재암호화 복원 모드 변경을 요청했습니다." + +#: lib/luks2/luks2_keyslot_reenc.c:704 +#, c-format +msgid "Can not update resilience type. New type only provides % bytes, required space is: % bytes." +msgstr "복원 형식을 업데이트할 수 없습니다. 새 형식은 % 바이트만 제공하는데, 요구 공간 영역은 % 바이트입니다." + +#: lib/luks2/luks2_keyslot_reenc.c:714 +msgid "Failed to refresh reencryption verification digest." +msgstr "재암호화 검증 다이제스트 상태 새로 고침 실패." + +#: lib/luks2/luks2_luks1_convert.c:498 +#, c-format +msgid "Cannot check status of device with uuid: %s." +msgstr "UUID로 장치 상태를 검사할 수 없습니다: %s." + +#: lib/luks2/luks2_luks1_convert.c:524 +msgid "Unable to convert header with LUKSMETA additional metadata." +msgstr "LUKSMETA 추가 메타데이터로 헤더를 변환할 수 없습니다." + +#: lib/luks2/luks2_luks1_convert.c:556 lib/luks2/luks2_reencrypt.c:3894 +#, c-format +msgid "Unable to use cipher specification %s-%s for LUKS2." +msgstr "LUKS2에 %s-%s 암호화 방식 명세를 활용할 수 없습니다." + +#: lib/luks2/luks2_luks1_convert.c:565 +#, c-format +msgid "Unable to use cipher specification %s-%s for LUKS2 keyslot." +msgstr "LUKS2 키 슬롯에 %s-%s 암호화 방식 명세를 활용할 수 없습니다." + +#: lib/luks2/luks2_luks1_convert.c:580 +msgid "Unable to move keyslot area. Not enough space." +msgstr "키 슬롯 영역을 이동할 수 없습니다. 공간이 부족함." + +#: lib/luks2/luks2_luks1_convert.c:619 +msgid "Cannot convert to LUKS2 format - invalid metadata." +msgstr "LUKS2 형식으로 변환할 수 없습니다 - 부적절한 메타데이터." + +#: lib/luks2/luks2_luks1_convert.c:636 +msgid "Unable to move keyslot area. LUKS2 keyslots area too small." +msgstr "키 슬롯 영역을 이동할 수 없습니다. LUKS2 키 슬롯 영역이 너무 작습니다." + +#: lib/luks2/luks2_luks1_convert.c:642 lib/luks2/luks2_luks1_convert.c:972 +msgid "Unable to move keyslot area." +msgstr "키 슬롯 영역을 옮길 수 없습니다." + +#: lib/luks2/luks2_luks1_convert.c:757 +msgid "Cannot convert to LUKS1 format - default segment encryption sector size is not 512 bytes." +msgstr "LUKS1 형식으로 변환할 수 없음 - 기본 세그먼트 암호화 섹터 크기가 512바이트가 아닙니다." + +#: lib/luks2/luks2_luks1_convert.c:765 +msgid "Cannot convert to LUKS1 format - key slot digests are not LUKS1 compatible." +msgstr "LUKS1 형식으로 변환할 수 없음 - 키 슬롯 다이제스트가 LUKS1과 호환성이 없습니다." + +#: lib/luks2/luks2_luks1_convert.c:779 +#, c-format +msgid "Cannot convert to LUKS1 format - device uses wrapped key cipher %s." +msgstr "LUKS1 형식으로 변환할 수 없음 - 장치에서 래핑 키 암호화 방식 %s을(를) 사용하고 있습니다." + +#: lib/luks2/luks2_luks1_convert.c:784 +msgid "Cannot convert to LUKS1 format - device uses more segments." +msgstr "LUKS1 형식으로 변환할 수 없음 - 장치에서 더 많은 세그먼트가 있습니다." + +#: lib/luks2/luks2_luks1_convert.c:792 +#, c-format +msgid "Cannot convert to LUKS1 format - LUKS2 header contains %u token(s)." +msgstr "LUKS1 형식으로 변환할 수 없음 - LUKS2 헤더에 토근 %u개가 있습니다." + +#: lib/luks2/luks2_luks1_convert.c:798 +msgid "Cannot convert to LUKS1 format - there are no active keyslots." +msgstr "LUKS1 형식으로 변환할 수 없음 - 동작 중인 키 슬롯이 없습니다." + +#: lib/luks2/luks2_luks1_convert.c:810 +#, c-format +msgid "Cannot convert to LUKS1 format - keyslot %u is in invalid state." +msgstr "LUKS1 형식으로 변환할 수 없음 - %u번 키 슬롯이 적절하지 않은 상태에 있습니다." + +#: lib/luks2/luks2_luks1_convert.c:815 +#, c-format +msgid "Cannot convert to LUKS1 format - keyslot %u is unbound." +msgstr "LUKS1 형식으로 변환할 수 없음 - %u번 키 슬롯이 범위 밖에 있습니다." + +#: lib/luks2/luks2_luks1_convert.c:820 +#, c-format +msgid "Cannot convert to LUKS1 format - slot %u (over maximum slots) is still active." +msgstr "LUKS1 형식으로 변환할 수 없음 - %u번 슬롯(최대 슬롯 범위 밖)이 여전히 동작중입니다." + +#: lib/luks2/luks2_luks1_convert.c:825 +#, c-format +msgid "Cannot convert to LUKS1 format - keyslot %u is not LUKS1 compatible." +msgstr "LUKS1 형식으로 변환할 수 없음 - %u번 키 슬롯이 LUKS1과 호환성이 없습니다." + +#: lib/luks2/luks2_reencrypt.c:1199 +#, c-format +msgid "Hotzone size must be multiple of calculated zone alignment (%zu bytes)." +msgstr "핫존 크기는 계산한 영역 값의 배수여야 합니다 (%zu 바이트)." + +#: lib/luks2/luks2_reencrypt.c:1204 +#, c-format +msgid "Device size must be multiple of calculated zone alignment (%zu bytes)." +msgstr "장치 크기는 계산한 영역 값읠 배수여야 합니다 (%zu 바이트)." + +#: lib/luks2/luks2_reencrypt.c:1411 lib/luks2/luks2_reencrypt.c:1597 +#: lib/luks2/luks2_reencrypt.c:1680 lib/luks2/luks2_reencrypt.c:1722 +#: lib/luks2/luks2_reencrypt.c:4081 +msgid "Failed to initialize old segment storage wrapper." +msgstr "이전 세그먼트 저장소 래퍼 초기화 실패." + +#: lib/luks2/luks2_reencrypt.c:1425 lib/luks2/luks2_reencrypt.c:1575 +msgid "Failed to initialize new segment storage wrapper." +msgstr "새 세그먼트 저장소 래퍼 초기화 실패" + +#: lib/luks2/luks2_reencrypt.c:1551 lib/luks2/luks2_reencrypt.c:4093 +msgid "Failed to initialize hotzone protection." +msgstr "핫존 보호 초기화 실패." + +#: lib/luks2/luks2_reencrypt.c:1624 +msgid "Failed to read checksums for current hotzone." +msgstr "현재 핫존의 체크섬 읽기 실패." + +#: lib/luks2/luks2_reencrypt.c:1631 lib/luks2/luks2_reencrypt.c:4108 +#, c-format +msgid "Failed to read hotzone area starting at %." +msgstr "%에서 시작하는 핫존 영역 읽기 실패." + +#: lib/luks2/luks2_reencrypt.c:1650 +#, c-format +msgid "Failed to decrypt sector %zu." +msgstr "%zu 섹터 해독 실패." + +#: lib/luks2/luks2_reencrypt.c:1656 +#, c-format +msgid "Failed to recover sector %zu." +msgstr "%zu 섹터 복원 실패." + +#: lib/luks2/luks2_reencrypt.c:2209 +#, c-format +msgid "Source and target device sizes don't match. Source %, target: %." +msgstr "원본 및 대상 장치 크기가 일치하지 않습니다. 원본: %, 대상: %." + +#: lib/luks2/luks2_reencrypt.c:2311 +#, c-format +msgid "Failed to activate hotzone device %s." +msgstr "%s 핫존 장치 동작 개시 실패." + +#: lib/luks2/luks2_reencrypt.c:2323 +#, c-format +msgid "Failed to allocate hotzone device %s." +msgstr "%s 핫존 장치 할당 실패" + +#: lib/luks2/luks2_reencrypt.c:2340 +#, c-format +msgid "Failed to activate overlay device %s with actual origin table." +msgstr "실제 원본 테이블에서 %s 오버레이 장치 동작 개시 실패." + +#: lib/luks2/luks2_reencrypt.c:2347 +#, c-format +msgid "Failed to load new mapping for device %s." +msgstr "%s 장치의 새 매핑 불러오기 실패." + +#: lib/luks2/luks2_reencrypt.c:2419 +msgid "Failed to refresh reencryption devices stack." +msgstr "재암호화 장치 스택 새로 고침 실패." + +#: lib/luks2/luks2_reencrypt.c:2616 +msgid "Failed to set new keyslots area size." +msgstr "새 키 슬롯 영역 크기 설정 실패." + +#: lib/luks2/luks2_reencrypt.c:2752 +#, c-format +msgid "Data shift value is not aligned to encryption sector size (% bytes)." +msgstr "데이터 쉬프트 값이 암호화 섹터 크기와 일치하지 않습니다 (% 바이트)." + +#: lib/luks2/luks2_reencrypt.c:2789 src/utils_reencrypt.c:162 +#, c-format +msgid "Unsupported resilience mode %s" +msgstr "지원하지 않는 %s 복원 모드" + +#: lib/luks2/luks2_reencrypt.c:2825 +msgid "Moved segment size can not be greater than data shift value." +msgstr "이동한 세그먼트의 크기는 데이터 쉬프트 값보다 클 수 없습니다." + +#: lib/luks2/luks2_reencrypt.c:2867 +msgid "Invalid reencryption resilience parameters." +msgstr "부적절한 재암호화 복원 매개변수." + +#: lib/luks2/luks2_reencrypt.c:2889 +#, c-format +msgid "Moved segment too large. Requested size %, available space for: %." +msgstr "옮긴 세그먼트가 너무 큽니다. 요청한 크기는 %이나, 가용 공간은 % 입니다." + +#: lib/luks2/luks2_reencrypt.c:2978 +msgid "Failed to clear table." +msgstr "테이블 삭제 실패." + +#: lib/luks2/luks2_reencrypt.c:3064 +#, c-format +msgid "Data shift (% sectors) is less than future data offset (% sectors)." +msgstr "데이터 쉬프트 (% 섹터)는 이후 데이터 오프셋보다 작습니다 (% 섹터)." + +#: lib/luks2/luks2_reencrypt.c:3079 lib/luks2/luks2_reencrypt.c:3086 +msgid "Reduced data size is larger than real device size." +msgstr "줄어든 데이터 크기가 실제 장치 크기보다 큽니다." + +#: lib/luks2/luks2_reencrypt.c:3096 +#, c-format +msgid "Data device is not aligned to encryption sector size (% bytes)." +msgstr "데이터 장치는 암호화 섹터 크기에 정렬한 상태가 아닙니다 (% 바이트)" + +#: lib/luks2/luks2_reencrypt.c:3126 lib/luks2/luks2_reencrypt.c:3644 +#: lib/luks2/luks2_reencrypt.c:3665 +#, c-format +msgid "Failed to open %s in exclusive mode (already mapped or mounted)." +msgstr "%s 배타 모드로 열기 실패 (이미 매핑했거나 마운팅함)." + +#: lib/luks2/luks2_reencrypt.c:3333 +msgid "Device not marked for LUKS2 reencryption." +msgstr "LUKS2 재암호화 장치로 표시하지 않았습니다." + +#: lib/luks2/luks2_reencrypt.c:3350 lib/luks2/luks2_reencrypt.c:4404 +msgid "Failed to load LUKS2 reencryption context." +msgstr "LUKS2 재암호화 컨텍스트 불러오기 실패." + +#: lib/luks2/luks2_reencrypt.c:3445 lib/luks2/luks2_reencrypt.c:3785 +msgid "Device is not in reencryption." +msgstr "재암호화 장치가 아닙니다." + +#: lib/luks2/luks2_reencrypt.c:3452 lib/luks2/luks2_reencrypt.c:3792 +msgid "Reencryption process is already running." +msgstr "재암호화 과정을 이미 시행중에 있습니다." + +#: lib/luks2/luks2_reencrypt.c:3454 lib/luks2/luks2_reencrypt.c:3794 +msgid "Failed to acquire reencryption lock." +msgstr "재암호화 잠금 획득 실패." + +#: lib/luks2/luks2_reencrypt.c:3472 +msgid "Cannot proceed with reencryption. Run reencryption recovery first." +msgstr "재암호화로 진행할 수 없습니다. 재암호화 복원을 우선 실행하십시오." + +#: lib/luks2/luks2_reencrypt.c:3608 +msgid "Active device size and requested reencryption size don't match." +msgstr "동작 장치 크기와 요청 재암호화 크기가 일치하지 않습니다." + +#: lib/luks2/luks2_reencrypt.c:3622 +msgid "Illegal device size requested in reencryption parameters." +msgstr "재암호화 매개변수로 부정적 장치 크기를 요청했습니다." + +#: lib/luks2/luks2_reencrypt.c:3724 +msgid "Reencryption in-progress. Cannot perform recovery." +msgstr "재암호화를 진행 중입니다. 복원을 수행할 수 없습니다." + +#: lib/luks2/luks2_reencrypt.c:3745 +msgid "LUKS2 reencryption recovery failed." +msgstr "LUKS 재암호화 복원 실패." + +#: lib/luks2/luks2_reencrypt.c:3878 lib/luks2/luks2_reencrypt.c:4357 +msgid "Failed to initialize reencryption device stack." +msgstr "재암호화 장치 스택 초기화 실패." + +#: lib/luks2/luks2_reencrypt.c:3911 +msgid "LUKS2 reencryption already initialized in metadata." +msgstr "LUKS2 재암호화를 이미 메타데이터에서 초기화했습니다." + +#: lib/luks2/luks2_reencrypt.c:3919 +msgid "Failed to initialize LUKS2 reencryption in metadata." +msgstr "메타데이터의 LUKS2 재암호화 초기화 실패." + +#: lib/luks2/luks2_reencrypt.c:3972 lib/luks2/luks2_reencrypt.c:4004 +#: lib/luks2/luks2_reencrypt.c:4034 +msgid "Reencryption is not supported for DAX (persistent memory) devices." +msgstr "DAX (영속 메모리) 장치에서 재 암호화를 지원하지 않습니다." + +#: lib/luks2/luks2_reencrypt.c:4063 +msgid "Failed to set device segments for next reencryption hotzone." +msgstr "다음 재암호화 핫존 설정을 위한 장치 세그먼트 설정 실패" + +#: lib/luks2/luks2_reencrypt.c:4116 +msgid "Failed to write reencryption resilience metadata." +msgstr "재암호화 복원 메타데이터 기록 실패." + +#: lib/luks2/luks2_reencrypt.c:4123 +msgid "Decryption failed." +msgstr "해독 실패." + +#: lib/luks2/luks2_reencrypt.c:4128 +#, c-format +msgid "Failed to write hotzone area starting at %." +msgstr "%(에)서 시작하는 핫존 영역 기록 실패." + +#: lib/luks2/luks2_reencrypt.c:4133 +msgid "Failed to sync data." +msgstr "데이터 동기화 실패." + +#: lib/luks2/luks2_reencrypt.c:4141 +msgid "Failed to update metadata after current reencryption hotzone completed." +msgstr "현재 재암호화 핫존 처리가 끝난 후 메타데이터 업데이트 실패." + +#: lib/luks2/luks2_reencrypt.c:4230 +msgid "Failed to write LUKS2 metadata." +msgstr "LUKS2 메타데이터 기록 실패." + +#: lib/luks2/luks2_reencrypt.c:4253 +msgid "Failed to wipe unused data device area." +msgstr "사용하지 않는 데이터 장치 영역 소거 실패." + +#: lib/luks2/luks2_reencrypt.c:4259 +#, c-format +msgid "Failed to remove unused (unbound) keyslot %d." +msgstr "사용하지 않는 (영역 미포함) 키 슬롯 %d번 제거 실패." + +#: lib/luks2/luks2_reencrypt.c:4269 +msgid "Failed to remove reencryption keyslot." +msgstr "재암호화 키 슬롯 제거 실패." + +#: lib/luks2/luks2_reencrypt.c:4279 +#, c-format +msgid "Fatal error while reencrypting chunk starting at %, % sectors long." +msgstr "%(에)서 시작, % 섹터 길이 길이 구간을 재암호화 하는 동안 치명적인 오류가 있습니다." + +#: lib/luks2/luks2_reencrypt.c:4283 +msgid "Online reencryption failed." +msgstr "온라인 재암호화 실패." + +#: lib/luks2/luks2_reencrypt.c:4288 +msgid "Do not resume the device unless replaced with error target manually." +msgstr "대상 장치에 오류가 나타나서 직접 대체하는 상황이 아니라면 대상을 동작 상태로 되돌리지 마십시오." + +#: lib/luks2/luks2_reencrypt.c:4340 +msgid "Cannot proceed with reencryption. Unexpected reencryption status." +msgstr "재암호화를 진행할 수 없습니다. 예기치 않은 재암호화 성태를 만났습니다." + +#: lib/luks2/luks2_reencrypt.c:4346 +msgid "Missing or invalid reencrypt context." +msgstr "재암호화 컨텍스트가 빠졌거나 부적절한 상태입니다." + +#: lib/luks2/luks2_reencrypt.c:4380 lib/luks2/luks2_reencrypt.c:4417 +msgid "Failed to update reencryption context." +msgstr "재암호화 컨텍스트 업데이트 실패." + +#: lib/luks2/luks2_reencrypt_digest.c:402 +msgid "Reencryption metadata is invalid." +msgstr "메타데이터 재 암호화가 적절하지 않습니다." + +#: lib/luks2/hw_opal/hw_opal.c:335 +#, c-format +msgid "OPAL range %d offset % does not match expected values %." +msgstr "OPAL 범위 %d 오프셋 % 값이 기대 값 % 과 일치하지 않습니다." + +#: lib/luks2/hw_opal/hw_opal.c:342 +#, c-format +msgid "OPAL range %d length % does not match device length %." +msgstr "OPAL 범위 %d 길이 % 값이 장치 크기 % 와 일치하지 않습니다." + +#: lib/luks2/hw_opal/hw_opal.c:348 +#, c-format +msgid "OPAL range %d locking is disabled." +msgstr "OPAL 범위 %d 잠금 해제 상태입니다." + +#: lib/luks2/hw_opal/hw_opal.c:358 lib/luks2/hw_opal/hw_opal.c:365 +#, c-format +msgid "Unexpected OPAL range %d lock state." +msgstr "예기치 못한 OPAL 범위 %d 잠금 상태." + +#: src/cryptsetup.c:87 +msgid "Keyslot encryption parameters can be set only for LUKS2 device." +msgstr "키 슬롯 암호화 매개변수는 LUKS2 장치에서만 설정할 수 있습니다." + +#: src/cryptsetup.c:93 +msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encryption." +msgstr "키 슬롯 암호화 매개변수는 LUKS2 키 슬롯 암호화 과정과 호환성이 없습니다." + +#: src/cryptsetup.c:150 src/cryptsetup.c:1179 src/cryptsetup.c:1544 +#: src/utils_reencrypt.c:1887 src/utils_reencrypt_luks1.c:502 +#: src/utils_reencrypt_luks1.c:565 +msgid "No known cipher specification pattern detected." +msgstr "확인한 암호화 방식 명세 패턴 중 알려진 항목이 없습니다." + +#: src/cryptsetup.c:160 +#, c-format +msgid "WARNING: Using default options for cipher (%s-%s, key size %u bits) that could be incompatible with older versions." +msgstr "경고: 사용하는 암호화 방식 (%s-%s, 키 크기 %u비트) 의 기본 옵션이 이전 버전과 호환성이 없을 수도 있습니다." + +#: src/cryptsetup.c:165 +#, c-format +msgid "WARNING: Using default options for hash (%s) that could be incompatible with older versions." +msgstr "경고: 사용하는 해시 기본 옵션 (%s) 이 이전 버전과 호환성이 없을 수도 있습니다." + +#: src/cryptsetup.c:169 +msgid "For plain mode, always use options --cipher, --key-size and if no keyfile or keyring is used, then also --hash." +msgstr "일반 모드에서는 항상 --cipher, --key-size 옵션을 사용하며, 사용하는 키 파일 또는 키 모음이 없다면 --hash 옵션도 사용합니다." + +#: src/cryptsetup.c:175 +msgid "WARNING: The --hash parameter is being ignored in plain mode with keyfile specified.\n" +msgstr "경고: 키 파일을 지정한 상황에서 일반 모드에서는 --hash 매개변수를 무시합니다.\n" + +#: src/cryptsetup.c:189 +msgid "WARNING: The --keyfile-size option is being ignored, the read size is the same as the encryption key size.\n" +msgstr "경고: 읽기 대상 크기가 암호화 키 크기와 동일한 상황에서는 --keyfile-size 옵션을 무시합니다.\n" + +#: src/cryptsetup.c:226 src/cryptsetup.c:1374 src/cryptsetup.c:1597 +#: src/integritysetup.c:188 src/utils_reencrypt.c:2138 +#, c-format +msgid "Blkid scan failed for %s." +msgstr "%s의 blkid 검사 실패." + +#: src/cryptsetup.c:232 +#, c-format +msgid "Detected device signature(s) on %s. Proceeding further may damage existing data." +msgstr "%s에서 장치 시그니처를 확인했습니다. 더 이상 진행하면 기존 데이터를 파괴할 수 있습니다." + +#: src/cryptsetup.c:238 src/cryptsetup.c:1260 src/cryptsetup.c:1308 +#: src/cryptsetup.c:1381 src/cryptsetup.c:1521 src/cryptsetup.c:1609 +#: src/cryptsetup.c:2494 src/cryptsetup.c:2923 src/integritysetup.c:178 +#: src/utils_reencrypt.c:111 src/utils_reencrypt.c:457 +#: src/utils_reencrypt.c:925 +msgid "Operation aborted.\n" +msgstr "동작을 멈추었습니다.\n" + +#: src/cryptsetup.c:323 +msgid "Option --key-file is required." +msgstr "--key-file 옵션이 필요합니다." + +#: src/cryptsetup.c:377 +msgid "Enter VeraCrypt PIM: " +msgstr "VeraCrypt PIM 입력: " + +#: src/cryptsetup.c:386 +msgid "Invalid PIM value: parse error." +msgstr "부적절한 PIM 값: 해석 오류." + +#: src/cryptsetup.c:389 +msgid "Invalid PIM value: 0." +msgstr "부적절한 PIM 값: 0." + +#: src/cryptsetup.c:392 +msgid "Invalid PIM value: outside of range." +msgstr "부적절한 PIM 값: 범위 밖." + +#: src/cryptsetup.c:415 +msgid "No device header detected with this passphrase." +msgstr "이 암호로 확인한 장치 헤더가 없습니다." + +#: src/cryptsetup.c:492 src/cryptsetup.c:677 +#, c-format +msgid "Device %s is not a valid BITLK device." +msgstr "%s 장치는 적절한 BITLK 장치가 아닙니다." + +#: src/cryptsetup.c:500 +msgid "Cannot determine volume key size for BITLK, please use --key-size option." +msgstr "BITLK의 볼륨 키 크기를 알 수 없습니다. --key-size 옵션을 사용하십시오." + +#: src/cryptsetup.c:546 +msgid "" +"Header dump with volume key is sensitive information\n" +"which allows access to encrypted partition without passphrase.\n" +"This dump should be always stored encrypted on safe place." +msgstr "" +"볼륨 키가 들어간 헤더 덤프에는 암호 없이 암호화 분할 영역에\n" +"접근할 수 있게 하는 민감 정보가 들어있습니다.\n" +"이 덤프는 항상 안전한 영역에 암호화하여 저장해야 합니다." + +#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2519 +msgid "" +"The header dump with volume key is sensitive information\n" +"that allows access to encrypted partition without a passphrase.\n" +"This dump should be stored encrypted in a safe place." +msgstr "" +"볼륨 키가 들어간 헤더 덤프에는 암호 없이 암호화 분할 영역에\n" +"접근할 수 있게 하는 민감 정보가 들어있습니다.\n" +"이 덤프는 안전한 영역에 암호화하여 저장해야 합니다." + +#: src/cryptsetup.c:754 src/cryptsetup.c:786 +#, c-format +msgid "Device %s is not a valid FVAULT2 device." +msgstr "%s 장치는 적절한 FVAULT2 장치가 아닙니다." + +#: src/cryptsetup.c:794 +msgid "Cannot determine volume key size for FVAULT2, please use --key-size option." +msgstr "FVAULT2 볼륨 키 크기를 확인할 수 없습니다. --key-size 옵션을 활용하십시오." + +#: src/cryptsetup.c:848 src/veritysetup.c:317 src/integritysetup.c:416 +#, c-format +msgid "Device %s is still active and scheduled for deferred removal.\n" +msgstr "%s 장치는 여전히 동작중이며 지연된 제거 동작에 따라 제거 예정입니다.\n" + +#: src/cryptsetup.c:881 src/cryptsetup.c:1807 src/cryptsetup.c:2081 +#: src/cryptsetup.c:2228 src/cryptsetup.c:2647 src/cryptsetup.c:2728 +#: src/cryptsetup.c:3261 +#, c-format +msgid "Failed to set external tokens path %s." +msgstr "%s 외부 토큰 경로 설정 실패." + +#: src/cryptsetup.c:890 +msgid "Resize of active device requires volume key in keyring but --disable-keyring option is set." +msgstr "동작 중인 장치 크기 조정은 키 모음의 볼륨 키가 필요합니다만 --disable-keyring 옵션을 지정했습니다." + +#: src/cryptsetup.c:1057 +msgid "Benchmark interrupted." +msgstr "비교 시험을 중단했습니다." + +#: src/cryptsetup.c:1078 +#, c-format +msgid "PBKDF2-%-9s N/A\n" +msgstr "PBKDF2-%-9s N/A\n" + +#: src/cryptsetup.c:1080 +#, c-format +msgid "PBKDF2-%-9s %7u iterations per second for %zu-bit key\n" +msgstr "PBKDF2-%-9s %7u 초당 반복 + %zu-비트 키\n" + +#: src/cryptsetup.c:1094 +#, c-format +msgid "%-10s N/A\n" +msgstr "%-10s N/A\n" + +#: src/cryptsetup.c:1096 +#, c-format +msgid "%-10s %4u iterations, %5u memory, %1u parallel threads (CPUs) for %zu-bit key (requested %u ms time)\n" +msgstr "%-10s %4u 반복, %5u 메모리, %1u 병렬처리 스레드(CPUs) + %zu-비트 키 (%u ms 시간에 요청)\n" + +#: src/cryptsetup.c:1120 +msgid "Result of benchmark is not reliable." +msgstr "비교 시험 결과는 신뢰할 만하지 않습니다." + +#: src/cryptsetup.c:1171 +msgid "# Tests are approximate using memory only (no storage IO).\n" +msgstr "# 시험은 대략적으로 메모리만 사용하여 추산했습니다 (저장장치 입출력 아님).\n" + +#. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. +#: src/cryptsetup.c:1196 +#, c-format +msgid "#%*s Algorithm | Key | Encryption | Decryption\n" +msgstr "#%*s 알고리즘 | 키 | 암호화 | 해 독 \n" + +#: src/cryptsetup.c:1204 +#, c-format +msgid "Cipher %s (with %i bits key) is not available." +msgstr "%s 암호화 방식(%i 비트 키)을 사용할 수 없습니다." + +#. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. +#: src/cryptsetup.c:1225 +msgid "# Algorithm | Key | Encryption | Decryption\n" +msgstr "# 알고리즘 | 키 | 암호화 | 해 독 \n" + +#: src/cryptsetup.c:1238 +msgid "N/A" +msgstr "해당 없음" + +#: src/cryptsetup.c:1241 +msgid "# Cipher speed test is not available.\n" +msgstr "# 암호화 방식 처리 속도를 시험할 수 없습니다.\n" + +#: src/cryptsetup.c:1257 +msgid "" +"Unprotected LUKS2 reencryption metadata detected. Please verify the reencryption operation is desirable (see luksDump output)\n" +"and continue (upgrade metadata) only if you acknowledge the operation as genuine." +msgstr "" +"보호하지 않은 LUKS2 재암호화 메타데이터를 확인했습니다. 재암호화 동작이 적절한 지 검증하시고 (luksDump 출력 확인)\n" +"동작에 문제가 없다고 확신이 들 경우에만 계속(메타데이터 업그레이드)하십시오." + +#: src/cryptsetup.c:1263 +msgid "Enter passphrase to protect and upgrade reencryption metadata: " +msgstr "재암호화 메타데이터 보호 및 업그레이드 암호 입력: " + +#: src/cryptsetup.c:1307 +msgid "Really proceed with LUKS2 reencryption recovery?" +msgstr "정말로 LUKS2 재암호화 복원을 진행하시겠습니까?" + +#: src/cryptsetup.c:1316 +msgid "Enter passphrase to verify reencryption metadata digest: " +msgstr "재암호화 메타데이터 다이제스트 검증용 암호 입력: " + +#: src/cryptsetup.c:1318 +msgid "Enter passphrase for reencryption recovery: " +msgstr "재암호화 복원 암호 입력: " + +#: src/cryptsetup.c:1380 +msgid "Really try to repair LUKS device header?" +msgstr "정말로 LUKS 장치 헤더 복원을 시도하시겠습니까?" + +#: src/cryptsetup.c:1408 src/integritysetup.c:76 src/integritysetup.c:244 +msgid "" +"\n" +"Wipe interrupted." +msgstr "" +"\n" +"소거 중단함." + +#: src/cryptsetup.c:1413 src/integritysetup.c:81 src/integritysetup.c:289 +msgid "" +"Wiping device to initialize integrity checksum.\n" +"You can interrupt this by pressing CTRL+c (rest of not wiped device will contain invalid checksum).\n" +msgstr "" +"무결성 체크섬을 초기화하기 위해 장치를 소거합니다.\n" +"CTRL+c 키를 눌러 이 동작을 중단할 수 있습니다 (소거하지 않은 장치의 나머지 영역에 부적절한 체크섬이 있을 수도 있음).\n" + +#: src/cryptsetup.c:1435 src/integritysetup.c:103 +#, c-format +msgid "Cannot deactivate temporary device %s." +msgstr "%s 임시 장치의 동작을 해제할 수 없습니다." + +#: src/cryptsetup.c:1483 +msgid "OPAL hw-only encryption does not support --cipher and --key-size, options ignored." +msgstr "OPAL 하드웨어 전용 암호화는 --cipher와 --key-size 를 지원하지 않아, 옵션을 무시했습니다." + +#: src/cryptsetup.c:1496 +msgid "Integrity option can be used only for LUKS2 format." +msgstr "LUKS2 형식에 대해서\"만\" 무결성 옵션을 사용할 수 있습니다." + +#: src/cryptsetup.c:1501 src/cryptsetup.c:1581 +msgid "Unsupported LUKS2 metadata size options." +msgstr "지원하지 않는 LUKS2 메타데이터 크기 옵션." + +#: src/cryptsetup.c:1506 +msgid "OPAL is supported only for LUKS2 format." +msgstr "OPAL은 LUKS2 형식에서만 지원합니다." + +#: src/cryptsetup.c:1511 +msgid "Inline hw tags are supported only for LUKS2 format." +msgstr "인라인 하드웨어 태그는 LUKS2 형식에서만 지원합니다." + +#: src/cryptsetup.c:1520 +msgid "Header file does not exist, do you want to create it?" +msgstr "헤더 파일이 없습니다. 만드시겠습니까?" + +#: src/cryptsetup.c:1528 +#, c-format +msgid "Cannot create header file %s." +msgstr "%s 헤더 파일을 만들 수 없습니다." + +#: src/cryptsetup.c:1554 src/integritysetup.c:126 src/integritysetup.c:141 +#: src/integritysetup.c:150 src/integritysetup.c:328 src/integritysetup.c:336 +#: src/integritysetup.c:346 +msgid "No known integrity specification pattern detected." +msgstr "알려진 무결성 명세 패턴이 없습니다." + +#: src/cryptsetup.c:1556 +msgid "Cannot use specified integrity key size." +msgstr "지정 무결성 키 크기를 사용할 수 없습니다." + +#: src/cryptsetup.c:1574 +#, c-format +msgid "Cannot use %s as on-disk header." +msgstr "%s을(를) 디스크 저장 헤더로 활용할 수 없습니다." + +#: src/cryptsetup.c:1603 src/integritysetup.c:172 +#, c-format +msgid "This will overwrite data on %s irrevocably." +msgstr "이 동작은 %s의 데이터를 돌이킬 수 없도록 덮어쓰기합니다." + +#: src/cryptsetup.c:1640 +msgid "OPAL Admin password cannot be empty." +msgstr "OPAL 관리자 암호는 비워둘 수 없습니다." + +#: src/cryptsetup.c:1654 src/cryptsetup.c:2098 src/cryptsetup.c:2241 +#: src/cryptsetup.c:2376 src/cryptsetup.c:2442 src/utils_reencrypt_luks1.c:428 +msgid "Failed to set pbkdf parameters." +msgstr "pbkdf 매개변수 설정 실패." + +#: src/cryptsetup.c:1785 +msgid "Reduced data offset is allowed only for detached LUKS header." +msgstr "데이터 오프셋 값의 감소 조절은 LUKS 헤더를 장치에서 분리했을 때만 가능합니다." + +#: src/cryptsetup.c:1792 +#, c-format +msgid "LUKS file container %s is too small for activation, there is no remaining space for data." +msgstr "%s LUKS 파일 컨테이너의 동작을 개시하기에는 너무 작습니다. 데이터 저장에 필요한 여분 공간이 없습니다." + +#: src/cryptsetup.c:1834 src/cryptsetup.c:2247 src/utils_reencrypt.c:277 +#: src/utils_reencrypt.c:369 src/utils_reencrypt.c:1907 +msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." +msgstr "키 슬롯을 누락한 상태에서 LUKS의 볼륨 키 크기를 알 수 없습니다. --key-size 옵션을 사용하십시오." + +#: src/cryptsetup.c:1853 src/utils_reencrypt.c:303 +msgid "Device requires two volume keys." +msgstr "장치에 볼륨 키 두개가 필요합니다." + +#: src/cryptsetup.c:1888 +msgid "Some specified activation parameters were ignored with OPAL hw-only encryption." +msgstr "OPAL 하드웨어 전용 암호화시 몇가지 동작 개시 매개 변수는 무시합니다." + +#: src/cryptsetup.c:1893 +msgid "Device activated but cannot make flags persistent." +msgstr "장치 동작을 개시했으나, 플래그를 영속적으로 적용할 수는 없습니다." + +#: src/cryptsetup.c:1973 src/cryptsetup.c:2041 +#, c-format +msgid "Keyslot %d is selected for deletion." +msgstr "%d번 키 슬롯을 삭제 대상으로 선택했습니다." + +#: src/cryptsetup.c:1985 src/cryptsetup.c:2045 +msgid "This is the last keyslot. Device will become unusable after purging this key." +msgstr "이 키 슬롯이 마지막입니다. 이 키를 제거하면 장치를 사용할 수 없습니다." + +#: src/cryptsetup.c:1986 +msgid "Enter any remaining passphrase: " +msgstr "임의의 나머지 암호 입력: " + +#: src/cryptsetup.c:1987 src/cryptsetup.c:2047 +msgid "Operation aborted, the keyslot was NOT wiped.\n" +msgstr "동작을 멈추었습니다. 키 슬롯을 소거하지 않았습니다.\n" + +#: src/cryptsetup.c:2023 +msgid "Enter passphrase to be deleted: " +msgstr "삭제할 암호 입력: " + +#: src/cryptsetup.c:2073 src/cryptsetup.c:2425 src/cryptsetup.c:3085 +#: src/cryptsetup.c:3252 +#, c-format +msgid "Device %s is not a valid LUKS2 device." +msgstr "%s 장치는 적절한 LUKS2 장치가 아닙니다." + +#: src/cryptsetup.c:2112 src/cryptsetup.c:2311 +msgid "Enter new passphrase for key slot: " +msgstr "키 슬롯의 새 암호 입력: " + +#: src/cryptsetup.c:2146 src/utils_luks.c:342 +#, c-format +msgid "Enter token PIN: " +msgstr "토큰 PIN 입력: " + +#: src/cryptsetup.c:2148 src/utils_luks.c:344 +#, c-format +msgid "Enter token %d PIN: " +msgstr "%d번 토큰 PIN 입력: " + +#: src/cryptsetup.c:2207 +msgid "WARNING: The --key-slot parameter is used for new keyslot number.\n" +msgstr "경고: --key-slot 매개변수를 새 키 슬롯 번호에 사용했습니다.\n" + +#: src/cryptsetup.c:2284 src/utils_reencrypt_luks1.c:1094 +#, c-format +msgid "Enter any existing passphrase: " +msgstr "기존 임의의 암호 입력: " + +#: src/cryptsetup.c:2380 +msgid "Enter passphrase to be changed: " +msgstr "바꿀 암호 입력: " + +#: src/cryptsetup.c:2396 src/utils_reencrypt_luks1.c:1080 +msgid "Enter new passphrase: " +msgstr "새 암호 입력: " + +#: src/cryptsetup.c:2446 +msgid "Enter passphrase for keyslot to be converted: " +msgstr "키 슬롯을 변환할 암호 입력: " + +#: src/cryptsetup.c:2470 +msgid "Only one device argument for isLuks operation is supported." +msgstr "isLuks 동작에 대해 하나의 장치 인자만 지원합니다." + +#: src/cryptsetup.c:2575 +#, c-format +msgid "Keyslot %d does not contain unbound key." +msgstr "%d번 키 슬롯에는 범위 밖 키가 없습니다." + +#: src/cryptsetup.c:2580 +msgid "" +"The header dump with unbound key is sensitive information.\n" +"This dump should be stored encrypted in a safe place." +msgstr "" +"범위 밖 키를 내포하는 헤더 덤프에 민감 정보가 들어있습니다.\n" +"이 덤프는 안전한 위치에 암호화 하여 저장해야 합니다." + +#: src/cryptsetup.c:2675 src/cryptsetup.c:2711 +#, c-format +msgid "%s is not active %s device name." +msgstr "%s은(는) 동작 중인 %s 장치 이름이 아닙니다." + +#: src/cryptsetup.c:2706 +#, c-format +msgid "%s is not active LUKS device name or header is missing." +msgstr "%s은(는) 동작 중인 LUKS 장치 이름이 아니거나 헤더가 빠졌습니다." + +#: src/cryptsetup.c:2783 src/cryptsetup.c:2802 +msgid "Option --header-backup-file is required." +msgstr "--header-backup-file 옵션이 필요합니다." + +#: src/cryptsetup.c:2833 +#, c-format +msgid "%s is not cryptsetup managed device." +msgstr "%s은(는) cryptsetup으로 관리하는 장치가 아닙니다." + +#: src/cryptsetup.c:2844 +#, c-format +msgid "Refresh is not supported for device type %s" +msgstr "%s 장치 형식에는 새로 고침 (최신화) 동작을 지원하지 않습니다." + +#: src/cryptsetup.c:2894 +#, c-format +msgid "Unrecognized metadata device type %s." +msgstr "인식할 수 없는 %s 메타데이터 장치 형식." + +#: src/cryptsetup.c:2896 +msgid "Command requires device and mapped name as arguments." +msgstr "명쳥에 장치와 매핑 이름을 인자로 지정해야 합니다." + +#: src/cryptsetup.c:2914 +msgid "Enter OPAL PSID: " +msgstr "OPAL PSID 입력: " + +#: src/cryptsetup.c:2914 +msgid "Enter OPAL Admin password: " +msgstr "OPAL 관리자 암호 입력: " + +#: src/cryptsetup.c:2922 +msgid "WARNING: WHOLE disk will be factory reset and all data will be lost! Continue?" +msgstr "경고: 전체 디스크를 공장 초기화하며, 모든 데이터를 잃게 됩니다! 계속 하시겠습니까?" + +#: src/cryptsetup.c:2965 +#, c-format +msgid "" +"This operation will erase all keyslots on device %s.\n" +"Device will become unusable after this operation." +msgstr "" +"이 동작은 %s 장치의 모든 키 슬롯을 지웁니다.\n" +"이 동작이 끝나면 장치를 사용할 수 없습니다." + +#: src/cryptsetup.c:2972 +msgid "Operation aborted, keyslots were NOT wiped.\n" +msgstr "동작을 멈추었습니다. 키 슬롯을 소거하지 않았습니다.\n" + +#: src/cryptsetup.c:3011 +msgid "Invalid LUKS type, only luks1 and luks2 are supported." +msgstr "부적절한 LUKS 형식, luks1 및 luks2 형식만 지원합니다." + +#: src/cryptsetup.c:3027 +#, c-format +msgid "Device is already %s type." +msgstr "장치가 이미 %s 형식입니다." + +#: src/cryptsetup.c:3034 +#, c-format +msgid "This operation will convert %s to %s format.\n" +msgstr "이 동작은 %s을 %s 형식으로 변환합니다.\n" + +#: src/cryptsetup.c:3037 +msgid "Operation aborted, device was NOT converted.\n" +msgstr "동작을 멈추었습니다. 장치를 변환하지 \"않았습니다\".\n" + +#: src/cryptsetup.c:3077 +msgid "Option --priority, --label or --subsystem is missing." +msgstr "--priority, --label, --subsystem 옵션 중 하나가 빠졌습니다." + +#: src/cryptsetup.c:3111 src/cryptsetup.c:3151 src/cryptsetup.c:3171 +#, c-format +msgid "Token %d is invalid." +msgstr "%d번 토큰이 부적절합니다." + +#: src/cryptsetup.c:3114 src/cryptsetup.c:3174 +#, c-format +msgid "Token %d in use." +msgstr "%d번 토큰은 사용중입니다." + +#: src/cryptsetup.c:3126 +#, c-format +msgid "Failed to add luks2-keyring token %d." +msgstr "luks2-keyring 토큰 %d번 추가 실패." + +#: src/cryptsetup.c:3137 src/cryptsetup.c:3200 +#, c-format +msgid "Failed to assign token %d to keyslot %d." +msgstr "키 슬롯 %2$d번으로의 토큰 %1$d번 할당 실패." + +#: src/cryptsetup.c:3154 +#, c-format +msgid "Token %d is not in use." +msgstr "%d번 토큰은 미사용중입니다." + +#: src/cryptsetup.c:3191 +msgid "Failed to import token from file." +msgstr "파일에서 토큰 가져오기 실패." + +#: src/cryptsetup.c:3216 +#, c-format +msgid "Failed to get token %d for export." +msgstr "내보낼 %d번 토큰 가져오기 실패." + +#: src/cryptsetup.c:3229 +#, c-format +msgid "Token %d is not assigned to keyslot %d." +msgstr "%d번 토큰은 %d번 키 슬롯에 할당하지 않았습니다." + +#: src/cryptsetup.c:3231 src/cryptsetup.c:3238 +#, c-format +msgid "Failed to unassign token %d from keyslot %d." +msgstr "%d번 키 슬롯에서 %d번 토큰 할당 해제 실패." + +#: src/cryptsetup.c:3297 +msgid "Option --tcrypt-hidden, --tcrypt-system or --tcrypt-backup is supported only for TCRYPT device." +msgstr "--tcrypt-hidden, --tcrypt-system, --tcrypt-backup 옵션은 TCRYPT 장치 형식에서만 지원합니다." + +#: src/cryptsetup.c:3300 +msgid "Option --veracrypt or --disable-veracrypt is supported only for TCRYPT device type." +msgstr "--veracrypt, --disable-veracrypt 옵션은 TCRYPT 장치 형식에서만 지원합니다." + +#: src/cryptsetup.c:3303 +msgid "Option --veracrypt-pim is supported only for VeraCrypt compatible devices." +msgstr "--veracrypt-pim 옵션은 VeraCrypt 호환 장치에서만 지원합니다." + +#: src/cryptsetup.c:3307 +msgid "Option --veracrypt-query-pim is supported only for VeraCrypt compatible devices." +msgstr "--veracrypt-query-pim 옵션은 VeraCrypt 호환 장치에서만 지원합니다." + +#: src/cryptsetup.c:3309 +msgid "The options --veracrypt-pim and --veracrypt-query-pim are mutually exclusive." +msgstr "--veracrypt-pim 옵션과 --veracrypt-query-pim 옵션은 혼용할 수 없습니다." + +#: src/cryptsetup.c:3318 +msgid "Option --persistent is not allowed with --test-passphrase." +msgstr "--persistent 옵션은 --test-passphrase 옵션의 혼용을 허용하지 않습니다." + +#: src/cryptsetup.c:3321 +msgid "Options --refresh and --test-passphrase are mutually exclusive." +msgstr "--refresh 옵션과 --test-passphrase 옵션은 혼용할 수 없습니다" + +#: src/cryptsetup.c:3324 +msgid "Option --shared is allowed only for open of plain device." +msgstr "--shared 옵션 사용은 일반 장비를 열 때만 허용합니다." + +#: src/cryptsetup.c:3327 +msgid "Option --skip is supported only for open of plain and loopaes devices." +msgstr "--skip 옵션 사용은 일반 장비와 루프 장비를 열 때만 지원합니다." + +#: src/cryptsetup.c:3330 +msgid "Option --offset with open action is only supported for plain and loopaes devices." +msgstr "열기 동작시 --offset 옵션의 사용은 일반 장비와 루프 장비에서만 지원합니다." + +#: src/cryptsetup.c:3333 +msgid "Option --tcrypt-hidden cannot be combined with --allow-discards." +msgstr "--tcrypt-hidden 옵션과 --allow-discards 옵션은 혼용할 수 없습니다." + +#: src/cryptsetup.c:3337 +msgid "Sector size option with open action is supported only for plain devices." +msgstr "섹터 크기 옵션과 열기 동작은 일반 장비 에서만 지원합니다." + +#: src/cryptsetup.c:3341 +msgid "Large IV sectors option is supported only for opening plain type device with sector size larger than 512 bytes." +msgstr "Large IV 섹터 옵션은 512 바이트 이상의 섹터 크기를 가진 일반 장비를 열 때만 지원합니다." + +#: src/cryptsetup.c:3346 +msgid "Option --test-passphrase is allowed only for open of LUKS, TCRYPT, BITLK and FVAULT2 devices." +msgstr "--test-passphrase 옵션 사용은 LUKS, TCRYPT, BITLK, FVAULT2 장비를 열 때만 허용합니다." + +#: src/cryptsetup.c:3349 src/cryptsetup.c:3379 +msgid "Options --device-size and --size cannot be combined." +msgstr "--device-size 옵션과 --size 옵션은 혼용할 수 없습니다." + +#: src/cryptsetup.c:3352 +msgid "Option --unbound is allowed only for open of luks device." +msgstr "--unbound 옵션의 사용은 luks 장치를 열 때만 허용합니다." + +#: src/cryptsetup.c:3355 +msgid "Option --unbound cannot be used without --test-passphrase." +msgstr "--unbound 옵션은 --test-passphrase 옵션을 제외하고는 사용할 수 없습니다." + +#: src/cryptsetup.c:3359 +msgid "Option --volume-key-keyring cannot be combined with --hash or --volume-key-file." +msgstr "--volume-key-keyring 옵션은 --hash 옵션 또는 --volume-key-file 옵션과 혼용할 수 없습니다." + +#: src/cryptsetup.c:3362 +msgid "Both --volume-key-file options must be paired with respective --key-size options." +msgstr "--volume-key-file 옵션 개별 지정에 따라 --key-size 옵션을 하나씩 짝으로 지정해야 합니다." + +#: src/cryptsetup.c:3371 src/veritysetup.c:673 src/integritysetup.c:787 +msgid "Options --cancel-deferred and --deferred cannot be used at the same time." +msgstr "--cancel-deferred 옵션과 --deferred 옵션은 혼용할 수 없습니다." + +#: src/cryptsetup.c:3387 +msgid "Option --active-name can be set only for LUKS2 device." +msgstr "--active-name 옵션은 LUKS2 장치에 대해서만 설정할 수 있습니다." + +#: src/cryptsetup.c:3390 +msgid "Options --active-name and --force-offline-reencrypt cannot be combined." +msgstr "--active-name 옵션과 --force-offline-reencrypt 옵션은 혼용할 수 없습니다." + +#: src/cryptsetup.c:3393 +msgid "Options --new-volume-key-file and --keep-key cannot be combined." +msgstr "--new-volume-key-file 옵션과 --keep-key 옵션은 혼용할 수 없습니다." + +#: src/cryptsetup.c:3396 +msgid "Options --new-volume-key-keyring and --keep-key cannot be combined." +msgstr "--new-volume-key-keyring 옵션과 --keep-key 옵션은 혼용할 수 없습니다." + +#: src/cryptsetup.c:3404 src/cryptsetup.c:3434 +msgid "Keyslot specification is required." +msgstr "키 슬롯 명세가 필요합니다." + +#: src/cryptsetup.c:3412 +msgid "Options --align-payload and --offset cannot be combined." +msgstr "--align-payload 옵션과 --offset 옵션은 혼용할 수 없습니다." + +#: src/cryptsetup.c:3415 +msgid "Option --integrity-no-wipe can be used only for format action with integrity extension." +msgstr "--integrity-no-wipe 옵션은 무결성 확장 기능을 동반한 포매팅 동작에만 사용할 수 있습니다." + +#: src/cryptsetup.c:3418 +msgid "Only one of --use-[u]random options is allowed." +msgstr "--use-[u]random 옵션 중 하나만 허용합니다." + +#: src/cryptsetup.c:3426 +msgid "Key size is required with --unbound option." +msgstr "키 크키 값은 --unbound 옵션 사용이 필요합니다." + +#: src/cryptsetup.c:3446 +msgid "Invalid token action." +msgstr "부적절한 토근 동작입니다." + +#: src/cryptsetup.c:3449 +msgid "--key-description parameter is mandatory for token add action." +msgstr "--key-description 매개변수는 토큰 추가 동작에 있어 필수입니다." + +#: src/cryptsetup.c:3453 src/cryptsetup.c:3466 +msgid "Action requires specific token. Use --token-id parameter." +msgstr "동작에 지정 토큰이 필요합니다. --token-id 매개변수를 활용하십시오." + +#: src/cryptsetup.c:3457 +msgid "Option --unbound is valid only with token add action." +msgstr "--unbound 옵션은 토큰 추가 동작일 설정했을 경우에만 유효합니다." + +#: src/cryptsetup.c:3459 +msgid "Options --key-slot and --unbound cannot be combined." +msgstr "--key-slot 옵션과 --unbound 옵션은 함께 사용할 수 없습니다." + +#: src/cryptsetup.c:3464 +msgid "Action requires specific keyslot. Use --key-slot parameter." +msgstr "동작에 지정 키 슬롯이 필요합니다. --key-slot 매개변수를 활용하십시오." + +#: src/cryptsetup.c:3480 +msgid " [--type ] []" +msgstr "<장치> [--type <형식>] [<명칭>]" + +#: src/cryptsetup.c:3480 src/veritysetup.c:487 src/integritysetup.c:554 +msgid "open device as " +msgstr "<명칭> 으로 장치를 엽니다" + +#: src/cryptsetup.c:3481 src/cryptsetup.c:3482 src/cryptsetup.c:3483 +#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:555 +#: src/integritysetup.c:556 src/integritysetup.c:558 +msgid "" +msgstr "<명칭>" + +#: src/cryptsetup.c:3481 src/veritysetup.c:488 src/integritysetup.c:555 +msgid "close device (remove mapping)" +msgstr "장치를 닫습니다 (매핑 제거)" + +#: src/cryptsetup.c:3482 src/integritysetup.c:558 +msgid "resize active device" +msgstr "활성 장치 크기를 조절합니다." + +#: src/cryptsetup.c:3483 +msgid "show device status" +msgstr "장치 상태를 보여줍니다" + +#: src/cryptsetup.c:3484 +msgid "[--cipher ]" +msgstr "[--cipher <암호화방식>]" + +#: src/cryptsetup.c:3484 +msgid "benchmark cipher" +msgstr "암호화 방식을 비교 시험합니다" + +#: src/cryptsetup.c:3485 src/cryptsetup.c:3486 src/cryptsetup.c:3487 +#: src/cryptsetup.c:3488 src/cryptsetup.c:3489 src/cryptsetup.c:3496 +#: src/cryptsetup.c:3497 src/cryptsetup.c:3498 src/cryptsetup.c:3499 +#: src/cryptsetup.c:3500 src/cryptsetup.c:3501 src/cryptsetup.c:3502 +#: src/cryptsetup.c:3503 src/cryptsetup.c:3504 src/cryptsetup.c:3505 +msgid "" +msgstr "<장치>" + +#: src/cryptsetup.c:3485 +msgid "try to repair on-disk metadata" +msgstr "디스크 메타데이터의 복구를 시도합니다." + +#: src/cryptsetup.c:3486 +msgid "reencrypt LUKS2 device" +msgstr "LUKS2 장치를 재암호화합니다" + +#: src/cryptsetup.c:3487 +msgid "erase all keyslots (remove encryption key)" +msgstr "모든 키 슬롯을 삭제합니다 (암호화 키 제거)" + +#: src/cryptsetup.c:3488 +msgid "convert LUKS from/to LUKS2 format" +msgstr "LUKS 에서/을 LUKS2 으로/부터 형식을 상호 변환합니다" + +#: src/cryptsetup.c:3489 +msgid "set permanent configuration options for LUKS2" +msgstr "LUKS2의 영구 설정 옵션을 설정합니다" + +#: src/cryptsetup.c:3490 src/cryptsetup.c:3491 +msgid " []" +msgstr "<장치> [<새_키_파일>]" + +#: src/cryptsetup.c:3490 +msgid "formats a LUKS device" +msgstr "LUKS 장치를 포매팅합니다" + +#: src/cryptsetup.c:3491 +msgid "add key to LUKS device" +msgstr "LUKS 장치에 키를 추가합니다" + +#: src/cryptsetup.c:3492 src/cryptsetup.c:3493 src/cryptsetup.c:3494 +msgid " []" +msgstr "<장치> [<키_파일>]" + +#: src/cryptsetup.c:3492 +msgid "removes supplied key or key file from LUKS device" +msgstr "보관 키 또는 키 파일을 LUKS 장치에서 제거합니다" + +#: src/cryptsetup.c:3493 +msgid "changes supplied key or key file of LUKS device" +msgstr "LUKS 장치의 보관 키 또는 키 파일을 바꿉니다" + +#: src/cryptsetup.c:3494 +msgid "converts a key to new pbkdf parameters" +msgstr "새 pbkdf 매개변수를 사용하여 키를 변환합니다" + +#: src/cryptsetup.c:3495 +msgid " " +msgstr "<장치> <키_슬롯>" + +#: src/cryptsetup.c:3495 +msgid "wipes key with number from LUKS device" +msgstr "LUKS 장치에서 <키_슬롯> 번호로 키를 소거합니다" + +#: src/cryptsetup.c:3496 +msgid "print UUID of LUKS device" +msgstr "LUKS 장치의 UUID를 출력합니다" + +#: src/cryptsetup.c:3497 +msgid "tests for LUKS partition header" +msgstr "<장치>의 LUKS 분할 영역 헤더를 시험합니다" + +#: src/cryptsetup.c:3498 +msgid "dump LUKS partition information" +msgstr "LUKS 분할 영역 정보 덤프" + +#: src/cryptsetup.c:3499 +msgid "dump TCRYPT device information" +msgstr "TCRYPT 장치 정보 덤프" + +#: src/cryptsetup.c:3500 +msgid "dump BITLK device information" +msgstr "BITLK 장치 정보 덤프" + +#: src/cryptsetup.c:3501 +msgid "dump FVAULT2 device information" +msgstr "FVAULT2 장치 정보 덤프" + +#: src/cryptsetup.c:3502 +msgid "Suspend LUKS device and wipe key (all IOs are frozen)" +msgstr "LUKS 장치를 대기 상태로 놓고 키를 소거합니다 (모든 입출력 동작을 중단)" + +#: src/cryptsetup.c:3503 +msgid "Resume suspended LUKS device" +msgstr "대기 상태로 들어간 LUKS 장치의 동작을 재개합니다" + +#: src/cryptsetup.c:3504 +msgid "Backup LUKS device header and keyslots" +msgstr "LUKS 장치 헤더와 키 슬롯을 백업합니다" + +#: src/cryptsetup.c:3505 +msgid "Restore LUKS device header and keyslots" +msgstr "LUKS 장치 헤더와 키 슬롯을 복원합니다" + +#: src/cryptsetup.c:3506 +msgid " " +msgstr " <장치>" + +#: src/cryptsetup.c:3506 +msgid "Manipulate LUKS2 tokens" +msgstr "LUKS2 토큰을 처리합니다" + +#: src/cryptsetup.c:3525 src/veritysetup.c:505 src/integritysetup.c:573 +msgid "" +"\n" +" is one of:\n" +msgstr "" +"\n" +"<동작>은 다음 중 하나입니다:\n" + +#: src/cryptsetup.c:3531 +msgid "" +"\n" +"You can also use old syntax aliases:\n" +"\topen: create (plainOpen), luksOpen, loopaesOpen, tcryptOpen, bitlkOpen, fvault2Open\n" +"\tclose: remove (plainClose), luksClose, loopaesClose, tcryptClose, bitlkClose, fvault2Close\n" +msgstr "" +"\n" +"또한 이전 <동작> 문법 별칭을 사용할 수도 있습니다:\n" +"\t열기: create (plainOpen), luksOpen, loopaesOpen, tcryptOpen, bitlkOpen, fvault2Open\n" +"\t닫기: remove (plainClose), luksClose, loopaesClose, tcryptClose, bitlkClose, fvault2Close\n" + +#: src/cryptsetup.c:3535 +#, c-format +msgid "" +"\n" +" is the device to create under %s\n" +" is the encrypted device\n" +" is the LUKS key slot number to modify\n" +" optional key file for the new key for luksAddKey action\n" +msgstr "" +"\n" +"<명칭>은 %s에서 만든 장치\n" +"<장치>는 암호화 장치\n" +"<키_슬롯>은 수정할 LUKS 키 슬롯 번호\n" +"<키_파일>은 luksAddKey 동작에 사용할 새 키의 추가 키 파일입니다\n" + +#: src/cryptsetup.c:3542 +#, c-format +msgid "" +"\n" +"Default compiled-in metadata format is %s (for luksFormat action).\n" +msgstr "" +"\n" +"컴파일 과정에 들어간 기본 메타데이터 형식은 %s 입니다(luksFormat 동작용).\n" + +#: src/cryptsetup.c:3547 +msgid "" +"\n" +"LUKS2 external token plugin support is enabled.\n" +msgstr "" +"\n" +"LUKS2 외부 토큰 플러그인 지원을 사용합니다.\n" + +#: src/cryptsetup.c:3548 +#, c-format +msgid "LUKS2 external token plugin path: %s.\n" +msgstr "LUKS2 외부 토큰 플러그인 경로: %s.\n" + +#: src/cryptsetup.c:3550 +msgid "" +"\n" +"LUKS2 external token plugin support is disabled.\n" +msgstr "" +"\n" +"LUKS2 외부 토큰 플러그인 지원 사용을 해제합니다.\n" + +#: src/cryptsetup.c:3554 +#, c-format +msgid "" +"\n" +"Default compiled-in key and passphrase parameters:\n" +"\tMaximum keyfile size: %dkB, Maximum interactive passphrase length %d (characters)\n" +"Default PBKDF for LUKS1: %s, iteration time: %d (ms)\n" +"Default PBKDF for LUKS2: %s\n" +"\tIteration time: %d, Memory required: %dkB, Parallel threads: %d\n" +msgstr "" +"\n" +"컴파일 과정에 들어간 기본 키 및 암호 매개변수:\n" +"\t최대 키 파일 크기: %dkB, 최대 대화식 암호 길이 %d(문자)\n" +"LUKS1의 기본 PBKDF: %s, 반복 횟수: %d(ms)\n" +"LUKS2의 기본 PBKDF: %s\n" +"\t반복 횟수: %d, 요구 메모리 용량: %dkB, 병렬 스레드: %d\n" + +#: src/cryptsetup.c:3565 +#, c-format +msgid "" +"\n" +"Default compiled-in device cipher parameters:\n" +"\tloop-AES: %s, Key %d bits\n" +"\tplain: %s, Key: %d bits, Password hashing: %s\n" +"\tLUKS: %s, Key: %d bits, LUKS header hashing: %s, RNG: %s\n" +msgstr "" +"\n" +"컴파일 과정에 들어간 장치 암호 매개 변수:\n" +"\tloop-AES: %s, 키 %d비트\n" +"\t평문: %s, 키: %d비트, 암호 해싱: %s\n" +"\tLUKS: %s, 키: %d비트, LUKS 헤더 해싱: %s, RNG: %s\n" + +#: src/cryptsetup.c:3574 +msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" +msgstr "\tLUKS: XTS 모드에서의 기본 키 크기(내부 키 2개)가 2배로 늘어납니다.\n" + +#: src/cryptsetup.c:3592 src/veritysetup.c:647 src/integritysetup.c:733 +#, c-format +msgid "%s: requires %s as arguments" +msgstr "%s: %s 인자 값이 필요합니다" + +#: src/cryptsetup.c:3632 src/utils_reencrypt_luks1.c:1143 +msgid "Key slot is invalid." +msgstr "키 슬롯이 적절하지 않습니다." + +#: src/cryptsetup.c:3660 +msgid "Device size must be multiple of 512 bytes sector." +msgstr "장치 크기는 512 바이트 섹터의 배수여야 합니다." + +#: src/cryptsetup.c:3665 +msgid "Invalid max reencryption hotzone size specification." +msgstr "부절적한 최대 재암호화 핫존 크기 지정 값입니다." + +#: src/cryptsetup.c:3679 src/cryptsetup.c:3696 src/cryptsetup.c:3708 +msgid "Key size must be a multiple of 8 bits" +msgstr "키 크기는 8비트의 배수여야 합니다." + +#: src/cryptsetup.c:3686 +msgid "At most 2 key size specifications can be supplied." +msgstr "최대 키 크키 명세 2가지를 지정할 수 있습니다." + +#: src/cryptsetup.c:3715 src/cryptsetup.c:3726 +#, c-format +msgid "At most %d volume key specifications can be supplied." +msgstr "최대 볼륨 키 명세 %d가지를 지정할 수 있습니다." + +#: src/cryptsetup.c:3738 +#, c-format +msgid "At most %d keyring link specifications can be supplied." +msgstr "최대 키 모음 링크 명세 %d가지를 지정할 수 있습니다." + +#: src/cryptsetup.c:3747 +msgid "Maximum device reduce size is 1 GiB." +msgstr "최대 장치 축소 용량은 1GiB 입니다." + +#: src/cryptsetup.c:3750 +msgid "Reduce size must be multiple of 512 bytes sector." +msgstr "축소 용량은 512바이트 섹터의 배수여야 합니다." + +#: src/cryptsetup.c:3767 +msgid "Option --priority can be only ignore/normal/prefer." +msgstr "--priority 옵션은 ignore/normal/prefer 셋 중 한가지 값만 지정 가능합니다." + +#: src/cryptsetup.c:3786 src/veritysetup.c:568 src/integritysetup.c:653 +msgid "Show this help message" +msgstr "이 도움말 메시지를 나타냅니다" + +#: src/cryptsetup.c:3787 src/veritysetup.c:569 src/integritysetup.c:654 +msgid "Display brief usage" +msgstr "간단한 사용법을 나타냅니다" + +#: src/cryptsetup.c:3788 src/veritysetup.c:570 src/integritysetup.c:655 +msgid "Print package version" +msgstr "패키지 버전을 출력합니다" + +#: src/cryptsetup.c:3799 src/veritysetup.c:581 src/integritysetup.c:666 +msgid "Help options:" +msgstr "도움말 옵션:" + +#: src/cryptsetup.c:3822 src/veritysetup.c:602 src/integritysetup.c:686 +msgid "[OPTION...] " +msgstr "[옵션...] <동작> <동작별_옵션>" + +#: src/cryptsetup.c:3831 src/veritysetup.c:611 src/integritysetup.c:697 +msgid "Argument missing." +msgstr "<동작> 인자가 빠졌습니다." + +#: src/cryptsetup.c:3910 src/veritysetup.c:642 src/integritysetup.c:728 +msgid "Unknown action." +msgstr "알 수 없는 동작." + +#: src/cryptsetup.c:3928 +msgid "Option --key-file takes precedence over specified key file argument." +msgstr "--key-file 옵션은 키 파일 인자 값보다 우선합니다." + +#: src/cryptsetup.c:3934 +msgid "Only one --key-file argument is allowed." +msgstr "--key-file 인자는 하나만 허용합니다." + +#: src/cryptsetup.c:3939 +msgid "Password-based key derivation function (PBKDF) can be only pbkdf2 or argon2i/argon2id." +msgstr "암호 기반 키 파생 함수(PBKDF)는 pbkdf2 또는 argon2i/argon2id만 지정 가능합니다." + +#: src/cryptsetup.c:3944 +msgid "PBKDF forced iterations cannot be combined with iteration time option." +msgstr "PBKDF 강제 반복 옵션은 반복 횟수 옵션과 함께 사용할 수 없습니다." + +#: src/cryptsetup.c:3949 +msgid "Cannot link volume key to a keyring when keyring is disabled." +msgstr "키 모음을 사용하지 않을 때는 볼륨 키를 키 모음에 연결할 수 없습니다." + +#: src/cryptsetup.c:3954 +msgid "Cannot use keyring key description when keyring is disabled." +msgstr "키 모음을 사용하지 않을 때는 키 모음 키 설명을 사용할 수 없습니다." + +#: src/cryptsetup.c:3959 +msgid "Inline integrity must be used together with --integrity option." +msgstr "인라인 무결성 확인은 --integrity 옵션을 함꼐 사용해야 합니다." + +#: src/cryptsetup.c:3970 +msgid "Options --keyslot-cipher and --keyslot-key-size must be used together." +msgstr "--keyslot-cipher 옵션과 --keyslow-key-size 옵션을 함께 사용해야 합니다." + +#: src/cryptsetup.c:3978 +msgid "No action taken. Invoked with --test-args option.\n" +msgstr "취한 동작이 없습니다. --test-args 옵션을 넣어 실행했습니다.\n" + +#: src/cryptsetup.c:3991 +msgid "Cannot disable metadata locking." +msgstr "메타데이터 잠금을 해제할 수 없습니다." + +#: src/veritysetup.c:41 +msgid "Invalid salt string specified." +msgstr "부적절한 솔트 문자열을 지정했습니다." + +#: src/veritysetup.c:74 +#, c-format +msgid "Cannot create hash image %s for writing." +msgstr "기록할 %s 해시 이미지를 만들 수 없습니다." + +#: src/veritysetup.c:84 +#, c-format +msgid "Cannot create FEC image %s for writing." +msgstr "기록할 %s FEC 이미지를 만들 수 없습니다." + +#: src/veritysetup.c:123 +#, c-format +msgid "Cannot create root hash file %s for writing." +msgstr "기록할 %s 루트 패시 파일을 만들 수 없습니다." + +#: src/veritysetup.c:130 +#, c-format +msgid "Cannot write to root hash file %s." +msgstr "%s 루트 해시 파일에 기록할 수 없습니다." + +#: src/veritysetup.c:189 src/veritysetup.c:472 +#, c-format +msgid "Device %s is not a valid VERITY device." +msgstr "%s 장치는 적절한 검증 장치가 아닙니다." + +#: src/veritysetup.c:206 src/veritysetup.c:223 +#, c-format +msgid "Cannot read root hash file %s." +msgstr "%s 루트 해시 파일을 읽을 수 없습니다." + +#: src/veritysetup.c:211 +#, c-format +msgid "Invalid root hash file %s." +msgstr "부적절한 %s 루트 해시 파일입니다." + +#: src/veritysetup.c:232 +msgid "Invalid root hash string specified." +msgstr "부적절한 루트 해시 문자열을 지정했습니다." + +#: src/veritysetup.c:240 +#, c-format +msgid "Invalid signature file %s." +msgstr "부적절한 %s 시그니처 파일입니다." + +#: src/veritysetup.c:247 +#, c-format +msgid "Cannot read signature file %s." +msgstr "%s 시그니처 파일을 읽을 수 없습니다." + +#: src/veritysetup.c:270 src/veritysetup.c:287 +msgid "Command requires or --root-hash-file option as argument." +msgstr "명령에 <루트_해시> 또는 --root-hash-file 옵션 인자 값이 필요합니다." + +#: src/veritysetup.c:485 +msgid " " +msgstr "<데이터_장치> <해시_장치>" + +#: src/veritysetup.c:485 src/integritysetup.c:553 +msgid "format device" +msgstr "장치를 포매팅합니다" + +#: src/veritysetup.c:486 +msgid " []" +msgstr "<데이터_장치> <해시_장치> [<루트_해시>]" + +#: src/veritysetup.c:486 +msgid "verify device" +msgstr "장치를 검증합니다" + +#: src/veritysetup.c:487 +msgid " []" +msgstr "<데이터_장치> <명칭> <해시_장치> [<루트_해시>]" + +#: src/veritysetup.c:489 src/integritysetup.c:556 +msgid "show active device status" +msgstr "장치 동작 상황을 보여줍니다" + +#: src/veritysetup.c:490 +msgid "" +msgstr "<해시_장치>" + +#: src/veritysetup.c:490 src/integritysetup.c:557 +msgid "show on-disk information" +msgstr "디스크 정보를 보여줍니다" + +#: src/veritysetup.c:509 +#, c-format +msgid "" +"\n" +" is the device to create under %s\n" +" is the data device\n" +" is the device containing verification data\n" +" hash of the root node on \n" +msgstr "" +"\n" +"<명칭>은 %s에 만든 장치\n" +"<데이터_장치>는 데이터 장치\n" +"<해시_장치>는 검증 데이터가 들어간 장치\n" +"<루트_해시>는 <해시_장치> 루트 노드의 해시입니다\n" + +#: src/veritysetup.c:516 +#, c-format +msgid "" +"\n" +"Default compiled-in dm-verity parameters:\n" +"\tHash: %s, Data block (bytes): %u, Hash block (bytes): %u, Salt size: %u, Hash format: %u\n" +msgstr "" +"\n" +"컴파일 과정에 넣은 기본 dm-verity 매개변수:\n" +"\t해시: %s, 데이터 블록 (바이트): %u, 해시 블록 (바이트): %u, 솔트 길이: %u, 해시 형식: %u\n" + +#: src/veritysetup.c:657 +msgid "Option --ignore-corruption and --restart-on-corruption cannot be used together." +msgstr "--ignore-corruption 옵션과 --restart-on-corruption 옵션은 혼용할 수 없습니다." + +#: src/veritysetup.c:662 +msgid "Option --panic-on-corruption and --restart-on-corruption cannot be used together." +msgstr "--panic-on-corruption 옵션과 --restart-on-corruption 옵션을 혼용할 수 없습니다." + +#: src/veritysetup.c:668 +msgid "Option --error-as-corruption must be used with --panic-on-corruption or --restart-on-corruption." +msgstr "--error-as-corruption 옵션은 --panic-on-corruption 옵션 또는 --restart-on-corruption 옵션을 함께 사용해야 합니다." + +#: src/integritysetup.c:168 +#, c-format +msgid "" +"This will overwrite data on %s and %s irrevocably.\n" +"To preserve data device use --no-wipe option (and then activate with --integrity-recalculate)." +msgstr "" +"%s와 %s의 데이터를 덮어쓰며 돌이킬 수 없습니다.\n" +"데이터 장치를 보존하려면 --no-wipe 옵션을 사용하십시오 (그리고 --integrity-recalculate 옵션으로 장치 동작 시작)." + +#: src/integritysetup.c:213 +#, c-format +msgid "Formatted with tag size %u%s, internal integrity %s.\n" +msgstr "%u%s 태그 크기와 내부 무결성 %s(으)로 포매팅했습니다.\n" + +#: src/integritysetup.c:214 +msgid " (inline hw tags)" +msgstr " (인라인 hw 태그)" + +#: src/integritysetup.c:303 +msgid "Setting recalculate flag is not supported, you may consider using --wipe instead." +msgstr "재계산 플래그 설정은 지원하지 않습니다. --wipe 옵션 사용을 대신 고려하십시오." + +#: src/integritysetup.c:380 src/integritysetup.c:540 +#, c-format +msgid "Device %s is not a valid INTEGRITY device." +msgstr "%s 장치는 적절한 \"무결성\" 장치가 아닙니다." + +#: src/integritysetup.c:553 src/integritysetup.c:557 +msgid "" +msgstr "<무결성_장치>" + +#: src/integritysetup.c:554 +msgid " " +msgstr "<무결성_장치> <명칭>" + +#: src/integritysetup.c:577 +#, c-format +msgid "" +"\n" +" is the device to create under %s\n" +" is the device containing data with integrity tags\n" +msgstr "" +"\n" +"<명칭> 은 %s에 만들 장치\n" +"<무결성_장치>는 무결성 태그와 데이터가 들어간 장치입니다\n" + +#: src/integritysetup.c:582 +#, c-format +msgid "" +"\n" +"Default compiled-in dm-integrity parameters:\n" +"\tChecksum algorithm: %s\n" +"\tMaximum keyfile size: %dkB\n" +msgstr "" +"\n" +"컴파일 과정에 넣은 기본 dm-integrity 매개변수:\n" +"\t체크섬 알고리즘: %s\n" +"\t최대 키 파일 크기: %dkB\n" + +#: src/integritysetup.c:639 +#, c-format +msgid "Invalid --%s size. Maximum is %u bytes." +msgstr "부적절한 --%s 크기 값입니다. 최대값은 %u 바이트입니다." + +#: src/integritysetup.c:742 +msgid "Both key file and key size options must be specified." +msgstr "키 파일과 키 크기 옵션을 함께 지정해야 합니다." + +#: src/integritysetup.c:746 +msgid "Both journal integrity key file and key size options must be specified." +msgstr "저널 무결성 키와 키 크키 옵션을 함께 지정해야 합니다." + +#: src/integritysetup.c:749 +msgid "Journal integrity algorithm must be specified if journal integrity key is used." +msgstr "저널 무결성 키를 사용한다면 저널 무결성 알고리즘은 지정해야 합니다." + +#: src/integritysetup.c:753 +msgid "Both journal encryption key file and key size options must be specified." +msgstr "저널 암호화 키 파일과 키 크기 옵션을 함께 지정해야 합니다." + +#: src/integritysetup.c:756 +msgid "Journal encryption algorithm must be specified if journal encryption key is used." +msgstr "저널 암호화 키를 사용할 경우 저널 암호화 알고리즘을 지정해야 합니다." + +#: src/integritysetup.c:760 +msgid "Recovery and bitmap mode options are mutually exclusive." +msgstr "복구 및 비트맵 모드 옵션은 혼용할 수 없습니다." + +#: src/integritysetup.c:767 +msgid "Journal options cannot be used in bitmap mode." +msgstr "저널 옵션은 비트맵 모드에서 사용할 수 없습니다." + +#: src/integritysetup.c:772 +msgid "Bitmap options can be used only in bitmap mode." +msgstr "비트맵 옵션은 비트맵 모드에서만 사용할 수 있습니다." + +#: src/integritysetup.c:778 +msgid "Inline mode cannot be combined with journal or bitmap options." +msgstr "인라인 모드는 저널 옵션 또는 비트맵 옵션과 혼용할 수 없습니다." + +#: src/integritysetup.c:782 +msgid "Inline mode cannot be combined with separate data device." +msgstr "인라인 모드는 개별 데이터 장치와 혼용할 수 없습니다." + +#: src/utils_tools.c:105 +msgid "" +"\n" +"WARNING!\n" +"========\n" +msgstr "" +"\n" +"경고!\n" +"========\n" + +#. TRANSLATORS: User must type "YES" (in capital letters), do not translate this word. +#: src/utils_tools.c:107 +#, c-format +msgid "" +"%s\n" +"\n" +"Are you sure? (Type 'yes' in capital letters): " +msgstr "" +"%s\n" +"\n" +"정말로 진행하시겠습니까? (대문자로 'yes' 입력하십시오): " + +#: src/utils_tools.c:113 +msgid "Error reading response from terminal." +msgstr "터미널 응답을 읽는 중 오류가 있습니다." + +#: src/utils_tools.c:145 +msgid "Command successful." +msgstr "명령 실행에 성공했습니다." + +#: src/utils_tools.c:153 +msgid "wrong or missing parameters" +msgstr "잘못된 또는 빠진 매개변수" + +#: src/utils_tools.c:155 +msgid "no permission or bad passphrase" +msgstr "권한이 없거나 잘못된 암호 입력" + +#: src/utils_tools.c:157 +msgid "out of memory" +msgstr "메모리 부족" + +#: src/utils_tools.c:159 +msgid "wrong device or file specified" +msgstr "잘못된 장치 또는 파일을 지정했습니다" + +#: src/utils_tools.c:161 +msgid "device already exists or device is busy" +msgstr "장치가 이미 있거나 사용하고 있습니다." + +#: src/utils_tools.c:163 +msgid "unknown error" +msgstr "알 수 없는 오류" + +#: src/utils_tools.c:165 +#, c-format +msgid "Command failed with code %i (%s)." +msgstr "%i 결과로 명령 실행 실패 (%s)." + +#: src/utils_tools.c:243 +#, c-format +msgid "Key slot %i created." +msgstr "%i 키 슬롯을 만들었습니다." + +#: src/utils_tools.c:245 +#, c-format +msgid "Key slot %i unlocked." +msgstr "%i 키 슬롯 잠금을 해제했습니다." + +#: src/utils_tools.c:247 +#, c-format +msgid "Key slot %i removed." +msgstr "%i 키 슬롯을 제거했습니다." + +#: src/utils_tools.c:256 +#, c-format +msgid "Token %i created." +msgstr "%i 토큰을 만들었습니다." + +#: src/utils_tools.c:258 +#, c-format +msgid "Token %i removed." +msgstr "%i 토큰을 제거했습니다." + +#: src/utils_tools.c:268 +msgid "No token could be unlocked with this PIN." +msgstr "이 PIN으로 잠금을 해제할 수 있는 토큰이 없습니다." + +#: src/utils_tools.c:270 +#, c-format +msgid "Token %i requires PIN." +msgstr "%i 토큰에 PIN이 필요합니다." + +#: src/utils_tools.c:272 +#, c-format +msgid "Token (type %s) requires PIN." +msgstr "토큰(%s 형식)에 PIN이 필요합니다." + +#: src/utils_tools.c:275 +#, c-format +msgid "Token %i cannot unlock assigned keyslot(s) (wrong keyslot passphrase)." +msgstr "%i 토큰으로 할당 키 슬롯의 잠금을 해제할 수 없습니다(잘못된 키 슬롯 암호)." + +#: src/utils_tools.c:277 +#, c-format +msgid "Token (type %s) cannot unlock assigned keyslot(s) (wrong keyslot passphrase)." +msgstr "토큰(%s 형식)에 할당한 키 슬롯의 잠금을 해제할 수 없습니다(잘못된 키 슬롯 암호)." + +#: src/utils_tools.c:280 +#, c-format +msgid "Token %i requires additional missing resource." +msgstr "%i 토큰에 추가 누락 자원 정보가 필요합니다." + +#: src/utils_tools.c:282 +#, c-format +msgid "Token (type %s) requires additional missing resource." +msgstr "토큰(%s 형식)에 추가 누락 자원 정보가 필요합니다." + +#: src/utils_tools.c:285 +#, c-format +msgid "No usable token (type %s) is available." +msgstr "사용할 수 있는 토큰(%s 형식)이 없습니다." + +#: src/utils_tools.c:287 +msgid "No usable token is available." +msgstr "사용할 수 있는 토큰이 없습니다." + +#: src/utils_tools.c:380 +#, c-format +msgid "Cannot read keyfile %s." +msgstr "%s 키 파일을 읽을 수 없습니다." + +#: src/utils_tools.c:385 +#, c-format +msgid "Cannot read %d bytes from keyfile %s." +msgstr "%2$s 키 파일에서 %1$d 바이트를 읽을 수 없습니다." + +#: src/utils_tools.c:410 +#, c-format +msgid "Cannot open keyfile %s for write." +msgstr "쓰기 모드로 %s 키 파일을 열 수 없습니다." + +#: src/utils_tools.c:417 +#, c-format +msgid "Cannot write to keyfile %s." +msgstr "%s 키 파일에 기록할 수 없습니다." + +#: src/utils_tools.c:468 +msgid "Name is too long." +msgstr "이름이 너무 깁니다." + +#: src/utils_tools.c:471 +msgid "Name must not contain '/' character." +msgstr "이름에 '/' 문자가 들어가면 안됩니다." + +#: src/utils_progress.c:61 +#, c-format +msgid "%02m%02s" +msgstr "%02분 %02초" + +#: src/utils_progress.c:63 +#, c-format +msgid "%02h%02m%02s" +msgstr "%02시간 %02분 %02초" + +#: src/utils_progress.c:65 +#, c-format +msgid "%02 days" +msgstr "%02 일" + +#: src/utils_progress.c:92 src/utils_progress.c:125 +#, c-format +msgid "%4 %s written" +msgstr "%4 %s 기록" + +#: src/utils_progress.c:96 src/utils_progress.c:129 +#, c-format +msgid "speed %5.1f %s/s" +msgstr "처리 속도 %5.1f %s/s" + +#. TRANSLATORS: 'time', 'written' and 'speed' string are supposed +#. to get translated as well. 'eol' is always new-line or empty. +#. See above. +#. +#: src/utils_progress.c:105 +#, c-format +msgid "Progress: %5.1f%%, ETA %s, %s, %s%s" +msgstr "진행: %5.1f%%, 예상 완료 %s, %s, %s%s" + +#. TRANSLATORS: 'time', 'written' and 'speed' string are supposed +#. to get translated as well. See above +#. +#: src/utils_progress.c:137 +#, c-format +msgid "Finished, time %s, %s, %s\n" +msgstr "완료, 시간 %s, %s, %s\n" + +#: src/utils_password.c:28 src/utils_password.c:59 +#, c-format +msgid "Cannot check password quality: %s" +msgstr "암호 수준을 확인할 수 없음: %s" + +#: src/utils_password.c:36 +#, c-format +msgid "" +"Password quality check failed:\n" +" %s" +msgstr "" +"암호 수준 확인 실패:\n" +" %s" + +#: src/utils_password.c:66 +#, c-format +msgid "Password quality check failed: Bad passphrase (%s)" +msgstr "암호 수준 확인 실패: 잘못된 암호 (%s)" + +#: src/utils_password.c:197 +msgid "Read stopped at maximal interactive input length, passphrase can be trimmed." +msgstr "최대 전송 입력 길이 위치에서 읽기 멈춤. 암호 입력이 잘릴 수 있습니다." + +#: src/utils_password.c:224 src/utils_password.c:238 +msgid "Error reading passphrase from terminal." +msgstr "터미널 암호 입력을 읽는 중 오류가 있습니다." + +#: src/utils_password.c:236 +msgid "Verify passphrase: " +msgstr "암호 확인: " + +#: src/utils_password.c:243 +msgid "Passphrases do not match." +msgstr "암호가 일치하지 않습니다." + +#: src/utils_password.c:281 +msgid "Cannot use offset with terminal input." +msgstr "터미널 입력 오프셋을 사용할 수 없습니다." + +#: src/utils_password.c:285 +#, c-format +msgid "Enter passphrase: " +msgstr "암호 입력: " + +#: src/utils_password.c:288 +#, c-format +msgid "Enter passphrase for %s: " +msgstr "%s 암호 입력: " + +#: src/utils_password.c:322 +msgid "No key available with this passphrase." +msgstr "이 암호의 키가 없습니다." + +#: src/utils_password.c:324 +msgid "No usable keyslot is available." +msgstr "사용할 수 있는 키 슬롯이 없습니다." + +#: src/utils_luks.c:55 +msgid "Can't do passphrase verification on non-tty inputs." +msgstr "non-tty 입력에 대해 암호 입력을 검증할 수 없습니다." + +#: src/utils_luks.c:179 +#, c-format +msgid "Failed to open file %s in read-only mode." +msgstr "읽기 전용 모드 %s 파일 열기 실패." + +#: src/utils_luks.c:193 +msgid "Provide valid LUKS2 token JSON:\n" +msgstr "유효한 LUKS2 토큰 JSON을 제공하십시오:\n" + +#: src/utils_luks.c:200 +msgid "Failed to read JSON file." +msgstr "JSON 파일 읽기 실패." + +#: src/utils_luks.c:205 +msgid "" +"\n" +"Read interrupted." +msgstr "" +"\n" +"읽기 동작을 중단했습니다." + +#: src/utils_luks.c:246 +#, c-format +msgid "Failed to open file %s in write mode." +msgstr "%s 파일의 쓰기 모드 열기 실패." + +#: src/utils_luks.c:255 +msgid "" +"\n" +"Write interrupted." +msgstr "" +"\n" +"기록 동작을 중단했습니다." + +#: src/utils_luks.c:259 +msgid "Failed to write JSON file." +msgstr "JSON 파일 기록 실패." + +#: src/utils_reencrypt.c:93 +#, c-format +msgid "Auto-detected active dm device '%s' for data device %s.\n" +msgstr "%2$s 데이터 장치용으로 자동 확인한 동작 중인 '%1$s' dm 장치입니다.\n" + +#: src/utils_reencrypt.c:97 +#, c-format +msgid "Failed to auto-detect device %s holders." +msgstr "%s 장치 홀더 자동 확인 실패." + +#: src/utils_reencrypt.c:103 +#, c-format +msgid "Device %s is not a block device.\n" +msgstr "%s 장치는 블록 장치가 아닙니다.\n" + +#: src/utils_reencrypt.c:105 +#, c-format +msgid "" +"Unable to decide if device %s is activated or not.\n" +"Are you sure you want to proceed with reencryption in offline mode?\n" +"It may lead to data corruption if the device is actually activated.\n" +"To run reencryption in online mode, use --active-name parameter instead.\n" +msgstr "" +"%s 장치가 동작 중인지 여부를 확인할 수 없습니다.\n" +"정말로 오프라인 모드에서 재암호화를 진행하시겠습니까?\n" +"장치가 실제로 동작 중이면 데이터가 깨질 수 있습니다.\n" +"온라인 모드에서 재암호화를 진행하려면, 대신 --active-name 매개변수를 사용하십시오.\n" + +#: src/utils_reencrypt.c:114 src/utils_reencrypt.c:247 +#, c-format +msgid "" +"Device %s is not a block device. Can not auto-detect if it is active or not.\n" +"Use --force-offline-reencrypt to bypass the check and run in offline mode (dangerous!)." +msgstr "" +"%s 장치는 블록 장치가 아닙니다. 동작 중인지 여부를 자동으로 확인할 수 없습니다.\n" +"검사를 건너뛰고 오프라인 모드에서 실행하려면 --force-offline-reencrypt 옵션을 활용하십시오(위험함!)." + +#: src/utils_reencrypt.c:151 src/utils_reencrypt.c:194 +#: src/utils_reencrypt.c:204 +msgid "Requested --resilience option cannot be applied to current reencryption operation." +msgstr "요청한 --resilience 옵션을 현재 재암호화 동작에 적용할 수 없습니다." + +#: src/utils_reencrypt.c:176 +msgid "Device is not in LUKS2 encryption. Conflicting option --encrypt." +msgstr "LUKS2 암호화 장치가 아닙니다. --encrypt 옵션의 사용이 맞지 않습니다." + +#: src/utils_reencrypt.c:181 +msgid "Device is not in LUKS2 decryption. Conflicting option --decrypt." +msgstr "LUKS2 암호화 장치가 아닙니다. --decrypt 옵션의 사용이 맞지 않습니다." + +#: src/utils_reencrypt.c:188 +msgid "Device is in reencryption using datashift resilience. Requested --resilience option cannot be applied." +msgstr "데이터 쉬프트 복원 기능을 활용하여 장치를 재암호화중입니다. 요청한 --resilience 옵션을 적용할 수 없습니다." + +#: src/utils_reencrypt.c:282 src/utils_reencrypt.c:1924 +msgid "Cannot determine volume key size for LUKS without keyslots, please use --new-key-size option." +msgstr "키 슬롯을 제외하고 LUKS 볼륨 키 크기를 확인할 수 없습니다. --new-key-size 옵션을 활용하십시오." + +#: src/utils_reencrypt.c:436 +msgid "Device requires reencryption recovery. Run repair first." +msgstr "장치 재암호화 복원이 필요합니다. 우선 복원을 실행하십시오." + +#: src/utils_reencrypt.c:450 +#, c-format +msgid "Device %s is already in LUKS2 reencryption. Do you wish to resume previously initialised operation?" +msgstr "%s 장치가 이미 LUKS2 재암호화 상태입니다. 앞서 초기화한 동작을 재개하시겠습니까?" + +#: src/utils_reencrypt.c:561 +msgid "Legacy LUKS2 reencryption is no longer supported." +msgstr "기존의 LUKS2 재암호화 기능은 더 이상 지원하지 않습니다." + +#: src/utils_reencrypt.c:566 +msgid "Can not reencrypt LUKS2 device configured to use OPAL." +msgstr "OPAL을 사용하도록 설정한 LUKS2 장치를 재암호화할 수 없습니다." + +#: src/utils_reencrypt.c:572 +msgid "Reencryption of device with integrity profile is not supported." +msgstr "무결성 프로파일을 동반한 장치 재암호화는 지원하지 않습니다." + +#: src/utils_reencrypt.c:609 +#, c-format +msgid "" +"Requested --sector-size % is incompatible with %s superblock\n" +"(block size: % bytes) detected on device %s." +msgstr "" +"요청한 --sector-size %1$ 옵션은 %4$s 장치에서 찾은\n" +"%2$s 수퍼블록(블록 크기: %3$바이트)과의 호환성이 없습니다." + +#: src/utils_reencrypt.c:678 src/utils_reencrypt.c:2204 +msgid "Encryption without detached header (--header) is not possible without data device size reduction (--reduce-device-size)." +msgstr "분리 헤더(--header)를 제외한 암호화는 데이터 장치 용량을 줄이지 않고는(--reduce-device-size) 불가능합니다." + +#: src/utils_reencrypt.c:687 +msgid "Requested data offset must be less than or equal to half of --reduce-device-size parameter." +msgstr "요청한 데이터 오프셋은 --reduce-device-size 매개변수 값의 절반보다 작거나 같아야 합니다." + +#: src/utils_reencrypt.c:697 +#, c-format +msgid "Adjusting --reduce-device-size value to twice the --offset % (sectors).\n" +msgstr "--reduce-device-size 값을 --offset % (섹터)로 두번 조정합니다.\n" + +#: src/utils_reencrypt.c:727 +#, c-format +msgid "Temporary header file %s already exists. Aborting." +msgstr "%s 임시 헤더 파일이 이미 있습니다. 멈춤." + +#: src/utils_reencrypt.c:729 src/utils_reencrypt.c:736 +#, c-format +msgid "Cannot create temporary header file %s." +msgstr "%s 임시 헤더 파일을 만들 수 없습니다." + +#: src/utils_reencrypt.c:761 +msgid "LUKS2 metadata size is larger than data shift value." +msgstr "LUKS2 메타데이터 크기가 데이터 쉬프트 값보다 큽니다." + +#: src/utils_reencrypt.c:800 +#, c-format +msgid "Failed to place new header at head of device %s." +msgstr "장치 %s의 헤드에 새 헤더 설정 실패." + +#: src/utils_reencrypt.c:813 +#, c-format +msgid "%s/%s is now active and ready for online encryption.\n" +msgstr "%s/%s은(는) 이제부터 동작하며 온라인 암호화 대기중입니다.\n" + +#: src/utils_reencrypt.c:850 +#, c-format +msgid "Active device %s is not LUKS2." +msgstr "%s 동작 장치는 LUKS2 버전이 아닙니다." + +#: src/utils_reencrypt.c:878 +msgid "Restoring original LUKS2 header." +msgstr "원본 LUKS2 헤더를 복원합니다." + +#: src/utils_reencrypt.c:886 +msgid "Original LUKS2 header restore failed." +msgstr "원본 LUKS2 헤더 복원 실패." + +#: src/utils_reencrypt.c:918 +#, c-format +msgid "Header file %s does not exist. Do you want to initialize LUKS2 decryption of device %s and export LUKS2 header to file %s?" +msgstr "%s 헤더 파일이 없습니다. %s 장치의 LUKS2 해독 과정을 초기화하고 %s 파일로 LUKS2 헤더를 내보낼까요?" + +#: src/utils_reencrypt.c:961 +msgid "Failed to add read/write permissions to exported header file." +msgstr "내보낸 헤더 파일의 읽기/쓰기 권한 추가 실패." + +#: src/utils_reencrypt.c:1015 +#, c-format +msgid "Reencryption initialization failed. Header backup is available in %s." +msgstr "재엄호화 초기화 실패. 헤더 백업은 %s에 있습니다." + +#: src/utils_reencrypt.c:1043 +msgid "LUKS2 decryption is supported with detached header device only (with data offset set to 0)." +msgstr "분리한 헤더 장치에서만 LUKS2 해독을 지원합니다 (데이터 오프셋 0값으로)." + +#: src/utils_reencrypt.c:1487 +msgid "No token could unlock the device." +msgstr "장치 잠금을 해제할 수 있는 토큰이 없습니다." + +#: src/utils_reencrypt.c:1519 src/utils_reencrypt.c:1528 +msgid "Not enough free keyslots for reencryption." +msgstr "재암호화에 활용할 여분의 키 슬롯이 부족합니다." + +#: src/utils_reencrypt.c:1559 +msgid "Key file or keyring key description can be used only with --key-slot or with exactly one key slot active." +msgstr "키 파일 또는 키 모음의 키 설명은 --key-slot 옵션의 값으로 또는 정확히 하나의 동작하는 키 슬롯과 사용할 수 있습니다." + +#: src/utils_reencrypt.c:1566 src/utils_reencrypt.c:1579 +#: src/utils_reencrypt_luks1.c:1092 src/utils_reencrypt_luks1.c:1103 +#, c-format +msgid "Enter passphrase for key slot %d: " +msgstr "키 슬롯 %d번의 암호 입력: " + +#: src/utils_reencrypt.c:1876 +#, c-format +msgid "Switching data encryption cipher to %s.\n" +msgstr "데이터 암호화 암호 알고리즘을 %s(으)로 전환합니다.\n" + +#: src/utils_reencrypt.c:1977 src/utils_reencrypt.c:1998 +msgid "Use --force-no-keyslots to reencrypt device with active keyslots by passing volume keys directly." +msgstr "볼륨 키를 직접 전달하여 동작하고 있는 키 슬롯으로 장치를 재암호화하려면 --force-no-keyslots 옵션을 사용하십시오." + +#: src/utils_reencrypt.c:1993 +msgid "Option --new-volume-key-file must be paired with --new-key-size" +msgstr "--new-volume-key-file 옵션은 --new-key-size 옵션과 함께 사용해야 합니다." + +#: src/utils_reencrypt.c:2035 +msgid "No data segment parameters changed. Reencryption aborted." +msgstr "바뀐 데이터 세그먼트 매개변수가 없습니다. 재암호화를 멈추었습니다." + +#: src/utils_reencrypt.c:2072 +msgid "" +"Encryption sector size increase on offline device is not supported.\n" +"Activate the device first or use --force-offline-reencrypt option (dangerous!)." +msgstr "" +"오프라인 장치에서의 암호화 섹터 크기 증가는 지원하지 않습니다.\n" +"우선 장치를 동작하게 만들거나 --force-offline-reencrypt 옵션(위험!)을 사용하십시오." + +#: src/utils_reencrypt.c:2114 src/utils_reencrypt_luks1.c:688 +#: src/utils_reencrypt_luks1.c:759 +msgid "" +"\n" +"Reencryption interrupted." +msgstr "" +"\n" +"재암호화를 중단했습니다." + +#: src/utils_reencrypt.c:2119 +msgid "Resuming LUKS reencryption in forced offline mode.\n" +msgstr "강제 오프라인 모드에서 LUKS 재암호화 동작을 재개합니다.\n" + +#: src/utils_reencrypt.c:2142 +#, c-format +msgid "Device %s contains broken LUKS metadata. Aborting operation." +msgstr "%s 장치에 망가진 LUKS 메타데이터가 있습니다. 동작을 멈춥니다." + +#: src/utils_reencrypt.c:2158 src/utils_reencrypt.c:2180 +#, c-format +msgid "Device %s is already LUKS device. Aborting operation." +msgstr "%s 장치에 이미 LUKS 장치가 있습니다. 동작을 멈춥니다." + +#: src/utils_reencrypt.c:2186 +#, c-format +msgid "Device %s is already in LUKS reencryption. Aborting operation." +msgstr "%s 장치가 이미 LUKS 재암호화 상태입니다. 동작을 멈춥니다." + +#: src/utils_reencrypt.c:2269 +msgid "LUKS2 decryption requires --header option." +msgstr "LUKS2 암호화 해제에 --header 옵션이 필요합니다." + +#: src/utils_reencrypt.c:2317 +msgid "Command requires device as argument." +msgstr "명쳥에 장치를 인자로 지정해야합니다." + +#: src/utils_reencrypt.c:2330 +#, c-format +msgid "Conflicting versions. Device %s is LUKS1." +msgstr "버전이 맞지 않습니다. %s 장치는 LUKS1입니다." + +#: src/utils_reencrypt.c:2336 +#, c-format +msgid "Conflicting versions. Device %s is in LUKS1 reencryption." +msgstr "버전이 맞지 않습니다. %s 장치는 LUKS1 재암호화 상태입니다." + +#: src/utils_reencrypt.c:2342 +#, c-format +msgid "Conflicting versions. Device %s is LUKS2." +msgstr "버전이 맞지 않습니다. %s 장치는 LUKS2입니다." + +#: src/utils_reencrypt.c:2348 +#, c-format +msgid "Conflicting versions. Device %s is in LUKS2 reencryption." +msgstr "버전이 맞지 않습니다. %s 장치는 LUKS2 재암호화 상태입니다." + +#: src/utils_reencrypt.c:2354 +msgid "LUKS2 reencryption already initialized. Aborting operation." +msgstr "LUKS2 재암호화를 이미 초기화했습니다. 동작을 멈줍니다." + +#: src/utils_reencrypt.c:2361 +msgid "Device reencryption not in progress." +msgstr "장치 재암호화를 진행하고 있지 않습니다." + +#: src/utils_reencrypt_luks1.c:116 src/utils_blockdev.c:285 +#, c-format +msgid "Cannot exclusively open %s, device in use." +msgstr "이미 사용중인 %s 장치를 별개로 열 수 없습니다." + +#: src/utils_reencrypt_luks1.c:130 src/utils_reencrypt_luks1.c:883 +msgid "Allocation of aligned memory failed." +msgstr "정렬 메모리 할당 실패." + +#: src/utils_reencrypt_luks1.c:137 +#, c-format +msgid "Cannot read device %s." +msgstr "%s 장치를 읽을 수 없습니다." + +#: src/utils_reencrypt_luks1.c:148 +#, c-format +msgid "Marking LUKS1 device %s unusable." +msgstr "%s LUKS1 장치를 사용할 수 없도록 표시합니다." + +#: src/utils_reencrypt_luks1.c:164 +#, c-format +msgid "Cannot write device %s." +msgstr "%s 장치에 기록할 수 없습니다." + +#: src/utils_reencrypt_luks1.c:213 +msgid "Cannot write reencryption log file." +msgstr "재암호화 로그 파일을 기록할 수 없습니다." + +#: src/utils_reencrypt_luks1.c:268 +msgid "Cannot read reencryption log file." +msgstr "재암호화 로그 파일을 읽을 수 없습니다." + +#: src/utils_reencrypt_luks1.c:279 +msgid "Wrong log format." +msgstr "잘못된 로그 형식입니다." + +#: src/utils_reencrypt_luks1.c:307 +#, c-format +msgid "Log file %s exists, resuming reencryption.\n" +msgstr "%s 로그 파일이 있습니다. 재암호화를 재개합니다.\n" + +#: src/utils_reencrypt_luks1.c:354 +msgid "Activating temporary device using old LUKS header." +msgstr "이전 LUKS 헤더를 활용하여 임시 장치 동작을 시작합니다." + +#: src/utils_reencrypt_luks1.c:364 +msgid "Activating temporary device using new LUKS header." +msgstr "새 LUKS 헤더를 활용하여 임시 장치 동작을 시작합니다." + +#: src/utils_reencrypt_luks1.c:374 +msgid "Activation of temporary devices failed." +msgstr "임시 장치 동작 시작 실패." + +#: src/utils_reencrypt_luks1.c:434 +msgid "Failed to set data offset." +msgstr "데이터 오프셋 설정 실패" + +#: src/utils_reencrypt_luks1.c:440 +msgid "Failed to set metadata size." +msgstr "메타데이터 크기 설정 실패." + +#: src/utils_reencrypt_luks1.c:448 +#, c-format +msgid "New LUKS header for device %s created." +msgstr "%s 장치의 새 LUKS 헤더를 만들었습니다." + +#: src/utils_reencrypt_luks1.c:485 +#, c-format +msgid "%s header backup of device %s created." +msgstr "%2$s 장치의 %1$s 헤더 백업을 만들었습니다." + +#: src/utils_reencrypt_luks1.c:541 +msgid "Creation of LUKS backup headers failed." +msgstr "LUKS 백업 헤더 생성 실패." + +#: src/utils_reencrypt_luks1.c:670 +#, c-format +msgid "Cannot restore %s header on device %s." +msgstr "%2$s 장치의 %1$s 헤더를 복원할 수 없습니다." + +#: src/utils_reencrypt_luks1.c:672 +#, c-format +msgid "%s header on device %s restored." +msgstr "%2$s 장치의 %1$s 헤더를 복원했습니다." + +#: src/utils_reencrypt_luks1.c:855 src/utils_reencrypt_luks1.c:861 +msgid "Cannot open temporary LUKS device." +msgstr "임시 LUKS 장치를 열 수 없습니다." + +#: src/utils_reencrypt_luks1.c:866 src/utils_reencrypt_luks1.c:871 +msgid "Cannot get device size." +msgstr "장치 크기를 가져올 수 없습니다." + +#: src/utils_reencrypt_luks1.c:913 +msgid "IO error during reencryption." +msgstr "재암호화 중 입출력 오류." + +#: src/utils_reencrypt_luks1.c:943 +msgid "Provided UUID is invalid." +msgstr "제시한 UUID 값이 부적절합니다." + +#: src/utils_reencrypt_luks1.c:1045 +msgid "Key file can be used only with --key-slot or with exactly one key slot active." +msgstr "키 파일은 --key-slot 옵션으로 또는 정확히 하나의 키 슬롯이 동작할 때만 사용할 수 있습니다." + +#: src/utils_reencrypt_luks1.c:1169 +msgid "Cannot open reencryption log file." +msgstr "재암호화 로그 파일을 열 수 없습니다." + +#: src/utils_reencrypt_luks1.c:1175 +msgid "No decryption in progress, provided UUID can be used only to resume suspended decryption process." +msgstr "해독을 진행하고 있지 않습니다. 지정한 UUID는 대기 중인 복호화 처리 과정을 재개할 때만 사용할 수 있습니다." + +#: src/utils_reencrypt_luks1.c:1231 +#, c-format +msgid "Reencryption will change: %s%s%s%s%s%s." +msgstr "재암호화로 바뀝니다: %s%s%s%s%s%s." + +#: src/utils_reencrypt_luks1.c:1232 +msgid "volume key" +msgstr "볼륨 키" + +#: src/utils_reencrypt_luks1.c:1234 +msgid "set hash to " +msgstr "다음으로 해시 설정: " + +#: src/utils_reencrypt_luks1.c:1235 +msgid ", set cipher to " +msgstr ", 다음 방식으로 암호화: " + +#: src/utils_blockdev.c:179 +#, c-format +msgid "WARNING: Device %s already contains a '%s' partition signature.\n" +msgstr "경고: %s 장치에 이미 '%s' 분할 영역 시그니처가 들어있습니다.\n" + +#: src/utils_blockdev.c:187 +#, c-format +msgid "WARNING: Device %s already contains a '%s' superblock signature.\n" +msgstr "경고: %s 장치에 이미 '%s' 수퍼블록 시그니처가 들어있습니다.\n" + +#: src/utils_blockdev.c:209 src/utils_blockdev.c:292 src/utils_blockdev.c:344 +msgid "Failed to initialize device signature probes." +msgstr "장치 시그니처 확인 과정 초기화 실패." + +#: src/utils_blockdev.c:272 +#, c-format +msgid "Failed to stat device %s." +msgstr "%s 장치 상태 확인 실패." + +#: src/utils_blockdev.c:287 +#, c-format +msgid "Failed to open file %s in read/write mode." +msgstr "읽기/쓰기 모드로 %s 파일 열기 실패." + +#: src/utils_blockdev.c:307 +#, c-format +msgid "Existing '%s' partition signature on device %s will be wiped." +msgstr "%2$s 장치의 기존 '%1$s' 분할 영역 시그니처를 소거합니다." + +#: src/utils_blockdev.c:310 +#, c-format +msgid "Existing '%s' superblock signature on device %s will be wiped." +msgstr "%2$s 장치의 기존 '%1$s' 수퍼블록 시그니처를 소거합니다." + +#: src/utils_blockdev.c:313 +msgid "Failed to wipe device signature." +msgstr "장치 시그니처 소거 실패." + +#: src/utils_blockdev.c:320 +#, c-format +msgid "Failed to probe device %s for a signature." +msgstr "%s 장치 시그니처 확인 실패." + +#: src/utils_args.c:52 +#, c-format +msgid "Invalid size specification in parameter --%s." +msgstr "--%s 매개변수의 크기 명세가 부적절합니다." + +#: src/utils_args.c:112 +#, c-format +msgid "Option --%s is not allowed with %s action." +msgstr "--%s 옵션은 %s 동작을 함께 취할 수 없습니다." + +#: src/utils_key_description.c:66 +msgid "Type specification in --link-vk-to-keyring keyring specification is ignored." +msgstr "--link-vk-to-keyring 키 모음 명세의 형식 명세를 무시합니다." + +#: src/utils_key_description.c:131 +msgid "Key types have to be the same for both volume keys." +msgstr "키 형식은 두 볼륨 키와 같아야 합니다." + +#: src/utils_key_description.c:136 +msgid "Both volume keys have to be linked to the same keyring." +msgstr "두 볼륨 키는 동일한 키 모음에 연결해야 합니다." + +#: src/utils_key_description.c:146 +msgid "You need to supply more key names." +msgstr "더 많은 키 이름을 지정해야 합니다." + +#: src/utils_key_description.c:150 +msgid "Invalid --link-vk-to-keyring value." +msgstr "--link-vk-to-keyring 값이 적절하지 않습니다." + +#: src/utils_keyslot_check.c:114 +#, c-format +msgid "Keyslot %d binary data could be corrupted.\n" +msgstr "%d번 키 슬롯의 바이너리 데이터가 깨졌을 수도 있습니다.\n" + +#: src/utils_keyslot_check.c:124 +#, c-format +msgid " Suspected offset: 0x%\n" +msgstr " 이상한 오프셋: 0x%\n" + +#: src/utils_keyslot_check.c:127 +msgid " Subsequent suspected offsets are suppressed.\n" +msgstr " 뒤따라오는 이상한 오프셋 값을 무시합니다.\n" + +#: src/utils_keyslot_check.c:178 src/utils_keyslot_check.c:183 +#, c-format +msgid "Keyslot %d cannot be read from the device." +msgstr "%d번 키 슬롯을 이 장치에서 읽을 수 없습니다." + +#: src/utils_keyslot_check.c:194 +#, c-format +msgid "You can use hexdump -v -C -n 128 -s \"%s\" to inspect the data.\n" +msgstr "hexdump -v -C -n 128 -s \"%s\" 명령을 사용하여 데이터를 검사할 수 있습니다.\n" + +#: tokens/ssh/cryptsetup-ssh.c:110 +msgid "Failed to write ssh token json." +msgstr "ssh 토큰 json 기록 실패." + +#: tokens/ssh/cryptsetup-ssh.c:128 +msgid "" +"Experimental cryptsetup plugin for unlocking LUKS2 devices with token connected to an SSH server\vThis plugin currently allows only adding a token to an existing key slot.\n" +"\n" +"Specified SSH server must contain a key file on the specified path with a passphrase for an existing key slot on the device.\n" +"Provided credentials will be used by cryptsetup to get the password when opening the device using the token.\n" +"\n" +"Note: The information provided when adding the token (SSH server address, user and paths) will be stored in the LUKS2 header in plaintext." +msgstr "" +"SSH 서버에 연결한 토큰으로 LUKS2 장치의 잠금을 해제하는 cryptsetup 플러그인 시험버전입니다\v이 플러그인은 현재 기존 키 슬롯으로의 토큰 추가만 허용합니다.\n" +"\n" +"지정 SSH 서버에는 지정 경로에 장치에 있는 키 슬롯용 암호가 들어간 키 파일이 있어야 합니다.\n" +"제시한 암호는 cryptsetup에서 토큰을 사용하여 장치를 열 때 암호를 가져오는 용도로 사용합니다.\n" +"\n" +"참고: 토큰을 추가할 때 지정한 정보 (SSH 서버 주소, 사용자이름, 경로)는 LUKS2 헤더에 평문 형태로 저장합니다." + +#: tokens/ssh/cryptsetup-ssh.c:138 +msgid " " +msgstr "<동작> <장치>" + +#: tokens/ssh/cryptsetup-ssh.c:141 +msgid "Options for the 'add' action:" +msgstr "'추가' 동작 옵션:" + +#: tokens/ssh/cryptsetup-ssh.c:142 +msgid "IP address/URL of the remote server for this token" +msgstr "이 토큰의 원격 서버 IP 주소/URL" + +#: tokens/ssh/cryptsetup-ssh.c:143 +msgid "Username used for the remote server" +msgstr "원격 서버에서 사용할 사용자 이름" + +#: tokens/ssh/cryptsetup-ssh.c:144 +msgid "Path to the key file on the remote server" +msgstr "원격 서버의 키 파일 경로" + +#: tokens/ssh/cryptsetup-ssh.c:145 +msgid "Path to the SSH key for connecting to the remote server" +msgstr "원격 서버에 연결할 SSH 키 경로" + +#: tokens/ssh/cryptsetup-ssh.c:147 +msgid "Path to directory containinig libcryptsetup external tokens" +msgstr "libcryptsetup 외부 토큰이 들어있는 디렉터리 경로" + +#: tokens/ssh/cryptsetup-ssh.c:148 +msgid "Keyslot to assign the token to. If not specified, token will be assigned to the first keyslot matching provided passphrase." +msgstr "토큰을 할당할 키 슬롯입니다. 지정하지 않으면, 지정한 암호와 일치하는 처음 키 슬롯에 토큰을 배정합니다." + +#: tokens/ssh/cryptsetup-ssh.c:150 +msgid "Generic options:" +msgstr "일반 옵션:" + +#: tokens/ssh/cryptsetup-ssh.c:151 +msgid "Shows more detailed error messages" +msgstr "더 자세한 오류 메시지 표시" + +#: tokens/ssh/cryptsetup-ssh.c:152 +msgid "Show debug messages" +msgstr "디버깅 메시지 표시" + +#: tokens/ssh/cryptsetup-ssh.c:153 +msgid "Show debug messages including JSON metadata" +msgstr "JSON 메타데이터를 곁들여 디버깅 메시지 표시" + +#: tokens/ssh/cryptsetup-ssh.c:268 +msgid "Failed to open and import private key:\n" +msgstr "개인키 가져오기 및 열기 실패:\n" + +#: tokens/ssh/cryptsetup-ssh.c:272 +msgid "Failed to import private key (password protected?).\n" +msgstr "개인 키 가져오기 실패 (암호로 보호했습니까?).\n" + +#. TRANSLATORS: SSH credentials prompt, e.g. "user@server's password: " +#: tokens/ssh/cryptsetup-ssh.c:274 +#, c-format +msgid "%s@%s's password: " +msgstr "%s@%s 암호: " + +#: tokens/ssh/cryptsetup-ssh.c:363 +#, c-format +msgid "Failed to parse arguments.\n" +msgstr "인자 해석 실패.\n" + +#: tokens/ssh/cryptsetup-ssh.c:374 +#, c-format +msgid "An action must be specified\n" +msgstr "동작을 지정해야 합니다\n" + +#: tokens/ssh/cryptsetup-ssh.c:380 +#, c-format +msgid "Device must be specified for '%s' action.\n" +msgstr "'%s' 동작에 장치를 지정해야 합니다.\n" + +#: tokens/ssh/cryptsetup-ssh.c:385 +#, c-format +msgid "SSH server must be specified for '%s' action.\n" +msgstr "'%s' 동작에 SSH 서버를 지정해야 합니다.\n" + +#: tokens/ssh/cryptsetup-ssh.c:390 +#, c-format +msgid "SSH user must be specified for '%s' action.\n" +msgstr "'%s' 동작에 SSH 사용자를 지정해야 합니다.\n" + +#: tokens/ssh/cryptsetup-ssh.c:395 +#, c-format +msgid "SSH path must be specified for '%s' action.\n" +msgstr "'%s' 동작에 SSH 경로를 지정해야 합니다.\n" + +#: tokens/ssh/cryptsetup-ssh.c:400 +#, c-format +msgid "SSH key path must be specified for '%s' action.\n" +msgstr "'%s' 동작에 SSH 키 경로를 지정해야 합니다.\n" + +#: tokens/ssh/cryptsetup-ssh.c:407 +#, c-format +msgid "Failed open %s using provided credentials.\n" +msgstr "지정 인증 정보로 %s 열기 실패.\n" + +#: tokens/ssh/cryptsetup-ssh.c:424 +#, c-format +msgid "Only 'add' action is currently supported by this plugin.\n" +msgstr "이 플러그인에서는 현재 'add' 동작만 지원합니다.\n" + +#: tokens/ssh/ssh-utils.c:33 +msgid "Cannot create sftp session: " +msgstr "sftp 세션을 만들 수 없음: " + +#: tokens/ssh/ssh-utils.c:40 +msgid "Cannot init sftp session: " +msgstr "sftp 세션을 초기화할 수 없음: " + +#: tokens/ssh/ssh-utils.c:46 +msgid "Cannot open sftp session: " +msgstr "sftp 세션을 열 수 없음: " + +#: tokens/ssh/ssh-utils.c:53 +msgid "Cannot stat sftp file: " +msgstr "sftp 파일 상태를 볼 수 없음: " + +#: tokens/ssh/ssh-utils.c:61 +msgid "Not enough memory.\n" +msgstr "메모리가 부족합니다.\n" + +#: tokens/ssh/ssh-utils.c:68 +msgid "Cannot read remote key: " +msgstr "원격 키를 읽을 수 없음: " + +#: tokens/ssh/ssh-utils.c:109 +msgid "Connection failed: " +msgstr "연결 실패: " + +#: tokens/ssh/ssh-utils.c:119 +msgid "Server not known: " +msgstr "알 수 없는 서버: " + +#: tokens/ssh/ssh-utils.c:147 +msgid "Public key auth method not allowed on host.\n" +msgstr "이 호스트에서는 공개 키 인증 방식을 허용하지 않습니다.\n" + +#: tokens/ssh/ssh-utils.c:158 +msgid "Public key authentication error: " +msgstr "공개 키 인증 오류: " From 5723601af5e5c14ccdf3cda0b13756e3ea1b511b Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 4 Jul 2026 18:15:55 +0200 Subject: [PATCH 170/244] po: add ko.po (from translationproject.org) --- po/LINGUAS | 1 + 1 file changed, 1 insertion(+) diff --git a/po/LINGUAS b/po/LINGUAS index 541c4ce9b..519bd42de 100644 --- a/po/LINGUAS +++ b/po/LINGUAS @@ -8,6 +8,7 @@ id it ja ka +ko nl pl pt_BR From 775ceb14a679d8894695d34a09fe72c1013bf9c0 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Fri, 3 Jul 2026 11:23:01 +0200 Subject: [PATCH 171/244] Fix --tries option use. The argument is uint32, so it should be processes as such with the proper limits. Also fix assertion fail with 0 value. --- src/cryptsetup.c | 23 +++++++++++++++-------- src/utils_luks.c | 4 ++-- src/utils_luks.h | 4 ++-- src/utils_reencrypt.c | 13 ++++++++----- tests/compat-args-test | 4 ++++ 5 files changed, 31 insertions(+), 17 deletions(-) diff --git a/src/cryptsetup.c b/src/cryptsetup.c index ba2bb7981..94d6dce9d 100644 --- a/src/cryptsetup.c +++ b/src/cryptsetup.c @@ -358,7 +358,8 @@ static int action_open_loopaes(void) static int tcrypt_load(struct crypt_device *cd, struct crypt_params_tcrypt *params) { - int r, tries, eperm = 0; + uint32_t tries; + int r, eperm = 0; tries = set_tries_tty(false); do { @@ -475,8 +476,8 @@ static int action_open_bitlk(void) { struct crypt_device *cd = NULL; const char *activated_name; - uint32_t activate_flags = 0; - int r, tries, keysize; + uint32_t tries, activate_flags = 0; + int r, keysize; char *password = NULL; char *key = NULL; size_t passwordLen; @@ -769,8 +770,8 @@ static int action_open_fvault2(void) { struct crypt_device *cd = NULL; const char *activated_name; - uint32_t activate_flags = 0; - int r, tries, keysize; + uint32_t tries, activate_flags = 0; + int r, keysize; char *password = NULL; char *key = NULL; size_t passwordLen; @@ -1771,8 +1772,8 @@ static int action_open_luks(void) struct crypt_active_device cad; struct crypt_device *cd = NULL; const char *data_device, *header_device, *activated_name; - uint32_t activate_flags = 0; - int r, tries, keysize = 0; + uint32_t tries, activate_flags = 0; + int r, keysize = 0; struct stat st; struct crypt_keyslot_context *kc1 = NULL, *kc2 = NULL; @@ -2698,7 +2699,8 @@ static int action_luksResume(void) { struct crypt_device *cd = NULL; char *vk_description_activation = NULL; - int r, tries; + uint32_t tries; + int r; struct crypt_active_device cad; const char *req_type = luksType(device_type); struct crypt_keyslot_context *kc = NULL; @@ -3789,6 +3791,11 @@ static void basic_options_cb(poptContext popt_context, _("Option --priority can be only ignore/normal/prefer."), poptGetInvocationName(popt_context)); break; + case OPT_TRIES_ID: + if (ARG_UINT32(OPT_TRIES_ID) == 0) + usage(popt_context, EXIT_FAILURE, _("Invalid maximal tries specification."), + poptGetInvocationName(popt_context)); + break; } } diff --git a/src/utils_luks.c b/src/utils_luks.c index 64474b3de..2d8432942 100644 --- a/src/utils_luks.c +++ b/src/utils_luks.c @@ -131,7 +131,7 @@ int set_pbkdf_params(struct crypt_device *cd, const char *dev_type) return crypt_set_pbkdf_type(cd, &pbkdf); } -int set_tries_tty(bool keyring) +uint32_t set_tries_tty(bool keyring) { if (keyring && ARG_SET(OPT_KEY_DESCRIPTION_ID)) return 1; @@ -308,7 +308,7 @@ int luks_try_token_unlock(struct crypt_device *cd, const char *activated_name, const char *token_type, uint32_t activate_flags, - int tries, + uint32_t tries, bool activation, bool retry_with_pin, struct crypt_keyslot_context **r_kc) diff --git a/src/utils_luks.h b/src/utils_luks.h index 3ea9a0229..0eb7fb801 100644 --- a/src/utils_luks.h +++ b/src/utils_luks.h @@ -27,7 +27,7 @@ void set_activation_flags(uint32_t *flags); int set_pbkdf_params(struct crypt_device *cd, const char *dev_type); -int set_tries_tty(bool keyring); +uint32_t set_tries_tty(bool keyring); int get_adjusted_key_size(const char *cipher, const char *cipher_mode, uint32_t keysize_bits, uint32_t default_size_bits, int integrity_keysize); @@ -51,7 +51,7 @@ int luks_try_token_unlock(struct crypt_device *cd, const char *activated_name, const char *token_type, uint32_t activate_flags, - int tries, + uint32_t tries, bool activation, bool retry_with_pin, struct crypt_keyslot_context **r_kc); diff --git a/src/utils_reencrypt.c b/src/utils_reencrypt.c index 910cb94d7..d17acf7d4 100644 --- a/src/utils_reencrypt.c +++ b/src/utils_reencrypt.c @@ -257,7 +257,8 @@ static int reencrypt_multi_key_unlock(struct crypt_device *cd, struct crypt_keyslot_context **r_kc1, struct crypt_keyslot_context **r_kc2) { - int r, tries, keysize_bytes, new_keysize_bytes; + uint32_t tries; + int r, keysize_bytes, new_keysize_bytes; struct crypt_keyslot_context *kc1 = NULL, *kc2 = NULL; assert(cd); @@ -350,7 +351,8 @@ static int reencrypt_single_key_unlock(struct crypt_device *cd, const struct crypt_params_reencrypt *params, struct crypt_keyslot_context **r_kc) { - int r, tries, keysize = 0; + uint32_t tries; + int r, keysize = 0; struct crypt_keyslot_context *kc = NULL, *dummy = NULL; assert(params); @@ -1315,7 +1317,8 @@ static int reencrypt_unlock_keyslot(struct keyslot_contexts *kcs, int slot_to_check) { struct crypt_keyslot_context *kc; - int retry_count, r = -EINVAL; + uint32_t tries; + int r = -EINVAL; assert(cd); assert(kcs); @@ -1332,7 +1335,7 @@ static int reencrypt_unlock_keyslot(struct keyslot_contexts *kcs, return slot_to_check; } - retry_count = set_tries_tty(false); + tries = set_tries_tty(false); do { r = luks_init_keyslot_context(cd, msg, verify_passphrase(0), false, &kc); if (r < 0) @@ -1349,7 +1352,7 @@ static int reencrypt_unlock_keyslot(struct keyslot_contexts *kcs, crypt_keyslot_context_free(kc); tools_passphrase_msg(r); check_signal(&r); - } while ((r == -EPERM || r == -ERANGE) && (--retry_count > 0)); + } while ((r == -EPERM || r == -ERANGE) && (--tries > 0)); return r; } diff --git a/tests/compat-args-test b/tests/compat-args-test index f29afac6b..793ecf6d6 100755 --- a/tests/compat-args-test +++ b/tests/compat-args-test @@ -304,5 +304,9 @@ exp_pass luksFormat DEV NAME --keyslot-cipher ks --keyslot-key-size 32 # exp_fail open DEV NAME --keyslot-cipher ks --keyslot-key-size 32 # exp_fail luksFormat --type luks1 DEV NAME --keyslot-cipher ks --keyslot-key-size 32 +exp_pass open DEV NAME --test-passphrase --tries 1 +exp_fail open DEV NAME --test-passphrase --tries 0 +exp_fail open DEV NAME --test-passphrase --tries 4294967296 + cleanup exit 0 From 60992fa84844eb4179d710ccc14ced6d6e318396 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Fri, 3 Jul 2026 18:21:45 +0200 Subject: [PATCH 172/244] integritysetup: support --integrity-legacy-hmac in open The fix_hmac option was incorrectly set always, even if device was formatted with legacy flags. Support --integrity-legacy-hmac for open to allow legacy flags overwrite (which is insecure). Also fix crypt_set_compatibility() to be called only once, as it overwrites flags. --- src/integritysetup.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/integritysetup.c b/src/integritysetup.c index cebf92d95..f05c39397 100644 --- a/src/integritysetup.c +++ b/src/integritysetup.c @@ -120,6 +120,7 @@ static int action_format(void) char *integrity_key = NULL, *msg = NULL; int r; size_t signatures; + uint32_t flags = 0; r = crypt_parse_hash_integrity_mode(ARG_STR(OPT_INTEGRITY_ID), integrity); if (r < 0) { @@ -195,10 +196,11 @@ static int action_format(void) } if (ARG_SET(OPT_INTEGRITY_LEGACY_PADDING_ID)) - crypt_set_compatibility(cd, CRYPT_COMPAT_LEGACY_INTEGRITY_PADDING); - + flags |= CRYPT_COMPAT_LEGACY_INTEGRITY_PADDING; if (ARG_SET(OPT_INTEGRITY_LEGACY_HMAC_ID)) - crypt_set_compatibility(cd, CRYPT_COMPAT_LEGACY_INTEGRITY_HMAC); + flags |= CRYPT_COMPAT_LEGACY_INTEGRITY_HMAC; + if (flags) + crypt_set_compatibility(cd, flags); if (ARG_SET(OPT_INTEGRITY_INLINE_ID)) r = crypt_format_inline(cd, CRYPT_INTEGRITY, NULL, NULL, NULL, @@ -318,7 +320,7 @@ static int action_open(void) .journal_commit_time = ARG_SET(OPT_INTEGRITY_BITMAP_MODE_ID) ? ARG_UINT32(OPT_BITMAP_FLUSH_TIME_ID) : ARG_UINT32(OPT_JOURNAL_COMMIT_TIME_ID), .buffer_sectors = ARG_UINT32(OPT_BUFFER_SECTORS_ID), }; - uint32_t activate_flags = 0; + uint32_t activate_flags = 0, flags = 0; char integrity[MAX_CIPHER_LEN], journal_integrity[MAX_CIPHER_LEN], journal_crypt[MAX_CIPHER_LEN]; char *integrity_key = NULL; int r; @@ -381,8 +383,12 @@ static int action_open(void) goto out; } + if (ARG_SET(OPT_INTEGRITY_LEGACY_HMAC_ID)) + flags |= CRYPT_COMPAT_LEGACY_INTEGRITY_HMAC; if (ARG_SET(OPT_INTEGRITY_LEGACY_RECALC_ID)) - crypt_set_compatibility(cd, CRYPT_COMPAT_LEGACY_INTEGRITY_RECALC); + flags |= CRYPT_COMPAT_LEGACY_INTEGRITY_RECALC; + if (flags) + crypt_set_compatibility(cd, flags); r = crypt_activate_by_volume_key(cd, action_argv[1], integrity_key, ARG_UINT32(OPT_INTEGRITY_KEY_SIZE_ID), activate_flags); From ee93193651b8e6a76976be3ef72a85521a94d638 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Tue, 7 Jul 2026 16:15:38 +0200 Subject: [PATCH 173/244] tests: Add some integrity legacy flags checks And prepare test for dm-integrity hardening where --integrity-legacy-hmac must be used for open. --- tests/integrity-compat-test | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/tests/integrity-compat-test b/tests/integrity-compat-test index 76ed40d51..1e331b043 100755 --- a/tests/integrity-compat-test +++ b/tests/integrity-compat-test @@ -148,6 +148,11 @@ kernel_param_check() # number value fi } +kernel_param_grep() +{ + dmsetup table $DEV_NAME | grep -q "$1" +} + valgrind_setup() { command -v valgrind >/dev/null || fail "Cannot find valgrind." @@ -656,25 +661,36 @@ if [ -n "$DM_INTEGRITY_HMAC_FIX" ] ; then # only data HMAC ARGS="--integrity hmac-sha256 --integrity-key-file $KEY_FILE --integrity-key-size 32" $INTSETUP format -q $DEV --integrity-legacy-hmac --no-wipe --tag-size 32 $ARGS || fail "Cannot format device." - $INTSETUP open $DEV $DEV_NAME --integrity-recalculate $ARGS >/dev/null 2>&1 && fail "Cannot activate device." - $INTSETUP open $DEV $DEV_NAME --integrity-legacy-recalculate $ARGS || fail "Cannot activate device." + $INTSETUP open $DEV $DEV_NAME --integrity-legacy-hmac --integrity-recalculate $ARGS >/dev/null 2>&1 && fail "Cannot activate device." + $INTSETUP open $DEV $DEV_NAME --integrity-legacy-hmac --integrity-legacy-recalculate $ARGS || fail "Cannot activate device." + kernel_param_grep "fix_hmac" && fail "fix_hmac should not be set" + kernel_param_grep "fix_padding" || fail "Missing fix_padding" + kernel_param_grep "legacy_recalculate" || fail "Missing legacy_recalculate" $INTSETUP close $DEV_NAME || fail "Cannot deactivate device." # New version - must fail (no journal HMAC) $INTSETUP format -q $DEV --no-wipe --tag-size 32 $ARGS || fail "Cannot format device." $INTSETUP open $DEV $DEV_NAME --integrity-recalculate $ARGS >/dev/null 2>&1 && fail "Cannot activate device." $INTSETUP open $DEV $DEV_NAME --integrity-legacy-recalculate $ARGS || fail "Cannot activate device." + kernel_param_grep "fix_padding" || fail "Missing fix_padding" + kernel_param_grep "fix_hmac" || fail "Missing fix_hmac" + kernel_param_grep "legacy_recalculate" || fail "Missing legacy_recalculate" $INTSETUP close $DEV_NAME || fail "Cannot deactivate device." # data and journal HMAC ARGS="$ARGS --journal-integrity hmac-sha256 --journal-integrity-key-file $KEY_FILE2 --journal-integrity-key-size 32" $INTSETUP format -q $DEV --integrity-legacy-hmac --no-wipe --tag-size 32 $ARGS || fail "Cannot format device." - $INTSETUP open $DEV $DEV_NAME --integrity-recalculate $ARGS >/dev/null 2>&1 && fail "Cannot activate device." - $INTSETUP open $DEV $DEV_NAME --integrity-legacy-recalculate $ARGS || fail "Cannot activate device." + $INTSETUP open $DEV $DEV_NAME --integrity-legacy-hmac --integrity-recalculate $ARGS >/dev/null 2>&1 && fail "Cannot activate device." + $INTSETUP open $DEV $DEV_NAME --integrity-legacy-hmac --integrity-legacy-recalculate $ARGS || fail "Cannot activate device." + kernel_param_grep "fix_hmac" && fail "fix_hmac should not be set" + kernel_param_grep "fix_padding" || fail "Missing fix_padding" + kernel_param_grep "legacy_recalculate" || fail "Missing legacy_recalculate" $INTSETUP close $DEV_NAME || fail "Cannot deactivate device." # New fixed version $INTSETUP format -q $DEV --no-wipe --tag-size 32 $ARGS || fail "Cannot format device." $INTSETUP dump $DEV | grep "flags" | grep -q "fix_hmac" || fail "Flag for HMAC not set." $INTSETUP open $DEV $DEV_NAME --integrity-recalculate $ARGS || fail "Cannot activate device." + kernel_param_grep "fix_padding" || fail "Missing fix_padding" + kernel_param_grep "fix_hmac" || fail "Missing fix_hmac" $INTSETUP close $DEV_NAME || fail "Cannot deactivate device." echo "[OK]" else From 31cc14756d4cb57a3a1b420753790a45dde66d62 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 4 Jul 2026 22:49:53 +0200 Subject: [PATCH 174/244] po: Upgrade gettext and do not regenerate po files automatically As po files are maintained externally, DIST_DEPENDS_ON_UPDATE_PO = no should be set. It also requires gettext version bump. To regenerate pot file (before sending it to translations), this command must be run: make -C po cryptsetup.pot-update --- configure.ac | 2 +- po/Makevars | 40 ++++++++++++++++++++++++++++++++++++---- 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/configure.ac b/configure.ac index f195b7874..79b3032ff 100644 --- a/configure.ac +++ b/configure.ac @@ -171,7 +171,7 @@ fi dnl ========================================================================== AM_GNU_GETTEXT([external],[need-ngettext]) -AM_GNU_GETTEXT_VERSION([0.18.3]) +AM_GNU_GETTEXT_REQUIRE_VERSION([0.19.8]) dnl ========================================================================== diff --git a/po/Makevars b/po/Makevars index 93d6bbc2e..8075084bc 100644 --- a/po/Makevars +++ b/po/Makevars @@ -1,4 +1,8 @@ # Makefile variables for PO directory in any package using GNU gettext. +# +# Copyright (C) 2003-2025 Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation gives +# unlimited permission to use, copy, distribute, and modify it. # Usually the message domain is the same as the package name. DOMAIN = $(PACKAGE) @@ -10,12 +14,9 @@ top_builddir = .. # These options get passed to xgettext. XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ -# This option gets passed to msgmerge. -MSGMERGE_OPTIONS = --no-wrap - # This is the copyright holder that gets inserted into the header of the # $(DOMAIN).pot file. Set this to the copyright holder of the surrounding -# package. (Note that the msgstr strings, extracted from the package's +# package. (Note that the msgid strings, extracted from the package's # sources, belong to the copyright holder of the package.) Translators are # expected to transfer the copyright for their translations to this person # or entity, or to disclaim their copyright. The empty string stands for @@ -23,6 +24,13 @@ MSGMERGE_OPTIONS = --no-wrap # their copyright. COPYRIGHT_HOLDER = +# This tells whether or not to prepend "GNU " prefix to the package +# name that gets inserted into the header of the $(DOMAIN).pot file. +# Possible values are "yes", "no", or empty. If it is empty, try to +# detect it automatically by scanning the files in $(top_srcdir) for +# "GNU packagename" string. +PACKAGE_GNU = no + # This is the email address or URL to which the translators shall report # bugs in the untranslated strings: # - Strings which are not entire sentences, see the maintainer guidelines @@ -42,3 +50,27 @@ MSGID_BUGS_ADDRESS = cryptsetup@lists.linux.dev # This is the list of locale categories, beyond LC_MESSAGES, for which the # message catalogs shall be used. It is usually empty. EXTRA_LOCALE_CATEGORIES = + +# This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt' +# context. Possible values are "yes" and "no". Set this to yes if the +# package uses functions taking also a message context, like pgettext(), or +# if in $(XGETTEXT_OPTIONS) you define keywords with a context argument. +USE_MSGCTXT = no + +# These options get passed to msgmerge. +# Useful options are in particular: +# --previous to keep previous msgids of translated messages, +# --quiet to reduce the verbosity. +MSGMERGE_OPTIONS = --no-wrap --quiet + +# These options get passed to msginit. +# If you want to disable line wrapping when writing PO files, add +# --no-wrap to MSGMERGE_OPTIONS, XGETTEXT_OPTIONS, and +# MSGINIT_OPTIONS. +MSGINIT_OPTIONS = + +# This tells whether or not to forcibly update $(DOMAIN).pot and +# regenerate PO files on "make dist". Possible values are "yes" and +# "no". Set this to no if the POT file and PO files are maintained +# externally. +DIST_DEPENDS_ON_UPDATE_PO = no From b9edba9125858e8cd0835018c093c52d3c10f91f Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 4 Jul 2026 22:53:49 +0200 Subject: [PATCH 175/244] Update cryptsetup.pot. --- po/cryptsetup.pot | 1425 +++++++++++++++++++++++---------------------- 1 file changed, 736 insertions(+), 689 deletions(-) diff --git a/po/cryptsetup.pot b/po/cryptsetup.pot index cbec4093c..2369bb652 100644 --- a/po/cryptsetup.pot +++ b/po/cryptsetup.pot @@ -5,9 +5,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.1\n" +"Project-Id-Version: cryptsetup 2.9.0-git\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2025-08-19 10:38+0200\n" +"POT-Creation-Date: 2026-06-29 20:20+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -75,7 +75,7 @@ msgid "Requested automatic recalculation of integrity tags is not supported." msgstr "" #: lib/libdevmapper.c:1802 lib/libdevmapper.c:1856 lib/libdevmapper.c:1859 -#: lib/luks2/luks2_json_metadata.c:2777 +#: lib/luks2/luks2_json_metadata.c:2812 msgid "Discard/TRIM is not supported." msgstr "" @@ -87,7 +87,7 @@ msgstr "" msgid "Requested dm-integrity inline mode is not supported." msgstr "" -#: lib/libdevmapper.c:2870 +#: lib/libdevmapper.c:2906 #, c-format msgid "Failed to query dm-%s segment." msgstr "" @@ -120,687 +120,688 @@ msgstr "" msgid "Error reading from RNG." msgstr "" -#: lib/setup.c:248 +#: lib/setup.c:253 msgid "OPAL support is disabled in libcryptsetup." msgstr "" -#: lib/setup.c:250 +#: lib/setup.c:255 #, c-format msgid "Device %s or kernel does not support OPAL encryption." msgstr "" -#: lib/setup.c:266 +#: lib/setup.c:273 msgid "Cannot initialize crypto RNG backend." msgstr "" -#: lib/setup.c:272 +#: lib/setup.c:279 msgid "Cannot initialize crypto backend." msgstr "" -#: lib/setup.c:305 lib/setup.c:2766 lib/verity/verity.c:109 +#: lib/setup.c:314 lib/setup.c:2818 lib/verity/verity.c:109 #, c-format msgid "Hash algorithm %s not supported." msgstr "" -#: lib/setup.c:308 lib/loopaes/loopaes.c:78 +#: lib/setup.c:317 lib/loopaes/loopaes.c:78 #, c-format msgid "Key processing error (using hash %s)." msgstr "" -#: lib/setup.c:389 lib/setup.c:426 +#: lib/setup.c:398 lib/setup.c:435 msgid "Cannot determine device type. Incompatible activation of device?" msgstr "" -#: lib/setup.c:395 lib/setup.c:4145 +#: lib/setup.c:404 lib/setup.c:4226 msgid "This operation is supported only for LUKS device." msgstr "" -#: lib/setup.c:432 +#: lib/setup.c:441 msgid "This operation is supported only for LUKS2 device." msgstr "" -#: lib/setup.c:489 lib/luks2/luks2_reencrypt.c:3093 +#: lib/setup.c:498 lib/luks2/luks2_reencrypt.c:3111 msgid "All key slots full." msgstr "" -#: lib/setup.c:500 +#: lib/setup.c:509 #, c-format msgid "Key slot %d is invalid, please select between 0 and %d." msgstr "" -#: lib/setup.c:506 +#: lib/setup.c:515 #, c-format msgid "Key slot %d is full, please select another one." msgstr "" -#: lib/setup.c:531 lib/setup.c:3860 +#: lib/setup.c:540 lib/setup.c:3927 msgid "Device size is not aligned to device logical block size." msgstr "" -#: lib/setup.c:628 +#: lib/setup.c:635 #, c-format msgid "Header detected but device %s is too small." msgstr "" -#: lib/setup.c:669 lib/setup.c:3745 lib/setup.c:5212 -#: lib/luks2/luks2_reencrypt.c:3937 lib/luks2/luks2_reencrypt.c:4425 +#: lib/setup.c:676 lib/setup.c:3812 lib/setup.c:5321 +#: lib/luks2/luks2_reencrypt.c:3958 lib/luks2/luks2_reencrypt.c:4552 msgid "This operation is not supported for this device type." msgstr "" -#: lib/setup.c:674 +#: lib/setup.c:681 msgid "Illegal operation with reencryption in-progress." msgstr "" -#: lib/setup.c:806 +#: lib/setup.c:813 msgid "Failed to rollback LUKS2 metadata in memory." msgstr "" -#: lib/setup.c:893 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 -#: lib/luks2/luks2_json_metadata.c:1361 src/cryptsetup.c:1773 -#: src/cryptsetup.c:1957 src/cryptsetup.c:2012 src/cryptsetup.c:2210 -#: src/cryptsetup.c:2355 src/cryptsetup.c:2633 src/cryptsetup.c:2946 -#: src/cryptsetup.c:3014 src/utils_reencrypt.c:2280 -#: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 +#: lib/setup.c:900 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 +#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1794 +#: src/cryptsetup.c:1978 src/cryptsetup.c:2033 src/cryptsetup.c:2231 +#: src/cryptsetup.c:2376 src/cryptsetup.c:2654 src/cryptsetup.c:2967 +#: src/cryptsetup.c:3035 src/utils_reencrypt.c:2281 +#: src/utils_reencrypt_luks1.c:1140 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." msgstr "" -#: lib/setup.c:896 lib/luks1/keymanage.c:517 +#: lib/setup.c:903 lib/luks1/keymanage.c:517 #, c-format msgid "Unsupported LUKS version %d." msgstr "" -#: lib/setup.c:1270 +#: lib/setup.c:1277 #, c-format msgid "No known cipher specification pattern detected for active device %s." msgstr "" -#: lib/setup.c:1515 lib/setup.c:3492 lib/setup.c:3584 lib/setup.c:3596 -#: lib/setup.c:3768 lib/setup.c:5787 +#: lib/setup.c:1531 lib/setup.c:3559 lib/setup.c:3651 lib/setup.c:3663 +#: lib/setup.c:3835 lib/setup.c:5899 #, c-format msgid "Device %s is not active." msgstr "" -#: lib/setup.c:1532 +#: lib/setup.c:1548 #, c-format msgid "Underlying device for crypt device %s disappeared." msgstr "" -#: lib/setup.c:1614 +#: lib/setup.c:1642 msgid "Invalid plain crypt parameters." msgstr "" -#: lib/setup.c:1619 lib/setup.c:2669 +#: lib/setup.c:1647 lib/setup.c:2713 msgid "Invalid key size." msgstr "" -#: lib/setup.c:1624 lib/setup.c:2674 lib/setup.c:2879 +#: lib/setup.c:1652 lib/setup.c:2718 lib/setup.c:2931 msgid "UUID is not supported for this crypt type." msgstr "" -#: lib/setup.c:1629 lib/setup.c:2679 +#: lib/setup.c:1657 lib/setup.c:2723 msgid "Detached metadata device is not supported for this crypt type." msgstr "" -#: lib/setup.c:1639 lib/setup.c:1887 lib/luks2/luks2_reencrypt.c:3026 -#: src/cryptsetup.c:1485 src/cryptsetup.c:3753 +#: lib/setup.c:1667 lib/setup.c:1927 lib/luks2/luks2_reencrypt.c:3044 +#: src/cryptsetup.c:1507 src/cryptsetup.c:3781 msgid "Unsupported encryption sector size." msgstr "" -#: lib/setup.c:1647 lib/setup.c:1916 lib/setup.c:3854 +#: lib/setup.c:1680 lib/setup.c:1956 lib/setup.c:3921 msgid "Device size is not aligned to requested sector size." msgstr "" -#: lib/setup.c:1699 lib/setup.c:1951 lib/setup.c:2328 +#: lib/setup.c:1739 lib/setup.c:1991 lib/setup.c:2369 msgid "Can't format LUKS without device." msgstr "" -#: lib/setup.c:1704 lib/setup.c:1956 +#: lib/setup.c:1744 lib/setup.c:1996 #, c-format msgid "Zoned device %s cannot be used for LUKS header." msgstr "" -#: lib/setup.c:1711 lib/setup.c:1963 lib/setup.c:2334 +#: lib/setup.c:1751 lib/setup.c:2003 lib/setup.c:2375 msgid "Requested data alignment is not compatible with data offset." msgstr "" -#: lib/setup.c:1751 lib/setup.c:1981 +#: lib/setup.c:1791 lib/setup.c:2021 msgid "" "WARNING: DAX device can corrupt data as it does not guarantee atomic sector " "updates.\n" msgstr "" -#: lib/setup.c:1789 lib/setup.c:2088 lib/setup.c:2109 lib/setup.c:2517 -#: lib/setup.c:2564 lib/setup.c:2896 +#: lib/setup.c:1829 lib/setup.c:2128 lib/setup.c:2149 lib/setup.c:2553 +#: lib/setup.c:2608 lib/setup.c:2948 #, c-format msgid "Cannot wipe header on device %s." msgstr "" -#: lib/setup.c:1802 lib/setup.c:2161 +#: lib/setup.c:1842 lib/setup.c:2201 #, c-format msgid "" "Device %s is too small for activation, there is no remaining space for " "data.\n" msgstr "" -#: lib/setup.c:1843 +#: lib/setup.c:1883 msgid "Volume key is too small for encryption with integrity extensions." msgstr "" -#: lib/setup.c:1847 +#: lib/setup.c:1887 msgid "Integrity key size is too small." msgstr "" -#: lib/setup.c:1856 +#: lib/setup.c:1896 #, c-format msgid "Cipher %s-%s (key size %zd bits) is not available." msgstr "" -#: lib/setup.c:1897 +#: lib/setup.c:1937 msgid "" "WARNING: The device activation will fail, dm-crypt is missing support for " "requested encryption sector size.\n" msgstr "" -#: lib/setup.c:2091 lib/setup.c:2458 lib/setup.c:2520 lib/utils_device.c:896 -#: lib/luks1/keyencryption.c:244 lib/luks2/luks2_reencrypt.c:3065 -#: lib/luks2/luks2_reencrypt.c:4485 +#: lib/setup.c:2131 lib/setup.c:2499 lib/setup.c:2556 lib/utils_device.c:906 +#: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3083 +#: lib/luks2/luks2_reencrypt.c:4612 #, c-format msgid "Device %s is too small." msgstr "" -#: lib/setup.c:2102 lib/setup.c:2141 lib/setup.c:2557 lib/setup.c:2615 +#: lib/setup.c:2142 lib/setup.c:2181 lib/setup.c:2601 lib/setup.c:2659 #, c-format msgid "Cannot format device %s in use." msgstr "" -#: lib/setup.c:2105 lib/setup.c:2144 lib/setup.c:2560 lib/setup.c:2618 +#: lib/setup.c:2145 lib/setup.c:2184 lib/setup.c:2604 lib/setup.c:2662 #, c-format msgid "Cannot format device %s, permission denied." msgstr "" -#: lib/setup.c:2129 lib/setup.c:2587 lib/setup.c:2969 +#: lib/setup.c:2169 lib/setup.c:2631 lib/setup.c:3021 #, c-format msgid "Cannot format integrity for device %s." msgstr "" -#: lib/setup.c:2148 lib/setup.c:2626 +#: lib/setup.c:2188 lib/setup.c:2670 #, c-format msgid "Cannot format device %s." msgstr "" -#: lib/setup.c:2191 +#: lib/setup.c:2231 msgid "Cannot get OPAL alignment parameters." msgstr "" -#: lib/setup.c:2203 +#: lib/setup.c:2243 msgid "Bogus OPAL logical block size." msgstr "" -#: lib/setup.c:2208 lib/luks2/hw_opal/hw_opal.c:303 +#: lib/setup.c:2248 lib/luks2/hw_opal/hw_opal.c:402 msgid "Bogus OPAL logical block size differs from device block size." msgstr "" -#: lib/setup.c:2214 +#: lib/setup.c:2254 msgid "Requested data offset is not compatible with OPAL block size." msgstr "" -#: lib/setup.c:2221 +#: lib/setup.c:2261 msgid "Requested data alignment is not compatible with OPAL alignment." msgstr "" -#: lib/setup.c:2241 +#: lib/setup.c:2281 msgid "Data offset does not satisfy OPAL alignment requirements." msgstr "" -#: lib/setup.c:2254 +#: lib/setup.c:2294 msgid "" "Requested data alignment does not satisfy locking range alignment " "requirements." msgstr "" -#: lib/setup.c:2468 +#: lib/setup.c:2509 #, c-format msgid "" "Compensating device size by % sectors to align it with OPAL " "alignment granularity." msgstr "" -#: lib/setup.c:2528 lib/setup.c:4228 lib/setup.c:4417 lib/utils_wipe.c:356 -#: lib/luks2/luks2_json_metadata.c:2720 lib/luks2/luks2_json_metadata.c:2988 +#: lib/setup.c:2564 lib/setup.c:4309 lib/setup.c:4515 lib/utils_wipe.c:356 +#: lib/luks2/luks2_json_metadata.c:2755 lib/luks2/luks2_json_metadata.c:3030 #, c-format msgid "Failed to acquire OPAL lock on device %s." msgstr "" -#: lib/setup.c:2538 +#: lib/setup.c:2576 msgid "Incorrect OPAL Admin key." msgstr "" -#: lib/setup.c:2540 +#: lib/setup.c:2578 msgid "Cannot setup OPAL segment." msgstr "" -#: lib/setup.c:2622 +#: lib/setup.c:2666 #, c-format msgid "" "Cannot format device %s, OPAL device seems to be fully write-protected now." msgstr "" -#: lib/setup.c:2624 +#: lib/setup.c:2668 msgid "" "This is perhaps a bug in firmware. Run OPAL PSID reset and reconnect for " "recovery." msgstr "" -#: lib/setup.c:2644 +#: lib/setup.c:2688 #, c-format msgid "Locking range %d reset on device %s failed." msgstr "" -#: lib/setup.c:2664 +#: lib/setup.c:2708 msgid "Can't format LOOPAES without device." msgstr "" -#: lib/setup.c:2709 +#: lib/setup.c:2761 msgid "Can't format VERITY without device." msgstr "" -#: lib/setup.c:2720 lib/verity/verity.c:88 +#: lib/setup.c:2772 lib/verity/verity.c:88 #, c-format msgid "Unsupported VERITY hash type %d." msgstr "" -#: lib/setup.c:2726 lib/verity/verity.c:96 +#: lib/setup.c:2778 lib/verity/verity.c:96 msgid "Unsupported VERITY block size." msgstr "" -#: lib/setup.c:2731 lib/verity/verity.c:61 +#: lib/setup.c:2783 lib/verity/verity.c:61 msgid "Unsupported VERITY hash offset." msgstr "" -#: lib/setup.c:2736 +#: lib/setup.c:2788 msgid "Unsupported VERITY FEC offset." msgstr "" -#: lib/setup.c:2760 +#: lib/setup.c:2812 msgid "Data area overlaps with hash area." msgstr "" -#: lib/setup.c:2785 +#: lib/setup.c:2837 msgid "Hash area overlaps with FEC area." msgstr "" -#: lib/setup.c:2792 +#: lib/setup.c:2844 msgid "Data area overlaps with FEC area." msgstr "" -#: lib/setup.c:2884 +#: lib/setup.c:2936 msgid "Integrity key size mismatch." msgstr "" -#: lib/setup.c:2935 +#: lib/setup.c:2987 #, c-format msgid "" "WARNING: Requested tag size %d bytes differs from %s size output (%d " "bytes).\n" msgstr "" -#: lib/setup.c:3037 lib/setup.c:3135 +#: lib/setup.c:3100 lib/setup.c:3202 #, c-format msgid "Unknown or unsupported device type %s requested." msgstr "" -#: lib/setup.c:3049 +#: lib/setup.c:3116 #, c-format msgid "Device %s does not provide inline integrity data fields." msgstr "" -#: lib/setup.c:3055 +#: lib/setup.c:3122 #, c-format msgid "" "Inline tag size % [bytes] is larger than % provided by " "device %s." msgstr "" -#: lib/setup.c:3070 +#: lib/setup.c:3137 #, c-format msgid "Sector must be the same as device hardware sector (%zu bytes)." msgstr "" -#: lib/setup.c:3500 lib/setup.c:3589 lib/setup.c:3602 +#: lib/setup.c:3567 lib/setup.c:3656 lib/setup.c:3669 #, c-format msgid "Unsupported parameters on device %s." msgstr "" -#: lib/setup.c:3506 lib/setup.c:3609 lib/luks2/luks2_reencrypt.c:2920 -#: lib/luks2/luks2_reencrypt.c:3189 lib/luks2/luks2_reencrypt.c:3583 +#: lib/setup.c:3573 lib/setup.c:3676 lib/luks2/luks2_reencrypt.c:2938 +#: lib/luks2/luks2_reencrypt.c:3207 lib/luks2/luks2_reencrypt.c:3604 #, c-format msgid "Mismatching parameters on device %s." msgstr "" -#: lib/setup.c:3632 +#: lib/setup.c:3699 msgid "Crypt devices mismatch." msgstr "" -#: lib/setup.c:3664 lib/setup.c:3669 lib/luks2/luks2_reencrypt.c:2404 -#: lib/luks2/luks2_reencrypt.c:2936 lib/luks2/luks2_reencrypt.c:4224 +#: lib/setup.c:3731 lib/setup.c:3736 lib/luks2/luks2_reencrypt.c:2424 +#: lib/luks2/luks2_reencrypt.c:2954 lib/luks2/luks2_reencrypt.c:4260 +#: lib/luks2/luks2_reencrypt.c:4277 #, c-format msgid "Failed to reload device %s." msgstr "" -#: lib/setup.c:3675 lib/setup.c:3681 lib/luks2/luks2_reencrypt.c:2375 -#: lib/luks2/luks2_reencrypt.c:2382 lib/luks2/luks2_reencrypt.c:2950 +#: lib/setup.c:3742 lib/setup.c:3748 lib/luks2/luks2_reencrypt.c:2392 +#: lib/luks2/luks2_reencrypt.c:2399 lib/luks2/luks2_reencrypt.c:2968 #, c-format msgid "Failed to suspend device %s." msgstr "" -#: lib/setup.c:3687 lib/luks2/luks2_reencrypt.c:2389 -#: lib/luks2/luks2_reencrypt.c:2971 lib/luks2/luks2_reencrypt.c:4137 -#: lib/luks2/luks2_reencrypt.c:4228 +#: lib/setup.c:3754 lib/luks2/luks2_reencrypt.c:2406 +#: lib/luks2/luks2_reencrypt.c:2989 lib/luks2/luks2_reencrypt.c:4168 +#: lib/luks2/luks2_reencrypt.c:4297 lib/luks2/luks2_reencrypt.c:4305 #, c-format msgid "Failed to resume device %s." msgstr "" -#: lib/setup.c:3702 +#: lib/setup.c:3769 #, c-format msgid "Fatal error while reloading device %s (on top of device %s)." msgstr "" -#: lib/setup.c:3705 lib/setup.c:3707 +#: lib/setup.c:3772 lib/setup.c:3774 #, c-format msgid "Failed to switch device %s to dm-error." msgstr "" -#: lib/setup.c:3750 +#: lib/setup.c:3817 msgid "Can not resize LUKS2 device with static size." msgstr "" -#: lib/setup.c:3755 +#: lib/setup.c:3822 msgid "Resize of LUKS2 device with integrity protection is not supported." msgstr "" -#: lib/setup.c:3801 +#: lib/setup.c:3868 msgid "Cannot resize loop device." msgstr "" -#: lib/setup.c:3845 +#: lib/setup.c:3912 msgid "WARNING: Maximum size already set or kernel doesn't support resize.\n" msgstr "" -#: lib/setup.c:3911 +#: lib/setup.c:3978 msgid "Resize failed, the kernel doesn't support it." msgstr "" -#: lib/setup.c:3943 +#: lib/setup.c:4010 msgid "Do you really want to change UUID of device?" msgstr "" -#: lib/setup.c:4035 +#: lib/setup.c:4102 msgid "Header backup file does not contain compatible LUKS header." msgstr "" -#: lib/setup.c:4128 +#: lib/setup.c:4209 #, c-format msgid "Volume %s is not active." msgstr "" -#: lib/setup.c:4183 +#: lib/setup.c:4264 #, c-format msgid "Volume %s is already suspended." msgstr "" -#: lib/setup.c:4209 +#: lib/setup.c:4290 #, c-format msgid "Suspend is not supported for device %s." msgstr "" -#: lib/setup.c:4211 lib/setup.c:4219 +#: lib/setup.c:4292 lib/setup.c:4300 #, c-format msgid "Error during suspending device %s." msgstr "" -#: lib/setup.c:4234 +#: lib/setup.c:4315 #, c-format msgid "Device %s was suspended but hardware OPAL device cannot be locked." msgstr "" -#: lib/setup.c:4265 lib/setup.c:4442 +#: lib/setup.c:4346 lib/setup.c:4540 #, c-format msgid "Resume is not supported for device %s." msgstr "" -#: lib/setup.c:4267 lib/setup.c:4432 lib/setup.c:4444 +#: lib/setup.c:4348 lib/setup.c:4530 lib/setup.c:4542 #, c-format msgid "Error during resuming device %s." msgstr "" -#: lib/setup.c:4286 +#: lib/setup.c:4384 msgid "Failed to unlink volume key from user specified keyring." msgstr "" -#: lib/setup.c:4408 lib/setup.c:5574 +#: lib/setup.c:4506 lib/setup.c:5686 msgid "Failed to link volume key in user defined keyring." msgstr "" -#: lib/setup.c:4506 src/cryptsetup.c:2714 +#: lib/setup.c:4605 src/cryptsetup.c:2735 #, c-format msgid "Volume %s is not suspended." msgstr "" -#: lib/setup.c:4607 lib/setup.c:7239 lib/setup.c:7261 lib/setup.c:7315 -#: src/cryptsetup.c:1849 src/cryptsetup.c:2253 src/cryptsetup.c:2271 -#: src/utils_reencrypt.c:305 src/utils_reencrypt.c:1965 +#: lib/setup.c:4716 lib/setup.c:7405 lib/setup.c:7427 src/cryptsetup.c:1870 +#: src/cryptsetup.c:2274 src/cryptsetup.c:2292 src/utils_reencrypt.c:305 +#: src/utils_reencrypt.c:1966 msgid "Volume key does not match the volume." msgstr "" -#: lib/setup.c:4761 +#: lib/setup.c:4870 msgid "Failed to swap new key slot." msgstr "" -#: lib/setup.c:4859 +#: lib/setup.c:4968 #, c-format msgid "Key slot %d is invalid." msgstr "" -#: lib/setup.c:4865 src/cryptsetup.c:1970 src/cryptsetup.c:2430 -#: src/cryptsetup.c:3114 src/cryptsetup.c:3174 +#: lib/setup.c:4974 src/cryptsetup.c:1991 src/cryptsetup.c:2451 +#: src/cryptsetup.c:3135 src/cryptsetup.c:3195 #, c-format msgid "Keyslot %d is not active." msgstr "" -#: lib/setup.c:4884 +#: lib/setup.c:4993 msgid "Device header overlaps with data area." msgstr "" -#: lib/setup.c:5105 +#: lib/setup.c:5214 msgid "Reencryption in-progress. Cannot activate device." msgstr "" -#: lib/setup.c:5107 lib/luks2/luks2_json_metadata.c:2884 -#: lib/luks2/luks2_reencrypt.c:3714 +#: lib/setup.c:5216 lib/luks2/luks2_json_metadata.c:2926 +#: lib/luks2/luks2_reencrypt.c:3735 msgid "Failed to get reencryption lock." msgstr "" -#: lib/setup.c:5129 +#: lib/setup.c:5238 msgid "LUKS2 reencryption recovery using volume key(s) failed." msgstr "" -#: lib/setup.c:5265 +#: lib/setup.c:5374 #, c-format msgid "Device %s already exists." msgstr "" -#: lib/setup.c:5272 +#: lib/setup.c:5381 #, c-format msgid "Cannot use device %s, name is invalid or still in use." msgstr "" -#: lib/setup.c:5284 +#: lib/setup.c:5393 msgid "Reencryption volume keys do not match the volume." msgstr "" -#: lib/setup.c:5301 +#: lib/setup.c:5410 msgid "Incorrect volume key specified for plain device." msgstr "" -#: lib/setup.c:5327 lib/setup.c:5388 +#: lib/setup.c:5436 lib/setup.c:5497 msgid "Device type is not properly initialized." msgstr "" -#: lib/setup.c:5426 +#: lib/setup.c:5535 msgid "Kernel keyring is not supported by the kernel." msgstr "" -#: lib/setup.c:5430 +#: lib/setup.c:5539 msgid "Kernel keyring missing: required for passing signature to kernel." msgstr "" -#: lib/setup.c:5482 +#: lib/setup.c:5594 #, c-format msgid "Cannot use keyring key %s." msgstr "" -#: lib/setup.c:5695 +#: lib/setup.c:5807 msgid "Incorrect root hash specified for verity device." msgstr "" -#: lib/setup.c:5736 lib/setup.c:5761 +#: lib/setup.c:5848 lib/setup.c:5873 msgid "OPAL does not support deferred deactivation." msgstr "" -#: lib/setup.c:5751 lib/setup.c:5782 lib/luks2/luks2_json_metadata.c:2949 +#: lib/setup.c:5863 lib/setup.c:5894 lib/luks2/luks2_json_metadata.c:2991 #: src/utils_reencrypt.c:89 #, c-format msgid "Device %s is still in use." msgstr "" -#: lib/setup.c:5769 +#: lib/setup.c:5881 #, c-format msgid "Could not cancel deferred remove from device %s." msgstr "" -#: lib/setup.c:5791 +#: lib/setup.c:5903 #, c-format msgid "Invalid device %s." msgstr "" -#: lib/setup.c:5932 +#: lib/setup.c:6050 msgid "Volume key buffer too small." msgstr "" -#: lib/setup.c:5943 +#: lib/setup.c:6061 msgid "Cannot retrieve volume key for LUKS2 device." msgstr "" -#: lib/setup.c:5952 +#: lib/setup.c:6070 msgid "Cannot retrieve volume key for LUKS1 device." msgstr "" -#: lib/setup.c:5966 +#: lib/setup.c:6084 msgid "Cannot retrieve volume key for plain device." msgstr "" -#: lib/setup.c:5974 +#: lib/setup.c:6092 msgid "Cannot retrieve root hash for verity device." msgstr "" -#: lib/setup.c:5981 +#: lib/setup.c:6101 msgid "Cannot retrieve volume key for BITLK device." msgstr "" -#: lib/setup.c:5986 +#: lib/setup.c:6106 msgid "Cannot retrieve volume key for FVAULT2 device." msgstr "" -#: lib/setup.c:5988 +#: lib/setup.c:6108 #, c-format msgid "This operation is not supported for %s crypt device." msgstr "" -#: lib/setup.c:6173 lib/setup.c:6184 +#: lib/setup.c:6293 lib/setup.c:6304 msgid "Dump operation is not supported for this device type." msgstr "" -#: lib/setup.c:6564 +#: lib/setup.c:6684 #, c-format msgid "Data offset is not multiple of %u bytes." msgstr "" -#: lib/setup.c:6872 +#: lib/setup.c:7038 #, c-format msgid "Cannot convert device %s which is still in use." msgstr "" -#: lib/setup.c:7180 lib/setup.c:7324 +#: lib/setup.c:7346 lib/setup.c:7501 #, c-format msgid "Failed to assign keyslot %u as the new volume key." msgstr "" -#: lib/setup.c:7204 +#: lib/setup.c:7370 msgid "Failed to initialize default LUKS2 keyslot parameters." msgstr "" -#: lib/setup.c:7210 +#: lib/setup.c:7376 #, c-format msgid "Failed to assign keyslot %d to digest." msgstr "" -#: lib/setup.c:7441 +#: lib/setup.c:7618 msgid "Cannot add key slot, all slots disabled and no volume key provided." msgstr "" -#: lib/setup.c:7514 lib/verity/verity.c:333 +#: lib/setup.c:7706 lib/setup.c:7721 lib/verity/verity.c:333 msgid "Failed to load key in kernel keyring." msgstr "" -#: lib/setup.c:7705 +#: lib/setup.c:7902 #, c-format msgid "Could not find keyring described by \"%s\"." msgstr "" -#: lib/setup.c:7770 +#: lib/setup.c:7967 msgid "Failed to acquire global memory-hard access serialization lock." msgstr "" -#: lib/utils.c:204 lib/tcrypt/tcrypt.c:490 +#: lib/utils.c:207 lib/tcrypt/tcrypt.c:492 msgid "Failed to open key file." msgstr "" -#: lib/utils.c:212 +#: lib/utils.c:215 msgid "Cannot read keyfile from a terminal." msgstr "" -#: lib/utils.c:228 +#: lib/utils.c:231 msgid "Failed to stat key file." msgstr "" -#: lib/utils.c:236 lib/utils.c:257 +#: lib/utils.c:239 lib/utils.c:260 msgid "Cannot seek to requested keyfile offset." msgstr "" -#: lib/utils.c:251 lib/utils.c:266 src/utils_password.c:219 +#: lib/utils.c:254 lib/utils.c:269 src/utils_password.c:219 #: src/utils_password.c:231 msgid "Out of memory while reading passphrase." msgstr "" -#: lib/utils.c:286 +#: lib/utils.c:289 msgid "Error reading passphrase." msgstr "" -#: lib/utils.c:303 +#: lib/utils.c:306 msgid "Nothing to read on input." msgstr "" -#: lib/utils.c:310 +#: lib/utils.c:313 msgid "Maximum keyfile size exceeded." msgstr "" -#: lib/utils.c:315 +#: lib/utils.c:318 msgid "Cannot read requested amount of data." msgstr "" #: lib/utils_device.c:207 lib/utils_storage_wrappers.c:99 -#: lib/luks1/keyencryption.c:78 src/utils_reencrypt.c:2253 +#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2254 #, c-format msgid "Device %s does not exist or access denied." msgstr "" @@ -815,42 +816,47 @@ msgstr "" msgid "Ignoring bogus optimal-io size for data device (%u bytes)." msgstr "" -#: lib/utils_device.c:707 +#: lib/utils_device.c:711 +#, c-format +msgid "Cannot grow %s to % bytes (%s)." +msgstr "" + +#: lib/utils_device.c:717 #, c-format msgid "Device %s is too small. Need at least % bytes." msgstr "" -#: lib/utils_device.c:788 +#: lib/utils_device.c:798 #, c-format msgid "Cannot use device %s which is in use (already mapped or mounted)." msgstr "" -#: lib/utils_device.c:792 +#: lib/utils_device.c:802 #, c-format msgid "Cannot use device %s, permission denied." msgstr "" -#: lib/utils_device.c:795 +#: lib/utils_device.c:805 #, c-format msgid "Cannot get info about device %s." msgstr "" -#: lib/utils_device.c:818 +#: lib/utils_device.c:828 msgid "Cannot use a loopback device, running as non-root user." msgstr "" -#: lib/utils_device.c:829 +#: lib/utils_device.c:839 msgid "" "Attaching loopback device failed (loop device with autoclear flag is " "required)." msgstr "" -#: lib/utils_device.c:877 +#: lib/utils_device.c:887 #, c-format msgid "Requested offset is beyond real size of device %s." msgstr "" -#: lib/utils_device.c:885 +#: lib/utils_device.c:895 #, c-format msgid "Device %s has zero size." msgstr "" @@ -960,54 +966,54 @@ msgstr "" msgid "Cannot erase OPAL device." msgstr "" -#: lib/luks1/keyencryption.c:26 +#: lib/luks1/keyencryption.c:27 #, c-format msgid "" "Failed to setup dm-crypt key mapping for device %s.\n" "Check that kernel supports %s cipher (check syslog for more info)." msgstr "" -#: lib/luks1/keyencryption.c:31 +#: lib/luks1/keyencryption.c:32 msgid "Key size in XTS mode must be 256 or 512 bits." msgstr "" -#: lib/luks1/keyencryption.c:33 +#: lib/luks1/keyencryption.c:34 msgid "Cipher specification should be in [cipher]-[mode]-[iv] format." msgstr "" -#: lib/luks1/keyencryption.c:84 lib/luks1/keymanage.c:353 -#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1150 -#: lib/luks2/luks2_json_metadata.c:1514 lib/luks2/luks2_keyslot.c:711 +#: lib/luks1/keyencryption.c:85 lib/luks1/keymanage.c:353 +#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1132 +#: lib/luks2/luks2_json_metadata.c:1518 lib/luks2/luks2_keyslot.c:711 #, c-format msgid "Cannot write to device %s, permission denied." msgstr "" -#: lib/luks1/keyencryption.c:107 +#: lib/luks1/keyencryption.c:108 msgid "Failed to open temporary keystore device." msgstr "" -#: lib/luks1/keyencryption.c:114 +#: lib/luks1/keyencryption.c:115 msgid "Failed to access temporary keystore device." msgstr "" -#: lib/luks1/keyencryption.c:188 lib/luks2/luks2_keyslot_luks2.c:49 -#: lib/luks2/luks2_keyslot_luks2.c:67 lib/luks2/luks2_keyslot_reenc.c:184 +#: lib/luks1/keyencryption.c:189 lib/luks2/luks2_keyslot_luks2.c:47 +#: lib/luks2/luks2_keyslot_reenc.c:184 msgid "IO error while encrypting keyslot." msgstr "" -#: lib/luks1/keyencryption.c:235 lib/luks1/keymanage.c:356 -#: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:668 -#: lib/fvault2/fvault2.c:870 lib/verity/verity.c:67 lib/verity/verity.c:183 +#: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:356 +#: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:683 +#: lib/fvault2/fvault2.c:872 lib/verity/verity.c:67 lib/verity/verity.c:183 #: lib/verity/verity_hash.c:312 lib/verity/verity_hash.c:321 -#: lib/verity/verity_hash.c:341 lib/verity/verity_fec.c:247 +#: lib/verity/verity_hash.c:350 lib/verity/verity_fec.c:247 #: lib/verity/verity_fec.c:259 lib/verity/verity_fec.c:264 -#: lib/luks2/luks2_json_metadata.c:1517 src/utils_reencrypt_luks1.c:108 +#: lib/luks2/luks2_json_metadata.c:1521 src/utils_reencrypt_luks1.c:108 #: src/utils_reencrypt_luks1.c:120 #, c-format msgid "Cannot open device %s." msgstr "" -#: lib/luks1/keyencryption.c:246 lib/luks2/luks2_keyslot_luks2.c:128 +#: lib/luks1/keyencryption.c:247 lib/luks2/luks2_keyslot_luks2.c:85 msgid "IO error while decrypting keyslot." msgstr "" @@ -1023,32 +1029,32 @@ msgstr "" msgid "LUKS keyslot %u is invalid." msgstr "" -#: lib/luks1/keymanage.c:254 lib/luks2/luks2_json_metadata.c:1378 +#: lib/luks1/keymanage.c:254 lib/luks2/luks2_json_metadata.c:1382 #, c-format msgid "Requested header backup file %s already exists." msgstr "" -#: lib/luks1/keymanage.c:256 lib/luks2/luks2_json_metadata.c:1380 +#: lib/luks1/keymanage.c:256 lib/luks2/luks2_json_metadata.c:1384 #, c-format msgid "Cannot create header backup file %s." msgstr "" -#: lib/luks1/keymanage.c:263 lib/luks2/luks2_json_metadata.c:1387 +#: lib/luks1/keymanage.c:263 lib/luks2/luks2_json_metadata.c:1391 #, c-format msgid "Cannot write header backup file %s." msgstr "" -#: lib/luks1/keymanage.c:295 lib/luks2/luks2_json_metadata.c:1424 +#: lib/luks1/keymanage.c:295 lib/luks2/luks2_json_metadata.c:1428 msgid "Backup file does not contain valid LUKS header." msgstr "" #: lib/luks1/keymanage.c:308 lib/luks1/keymanage.c:580 -#: lib/luks2/luks2_json_metadata.c:1446 +#: lib/luks2/luks2_json_metadata.c:1450 #, c-format msgid "Cannot open header backup file %s." msgstr "" -#: lib/luks1/keymanage.c:316 lib/luks2/luks2_json_metadata.c:1454 +#: lib/luks1/keymanage.c:316 lib/luks2/luks2_json_metadata.c:1458 #, c-format msgid "Cannot read header backup file %s." msgstr "" @@ -1074,7 +1080,7 @@ msgid "" "keyslots." msgstr "" -#: lib/luks1/keymanage.c:337 lib/luks2/luks2_json_metadata.c:1486 +#: lib/luks1/keymanage.c:337 lib/luks2/luks2_json_metadata.c:1490 msgid "" "\n" "WARNING: real device header has different UUID than backup!" @@ -1099,7 +1105,7 @@ msgid "Cipher hash repaired to lowercase (%s)." msgstr "" #: lib/luks1/keymanage.c:417 lib/luks1/keymanage.c:523 -#: lib/luks1/keymanage.c:777 +#: lib/luks1/keymanage.c:756 #, c-format msgid "Requested LUKS hash %s is not supported." msgstr "" @@ -1146,7 +1152,7 @@ msgstr "" msgid "LUKS hash %s is invalid." msgstr "" -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1360 +#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1369 msgid "No known problems detected for LUKS header." msgstr "" @@ -1160,51 +1166,51 @@ msgstr "" msgid "Error re-reading LUKS header after update on device %s." msgstr "" -#: lib/luks1/keymanage.c:771 +#: lib/luks1/keymanage.c:750 msgid "" "Data offset for LUKS header must be either 0 or higher than header size." msgstr "" -#: lib/luks1/keymanage.c:782 lib/luks1/keymanage.c:853 +#: lib/luks1/keymanage.c:761 lib/luks1/keymanage.c:832 #: lib/luks2/luks2_json_format.c:231 lib/luks2/luks2_json_metadata.c:1261 #: src/utils_reencrypt.c:701 msgid "Wrong LUKS UUID format provided." msgstr "" -#: lib/luks1/keymanage.c:804 +#: lib/luks1/keymanage.c:783 msgid "Cannot create LUKS header: reading random salt failed." msgstr "" -#: lib/luks1/keymanage.c:832 +#: lib/luks1/keymanage.c:811 #, c-format msgid "Cannot create LUKS header: header digest failed (using hash %s)." msgstr "" -#: lib/luks1/keymanage.c:877 +#: lib/luks1/keymanage.c:856 #, c-format msgid "Key slot %d active, purge first." msgstr "" -#: lib/luks1/keymanage.c:883 +#: lib/luks1/keymanage.c:862 #, c-format msgid "Key slot %d material includes too few stripes. Header manipulation?" msgstr "" -#: lib/luks1/keymanage.c:921 lib/luks2/luks2_keyslot_luks2.c:260 +#: lib/luks1/keymanage.c:900 lib/luks2/luks2_keyslot_luks2.c:217 msgid "PBKDF2 iteration value overflow." msgstr "" -#: lib/luks1/keymanage.c:1040 +#: lib/luks1/keymanage.c:1022 #, c-format msgid "Cannot open keyslot (using hash %s)." msgstr "" -#: lib/luks1/keymanage.c:1136 +#: lib/luks1/keymanage.c:1118 #, c-format msgid "Key slot %d is invalid, please select keyslot between 0 and %d." msgstr "" -#: lib/luks1/keymanage.c:1154 lib/luks2/luks2_keyslot.c:715 +#: lib/luks1/keymanage.c:1136 lib/luks2/luks2_keyslot.c:715 #, c-format msgid "Cannot wipe device %s." msgstr "" @@ -1225,207 +1231,215 @@ msgstr "" msgid "Kernel does not support loop-AES compatible mapping." msgstr "" -#: lib/tcrypt/tcrypt.c:497 +#: lib/tcrypt/tcrypt.c:499 #, c-format msgid "Error reading keyfile %s." msgstr "" -#: lib/tcrypt/tcrypt.c:547 +#: lib/tcrypt/tcrypt.c:554 #, c-format msgid "Maximum TCRYPT passphrase length (%zu) exceeded." msgstr "" -#: lib/tcrypt/tcrypt.c:589 +#: lib/tcrypt/tcrypt.c:615 #, c-format msgid "PBKDF2 hash algorithm %s not available, skipping." msgstr "" -#: lib/tcrypt/tcrypt.c:608 src/cryptsetup.c:1233 -msgid "Required kernel crypto interface not available." -msgstr "" - -#: lib/tcrypt/tcrypt.c:610 src/cryptsetup.c:1235 -msgid "Ensure you have algif_skcipher kernel module loaded." -msgstr "" - -#: lib/tcrypt/tcrypt.c:752 +#: lib/tcrypt/tcrypt.c:767 #, c-format msgid "Activation is not supported for %d sector size." msgstr "" -#: lib/tcrypt/tcrypt.c:758 +#: lib/tcrypt/tcrypt.c:773 msgid "Kernel does not support activation for this TCRYPT legacy mode." msgstr "" -#: lib/tcrypt/tcrypt.c:813 +#: lib/tcrypt/tcrypt.c:828 #, c-format msgid "Activating TCRYPT system encryption for partition %s." msgstr "" -#: lib/tcrypt/tcrypt.c:828 +#: lib/tcrypt/tcrypt.c:843 msgid "" "Cannot determine TCRYPT system partition offset, activating whole encrypted " "area." msgstr "" -#: lib/tcrypt/tcrypt.c:837 +#: lib/tcrypt/tcrypt.c:852 msgid "" "Cannot determine TCRYPT system partition offset, activating device as a " "system partition." msgstr "" -#: lib/tcrypt/tcrypt.c:917 +#: lib/tcrypt/tcrypt.c:932 msgid "Kernel does not support TCRYPT compatible mapping." msgstr "" -#: lib/tcrypt/tcrypt.c:1144 +#: lib/tcrypt/tcrypt.c:1161 msgid "This function is not supported without TCRYPT header load." msgstr "" -#: lib/bitlk/bitlk.c:265 +#: lib/bitlk/bitlk.c:293 #, c-format msgid "" "Unexpected metadata entry type '%u' found when parsing supported Volume " "Master Key." msgstr "" -#: lib/bitlk/bitlk.c:327 +#: lib/bitlk/bitlk.c:351 msgid "Invalid string found when parsing Volume Master Key." msgstr "" -#: lib/bitlk/bitlk.c:331 +#: lib/bitlk/bitlk.c:355 #, c-format msgid "" "Unexpected string ('%s') found when parsing supported Volume Master Key." msgstr "" -#: lib/bitlk/bitlk.c:351 +#: lib/bitlk/bitlk.c:375 #, c-format msgid "" "Unexpected metadata entry value '%u' found when parsing supported Volume " "Master Key." msgstr "" -#: lib/bitlk/bitlk.c:450 +#: lib/bitlk/bitlk.c:528 msgid "BITLK version 1 is currently not supported." msgstr "" -#: lib/bitlk/bitlk.c:456 +#: lib/bitlk/bitlk.c:534 msgid "Invalid or unknown boot signature for BITLK device." msgstr "" -#: lib/bitlk/bitlk.c:468 +#: lib/bitlk/bitlk.c:546 #, c-format msgid "Unsupported sector size %." msgstr "" -#: lib/bitlk/bitlk.c:476 +#: lib/bitlk/bitlk.c:554 #, c-format msgid "Failed to read BITLK header from %s." msgstr "" -#: lib/bitlk/bitlk.c:501 +#: lib/bitlk/bitlk.c:603 +#, c-format +msgid "Failed to read and validate BITLK FVE metadata from %s." +msgstr "" + +#: lib/bitlk/bitlk.c:610 +#, c-format +msgid "Failed to validate the location of BITLK FVE metadata from %s." +msgstr "" + +#: lib/bitlk/bitlk.c:621 +#, c-format +msgid "BITLK FVE metadata changed between reads from %s." +msgstr "" + +#: lib/bitlk/bitlk.c:628 +#, c-format +msgid "Failed to hash BITLK FVE metadata read from %s." +msgstr "" + +#: lib/bitlk/bitlk.c:644 #, c-format -msgid "Failed to read BITLK FVE metadata from %s." +msgid "Failed to parse BITLK FVE validation metadata from %s." msgstr "" -#: lib/bitlk/bitlk.c:552 +#: lib/bitlk/bitlk.c:695 msgid "Unknown or unsupported encryption type." msgstr "" -#: lib/bitlk/bitlk.c:592 +#: lib/bitlk/bitlk.c:733 #, c-format -msgid "Failed to read BITLK metadata entries from %s." +msgid "Failed to check BITLK metadata entries previously read from %s." msgstr "" -#: lib/bitlk/bitlk.c:709 +#: lib/bitlk/bitlk.c:857 msgid "Failed to convert BITLK volume description" msgstr "" -#: lib/bitlk/bitlk.c:872 +#: lib/bitlk/bitlk.c:1022 #, c-format msgid "Unexpected metadata entry type '%u' found when parsing external key." msgstr "" -#: lib/bitlk/bitlk.c:895 +#: lib/bitlk/bitlk.c:1045 #, c-format msgid "BEK file GUID '%s' does not match GUID of the volume." msgstr "" -#: lib/bitlk/bitlk.c:899 +#: lib/bitlk/bitlk.c:1049 #, c-format msgid "Unexpected metadata entry value '%u' found when parsing external key." msgstr "" -#: lib/bitlk/bitlk.c:938 +#: lib/bitlk/bitlk.c:1088 #, c-format msgid "Unsupported BEK metadata version %" msgstr "" -#: lib/bitlk/bitlk.c:943 +#: lib/bitlk/bitlk.c:1093 #, c-format msgid "Unexpected BEK metadata size % does not match BEK file length" msgstr "" -#: lib/bitlk/bitlk.c:969 +#: lib/bitlk/bitlk.c:1119 msgid "Unexpected metadata entry found when parsing startup key." msgstr "" -#: lib/bitlk/bitlk.c:1069 +#: lib/bitlk/bitlk.c:1222 msgid "This operation is not supported." msgstr "" -#: lib/bitlk/bitlk.c:1077 +#: lib/bitlk/bitlk.c:1230 msgid "Unexpected key data size." msgstr "" -#: lib/bitlk/bitlk.c:1205 +#: lib/bitlk/bitlk.c:1446 msgid "This BITLK device is in an unsupported state and cannot be activated." msgstr "" -#: lib/bitlk/bitlk.c:1210 +#: lib/bitlk/bitlk.c:1451 #, c-format msgid "BITLK devices with type '%s' cannot be activated." msgstr "" -#: lib/bitlk/bitlk.c:1217 -msgid "Activation of BITLK device with clear key protection is not supported." -msgstr "" - -#: lib/bitlk/bitlk.c:1258 +#: lib/bitlk/bitlk.c:1490 #, c-format msgid "" "WARNING: BitLocker volume size % does not match the underlying " "device size %" msgstr "" -#: lib/bitlk/bitlk.c:1385 +#: lib/bitlk/bitlk.c:1617 msgid "" "Cannot activate device, kernel dm-crypt is missing support for BITLK IV." msgstr "" -#: lib/bitlk/bitlk.c:1389 +#: lib/bitlk/bitlk.c:1621 msgid "" "Cannot activate device, kernel dm-crypt is missing support for BITLK " "Elephant diffuser." msgstr "" -#: lib/bitlk/bitlk.c:1393 +#: lib/bitlk/bitlk.c:1625 msgid "" "Cannot activate device, kernel dm-crypt is missing support for large sector " "size." msgstr "" -#: lib/bitlk/bitlk.c:1397 +#: lib/bitlk/bitlk.c:1629 msgid "Cannot activate device, kernel dm-zero module is missing." msgstr "" -#: lib/fvault2/fvault2.c:530 +#: lib/fvault2/fvault2.c:532 #, c-format msgid "Could not read %u bytes of volume header." msgstr "" -#: lib/fvault2/fvault2.c:542 +#: lib/fvault2/fvault2.c:544 #, c-format msgid "Unsupported FVAULT2 version %." msgstr "" @@ -1502,23 +1516,23 @@ msgstr "" msgid "Hash area overflow." msgstr "" -#: lib/verity/verity_hash.c:372 +#: lib/verity/verity_hash.c:381 msgid "Verification of data area failed." msgstr "" -#: lib/verity/verity_hash.c:377 +#: lib/verity/verity_hash.c:386 msgid "Verification of root hash failed." msgstr "" -#: lib/verity/verity_hash.c:383 +#: lib/verity/verity_hash.c:392 msgid "Input/output error while creating hash area." msgstr "" -#: lib/verity/verity_hash.c:385 +#: lib/verity/verity_hash.c:394 msgid "Creation of hash area failed." msgstr "" -#: lib/verity/verity_hash.c:420 +#: lib/verity/verity_hash.c:429 #, c-format msgid "" "WARNING: Kernel cannot activate device if data block size exceeds page size " @@ -1575,26 +1589,26 @@ msgstr "" msgid "Incompatible kernel dm-integrity metadata (version %u) detected on %s." msgstr "" -#: lib/integrity/integrity.c:290 lib/integrity/integrity.c:474 +#: lib/integrity/integrity.c:308 lib/integrity/integrity.c:492 msgid "Kernel does not support dm-integrity mapping." msgstr "" -#: lib/integrity/integrity.c:296 +#: lib/integrity/integrity.c:314 msgid "Kernel does not support dm-integrity fixed metadata alignment." msgstr "" -#: lib/integrity/integrity.c:305 +#: lib/integrity/integrity.c:323 msgid "" "Kernel refuses to activate insecure recalculate option (see legacy " "activation options to override)." msgstr "" -#: lib/integrity/integrity.c:311 +#: lib/integrity/integrity.c:329 msgid "Kernel does not support dm-integrity inline mode." msgstr "" #: lib/luks2/luks2_disk_metadata.c:382 lib/luks2/luks2_json_metadata.c:1184 -#: lib/luks2/luks2_json_metadata.c:1506 +#: lib/luks2/luks2_json_metadata.c:1510 #, c-format msgid "Failed to acquire write lock on device %s." msgstr "" @@ -1631,140 +1645,143 @@ msgstr "" msgid "WARNING: LUKS2 keyslots area size changed to % bytes.\n" msgstr "" -#: lib/luks2/luks2_json_metadata.c:1171 lib/luks2/luks2_json_metadata.c:1353 -#: lib/luks2/luks2_json_metadata.c:1413 lib/luks2/luks2_keyslot_luks2.c:81 -#: lib/luks2/luks2_keyslot_luks2.c:105 +#: lib/luks2/luks2_json_metadata.c:1171 lib/luks2/luks2_json_metadata.c:1357 +#: lib/luks2/luks2_json_metadata.c:1417 lib/luks2/luks2_keyslot_luks2.c:71 #, c-format msgid "Failed to acquire read lock on device %s." msgstr "" -#: lib/luks2/luks2_json_metadata.c:1431 +#: lib/luks2/luks2_json_metadata.c:1277 +msgid "Label is too long." +msgstr "" + +#: lib/luks2/luks2_json_metadata.c:1435 #, c-format msgid "Forbidden LUKS2 requirements detected in backup %s." msgstr "" -#: lib/luks2/luks2_json_metadata.c:1470 +#: lib/luks2/luks2_json_metadata.c:1474 msgid "Data offset differ on device and backup, restore failed." msgstr "" -#: lib/luks2/luks2_json_metadata.c:1476 +#: lib/luks2/luks2_json_metadata.c:1480 msgid "" "Binary header with keyslot areas size differ on device and backup, restore " "failed." msgstr "" -#: lib/luks2/luks2_json_metadata.c:1483 +#: lib/luks2/luks2_json_metadata.c:1487 #, c-format msgid "Device %s %s%s%s%s" msgstr "" -#: lib/luks2/luks2_json_metadata.c:1484 +#: lib/luks2/luks2_json_metadata.c:1488 msgid "" "does not contain LUKS2 header. Replacing header can destroy data on that " "device." msgstr "" -#: lib/luks2/luks2_json_metadata.c:1485 +#: lib/luks2/luks2_json_metadata.c:1489 msgid "" "already contains LUKS2 header. Replacing header will destroy existing " "keyslots." msgstr "" -#: lib/luks2/luks2_json_metadata.c:1487 +#: lib/luks2/luks2_json_metadata.c:1491 msgid "" "\n" "WARNING: unknown LUKS2 requirements detected in real device header!\n" "Replacing header with backup may corrupt the data on that device!" msgstr "" -#: lib/luks2/luks2_json_metadata.c:1489 +#: lib/luks2/luks2_json_metadata.c:1493 msgid "" "\n" "WARNING: Unfinished offline reencryption detected on the device!\n" "Replacing header with backup may corrupt data." msgstr "" -#: lib/luks2/luks2_json_metadata.c:1587 +#: lib/luks2/luks2_json_metadata.c:1591 #, c-format msgid "Ignored unknown flag %s." msgstr "" -#: lib/luks2/luks2_json_metadata.c:2541 lib/luks2/luks2_reencrypt.c:2105 +#: lib/luks2/luks2_json_metadata.c:2576 lib/luks2/luks2_reencrypt.c:2123 #, c-format msgid "Missing key for dm-crypt segment %u" msgstr "" -#: lib/luks2/luks2_json_metadata.c:2553 lib/luks2/luks2_reencrypt.c:2118 +#: lib/luks2/luks2_json_metadata.c:2588 lib/luks2/luks2_reencrypt.c:2136 msgid "Failed to set dm-crypt segment." msgstr "" -#: lib/luks2/luks2_json_metadata.c:2559 lib/luks2/luks2_reencrypt.c:2124 +#: lib/luks2/luks2_json_metadata.c:2594 lib/luks2/luks2_reencrypt.c:2142 msgid "Failed to set dm-linear segment." msgstr "" -#: lib/luks2/luks2_json_metadata.c:2679 src/utils_reencrypt.c:578 +#: lib/luks2/luks2_json_metadata.c:2714 src/utils_reencrypt.c:578 msgid "No known cipher specification pattern detected in LUKS2 header." msgstr "" -#: lib/luks2/luks2_json_metadata.c:2687 +#: lib/luks2/luks2_json_metadata.c:2722 msgid "OPAL device must have static device size." msgstr "" -#: lib/luks2/luks2_json_metadata.c:2707 +#: lib/luks2/luks2_json_metadata.c:2742 msgid "" "Encrypted OPAL device with integrity must be smaller than locking range." msgstr "" -#: lib/luks2/luks2_json_metadata.c:2712 +#: lib/luks2/luks2_json_metadata.c:2747 msgid "OPAL device must have same size as locking range." msgstr "" -#: lib/luks2/luks2_json_metadata.c:2732 +#: lib/luks2/luks2_json_metadata.c:2767 #, c-format msgid "OPAL device is %s already unlocked.\n" msgstr "" -#: lib/luks2/luks2_json_metadata.c:2771 +#: lib/luks2/luks2_json_metadata.c:2806 msgid "Unsupported device integrity configuration." msgstr "" -#: lib/luks2/luks2_json_metadata.c:2787 +#: lib/luks2/luks2_json_metadata.c:2822 msgid "Underlying dm-integrity device with unexpected provided data sectors." msgstr "" -#: lib/luks2/luks2_json_metadata.c:2882 +#: lib/luks2/luks2_json_metadata.c:2924 msgid "Reencryption in-progress. Cannot deactivate device." msgstr "" -#: lib/luks2/luks2_json_metadata.c:2893 lib/luks2/luks2_reencrypt.c:4274 +#: lib/luks2/luks2_json_metadata.c:2935 lib/luks2/luks2_reencrypt.c:4244 #, c-format msgid "Failed to replace suspended device %s with dm-error target." msgstr "" -#: lib/luks2/luks2_json_metadata.c:2972 lib/luks2/luks2_json_metadata.c:2994 +#: lib/luks2/luks2_json_metadata.c:3014 lib/luks2/luks2_json_metadata.c:3036 #, c-format msgid "Device %s was deactivated but hardware OPAL device cannot be locked." msgstr "" -#: lib/luks2/luks2_json_metadata.c:3016 +#: lib/luks2/luks2_json_metadata.c:3058 msgid "Unmet LUKS2 requirements detected." msgstr "" -#: lib/luks2/luks2_json_metadata.c:3024 +#: lib/luks2/luks2_json_metadata.c:3066 msgid "" "Operation incompatible with device marked for legacy reencryption. Aborting." msgstr "" -#: lib/luks2/luks2_json_metadata.c:3026 +#: lib/luks2/luks2_json_metadata.c:3068 msgid "" "Operation incompatible with device marked for LUKS2 reencryption. Aborting." msgstr "" -#: lib/luks2/luks2_json_metadata.c:3028 +#: lib/luks2/luks2_json_metadata.c:3070 msgid "Operation incompatible with device using OPAL. Aborting." msgstr "" -#: lib/luks2/luks2_json_metadata.c:3030 +#: lib/luks2/luks2_json_metadata.c:3072 msgid "Operation incompatible with device using inline HW tags. Aborting." msgstr "" @@ -1776,22 +1793,22 @@ msgstr "" msgid "Keyslot open failed." msgstr "" -#: lib/luks2/luks2_keyslot_luks2.c:42 lib/luks2/luks2_keyslot_luks2.c:99 +#: lib/luks2/luks2_keyslot_luks2.c:40 lib/luks2/luks2_keyslot_luks2.c:77 #, c-format -msgid "Cannot use %s-%s cipher for keyslot encryption." +msgid "Cannot use %s cipher for keyslot encryption." msgstr "" -#: lib/luks2/luks2_keyslot_luks2.c:262 +#: lib/luks2/luks2_keyslot_luks2.c:219 msgid "Not enough memory for keyslot key derivation." msgstr "" -#: lib/luks2/luks2_keyslot_luks2.c:276 lib/luks2/luks2_keyslot_luks2.c:405 -#: lib/luks2/luks2_keyslot_reenc.c:434 lib/luks2/luks2_reencrypt.c:2725 +#: lib/luks2/luks2_keyslot_luks2.c:233 lib/luks2/luks2_keyslot_luks2.c:358 +#: lib/luks2/luks2_keyslot_reenc.c:434 lib/luks2/luks2_reencrypt.c:2743 #, c-format msgid "Hash algorithm %s is not available." msgstr "" -#: lib/luks2/luks2_keyslot_luks2.c:522 +#: lib/luks2/luks2_keyslot_luks2.c:475 msgid "No space for new keyslot." msgstr "" @@ -1810,568 +1827,594 @@ msgstr "" msgid "Failed to refresh reencryption verification digest." msgstr "" -#: lib/luks2/luks2_luks1_convert.c:532 +#: lib/luks2/luks2_luks1_convert.c:498 #, c-format msgid "Cannot check status of device with uuid: %s." msgstr "" -#: lib/luks2/luks2_luks1_convert.c:558 +#: lib/luks2/luks2_luks1_convert.c:524 msgid "Unable to convert header with LUKSMETA additional metadata." msgstr "" -#: lib/luks2/luks2_luks1_convert.c:590 lib/luks2/luks2_reencrypt.c:3882 +#: lib/luks2/luks2_luks1_convert.c:556 lib/luks2/luks2_reencrypt.c:3903 #, c-format msgid "Unable to use cipher specification %s-%s for LUKS2." msgstr "" -#: lib/luks2/luks2_luks1_convert.c:599 +#: lib/luks2/luks2_luks1_convert.c:565 #, c-format msgid "Unable to use cipher specification %s-%s for LUKS2 keyslot." msgstr "" -#: lib/luks2/luks2_luks1_convert.c:614 +#: lib/luks2/luks2_luks1_convert.c:580 msgid "Unable to move keyslot area. Not enough space." msgstr "" -#: lib/luks2/luks2_luks1_convert.c:653 +#: lib/luks2/luks2_luks1_convert.c:619 msgid "Cannot convert to LUKS2 format - invalid metadata." msgstr "" -#: lib/luks2/luks2_luks1_convert.c:670 +#: lib/luks2/luks2_luks1_convert.c:636 msgid "Unable to move keyslot area. LUKS2 keyslots area too small." msgstr "" -#: lib/luks2/luks2_luks1_convert.c:676 lib/luks2/luks2_luks1_convert.c:1006 +#: lib/luks2/luks2_luks1_convert.c:642 lib/luks2/luks2_luks1_convert.c:972 msgid "Unable to move keyslot area." msgstr "" -#: lib/luks2/luks2_luks1_convert.c:791 +#: lib/luks2/luks2_luks1_convert.c:757 msgid "" "Cannot convert to LUKS1 format - default segment encryption sector size is " "not 512 bytes." msgstr "" -#: lib/luks2/luks2_luks1_convert.c:799 +#: lib/luks2/luks2_luks1_convert.c:765 msgid "" "Cannot convert to LUKS1 format - key slot digests are not LUKS1 compatible." msgstr "" -#: lib/luks2/luks2_luks1_convert.c:813 +#: lib/luks2/luks2_luks1_convert.c:779 #, c-format msgid "Cannot convert to LUKS1 format - device uses wrapped key cipher %s." msgstr "" -#: lib/luks2/luks2_luks1_convert.c:818 +#: lib/luks2/luks2_luks1_convert.c:784 msgid "Cannot convert to LUKS1 format - device uses more segments." msgstr "" -#: lib/luks2/luks2_luks1_convert.c:826 +#: lib/luks2/luks2_luks1_convert.c:792 #, c-format msgid "Cannot convert to LUKS1 format - LUKS2 header contains %u token(s)." msgstr "" -#: lib/luks2/luks2_luks1_convert.c:832 +#: lib/luks2/luks2_luks1_convert.c:798 msgid "Cannot convert to LUKS1 format - there are no active keyslots." msgstr "" -#: lib/luks2/luks2_luks1_convert.c:844 +#: lib/luks2/luks2_luks1_convert.c:810 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is in invalid state." msgstr "" -#: lib/luks2/luks2_luks1_convert.c:849 +#: lib/luks2/luks2_luks1_convert.c:815 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is unbound." msgstr "" -#: lib/luks2/luks2_luks1_convert.c:854 +#: lib/luks2/luks2_luks1_convert.c:820 #, c-format msgid "" "Cannot convert to LUKS1 format - slot %u (over maximum slots) is still " "active." msgstr "" -#: lib/luks2/luks2_luks1_convert.c:859 +#: lib/luks2/luks2_luks1_convert.c:825 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is not LUKS1 compatible." msgstr "" -#: lib/luks2/luks2_reencrypt.c:1194 +#: lib/luks2/luks2_reencrypt.c:1212 #, c-format msgid "Hotzone size must be multiple of calculated zone alignment (%zu bytes)." msgstr "" -#: lib/luks2/luks2_reencrypt.c:1199 +#: lib/luks2/luks2_reencrypt.c:1217 #, c-format msgid "Device size must be multiple of calculated zone alignment (%zu bytes)." msgstr "" -#: lib/luks2/luks2_reencrypt.c:1406 lib/luks2/luks2_reencrypt.c:1592 -#: lib/luks2/luks2_reencrypt.c:1675 lib/luks2/luks2_reencrypt.c:1717 -#: lib/luks2/luks2_reencrypt.c:4069 +#: lib/luks2/luks2_reencrypt.c:1424 lib/luks2/luks2_reencrypt.c:1610 +#: lib/luks2/luks2_reencrypt.c:1693 lib/luks2/luks2_reencrypt.c:1735 +#: lib/luks2/luks2_reencrypt.c:4090 msgid "Failed to initialize old segment storage wrapper." msgstr "" -#: lib/luks2/luks2_reencrypt.c:1420 lib/luks2/luks2_reencrypt.c:1570 +#: lib/luks2/luks2_reencrypt.c:1438 lib/luks2/luks2_reencrypt.c:1588 msgid "Failed to initialize new segment storage wrapper." msgstr "" -#: lib/luks2/luks2_reencrypt.c:1546 lib/luks2/luks2_reencrypt.c:4081 +#: lib/luks2/luks2_reencrypt.c:1564 lib/luks2/luks2_reencrypt.c:4102 msgid "Failed to initialize hotzone protection." msgstr "" -#: lib/luks2/luks2_reencrypt.c:1619 +#: lib/luks2/luks2_reencrypt.c:1637 msgid "Failed to read checksums for current hotzone." msgstr "" -#: lib/luks2/luks2_reencrypt.c:1626 lib/luks2/luks2_reencrypt.c:4095 +#: lib/luks2/luks2_reencrypt.c:1644 lib/luks2/luks2_reencrypt.c:4117 #, c-format msgid "Failed to read hotzone area starting at %." msgstr "" -#: lib/luks2/luks2_reencrypt.c:1645 +#: lib/luks2/luks2_reencrypt.c:1663 #, c-format msgid "Failed to decrypt sector %zu." msgstr "" -#: lib/luks2/luks2_reencrypt.c:1651 +#: lib/luks2/luks2_reencrypt.c:1669 #, c-format msgid "Failed to recover sector %zu." msgstr "" -#: lib/luks2/luks2_reencrypt.c:2217 +#: lib/luks2/luks2_reencrypt.c:2222 #, c-format msgid "" "Source and target device sizes don't match. Source %, target: " "%." msgstr "" -#: lib/luks2/luks2_reencrypt.c:2315 +#: lib/luks2/luks2_reencrypt.c:2324 #, c-format msgid "Failed to activate hotzone device %s." msgstr "" -#: lib/luks2/luks2_reencrypt.c:2332 +#: lib/luks2/luks2_reencrypt.c:2336 +#, c-format +msgid "Failed to allocate hotzone device %s." +msgstr "" + +#: lib/luks2/luks2_reencrypt.c:2353 #, c-format msgid "Failed to activate overlay device %s with actual origin table." msgstr "" -#: lib/luks2/luks2_reencrypt.c:2339 +#: lib/luks2/luks2_reencrypt.c:2360 #, c-format msgid "Failed to load new mapping for device %s." msgstr "" -#: lib/luks2/luks2_reencrypt.c:2410 +#: lib/luks2/luks2_reencrypt.c:2430 msgid "Failed to refresh reencryption devices stack." msgstr "" -#: lib/luks2/luks2_reencrypt.c:2607 +#: lib/luks2/luks2_reencrypt.c:2625 msgid "Failed to set new keyslots area size." msgstr "" -#: lib/luks2/luks2_reencrypt.c:2743 +#: lib/luks2/luks2_reencrypt.c:2761 #, c-format msgid "" "Data shift value is not aligned to encryption sector size (% bytes)." msgstr "" -#: lib/luks2/luks2_reencrypt.c:2780 src/utils_reencrypt.c:162 +#: lib/luks2/luks2_reencrypt.c:2798 src/utils_reencrypt.c:162 #, c-format msgid "Unsupported resilience mode %s" msgstr "" -#: lib/luks2/luks2_reencrypt.c:2816 +#: lib/luks2/luks2_reencrypt.c:2834 msgid "Moved segment size can not be greater than data shift value." msgstr "" -#: lib/luks2/luks2_reencrypt.c:2858 +#: lib/luks2/luks2_reencrypt.c:2876 msgid "Invalid reencryption resilience parameters." msgstr "" -#: lib/luks2/luks2_reencrypt.c:2880 +#: lib/luks2/luks2_reencrypt.c:2898 #, c-format msgid "" "Moved segment too large. Requested size %, available space for: " "%." msgstr "" -#: lib/luks2/luks2_reencrypt.c:2969 +#: lib/luks2/luks2_reencrypt.c:2987 msgid "Failed to clear table." msgstr "" -#: lib/luks2/luks2_reencrypt.c:3055 +#: lib/luks2/luks2_reencrypt.c:3073 #, c-format msgid "" "Data shift (% sectors) is less than future data offset (% " "sectors)." msgstr "" -#: lib/luks2/luks2_reencrypt.c:3070 lib/luks2/luks2_reencrypt.c:3077 +#: lib/luks2/luks2_reencrypt.c:3088 lib/luks2/luks2_reencrypt.c:3095 msgid "Reduced data size is larger than real device size." msgstr "" -#: lib/luks2/luks2_reencrypt.c:3087 +#: lib/luks2/luks2_reencrypt.c:3105 #, c-format msgid "Data device is not aligned to encryption sector size (% bytes)." msgstr "" -#: lib/luks2/luks2_reencrypt.c:3117 lib/luks2/luks2_reencrypt.c:3632 -#: lib/luks2/luks2_reencrypt.c:3653 +#: lib/luks2/luks2_reencrypt.c:3135 lib/luks2/luks2_reencrypt.c:3653 +#: lib/luks2/luks2_reencrypt.c:3674 #, c-format msgid "Failed to open %s in exclusive mode (already mapped or mounted)." msgstr "" -#: lib/luks2/luks2_reencrypt.c:3324 +#: lib/luks2/luks2_reencrypt.c:3342 msgid "Device not marked for LUKS2 reencryption." msgstr "" -#: lib/luks2/luks2_reencrypt.c:3341 lib/luks2/luks2_reencrypt.c:4391 +#: lib/luks2/luks2_reencrypt.c:3359 lib/luks2/luks2_reencrypt.c:4518 msgid "Failed to load LUKS2 reencryption context." msgstr "" -#: lib/luks2/luks2_reencrypt.c:3433 lib/luks2/luks2_reencrypt.c:3773 +#: lib/luks2/luks2_reencrypt.c:3454 lib/luks2/luks2_reencrypt.c:3794 msgid "Device is not in reencryption." msgstr "" -#: lib/luks2/luks2_reencrypt.c:3440 lib/luks2/luks2_reencrypt.c:3780 +#: lib/luks2/luks2_reencrypt.c:3461 lib/luks2/luks2_reencrypt.c:3801 msgid "Reencryption process is already running." msgstr "" -#: lib/luks2/luks2_reencrypt.c:3442 lib/luks2/luks2_reencrypt.c:3782 +#: lib/luks2/luks2_reencrypt.c:3463 lib/luks2/luks2_reencrypt.c:3803 msgid "Failed to acquire reencryption lock." msgstr "" -#: lib/luks2/luks2_reencrypt.c:3460 +#: lib/luks2/luks2_reencrypt.c:3481 msgid "Cannot proceed with reencryption. Run reencryption recovery first." msgstr "" -#: lib/luks2/luks2_reencrypt.c:3596 +#: lib/luks2/luks2_reencrypt.c:3617 msgid "Active device size and requested reencryption size don't match." msgstr "" -#: lib/luks2/luks2_reencrypt.c:3610 +#: lib/luks2/luks2_reencrypt.c:3631 msgid "Illegal device size requested in reencryption parameters." msgstr "" -#: lib/luks2/luks2_reencrypt.c:3712 +#: lib/luks2/luks2_reencrypt.c:3733 msgid "Reencryption in-progress. Cannot perform recovery." msgstr "" -#: lib/luks2/luks2_reencrypt.c:3733 +#: lib/luks2/luks2_reencrypt.c:3754 msgid "LUKS2 reencryption recovery failed." msgstr "" -#: lib/luks2/luks2_reencrypt.c:3866 lib/luks2/luks2_reencrypt.c:4344 +#: lib/luks2/luks2_reencrypt.c:3887 lib/luks2/luks2_reencrypt.c:4471 msgid "Failed to initialize reencryption device stack." msgstr "" -#: lib/luks2/luks2_reencrypt.c:3899 +#: lib/luks2/luks2_reencrypt.c:3920 msgid "LUKS2 reencryption already initialized in metadata." msgstr "" -#: lib/luks2/luks2_reencrypt.c:3907 +#: lib/luks2/luks2_reencrypt.c:3928 msgid "Failed to initialize LUKS2 reencryption in metadata." msgstr "" -#: lib/luks2/luks2_reencrypt.c:3960 lib/luks2/luks2_reencrypt.c:3992 -#: lib/luks2/luks2_reencrypt.c:4022 +#: lib/luks2/luks2_reencrypt.c:3981 lib/luks2/luks2_reencrypt.c:4013 +#: lib/luks2/luks2_reencrypt.c:4043 msgid "Reencryption is not supported for DAX (persistent memory) devices." msgstr "" -#: lib/luks2/luks2_reencrypt.c:4051 +#: lib/luks2/luks2_reencrypt.c:4072 msgid "Failed to set device segments for next reencryption hotzone." msgstr "" -#: lib/luks2/luks2_reencrypt.c:4103 +#: lib/luks2/luks2_reencrypt.c:4130 msgid "Failed to write reencryption resilience metadata." msgstr "" -#: lib/luks2/luks2_reencrypt.c:4110 +#: lib/luks2/luks2_reencrypt.c:4142 msgid "Decryption failed." msgstr "" -#: lib/luks2/luks2_reencrypt.c:4115 +#: lib/luks2/luks2_reencrypt.c:4147 #, c-format msgid "Failed to write hotzone area starting at %." msgstr "" -#: lib/luks2/luks2_reencrypt.c:4120 +#: lib/luks2/luks2_reencrypt.c:4152 msgid "Failed to sync data." msgstr "" -#: lib/luks2/luks2_reencrypt.c:4128 +#: lib/luks2/luks2_reencrypt.c:4160 msgid "Failed to update metadata after current reencryption hotzone completed." msgstr "" -#: lib/luks2/luks2_reencrypt.c:4217 +#: lib/luks2/luks2_reencrypt.c:4245 +msgid "Do not resume the device unless replaced with error target manually." +msgstr "" + +#: lib/luks2/luks2_reencrypt.c:4329 msgid "Failed to write LUKS2 metadata." msgstr "" -#: lib/luks2/luks2_reencrypt.c:4240 +#: lib/luks2/luks2_reencrypt.c:4345 msgid "Failed to wipe unused data device area." msgstr "" -#: lib/luks2/luks2_reencrypt.c:4246 +#: lib/luks2/luks2_reencrypt.c:4351 #, c-format msgid "Failed to remove unused (unbound) keyslot %d." msgstr "" -#: lib/luks2/luks2_reencrypt.c:4256 +#: lib/luks2/luks2_reencrypt.c:4361 msgid "Failed to remove reencryption keyslot." msgstr "" -#: lib/luks2/luks2_reencrypt.c:4266 +#: lib/luks2/luks2_reencrypt.c:4394 #, c-format msgid "" "Fatal error while reencrypting chunk starting at %, % " "sectors long." msgstr "" -#: lib/luks2/luks2_reencrypt.c:4270 +#: lib/luks2/luks2_reencrypt.c:4398 msgid "Online reencryption failed." msgstr "" -#: lib/luks2/luks2_reencrypt.c:4275 -msgid "Do not resume the device unless replaced with error target manually." -msgstr "" - -#: lib/luks2/luks2_reencrypt.c:4327 +#: lib/luks2/luks2_reencrypt.c:4454 msgid "Cannot proceed with reencryption. Unexpected reencryption status." msgstr "" -#: lib/luks2/luks2_reencrypt.c:4333 +#: lib/luks2/luks2_reencrypt.c:4460 msgid "Missing or invalid reencrypt context." msgstr "" -#: lib/luks2/luks2_reencrypt.c:4367 lib/luks2/luks2_reencrypt.c:4404 +#: lib/luks2/luks2_reencrypt.c:4494 lib/luks2/luks2_reencrypt.c:4531 msgid "Failed to update reencryption context." msgstr "" -#: lib/luks2/luks2_reencrypt_digest.c:401 +#: lib/luks2/luks2_reencrypt_digest.c:402 msgid "Reencryption metadata is invalid." msgstr "" -#: lib/luks2/hw_opal/hw_opal.c:333 +#: lib/luks2/hw_opal/hw_opal.c:432 #, c-format msgid "" "OPAL range %d offset % does not match expected values %." msgstr "" -#: lib/luks2/hw_opal/hw_opal.c:340 +#: lib/luks2/hw_opal/hw_opal.c:439 #, c-format msgid "OPAL range %d length % does not match device length %." msgstr "" -#: lib/luks2/hw_opal/hw_opal.c:346 +#: lib/luks2/hw_opal/hw_opal.c:445 #, c-format msgid "OPAL range %d locking is disabled." msgstr "" -#: lib/luks2/hw_opal/hw_opal.c:356 lib/luks2/hw_opal/hw_opal.c:363 +#: lib/luks2/hw_opal/hw_opal.c:455 lib/luks2/hw_opal/hw_opal.c:462 #, c-format msgid "Unexpected OPAL range %d lock state." msgstr "" -#: src/cryptsetup.c:87 +#: lib/luks2/hw_opal/hw_opal.c:646 lib/luks2/hw_opal/hw_opal.c:948 +msgid "" +"The device declared support for OPAL Single User Mode (SUM) but behaved " +"unexpectedly." +msgstr "" + +#: lib/luks2/hw_opal/hw_opal.c:647 lib/luks2/hw_opal/hw_opal.c:949 +msgid "" +"Revert device to factory settings and try to format with --disable-sum " +"option." +msgstr "" + +#: lib/luks2/hw_opal/hw_opal.c:1096 +#, c-format +msgid "Device %s already activated for HW OPAL. Flag --disable-sum ignored." +msgstr "" + +#: src/cryptsetup.c:88 msgid "Keyslot encryption parameters can be set only for LUKS2 device." msgstr "" -#: src/cryptsetup.c:93 +#: src/cryptsetup.c:94 msgid "" "Keyslot encryption parameters are not compatible with LUKS2 keyslot " "encryption." msgstr "" -#: src/cryptsetup.c:150 src/cryptsetup.c:1171 src/cryptsetup.c:1538 +#: src/cryptsetup.c:151 src/cryptsetup.c:1182 src/cryptsetup.c:1560 #: src/utils_reencrypt.c:1887 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." msgstr "" -#: src/cryptsetup.c:160 +#: src/cryptsetup.c:161 #, c-format msgid "" "WARNING: Using default options for cipher (%s-%s, key size %u bits) that " "could be incompatible with older versions." msgstr "" -#: src/cryptsetup.c:165 +#: src/cryptsetup.c:166 #, c-format msgid "" "WARNING: Using default options for hash (%s) that could be incompatible with " "older versions." msgstr "" -#: src/cryptsetup.c:169 +#: src/cryptsetup.c:170 msgid "" "For plain mode, always use options --cipher, --key-size and if no keyfile or " "keyring is used, then also --hash." msgstr "" -#: src/cryptsetup.c:175 +#: src/cryptsetup.c:176 msgid "" "WARNING: The --hash parameter is being ignored in plain mode with keyfile " "specified.\n" msgstr "" -#: src/cryptsetup.c:189 +#: src/cryptsetup.c:190 msgid "" "WARNING: The --keyfile-size option is being ignored, the read size is the " "same as the encryption key size.\n" msgstr "" -#: src/cryptsetup.c:226 src/cryptsetup.c:1368 src/cryptsetup.c:1591 -#: src/integritysetup.c:188 src/utils_reencrypt.c:2137 +#: src/cryptsetup.c:227 src/cryptsetup.c:1377 src/cryptsetup.c:1613 +#: src/integritysetup.c:188 src/utils_reencrypt.c:2138 #, c-format msgid "Blkid scan failed for %s." msgstr "" -#: src/cryptsetup.c:232 +#: src/cryptsetup.c:233 #, c-format msgid "" "Detected device signature(s) on %s. Proceeding further may damage existing " "data." msgstr "" -#: src/cryptsetup.c:238 src/cryptsetup.c:1254 src/cryptsetup.c:1302 -#: src/cryptsetup.c:1375 src/cryptsetup.c:1515 src/cryptsetup.c:1603 -#: src/cryptsetup.c:2488 src/cryptsetup.c:2917 src/integritysetup.c:178 +#: src/cryptsetup.c:239 src/cryptsetup.c:1263 src/cryptsetup.c:1311 +#: src/cryptsetup.c:1384 src/cryptsetup.c:1537 src/cryptsetup.c:1625 +#: src/cryptsetup.c:2509 src/cryptsetup.c:2938 src/integritysetup.c:178 #: src/utils_reencrypt.c:111 src/utils_reencrypt.c:457 #: src/utils_reencrypt.c:925 msgid "Operation aborted.\n" msgstr "" -#: src/cryptsetup.c:323 +#: src/cryptsetup.c:324 msgid "Option --key-file is required." msgstr "" -#: src/cryptsetup.c:377 +#: src/cryptsetup.c:378 msgid "Enter VeraCrypt PIM: " msgstr "" -#: src/cryptsetup.c:386 +#: src/cryptsetup.c:387 msgid "Invalid PIM value: parse error." msgstr "" -#: src/cryptsetup.c:389 +#: src/cryptsetup.c:390 msgid "Invalid PIM value: 0." msgstr "" -#: src/cryptsetup.c:392 +#: src/cryptsetup.c:393 msgid "Invalid PIM value: outside of range." msgstr "" -#: src/cryptsetup.c:415 +#: src/cryptsetup.c:416 msgid "No device header detected with this passphrase." msgstr "" -#: src/cryptsetup.c:492 src/cryptsetup.c:668 +#: src/cryptsetup.c:493 src/cryptsetup.c:678 #, c-format msgid "Device %s is not a valid BITLK device." msgstr "" -#: src/cryptsetup.c:500 +#: src/cryptsetup.c:501 msgid "" "Cannot determine volume key size for BITLK, please use --key-size option." msgstr "" -#: src/cryptsetup.c:542 +#: src/cryptsetup.c:547 msgid "" "Header dump with volume key is sensitive information\n" "which allows access to encrypted partition without passphrase.\n" "This dump should be always stored encrypted on safe place." msgstr "" -#: src/cryptsetup.c:609 src/cryptsetup.c:690 src/cryptsetup.c:2513 +#: src/cryptsetup.c:614 src/cryptsetup.c:700 src/cryptsetup.c:2534 msgid "" "The header dump with volume key is sensitive information\n" "that allows access to encrypted partition without a passphrase.\n" "This dump should be stored encrypted in a safe place." msgstr "" -#: src/cryptsetup.c:745 src/cryptsetup.c:777 +#: src/cryptsetup.c:755 src/cryptsetup.c:787 #, c-format msgid "Device %s is not a valid FVAULT2 device." msgstr "" -#: src/cryptsetup.c:785 +#: src/cryptsetup.c:795 msgid "" "Cannot determine volume key size for FVAULT2, please use --key-size option." msgstr "" -#: src/cryptsetup.c:839 src/veritysetup.c:317 src/integritysetup.c:410 +#: src/cryptsetup.c:849 src/veritysetup.c:317 src/integritysetup.c:416 #, c-format msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "" -#: src/cryptsetup.c:872 src/cryptsetup.c:1801 src/cryptsetup.c:2075 -#: src/cryptsetup.c:2222 src/cryptsetup.c:2641 src/cryptsetup.c:2722 -#: src/cryptsetup.c:3255 +#: src/cryptsetup.c:882 src/cryptsetup.c:1822 src/cryptsetup.c:2096 +#: src/cryptsetup.c:2243 src/cryptsetup.c:2662 src/cryptsetup.c:2743 +#: src/cryptsetup.c:3276 #, c-format msgid "Failed to set external tokens path %s." msgstr "" -#: src/cryptsetup.c:881 +#: src/cryptsetup.c:891 msgid "" "Resize of active device requires volume key in keyring but --disable-keyring " "option is set." msgstr "" -#: src/cryptsetup.c:1050 +#: src/cryptsetup.c:1060 msgid "Benchmark interrupted." msgstr "" -#: src/cryptsetup.c:1071 +#: src/cryptsetup.c:1081 #, c-format msgid "PBKDF2-%-9s N/A\n" msgstr "" -#: src/cryptsetup.c:1073 +#: src/cryptsetup.c:1083 #, c-format msgid "PBKDF2-%-9s %7u iterations per second for %zu-bit key\n" msgstr "" -#: src/cryptsetup.c:1087 +#: src/cryptsetup.c:1097 #, c-format msgid "%-10s N/A\n" msgstr "" -#: src/cryptsetup.c:1089 +#: src/cryptsetup.c:1099 #, c-format msgid "" "%-10s %4u iterations, %5u memory, %1u parallel threads (CPUs) for %zu-bit " "key (requested %u ms time)\n" msgstr "" -#: src/cryptsetup.c:1113 +#: src/cryptsetup.c:1123 msgid "Result of benchmark is not reliable." msgstr "" -#: src/cryptsetup.c:1163 +#: src/cryptsetup.c:1174 msgid "# Tests are approximate using memory only (no storage IO).\n" msgstr "" #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1188 +#: src/cryptsetup.c:1199 #, c-format msgid "#%*s Algorithm | Key | Encryption | Decryption\n" msgstr "" -#: src/cryptsetup.c:1196 +#: src/cryptsetup.c:1207 #, c-format msgid "Cipher %s (with %i bits key) is not available." msgstr "" #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1215 +#: src/cryptsetup.c:1228 msgid "# Algorithm | Key | Encryption | Decryption\n" msgstr "" -#: src/cryptsetup.c:1226 +#: src/cryptsetup.c:1241 msgid "N/A" msgstr "" -#: src/cryptsetup.c:1251 +#: src/cryptsetup.c:1244 +msgid "# Cipher speed test is not available.\n" +msgstr "" + +#: src/cryptsetup.c:1260 msgid "" "Unprotected LUKS2 reencryption metadata detected. Please verify the " "reencryption operation is desirable (see luksDump output)\n" @@ -2379,653 +2422,657 @@ msgid "" "genuine." msgstr "" -#: src/cryptsetup.c:1257 +#: src/cryptsetup.c:1266 msgid "Enter passphrase to protect and upgrade reencryption metadata: " msgstr "" -#: src/cryptsetup.c:1301 +#: src/cryptsetup.c:1310 msgid "Really proceed with LUKS2 reencryption recovery?" msgstr "" -#: src/cryptsetup.c:1310 +#: src/cryptsetup.c:1319 msgid "Enter passphrase to verify reencryption metadata digest: " msgstr "" -#: src/cryptsetup.c:1312 +#: src/cryptsetup.c:1321 msgid "Enter passphrase for reencryption recovery: " msgstr "" -#: src/cryptsetup.c:1374 +#: src/cryptsetup.c:1383 msgid "Really try to repair LUKS device header?" msgstr "" -#: src/cryptsetup.c:1402 src/integritysetup.c:76 src/integritysetup.c:244 +#: src/cryptsetup.c:1411 src/integritysetup.c:76 src/integritysetup.c:244 msgid "" "\n" "Wipe interrupted." msgstr "" -#: src/cryptsetup.c:1407 src/integritysetup.c:81 src/integritysetup.c:283 +#: src/cryptsetup.c:1416 src/integritysetup.c:81 src/integritysetup.c:289 msgid "" "Wiping device to initialize integrity checksum.\n" "You can interrupt this by pressing CTRL+c (rest of not wiped device will " "contain invalid checksum).\n" msgstr "" -#: src/cryptsetup.c:1429 src/integritysetup.c:103 +#: src/cryptsetup.c:1438 src/integritysetup.c:103 #, c-format msgid "Cannot deactivate temporary device %s." msgstr "" -#: src/cryptsetup.c:1477 +#: src/cryptsetup.c:1499 msgid "" "OPAL hw-only encryption does not support --cipher and --key-size, options " "ignored." msgstr "" -#: src/cryptsetup.c:1490 +#: src/cryptsetup.c:1512 msgid "Integrity option can be used only for LUKS2 format." msgstr "" -#: src/cryptsetup.c:1495 src/cryptsetup.c:1575 +#: src/cryptsetup.c:1517 src/cryptsetup.c:1597 msgid "Unsupported LUKS2 metadata size options." msgstr "" -#: src/cryptsetup.c:1500 +#: src/cryptsetup.c:1522 msgid "OPAL is supported only for LUKS2 format." msgstr "" -#: src/cryptsetup.c:1505 +#: src/cryptsetup.c:1527 msgid "Inline hw tags are supported only for LUKS2 format." msgstr "" -#: src/cryptsetup.c:1514 +#: src/cryptsetup.c:1536 msgid "Header file does not exist, do you want to create it?" msgstr "" -#: src/cryptsetup.c:1522 +#: src/cryptsetup.c:1544 #, c-format msgid "Cannot create header file %s." msgstr "" -#: src/cryptsetup.c:1548 src/integritysetup.c:126 src/integritysetup.c:141 -#: src/integritysetup.c:150 src/integritysetup.c:322 src/integritysetup.c:330 -#: src/integritysetup.c:340 +#: src/cryptsetup.c:1570 src/integritysetup.c:126 src/integritysetup.c:141 +#: src/integritysetup.c:150 src/integritysetup.c:328 src/integritysetup.c:336 +#: src/integritysetup.c:346 msgid "No known integrity specification pattern detected." msgstr "" -#: src/cryptsetup.c:1550 +#: src/cryptsetup.c:1572 msgid "Cannot use specified integrity key size." msgstr "" -#: src/cryptsetup.c:1568 +#: src/cryptsetup.c:1590 #, c-format msgid "Cannot use %s as on-disk header." msgstr "" -#: src/cryptsetup.c:1597 src/integritysetup.c:172 +#: src/cryptsetup.c:1619 src/integritysetup.c:172 #, c-format msgid "This will overwrite data on %s irrevocably." msgstr "" -#: src/cryptsetup.c:1634 +#: src/cryptsetup.c:1656 msgid "OPAL Admin password cannot be empty." msgstr "" -#: src/cryptsetup.c:1648 src/cryptsetup.c:2092 src/cryptsetup.c:2235 -#: src/cryptsetup.c:2370 src/cryptsetup.c:2436 src/utils_reencrypt_luks1.c:428 +#: src/cryptsetup.c:1670 src/cryptsetup.c:2113 src/cryptsetup.c:2256 +#: src/cryptsetup.c:2391 src/cryptsetup.c:2457 src/utils_reencrypt_luks1.c:428 msgid "Failed to set pbkdf parameters." msgstr "" -#: src/cryptsetup.c:1779 +#: src/cryptsetup.c:1800 msgid "Reduced data offset is allowed only for detached LUKS header." msgstr "" -#: src/cryptsetup.c:1786 +#: src/cryptsetup.c:1807 #, c-format msgid "" "LUKS file container %s is too small for activation, there is no remaining " "space for data." msgstr "" -#: src/cryptsetup.c:1828 src/cryptsetup.c:2241 src/utils_reencrypt.c:277 +#: src/cryptsetup.c:1849 src/cryptsetup.c:2262 src/utils_reencrypt.c:277 #: src/utils_reencrypt.c:369 src/utils_reencrypt.c:1907 msgid "" "Cannot determine volume key size for LUKS without keyslots, please use --key-" "size option." msgstr "" -#: src/cryptsetup.c:1847 src/utils_reencrypt.c:303 +#: src/cryptsetup.c:1868 src/utils_reencrypt.c:303 msgid "Device requires two volume keys." msgstr "" -#: src/cryptsetup.c:1882 +#: src/cryptsetup.c:1903 msgid "" "Some specified activation parameters were ignored with OPAL hw-only " "encryption." msgstr "" -#: src/cryptsetup.c:1887 +#: src/cryptsetup.c:1908 msgid "Device activated but cannot make flags persistent." msgstr "" -#: src/cryptsetup.c:1967 src/cryptsetup.c:2035 +#: src/cryptsetup.c:1988 src/cryptsetup.c:2056 #, c-format msgid "Keyslot %d is selected for deletion." msgstr "" -#: src/cryptsetup.c:1979 src/cryptsetup.c:2039 +#: src/cryptsetup.c:2000 src/cryptsetup.c:2060 msgid "" "This is the last keyslot. Device will become unusable after purging this key." msgstr "" -#: src/cryptsetup.c:1980 +#: src/cryptsetup.c:2001 msgid "Enter any remaining passphrase: " msgstr "" -#: src/cryptsetup.c:1981 src/cryptsetup.c:2041 +#: src/cryptsetup.c:2002 src/cryptsetup.c:2062 msgid "Operation aborted, the keyslot was NOT wiped.\n" msgstr "" -#: src/cryptsetup.c:2017 +#: src/cryptsetup.c:2038 msgid "Enter passphrase to be deleted: " msgstr "" -#: src/cryptsetup.c:2067 src/cryptsetup.c:2419 src/cryptsetup.c:3079 -#: src/cryptsetup.c:3246 +#: src/cryptsetup.c:2088 src/cryptsetup.c:2440 src/cryptsetup.c:3100 +#: src/cryptsetup.c:3267 #, c-format msgid "Device %s is not a valid LUKS2 device." msgstr "" -#: src/cryptsetup.c:2106 src/cryptsetup.c:2305 +#: src/cryptsetup.c:2127 src/cryptsetup.c:2326 msgid "Enter new passphrase for key slot: " msgstr "" -#: src/cryptsetup.c:2140 src/utils_luks.c:342 +#: src/cryptsetup.c:2161 src/utils_luks.c:342 #, c-format msgid "Enter token PIN: " msgstr "" -#: src/cryptsetup.c:2142 src/utils_luks.c:344 +#: src/cryptsetup.c:2163 src/utils_luks.c:344 #, c-format msgid "Enter token %d PIN: " msgstr "" -#: src/cryptsetup.c:2201 +#: src/cryptsetup.c:2222 msgid "WARNING: The --key-slot parameter is used for new keyslot number.\n" msgstr "" -#: src/cryptsetup.c:2278 src/utils_reencrypt_luks1.c:1094 +#: src/cryptsetup.c:2299 src/utils_reencrypt_luks1.c:1097 #, c-format msgid "Enter any existing passphrase: " msgstr "" -#: src/cryptsetup.c:2374 +#: src/cryptsetup.c:2395 msgid "Enter passphrase to be changed: " msgstr "" -#: src/cryptsetup.c:2390 src/utils_reencrypt_luks1.c:1080 +#: src/cryptsetup.c:2411 src/utils_reencrypt_luks1.c:1083 msgid "Enter new passphrase: " msgstr "" -#: src/cryptsetup.c:2440 +#: src/cryptsetup.c:2461 msgid "Enter passphrase for keyslot to be converted: " msgstr "" -#: src/cryptsetup.c:2464 +#: src/cryptsetup.c:2485 msgid "Only one device argument for isLuks operation is supported." msgstr "" -#: src/cryptsetup.c:2569 +#: src/cryptsetup.c:2590 #, c-format msgid "Keyslot %d does not contain unbound key." msgstr "" -#: src/cryptsetup.c:2574 +#: src/cryptsetup.c:2595 msgid "" "The header dump with unbound key is sensitive information.\n" "This dump should be stored encrypted in a safe place." msgstr "" -#: src/cryptsetup.c:2669 src/cryptsetup.c:2705 +#: src/cryptsetup.c:2690 src/cryptsetup.c:2726 #, c-format msgid "%s is not active %s device name." msgstr "" -#: src/cryptsetup.c:2700 +#: src/cryptsetup.c:2721 #, c-format msgid "%s is not active LUKS device name or header is missing." msgstr "" -#: src/cryptsetup.c:2777 src/cryptsetup.c:2796 +#: src/cryptsetup.c:2798 src/cryptsetup.c:2817 msgid "Option --header-backup-file is required." msgstr "" -#: src/cryptsetup.c:2827 +#: src/cryptsetup.c:2848 #, c-format msgid "%s is not cryptsetup managed device." msgstr "" -#: src/cryptsetup.c:2838 +#: src/cryptsetup.c:2859 #, c-format msgid "Refresh is not supported for device type %s" msgstr "" -#: src/cryptsetup.c:2888 +#: src/cryptsetup.c:2909 #, c-format msgid "Unrecognized metadata device type %s." msgstr "" -#: src/cryptsetup.c:2890 +#: src/cryptsetup.c:2911 msgid "Command requires device and mapped name as arguments." msgstr "" -#: src/cryptsetup.c:2908 +#: src/cryptsetup.c:2929 msgid "Enter OPAL PSID: " msgstr "" -#: src/cryptsetup.c:2908 +#: src/cryptsetup.c:2929 msgid "Enter OPAL Admin password: " msgstr "" -#: src/cryptsetup.c:2916 +#: src/cryptsetup.c:2937 msgid "" "WARNING: WHOLE disk will be factory reset and all data will be lost! " "Continue?" msgstr "" -#: src/cryptsetup.c:2959 +#: src/cryptsetup.c:2980 #, c-format msgid "" "This operation will erase all keyslots on device %s.\n" "Device will become unusable after this operation." msgstr "" -#: src/cryptsetup.c:2966 +#: src/cryptsetup.c:2987 msgid "Operation aborted, keyslots were NOT wiped.\n" msgstr "" -#: src/cryptsetup.c:3005 +#: src/cryptsetup.c:3026 msgid "Invalid LUKS type, only luks1 and luks2 are supported." msgstr "" -#: src/cryptsetup.c:3021 +#: src/cryptsetup.c:3042 #, c-format msgid "Device is already %s type." msgstr "" -#: src/cryptsetup.c:3028 +#: src/cryptsetup.c:3049 #, c-format msgid "This operation will convert %s to %s format.\n" msgstr "" -#: src/cryptsetup.c:3031 +#: src/cryptsetup.c:3052 msgid "Operation aborted, device was NOT converted.\n" msgstr "" -#: src/cryptsetup.c:3071 +#: src/cryptsetup.c:3092 msgid "Option --priority, --label or --subsystem is missing." msgstr "" -#: src/cryptsetup.c:3105 src/cryptsetup.c:3145 src/cryptsetup.c:3165 +#: src/cryptsetup.c:3126 src/cryptsetup.c:3166 src/cryptsetup.c:3186 #, c-format msgid "Token %d is invalid." msgstr "" -#: src/cryptsetup.c:3108 src/cryptsetup.c:3168 +#: src/cryptsetup.c:3129 src/cryptsetup.c:3189 #, c-format msgid "Token %d in use." msgstr "" -#: src/cryptsetup.c:3120 +#: src/cryptsetup.c:3141 #, c-format msgid "Failed to add luks2-keyring token %d." msgstr "" -#: src/cryptsetup.c:3131 src/cryptsetup.c:3194 +#: src/cryptsetup.c:3152 src/cryptsetup.c:3215 #, c-format msgid "Failed to assign token %d to keyslot %d." msgstr "" -#: src/cryptsetup.c:3148 +#: src/cryptsetup.c:3169 #, c-format msgid "Token %d is not in use." msgstr "" -#: src/cryptsetup.c:3185 +#: src/cryptsetup.c:3206 msgid "Failed to import token from file." msgstr "" -#: src/cryptsetup.c:3210 +#: src/cryptsetup.c:3231 #, c-format msgid "Failed to get token %d for export." msgstr "" -#: src/cryptsetup.c:3223 +#: src/cryptsetup.c:3244 #, c-format msgid "Token %d is not assigned to keyslot %d." msgstr "" -#: src/cryptsetup.c:3225 src/cryptsetup.c:3232 +#: src/cryptsetup.c:3246 src/cryptsetup.c:3253 #, c-format msgid "Failed to unassign token %d from keyslot %d." msgstr "" -#: src/cryptsetup.c:3291 +#: src/cryptsetup.c:3312 msgid "" "Option --tcrypt-hidden, --tcrypt-system or --tcrypt-backup is supported only " "for TCRYPT device." msgstr "" -#: src/cryptsetup.c:3294 +#: src/cryptsetup.c:3315 msgid "" "Option --veracrypt or --disable-veracrypt is supported only for TCRYPT " "device type." msgstr "" -#: src/cryptsetup.c:3297 +#: src/cryptsetup.c:3318 msgid "" "Option --veracrypt-pim is supported only for VeraCrypt compatible devices." msgstr "" -#: src/cryptsetup.c:3301 +#: src/cryptsetup.c:3322 msgid "" "Option --veracrypt-query-pim is supported only for VeraCrypt compatible " "devices." msgstr "" -#: src/cryptsetup.c:3303 +#: src/cryptsetup.c:3324 msgid "" "The options --veracrypt-pim and --veracrypt-query-pim are mutually exclusive." msgstr "" -#: src/cryptsetup.c:3312 +#: src/cryptsetup.c:3333 msgid "Option --persistent is not allowed with --test-passphrase." msgstr "" -#: src/cryptsetup.c:3315 +#: src/cryptsetup.c:3336 msgid "Options --refresh and --test-passphrase are mutually exclusive." msgstr "" -#: src/cryptsetup.c:3318 +#: src/cryptsetup.c:3339 msgid "Option --shared is allowed only for open of plain device." msgstr "" -#: src/cryptsetup.c:3321 +#: src/cryptsetup.c:3342 msgid "Option --skip is supported only for open of plain and loopaes devices." msgstr "" -#: src/cryptsetup.c:3324 +#: src/cryptsetup.c:3345 msgid "" "Option --offset with open action is only supported for plain and loopaes " "devices." msgstr "" -#: src/cryptsetup.c:3327 +#: src/cryptsetup.c:3348 msgid "Option --tcrypt-hidden cannot be combined with --allow-discards." msgstr "" -#: src/cryptsetup.c:3331 +#: src/cryptsetup.c:3352 msgid "" "Sector size option with open action is supported only for plain devices." msgstr "" -#: src/cryptsetup.c:3335 +#: src/cryptsetup.c:3356 msgid "" "Large IV sectors option is supported only for opening plain type device with " "sector size larger than 512 bytes." msgstr "" -#: src/cryptsetup.c:3340 +#: src/cryptsetup.c:3361 msgid "" "Option --test-passphrase is allowed only for open of LUKS, TCRYPT, BITLK and " "FVAULT2 devices." msgstr "" -#: src/cryptsetup.c:3343 src/cryptsetup.c:3373 +#: src/cryptsetup.c:3364 src/cryptsetup.c:3394 msgid "Options --device-size and --size cannot be combined." msgstr "" -#: src/cryptsetup.c:3346 +#: src/cryptsetup.c:3367 msgid "Option --unbound is allowed only for open of luks device." msgstr "" -#: src/cryptsetup.c:3349 +#: src/cryptsetup.c:3370 msgid "Option --unbound cannot be used without --test-passphrase." msgstr "" -#: src/cryptsetup.c:3353 +#: src/cryptsetup.c:3374 msgid "" "Option --volume-key-keyring cannot be combined with --hash or --volume-key-" "file." msgstr "" -#: src/cryptsetup.c:3356 +#: src/cryptsetup.c:3377 msgid "" "Both --volume-key-file options must be paired with respective --key-size " "options." msgstr "" -#: src/cryptsetup.c:3365 src/veritysetup.c:673 src/integritysetup.c:784 +#: src/cryptsetup.c:3386 src/veritysetup.c:676 src/integritysetup.c:787 msgid "" "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "" -#: src/cryptsetup.c:3381 +#: src/cryptsetup.c:3402 msgid "Option --active-name can be set only for LUKS2 device." msgstr "" -#: src/cryptsetup.c:3384 +#: src/cryptsetup.c:3405 msgid "Options --active-name and --force-offline-reencrypt cannot be combined." msgstr "" -#: src/cryptsetup.c:3387 +#: src/cryptsetup.c:3408 msgid "Options --new-volume-key-file and --keep-key cannot be combined." msgstr "" -#: src/cryptsetup.c:3390 +#: src/cryptsetup.c:3411 msgid "Options --new-volume-key-keyring and --keep-key cannot be combined." msgstr "" -#: src/cryptsetup.c:3398 src/cryptsetup.c:3428 +#: src/cryptsetup.c:3419 src/cryptsetup.c:3452 msgid "Keyslot specification is required." msgstr "" -#: src/cryptsetup.c:3406 +#: src/cryptsetup.c:3427 msgid "Options --align-payload and --offset cannot be combined." msgstr "" -#: src/cryptsetup.c:3409 +#: src/cryptsetup.c:3430 msgid "" "Option --integrity-no-wipe can be used only for format action with integrity " "extension." msgstr "" -#: src/cryptsetup.c:3412 +#: src/cryptsetup.c:3433 msgid "Only one of --use-[u]random options is allowed." msgstr "" -#: src/cryptsetup.c:3420 +#: src/cryptsetup.c:3436 +msgid "Option --disable-sum must be used with --hw-opal or --hw-opal-only" +msgstr "" + +#: src/cryptsetup.c:3444 msgid "Key size is required with --unbound option." msgstr "" -#: src/cryptsetup.c:3440 +#: src/cryptsetup.c:3464 msgid "Invalid token action." msgstr "" -#: src/cryptsetup.c:3443 +#: src/cryptsetup.c:3467 msgid "--key-description parameter is mandatory for token add action." msgstr "" -#: src/cryptsetup.c:3447 src/cryptsetup.c:3460 +#: src/cryptsetup.c:3471 src/cryptsetup.c:3484 msgid "Action requires specific token. Use --token-id parameter." msgstr "" -#: src/cryptsetup.c:3451 +#: src/cryptsetup.c:3475 msgid "Option --unbound is valid only with token add action." msgstr "" -#: src/cryptsetup.c:3453 +#: src/cryptsetup.c:3477 msgid "Options --key-slot and --unbound cannot be combined." msgstr "" -#: src/cryptsetup.c:3458 +#: src/cryptsetup.c:3482 msgid "Action requires specific keyslot. Use --key-slot parameter." msgstr "" -#: src/cryptsetup.c:3474 +#: src/cryptsetup.c:3498 msgid " [--type ] []" msgstr "" -#: src/cryptsetup.c:3474 src/veritysetup.c:487 src/integritysetup.c:551 +#: src/cryptsetup.c:3498 src/veritysetup.c:490 src/integritysetup.c:554 msgid "open device as " msgstr "" -#: src/cryptsetup.c:3475 src/cryptsetup.c:3476 src/cryptsetup.c:3477 -#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:552 -#: src/integritysetup.c:553 src/integritysetup.c:555 +#: src/cryptsetup.c:3499 src/cryptsetup.c:3500 src/cryptsetup.c:3501 +#: src/veritysetup.c:491 src/veritysetup.c:492 src/integritysetup.c:555 +#: src/integritysetup.c:556 src/integritysetup.c:558 msgid "" msgstr "" -#: src/cryptsetup.c:3475 src/veritysetup.c:488 src/integritysetup.c:552 +#: src/cryptsetup.c:3499 src/veritysetup.c:491 src/integritysetup.c:555 msgid "close device (remove mapping)" msgstr "" -#: src/cryptsetup.c:3476 src/integritysetup.c:555 +#: src/cryptsetup.c:3500 src/integritysetup.c:558 msgid "resize active device" msgstr "" -#: src/cryptsetup.c:3477 +#: src/cryptsetup.c:3501 msgid "show device status" msgstr "" -#: src/cryptsetup.c:3478 +#: src/cryptsetup.c:3502 msgid "[--cipher ]" msgstr "" -#: src/cryptsetup.c:3478 +#: src/cryptsetup.c:3502 msgid "benchmark cipher" msgstr "" -#: src/cryptsetup.c:3479 src/cryptsetup.c:3480 src/cryptsetup.c:3481 -#: src/cryptsetup.c:3482 src/cryptsetup.c:3483 src/cryptsetup.c:3490 -#: src/cryptsetup.c:3491 src/cryptsetup.c:3492 src/cryptsetup.c:3493 -#: src/cryptsetup.c:3494 src/cryptsetup.c:3495 src/cryptsetup.c:3496 -#: src/cryptsetup.c:3497 src/cryptsetup.c:3498 src/cryptsetup.c:3499 +#: src/cryptsetup.c:3503 src/cryptsetup.c:3504 src/cryptsetup.c:3505 +#: src/cryptsetup.c:3506 src/cryptsetup.c:3507 src/cryptsetup.c:3514 +#: src/cryptsetup.c:3515 src/cryptsetup.c:3516 src/cryptsetup.c:3517 +#: src/cryptsetup.c:3518 src/cryptsetup.c:3519 src/cryptsetup.c:3520 +#: src/cryptsetup.c:3521 src/cryptsetup.c:3522 src/cryptsetup.c:3523 msgid "" msgstr "" -#: src/cryptsetup.c:3479 +#: src/cryptsetup.c:3503 msgid "try to repair on-disk metadata" msgstr "" -#: src/cryptsetup.c:3480 +#: src/cryptsetup.c:3504 msgid "reencrypt LUKS2 device" msgstr "" -#: src/cryptsetup.c:3481 +#: src/cryptsetup.c:3505 msgid "erase all keyslots (remove encryption key)" msgstr "" -#: src/cryptsetup.c:3482 +#: src/cryptsetup.c:3506 msgid "convert LUKS from/to LUKS2 format" msgstr "" -#: src/cryptsetup.c:3483 +#: src/cryptsetup.c:3507 msgid "set permanent configuration options for LUKS2" msgstr "" -#: src/cryptsetup.c:3484 src/cryptsetup.c:3485 +#: src/cryptsetup.c:3508 src/cryptsetup.c:3509 msgid " []" msgstr "" -#: src/cryptsetup.c:3484 +#: src/cryptsetup.c:3508 msgid "formats a LUKS device" msgstr "" -#: src/cryptsetup.c:3485 +#: src/cryptsetup.c:3509 msgid "add key to LUKS device" msgstr "" -#: src/cryptsetup.c:3486 src/cryptsetup.c:3487 src/cryptsetup.c:3488 +#: src/cryptsetup.c:3510 src/cryptsetup.c:3511 src/cryptsetup.c:3512 msgid " []" msgstr "" -#: src/cryptsetup.c:3486 +#: src/cryptsetup.c:3510 msgid "removes supplied key or key file from LUKS device" msgstr "" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3511 msgid "changes supplied key or key file of LUKS device" msgstr "" -#: src/cryptsetup.c:3488 +#: src/cryptsetup.c:3512 msgid "converts a key to new pbkdf parameters" msgstr "" -#: src/cryptsetup.c:3489 +#: src/cryptsetup.c:3513 msgid " " msgstr "" -#: src/cryptsetup.c:3489 +#: src/cryptsetup.c:3513 msgid "wipes key with number from LUKS device" msgstr "" -#: src/cryptsetup.c:3490 +#: src/cryptsetup.c:3514 msgid "print UUID of LUKS device" msgstr "" -#: src/cryptsetup.c:3491 +#: src/cryptsetup.c:3515 msgid "tests for LUKS partition header" msgstr "" -#: src/cryptsetup.c:3492 +#: src/cryptsetup.c:3516 msgid "dump LUKS partition information" msgstr "" -#: src/cryptsetup.c:3493 +#: src/cryptsetup.c:3517 msgid "dump TCRYPT device information" msgstr "" -#: src/cryptsetup.c:3494 +#: src/cryptsetup.c:3518 msgid "dump BITLK device information" msgstr "" -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3519 msgid "dump FVAULT2 device information" msgstr "" -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3520 msgid "Suspend LUKS device and wipe key (all IOs are frozen)" msgstr "" -#: src/cryptsetup.c:3497 +#: src/cryptsetup.c:3521 msgid "Resume suspended LUKS device" msgstr "" -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3522 msgid "Backup LUKS device header and keyslots" msgstr "" -#: src/cryptsetup.c:3499 +#: src/cryptsetup.c:3523 msgid "Restore LUKS device header and keyslots" msgstr "" -#: src/cryptsetup.c:3500 +#: src/cryptsetup.c:3524 msgid " " msgstr "" -#: src/cryptsetup.c:3500 +#: src/cryptsetup.c:3524 msgid "Manipulate LUKS2 tokens" msgstr "" -#: src/cryptsetup.c:3519 src/veritysetup.c:505 src/integritysetup.c:570 +#: src/cryptsetup.c:3545 src/veritysetup.c:508 src/integritysetup.c:573 msgid "" "\n" " is one of:\n" msgstr "" -#: src/cryptsetup.c:3525 +#: src/cryptsetup.c:3551 msgid "" "\n" "You can also use old syntax aliases:\n" @@ -3035,7 +3082,7 @@ msgid "" "bitlkClose, fvault2Close\n" msgstr "" -#: src/cryptsetup.c:3529 +#: src/cryptsetup.c:3555 #, c-format msgid "" "\n" @@ -3045,31 +3092,31 @@ msgid "" " optional key file for the new key for luksAddKey action\n" msgstr "" -#: src/cryptsetup.c:3536 +#: src/cryptsetup.c:3562 #, c-format msgid "" "\n" "Default compiled-in metadata format is %s (for luksFormat action).\n" msgstr "" -#: src/cryptsetup.c:3541 +#: src/cryptsetup.c:3567 msgid "" "\n" "LUKS2 external token plugin support is enabled.\n" msgstr "" -#: src/cryptsetup.c:3542 +#: src/cryptsetup.c:3568 #, c-format msgid "LUKS2 external token plugin path: %s.\n" msgstr "" -#: src/cryptsetup.c:3544 +#: src/cryptsetup.c:3570 msgid "" "\n" "LUKS2 external token plugin support is disabled.\n" msgstr "" -#: src/cryptsetup.c:3548 +#: src/cryptsetup.c:3574 #, c-format msgid "" "\n" @@ -3081,135 +3128,135 @@ msgid "" "\tIteration time: %d, Memory required: %dkB, Parallel threads: %d\n" msgstr "" -#: src/cryptsetup.c:3559 +#: src/cryptsetup.c:3587 #, c-format msgid "" "\n" "Default compiled-in device cipher parameters:\n" "\tloop-AES: %s, Key %d bits\n" "\tplain: %s, Key: %d bits, Password hashing: %s\n" -"\tLUKS: %s, Key: %d bits, LUKS header hashing: %s, RNG: %s\n" +"\tLUKS: %s-%s, Key: %d bits, LUKS header hashing: %s, RNG: %s\n" msgstr "" -#: src/cryptsetup.c:3568 +#: src/cryptsetup.c:3596 msgid "" "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "" -#: src/cryptsetup.c:3586 src/veritysetup.c:647 src/integritysetup.c:730 +#: src/cryptsetup.c:3614 src/veritysetup.c:650 src/integritysetup.c:733 #, c-format msgid "%s: requires %s as arguments" msgstr "" -#: src/cryptsetup.c:3626 src/utils_reencrypt_luks1.c:1143 +#: src/cryptsetup.c:3654 src/utils_reencrypt_luks1.c:1146 msgid "Key slot is invalid." msgstr "" -#: src/cryptsetup.c:3654 +#: src/cryptsetup.c:3682 msgid "Device size must be multiple of 512 bytes sector." msgstr "" -#: src/cryptsetup.c:3659 +#: src/cryptsetup.c:3687 msgid "Invalid max reencryption hotzone size specification." msgstr "" -#: src/cryptsetup.c:3673 src/cryptsetup.c:3690 src/cryptsetup.c:3702 +#: src/cryptsetup.c:3701 src/cryptsetup.c:3718 src/cryptsetup.c:3730 msgid "Key size must be a multiple of 8 bits" msgstr "" -#: src/cryptsetup.c:3680 +#: src/cryptsetup.c:3708 msgid "At most 2 key size specifications can be supplied." msgstr "" -#: src/cryptsetup.c:3709 src/cryptsetup.c:3720 +#: src/cryptsetup.c:3737 src/cryptsetup.c:3748 #, c-format msgid "At most %d volume key specifications can be supplied." msgstr "" -#: src/cryptsetup.c:3732 +#: src/cryptsetup.c:3760 #, c-format msgid "At most %d keyring link specifications can be supplied." msgstr "" -#: src/cryptsetup.c:3741 +#: src/cryptsetup.c:3769 msgid "Maximum device reduce size is 1 GiB." msgstr "" -#: src/cryptsetup.c:3744 +#: src/cryptsetup.c:3772 msgid "Reduce size must be multiple of 512 bytes sector." msgstr "" -#: src/cryptsetup.c:3761 +#: src/cryptsetup.c:3789 msgid "Option --priority can be only ignore/normal/prefer." msgstr "" -#: src/cryptsetup.c:3780 src/veritysetup.c:568 src/integritysetup.c:650 +#: src/cryptsetup.c:3808 src/veritysetup.c:571 src/integritysetup.c:653 msgid "Show this help message" msgstr "" -#: src/cryptsetup.c:3781 src/veritysetup.c:569 src/integritysetup.c:651 +#: src/cryptsetup.c:3809 src/veritysetup.c:572 src/integritysetup.c:654 msgid "Display brief usage" msgstr "" -#: src/cryptsetup.c:3782 src/veritysetup.c:570 src/integritysetup.c:652 +#: src/cryptsetup.c:3810 src/veritysetup.c:573 src/integritysetup.c:655 msgid "Print package version" msgstr "" -#: src/cryptsetup.c:3793 src/veritysetup.c:581 src/integritysetup.c:663 +#: src/cryptsetup.c:3821 src/veritysetup.c:584 src/integritysetup.c:666 msgid "Help options:" msgstr "" -#: src/cryptsetup.c:3816 src/veritysetup.c:602 src/integritysetup.c:683 +#: src/cryptsetup.c:3844 src/veritysetup.c:605 src/integritysetup.c:686 msgid "[OPTION...] " msgstr "" -#: src/cryptsetup.c:3825 src/veritysetup.c:611 src/integritysetup.c:694 +#: src/cryptsetup.c:3853 src/veritysetup.c:614 src/integritysetup.c:697 msgid "Argument missing." msgstr "" -#: src/cryptsetup.c:3904 src/veritysetup.c:642 src/integritysetup.c:725 +#: src/cryptsetup.c:3932 src/veritysetup.c:645 src/integritysetup.c:728 msgid "Unknown action." msgstr "" -#: src/cryptsetup.c:3922 +#: src/cryptsetup.c:3950 msgid "Option --key-file takes precedence over specified key file argument." msgstr "" -#: src/cryptsetup.c:3928 +#: src/cryptsetup.c:3956 msgid "Only one --key-file argument is allowed." msgstr "" -#: src/cryptsetup.c:3933 +#: src/cryptsetup.c:3961 msgid "" "Password-based key derivation function (PBKDF) can be only pbkdf2 or argon2i/" "argon2id." msgstr "" -#: src/cryptsetup.c:3938 +#: src/cryptsetup.c:3966 msgid "PBKDF forced iterations cannot be combined with iteration time option." msgstr "" -#: src/cryptsetup.c:3943 +#: src/cryptsetup.c:3971 msgid "Cannot link volume key to a keyring when keyring is disabled." msgstr "" -#: src/cryptsetup.c:3948 +#: src/cryptsetup.c:3976 msgid "Cannot use keyring key description when keyring is disabled." msgstr "" -#: src/cryptsetup.c:3953 +#: src/cryptsetup.c:3981 msgid "Inline integrity must be used together with --integrity option." msgstr "" -#: src/cryptsetup.c:3964 +#: src/cryptsetup.c:3992 msgid "Options --keyslot-cipher and --keyslot-key-size must be used together." msgstr "" -#: src/cryptsetup.c:3972 +#: src/cryptsetup.c:4000 msgid "No action taken. Invoked with --test-args option.\n" msgstr "" -#: src/cryptsetup.c:3985 +#: src/cryptsetup.c:4013 msgid "Cannot disable metadata locking." msgstr "" @@ -3237,7 +3284,7 @@ msgstr "" msgid "Cannot write to root hash file %s." msgstr "" -#: src/veritysetup.c:189 src/veritysetup.c:472 +#: src/veritysetup.c:189 src/veritysetup.c:475 #, c-format msgid "Device %s is not a valid VERITY device." msgstr "" @@ -3270,39 +3317,39 @@ msgstr "" msgid "Command requires or --root-hash-file option as argument." msgstr "" -#: src/veritysetup.c:485 +#: src/veritysetup.c:488 msgid " " msgstr "" -#: src/veritysetup.c:485 src/integritysetup.c:550 +#: src/veritysetup.c:488 src/integritysetup.c:553 msgid "format device" msgstr "" -#: src/veritysetup.c:486 +#: src/veritysetup.c:489 msgid " []" msgstr "" -#: src/veritysetup.c:486 +#: src/veritysetup.c:489 msgid "verify device" msgstr "" -#: src/veritysetup.c:487 +#: src/veritysetup.c:490 msgid " []" msgstr "" -#: src/veritysetup.c:489 src/integritysetup.c:553 +#: src/veritysetup.c:492 src/integritysetup.c:556 msgid "show active device status" msgstr "" -#: src/veritysetup.c:490 +#: src/veritysetup.c:493 msgid "" msgstr "" -#: src/veritysetup.c:490 src/integritysetup.c:554 +#: src/veritysetup.c:493 src/integritysetup.c:557 msgid "show on-disk information" msgstr "" -#: src/veritysetup.c:509 +#: src/veritysetup.c:512 #, c-format msgid "" "\n" @@ -3312,7 +3359,7 @@ msgid "" " hash of the root node on \n" msgstr "" -#: src/veritysetup.c:516 +#: src/veritysetup.c:519 #, c-format msgid "" "\n" @@ -3321,19 +3368,19 @@ msgid "" "Hash format: %u\n" msgstr "" -#: src/veritysetup.c:657 +#: src/veritysetup.c:660 msgid "" "Option --ignore-corruption and --restart-on-corruption cannot be used " "together." msgstr "" -#: src/veritysetup.c:662 +#: src/veritysetup.c:665 msgid "" "Option --panic-on-corruption and --restart-on-corruption cannot be used " "together." msgstr "" -#: src/veritysetup.c:668 +#: src/veritysetup.c:671 msgid "" "Option --error-as-corruption must be used with --panic-on-corruption or --" "restart-on-corruption." @@ -3356,26 +3403,26 @@ msgstr "" msgid " (inline hw tags)" msgstr "" -#: src/integritysetup.c:297 +#: src/integritysetup.c:303 msgid "" "Setting recalculate flag is not supported, you may consider using --wipe " "instead." msgstr "" -#: src/integritysetup.c:374 src/integritysetup.c:537 +#: src/integritysetup.c:380 src/integritysetup.c:540 #, c-format msgid "Device %s is not a valid INTEGRITY device." msgstr "" -#: src/integritysetup.c:550 src/integritysetup.c:554 +#: src/integritysetup.c:553 src/integritysetup.c:557 msgid "" msgstr "" -#: src/integritysetup.c:551 +#: src/integritysetup.c:554 msgid " " msgstr "" -#: src/integritysetup.c:574 +#: src/integritysetup.c:577 #, c-format msgid "" "\n" @@ -3383,7 +3430,7 @@ msgid "" " is the device containing data with integrity tags\n" msgstr "" -#: src/integritysetup.c:579 +#: src/integritysetup.c:582 #, c-format msgid "" "\n" @@ -3392,53 +3439,53 @@ msgid "" "\tMaximum keyfile size: %dkB\n" msgstr "" -#: src/integritysetup.c:636 +#: src/integritysetup.c:639 #, c-format msgid "Invalid --%s size. Maximum is %u bytes." msgstr "" -#: src/integritysetup.c:739 +#: src/integritysetup.c:742 msgid "Both key file and key size options must be specified." msgstr "" -#: src/integritysetup.c:743 +#: src/integritysetup.c:746 msgid "Both journal integrity key file and key size options must be specified." msgstr "" -#: src/integritysetup.c:746 +#: src/integritysetup.c:749 msgid "" "Journal integrity algorithm must be specified if journal integrity key is " "used." msgstr "" -#: src/integritysetup.c:750 +#: src/integritysetup.c:753 msgid "" "Both journal encryption key file and key size options must be specified." msgstr "" -#: src/integritysetup.c:753 +#: src/integritysetup.c:756 msgid "" "Journal encryption algorithm must be specified if journal encryption key is " "used." msgstr "" -#: src/integritysetup.c:757 +#: src/integritysetup.c:760 msgid "Recovery and bitmap mode options are mutually exclusive." msgstr "" -#: src/integritysetup.c:764 +#: src/integritysetup.c:767 msgid "Journal options cannot be used in bitmap mode." msgstr "" -#: src/integritysetup.c:769 +#: src/integritysetup.c:772 msgid "Bitmap options can be used only in bitmap mode." msgstr "" -#: src/integritysetup.c:775 +#: src/integritysetup.c:778 msgid "Inline mode cannot be combined with journal or bitmap options." msgstr "" -#: src/integritysetup.c:779 +#: src/integritysetup.c:782 msgid "Inline mode cannot be combined with separate data device." msgstr "" @@ -3782,7 +3829,7 @@ msgid "" "option cannot be applied." msgstr "" -#: src/utils_reencrypt.c:282 src/utils_reencrypt.c:1923 +#: src/utils_reencrypt.c:282 src/utils_reencrypt.c:1924 msgid "" "Cannot determine volume key size for LUKS without keyslots, please use --new-" "key-size option." @@ -3818,7 +3865,7 @@ msgid "" "(block size: % bytes) detected on device %s." msgstr "" -#: src/utils_reencrypt.c:678 src/utils_reencrypt.c:2203 +#: src/utils_reencrypt.c:678 src/utils_reencrypt.c:2204 msgid "" "Encryption without detached header (--header) is not possible without data " "device size reduction (--reduce-device-size)." @@ -3911,7 +3958,7 @@ msgid "" msgstr "" #: src/utils_reencrypt.c:1566 src/utils_reencrypt.c:1579 -#: src/utils_reencrypt_luks1.c:1092 src/utils_reencrypt_luks1.c:1103 +#: src/utils_reencrypt_luks1.c:1095 src/utils_reencrypt_luks1.c:1106 #, c-format msgid "Enter passphrase for key slot %d: " msgstr "" @@ -3921,86 +3968,86 @@ msgstr "" msgid "Switching data encryption cipher to %s.\n" msgstr "" -#: src/utils_reencrypt.c:1976 src/utils_reencrypt.c:1997 +#: src/utils_reencrypt.c:1977 src/utils_reencrypt.c:1998 msgid "" "Use --force-no-keyslots to reencrypt device with active keyslots by passing " "volume keys directly." msgstr "" -#: src/utils_reencrypt.c:1992 +#: src/utils_reencrypt.c:1993 msgid "Option --new-volume-key-file must be paired with --new-key-size" msgstr "" -#: src/utils_reencrypt.c:2034 +#: src/utils_reencrypt.c:2035 msgid "No data segment parameters changed. Reencryption aborted." msgstr "" -#: src/utils_reencrypt.c:2071 +#: src/utils_reencrypt.c:2072 msgid "" "Encryption sector size increase on offline device is not supported.\n" "Activate the device first or use --force-offline-reencrypt option " "(dangerous!)." msgstr "" -#: src/utils_reencrypt.c:2113 src/utils_reencrypt_luks1.c:688 +#: src/utils_reencrypt.c:2114 src/utils_reencrypt_luks1.c:688 #: src/utils_reencrypt_luks1.c:759 msgid "" "\n" "Reencryption interrupted." msgstr "" -#: src/utils_reencrypt.c:2118 +#: src/utils_reencrypt.c:2119 msgid "Resuming LUKS reencryption in forced offline mode.\n" msgstr "" -#: src/utils_reencrypt.c:2141 +#: src/utils_reencrypt.c:2142 #, c-format msgid "Device %s contains broken LUKS metadata. Aborting operation." msgstr "" -#: src/utils_reencrypt.c:2157 src/utils_reencrypt.c:2179 +#: src/utils_reencrypt.c:2158 src/utils_reencrypt.c:2180 #, c-format msgid "Device %s is already LUKS device. Aborting operation." msgstr "" -#: src/utils_reencrypt.c:2185 +#: src/utils_reencrypt.c:2186 #, c-format msgid "Device %s is already in LUKS reencryption. Aborting operation." msgstr "" -#: src/utils_reencrypt.c:2268 +#: src/utils_reencrypt.c:2269 msgid "LUKS2 decryption requires --header option." msgstr "" -#: src/utils_reencrypt.c:2316 +#: src/utils_reencrypt.c:2317 msgid "Command requires device as argument." msgstr "" -#: src/utils_reencrypt.c:2329 +#: src/utils_reencrypt.c:2330 #, c-format msgid "Conflicting versions. Device %s is LUKS1." msgstr "" -#: src/utils_reencrypt.c:2335 +#: src/utils_reencrypt.c:2336 #, c-format msgid "Conflicting versions. Device %s is in LUKS1 reencryption." msgstr "" -#: src/utils_reencrypt.c:2341 +#: src/utils_reencrypt.c:2342 #, c-format msgid "Conflicting versions. Device %s is LUKS2." msgstr "" -#: src/utils_reencrypt.c:2347 +#: src/utils_reencrypt.c:2348 #, c-format msgid "Conflicting versions. Device %s is in LUKS2 reencryption." msgstr "" -#: src/utils_reencrypt.c:2353 +#: src/utils_reencrypt.c:2354 msgid "LUKS2 reencryption already initialized. Aborting operation." msgstr "" -#: src/utils_reencrypt.c:2360 +#: src/utils_reencrypt.c:2361 msgid "Device reencryption not in progress." msgstr "" @@ -4101,40 +4148,40 @@ msgstr "" msgid "IO error during reencryption." msgstr "" -#: src/utils_reencrypt_luks1.c:943 +#: src/utils_reencrypt_luks1.c:945 msgid "Provided UUID is invalid." msgstr "" -#: src/utils_reencrypt_luks1.c:1045 +#: src/utils_reencrypt_luks1.c:1048 msgid "" "Key file can be used only with --key-slot or with exactly one key slot " "active." msgstr "" -#: src/utils_reencrypt_luks1.c:1169 +#: src/utils_reencrypt_luks1.c:1172 msgid "Cannot open reencryption log file." msgstr "" -#: src/utils_reencrypt_luks1.c:1175 +#: src/utils_reencrypt_luks1.c:1178 msgid "" "No decryption in progress, provided UUID can be used only to resume " "suspended decryption process." msgstr "" -#: src/utils_reencrypt_luks1.c:1231 +#: src/utils_reencrypt_luks1.c:1234 #, c-format msgid "Reencryption will change: %s%s%s%s%s%s." msgstr "" -#: src/utils_reencrypt_luks1.c:1232 +#: src/utils_reencrypt_luks1.c:1235 msgid "volume key" msgstr "" -#: src/utils_reencrypt_luks1.c:1234 +#: src/utils_reencrypt_luks1.c:1237 msgid "set hash to " msgstr "" -#: src/utils_reencrypt_luks1.c:1235 +#: src/utils_reencrypt_luks1.c:1238 msgid ", set cipher to " msgstr "" From 79104ac4e36794fd468c9d16064e39251d1e8db2 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Fri, 10 Jul 2026 10:57:37 +0200 Subject: [PATCH 176/244] tests: Handle missing crypto-check better If local crypto-check helper is missing, print warning that it cannot be used for FIPS mode check and expect non-FIPS mode. Require it only in few specific places, where test would completely fail. --- tests/00modules-test | 8 ++++++-- tests/align-test | 4 ++++ tests/compat-test | 14 ++++++++------ tests/compat-test-opal | 4 ++++ tests/compat-test2 | 4 ++++ tests/keyring-compat-test | 4 ++++ tests/luks2-reencryption-test | 4 ++++ tests/reencryption-compat-test | 4 ++++ tests/test_utils.c | 28 ++++++++++++++++++++++++++++ 9 files changed, 66 insertions(+), 8 deletions(-) diff --git a/tests/00modules-test b/tests/00modules-test index 90c96c9f1..d117d4576 100755 --- a/tests/00modules-test +++ b/tests/00modules-test @@ -17,8 +17,12 @@ if [ "$(cat /proc/sys/crypto/fips_enabled 2>/dev/null)" = "1" ] ; then echo "Kernel running in FIPS mode." fi -./crypto-check fips_mode && echo "Crypto backend running in FIPS mode." -./crypto-check fips_mode_kernel && echo "Kernel running in FIPS mode." +if [ ! -x ./crypto-check ]; then + echo "WARNING: Cannot find crypto-check helper, cannot check FIPS mode." +else + ./crypto-check fips_mode && echo "Crypto backend running in FIPS mode." + ./crypto-check fips_mode_kernel && echo "Kernel running in FIPS mode." +fi if [ -f /etc/os-release ] ; then source /etc/os-release diff --git a/tests/align-test b/tests/align-test index 11d733292..ef63e2b5c 100755 --- a/tests/align-test +++ b/tests/align-test @@ -20,6 +20,10 @@ fi fips_mode() { + if [ ! -x ./crypto-check ]; then + echo "WARNING: Cannot find crypto-check helper, expecting non-FIPS mode." + return 1 + fi ./crypto-check fips_mode } diff --git a/tests/compat-test b/tests/compat-test index b70e5b8e9..5719bd38c 100755 --- a/tests/compat-test +++ b/tests/compat-test @@ -4,6 +4,7 @@ PS4='$LINENO:' [ -z "$CRYPTSETUP_PATH" ] && CRYPTSETUP_PATH=".." CRYPTSETUP=$CRYPTSETUP_PATH/cryptsetup CRYPTSETUP_RAW=$CRYPTSETUP +CRYPTOCHECK=./crypto-check if [ -n "$CRYPTSETUP_TESTS_RUN_IN_MESON" ]; then CRYPTSETUP_VALGRIND=$CRYPTSETUP @@ -84,7 +85,7 @@ trap _sigchld CHLD fips_mode() { - ./crypto-check fips_mode + $CRYPTOCHECK fips_mode } can_fail_fips() @@ -319,7 +320,12 @@ echo "[10] uuid" echo $PWD1 | $CRYPTSETUP -q luksFormat --type luks1 $FAST_PBKDF_OPT --uuid $TEST_UUID $IMG || fail $CRYPTSETUP -q luksUUID $IMG | grep -q $TEST_UUID || fail -./crypto-check cipher-kernel aes xts 256 +[ $(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." +[ ! -x "$DIFFER" ] && skip "Cannot find $DIFFER, test skipped." +[ ! -x "$CRYPTOCHECK" ] && skip "Cannot find $CRYPTOCHECK, test skipped." + +$CRYPTOCHECK cipher-kernel aes xts 256 if [ $? -eq 0 ] ; then echo "[11] benchmark" $CRYPTSETUP benchmark -c aes-xts --key-size 128 >/dev/null 2>&1 && fail @@ -329,10 +335,6 @@ if [ $? -eq 0 ] ; then $CRYPTSETUP benchmark -c capi:xts\(aes\)-plain64 >/dev/null || fail fi -[ $(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." -[ ! -x "$DIFFER" ] && skip "Cannot find $DIFFER, test skipped." - # LUKS root-tests prepare "[1] open - compat image - acceptance check" new echo $PWD0 | $CRYPTSETUP luksOpen $LOOPDEV $DEV_NAME || fail diff --git a/tests/compat-test-opal b/tests/compat-test-opal index 2c2cccd91..cfe274914 100755 --- a/tests/compat-test-opal +++ b/tests/compat-test-opal @@ -87,6 +87,10 @@ trap _sigchld CHLD fips_mode() { + if [ ! -x ./crypto-check ]; then + echo "WARNING: Cannot find crypto-check helper, expecting non-FIPS mode." + return 1 + fi ./crypto-check fips_mode } diff --git a/tests/compat-test2 b/tests/compat-test2 index 631c8dd53..5b4e810ee 100755 --- a/tests/compat-test2 +++ b/tests/compat-test2 @@ -127,6 +127,10 @@ trap _sigchld CHLD fips_mode() { + if [ ! -x ./crypto-check ]; then + echo "WARNING: Cannot find crypto-check helper, expecting non-FIPS mode." + return 1 + fi ./crypto-check fips_mode } diff --git a/tests/keyring-compat-test b/tests/keyring-compat-test index bdffb4ed3..97957b741 100755 --- a/tests/keyring-compat-test +++ b/tests/keyring-compat-test @@ -122,6 +122,10 @@ test_and_prepare_keyring() { fips_mode_kernel() { + if [ ! -x ./crypto-check ]; then + echo "WARNING: Cannot find crypto-check helper, expecting non-FIPS mode." + return 1 + fi ./crypto-check fips_mode_kernel } diff --git a/tests/luks2-reencryption-test b/tests/luks2-reencryption-test index 5a8fe68ae..c7f75175e 100755 --- a/tests/luks2-reencryption-test +++ b/tests/luks2-reencryption-test @@ -164,6 +164,10 @@ skip() fips_mode() { + if [ ! -x ./crypto-check ]; then + echo "WARNING: Cannot find crypto-check helper, expecting non-FIPS mode." + return 1 + fi ./crypto-check fips_mode || ./crypto-check fips_mode_kernel } diff --git a/tests/reencryption-compat-test b/tests/reencryption-compat-test index b609a4973..e5678e437 100755 --- a/tests/reencryption-compat-test +++ b/tests/reencryption-compat-test @@ -33,6 +33,10 @@ START_DIR=$(pwd) fips_mode() { + if [ ! -x ./crypto-check ]; then + echo "WARNING: Cannot find crypto-check helper, expecting non-FIPS mode." + return 1 + fi ./crypto-check fips_mode || ./crypto-check fips_mode_kernel } diff --git a/tests/test_utils.c b/tests/test_utils.c index 7fc787bb9..d026ddf27 100644 --- a/tests/test_utils.c +++ b/tests/test_utils.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -163,13 +164,40 @@ int t_set_readahead(const char *device, unsigned value) return r; } +static bool crypto_check_exists(void) +{ + struct stat st; + const char *path = "./crypto-check"; + + if (stat(path, &st) != 0) + return false; + + if (!S_ISREG(st.st_mode)) + return false; + + if (!(st.st_mode & S_IXUSR)) + return false; + + return true; +} + int fips_mode(void) { + if (!crypto_check_exists()) { + printf("WARNING: Cannot find crypto-check helper, expecting non-FIPS mode.\n"); + return 0; + } + return _system("./crypto-check fips_mode", 1) == 0; } int fips_mode_kernel(void) { + if (!crypto_check_exists()) { + printf("WARNING: Cannot find crypto-check helper, expecting non-FIPS mode.\n"); + return 0; + } + return _system("./crypto-check fips_mode_kernel", 1) == 0; } From 52c4e0dae0b172c2b79e0bc9ef4e7fd5542b522c Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Fri, 10 Jul 2026 15:57:21 +0200 Subject: [PATCH 177/244] Update release notes for 2.8.7-rc2. --- ...8.7-rc1-ReleaseNotes => v2.8.7-rc2-ReleaseNotes} | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) rename docs/{v2.8.7-rc1-ReleaseNotes => v2.8.7-rc2-ReleaseNotes} (92%) diff --git a/docs/v2.8.7-rc1-ReleaseNotes b/docs/v2.8.7-rc2-ReleaseNotes similarity index 92% rename from docs/v2.8.7-rc1-ReleaseNotes rename to docs/v2.8.7-rc2-ReleaseNotes index faf5a0dd7..23bf01251 100644 --- a/docs/v2.8.7-rc1-ReleaseNotes +++ b/docs/v2.8.7-rc2-ReleaseNotes @@ -1,9 +1,20 @@ -Cryptsetup 2.8.7-rc1 Release Notes +Cryptsetup 2.8.7-rc2 Release Notes ================================== Stable bug-fix release candidate that solves several compatibility issues. All users of cryptsetup must upgrade to this version. +Changes since version 2.8.7-rc1 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* Fix tests to compile crypto-check helper properly. + +* Add support for --integrity-legacy-hmac in integritysetup open command. + Integritysetup open command incorrectly configured options for legacy HMAC devices. + To use --integrity-legacy-hmac, it must now be used both on format and open. + +* Fix cryptsetup --tries option not to overflow for high values. + Changes since version 2.8.6 ~~~~~~~~~~~~~~~~~~~~~~~~~~~ From f191e9a81057ce4e82e89e633fa00e5979187766 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Fri, 10 Jul 2026 16:03:48 +0200 Subject: [PATCH 178/244] Version 2.8.7-rc2. --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 271e52ab5..99ed3335e 100644 --- a/README.md +++ b/README.md @@ -39,11 +39,11 @@ Download Release notes and tarballs are available at [kernel.org](https://cdn.kernel.org/pub/linux/utils/cryptsetup/). -**The latest cryptsetup release candidate version is 2.8.7-rc1** - * [cryptsetup-2.8.7-rc1.tar.xz](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/cryptsetup-2.8.7-rc1.tar.xz) - * Signature [cryptsetup-2.8.7-rc1.tar.sign](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/cryptsetup-2.8.7-rc1.tar.sign) +**The latest cryptsetup release candidate version is 2.8.7-rc2** + * [cryptsetup-2.8.7-rc2.tar.xz](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/cryptsetup-2.8.7-rc2.tar.xz) + * Signature [cryptsetup-2.8.7-rc2.tar.sign](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/cryptsetup-2.8.7-rc2.tar.sign) _(You need to decompress file first to check signature.)_ - * [Cryptsetup 2.8.7-rc1 Release Notes](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/v2.8.7-rc1-ReleaseNotes). + * [Cryptsetup 2.8.7-rc2 Release Notes](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/v2.8.7-rc2-ReleaseNotes). **The latest stable cryptsetup release version is 2.8.6** * [cryptsetup-2.8.6.tar.xz](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/cryptsetup-2.8.6.tar.xz) From c93ffd976b52a614176a494049e853895909bccc Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 11 Jul 2026 12:01:28 +0200 Subject: [PATCH 179/244] Always check crypt_random_get() return values. On several places it is not a reat issue (test keys), but broken RNG is sign of something more serious, just check for failure anyway. Also should silence Coverity reports. --- lib/luks2/luks2_json_format.c | 13 +++++++++++-- lib/luks2/luks2_luks1_convert.c | 12 ++++++++++-- lib/utils_benchmark.c | 8 ++++++-- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/lib/luks2/luks2_json_format.c b/lib/luks2/luks2_json_format.c index 9b249977f..650032585 100644 --- a/lib/luks2/luks2_json_format.c +++ b/lib/luks2/luks2_json_format.c @@ -224,8 +224,17 @@ int LUKS2_generate_hdr( hdr->version = 2; memset(hdr->label, 0, LUKS2_LABEL_L); strcpy(hdr->checksum_alg, "sha256"); - crypt_random_get(cd, (char*)hdr->salt1, LUKS2_SALT_L, CRYPT_RND_SALT); - crypt_random_get(cd, (char*)hdr->salt2, LUKS2_SALT_L, CRYPT_RND_SALT); + + r = crypt_random_get(cd, (char*)hdr->salt1, LUKS2_SALT_L, CRYPT_RND_SALT); + if (r < 0) { + log_dbg(cd, "Cannot generate header salt."); + return r; + } + r = crypt_random_get(cd, (char*)hdr->salt2, LUKS2_SALT_L, CRYPT_RND_SALT); + if (r < 0) { + log_dbg(cd, "Cannot generate header salt."); + return r; + } if (uuid && uuid_parse(uuid, partitionUuid) == -1) { log_err(cd, _("Wrong LUKS UUID format provided.")); diff --git a/lib/luks2/luks2_luks1_convert.c b/lib/luks2/luks2_luks1_convert.c index 5d1234252..72b5759f7 100644 --- a/lib/luks2/luks2_luks1_convert.c +++ b/lib/luks2/luks2_luks1_convert.c @@ -600,8 +600,16 @@ int LUKS2_luks1_to_luks2(struct crypt_device *cd, struct luks_phdr *hdr1, struct hdr2->seqid = 1; hdr2->version = 2; strncpy(hdr2->checksum_alg, "sha256", LUKS2_CHECKSUM_ALG_L); - crypt_random_get(cd, (char*)hdr2->salt1, sizeof(hdr2->salt1), CRYPT_RND_SALT); - crypt_random_get(cd, (char*)hdr2->salt2, sizeof(hdr2->salt2), CRYPT_RND_SALT); + r = crypt_random_get(cd, (char*)hdr2->salt1, sizeof(hdr2->salt1), CRYPT_RND_SALT); + if (r < 0) { + log_dbg(cd, "Cannot generate header salt."); + goto out; + } + r = crypt_random_get(cd, (char*)hdr2->salt2, sizeof(hdr2->salt2), CRYPT_RND_SALT); + if (r < 0) { + log_dbg(cd, "Cannot generate header salt."); + goto out; + } strncpy(hdr2->uuid, crypt_get_uuid(cd), LUKS2_UUID_L-1); /* UUID should be max 36 chars */ hdr2->jobj = jobj; diff --git a/lib/utils_benchmark.c b/lib/utils_benchmark.c index 7c5ca0381..e1655deba 100644 --- a/lib/utils_benchmark.c +++ b/lib/utils_benchmark.c @@ -46,14 +46,18 @@ int crypt_benchmark(struct crypt_device *cd, iv = malloc(iv_size); if (!iv) goto out; - crypt_random_get(cd, iv, iv_size, CRYPT_RND_NORMAL); + r = crypt_random_get(cd, iv, iv_size, CRYPT_RND_NORMAL); + if (r < 0) + goto out; } key = malloc(volume_key_size); if (!key) goto out; - crypt_random_get(cd, key, volume_key_size, CRYPT_RND_NORMAL); + r = crypt_random_get(cd, key, volume_key_size, CRYPT_RND_NORMAL); + if (r < 0) + goto out; strncpy(mode, cipher_mode, sizeof(mode)-1); /* Ignore IV generator */ From 8f355c2eebc87a023fddda14c5487ac0569c32c8 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Tue, 7 Jul 2026 15:32:07 +0200 Subject: [PATCH 180/244] tests: drop needless file copying. luks2-validation-test data does not have to be copied into meson build directory. Also it seems like a leftover since only single generator script is copied over. --- tests/meson.build | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/meson.build b/tests/meson.build index f8e6a652f..c1afc1360 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -14,7 +14,6 @@ test_files_to_copy = [ 'evil_hdr-small_luks_device.xz', 'evil_hdr-stripes_payload_dmg.xz', 'fvault2-images.tar.xz', - 'generators/generate-luks2-area-in-json-hdr-space-json0.img.sh', 'img_fs_ext4.img.xz', 'img_fs_vfat.img.xz', 'img_fs_xfs.img.xz', From 15b47cd38494dcb5ff4e5fc8d519c02bf45010dd Mon Sep 17 00:00:00 2001 From: Petr Pisar Date: Sun, 19 Jul 2026 19:51:04 +0200 Subject: [PATCH 181/244] po: update cs.po (from translationproject.org) --- po/cs.po | 631 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 316 insertions(+), 315 deletions(-) diff --git a/po/cs.po b/po/cs.po index 26ca0cd59..4718425b3 100644 --- a/po/cs.po +++ b/po/cs.po @@ -33,10 +33,10 @@ # msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.7-rc1\n" +"Project-Id-Version: cryptsetup 2.8.7-rc2\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2026-06-29 21:30+0200\n" -"PO-Revision-Date: 2026-07-02 17:37+02:00\n" +"POT-Creation-Date: 2026-07-09 10:46+0200\n" +"PO-Revision-Date: 2026-07-11 17:03+02:00\n" "Last-Translator: Petr Pisar \n" "Language-Team: Czech \n" "Language: cs\n" @@ -228,10 +228,10 @@ msgid "Failed to rollback LUKS2 metadata in memory." msgstr "Nahrání původních metadat LUKS2 do paměti selhalo." #: lib/setup.c:896 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 -#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1779 -#: src/cryptsetup.c:1963 src/cryptsetup.c:2018 src/cryptsetup.c:2216 -#: src/cryptsetup.c:2361 src/cryptsetup.c:2639 src/cryptsetup.c:2952 -#: src/cryptsetup.c:3020 src/utils_reencrypt.c:2281 +#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 +#: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 +#: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2954 +#: src/cryptsetup.c:3022 src/utils_reencrypt.c:2284 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." @@ -275,7 +275,7 @@ msgid "Detached metadata device is not supported for this crypt type." msgstr "Zařízení s oddělenými metadaty není na šifře tohoto typu podporováno." #: lib/setup.c:1642 lib/setup.c:1890 lib/luks2/luks2_reencrypt.c:3035 -#: src/cryptsetup.c:1491 src/cryptsetup.c:3759 +#: src/cryptsetup.c:1492 src/cryptsetup.c:3761 msgid "Unsupported encryption sector size." msgstr "Nepodporovaná velikost šifrovaného sektoru." @@ -601,14 +601,14 @@ msgstr "Z klíčenky zadané uživatelem se nepodařilo odpojit klíč svazku." msgid "Failed to link volume key in user defined keyring." msgstr "Do uživatelem zadané klíčenky se nepodařilo přidat klíč svazku." -#: lib/setup.c:4556 src/cryptsetup.c:2720 +#: lib/setup.c:4556 src/cryptsetup.c:2722 #, c-format msgid "Volume %s is not suspended." msgstr "Svazek %s není uspán." -#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1855 -#: src/cryptsetup.c:2259 src/cryptsetup.c:2277 src/utils_reencrypt.c:305 -#: src/utils_reencrypt.c:1966 +#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1856 +#: src/cryptsetup.c:2260 src/cryptsetup.c:2278 src/utils_reencrypt.c:306 +#: src/utils_reencrypt.c:1969 msgid "Volume key does not match the volume." msgstr "Heslo svazku neodpovídá svazku." @@ -621,8 +621,8 @@ msgstr "Záměna novou pozicí klíče se nezdařila." msgid "Key slot %d is invalid." msgstr "Pozice klíče %d je neplatná." -#: lib/setup.c:4925 src/cryptsetup.c:1976 src/cryptsetup.c:2436 -#: src/cryptsetup.c:3120 src/cryptsetup.c:3180 +#: lib/setup.c:4925 src/cryptsetup.c:1977 src/cryptsetup.c:2437 +#: src/cryptsetup.c:3122 src/cryptsetup.c:3182 #, c-format msgid "Keyslot %d is not active." msgstr "Pozice klíče %d není aktivní." @@ -819,7 +819,7 @@ msgid "Cannot read requested amount of data." msgstr "Požadované množství dat nelze načíst." #: lib/utils_device.c:207 lib/utils_storage_wrappers.c:99 -#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2254 +#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2257 #, c-format msgid "Device %s does not exist or access denied." msgstr "Zařízení %s neexistuje nebo přístup byl zamítnut." @@ -1164,7 +1164,7 @@ msgstr "Režim LUKS šifry %s není platný." msgid "LUKS hash %s is invalid." msgstr "LUKS haš %s není platný." -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1366 +#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 msgid "No known problems detected for LUKS header." msgstr "V hlavičce LUKS nenalezen žádný známý problém." @@ -1185,7 +1185,7 @@ msgstr "Poloha dat u hlavičky LUKS musí být buď 0 nebo více než velikost h #: lib/luks1/keymanage.c:761 lib/luks1/keymanage.c:832 #: lib/luks2/luks2_json_format.c:231 lib/luks2/luks2_json_metadata.c:1261 -#: src/utils_reencrypt.c:701 +#: src/utils_reencrypt.c:703 msgid "Wrong LUKS UUID format provided." msgstr "Poskytnut UUID LUKSu ve špatném tvaru." @@ -1715,7 +1715,7 @@ msgstr "Nastavení části dm-crypt selhalo." msgid "Failed to set dm-linear segment." msgstr "Nastavení části dm-linear selhalo." -#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:578 +#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:580 msgid "No known cipher specification pattern detected in LUKS2 header." msgstr "V hlavičce LUKS2 nebyl nalezen žádný známý vzorek určující šifru." @@ -2179,8 +2179,8 @@ msgstr "Parametry pro šifrování pozice s klíčem lze nastavit jen u zaří msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encryption." msgstr "Parametry pro šifrování pozice s klíčem se neslučují s šifrováním pozice s klíčem LUKS2." -#: src/cryptsetup.c:150 src/cryptsetup.c:1179 src/cryptsetup.c:1544 -#: src/utils_reencrypt.c:1887 src/utils_reencrypt_luks1.c:502 +#: src/cryptsetup.c:150 src/cryptsetup.c:1180 src/cryptsetup.c:1545 +#: src/utils_reencrypt.c:1890 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." msgstr "Nelze najít žádný známý vzorek se specifikaci šifry." @@ -2207,8 +2207,8 @@ msgstr "POZOR: Jedná-li se o režim plain a je-li určen soubor s klíčem, p msgid "WARNING: The --keyfile-size option is being ignored, the read size is the same as the encryption key size.\n" msgstr "POZOR: Přepínač --keyfile-size se ignoruje, velikost pro čtení je stejná jako velikosti šifrovacího klíče.\n" -#: src/cryptsetup.c:226 src/cryptsetup.c:1374 src/cryptsetup.c:1597 -#: src/integritysetup.c:188 src/utils_reencrypt.c:2138 +#: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 +#: src/integritysetup.c:189 src/utils_reencrypt.c:2141 #, c-format msgid "Blkid scan failed for %s." msgstr "Prohledávání blkid selhalo u %s." @@ -2218,11 +2218,11 @@ msgstr "Prohledávání blkid selhalo u %s." msgid "Detected device signature(s) on %s. Proceeding further may damage existing data." msgstr "Na %s byla nalezen vzorec zařízení. Pokračování může poškodit existující data." -#: src/cryptsetup.c:238 src/cryptsetup.c:1260 src/cryptsetup.c:1308 -#: src/cryptsetup.c:1381 src/cryptsetup.c:1521 src/cryptsetup.c:1609 -#: src/cryptsetup.c:2494 src/cryptsetup.c:2923 src/integritysetup.c:178 -#: src/utils_reencrypt.c:111 src/utils_reencrypt.c:457 -#: src/utils_reencrypt.c:925 +#: src/cryptsetup.c:238 src/cryptsetup.c:1261 src/cryptsetup.c:1309 +#: src/cryptsetup.c:1382 src/cryptsetup.c:1522 src/cryptsetup.c:1610 +#: src/cryptsetup.c:2495 src/cryptsetup.c:2925 src/integritysetup.c:179 +#: src/utils_reencrypt.c:111 src/utils_reencrypt.c:459 +#: src/utils_reencrypt.c:927 msgid "Operation aborted.\n" msgstr "Operace zrušena.\n" @@ -2230,36 +2230,36 @@ msgstr "Operace zrušena.\n" msgid "Option --key-file is required." msgstr "Je vyžadován přepínač --key-file." -#: src/cryptsetup.c:377 +#: src/cryptsetup.c:378 msgid "Enter VeraCrypt PIM: " msgstr "Zadejte PIM VeraCryptu: " -#: src/cryptsetup.c:386 +#: src/cryptsetup.c:387 msgid "Invalid PIM value: parse error." msgstr "Neplatná hodnota VIM: chyba rozboru" -#: src/cryptsetup.c:389 +#: src/cryptsetup.c:390 msgid "Invalid PIM value: 0." msgstr "Neplatná hodnota PIM: 0" -#: src/cryptsetup.c:392 +#: src/cryptsetup.c:393 msgid "Invalid PIM value: outside of range." msgstr "Neplatná hodnota PIM: mimo rozsah" -#: src/cryptsetup.c:415 +#: src/cryptsetup.c:416 msgid "No device header detected with this passphrase." msgstr "S tímto heslem není rozpoznatelná žádná hlavička zařízení." -#: src/cryptsetup.c:492 src/cryptsetup.c:677 +#: src/cryptsetup.c:493 src/cryptsetup.c:678 #, c-format msgid "Device %s is not a valid BITLK device." msgstr "Zařízení %s není platným zařízením BITLK." -#: src/cryptsetup.c:500 +#: src/cryptsetup.c:501 msgid "Cannot determine volume key size for BITLK, please use --key-size option." msgstr "Nelze určit velikost BITLK klíče svazku. Prosím, použijte přepínač --key-size." -#: src/cryptsetup.c:546 +#: src/cryptsetup.c:547 msgid "" "Header dump with volume key is sensitive information\n" "which allows access to encrypted partition without passphrase.\n" @@ -2269,7 +2269,7 @@ msgstr "" "který umožňuje přístup k šifrovanému oddílu bez znalosti hesla.\n" "Tento výpis by měl být vždy uložen na bezpečném místě a v zašifrované podobě." -#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2519 +#: src/cryptsetup.c:614 src/cryptsetup.c:700 src/cryptsetup.c:2520 msgid "" "The header dump with volume key is sensitive information\n" "that allows access to encrypted partition without a passphrase.\n" @@ -2279,89 +2279,89 @@ msgstr "" "který umožňuje přístup k šifrovanému oddílu bez znalosti hesla.\n" "Tento výpis by měl být uložen na bezpečném místě a v zašifrované podobě." -#: src/cryptsetup.c:754 src/cryptsetup.c:786 +#: src/cryptsetup.c:755 src/cryptsetup.c:787 #, c-format msgid "Device %s is not a valid FVAULT2 device." msgstr "Zařízení %s není platným zařízením FVAULT2." -#: src/cryptsetup.c:794 +#: src/cryptsetup.c:795 msgid "Cannot determine volume key size for FVAULT2, please use --key-size option." msgstr "Nelze určit velikost klíče svazku pro FVAULT2. Prosím, použijte přepínač --key-size." -#: src/cryptsetup.c:848 src/veritysetup.c:317 src/integritysetup.c:416 +#: src/cryptsetup.c:849 src/veritysetup.c:317 src/integritysetup.c:422 #, c-format msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "Zařízení %s je stále aktivní a naplánováno pro odložené odstranění.\n" -#: src/cryptsetup.c:881 src/cryptsetup.c:1807 src/cryptsetup.c:2081 -#: src/cryptsetup.c:2228 src/cryptsetup.c:2647 src/cryptsetup.c:2728 -#: src/cryptsetup.c:3261 +#: src/cryptsetup.c:882 src/cryptsetup.c:1808 src/cryptsetup.c:2082 +#: src/cryptsetup.c:2229 src/cryptsetup.c:2648 src/cryptsetup.c:2730 +#: src/cryptsetup.c:3263 #, c-format msgid "Failed to set external tokens path %s." msgstr "Cestu k externím tokenům %s se nepodařilo nastavit." -#: src/cryptsetup.c:890 +#: src/cryptsetup.c:891 msgid "Resize of active device requires volume key in keyring but --disable-keyring option is set." msgstr "Změna velikosti aktivního zařízení vyžaduje klíč svazku v klíčence. Byl však použit přepínač --disable-keyring." -#: src/cryptsetup.c:1057 +#: src/cryptsetup.c:1058 msgid "Benchmark interrupted." msgstr "Hodnocení výkonu přerušeno." -#: src/cryptsetup.c:1078 +#: src/cryptsetup.c:1079 #, c-format msgid "PBKDF2-%-9s N/A\n" msgstr "PBKDF2-%-9s –\n" -#: src/cryptsetup.c:1080 +#: src/cryptsetup.c:1081 #, c-format msgid "PBKDF2-%-9s %7u iterations per second for %zu-bit key\n" msgstr "PBKDF2-%-9s %7u iterací za sekundu pro %zubitový klíč\n" -#: src/cryptsetup.c:1094 +#: src/cryptsetup.c:1095 #, c-format msgid "%-10s N/A\n" msgstr "%-10s –\n" -#: src/cryptsetup.c:1096 +#: src/cryptsetup.c:1097 #, c-format msgid "%-10s %4u iterations, %5u memory, %1u parallel threads (CPUs) for %zu-bit key (requested %u ms time)\n" msgstr "%-10s %4u iterací, %5u paměti, %1u souběžných vláken (procesorů) pro %zubitový klíč (požadován čas %u ms)\n" -#: src/cryptsetup.c:1120 +#: src/cryptsetup.c:1121 msgid "Result of benchmark is not reliable." msgstr "Výsledek hodnocení výkonu není spolehlivý." # ???: are aproximated? -#: src/cryptsetup.c:1171 +#: src/cryptsetup.c:1172 msgid "# Tests are approximate using memory only (no storage IO).\n" msgstr "# Testy jsou počítány jen z práce s pamětí (žádné I/O úložiště).\n" #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1196 +#: src/cryptsetup.c:1197 #, c-format msgid "#%*s Algorithm | Key | Encryption | Decryption\n" msgstr "#%*sAlgoritmus | Klíč | Šifrování | Dešifrování\n" -#: src/cryptsetup.c:1204 +#: src/cryptsetup.c:1205 #, c-format msgid "Cipher %s (with %i bits key) is not available." msgstr "Šifra %s (s %ibitovým klíčem) není dostupná." #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1225 +#: src/cryptsetup.c:1226 msgid "# Algorithm | Key | Encryption | Decryption\n" msgstr "# Algoritmus | Klíč | Šifrování | Dešifrování\n" -#: src/cryptsetup.c:1238 +#: src/cryptsetup.c:1239 msgid "N/A" msgstr "–" -#: src/cryptsetup.c:1241 +#: src/cryptsetup.c:1242 msgid "# Cipher speed test is not available.\n" msgstr "# Test rychlosti šifer není dostupný.\n" -#: src/cryptsetup.c:1257 +#: src/cryptsetup.c:1258 msgid "" "Unprotected LUKS2 reencryption metadata detected. Please verify the reencryption operation is desirable (see luksDump output)\n" "and continue (upgrade metadata) only if you acknowledge the operation as genuine." @@ -2370,27 +2370,27 @@ msgstr "" "přešifrování je žádoucí (vizte výstup luksDump) a pokračujte (zvýšení verze\n" "metadat) pouze, když poznáte, že operace je chtěná." -#: src/cryptsetup.c:1263 +#: src/cryptsetup.c:1264 msgid "Enter passphrase to protect and upgrade reencryption metadata: " msgstr "Zadejte heslo pro ochránění metadat o přešifrování a pro zvýšení jejich verze: " -#: src/cryptsetup.c:1307 +#: src/cryptsetup.c:1308 msgid "Really proceed with LUKS2 reencryption recovery?" msgstr "Opravdu pokračovat s obnovou přešifrování LUKS2?" -#: src/cryptsetup.c:1316 +#: src/cryptsetup.c:1317 msgid "Enter passphrase to verify reencryption metadata digest: " msgstr "Zadejte heslo pro ověření otisku metadat o přešifrování: " -#: src/cryptsetup.c:1318 +#: src/cryptsetup.c:1319 msgid "Enter passphrase for reencryption recovery: " msgstr "Zadejte heslo pro obnovení přešifrování: " -#: src/cryptsetup.c:1380 +#: src/cryptsetup.c:1381 msgid "Really try to repair LUKS device header?" msgstr "Opravdu se pokusit opravit hlavičku zařízení LUKS?" -#: src/cryptsetup.c:1408 src/integritysetup.c:76 src/integritysetup.c:244 +#: src/cryptsetup.c:1409 src/integritysetup.c:76 src/integritysetup.c:246 msgid "" "\n" "Wipe interrupted." @@ -2398,7 +2398,7 @@ msgstr "" "\n" "Výmaz přerušen." -#: src/cryptsetup.c:1413 src/integritysetup.c:81 src/integritysetup.c:289 +#: src/cryptsetup.c:1414 src/integritysetup.c:81 src/integritysetup.c:291 msgid "" "Wiping device to initialize integrity checksum.\n" "You can interrupt this by pressing CTRL+c (rest of not wiped device will contain invalid checksum).\n" @@ -2407,169 +2407,169 @@ msgstr "" "Lze přerušit pomocí Ctrl+C (zbytek nesmazaného zařízení bude obsahovat\n" "neplatné součty).\n" -#: src/cryptsetup.c:1435 src/integritysetup.c:103 +#: src/cryptsetup.c:1436 src/integritysetup.c:103 #, c-format msgid "Cannot deactivate temporary device %s." msgstr "Dočasné zařízení %s nelze deaktivovat." -#: src/cryptsetup.c:1483 +#: src/cryptsetup.c:1484 msgid "OPAL hw-only encryption does not support --cipher and --key-size, options ignored." msgstr "Čistě hardwarové šifrování Opal nepodporuje --cipher a --key-size. Přepínače se ignorují." -#: src/cryptsetup.c:1496 +#: src/cryptsetup.c:1497 msgid "Integrity option can be used only for LUKS2 format." msgstr "Volby integrity lze použít jen při formátu LUKS2." -#: src/cryptsetup.c:1501 src/cryptsetup.c:1581 +#: src/cryptsetup.c:1502 src/cryptsetup.c:1582 msgid "Unsupported LUKS2 metadata size options." msgstr "Nepodporované volby velikosti metadat LUKS2." -#: src/cryptsetup.c:1506 +#: src/cryptsetup.c:1507 msgid "OPAL is supported only for LUKS2 format." msgstr "Opal je podporován jen s formátem LUKS2." -#: src/cryptsetup.c:1511 +#: src/cryptsetup.c:1512 msgid "Inline hw tags are supported only for LUKS2 format." msgstr "Inline hardwarové značky jsou podporovány jen s formátem LUKS2." -#: src/cryptsetup.c:1520 +#: src/cryptsetup.c:1521 msgid "Header file does not exist, do you want to create it?" msgstr "Soubor s hlavičkou neexistuje. Chcete jej vytvořit?" -#: src/cryptsetup.c:1528 +#: src/cryptsetup.c:1529 #, c-format msgid "Cannot create header file %s." msgstr "Soubor s hlavičkou %s nelze vytvořit." -#: src/cryptsetup.c:1554 src/integritysetup.c:126 src/integritysetup.c:141 -#: src/integritysetup.c:150 src/integritysetup.c:328 src/integritysetup.c:336 -#: src/integritysetup.c:346 +#: src/cryptsetup.c:1555 src/integritysetup.c:127 src/integritysetup.c:142 +#: src/integritysetup.c:151 src/integritysetup.c:330 src/integritysetup.c:338 +#: src/integritysetup.c:348 msgid "No known integrity specification pattern detected." msgstr "Nelze najít žádný známý vzorek se specifikací integrity." -#: src/cryptsetup.c:1556 +#: src/cryptsetup.c:1557 msgid "Cannot use specified integrity key size." msgstr "Zadanou velikost klíče integrity nelze použít." -#: src/cryptsetup.c:1574 +#: src/cryptsetup.c:1575 #, c-format msgid "Cannot use %s as on-disk header." msgstr "%s nelze použít pro hlavičku uvnitř disku." -#: src/cryptsetup.c:1603 src/integritysetup.c:172 +#: src/cryptsetup.c:1604 src/integritysetup.c:173 #, c-format msgid "This will overwrite data on %s irrevocably." msgstr "Toto nevratně přepíše data na %s." -#: src/cryptsetup.c:1640 +#: src/cryptsetup.c:1641 msgid "OPAL Admin password cannot be empty." msgstr "Heslo správce Opal nemůže být prázdné." -#: src/cryptsetup.c:1654 src/cryptsetup.c:2098 src/cryptsetup.c:2241 -#: src/cryptsetup.c:2376 src/cryptsetup.c:2442 src/utils_reencrypt_luks1.c:428 +#: src/cryptsetup.c:1655 src/cryptsetup.c:2099 src/cryptsetup.c:2242 +#: src/cryptsetup.c:2377 src/cryptsetup.c:2443 src/utils_reencrypt_luks1.c:428 msgid "Failed to set pbkdf parameters." msgstr "Nastavení parametrů PBKDF selhalo." -#: src/cryptsetup.c:1785 +#: src/cryptsetup.c:1786 msgid "Reduced data offset is allowed only for detached LUKS header." msgstr "Zmenšená poloha dat je dovolena jen u oddělené hlavičky LUKS." -#: src/cryptsetup.c:1792 +#: src/cryptsetup.c:1793 #, c-format msgid "LUKS file container %s is too small for activation, there is no remaining space for data." msgstr "Souborový kontejner LUKS %s je na aktivaci příliš malý. Nezbývá žádné místo pro data." -#: src/cryptsetup.c:1834 src/cryptsetup.c:2247 src/utils_reencrypt.c:277 -#: src/utils_reencrypt.c:369 src/utils_reencrypt.c:1907 +#: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:278 +#: src/utils_reencrypt.c:371 src/utils_reencrypt.c:1910 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "Bez pozic pro klíče nelze určit velikost LUKS klíče svazku. Prosím, použijte přepínač --key-size." -#: src/cryptsetup.c:1853 src/utils_reencrypt.c:303 +#: src/cryptsetup.c:1854 src/utils_reencrypt.c:304 msgid "Device requires two volume keys." msgstr "Zařízení vyžaduje dva klíče svazku." -#: src/cryptsetup.c:1888 +#: src/cryptsetup.c:1889 msgid "Some specified activation parameters were ignored with OPAL hw-only encryption." msgstr "Některé zadané aktivační parametry byly při čistě hardwarovém šifrování Opal ignorovány." -#: src/cryptsetup.c:1893 +#: src/cryptsetup.c:1894 msgid "Device activated but cannot make flags persistent." msgstr "Zařízení aktivováno, ale příznaky nelze učinit trvalými." -#: src/cryptsetup.c:1973 src/cryptsetup.c:2041 +#: src/cryptsetup.c:1974 src/cryptsetup.c:2042 #, c-format msgid "Keyslot %d is selected for deletion." msgstr "Ke smazání vybrán klíč na pozici %d." -#: src/cryptsetup.c:1985 src/cryptsetup.c:2045 +#: src/cryptsetup.c:1986 src/cryptsetup.c:2046 msgid "This is the last keyslot. Device will become unusable after purging this key." msgstr "" "Toto je poslední pozice klíče. Smazáním tohoto klíče přijdete o možnost\n" "zařízení použít." -#: src/cryptsetup.c:1986 +#: src/cryptsetup.c:1987 msgid "Enter any remaining passphrase: " msgstr "Zadejte jakékoliv jiné heslo: " -#: src/cryptsetup.c:1987 src/cryptsetup.c:2047 +#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 msgid "Operation aborted, the keyslot was NOT wiped.\n" msgstr "Operace zrušena, pozice klíče NEBYLA vymazána.\n" -#: src/cryptsetup.c:2023 +#: src/cryptsetup.c:2024 msgid "Enter passphrase to be deleted: " msgstr "Zadejte heslo, které se má smazat: " -#: src/cryptsetup.c:2073 src/cryptsetup.c:2425 src/cryptsetup.c:3085 -#: src/cryptsetup.c:3252 +#: src/cryptsetup.c:2074 src/cryptsetup.c:2426 src/cryptsetup.c:3087 +#: src/cryptsetup.c:3254 #, c-format msgid "Device %s is not a valid LUKS2 device." msgstr "Zařízení %s není platným zařízením LUKS2." -#: src/cryptsetup.c:2112 src/cryptsetup.c:2311 +#: src/cryptsetup.c:2113 src/cryptsetup.c:2312 msgid "Enter new passphrase for key slot: " msgstr "Zadejte nové heslo pro pozici klíče: " -#: src/cryptsetup.c:2146 src/utils_luks.c:342 +#: src/cryptsetup.c:2147 src/utils_luks.c:342 #, c-format msgid "Enter token PIN: " msgstr "Zadejte PIN k tokenu: " -#: src/cryptsetup.c:2148 src/utils_luks.c:344 +#: src/cryptsetup.c:2149 src/utils_luks.c:344 #, c-format msgid "Enter token %d PIN: " msgstr "Zadejte PIN k tokenu %d: " -#: src/cryptsetup.c:2207 +#: src/cryptsetup.c:2208 msgid "WARNING: The --key-slot parameter is used for new keyslot number.\n" msgstr "POZOR: Parametr --key-slot se použije pro číslo nové pozice klíče.\n" -#: src/cryptsetup.c:2284 src/utils_reencrypt_luks1.c:1094 +#: src/cryptsetup.c:2285 src/utils_reencrypt_luks1.c:1094 #, c-format msgid "Enter any existing passphrase: " msgstr "Zadejte jakékoliv existující heslo: " -#: src/cryptsetup.c:2380 +#: src/cryptsetup.c:2381 msgid "Enter passphrase to be changed: " msgstr "Zadejte heslo, které má být změněno: " -#: src/cryptsetup.c:2396 src/utils_reencrypt_luks1.c:1080 +#: src/cryptsetup.c:2397 src/utils_reencrypt_luks1.c:1080 msgid "Enter new passphrase: " msgstr "Zadejte nové heslo: " -#: src/cryptsetup.c:2446 +#: src/cryptsetup.c:2447 msgid "Enter passphrase for keyslot to be converted: " msgstr "Zadejte heslo pro pozici klíče, který má být převeden: " -#: src/cryptsetup.c:2470 +#: src/cryptsetup.c:2471 msgid "Only one device argument for isLuks operation is supported." msgstr "U operace isLuks je podporován pouze jeden argument se zařízením." -#: src/cryptsetup.c:2575 +#: src/cryptsetup.c:2576 #, c-format msgid "Keyslot %d does not contain unbound key." msgstr "Pozice klíče %d neobsahuje nepřiřazený klíč." -#: src/cryptsetup.c:2580 +#: src/cryptsetup.c:2581 msgid "" "The header dump with unbound key is sensitive information.\n" "This dump should be stored encrypted in a safe place." @@ -2577,52 +2577,52 @@ msgstr "" "Výpis hlavičky s nepřiřazeným klíčem je citlivý údaj.\n" "Tento výpis by měl být uložen na bezpečném místě a v zašifrované podobě." -#: src/cryptsetup.c:2675 src/cryptsetup.c:2711 +#: src/cryptsetup.c:2676 src/cryptsetup.c:2713 #, c-format msgid "%s is not active %s device name." msgstr "%s není název aktivního zařízení %s." -#: src/cryptsetup.c:2706 +#: src/cryptsetup.c:2708 #, c-format msgid "%s is not active LUKS device name or header is missing." msgstr "%s není název aktivního zařízení LUKS nebo mu chybí hlavička." -#: src/cryptsetup.c:2783 src/cryptsetup.c:2802 +#: src/cryptsetup.c:2785 src/cryptsetup.c:2804 msgid "Option --header-backup-file is required." msgstr "Je vyžadován přepínač --header-backup-file." -#: src/cryptsetup.c:2833 +#: src/cryptsetup.c:2835 #, c-format msgid "%s is not cryptsetup managed device." msgstr "%s není zařízení spravované nástrojem cryptsetup." -#: src/cryptsetup.c:2844 +#: src/cryptsetup.c:2846 #, c-format msgid "Refresh is not supported for device type %s" msgstr "Reaktivace není na zařízení typu %s podporována" -#: src/cryptsetup.c:2894 +#: src/cryptsetup.c:2896 #, c-format msgid "Unrecognized metadata device type %s." msgstr "Nerozpoznaná metadata druhu zařízení %s." -#: src/cryptsetup.c:2896 +#: src/cryptsetup.c:2898 msgid "Command requires device and mapped name as arguments." msgstr "Příkaz vyžaduje jako argumenty zařízení a mapovaný název." -#: src/cryptsetup.c:2914 +#: src/cryptsetup.c:2916 msgid "Enter OPAL PSID: " msgstr "Zadejte Opal PSID: " -#: src/cryptsetup.c:2914 +#: src/cryptsetup.c:2916 msgid "Enter OPAL Admin password: " msgstr "Zadejte heslo správce Opal: " -#: src/cryptsetup.c:2922 +#: src/cryptsetup.c:2924 msgid "WARNING: WHOLE disk will be factory reset and all data will be lost! Continue?" msgstr "POZOR: CELÝ disk bude uveden do továrního nastavení a všechna data budou ztracena! Pokračovat?" -#: src/cryptsetup.c:2965 +#: src/cryptsetup.c:2967 #, c-format msgid "" "This operation will erase all keyslots on device %s.\n" @@ -2631,368 +2631,368 @@ msgstr "" "Tento úkon smaže všechny pozice s klíči na zařízení %s.\n" "Po jeho dokončení zařízení bude nepoužitelné." -#: src/cryptsetup.c:2972 +#: src/cryptsetup.c:2974 msgid "Operation aborted, keyslots were NOT wiped.\n" msgstr "Operace zrušena, pozice s klíči NEBYLY smazány.\n" -#: src/cryptsetup.c:3011 +#: src/cryptsetup.c:3013 msgid "Invalid LUKS type, only luks1 and luks2 are supported." msgstr "Neplatný druh formátu LUKS. Podporován je pouze LUKS1 a LUKS2." -#: src/cryptsetup.c:3027 +#: src/cryptsetup.c:3029 #, c-format msgid "Device is already %s type." msgstr "Zařízení je již druhu %s." -#: src/cryptsetup.c:3034 +#: src/cryptsetup.c:3036 #, c-format msgid "This operation will convert %s to %s format.\n" msgstr "Tato operace převede formát %s na %s.\n" -#: src/cryptsetup.c:3037 +#: src/cryptsetup.c:3039 msgid "Operation aborted, device was NOT converted.\n" msgstr "Operace zrušena, zařízení NEBYLO převedeno.\n" -#: src/cryptsetup.c:3077 +#: src/cryptsetup.c:3079 msgid "Option --priority, --label or --subsystem is missing." msgstr "Chybí přepínač --priority, --label nebo --subsystem." -#: src/cryptsetup.c:3111 src/cryptsetup.c:3151 src/cryptsetup.c:3171 +#: src/cryptsetup.c:3113 src/cryptsetup.c:3153 src/cryptsetup.c:3173 #, c-format msgid "Token %d is invalid." msgstr "Token %d je neplatný." -#: src/cryptsetup.c:3114 src/cryptsetup.c:3174 +#: src/cryptsetup.c:3116 src/cryptsetup.c:3176 #, c-format msgid "Token %d in use." msgstr "Token %d se používá." -#: src/cryptsetup.c:3126 +#: src/cryptsetup.c:3128 #, c-format msgid "Failed to add luks2-keyring token %d." msgstr "Přidání tokenu %d klíčenky LUKS2 selhalo." -#: src/cryptsetup.c:3137 src/cryptsetup.c:3200 +#: src/cryptsetup.c:3139 src/cryptsetup.c:3202 #, c-format msgid "Failed to assign token %d to keyslot %d." msgstr "Přiřazení tokenu %d do pozice s klíčem %d selhalo." -#: src/cryptsetup.c:3154 +#: src/cryptsetup.c:3156 #, c-format msgid "Token %d is not in use." msgstr "Token %d se nepoužívá." -#: src/cryptsetup.c:3191 +#: src/cryptsetup.c:3193 msgid "Failed to import token from file." msgstr "Import tokenu ze souboru selhal." -#: src/cryptsetup.c:3216 +#: src/cryptsetup.c:3218 #, c-format msgid "Failed to get token %d for export." msgstr "Získání tokenu %d za účelem exportu selhalo." -#: src/cryptsetup.c:3229 +#: src/cryptsetup.c:3231 #, c-format msgid "Token %d is not assigned to keyslot %d." msgstr "Token %d není přiřazen pozici s klíčem %d." -#: src/cryptsetup.c:3231 src/cryptsetup.c:3238 +#: src/cryptsetup.c:3233 src/cryptsetup.c:3240 #, c-format msgid "Failed to unassign token %d from keyslot %d." msgstr "Zrušení přiřazení tokenu %d k pozici s klíčem %d selhalo." -#: src/cryptsetup.c:3297 +#: src/cryptsetup.c:3299 msgid "Option --tcrypt-hidden, --tcrypt-system or --tcrypt-backup is supported only for TCRYPT device." msgstr "Přepínač --tcrypt-hidden, --tcrypt-system nebo --tcrypt-backup je podporován jen u zařízení TCRYPT." -#: src/cryptsetup.c:3300 +#: src/cryptsetup.c:3302 msgid "Option --veracrypt or --disable-veracrypt is supported only for TCRYPT device type." msgstr "Přepínače --veracrypt a --disable-veracrypt jsou podporovány jen u typu zařízení TCRYPT." -#: src/cryptsetup.c:3303 +#: src/cryptsetup.c:3305 msgid "Option --veracrypt-pim is supported only for VeraCrypt compatible devices." msgstr "Přepínač --veracrypt-pim je podporován jen u zařízení kompatibilním s VeraCrypt." -#: src/cryptsetup.c:3307 +#: src/cryptsetup.c:3309 msgid "Option --veracrypt-query-pim is supported only for VeraCrypt compatible devices." msgstr "Přepínač --veracrypt-query-pim je podporován jen u zařízení kompatibilním s VeraCrypt." -#: src/cryptsetup.c:3309 +#: src/cryptsetup.c:3311 msgid "The options --veracrypt-pim and --veracrypt-query-pim are mutually exclusive." msgstr "Přepínače --veracrypt-pim a --veracrypt-query-pim se vzájemně vylučují." -#: src/cryptsetup.c:3318 +#: src/cryptsetup.c:3320 msgid "Option --persistent is not allowed with --test-passphrase." msgstr "Přepínač --persistent není dovolen současně s --test-passphrase." -#: src/cryptsetup.c:3321 +#: src/cryptsetup.c:3323 msgid "Options --refresh and --test-passphrase are mutually exclusive." msgstr "Přepínače --refresh a --test-passphrase se vzájemně vylučují." -#: src/cryptsetup.c:3324 +#: src/cryptsetup.c:3326 msgid "Option --shared is allowed only for open of plain device." msgstr "Přepínač --shared je dovolen jen při úkonu otevírání zařízení plain." -#: src/cryptsetup.c:3327 +#: src/cryptsetup.c:3329 msgid "Option --skip is supported only for open of plain and loopaes devices." msgstr "Přepínač --skip je podporován jen při otevírání zařízení plain a loopaes." -#: src/cryptsetup.c:3330 +#: src/cryptsetup.c:3332 msgid "Option --offset with open action is only supported for plain and loopaes devices." msgstr "Při otevírání je přepínač --offset podporován jen u zařízení plain a loopaes." -#: src/cryptsetup.c:3333 +#: src/cryptsetup.c:3335 msgid "Option --tcrypt-hidden cannot be combined with --allow-discards." msgstr "Přepínač --tcrypt-hidden nelze použít s přepínačem --allow-discards." -#: src/cryptsetup.c:3337 +#: src/cryptsetup.c:3339 msgid "Sector size option with open action is supported only for plain devices." msgstr "Otevírání s přepínačem velikosti sektoru je podporován jen u zařízení plain." # FIXME: "Large IV sectors" should read "IV large sectors". -#: src/cryptsetup.c:3341 +#: src/cryptsetup.c:3343 msgid "Large IV sectors option is supported only for opening plain type device with sector size larger than 512 bytes." msgstr "Volba inicializačního vektoru s velkými sektory je podporována jen při otevírání zařízení typu plain s velikostí sektoru větší než 512 bajtů." -#: src/cryptsetup.c:3346 +#: src/cryptsetup.c:3348 msgid "Option --test-passphrase is allowed only for open of LUKS, TCRYPT, BITLK and FVAULT2 devices." msgstr "Přepínač --test-passphrase je dovolen pouze při otevírání zařízení LUKS, TCRYPT, BITLK a FVAULT2." -#: src/cryptsetup.c:3349 src/cryptsetup.c:3379 +#: src/cryptsetup.c:3351 src/cryptsetup.c:3381 msgid "Options --device-size and --size cannot be combined." msgstr "Přepínače --device-size a --size nelze kombinovat." -#: src/cryptsetup.c:3352 +#: src/cryptsetup.c:3354 msgid "Option --unbound is allowed only for open of luks device." msgstr "Přepínač --unbound je dovolen jen při otevírání zařízení LUKS." -#: src/cryptsetup.c:3355 +#: src/cryptsetup.c:3357 msgid "Option --unbound cannot be used without --test-passphrase." msgstr "Přepínač --unbound není dovolen současně s --test-passphrase." -#: src/cryptsetup.c:3359 +#: src/cryptsetup.c:3361 msgid "Option --volume-key-keyring cannot be combined with --hash or --volume-key-file." msgstr "Přepínač --volume-key-keyring nelze použít s přepínači --hash a --volume-key-file." -#: src/cryptsetup.c:3362 +#: src/cryptsetup.c:3364 msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "Oba přepínače --volume-key-file musí být ve dvojici s odpovídajícími přepínači --key-size." -#: src/cryptsetup.c:3371 src/veritysetup.c:673 src/integritysetup.c:787 +#: src/cryptsetup.c:3373 src/veritysetup.c:673 src/integritysetup.c:793 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "Přepínače --cancel-deferred a --deferred se vzájemně vylučují." -#: src/cryptsetup.c:3387 +#: src/cryptsetup.c:3389 msgid "Option --active-name can be set only for LUKS2 device." msgstr "Přepínač --active-name lze použít jen u zařízení LUKS2." -#: src/cryptsetup.c:3390 +#: src/cryptsetup.c:3392 msgid "Options --active-name and --force-offline-reencrypt cannot be combined." msgstr "Přepínače --active-name a --force-offline-reencrypt nelze kombinovat." -#: src/cryptsetup.c:3393 +#: src/cryptsetup.c:3395 msgid "Options --new-volume-key-file and --keep-key cannot be combined." msgstr "Přepínače --new-volume-key-file a --keep-key nelze kombinovat." -#: src/cryptsetup.c:3396 +#: src/cryptsetup.c:3398 msgid "Options --new-volume-key-keyring and --keep-key cannot be combined." msgstr "Přepínače --new-volume-key-keyring a --keep-key nelze kombinovat." -#: src/cryptsetup.c:3404 src/cryptsetup.c:3434 +#: src/cryptsetup.c:3406 src/cryptsetup.c:3436 msgid "Keyslot specification is required." msgstr "Je nutné určit pozici s klíčem." -#: src/cryptsetup.c:3412 +#: src/cryptsetup.c:3414 msgid "Options --align-payload and --offset cannot be combined." msgstr "Přepínače --align-payload a --offset nelze kombinovat." -#: src/cryptsetup.c:3415 +#: src/cryptsetup.c:3417 msgid "Option --integrity-no-wipe can be used only for format action with integrity extension." msgstr "Přepínač --integrity-no-wipe smí být použit jen při formátování s rozšířením integrity." -#: src/cryptsetup.c:3418 +#: src/cryptsetup.c:3420 msgid "Only one of --use-[u]random options is allowed." msgstr "Je dovolen pouze jeden z přepínačů --use-[u]random." -#: src/cryptsetup.c:3426 +#: src/cryptsetup.c:3428 msgid "Key size is required with --unbound option." msgstr "Přepínač --unbound vyžaduje velikost klíče." -#: src/cryptsetup.c:3446 +#: src/cryptsetup.c:3448 msgid "Invalid token action." msgstr "Neplatná operace tokenu." -#: src/cryptsetup.c:3449 +#: src/cryptsetup.c:3451 msgid "--key-description parameter is mandatory for token add action." msgstr "Parametr --key-description je při přidávání tokenu povinný." -#: src/cryptsetup.c:3453 src/cryptsetup.c:3466 +#: src/cryptsetup.c:3455 src/cryptsetup.c:3468 msgid "Action requires specific token. Use --token-id parameter." msgstr "Akce vyžaduje určitý token. Použijte parametr --token-id." -#: src/cryptsetup.c:3457 +#: src/cryptsetup.c:3459 msgid "Option --unbound is valid only with token add action." msgstr "Přepínač --unbound lze použít pouze s akcí přidání." -#: src/cryptsetup.c:3459 +#: src/cryptsetup.c:3461 msgid "Options --key-slot and --unbound cannot be combined." msgstr "Přepínače --key-slot a --unbound nelze kombinovat." -#: src/cryptsetup.c:3464 +#: src/cryptsetup.c:3466 msgid "Action requires specific keyslot. Use --key-slot parameter." msgstr "Akce vyžaduje určitou pozici klíče. Použijte parametr --key-slot." -#: src/cryptsetup.c:3480 +#: src/cryptsetup.c:3482 msgid " [--type ] []" msgstr " [--type ] []" -#: src/cryptsetup.c:3480 src/veritysetup.c:487 src/integritysetup.c:554 +#: src/cryptsetup.c:3482 src/veritysetup.c:487 src/integritysetup.c:560 msgid "open device as " msgstr "otevře zařízení jako " -#: src/cryptsetup.c:3481 src/cryptsetup.c:3482 src/cryptsetup.c:3483 -#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:555 -#: src/integritysetup.c:556 src/integritysetup.c:558 +#: src/cryptsetup.c:3483 src/cryptsetup.c:3484 src/cryptsetup.c:3485 +#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:561 +#: src/integritysetup.c:562 src/integritysetup.c:564 msgid "" msgstr "" -#: src/cryptsetup.c:3481 src/veritysetup.c:488 src/integritysetup.c:555 +#: src/cryptsetup.c:3483 src/veritysetup.c:488 src/integritysetup.c:561 msgid "close device (remove mapping)" msgstr "zavře zařízení (odstraní mapování)" -#: src/cryptsetup.c:3482 src/integritysetup.c:558 +#: src/cryptsetup.c:3484 src/integritysetup.c:564 msgid "resize active device" msgstr "změní velikost aktivního zařízení" -#: src/cryptsetup.c:3483 +#: src/cryptsetup.c:3485 msgid "show device status" msgstr "zobrazí stav zařízení" -#: src/cryptsetup.c:3484 +#: src/cryptsetup.c:3486 msgid "[--cipher ]" msgstr "[--cipher <šifra>]" -#: src/cryptsetup.c:3484 +#: src/cryptsetup.c:3486 msgid "benchmark cipher" msgstr "zhodnotí výkon šifry" -#: src/cryptsetup.c:3485 src/cryptsetup.c:3486 src/cryptsetup.c:3487 -#: src/cryptsetup.c:3488 src/cryptsetup.c:3489 src/cryptsetup.c:3496 -#: src/cryptsetup.c:3497 src/cryptsetup.c:3498 src/cryptsetup.c:3499 -#: src/cryptsetup.c:3500 src/cryptsetup.c:3501 src/cryptsetup.c:3502 -#: src/cryptsetup.c:3503 src/cryptsetup.c:3504 src/cryptsetup.c:3505 +#: src/cryptsetup.c:3487 src/cryptsetup.c:3488 src/cryptsetup.c:3489 +#: src/cryptsetup.c:3490 src/cryptsetup.c:3491 src/cryptsetup.c:3498 +#: src/cryptsetup.c:3499 src/cryptsetup.c:3500 src/cryptsetup.c:3501 +#: src/cryptsetup.c:3502 src/cryptsetup.c:3503 src/cryptsetup.c:3504 +#: src/cryptsetup.c:3505 src/cryptsetup.c:3506 src/cryptsetup.c:3507 msgid "" msgstr "" -#: src/cryptsetup.c:3485 +#: src/cryptsetup.c:3487 msgid "try to repair on-disk metadata" msgstr "pokusí se opravit metadata uložená na disku" -#: src/cryptsetup.c:3486 +#: src/cryptsetup.c:3488 msgid "reencrypt LUKS2 device" msgstr "přešifruje zařízení LUKS2" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3489 msgid "erase all keyslots (remove encryption key)" msgstr "smaže všechny pozice s klíči (odstraní šifrovací klíč)" -#: src/cryptsetup.c:3488 +#: src/cryptsetup.c:3490 msgid "convert LUKS from/to LUKS2 format" msgstr "převede formát LUKS do/z formátu LUKS2" -#: src/cryptsetup.c:3489 +#: src/cryptsetup.c:3491 msgid "set permanent configuration options for LUKS2" msgstr "nastaví trvalé volby konfigurace pro LUKS2" -#: src/cryptsetup.c:3490 src/cryptsetup.c:3491 +#: src/cryptsetup.c:3492 src/cryptsetup.c:3493 msgid " []" msgstr " []" -#: src/cryptsetup.c:3490 +#: src/cryptsetup.c:3492 msgid "formats a LUKS device" msgstr "naformátuje zařízení LUKS" -#: src/cryptsetup.c:3491 +#: src/cryptsetup.c:3493 msgid "add key to LUKS device" msgstr "do zařízení LUKS přidá klíč" -#: src/cryptsetup.c:3492 src/cryptsetup.c:3493 src/cryptsetup.c:3494 +#: src/cryptsetup.c:3494 src/cryptsetup.c:3495 src/cryptsetup.c:3496 msgid " []" msgstr " []" -#: src/cryptsetup.c:3492 +#: src/cryptsetup.c:3494 msgid "removes supplied key or key file from LUKS device" msgstr "odstraní zadaný klíč nebo soubor s klíčem ze zařízení LUKS" -#: src/cryptsetup.c:3493 +#: src/cryptsetup.c:3495 msgid "changes supplied key or key file of LUKS device" msgstr "změní zadaný klíč nebo soubor s klíčem u zařízení LUKS" -#: src/cryptsetup.c:3494 +#: src/cryptsetup.c:3496 msgid "converts a key to new pbkdf parameters" msgstr "převede klíč do nových parametrů PBKDF" -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3497 msgid " " msgstr " " -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3497 msgid "wipes key with number from LUKS device" msgstr "smaže klíč s číslem ze zařízení LUKS" -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3498 msgid "print UUID of LUKS device" msgstr "zobrazí UUID zařízení LUKS" -#: src/cryptsetup.c:3497 +#: src/cryptsetup.c:3499 msgid "tests for LUKS partition header" msgstr "otestuje na hlavičku oddílu LUKS" -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3500 msgid "dump LUKS partition information" msgstr "vypíše údaje o oddílu LUKS" -#: src/cryptsetup.c:3499 +#: src/cryptsetup.c:3501 msgid "dump TCRYPT device information" msgstr "vypíše údaje o oddílu TCRYPT" -#: src/cryptsetup.c:3500 +#: src/cryptsetup.c:3502 msgid "dump BITLK device information" msgstr "vypíše údaje o zařízení BITLK" -#: src/cryptsetup.c:3501 +#: src/cryptsetup.c:3503 msgid "dump FVAULT2 device information" msgstr "vypíše údaje o zařízení FVAULT2" # TODO: not consistent with previous line -#: src/cryptsetup.c:3502 +#: src/cryptsetup.c:3504 msgid "Suspend LUKS device and wipe key (all IOs are frozen)" msgstr "Uspí zařízení LUKS a smaže klíč (všechny operace budou zmrazeny)" # TODO: not consistent with previous line -#: src/cryptsetup.c:3503 +#: src/cryptsetup.c:3505 msgid "Resume suspended LUKS device" msgstr "Probudí uspané zařízení LUKS" # TODO: not consistent with previous line -#: src/cryptsetup.c:3504 +#: src/cryptsetup.c:3506 msgid "Backup LUKS device header and keyslots" msgstr "Zálohuje hlavičku zařízení LUKS a jeho pozice s klíči" # TODO: not consistent with previous line -#: src/cryptsetup.c:3505 +#: src/cryptsetup.c:3507 msgid "Restore LUKS device header and keyslots" msgstr "Obnoví hlavičku zařízení LUKS a jeho pozice s klíči" -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3508 msgid " " msgstr " " -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3508 msgid "Manipulate LUKS2 tokens" msgstr "Zachází s tokeny LUKS2" -#: src/cryptsetup.c:3525 src/veritysetup.c:505 src/integritysetup.c:573 +#: src/cryptsetup.c:3527 src/veritysetup.c:505 src/integritysetup.c:579 msgid "" "\n" " is one of:\n" @@ -3000,7 +3000,7 @@ msgstr "" "\n" " je jedna z:\n" -#: src/cryptsetup.c:3531 +#: src/cryptsetup.c:3533 msgid "" "\n" "You can also use old syntax aliases:\n" @@ -3012,7 +3012,7 @@ msgstr "" "\topen: create (plainOpen), luksOpen, loopaesOpen, tcryptOpen, bitlkOpen, fvault2Open\n" "\tclose: remove (plainClose), luksClose, loopaesClose, tcryptClose, bitlkClose, fvault2Close\n" -#: src/cryptsetup.c:3535 +#: src/cryptsetup.c:3537 #, c-format msgid "" "\n" @@ -3027,7 +3027,7 @@ msgstr "" " je číslo pozice klíče LUKS, který se má upravit\n" " je volitelný soubor s novým klíčem pro akci luksAddKey\n" -#: src/cryptsetup.c:3542 +#: src/cryptsetup.c:3544 #, c-format msgid "" "\n" @@ -3036,7 +3036,7 @@ msgstr "" "\n" "Výchozí zakompilovaný formát metadat (pro akci luksFormat) je %s.\n" -#: src/cryptsetup.c:3547 +#: src/cryptsetup.c:3549 msgid "" "\n" "LUKS2 external token plugin support is enabled.\n" @@ -3044,12 +3044,12 @@ msgstr "" "\n" "Podpora pro zásuvný modul externího tokenu LUKS2 je zapnuta.\n" -#: src/cryptsetup.c:3548 +#: src/cryptsetup.c:3550 #, c-format msgid "LUKS2 external token plugin path: %s.\n" msgstr "Cesta k zásuvnému modulu externího tokenu LUKS2: %s.\n" -#: src/cryptsetup.c:3550 +#: src/cryptsetup.c:3552 msgid "" "\n" "LUKS2 external token plugin support is disabled.\n" @@ -3057,7 +3057,7 @@ msgstr "" "\n" "Podpora pro zásuvný modul externího tokenu LUKS2 je vypnuta.\n" -#: src/cryptsetup.c:3554 +#: src/cryptsetup.c:3556 #, c-format msgid "" "\n" @@ -3074,7 +3074,7 @@ msgstr "" "Výchozí PBKDF pro LUKS2: %s\n" "\tDoba iterací: %d, nutná paměť: %d kB, souběžná vlákna: %d\n" -#: src/cryptsetup.c:3565 +#: src/cryptsetup.c:3567 #, c-format msgid "" "\n" @@ -3089,123 +3089,127 @@ msgstr "" "\tplain: %s, Klíč: %d bitů, Haš hesla: %s\n" "\tLUKS: %s, Klíč: %d bitů, Haš hlavičky LUKS: %s, RNG: %s\n" -#: src/cryptsetup.c:3574 +#: src/cryptsetup.c:3576 msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: V režimu XTS (dva vnitřní klíče) bude výchozí velikost klíče zdvojnásobena.\n" -#: src/cryptsetup.c:3592 src/veritysetup.c:647 src/integritysetup.c:733 +#: src/cryptsetup.c:3594 src/veritysetup.c:647 src/integritysetup.c:739 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: vyžaduje %s jako argumenty" -#: src/cryptsetup.c:3632 src/utils_reencrypt_luks1.c:1143 +#: src/cryptsetup.c:3634 src/utils_reencrypt_luks1.c:1143 msgid "Key slot is invalid." msgstr "Pozice klíče není platná." -#: src/cryptsetup.c:3660 +#: src/cryptsetup.c:3662 msgid "Device size must be multiple of 512 bytes sector." msgstr "Velikost zařízení musí být násobkem 512bajtových sektorů." -#: src/cryptsetup.c:3665 +#: src/cryptsetup.c:3667 msgid "Invalid max reencryption hotzone size specification." msgstr "Zadána neplatná maximální velikost horké zóny při přešifrování." -#: src/cryptsetup.c:3679 src/cryptsetup.c:3696 src/cryptsetup.c:3708 +#: src/cryptsetup.c:3681 src/cryptsetup.c:3698 src/cryptsetup.c:3710 msgid "Key size must be a multiple of 8 bits" msgstr "Velikost klíče musí být násobkem 8 bitů." -#: src/cryptsetup.c:3686 +#: src/cryptsetup.c:3688 msgid "At most 2 key size specifications can be supplied." msgstr "Zadat lze nejvíce 2 velikosti klíče." # TODO: Pluralize -#: src/cryptsetup.c:3715 src/cryptsetup.c:3726 +#: src/cryptsetup.c:3717 src/cryptsetup.c:3728 #, c-format msgid "At most %d volume key specifications can be supplied." msgstr "Zadat lze nejvíce %d klíčů svazku." -#: src/cryptsetup.c:3738 +#: src/cryptsetup.c:3740 #, c-format msgid "At most %d keyring link specifications can be supplied." msgstr "Zadat lze nejvíce %d klíčenek." -#: src/cryptsetup.c:3747 +#: src/cryptsetup.c:3749 msgid "Maximum device reduce size is 1 GiB." msgstr "Maximální velikost zmenšení zařízení je 1 GiB." -#: src/cryptsetup.c:3750 +#: src/cryptsetup.c:3752 msgid "Reduce size must be multiple of 512 bytes sector." msgstr "Velikost zmenšení musí být násobkem 512bajtových sektorů." -#: src/cryptsetup.c:3767 +#: src/cryptsetup.c:3769 msgid "Option --priority can be only ignore/normal/prefer." msgstr "Přepínač --priority smí mít pouze argument ignore, normal a prefer." -#: src/cryptsetup.c:3786 src/veritysetup.c:568 src/integritysetup.c:653 +#: src/cryptsetup.c:3774 +msgid "Invalid maximal tries specification." +msgstr "Zadáno neplatné maximum pokusů." + +#: src/cryptsetup.c:3793 src/veritysetup.c:568 src/integritysetup.c:659 msgid "Show this help message" msgstr "Zobrazí tuto nápovědu" -#: src/cryptsetup.c:3787 src/veritysetup.c:569 src/integritysetup.c:654 +#: src/cryptsetup.c:3794 src/veritysetup.c:569 src/integritysetup.c:660 msgid "Display brief usage" msgstr "Zobrazí stručný návod na použití" -#: src/cryptsetup.c:3788 src/veritysetup.c:570 src/integritysetup.c:655 +#: src/cryptsetup.c:3795 src/veritysetup.c:570 src/integritysetup.c:661 msgid "Print package version" msgstr "Vypíše verzi balíku" -#: src/cryptsetup.c:3799 src/veritysetup.c:581 src/integritysetup.c:666 +#: src/cryptsetup.c:3806 src/veritysetup.c:581 src/integritysetup.c:672 msgid "Help options:" msgstr "Přepínače nápovědy:" -#: src/cryptsetup.c:3822 src/veritysetup.c:602 src/integritysetup.c:686 +#: src/cryptsetup.c:3829 src/veritysetup.c:602 src/integritysetup.c:692 msgid "[OPTION...] " msgstr "[PŘEPÍNAČ…] " -#: src/cryptsetup.c:3831 src/veritysetup.c:611 src/integritysetup.c:697 +#: src/cryptsetup.c:3838 src/veritysetup.c:611 src/integritysetup.c:703 msgid "Argument missing." msgstr "Chybí argument ." -#: src/cryptsetup.c:3910 src/veritysetup.c:642 src/integritysetup.c:728 +#: src/cryptsetup.c:3917 src/veritysetup.c:642 src/integritysetup.c:734 msgid "Unknown action." msgstr "Neznámá akce." -#: src/cryptsetup.c:3928 +#: src/cryptsetup.c:3935 msgid "Option --key-file takes precedence over specified key file argument." msgstr "Přepínač --key-file má přednost před zadaným argumentem souboru s klíčem." -#: src/cryptsetup.c:3934 +#: src/cryptsetup.c:3941 msgid "Only one --key-file argument is allowed." msgstr "Je dovolen pouze jeden argument přepínače --key-file." -#: src/cryptsetup.c:3939 +#: src/cryptsetup.c:3946 msgid "Password-based key derivation function (PBKDF) can be only pbkdf2 or argon2i/argon2id." msgstr "Funkce pro odvození klíče na základě hesla (PBKDF) smí být pouze pbkdf2 nebo argon2i/argon2id." -#: src/cryptsetup.c:3944 +#: src/cryptsetup.c:3951 msgid "PBKDF forced iterations cannot be combined with iteration time option." msgstr "Vynucené iterace PBKDF nelze kombinovat s volnou doby iterací." -#: src/cryptsetup.c:3949 +#: src/cryptsetup.c:3956 msgid "Cannot link volume key to a keyring when keyring is disabled." msgstr "Je-li klíčenka vypnuta, klíč svazku nelze do klíčenky přidat." -#: src/cryptsetup.c:3954 +#: src/cryptsetup.c:3961 msgid "Cannot use keyring key description when keyring is disabled." msgstr "Je-li klíčenka vypnuta, popis klíče z klíčenky nelze použít." -#: src/cryptsetup.c:3959 +#: src/cryptsetup.c:3966 msgid "Inline integrity must be used together with --integrity option." msgstr "Inline integrita musí být použita spolu s přepínačem --integrity." -#: src/cryptsetup.c:3970 +#: src/cryptsetup.c:3977 msgid "Options --keyslot-cipher and --keyslot-key-size must be used together." msgstr "Přepínače --keyslot-cipher a --keyslot-key-size musí být použity spolu." -#: src/cryptsetup.c:3978 +#: src/cryptsetup.c:3985 msgid "No action taken. Invoked with --test-args option.\n" msgstr "Žádný úkon nebude proveden. Zavoláno s přepínačem --test-args.\n" -#: src/cryptsetup.c:3991 +#: src/cryptsetup.c:3998 msgid "Cannot disable metadata locking." msgstr "Zamykání metadata nelze vypnout." @@ -3270,7 +3274,7 @@ msgstr "Příkaz vyžaduje argument nebo přepínač --root-ha msgid " " msgstr " " -#: src/veritysetup.c:485 src/integritysetup.c:553 +#: src/veritysetup.c:485 src/integritysetup.c:559 msgid "format device" msgstr "naformátuje zařízení" @@ -3286,7 +3290,7 @@ msgstr "ověří zařízení" msgid " []" msgstr " []" -#: src/veritysetup.c:489 src/integritysetup.c:556 +#: src/veritysetup.c:489 src/integritysetup.c:562 msgid "show active device status" msgstr "zobrazí stav aktivního zařízení" @@ -3294,7 +3298,7 @@ msgstr "zobrazí stav aktivního zařízení" msgid "" msgstr "" -#: src/veritysetup.c:490 src/integritysetup.c:557 +#: src/veritysetup.c:490 src/integritysetup.c:563 msgid "show on-disk information" msgstr "zobrazí údaje z disku" @@ -3336,7 +3340,7 @@ msgstr "Přepínač --panic-on-corruption a --restart-on-corruption nelze použ msgid "Option --error-as-corruption must be used with --panic-on-corruption or --restart-on-corruption." msgstr "Přepínač --error-as-corruption potřebuje přepínač --panic-on-corruption nebo --restart-on-corruption." -#: src/integritysetup.c:168 +#: src/integritysetup.c:169 #, c-format msgid "" "This will overwrite data on %s and %s irrevocably.\n" @@ -3346,33 +3350,33 @@ msgstr "" "Pro zachování datového zařízení použije přepínač --no-wipe (a pak jej\n" "aktivujte pomocí --integrity-recalculate)." -#: src/integritysetup.c:213 +#: src/integritysetup.c:215 #, c-format msgid "Formatted with tag size %u%s, internal integrity %s.\n" msgstr "Formátováno s velikostí značky %u%s, vnitřní integrita %s.\n" -#: src/integritysetup.c:214 +#: src/integritysetup.c:216 msgid " (inline hw tags)" msgstr " (inline hardwarové značky)" -#: src/integritysetup.c:303 +#: src/integritysetup.c:305 msgid "Setting recalculate flag is not supported, you may consider using --wipe instead." msgstr "Nastavení příznaku přepočtu není podporováno, místo toho zvažte použití --wipe." -#: src/integritysetup.c:380 src/integritysetup.c:540 +#: src/integritysetup.c:382 src/integritysetup.c:546 #, c-format msgid "Device %s is not a valid INTEGRITY device." msgstr "Zařízení %s není platným zařízením INTEGRITY." -#: src/integritysetup.c:553 src/integritysetup.c:557 +#: src/integritysetup.c:559 src/integritysetup.c:563 msgid "" msgstr "" -#: src/integritysetup.c:554 +#: src/integritysetup.c:560 msgid " " msgstr " " -#: src/integritysetup.c:577 +#: src/integritysetup.c:583 #, c-format msgid "" "\n" @@ -3383,7 +3387,7 @@ msgstr "" " je zařízení, které bude vytvořeno pod %s\n" " je zařízení obsahující data se značkami integrity\n" -#: src/integritysetup.c:582 +#: src/integritysetup.c:588 #, c-format msgid "" "\n" @@ -3397,48 +3401,48 @@ msgstr "" "\tMaximální velikost souboru s klíčem: %d kB\n" # TODO: Pluralize -#: src/integritysetup.c:639 +#: src/integritysetup.c:645 #, c-format msgid "Invalid --%s size. Maximum is %u bytes." msgstr "Neplatná velikost --%s. Maximální je %u bajtů." -#: src/integritysetup.c:742 +#: src/integritysetup.c:748 msgid "Both key file and key size options must be specified." msgstr "Musí být zadány oba přepínače pro soubor s klíčem a velikostí klíče." -#: src/integritysetup.c:746 +#: src/integritysetup.c:752 msgid "Both journal integrity key file and key size options must be specified." msgstr "Musí být zadány oba přepínače pro soubor s klíčem žurnálu a velikostí klíče." -#: src/integritysetup.c:749 +#: src/integritysetup.c:755 msgid "Journal integrity algorithm must be specified if journal integrity key is used." msgstr "Je-li použit klíč integrity žurnálu, musí být zadán algoritmus integrity žurnálu." -#: src/integritysetup.c:753 +#: src/integritysetup.c:759 msgid "Both journal encryption key file and key size options must be specified." msgstr "Musí být zadány oba přepínače pro soubor s šifrovacím klíčem žurnálu a velikostí klíče." -#: src/integritysetup.c:756 +#: src/integritysetup.c:762 msgid "Journal encryption algorithm must be specified if journal encryption key is used." msgstr "Je-li použit šifrovací klíč žurnálu, musí být zadán algoritmus šifrování žurnálu." -#: src/integritysetup.c:760 +#: src/integritysetup.c:766 msgid "Recovery and bitmap mode options are mutually exclusive." msgstr "Přepínače režimu bitmapy a obnovení se vzájemně vylučují." -#: src/integritysetup.c:767 +#: src/integritysetup.c:773 msgid "Journal options cannot be used in bitmap mode." msgstr "Přepínače žurnálu nelze použití spolu s režimem bitmapy." -#: src/integritysetup.c:772 +#: src/integritysetup.c:778 msgid "Bitmap options can be used only in bitmap mode." msgstr "Přepínače bitmapy lze použít jen při režimu bitmapy." -#: src/integritysetup.c:778 +#: src/integritysetup.c:784 msgid "Inline mode cannot be combined with journal or bitmap options." msgstr "Režim inline nelze kombinovat s možnostmi žurnálu a bitmapy." -#: src/integritysetup.c:782 +#: src/integritysetup.c:788 msgid "Inline mode cannot be combined with separate data device." msgstr "Režim inline nelze kombinovat se odděleným zařízením pro data." @@ -3795,32 +3799,32 @@ msgstr "Zařízení není ve stavu dešifrování LUKS2. Neslučitelný přepín msgid "Device is in reencryption using datashift resilience. Requested --resilience option cannot be applied." msgstr "Zařízení je ve stavu přešifrování pomocí odolnosti posunu dat. Požadovaný přepínač --resilience nelze použít." -#: src/utils_reencrypt.c:282 src/utils_reencrypt.c:1924 +#: src/utils_reencrypt.c:283 src/utils_reencrypt.c:1927 msgid "Cannot determine volume key size for LUKS without keyslots, please use --new-key-size option." msgstr "Bez pozic pro klíče nelze určit velikost klíče svazku LUKS. Prosím, použijte přepínač --new-key-size." -#: src/utils_reencrypt.c:436 +#: src/utils_reencrypt.c:438 msgid "Device requires reencryption recovery. Run repair first." msgstr "Zařízení vyžaduje obnovu přešifrování. Spusťte nejprve opravu." -#: src/utils_reencrypt.c:450 +#: src/utils_reencrypt.c:452 #, c-format msgid "Device %s is already in LUKS2 reencryption. Do you wish to resume previously initialised operation?" msgstr "Zařízení %s je již ve stavu přešifrování LUKS2. Přejete si dokončit dříve zahájenou operaci?" -#: src/utils_reencrypt.c:561 +#: src/utils_reencrypt.c:563 msgid "Legacy LUKS2 reencryption is no longer supported." msgstr "Zastaralé přešifrování LUKS2 již není podporováno." -#: src/utils_reencrypt.c:566 +#: src/utils_reencrypt.c:568 msgid "Can not reencrypt LUKS2 device configured to use OPAL." msgstr "Zařízení LUKS2 nastavené k používání Opal nelze přešifrovat." -#: src/utils_reencrypt.c:572 +#: src/utils_reencrypt.c:574 msgid "Reencryption of device with integrity profile is not supported." msgstr "Přešifrování zařízení s profilem integrity není podporováno." -#: src/utils_reencrypt.c:609 +#: src/utils_reencrypt.c:611 #, c-format msgid "" "Requested --sector-size % is incompatible with %s superblock\n" @@ -3829,110 +3833,110 @@ msgstr "" "Požadovaný --sector-size % není slučitelný se superblokem %s\n" "(velikost bloku % bajtů) nalezeném na zařízení %s." -#: src/utils_reencrypt.c:678 src/utils_reencrypt.c:2204 +#: src/utils_reencrypt.c:680 src/utils_reencrypt.c:2207 msgid "Encryption without detached header (--header) is not possible without data device size reduction (--reduce-device-size)." msgstr "Přešifrování bez oddělené hlavičky (--header) není možné bez zmenšení velikosti datového zařízení (--reduce-device-size)." -#: src/utils_reencrypt.c:687 +#: src/utils_reencrypt.c:689 msgid "Requested data offset must be less than or equal to half of --reduce-device-size parameter." msgstr "Požadovaný počátek dat musí být menší nebo roven polovině parametru --reduce-device-size" -#: src/utils_reencrypt.c:697 +#: src/utils_reencrypt.c:699 #, c-format msgid "Adjusting --reduce-device-size value to twice the --offset % (sectors).\n" msgstr "Upravuje se hodnota --reduce-device-size na dvojnásobek --offset % (v sektorech).\n" -#: src/utils_reencrypt.c:727 +#: src/utils_reencrypt.c:729 #, c-format msgid "Temporary header file %s already exists. Aborting." msgstr "Dočasný soubor s hlavičkou %s již existuje. Operace se ruší." -#: src/utils_reencrypt.c:729 src/utils_reencrypt.c:736 +#: src/utils_reencrypt.c:731 src/utils_reencrypt.c:738 #, c-format msgid "Cannot create temporary header file %s." msgstr "Dočasný soubor s hlavičkou %s nelze vytvořit." -#: src/utils_reencrypt.c:761 +#: src/utils_reencrypt.c:763 msgid "LUKS2 metadata size is larger than data shift value." msgstr "Velikost metadat LUKS2 je větší než hodnota posunu dat." -#: src/utils_reencrypt.c:800 +#: src/utils_reencrypt.c:802 #, c-format msgid "Failed to place new header at head of device %s." msgstr "Umístění nové hlavičky na začátek zařízení %s selhalo." -#: src/utils_reencrypt.c:813 +#: src/utils_reencrypt.c:815 #, c-format msgid "%s/%s is now active and ready for online encryption.\n" msgstr "%s/%s je nyní aktivní a připraveno pro přešifrování za běhu.\n" -#: src/utils_reencrypt.c:850 +#: src/utils_reencrypt.c:852 #, c-format msgid "Active device %s is not LUKS2." msgstr "Aktivní zařízení %s není LUKS2." -#: src/utils_reencrypt.c:878 +#: src/utils_reencrypt.c:880 msgid "Restoring original LUKS2 header." msgstr "Obnovuje se původní hlavička LUKS2." -#: src/utils_reencrypt.c:886 +#: src/utils_reencrypt.c:888 msgid "Original LUKS2 header restore failed." msgstr "Obnovení původní hlavičky LUKS2 selhalo." -#: src/utils_reencrypt.c:918 +#: src/utils_reencrypt.c:920 #, c-format msgid "Header file %s does not exist. Do you want to initialize LUKS2 decryption of device %s and export LUKS2 header to file %s?" msgstr "Soubor s hlavičkou %s neexistuje. Přejete si zahájit dešifrování LUKS2 zařízení %s a export hlavičku LUKS2 do souboru %s?" -#: src/utils_reencrypt.c:961 +#: src/utils_reencrypt.c:963 msgid "Failed to add read/write permissions to exported header file." msgstr "Přidání práv na čtení/zápis souboru s hlavičkou selhalo." -#: src/utils_reencrypt.c:1015 +#: src/utils_reencrypt.c:1017 #, c-format msgid "Reencryption initialization failed. Header backup is available in %s." msgstr "Inicializace přešifrování selhala. Záloha hlavičky je dostupná v %s." -#: src/utils_reencrypt.c:1043 +#: src/utils_reencrypt.c:1045 msgid "LUKS2 decryption is supported with detached header device only (with data offset set to 0)." msgstr "Dešifrování LUKS2 je podporováno jen u zařízení s oddělenou hlavičkou (počátek dat na 0)." -#: src/utils_reencrypt.c:1487 +#: src/utils_reencrypt.c:1490 msgid "No token could unlock the device." msgstr "Toto zařízení nebylo možné odemknout žádným tokenem." -#: src/utils_reencrypt.c:1519 src/utils_reencrypt.c:1528 +#: src/utils_reencrypt.c:1522 src/utils_reencrypt.c:1531 msgid "Not enough free keyslots for reencryption." msgstr "Nedostatek pozic s klíči pro přešifrování." -#: src/utils_reencrypt.c:1559 +#: src/utils_reencrypt.c:1562 msgid "Key file or keyring key description can be used only with --key-slot or with exactly one key slot active." msgstr "Soubor s klíčem a popis klíče v klíčence lze použít jen s přepínačem --key-slot nebo s právě jednou aktivní pozicí klíče." -#: src/utils_reencrypt.c:1566 src/utils_reencrypt.c:1579 +#: src/utils_reencrypt.c:1569 src/utils_reencrypt.c:1582 #: src/utils_reencrypt_luks1.c:1092 src/utils_reencrypt_luks1.c:1103 #, c-format msgid "Enter passphrase for key slot %d: " msgstr "Zadejte heslo pro pozici klíče %d: " -#: src/utils_reencrypt.c:1876 +#: src/utils_reencrypt.c:1879 #, c-format msgid "Switching data encryption cipher to %s.\n" msgstr "Přepíná se algoritmus šifrování dat na %s.\n" -#: src/utils_reencrypt.c:1977 src/utils_reencrypt.c:1998 +#: src/utils_reencrypt.c:1980 src/utils_reencrypt.c:2001 msgid "Use --force-no-keyslots to reencrypt device with active keyslots by passing volume keys directly." msgstr "Pro přešifrování zařízení s aktivními pozicemi klíče přímým předáním klíčů svazku použijte --force-no-keyslots." -#: src/utils_reencrypt.c:1993 +#: src/utils_reencrypt.c:1996 msgid "Option --new-volume-key-file must be paired with --new-key-size" msgstr "Přepínač --new-volume-key-file musí být ve dvojici s --new-key-size." -#: src/utils_reencrypt.c:2035 +#: src/utils_reencrypt.c:2038 msgid "No data segment parameters changed. Reencryption aborted." msgstr "Žádné parametry oblasti s daty nebyly změněny. Přešifrování zrušeno." -#: src/utils_reencrypt.c:2072 +#: src/utils_reencrypt.c:2075 msgid "" "Encryption sector size increase on offline device is not supported.\n" "Activate the device first or use --force-offline-reencrypt option (dangerous!)." @@ -3941,7 +3945,7 @@ msgstr "" "podporováno. Nejprve zařízení aktivujte, nebo použijte přepínač\n" "--force-offline-reencrypt (nebezpečné!)." -#: src/utils_reencrypt.c:2114 src/utils_reencrypt_luks1.c:688 +#: src/utils_reencrypt.c:2117 src/utils_reencrypt_luks1.c:688 #: src/utils_reencrypt_luks1.c:759 msgid "" "\n" @@ -3950,58 +3954,58 @@ msgstr "" "\n" "Přešifrování přerušeno." -#: src/utils_reencrypt.c:2119 +#: src/utils_reencrypt.c:2122 msgid "Resuming LUKS reencryption in forced offline mode.\n" msgstr "Dokončuje se přešifrování LUKS ve vynuceném režimu offline.\n" -#: src/utils_reencrypt.c:2142 +#: src/utils_reencrypt.c:2145 #, c-format msgid "Device %s contains broken LUKS metadata. Aborting operation." msgstr "Zařízení %s obsahuje porušená metadata LUKS. Operace se ruší." -#: src/utils_reencrypt.c:2158 src/utils_reencrypt.c:2180 +#: src/utils_reencrypt.c:2161 src/utils_reencrypt.c:2183 #, c-format msgid "Device %s is already LUKS device. Aborting operation." msgstr "Zařízení %s je již zařízením LUKS. Operace se ruší." -#: src/utils_reencrypt.c:2186 +#: src/utils_reencrypt.c:2189 #, c-format msgid "Device %s is already in LUKS reencryption. Aborting operation." msgstr "Zařízení %s je již ve stavu přešifrování LUKS. Operace se ruší." -#: src/utils_reencrypt.c:2269 +#: src/utils_reencrypt.c:2272 msgid "LUKS2 decryption requires --header option." msgstr "Dešifrování LUKS2 vyžaduje přepínač --header." -#: src/utils_reencrypt.c:2317 +#: src/utils_reencrypt.c:2320 msgid "Command requires device as argument." msgstr "Příkaz vyžaduje jako argument zařízení." -#: src/utils_reencrypt.c:2330 +#: src/utils_reencrypt.c:2333 #, c-format msgid "Conflicting versions. Device %s is LUKS1." msgstr "Neslučitelné verze. Zařízení %s je LUKS1." -#: src/utils_reencrypt.c:2336 +#: src/utils_reencrypt.c:2339 #, c-format msgid "Conflicting versions. Device %s is in LUKS1 reencryption." msgstr "Neslučitelné verze. Zařízení %s je ve stavu přešifrování LUKS1." -#: src/utils_reencrypt.c:2342 +#: src/utils_reencrypt.c:2345 #, c-format msgid "Conflicting versions. Device %s is LUKS2." msgstr "Neslučitelné verze. Zařízení %s je LUKS2." -#: src/utils_reencrypt.c:2348 +#: src/utils_reencrypt.c:2351 #, c-format msgid "Conflicting versions. Device %s is in LUKS2 reencryption." msgstr "Neslučitelné verze. Zařízení %s je ve stavu přešifrování LUKS2." -#: src/utils_reencrypt.c:2354 +#: src/utils_reencrypt.c:2357 msgid "LUKS2 reencryption already initialized. Aborting operation." msgstr "Přešifrování LUKS2 je již inicializováno. Operace se ruší." -#: src/utils_reencrypt.c:2361 +#: src/utils_reencrypt.c:2364 msgid "Device reencryption not in progress." msgstr "Neprobíhá žádné přešifrování zařízení." @@ -5016,9 +5020,6 @@ msgstr "Chyba při autentizaci veřejným klíčem: " #~ msgid "Options --journal-size, --interleave-sectors, --sector-size, --tag-size and --no-wipe can be used only for format action." #~ msgstr "Přepínače --journal-size, --interleave-sectors, --sector-size, --tag-size a --no-wipe lze použít jen při formátování." -#~ msgid "Invalid journal size specification." -#~ msgstr "Zadána neplatná velikost žurnálu." - #~ msgid "Reencryption block size" #~ msgstr "Velikost bloku přešifrování" From 2fb34ac30c8624d6a5c91460af7f5c18b36afc5a Mon Sep 17 00:00:00 2001 From: Roland Illig Date: Sun, 19 Jul 2026 19:51:04 +0200 Subject: [PATCH 182/244] po: update de.po (from translationproject.org) --- po/de.po | 631 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 316 insertions(+), 315 deletions(-) diff --git a/po/de.po b/po/de.po index 6032d5a24..869758916 100644 --- a/po/de.po +++ b/po/de.po @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.7-rc1\n" +"Project-Id-Version: cryptsetup 2.8.7-rc2\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2026-06-29 21:30+0200\n" -"PO-Revision-Date: 2026-07-03 08:04+0200\n" +"POT-Creation-Date: 2026-07-09 10:46+0200\n" +"PO-Revision-Date: 2026-07-12 12:19+0200\n" "Last-Translator: Roland Illig \n" "Language-Team: German \n" "Language: de\n" @@ -200,10 +200,10 @@ msgid "Failed to rollback LUKS2 metadata in memory." msgstr "Fehler beim Rückabwickeln der LUKS2-Metadaten im Speicher." #: lib/setup.c:896 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 -#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1779 -#: src/cryptsetup.c:1963 src/cryptsetup.c:2018 src/cryptsetup.c:2216 -#: src/cryptsetup.c:2361 src/cryptsetup.c:2639 src/cryptsetup.c:2952 -#: src/cryptsetup.c:3020 src/utils_reencrypt.c:2281 +#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 +#: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 +#: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2954 +#: src/cryptsetup.c:3022 src/utils_reencrypt.c:2284 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." @@ -247,7 +247,7 @@ msgid "Detached metadata device is not supported for this crypt type." msgstr "Gerät für separierte Metadaten wird für diese Verschlüsselungsart nicht unterstützt." #: lib/setup.c:1642 lib/setup.c:1890 lib/luks2/luks2_reencrypt.c:3035 -#: src/cryptsetup.c:1491 src/cryptsetup.c:3759 +#: src/cryptsetup.c:1492 src/cryptsetup.c:3761 msgid "Unsupported encryption sector size." msgstr "Nicht unterstützte Sektorengröße für Verschlüsselung." @@ -569,14 +569,14 @@ msgstr "Fehler beim Ablösen des Laufwerkschlüssels vom benutzerspezifischen Sc msgid "Failed to link volume key in user defined keyring." msgstr "Fehler beim Verknüpfen des Laufwerkschlüssels im benutzerspezifischen Schlüsselbund." -#: lib/setup.c:4556 src/cryptsetup.c:2720 +#: lib/setup.c:4556 src/cryptsetup.c:2722 #, c-format msgid "Volume %s is not suspended." msgstr "Laufwerk »%s« ist nicht im Ruhezustand." -#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1855 -#: src/cryptsetup.c:2259 src/cryptsetup.c:2277 src/utils_reencrypt.c:305 -#: src/utils_reencrypt.c:1966 +#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1856 +#: src/cryptsetup.c:2260 src/cryptsetup.c:2278 src/utils_reencrypt.c:306 +#: src/utils_reencrypt.c:1969 msgid "Volume key does not match the volume." msgstr "Der Laufwerksschlüssel passt nicht zum Laufwerk." @@ -589,8 +589,8 @@ msgstr "Neues Schlüsselfach konnte nicht ausgewechselt werden." msgid "Key slot %d is invalid." msgstr "Schlüsselfach %d ist ungültig." -#: lib/setup.c:4925 src/cryptsetup.c:1976 src/cryptsetup.c:2436 -#: src/cryptsetup.c:3120 src/cryptsetup.c:3180 +#: lib/setup.c:4925 src/cryptsetup.c:1977 src/cryptsetup.c:2437 +#: src/cryptsetup.c:3122 src/cryptsetup.c:3182 #, c-format msgid "Keyslot %d is not active." msgstr "Schlüsselfach %d ist nicht aktiv." @@ -787,7 +787,7 @@ msgid "Cannot read requested amount of data." msgstr "Die gewünschte Menge an Daten kann nicht eingelesen werden." #: lib/utils_device.c:207 lib/utils_storage_wrappers.c:99 -#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2254 +#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2257 #, c-format msgid "Device %s does not exist or access denied." msgstr "Gerät »%s« existiert nicht oder Zugriff verweigert." @@ -1132,7 +1132,7 @@ msgstr "LUKS-Verschlüsselungsmodus %s ist ungültig." msgid "LUKS hash %s is invalid." msgstr "LUKS-Hash %s ist ungültig." -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1366 +#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 msgid "No known problems detected for LUKS header." msgstr "Keine bekannten Probleme im LUKS-Header erkannt." @@ -1152,7 +1152,7 @@ msgstr "Daten-Offset für LUKS-Header muss entweder 0 sein oder mehr als die Hea #: lib/luks1/keymanage.c:761 lib/luks1/keymanage.c:832 #: lib/luks2/luks2_json_format.c:231 lib/luks2/luks2_json_metadata.c:1261 -#: src/utils_reencrypt.c:701 +#: src/utils_reencrypt.c:703 msgid "Wrong LUKS UUID format provided." msgstr "Falsches LUKS-UUID-Format angegeben." @@ -1678,7 +1678,7 @@ msgstr "Fehler beim Festlegen des »dm-crypt«-Segments." msgid "Failed to set dm-linear segment." msgstr "Fehler beim Festlegen des »dm-linear«-Segments." -#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:578 +#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:580 msgid "No known cipher specification pattern detected in LUKS2 header." msgstr "Kein bekanntes Verschlüsselungsmuster in LUKS2-Kopfbereich entdeckt." @@ -2141,8 +2141,8 @@ msgstr "Verschlüsselungsparameter für Schlüsselfach wird nur für LUKS2-Gerä msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encryption." msgstr "Verschlüsselungsparameter für Schlüsselfach sind nicht mit LUKS2-Schlüsselfach-Verschlüsselung kompatibel." -#: src/cryptsetup.c:150 src/cryptsetup.c:1179 src/cryptsetup.c:1544 -#: src/utils_reencrypt.c:1887 src/utils_reencrypt_luks1.c:502 +#: src/cryptsetup.c:150 src/cryptsetup.c:1180 src/cryptsetup.c:1545 +#: src/utils_reencrypt.c:1890 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." msgstr "Kein bekanntes Verschlüsselungsmuster entdeckt." @@ -2169,8 +2169,8 @@ msgstr "WARNUNG: Der Parameter --hash wird im Plain-Modus ignoriert, wenn eine S msgid "WARNING: The --keyfile-size option is being ignored, the read size is the same as the encryption key size.\n" msgstr "WARNUNG: Die Option --keyfile-size wird ignoriert, da die Lesegröße die gleiche ist wie die Verschlüsselungsschlüsselgröße ist.\n" -#: src/cryptsetup.c:226 src/cryptsetup.c:1374 src/cryptsetup.c:1597 -#: src/integritysetup.c:188 src/utils_reencrypt.c:2138 +#: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 +#: src/integritysetup.c:189 src/utils_reencrypt.c:2141 #, c-format msgid "Blkid scan failed for %s." msgstr "Fehler beim Blkid-Scan für %s." @@ -2180,11 +2180,11 @@ msgstr "Fehler beim Blkid-Scan für %s." msgid "Detected device signature(s) on %s. Proceeding further may damage existing data." msgstr "Gerätesignaturen auf »%s« erkannt. Wenn Sie fortfahren, könnte das bestehende Daten beschädigen." -#: src/cryptsetup.c:238 src/cryptsetup.c:1260 src/cryptsetup.c:1308 -#: src/cryptsetup.c:1381 src/cryptsetup.c:1521 src/cryptsetup.c:1609 -#: src/cryptsetup.c:2494 src/cryptsetup.c:2923 src/integritysetup.c:178 -#: src/utils_reencrypt.c:111 src/utils_reencrypt.c:457 -#: src/utils_reencrypt.c:925 +#: src/cryptsetup.c:238 src/cryptsetup.c:1261 src/cryptsetup.c:1309 +#: src/cryptsetup.c:1382 src/cryptsetup.c:1522 src/cryptsetup.c:1610 +#: src/cryptsetup.c:2495 src/cryptsetup.c:2925 src/integritysetup.c:179 +#: src/utils_reencrypt.c:111 src/utils_reencrypt.c:459 +#: src/utils_reencrypt.c:927 msgid "Operation aborted.\n" msgstr "Vorgang abgebrochen.\n" @@ -2192,36 +2192,36 @@ msgstr "Vorgang abgebrochen.\n" msgid "Option --key-file is required." msgstr "Die Option »--key-file« muss angegeben werden." -#: src/cryptsetup.c:377 +#: src/cryptsetup.c:378 msgid "Enter VeraCrypt PIM: " msgstr "VeraCrypt-PIM eingeben: " -#: src/cryptsetup.c:386 +#: src/cryptsetup.c:387 msgid "Invalid PIM value: parse error." msgstr "Ungültiger PIM-Wert: Formatfehler." -#: src/cryptsetup.c:389 +#: src/cryptsetup.c:390 msgid "Invalid PIM value: 0." msgstr "Ungültiger PIM-Wert: 0." -#: src/cryptsetup.c:392 +#: src/cryptsetup.c:393 msgid "Invalid PIM value: outside of range." msgstr "Ungültiger PIM-Wert: außerhalb des gültigen Bereichs." -#: src/cryptsetup.c:415 +#: src/cryptsetup.c:416 msgid "No device header detected with this passphrase." msgstr "Kein Geräte-Header mit dieser Passphrase gefunden." -#: src/cryptsetup.c:492 src/cryptsetup.c:677 +#: src/cryptsetup.c:493 src/cryptsetup.c:678 #, c-format msgid "Device %s is not a valid BITLK device." msgstr "Gerät »%s« ist kein gültiges BITLK-Gerät." -#: src/cryptsetup.c:500 +#: src/cryptsetup.c:501 msgid "Cannot determine volume key size for BITLK, please use --key-size option." msgstr "Die Größe des Laufwerksschlüssels für BITLK kann nicht ermittelt werden, bitte nutzen Sie die Option »--key-size«." -#: src/cryptsetup.c:546 +#: src/cryptsetup.c:547 msgid "" "Header dump with volume key is sensitive information\n" "which allows access to encrypted partition without passphrase.\n" @@ -2233,7 +2233,7 @@ msgstr "" "daher ausschließlich an einem sicheren Ort und verschlüsselt\n" "aufbewahrt werden." -#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2519 +#: src/cryptsetup.c:614 src/cryptsetup.c:700 src/cryptsetup.c:2520 msgid "" "The header dump with volume key is sensitive information\n" "that allows access to encrypted partition without a passphrase.\n" @@ -2245,73 +2245,73 @@ msgstr "" "daher ausschließlich an einem sicheren Ort und verschlüsselt\n" "aufbewahrt werden." -#: src/cryptsetup.c:754 src/cryptsetup.c:786 +#: src/cryptsetup.c:755 src/cryptsetup.c:787 #, c-format msgid "Device %s is not a valid FVAULT2 device." msgstr "Gerät »%s« ist kein gültiges FVAULT2-Gerät." -#: src/cryptsetup.c:794 +#: src/cryptsetup.c:795 msgid "Cannot determine volume key size for FVAULT2, please use --key-size option." msgstr "Die Größe des Laufwerksschlüssels für FVAULT2 kann nicht ermittelt werden, bitte nutzen Sie die Option »--key-size«." -#: src/cryptsetup.c:848 src/veritysetup.c:317 src/integritysetup.c:416 +#: src/cryptsetup.c:849 src/veritysetup.c:317 src/integritysetup.c:422 #, c-format msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "Gerät »%s« ist noch aktiv und zum verzögerten Entfernen eingeplant.\n" # upstream: period missing -#: src/cryptsetup.c:881 src/cryptsetup.c:1807 src/cryptsetup.c:2081 -#: src/cryptsetup.c:2228 src/cryptsetup.c:2647 src/cryptsetup.c:2728 -#: src/cryptsetup.c:3261 +#: src/cryptsetup.c:882 src/cryptsetup.c:1808 src/cryptsetup.c:2082 +#: src/cryptsetup.c:2229 src/cryptsetup.c:2648 src/cryptsetup.c:2730 +#: src/cryptsetup.c:3263 #, c-format msgid "Failed to set external tokens path %s." msgstr "Fehler beim Festlegen des externen Tokenpfads »%s«." -#: src/cryptsetup.c:890 +#: src/cryptsetup.c:891 msgid "Resize of active device requires volume key in keyring but --disable-keyring option is set." msgstr "Um die Größe von aktiven Geräten zu öndern, muss der Laufwerksschlüssel im Schlüsselbund sein, aber die Option --disable-keyring wurde angegeben." -#: src/cryptsetup.c:1057 +#: src/cryptsetup.c:1058 msgid "Benchmark interrupted." msgstr "Benchmark unterbrochen." -#: src/cryptsetup.c:1078 +#: src/cryptsetup.c:1079 #, c-format msgid "PBKDF2-%-9s N/A\n" msgstr "PBKDF2-%-9s (nicht zutreffend)\n" -#: src/cryptsetup.c:1080 +#: src/cryptsetup.c:1081 #, c-format msgid "PBKDF2-%-9s %7u iterations per second for %zu-bit key\n" msgstr "PBKDF2-%-9s %7u Iterationen pro Sekunde für %zu-Bit-Schlüssel\n" -#: src/cryptsetup.c:1094 +#: src/cryptsetup.c:1095 #, c-format msgid "%-10s N/A\n" msgstr "%-10s (nicht zutreffend)\n" -#: src/cryptsetup.c:1096 +#: src/cryptsetup.c:1097 #, c-format msgid "%-10s %4u iterations, %5u memory, %1u parallel threads (CPUs) for %zu-bit key (requested %u ms time)\n" msgstr "%-10s %4u Iterationen, %5u Speicher, %1u parallele Threads (CPUs) für %zu-Bit-Schlüssel (Zieldauer %u Millisekunden)\n" -#: src/cryptsetup.c:1120 +#: src/cryptsetup.c:1121 msgid "Result of benchmark is not reliable." msgstr "Das Ergebnis des Benchmarks ist nicht zuverlässig." -#: src/cryptsetup.c:1171 +#: src/cryptsetup.c:1172 msgid "# Tests are approximate using memory only (no storage IO).\n" msgstr "# Die Tests sind nur annähernd genau, da sie nicht auf den Datenträger zugreifen.\n" # upstream: the following line should also be translated. This is because the long word "Schlüssel" for "Key" will break the layout, as well as "Verschlüsselung" for "Encryption". # To help the translators, you should provide an example for what goes into the %x placeholders, since I had to make an educated guess that the second %s would be exactly 4 characters long. This is an unnecessary burden for the translators. #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1196 +#: src/cryptsetup.c:1197 #, c-format msgid "#%*s Algorithm | Key | Encryption | Decryption\n" msgstr "#%*s Algorithmus | Schlüssel | Verschlüsselung | Entschlüsselung\n" -#: src/cryptsetup.c:1204 +#: src/cryptsetup.c:1205 #, c-format msgid "Cipher %s (with %i bits key) is not available." msgstr "Verschlüsselung »%s« (mit Schlüsselgröße %i Bits) ist nicht verfügbar." @@ -2319,19 +2319,19 @@ msgstr "Verschlüsselung »%s« (mit Schlüsselgröße %i Bits) ist nicht verfü # upstream: the following line should also be translated. This is because the long word "Schlüssel" for "Key" will break the layout, as well as "Verschlüsselung" for "Encryption". # To help the translators, you should provide an example for what goes into the %x placeholders, since I had to make an educated guess that the second %s would be exactly 4 characters long. This is an unnecessary burden for the translators. #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1225 +#: src/cryptsetup.c:1226 msgid "# Algorithm | Key | Encryption | Decryption\n" msgstr "# Algorithmus | Schlüssel | Verschlüsselung | Entschlüsselung\n" -#: src/cryptsetup.c:1238 +#: src/cryptsetup.c:1239 msgid "N/A" msgstr "N/A" -#: src/cryptsetup.c:1241 +#: src/cryptsetup.c:1242 msgid "# Cipher speed test is not available.\n" msgstr "# Verschlüsselungs-Geschwindigkeitstest ist nicht verfügbar.\n" -#: src/cryptsetup.c:1257 +#: src/cryptsetup.c:1258 msgid "" "Unprotected LUKS2 reencryption metadata detected. Please verify the reencryption operation is desirable (see luksDump output)\n" "and continue (upgrade metadata) only if you acknowledge the operation as genuine." @@ -2339,27 +2339,27 @@ msgstr "" "Ungeschützte LUKS2-Metadaten für die Wiederverschlüsselung entdeckt. Bitte überprüfen Sie, ob die Wiederverschlüsselungsoperation erwünscht ist (siehe luksDump-Ausgabe)\n" "und fahren Sie nur fort (Upgrade der Metadaten), wenn Sie den Vorgang als echt anerkennen." -#: src/cryptsetup.c:1263 +#: src/cryptsetup.c:1264 msgid "Enter passphrase to protect and upgrade reencryption metadata: " msgstr "Geben Sie die Passphrase für den Schutz und das Aktualisieren der Metadaten für die Wiederverschlüsselung ein: " -#: src/cryptsetup.c:1307 +#: src/cryptsetup.c:1308 msgid "Really proceed with LUKS2 reencryption recovery?" msgstr "Wirklich mit der Wiederherstellung der LUKS2-Wiederverschlüsselung fortfahren?" -#: src/cryptsetup.c:1316 +#: src/cryptsetup.c:1317 msgid "Enter passphrase to verify reencryption metadata digest: " msgstr "Geben Sie die Passphrase für das Prüfen der Metadaten für die Wiederverschlüsselung ein: " -#: src/cryptsetup.c:1318 +#: src/cryptsetup.c:1319 msgid "Enter passphrase for reencryption recovery: " msgstr "Geben Sie die Passphrase für die Wiederherstellung der Wiederverschlüsselung ein: " -#: src/cryptsetup.c:1380 +#: src/cryptsetup.c:1381 msgid "Really try to repair LUKS device header?" msgstr "Wirklich versuchen, den LUKS-Geräteheader wiederherzustellen?" -#: src/cryptsetup.c:1408 src/integritysetup.c:76 src/integritysetup.c:244 +#: src/cryptsetup.c:1409 src/integritysetup.c:76 src/integritysetup.c:246 msgid "" "\n" "Wipe interrupted." @@ -2367,7 +2367,7 @@ msgstr "" "\n" "Gründlich löschen unterbrochen." -#: src/cryptsetup.c:1413 src/integritysetup.c:81 src/integritysetup.c:289 +#: src/cryptsetup.c:1414 src/integritysetup.c:81 src/integritysetup.c:291 msgid "" "Wiping device to initialize integrity checksum.\n" "You can interrupt this by pressing CTRL+c (rest of not wiped device will contain invalid checksum).\n" @@ -2376,167 +2376,167 @@ msgstr "" "Sie können diesen Vorgang mit Strg+C unterbrechen (der nicht gesäuberte Bereich des Geräts wird dann ungültige Prüfsummen haben).\n" # upstream: it is boring that I have to translate the newline at the end of each of these messages. Translating strings without newlines is much easier and faster. Since it is redundant anyway (all calls to log_err have a trailing newline), this newline should be written implicitly. -#: src/cryptsetup.c:1435 src/integritysetup.c:103 +#: src/cryptsetup.c:1436 src/integritysetup.c:103 #, c-format msgid "Cannot deactivate temporary device %s." msgstr "Fehler beim Deaktivieren des temporären Geräts »%s«." -#: src/cryptsetup.c:1483 +#: src/cryptsetup.c:1484 msgid "OPAL hw-only encryption does not support --cipher and --key-size, options ignored." msgstr "OPAL hw-only Verschlüsselung unterstützt nicht --cipher und --key-size, die Optionen werden ignoriert." -#: src/cryptsetup.c:1496 +#: src/cryptsetup.c:1497 msgid "Integrity option can be used only for LUKS2 format." msgstr "Die Integritätsoption kann nur für das LUKS2-Format verwendet werden." -#: src/cryptsetup.c:1501 src/cryptsetup.c:1581 +#: src/cryptsetup.c:1502 src/cryptsetup.c:1582 msgid "Unsupported LUKS2 metadata size options." msgstr "Nicht unterstützte Optionen für Größe der LUKS-Metadaten." -#: src/cryptsetup.c:1506 +#: src/cryptsetup.c:1507 msgid "OPAL is supported only for LUKS2 format." msgstr "OPAL wird nur für das LUKS2-Format unterstützt." -#: src/cryptsetup.c:1511 +#: src/cryptsetup.c:1512 msgid "Inline hw tags are supported only for LUKS2 format." msgstr "Inline-Hardware-Tokens werden nur für das LUKS2-Format unterstützt." -#: src/cryptsetup.c:1520 +#: src/cryptsetup.c:1521 msgid "Header file does not exist, do you want to create it?" msgstr "Die Headerdatei existiert nicht, soll sie angelegt werden?" -#: src/cryptsetup.c:1528 +#: src/cryptsetup.c:1529 #, c-format msgid "Cannot create header file %s." msgstr "Fehler beim Anlegen der Headerdatei »%s«." -#: src/cryptsetup.c:1554 src/integritysetup.c:126 src/integritysetup.c:141 -#: src/integritysetup.c:150 src/integritysetup.c:328 src/integritysetup.c:336 -#: src/integritysetup.c:346 +#: src/cryptsetup.c:1555 src/integritysetup.c:127 src/integritysetup.c:142 +#: src/integritysetup.c:151 src/integritysetup.c:330 src/integritysetup.c:338 +#: src/integritysetup.c:348 msgid "No known integrity specification pattern detected." msgstr "Kein bekanntes Integritätsspezifikationsmuster entdeckt." -#: src/cryptsetup.c:1556 +#: src/cryptsetup.c:1557 msgid "Cannot use specified integrity key size." msgstr "Die angegebene Integritätsschlüsselgröße kann nicht verwendet werden." -#: src/cryptsetup.c:1574 +#: src/cryptsetup.c:1575 #, c-format msgid "Cannot use %s as on-disk header." msgstr "Das Gerät »%s« kann nicht als Datenträger-Header benutzt werden." -#: src/cryptsetup.c:1603 src/integritysetup.c:172 +#: src/cryptsetup.c:1604 src/integritysetup.c:173 #, c-format msgid "This will overwrite data on %s irrevocably." msgstr "Hiermit werden die Daten auf »%s« unwiderruflich überschrieben." -#: src/cryptsetup.c:1640 +#: src/cryptsetup.c:1641 msgid "OPAL Admin password cannot be empty." msgstr "Das OPAL-Admin-Passwort darf nicht leer sein." -#: src/cryptsetup.c:1654 src/cryptsetup.c:2098 src/cryptsetup.c:2241 -#: src/cryptsetup.c:2376 src/cryptsetup.c:2442 src/utils_reencrypt_luks1.c:428 +#: src/cryptsetup.c:1655 src/cryptsetup.c:2099 src/cryptsetup.c:2242 +#: src/cryptsetup.c:2377 src/cryptsetup.c:2443 src/utils_reencrypt_luks1.c:428 msgid "Failed to set pbkdf parameters." msgstr "Fehler beim Festlegen der PBKDF-Parameter." -#: src/cryptsetup.c:1785 +#: src/cryptsetup.c:1786 msgid "Reduced data offset is allowed only for detached LUKS header." msgstr "Verringerter Datenoffset ist nur für separaten LUKS-Header erlaubt." -#: src/cryptsetup.c:1792 +#: src/cryptsetup.c:1793 #, c-format msgid "LUKS file container %s is too small for activation, there is no remaining space for data." msgstr "LUKS-Datei-Container %s ist zu klein für die Aktivierung, es ist kein Platz mehr für Daten vorhanden." -#: src/cryptsetup.c:1834 src/cryptsetup.c:2247 src/utils_reencrypt.c:277 -#: src/utils_reencrypt.c:369 src/utils_reencrypt.c:1907 +#: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:278 +#: src/utils_reencrypt.c:371 src/utils_reencrypt.c:1910 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "Die Größe des Laufwerksschlüssels erfordert Schlüsselfächer, bitte nutzen Sie dazu die Option »--key-size«." -#: src/cryptsetup.c:1853 src/utils_reencrypt.c:303 +#: src/cryptsetup.c:1854 src/utils_reencrypt.c:304 msgid "Device requires two volume keys." msgstr "Das Gerät benötigt zwei Laufwerksschlüssel." -#: src/cryptsetup.c:1888 +#: src/cryptsetup.c:1889 msgid "Some specified activation parameters were ignored with OPAL hw-only encryption." msgstr "Einige angegebene Aktivierungsparameter wurden bei der OPAL-nur-Hardware-Verschlüsselung ignoriert." -#: src/cryptsetup.c:1893 +#: src/cryptsetup.c:1894 msgid "Device activated but cannot make flags persistent." msgstr "Gerät aktiviert, aber die Schalter können nicht dauerhaft gespeichert werden." -#: src/cryptsetup.c:1973 src/cryptsetup.c:2041 +#: src/cryptsetup.c:1974 src/cryptsetup.c:2042 #, c-format msgid "Keyslot %d is selected for deletion." msgstr "Schlüsselfach %d zum Löschen ausgewählt." -#: src/cryptsetup.c:1985 src/cryptsetup.c:2045 +#: src/cryptsetup.c:1986 src/cryptsetup.c:2046 msgid "This is the last keyslot. Device will become unusable after purging this key." msgstr "Dies ist das letzte Schlüsselfach. Wenn Sie diesen Schlüssel löschen, wird das Gerät unbrauchbar." -#: src/cryptsetup.c:1986 +#: src/cryptsetup.c:1987 msgid "Enter any remaining passphrase: " msgstr "Geben Sie irgendeine verbleibende Passphrase ein: " -#: src/cryptsetup.c:1987 src/cryptsetup.c:2047 +#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 msgid "Operation aborted, the keyslot was NOT wiped.\n" msgstr "Vorgang abgebrochen, das Schlüsselfach wurde NICHT gesäubert.\n" -#: src/cryptsetup.c:2023 +#: src/cryptsetup.c:2024 msgid "Enter passphrase to be deleted: " msgstr "Geben Sie die zu löschende Passphrase ein: " -#: src/cryptsetup.c:2073 src/cryptsetup.c:2425 src/cryptsetup.c:3085 -#: src/cryptsetup.c:3252 +#: src/cryptsetup.c:2074 src/cryptsetup.c:2426 src/cryptsetup.c:3087 +#: src/cryptsetup.c:3254 #, c-format msgid "Device %s is not a valid LUKS2 device." msgstr "Gerät »%s« ist kein gültiges LUKS2-Gerät." -#: src/cryptsetup.c:2112 src/cryptsetup.c:2311 +#: src/cryptsetup.c:2113 src/cryptsetup.c:2312 msgid "Enter new passphrase for key slot: " msgstr "Geben Sie die neue Passphrase für das Schlüsselfach ein: " -#: src/cryptsetup.c:2146 src/utils_luks.c:342 +#: src/cryptsetup.c:2147 src/utils_luks.c:342 #, c-format msgid "Enter token PIN: " msgstr "Geben Sie die PIN des Tokens ein: " -#: src/cryptsetup.c:2148 src/utils_luks.c:344 +#: src/cryptsetup.c:2149 src/utils_luks.c:344 #, c-format msgid "Enter token %d PIN: " msgstr "Geben Sie die PIN des Tokens %d ein: " -#: src/cryptsetup.c:2207 +#: src/cryptsetup.c:2208 msgid "WARNING: The --key-slot parameter is used for new keyslot number.\n" msgstr "WARNUNG: Der Parameter --key-slot wird für die neue Nummer des Schlüsselfachs verwendet.\n" -#: src/cryptsetup.c:2284 src/utils_reencrypt_luks1.c:1094 +#: src/cryptsetup.c:2285 src/utils_reencrypt_luks1.c:1094 #, c-format msgid "Enter any existing passphrase: " msgstr "Geben Sie irgendeine bestehende Passphrase ein: " -#: src/cryptsetup.c:2380 +#: src/cryptsetup.c:2381 msgid "Enter passphrase to be changed: " msgstr "Geben Sie die zu ändernde Passphrase ein: " -#: src/cryptsetup.c:2396 src/utils_reencrypt_luks1.c:1080 +#: src/cryptsetup.c:2397 src/utils_reencrypt_luks1.c:1080 msgid "Enter new passphrase: " msgstr "Geben Sie die neue Passphrase ein: " -#: src/cryptsetup.c:2446 +#: src/cryptsetup.c:2447 msgid "Enter passphrase for keyslot to be converted: " msgstr "Geben Sie die Passphrase für das umzuwandelnde Schlüsselfach ein: " -#: src/cryptsetup.c:2470 +#: src/cryptsetup.c:2471 msgid "Only one device argument for isLuks operation is supported." msgstr "Die Operation »isLuks« unterstützt nur genau ein Geräte-Argument." -#: src/cryptsetup.c:2575 +#: src/cryptsetup.c:2576 #, c-format msgid "Keyslot %d does not contain unbound key." msgstr "Schlüsselfach %d enthält keinen unverbundenen Schlüssel." -#: src/cryptsetup.c:2580 +#: src/cryptsetup.c:2581 msgid "" "The header dump with unbound key is sensitive information.\n" "This dump should be stored encrypted in a safe place." @@ -2545,52 +2545,52 @@ msgstr "" "Dieser Dump sollte daher ausschließlich an einem sicheren Ort und\n" "verschlüsselt aufbewahrt werden." -#: src/cryptsetup.c:2675 src/cryptsetup.c:2711 +#: src/cryptsetup.c:2676 src/cryptsetup.c:2713 #, c-format msgid "%s is not active %s device name." msgstr "%s ist kein aktives %s-Gerät." -#: src/cryptsetup.c:2706 +#: src/cryptsetup.c:2708 #, c-format msgid "%s is not active LUKS device name or header is missing." msgstr "%s ist kein aktives LUKS-Gerät, oder der Header fehlt." -#: src/cryptsetup.c:2783 src/cryptsetup.c:2802 +#: src/cryptsetup.c:2785 src/cryptsetup.c:2804 msgid "Option --header-backup-file is required." msgstr "Option »--header-backup-file« muss angegeben werden." -#: src/cryptsetup.c:2833 +#: src/cryptsetup.c:2835 #, c-format msgid "%s is not cryptsetup managed device." msgstr "%s ist kein von cryptsetup verwaltetes Gerät." -#: src/cryptsetup.c:2844 +#: src/cryptsetup.c:2846 #, c-format msgid "Refresh is not supported for device type %s" msgstr "Die Geräteart »%s« kann nicht aufgefrischt werden" -#: src/cryptsetup.c:2894 +#: src/cryptsetup.c:2896 #, c-format msgid "Unrecognized metadata device type %s." msgstr "Unbekannte Art »%s« des Metadaten-Geräts." -#: src/cryptsetup.c:2896 +#: src/cryptsetup.c:2898 msgid "Command requires device and mapped name as arguments." msgstr "Dieser Befehl benötigt den Gerätenamen und den zugeordneten Namen als Argumente." -#: src/cryptsetup.c:2914 +#: src/cryptsetup.c:2916 msgid "Enter OPAL PSID: " msgstr "Geben Sie die OPAL-PSID ein: " -#: src/cryptsetup.c:2914 +#: src/cryptsetup.c:2916 msgid "Enter OPAL Admin password: " msgstr "Geben Sie das OPAL-Admin-Passwort ein: " -#: src/cryptsetup.c:2922 +#: src/cryptsetup.c:2924 msgid "WARNING: WHOLE disk will be factory reset and all data will be lost! Continue?" msgstr "Warnung: Der GESAMTE Datenträger wird auf die Werkseinstellungen zurückgesetzt, und alle Daten gehen verloren. Fortsetzen?" -#: src/cryptsetup.c:2965 +#: src/cryptsetup.c:2967 #, c-format msgid "" "This operation will erase all keyslots on device %s.\n" @@ -2599,363 +2599,363 @@ msgstr "" "Diese Operation wird alle Schlüsselfächer auf Gerät »%s« löschen.\n" "Dadurch wird das Gerät unbrauchbar." -#: src/cryptsetup.c:2972 +#: src/cryptsetup.c:2974 msgid "Operation aborted, keyslots were NOT wiped.\n" msgstr "Vorgang abgebrochen, die Schlüsselfächer wurden NICHT gesäubert.\n" -#: src/cryptsetup.c:3011 +#: src/cryptsetup.c:3013 msgid "Invalid LUKS type, only luks1 and luks2 are supported." msgstr "Invalid LUKS type, only luks1 and luks2 are supported." -#: src/cryptsetup.c:3027 +#: src/cryptsetup.c:3029 #, c-format msgid "Device is already %s type." msgstr "Das Gerät hat bereits den Typ »%s«." -#: src/cryptsetup.c:3034 +#: src/cryptsetup.c:3036 #, c-format msgid "This operation will convert %s to %s format.\n" msgstr "Diese Operation wird für »%s« ins Format »%s« umwandeln.\n" -#: src/cryptsetup.c:3037 +#: src/cryptsetup.c:3039 msgid "Operation aborted, device was NOT converted.\n" msgstr "Vorgang abgebrochen, das Gerät wurde NICHT konvertiert.\n" -#: src/cryptsetup.c:3077 +#: src/cryptsetup.c:3079 msgid "Option --priority, --label or --subsystem is missing." msgstr "Die Option --priority, --label oder --subsystem fehlt." -#: src/cryptsetup.c:3111 src/cryptsetup.c:3151 src/cryptsetup.c:3171 +#: src/cryptsetup.c:3113 src/cryptsetup.c:3153 src/cryptsetup.c:3173 #, c-format msgid "Token %d is invalid." msgstr "Token %d ist ungültig." -#: src/cryptsetup.c:3114 src/cryptsetup.c:3174 +#: src/cryptsetup.c:3116 src/cryptsetup.c:3176 #, c-format msgid "Token %d in use." msgstr "Token %d ist in Benutzung." -#: src/cryptsetup.c:3126 +#: src/cryptsetup.c:3128 #, c-format msgid "Failed to add luks2-keyring token %d." msgstr "Fehler beim Hinzufügen des LUKS2-Schlüsselring-Tokens %d." -#: src/cryptsetup.c:3137 src/cryptsetup.c:3200 +#: src/cryptsetup.c:3139 src/cryptsetup.c:3202 #, c-format msgid "Failed to assign token %d to keyslot %d." msgstr "Token %d kann nicht dem Schlüsselfach %d zugeordnet werden." -#: src/cryptsetup.c:3154 +#: src/cryptsetup.c:3156 #, c-format msgid "Token %d is not in use." msgstr "Token %d wird gerade nicht verwendet." -#: src/cryptsetup.c:3191 +#: src/cryptsetup.c:3193 msgid "Failed to import token from file." msgstr "Token konnte nicht aus der Datei importiert werden." -#: src/cryptsetup.c:3216 +#: src/cryptsetup.c:3218 #, c-format msgid "Failed to get token %d for export." msgstr "Auf Token %d kann nicht für den Export zugegriffen werden." -#: src/cryptsetup.c:3229 +#: src/cryptsetup.c:3231 #, c-format msgid "Token %d is not assigned to keyslot %d." msgstr "Token %d ist nicht dem Schlüsselfach %d zugeordnet." -#: src/cryptsetup.c:3231 src/cryptsetup.c:3238 +#: src/cryptsetup.c:3233 src/cryptsetup.c:3240 #, c-format msgid "Failed to unassign token %d from keyslot %d." msgstr "Token %d kann nicht vom Schlüsselfach %d losgelöst werden." -#: src/cryptsetup.c:3297 +#: src/cryptsetup.c:3299 msgid "Option --tcrypt-hidden, --tcrypt-system or --tcrypt-backup is supported only for TCRYPT device." msgstr "Die Optionen --tcrypt-hidden, --tcrypt-system und --tcrypt-backup sind nur zusammen mit einem TCRYPT-Gerät erlaubt." -#: src/cryptsetup.c:3300 +#: src/cryptsetup.c:3302 msgid "Option --veracrypt or --disable-veracrypt is supported only for TCRYPT device type." msgstr "Die Optionen --veracrypt und --disable-veracrypt werden nur für TCRYPT-kompatible Geräte unterstützt." -#: src/cryptsetup.c:3303 +#: src/cryptsetup.c:3305 msgid "Option --veracrypt-pim is supported only for VeraCrypt compatible devices." msgstr "Die Option --veracrypt-pim wird nur für VeraCrypt-kompatible Geräte unterstützt." -#: src/cryptsetup.c:3307 +#: src/cryptsetup.c:3309 msgid "Option --veracrypt-query-pim is supported only for VeraCrypt compatible devices." msgstr "Die Option --veracrypt-query-pim wird nur für VeraCrypt-kompatible Geräte unterstützt." -#: src/cryptsetup.c:3309 +#: src/cryptsetup.c:3311 msgid "The options --veracrypt-pim and --veracrypt-query-pim are mutually exclusive." msgstr "Die Optionen --veracrypt-pim und --veracrypt-query-pim schließen sich gegenseitig aus." -#: src/cryptsetup.c:3318 +#: src/cryptsetup.c:3320 msgid "Option --persistent is not allowed with --test-passphrase." msgstr "Die Option --persistent ist nicht mit --test-passphrase kombinierbar." -#: src/cryptsetup.c:3321 +#: src/cryptsetup.c:3323 msgid "Options --refresh and --test-passphrase are mutually exclusive." msgstr "Die Optionen --refresh und --test-passphrase schließen sich gegenseitig aus." -#: src/cryptsetup.c:3324 +#: src/cryptsetup.c:3326 msgid "Option --shared is allowed only for open of plain device." msgstr "Die Option --shared ist nur beim beim »open«-Befehl eines Plain-Gerätes erlaubt." -#: src/cryptsetup.c:3327 +#: src/cryptsetup.c:3329 msgid "Option --skip is supported only for open of plain and loopaes devices." msgstr "Die Option --skip ist nur beim Öffnen von plain- und loopaes-Geräten erlaubt." -#: src/cryptsetup.c:3330 +#: src/cryptsetup.c:3332 msgid "Option --offset with open action is only supported for plain and loopaes devices." msgstr "Die Option --offset mit der Aktion Öffnen wird nur für einfache und loopaes-Geräte unterstützt." -#: src/cryptsetup.c:3333 +#: src/cryptsetup.c:3335 msgid "Option --tcrypt-hidden cannot be combined with --allow-discards." msgstr "Die Option --tcrypt-hidden kann nicht mit --allow-discards kombiniert werden." -#: src/cryptsetup.c:3337 +#: src/cryptsetup.c:3339 msgid "Sector size option with open action is supported only for plain devices." msgstr "Die Option \"Sektorgröße\" mit der Aktion \"Öffnen\" wird nur für einfache Geräte unterstützt." -#: src/cryptsetup.c:3341 +#: src/cryptsetup.c:3343 msgid "Large IV sectors option is supported only for opening plain type device with sector size larger than 512 bytes." msgstr "Die Option für große IV-Sektoren wird nur unterstützt, wenn das geöffnete Gerät Sektoren größer als 512 Bytes hat." -#: src/cryptsetup.c:3346 +#: src/cryptsetup.c:3348 msgid "Option --test-passphrase is allowed only for open of LUKS, TCRYPT, BITLK and FVAULT2 devices." msgstr "Die Option --test-passphrase ist nur beim Öffnen von LUKS-, TCRYPT-, BITLK- und FVAULT2-Geräten erlaubt." -#: src/cryptsetup.c:3349 src/cryptsetup.c:3379 +#: src/cryptsetup.c:3351 src/cryptsetup.c:3381 msgid "Options --device-size and --size cannot be combined." msgstr "Die Optionen --device-size und --size können nicht kombiniert werden." -#: src/cryptsetup.c:3352 +#: src/cryptsetup.c:3354 msgid "Option --unbound is allowed only for open of luks device." msgstr "Die Option »--unbound« ist nur beim »open«-Befehl eines LUKS-Gerätes erlaubt." -#: src/cryptsetup.c:3355 +#: src/cryptsetup.c:3357 msgid "Option --unbound cannot be used without --test-passphrase." msgstr "Die Option »--unbound« kann nur in Kombination mit »--test-passphrase« verwendet werden." -#: src/cryptsetup.c:3359 +#: src/cryptsetup.c:3361 msgid "Option --volume-key-keyring cannot be combined with --hash or --volume-key-file." msgstr "Die Option --volume-key-keyring kann nicht mit --hash oder --volume-key-file kombiniert werden." -#: src/cryptsetup.c:3362 +#: src/cryptsetup.c:3364 msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "Beide --volume-key-file-Optionen müssen mit den entsprechenden --key-size-Optionen paarweise auftreten." -#: src/cryptsetup.c:3371 src/veritysetup.c:673 src/integritysetup.c:787 +#: src/cryptsetup.c:3373 src/veritysetup.c:673 src/integritysetup.c:793 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "Die Optionen --cancel-deferred und --deferred können nicht kombiniert werden." -#: src/cryptsetup.c:3387 +#: src/cryptsetup.c:3389 msgid "Option --active-name can be set only for LUKS2 device." msgstr "Die Option »--active-name« ist nur auf LUKS2-Geräte anwendbar." -#: src/cryptsetup.c:3390 +#: src/cryptsetup.c:3392 msgid "Options --active-name and --force-offline-reencrypt cannot be combined." msgstr "Die Optionen »--active-name« und »--force-offline-reencrypt« können nicht kombiniert werden." -#: src/cryptsetup.c:3393 +#: src/cryptsetup.c:3395 msgid "Options --new-volume-key-file and --keep-key cannot be combined." msgstr "Die Optionen --new-volume-key-file und --keep-key können nicht kombiniert werden." -#: src/cryptsetup.c:3396 +#: src/cryptsetup.c:3398 msgid "Options --new-volume-key-keyring and --keep-key cannot be combined." msgstr "Die Optionen --new-volume-key-keyring und --keep-key können nicht kombiniert werden." -#: src/cryptsetup.c:3404 src/cryptsetup.c:3434 +#: src/cryptsetup.c:3406 src/cryptsetup.c:3436 msgid "Keyslot specification is required." msgstr "Das Schlüsselfach muss angegeben werden." -#: src/cryptsetup.c:3412 +#: src/cryptsetup.c:3414 msgid "Options --align-payload and --offset cannot be combined." msgstr "Die Optionen --align-payload und --offset können nicht kombiniert werden." -#: src/cryptsetup.c:3415 +#: src/cryptsetup.c:3417 msgid "Option --integrity-no-wipe can be used only for format action with integrity extension." msgstr "Die Option --integrity-no-wipe ist nur für die »format«-Aktion mit Integritätserweiterung erlaubt." -#: src/cryptsetup.c:3418 +#: src/cryptsetup.c:3420 msgid "Only one of --use-[u]random options is allowed." msgstr "Nur eine der Optionen --use-[u]random ist erlaubt." -#: src/cryptsetup.c:3426 +#: src/cryptsetup.c:3428 msgid "Key size is required with --unbound option." msgstr "Die Option »--unbound« erfordert die Schlüsselgröße." -#: src/cryptsetup.c:3446 +#: src/cryptsetup.c:3448 msgid "Invalid token action." msgstr "Ungültige Token-Aktion." -#: src/cryptsetup.c:3449 +#: src/cryptsetup.c:3451 msgid "--key-description parameter is mandatory for token add action." msgstr "Der Parameter --key-description ist Pflicht für die Aktion »token add«." -#: src/cryptsetup.c:3453 src/cryptsetup.c:3466 +#: src/cryptsetup.c:3455 src/cryptsetup.c:3468 msgid "Action requires specific token. Use --token-id parameter." msgstr "Die Aktion erfordert ein bestimmtes Token. Verwenden Sie den Parameter --token-id." -#: src/cryptsetup.c:3457 +#: src/cryptsetup.c:3459 msgid "Option --unbound is valid only with token add action." msgstr "Die Option »--unbound« kann nur zusammen mit der Aktion zum Hinzufügen eines Tokens verwendet werden." -#: src/cryptsetup.c:3459 +#: src/cryptsetup.c:3461 msgid "Options --key-slot and --unbound cannot be combined." msgstr "Die Optionen --key-slot und --unbound können nicht kombiniert werden." -#: src/cryptsetup.c:3464 +#: src/cryptsetup.c:3466 msgid "Action requires specific keyslot. Use --key-slot parameter." msgstr "Die Aktion erfordert ein bestimmtes Schlüsselfach. Verwenden Sie den Parameter --key-slot." -#: src/cryptsetup.c:3480 +#: src/cryptsetup.c:3482 msgid " [--type ] []" msgstr " [--type ] []" -#: src/cryptsetup.c:3480 src/veritysetup.c:487 src/integritysetup.c:554 +#: src/cryptsetup.c:3482 src/veritysetup.c:487 src/integritysetup.c:560 msgid "open device as " msgstr "Gerät als öffnen" -#: src/cryptsetup.c:3481 src/cryptsetup.c:3482 src/cryptsetup.c:3483 -#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:555 -#: src/integritysetup.c:556 src/integritysetup.c:558 +#: src/cryptsetup.c:3483 src/cryptsetup.c:3484 src/cryptsetup.c:3485 +#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:561 +#: src/integritysetup.c:562 src/integritysetup.c:564 msgid "" msgstr "" -#: src/cryptsetup.c:3481 src/veritysetup.c:488 src/integritysetup.c:555 +#: src/cryptsetup.c:3483 src/veritysetup.c:488 src/integritysetup.c:561 msgid "close device (remove mapping)" msgstr "Gerät schließen (Zuordnung entfernen)" -#: src/cryptsetup.c:3482 src/integritysetup.c:558 +#: src/cryptsetup.c:3484 src/integritysetup.c:564 msgid "resize active device" msgstr "Größe des aktiven Geräts ändern" -#: src/cryptsetup.c:3483 +#: src/cryptsetup.c:3485 msgid "show device status" msgstr "Gerätestatus anzeigen" -#: src/cryptsetup.c:3484 +#: src/cryptsetup.c:3486 msgid "[--cipher ]" msgstr "[--cipher ]" -#: src/cryptsetup.c:3484 +#: src/cryptsetup.c:3486 msgid "benchmark cipher" msgstr "Verschlüsselungsalgorithmus benchmarken" -#: src/cryptsetup.c:3485 src/cryptsetup.c:3486 src/cryptsetup.c:3487 -#: src/cryptsetup.c:3488 src/cryptsetup.c:3489 src/cryptsetup.c:3496 -#: src/cryptsetup.c:3497 src/cryptsetup.c:3498 src/cryptsetup.c:3499 -#: src/cryptsetup.c:3500 src/cryptsetup.c:3501 src/cryptsetup.c:3502 -#: src/cryptsetup.c:3503 src/cryptsetup.c:3504 src/cryptsetup.c:3505 +#: src/cryptsetup.c:3487 src/cryptsetup.c:3488 src/cryptsetup.c:3489 +#: src/cryptsetup.c:3490 src/cryptsetup.c:3491 src/cryptsetup.c:3498 +#: src/cryptsetup.c:3499 src/cryptsetup.c:3500 src/cryptsetup.c:3501 +#: src/cryptsetup.c:3502 src/cryptsetup.c:3503 src/cryptsetup.c:3504 +#: src/cryptsetup.c:3505 src/cryptsetup.c:3506 src/cryptsetup.c:3507 msgid "" msgstr "" -#: src/cryptsetup.c:3485 +#: src/cryptsetup.c:3487 msgid "try to repair on-disk metadata" msgstr "Versuchen, die Metadaten auf dem Datenträger zu reparieren" -#: src/cryptsetup.c:3486 +#: src/cryptsetup.c:3488 msgid "reencrypt LUKS2 device" msgstr "LUKS2-Gerät wiederverschlüsseln" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3489 msgid "erase all keyslots (remove encryption key)" msgstr "Alle Schlüsselfächer löschen (Verschlüsselungsschlüssel entfernen)" -#: src/cryptsetup.c:3488 +#: src/cryptsetup.c:3490 msgid "convert LUKS from/to LUKS2 format" msgstr "Zwischen den Formaten LUKS und LUKS2 umwandeln" -#: src/cryptsetup.c:3489 +#: src/cryptsetup.c:3491 msgid "set permanent configuration options for LUKS2" msgstr "Permanente Konfigurationsoptionen für LUKS2 festlegen" -#: src/cryptsetup.c:3490 src/cryptsetup.c:3491 +#: src/cryptsetup.c:3492 src/cryptsetup.c:3493 msgid " []" msgstr " []" -#: src/cryptsetup.c:3490 +#: src/cryptsetup.c:3492 msgid "formats a LUKS device" msgstr "Ein LUKS-Gerät formatieren" -#: src/cryptsetup.c:3491 +#: src/cryptsetup.c:3493 msgid "add key to LUKS device" msgstr "Schlüssel zu LUKS-Gerät hinzufügen" -#: src/cryptsetup.c:3492 src/cryptsetup.c:3493 src/cryptsetup.c:3494 +#: src/cryptsetup.c:3494 src/cryptsetup.c:3495 src/cryptsetup.c:3496 msgid " []" msgstr " []" -#: src/cryptsetup.c:3492 +#: src/cryptsetup.c:3494 msgid "removes supplied key or key file from LUKS device" msgstr "Entfernt bereitgestellten Schlüssel oder Schlüsseldatei vom LUKS-Gerät" -#: src/cryptsetup.c:3493 +#: src/cryptsetup.c:3495 msgid "changes supplied key or key file of LUKS device" msgstr "Ändert den angegebenen Schlüssel oder die Schlüsseldatei des LUKS-Geräts" -#: src/cryptsetup.c:3494 +#: src/cryptsetup.c:3496 msgid "converts a key to new pbkdf parameters" msgstr "Wandelt einen Schlüssel in neue PBKDF-Parameter um" -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3497 msgid " " msgstr " " -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3497 msgid "wipes key with number from LUKS device" msgstr "Löscht Schlüssel mit Nummer vom LUKS-Gerät" -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3498 msgid "print UUID of LUKS device" msgstr "UUID des LUKS-Geräts ausgeben" -#: src/cryptsetup.c:3497 +#: src/cryptsetup.c:3499 msgid "tests for LUKS partition header" msgstr "Testet auf Header einer LUKS-Partition" -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3500 msgid "dump LUKS partition information" msgstr "LUKS-Partitionsinformationen ausgeben" -#: src/cryptsetup.c:3499 +#: src/cryptsetup.c:3501 msgid "dump TCRYPT device information" msgstr "TCRYPT-Geräteinformationen ausgeben" -#: src/cryptsetup.c:3500 +#: src/cryptsetup.c:3502 msgid "dump BITLK device information" msgstr "BITLK-Geräteinformationen ausgeben" -#: src/cryptsetup.c:3501 +#: src/cryptsetup.c:3503 msgid "dump FVAULT2 device information" msgstr "VFAULT2-Geräteinformationen ausgeben" -#: src/cryptsetup.c:3502 +#: src/cryptsetup.c:3504 msgid "Suspend LUKS device and wipe key (all IOs are frozen)" msgstr "LUKS-Gerät in Ruhezustand versetzen und alle Schlüssel auslöschen (alle IOs werden eingefroren)" -#: src/cryptsetup.c:3503 +#: src/cryptsetup.c:3505 msgid "Resume suspended LUKS device" msgstr "LUKS-Gerät aus dem Ruhezustand aufwecken" -#: src/cryptsetup.c:3504 +#: src/cryptsetup.c:3506 msgid "Backup LUKS device header and keyslots" msgstr "Header und Schlüsselfächer eines LUKS-Geräts sichern" -#: src/cryptsetup.c:3505 +#: src/cryptsetup.c:3507 msgid "Restore LUKS device header and keyslots" msgstr "Header und Schlüsselfächer eines LUKS-Geräts wiederherstellen" -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3508 msgid " " msgstr " " -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3508 msgid "Manipulate LUKS2 tokens" msgstr "LUKS2-Token manipulieren" -#: src/cryptsetup.c:3525 src/veritysetup.c:505 src/integritysetup.c:573 +#: src/cryptsetup.c:3527 src/veritysetup.c:505 src/integritysetup.c:579 msgid "" "\n" " is one of:\n" @@ -2963,7 +2963,7 @@ msgstr "" "\n" " ist eine von:\n" -#: src/cryptsetup.c:3531 +#: src/cryptsetup.c:3533 msgid "" "\n" "You can also use old syntax aliases:\n" @@ -2975,7 +2975,7 @@ msgstr "" "\topen: create (plainOpen), luksOpen, loopaesOpen, tcryptOpen, bitlkOpen, fvault2Open\n" "\tclose: remove (plainClose), luksClose, loopaesClose, tcryptClose, bitlkClose, fvault2Close\n" -#: src/cryptsetup.c:3535 +#: src/cryptsetup.c:3537 #, c-format msgid "" "\n" @@ -2990,7 +2990,7 @@ msgstr "" " ist die Nummer des zu verändernden LUKS-Schlüsselfachs\n" " optionale Schlüsseldatei für den neuen Schlüssel der »luksAddKey«-Aktion\n" -#: src/cryptsetup.c:3542 +#: src/cryptsetup.c:3544 #, c-format msgid "" "\n" @@ -2999,7 +2999,7 @@ msgstr "" "\n" "Vorgegebenes festeingebautes Metadatenformat ist %s (für luksFormat-Aktion).\n" -#: src/cryptsetup.c:3547 +#: src/cryptsetup.c:3549 msgid "" "\n" "LUKS2 external token plugin support is enabled.\n" @@ -3007,12 +3007,12 @@ msgstr "" "\n" "Die Plugin-Unterstützung für externe LUKS2-Tokens ist aktiviert.\n" -#: src/cryptsetup.c:3548 +#: src/cryptsetup.c:3550 #, c-format msgid "LUKS2 external token plugin path: %s.\n" msgstr "Pfad des Plugins für externe LUKS2-Token: %s.\n" -#: src/cryptsetup.c:3550 +#: src/cryptsetup.c:3552 msgid "" "\n" "LUKS2 external token plugin support is disabled.\n" @@ -3020,7 +3020,7 @@ msgstr "" "\n" "Die Plugin-Unterstützung für externe LUKS2-Tokens ist deaktiviert.\n" -#: src/cryptsetup.c:3554 +#: src/cryptsetup.c:3556 #, c-format msgid "" "\n" @@ -3037,7 +3037,7 @@ msgstr "" "Vorgabe-PBKDF für LUKS2: %s\n" "\tIterationszeit: %d, benötigter Speicher: %d kB, parallele Threads: %d\n" -#: src/cryptsetup.c:3565 +#: src/cryptsetup.c:3567 #, c-format msgid "" "\n" @@ -3052,122 +3052,126 @@ msgstr "" "\tplain: %s, Schlüssel: %d Bits, Passphrase-Hashen: %s\n" "\tLUKS: %s, Schlüssel: %d Bits, LUKS-Header-Hashen: %s, Zufallszahlengenerator: %s\n" -#: src/cryptsetup.c:3574 +#: src/cryptsetup.c:3576 msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: Standard-Schlüsselgröße mit XTS-Modus (zwei interne Schlüssel) wird verdoppelt.\n" -#: src/cryptsetup.c:3592 src/veritysetup.c:647 src/integritysetup.c:733 +#: src/cryptsetup.c:3594 src/veritysetup.c:647 src/integritysetup.c:739 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: Benötigt %s als Argumente" -#: src/cryptsetup.c:3632 src/utils_reencrypt_luks1.c:1143 +#: src/cryptsetup.c:3634 src/utils_reencrypt_luks1.c:1143 msgid "Key slot is invalid." msgstr "Schlüsselfach ist ungültig." -#: src/cryptsetup.c:3660 +#: src/cryptsetup.c:3662 msgid "Device size must be multiple of 512 bytes sector." msgstr "Die Gerätegröße muss ein Vielfaches von 512-Byte-Sektoren sein." -#: src/cryptsetup.c:3665 +#: src/cryptsetup.c:3667 msgid "Invalid max reencryption hotzone size specification." msgstr "Ungültige Angabe der Maximalgröße für die Wiederverschlüsselungs-Hotzone." -#: src/cryptsetup.c:3679 src/cryptsetup.c:3696 src/cryptsetup.c:3708 +#: src/cryptsetup.c:3681 src/cryptsetup.c:3698 src/cryptsetup.c:3710 msgid "Key size must be a multiple of 8 bits" msgstr "Schlüsselgröße muss ein Vielfaches von 8 Bit sein" -#: src/cryptsetup.c:3686 +#: src/cryptsetup.c:3688 msgid "At most 2 key size specifications can be supplied." msgstr "Es können maximal 2 Schlüsselgrößen angegeben werden." -#: src/cryptsetup.c:3715 src/cryptsetup.c:3726 +#: src/cryptsetup.c:3717 src/cryptsetup.c:3728 #, c-format msgid "At most %d volume key specifications can be supplied." msgstr "Es können maximal %d Laufwerksschlüssel-Angaben verarbeitet werden." -#: src/cryptsetup.c:3738 +#: src/cryptsetup.c:3740 #, c-format msgid "At most %d keyring link specifications can be supplied." msgstr "Es können maximal %d Schlüsselbund-Verknüpfungsangaben verarbeitet werden." -#: src/cryptsetup.c:3747 +#: src/cryptsetup.c:3749 msgid "Maximum device reduce size is 1 GiB." msgstr "Die maximale Verkleinerungsgröße ist 1 GiB." -#: src/cryptsetup.c:3750 +#: src/cryptsetup.c:3752 msgid "Reduce size must be multiple of 512 bytes sector." msgstr "Die verkleinerte Größe muss ein Vielfaches von 512-Byte-Sektoren sein." -#: src/cryptsetup.c:3767 +#: src/cryptsetup.c:3769 msgid "Option --priority can be only ignore/normal/prefer." msgstr "Die Option --priority kann nur »ignore/normal/prefer« sein." -#: src/cryptsetup.c:3786 src/veritysetup.c:568 src/integritysetup.c:653 +#: src/cryptsetup.c:3774 +msgid "Invalid maximal tries specification." +msgstr "Ungültige Angabe der maximalen Versuche." + +#: src/cryptsetup.c:3793 src/veritysetup.c:568 src/integritysetup.c:659 msgid "Show this help message" msgstr "Diese Hilfe anzeigen" -#: src/cryptsetup.c:3787 src/veritysetup.c:569 src/integritysetup.c:654 +#: src/cryptsetup.c:3794 src/veritysetup.c:569 src/integritysetup.c:660 msgid "Display brief usage" msgstr "Kurze Aufrufsyntax anzeigen" -#: src/cryptsetup.c:3788 src/veritysetup.c:570 src/integritysetup.c:655 +#: src/cryptsetup.c:3795 src/veritysetup.c:570 src/integritysetup.c:661 msgid "Print package version" msgstr "Paketversion ausgeben" -#: src/cryptsetup.c:3799 src/veritysetup.c:581 src/integritysetup.c:666 +#: src/cryptsetup.c:3806 src/veritysetup.c:581 src/integritysetup.c:672 msgid "Help options:" msgstr "Hilfe-Optionen:" -#: src/cryptsetup.c:3822 src/veritysetup.c:602 src/integritysetup.c:686 +#: src/cryptsetup.c:3829 src/veritysetup.c:602 src/integritysetup.c:692 msgid "[OPTION...] " msgstr "[OPTION...] " -#: src/cryptsetup.c:3831 src/veritysetup.c:611 src/integritysetup.c:697 +#: src/cryptsetup.c:3838 src/veritysetup.c:611 src/integritysetup.c:703 msgid "Argument missing." msgstr "Argument fehlt." -#: src/cryptsetup.c:3910 src/veritysetup.c:642 src/integritysetup.c:728 +#: src/cryptsetup.c:3917 src/veritysetup.c:642 src/integritysetup.c:734 msgid "Unknown action." msgstr "Unbekannte Aktion." -#: src/cryptsetup.c:3928 +#: src/cryptsetup.c:3935 msgid "Option --key-file takes precedence over specified key file argument." msgstr "Die Option --key-file wirkt stärker als das angegebene Schlüsseldatei-Argument." -#: src/cryptsetup.c:3934 +#: src/cryptsetup.c:3941 msgid "Only one --key-file argument is allowed." msgstr "Die Option --key-file ist nur einmal erlaubt." -#: src/cryptsetup.c:3939 +#: src/cryptsetup.c:3946 msgid "Password-based key derivation function (PBKDF) can be only pbkdf2 or argon2i/argon2id." msgstr "Passwortbasierte Schlüsselableitungsfunktion (PBKDF) kann nur »pbkdf2« oder »argon2i/argon2id« sein." -#: src/cryptsetup.c:3944 +#: src/cryptsetup.c:3951 msgid "PBKDF forced iterations cannot be combined with iteration time option." msgstr "Bei PBKDF darf nur entweder die Anzahl der Durchläufe oder die Zeitbegrenzung angegeben werden." -#: src/cryptsetup.c:3949 +#: src/cryptsetup.c:3956 msgid "Cannot link volume key to a keyring when keyring is disabled." msgstr "Laufwerkschlüssel kann nicht mit einem Schlüsselbund verbunden werden, solange der Schlüsselbund deaktiviert ist." -#: src/cryptsetup.c:3954 +#: src/cryptsetup.c:3961 msgid "Cannot use keyring key description when keyring is disabled." msgstr "Die Beschreibung des Schlüsselbundes kann nicht verwendet werden, wenn der Schlüsselbund deaktiviert ist." -#: src/cryptsetup.c:3959 +#: src/cryptsetup.c:3966 msgid "Inline integrity must be used together with --integrity option." msgstr "Inline-Integrität muss zusammen mit der Option »--integrity« benutzt werden." -#: src/cryptsetup.c:3970 +#: src/cryptsetup.c:3977 msgid "Options --keyslot-cipher and --keyslot-key-size must be used together." msgstr "Die Optionen --keyslot-cipher und --keyslot-keysize können nur zusammen benutzt werden." -#: src/cryptsetup.c:3978 +#: src/cryptsetup.c:3985 msgid "No action taken. Invoked with --test-args option.\n" msgstr "Es wird keine Aktion ausgeführt. Aufgerufen mit der Option --test-args.\n" -#: src/cryptsetup.c:3991 +#: src/cryptsetup.c:3998 msgid "Cannot disable metadata locking." msgstr "Fehler beim Deaktivieren der Metadaten-Dateisperre." @@ -3232,7 +3236,7 @@ msgstr "Der Befehl erfordert die Option oder --root-hash-file als Ar msgid " " msgstr " " -#: src/veritysetup.c:485 src/integritysetup.c:553 +#: src/veritysetup.c:485 src/integritysetup.c:559 msgid "format device" msgstr "Gerät formatieren" @@ -3248,7 +3252,7 @@ msgstr "Gerät verifizieren" msgid " []" msgstr " []" -#: src/veritysetup.c:489 src/integritysetup.c:556 +#: src/veritysetup.c:489 src/integritysetup.c:562 msgid "show active device status" msgstr "Status der aktiven Geräte anzeigen" @@ -3256,7 +3260,7 @@ msgstr "Status der aktiven Geräte anzeigen" msgid "" msgstr "" -#: src/veritysetup.c:490 src/integritysetup.c:557 +#: src/veritysetup.c:490 src/integritysetup.c:563 msgid "show on-disk information" msgstr "Auf dem Datenträger gespeicherte Informationen anzeigen" @@ -3298,7 +3302,7 @@ msgstr "Die Optionen --panic-on-corruption und --restart-on-corruption können n msgid "Option --error-as-corruption must be used with --panic-on-corruption or --restart-on-corruption." msgstr "Die Option --error-as-corruption muss mit --panic-on-corruption oder --restart-on-corruption verwendet werden." -#: src/integritysetup.c:168 +#: src/integritysetup.c:169 #, c-format msgid "" "This will overwrite data on %s and %s irrevocably.\n" @@ -3307,33 +3311,33 @@ msgstr "" "Dadurch werden Daten auf %s und %s unwiderruflich überschrieben.\n" "Um Daten auf dem Gerät zu bewahren, verwenden Sie die Option »--no-wipe« (und aktivieren Sie sie dann mit »--integrity-recalculate«)." -#: src/integritysetup.c:213 +#: src/integritysetup.c:215 #, c-format msgid "Formatted with tag size %u%s, internal integrity %s.\n" msgstr "Formatiert mit Etikettgröße %u%s und interner Integrität %s.\n" -#: src/integritysetup.c:214 +#: src/integritysetup.c:216 msgid " (inline hw tags)" msgstr " (Inline-Hardware-Etiketten)" -#: src/integritysetup.c:303 +#: src/integritysetup.c:305 msgid "Setting recalculate flag is not supported, you may consider using --wipe instead." msgstr "Das Setzen der Option »recalculate« wird nicht unterstützt, Sie können stattdessen »--wipe« erwägen." -#: src/integritysetup.c:380 src/integritysetup.c:540 +#: src/integritysetup.c:382 src/integritysetup.c:546 #, c-format msgid "Device %s is not a valid INTEGRITY device." msgstr "Gerät »%s« ist kein gültiges INTEGRITY-Gerät." -#: src/integritysetup.c:553 src/integritysetup.c:557 +#: src/integritysetup.c:559 src/integritysetup.c:563 msgid "" msgstr "" -#: src/integritysetup.c:554 +#: src/integritysetup.c:560 msgid " " msgstr " " -#: src/integritysetup.c:577 +#: src/integritysetup.c:583 #, c-format msgid "" "\n" @@ -3344,7 +3348,7 @@ msgstr "" " ist das Gerät, das unter »%s« angelegt werden soll\n" " ist das Gerät, das die Daten mit Integritätsangaben enthält\n" -#: src/integritysetup.c:582 +#: src/integritysetup.c:588 #, c-format msgid "" "\n" @@ -3357,48 +3361,48 @@ msgstr "" "\tPrüfalgorithmus: %s\n" "\tMaximalgröße der Schlüsseldatei: %d kB\n" -#: src/integritysetup.c:639 +#: src/integritysetup.c:645 #, c-format msgid "Invalid --%s size. Maximum is %u bytes." msgstr "Ungültige Größe für --%s. Maximum ist %u Bytes." -#: src/integritysetup.c:742 +#: src/integritysetup.c:748 msgid "Both key file and key size options must be specified." msgstr "Sowohl die Schlüsseldatei als auch die Schlüsselgröße müssen angegeben werden." -#: src/integritysetup.c:746 +#: src/integritysetup.c:752 msgid "Both journal integrity key file and key size options must be specified." msgstr "Sowohl die Schlüsseldatei als auch die Schlüsselgröße müssen für die Journalintegrität angegeben werden." -#: src/integritysetup.c:749 +#: src/integritysetup.c:755 msgid "Journal integrity algorithm must be specified if journal integrity key is used." msgstr "Wenn ein Integritätsschlüssel für das Journal verwendet wird, muss auch der Integritätsalgorithmus angegeben werden." -#: src/integritysetup.c:753 +#: src/integritysetup.c:759 msgid "Both journal encryption key file and key size options must be specified." msgstr "Sowohl der Verschlüsselungsschlüssel als auch die Schlüsselgröße müssen für die Journalverschlüsselung angegeben werden." -#: src/integritysetup.c:756 +#: src/integritysetup.c:762 msgid "Journal encryption algorithm must be specified if journal encryption key is used." msgstr "Wenn ein Verschlüsselungsschlüssel für das Journal verwendet wird, muss auch der Verschlüsselungsalgorithmus angegeben werden." -#: src/integritysetup.c:760 +#: src/integritysetup.c:766 msgid "Recovery and bitmap mode options are mutually exclusive." msgstr "Die Modi Wiederherstellung und Bitmap schließen sich gegenseitig aus." -#: src/integritysetup.c:767 +#: src/integritysetup.c:773 msgid "Journal options cannot be used in bitmap mode." msgstr "Die Journal-Optionen können nicht im Bitmap-Modus verwendet werden." -#: src/integritysetup.c:772 +#: src/integritysetup.c:778 msgid "Bitmap options can be used only in bitmap mode." msgstr "Die Bitmapoptionen können nur im Bitmapmodus verwendet werden." -#: src/integritysetup.c:778 +#: src/integritysetup.c:784 msgid "Inline mode cannot be combined with journal or bitmap options." msgstr "Der Inline-Modus kann nicht mit den Optionen Journal oder Bitmap kombiniert werden." -#: src/integritysetup.c:782 +#: src/integritysetup.c:788 msgid "Inline mode cannot be combined with separate data device." msgstr "Der Inline-Modus kann nicht mit einem separaten Datengerät kombiniert werden." @@ -3752,32 +3756,32 @@ msgstr "Das Gerät ist nicht der LUKS2-Entschlüsselung. Die Option »--encrypt msgid "Device is in reencryption using datashift resilience. Requested --resilience option cannot be applied." msgstr "Das Gerät befindet sich in der Wiederverschlüsselung mit Datashift-Resilienz. Die angeforderte Option --resilience kann nicht angewendet werden." -#: src/utils_reencrypt.c:282 src/utils_reencrypt.c:1924 +#: src/utils_reencrypt.c:283 src/utils_reencrypt.c:1927 msgid "Cannot determine volume key size for LUKS without keyslots, please use --new-key-size option." msgstr "Die Größe des Laufwerksschlüssels kann für LUKS ohne Schlüsselfächer nicht bestimmt werden, bitte verwenden Sie die Option --new-key-size." -#: src/utils_reencrypt.c:436 +#: src/utils_reencrypt.c:438 msgid "Device requires reencryption recovery. Run repair first." msgstr "Das Gerät erfordert die Wiederherstellung der Wiederverschlüsselung. Führen Sie zuerst die Reparatur aus." -#: src/utils_reencrypt.c:450 +#: src/utils_reencrypt.c:452 #, c-format msgid "Device %s is already in LUKS2 reencryption. Do you wish to resume previously initialised operation?" msgstr "Gerät %s befindet sich bereits in der LUKS2-Neuverschlüsselung. Möchten Sie den zuvor begonnenen Vorgang fortsetzen?" -#: src/utils_reencrypt.c:561 +#: src/utils_reencrypt.c:563 msgid "Legacy LUKS2 reencryption is no longer supported." msgstr "Die veraltete LUKS2-Wiederverschlüsselung wird nicht mehr unterstützt." -#: src/utils_reencrypt.c:566 +#: src/utils_reencrypt.c:568 msgid "Can not reencrypt LUKS2 device configured to use OPAL." msgstr "Auf einem Gerät, das für OPAL konfiguriert ist, kann die LUKS2-Wiederverschlüsselung nicht durchgeführt werden." -#: src/utils_reencrypt.c:572 +#: src/utils_reencrypt.c:574 msgid "Reencryption of device with integrity profile is not supported." msgstr "Wiederverschlüsselung von Geräten mit Integritätsprofil wird nicht unterstützt." -#: src/utils_reencrypt.c:609 +#: src/utils_reencrypt.c:611 #, c-format msgid "" "Requested --sector-size % is incompatible with %s superblock\n" @@ -3786,110 +3790,110 @@ msgstr "" "Angeforderte --sector-size % ist nicht kompatibel mit dem %s-Superblock\n" "(Blockgröße: %Bytes), der auf dem Gerät %s erkannt wurde." -#: src/utils_reencrypt.c:678 src/utils_reencrypt.c:2204 +#: src/utils_reencrypt.c:680 src/utils_reencrypt.c:2207 msgid "Encryption without detached header (--header) is not possible without data device size reduction (--reduce-device-size)." msgstr "Verschlüsselung ohne separaten Kopfbereich (--header) ist nur möglich, wenn die Größe des Hauptgeräts reduziert wird (--reduce-device-size)." -#: src/utils_reencrypt.c:687 +#: src/utils_reencrypt.c:689 msgid "Requested data offset must be less than or equal to half of --reduce-device-size parameter." msgstr "Der angeforderte Datenoffset darf maximal die Hälfte des Parameters --reduce-device-size betragen." -#: src/utils_reencrypt.c:697 +#: src/utils_reencrypt.c:699 #, c-format msgid "Adjusting --reduce-device-size value to twice the --offset % (sectors).\n" msgstr "Der Wert von --reduce-device-size wird auf das Doppelte von --offset % (in Sektoren) angepasst.\n" -#: src/utils_reencrypt.c:727 +#: src/utils_reencrypt.c:729 #, c-format msgid "Temporary header file %s already exists. Aborting." msgstr "Temporäre Headerdatei »%s« existiert bereits. Wird abgebrochen." -#: src/utils_reencrypt.c:729 src/utils_reencrypt.c:736 +#: src/utils_reencrypt.c:731 src/utils_reencrypt.c:738 #, c-format msgid "Cannot create temporary header file %s." msgstr "Fehler beim Anlegen der temporären Headerdatei »%s«." -#: src/utils_reencrypt.c:761 +#: src/utils_reencrypt.c:763 msgid "LUKS2 metadata size is larger than data shift value." msgstr "Die Größe der LUKS2-Metadaten ist größer als der Wert der Datenverschiebung." -#: src/utils_reencrypt.c:800 +#: src/utils_reencrypt.c:802 #, c-format msgid "Failed to place new header at head of device %s." msgstr "Der neue Header konnte nicht am Kopf des Geräts %s platziert werden." -#: src/utils_reencrypt.c:813 +#: src/utils_reencrypt.c:815 #, c-format msgid "%s/%s is now active and ready for online encryption.\n" msgstr "%s/%s ist jetzt aktiv und bereit für die Onlineverschlüsselung.\n" -#: src/utils_reencrypt.c:850 +#: src/utils_reencrypt.c:852 #, c-format msgid "Active device %s is not LUKS2." msgstr "Das aktive Gerät »%s« ist kein LUKS2-Gerät." -#: src/utils_reencrypt.c:878 +#: src/utils_reencrypt.c:880 msgid "Restoring original LUKS2 header." msgstr "Wiederherstellung des ursprünglichen LUKS2-Headers." -#: src/utils_reencrypt.c:886 +#: src/utils_reencrypt.c:888 msgid "Original LUKS2 header restore failed." msgstr "Fehler beim Wiederherstellen des ursprünglichen LUKS2-Headers." -#: src/utils_reencrypt.c:918 +#: src/utils_reencrypt.c:920 #, c-format msgid "Header file %s does not exist. Do you want to initialize LUKS2 decryption of device %s and export LUKS2 header to file %s?" msgstr "Die Header-Datei %s existiert nicht. Möchten Sie die LUKS2-Entschlüsselung von Gerät %s initialisieren und LUKS2-Header in Datei %s exportieren?" -#: src/utils_reencrypt.c:961 +#: src/utils_reencrypt.c:963 msgid "Failed to add read/write permissions to exported header file." msgstr "Fehler beim Hinzufügen der Lese-/Schreibberechtigung für die exportierte Header-Datei." -#: src/utils_reencrypt.c:1015 +#: src/utils_reencrypt.c:1017 #, c-format msgid "Reencryption initialization failed. Header backup is available in %s." msgstr "Fehler beim Initialisieren der Wiederverschlüsselung. Eine Sicherungskopie des Headers befindet sich in %s." -#: src/utils_reencrypt.c:1043 +#: src/utils_reencrypt.c:1045 msgid "LUKS2 decryption is supported with detached header device only (with data offset set to 0)." msgstr "LUKS2-Entschlüsselung wird nur mit losgelöstem Headergerät unterstützt (mit Datenoffset auf 0 gesetzt)." -#: src/utils_reencrypt.c:1487 +#: src/utils_reencrypt.c:1490 msgid "No token could unlock the device." msgstr "Kein Token konnte das Gerät entsperren." -#: src/utils_reencrypt.c:1519 src/utils_reencrypt.c:1528 +#: src/utils_reencrypt.c:1522 src/utils_reencrypt.c:1531 msgid "Not enough free keyslots for reencryption." msgstr "Nicht genügend freie Schlüsselfächer für Wiederverschlüsselung." -#: src/utils_reencrypt.c:1559 +#: src/utils_reencrypt.c:1562 msgid "Key file or keyring key description can be used only with --key-slot or with exactly one key slot active." msgstr "Schlüsseldatei oder Schlüsselbund kann nur mit --key-slot oder mit genau einem aktiven Schlüsselfach benutzt werden." -#: src/utils_reencrypt.c:1566 src/utils_reencrypt.c:1579 +#: src/utils_reencrypt.c:1569 src/utils_reencrypt.c:1582 #: src/utils_reencrypt_luks1.c:1092 src/utils_reencrypt_luks1.c:1103 #, c-format msgid "Enter passphrase for key slot %d: " msgstr "Geben Sie die Passphrase für Schlüsselfach %d ein: " -#: src/utils_reencrypt.c:1876 +#: src/utils_reencrypt.c:1879 #, c-format msgid "Switching data encryption cipher to %s.\n" msgstr "Der Verschlüsselungsalgorithmus wird auf %s geändert.\n" -#: src/utils_reencrypt.c:1977 src/utils_reencrypt.c:1998 +#: src/utils_reencrypt.c:1980 src/utils_reencrypt.c:2001 msgid "Use --force-no-keyslots to reencrypt device with active keyslots by passing volume keys directly." msgstr "Verwenden Sie --force-no-keyslots, um Geräte mit aktiven Schlüsselfach neu zu verschlüsseln, indem Sie Laufwerksschlüssel direkt übergeben." -#: src/utils_reencrypt.c:1993 +#: src/utils_reencrypt.c:1996 msgid "Option --new-volume-key-file must be paired with --new-key-size" msgstr "Die Option --new-volume-key-file muss mit --new-key-size paarweise auftreten" -#: src/utils_reencrypt.c:2035 +#: src/utils_reencrypt.c:2038 msgid "No data segment parameters changed. Reencryption aborted." msgstr "Keine Datensegmentparameter geändert. Wiederverschlüsselung abgebrochen." -#: src/utils_reencrypt.c:2072 +#: src/utils_reencrypt.c:2075 msgid "" "Encryption sector size increase on offline device is not supported.\n" "Activate the device first or use --force-offline-reencrypt option (dangerous!)." @@ -3897,7 +3901,7 @@ msgstr "" "Die Zunahme der Größe des Verschlüsselungssektors auf einem Offline-Gerät wird nicht unterstützt.\n" "Aktivieren Sie das Gerät zuerst oder verwenden Sie die Option »--force-offline-reencrypt« (gefährlich!)." -#: src/utils_reencrypt.c:2114 src/utils_reencrypt_luks1.c:688 +#: src/utils_reencrypt.c:2117 src/utils_reencrypt_luks1.c:688 #: src/utils_reencrypt_luks1.c:759 msgid "" "\n" @@ -3906,58 +3910,58 @@ msgstr "" "\n" "Wiederverschlüsselung unterbrochen." -#: src/utils_reencrypt.c:2119 +#: src/utils_reencrypt.c:2122 msgid "Resuming LUKS reencryption in forced offline mode.\n" msgstr "LUKS-Wiederverschlüsselung wird im erzwungenen Offline-Modus fortgesetzt.\n" -#: src/utils_reencrypt.c:2142 +#: src/utils_reencrypt.c:2145 #, c-format msgid "Device %s contains broken LUKS metadata. Aborting operation." msgstr "Das Gerät %s enthält fehlerhafte LUKS-Metadaten. Vorgang wird abgebrochen." -#: src/utils_reencrypt.c:2158 src/utils_reencrypt.c:2180 +#: src/utils_reencrypt.c:2161 src/utils_reencrypt.c:2183 #, c-format msgid "Device %s is already LUKS device. Aborting operation." msgstr "Gerät %s ist bereits ein LUKS-Gerät. Vorgang wird abgebrochen." -#: src/utils_reencrypt.c:2186 +#: src/utils_reencrypt.c:2189 #, c-format msgid "Device %s is already in LUKS reencryption. Aborting operation." msgstr "Gerät %s befindet sich bereits in der LUKS-Wiederverschlüsselung. Vorgang wird abgebrochen." -#: src/utils_reencrypt.c:2269 +#: src/utils_reencrypt.c:2272 msgid "LUKS2 decryption requires --header option." msgstr "LUKS2-Entschlüsselung erfordert die Option »--header«." -#: src/utils_reencrypt.c:2317 +#: src/utils_reencrypt.c:2320 msgid "Command requires device as argument." msgstr "Dieser Befehl benötigt den Gerätenamen als Argument." -#: src/utils_reencrypt.c:2330 +#: src/utils_reencrypt.c:2333 #, c-format msgid "Conflicting versions. Device %s is LUKS1." msgstr "Widersprüchliche Versionen. Gerät %s ist LUKS1." -#: src/utils_reencrypt.c:2336 +#: src/utils_reencrypt.c:2339 #, c-format msgid "Conflicting versions. Device %s is in LUKS1 reencryption." msgstr "Widersprüchliche Versionen. Gerät %s befindet sich in der LUKS1-Wiederverschlüsselung." -#: src/utils_reencrypt.c:2342 +#: src/utils_reencrypt.c:2345 #, c-format msgid "Conflicting versions. Device %s is LUKS2." msgstr "Widersprüchliche Versionen. Gerät %s ist LUKS2." -#: src/utils_reencrypt.c:2348 +#: src/utils_reencrypt.c:2351 #, c-format msgid "Conflicting versions. Device %s is in LUKS2 reencryption." msgstr "Widersprüchliche Versionen. Gerät %s befindet sich in LUKS2-Wiederverschlüsselung." -#: src/utils_reencrypt.c:2354 +#: src/utils_reencrypt.c:2357 msgid "LUKS2 reencryption already initialized. Aborting operation." msgstr "Die LUKS2-Wiederverschlüsselung wurde bereits begonnen. Die Operation wird abgebrochen." -#: src/utils_reencrypt.c:2361 +#: src/utils_reencrypt.c:2364 msgid "Device reencryption not in progress." msgstr "Derzeit läuft keine Wiederverschlüsselung." @@ -4973,9 +4977,6 @@ msgstr "Fehler bei der Authentifizierung mit öffentlichem Schlüssel: " #~ msgid "Options --journal-size, --interleave-sectors, --sector-size, --tag-size and --no-wipe can be used only for format action." #~ msgstr "Die Optionen --journal-size, --interleave-sectors, --sector-size, --tag-size und --no-wipe können nur bei der Aktion »format« verwendet werden." -#~ msgid "Invalid journal size specification." -#~ msgstr "Ungültige Angabe der Journalgröße." - #~ msgid "Reencryption block size" #~ msgstr "Wiederverschlüsselungs-Blockgröße" From 83b60d611ff256a3eef25281da29171811a8ec2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Marchal?= Date: Sun, 19 Jul 2026 19:51:04 +0200 Subject: [PATCH 183/244] po: update fr.po (from translationproject.org) --- po/fr.po | 631 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 316 insertions(+), 315 deletions(-) diff --git a/po/fr.po b/po/fr.po index 5acce7be2..eb433ad46 100644 --- a/po/fr.po +++ b/po/fr.po @@ -7,10 +7,10 @@ # Frédéric Marchal , 2026. msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.7-rc1\n" +"Project-Id-Version: cryptsetup 2.8.7-rc2\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2026-06-29 21:30+0200\n" -"PO-Revision-Date: 2026-06-30 16:12+0200\n" +"POT-Creation-Date: 2026-07-09 10:46+0200\n" +"PO-Revision-Date: 2026-07-13 17:34+0200\n" "Last-Translator: Frédéric Marchal \n" "Language-Team: French \n" "Language: fr\n" @@ -201,10 +201,10 @@ msgid "Failed to rollback LUKS2 metadata in memory." msgstr "Échec lors du retour en arrière des métadonnées LUKS2 en mémoire." #: lib/setup.c:896 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 -#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1779 -#: src/cryptsetup.c:1963 src/cryptsetup.c:2018 src/cryptsetup.c:2216 -#: src/cryptsetup.c:2361 src/cryptsetup.c:2639 src/cryptsetup.c:2952 -#: src/cryptsetup.c:3020 src/utils_reencrypt.c:2281 +#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 +#: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 +#: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2954 +#: src/cryptsetup.c:3022 src/utils_reencrypt.c:2284 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." @@ -248,7 +248,7 @@ msgid "Detached metadata device is not supported for this crypt type." msgstr "Un périphérique avec des métadonnées détachées n'est pas supporté avec ce type de chiffrement." #: lib/setup.c:1642 lib/setup.c:1890 lib/luks2/luks2_reencrypt.c:3035 -#: src/cryptsetup.c:1491 src/cryptsetup.c:3759 +#: src/cryptsetup.c:1492 src/cryptsetup.c:3761 msgid "Unsupported encryption sector size." msgstr "Taille de secteur de chiffrement non supportée." @@ -570,14 +570,14 @@ msgstr "Impossible de délier la clé du porte-clé utilisateur spécifié." msgid "Failed to link volume key in user defined keyring." msgstr "Impossible de lier la clé de volume dans le porte-clé utilisateur." -#: lib/setup.c:4556 src/cryptsetup.c:2720 +#: lib/setup.c:4556 src/cryptsetup.c:2722 #, c-format msgid "Volume %s is not suspended." msgstr "Le volume %s n'est pas suspendu." -#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1855 -#: src/cryptsetup.c:2259 src/cryptsetup.c:2277 src/utils_reencrypt.c:305 -#: src/utils_reencrypt.c:1966 +#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1856 +#: src/cryptsetup.c:2260 src/cryptsetup.c:2278 src/utils_reencrypt.c:306 +#: src/utils_reencrypt.c:1969 msgid "Volume key does not match the volume." msgstr "Ceci n'est pas la clé du volume." @@ -590,8 +590,8 @@ msgstr "Nouvel emplacement de clé impossible à échanger." msgid "Key slot %d is invalid." msgstr "L'emplacement de clé %d n'est pas valide." -#: lib/setup.c:4925 src/cryptsetup.c:1976 src/cryptsetup.c:2436 -#: src/cryptsetup.c:3120 src/cryptsetup.c:3180 +#: lib/setup.c:4925 src/cryptsetup.c:1977 src/cryptsetup.c:2437 +#: src/cryptsetup.c:3122 src/cryptsetup.c:3182 #, c-format msgid "Keyslot %d is not active." msgstr "L'emplacement de clé %d n'est pas actif." @@ -788,7 +788,7 @@ msgid "Cannot read requested amount of data." msgstr "Impossible de lire la quantité de données demandée." #: lib/utils_device.c:207 lib/utils_storage_wrappers.c:99 -#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2254 +#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2257 #, c-format msgid "Device %s does not exist or access denied." msgstr "Le périphérique %s n'existe pas ou l'accès y est interdit." @@ -1132,7 +1132,7 @@ msgstr "Le mode de chiffrement LUKS %s n'est pas valide." msgid "LUKS hash %s is invalid." msgstr "La valeur hachée LUKS %s n'est pas valide." -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1366 +#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 msgid "No known problems detected for LUKS header." msgstr "Aucun problème connu détecté pour l'en-tête LUKS." @@ -1152,7 +1152,7 @@ msgstr "L'offset des données d'un en-tête LUKS doit être soit 0 ou soit plus #: lib/luks1/keymanage.c:761 lib/luks1/keymanage.c:832 #: lib/luks2/luks2_json_format.c:231 lib/luks2/luks2_json_metadata.c:1261 -#: src/utils_reencrypt.c:701 +#: src/utils_reencrypt.c:703 msgid "Wrong LUKS UUID format provided." msgstr "Mauvais format fourni pour le UUID LUKS." @@ -1677,7 +1677,7 @@ msgstr "Impossible de définir le segment dm-crypt." msgid "Failed to set dm-linear segment." msgstr "Impossible de définir le segment dm-linear." -#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:578 +#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:580 msgid "No known cipher specification pattern detected in LUKS2 header." msgstr "Aucun motif connu d'algorithme de chiffrement n'a été détecté dans l'en-tête LUKS2." @@ -2141,8 +2141,8 @@ msgstr "Les paramètres de chiffrement des emplacement de clés peuvent uniqueme msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encryption." msgstr "Les paramètres de chiffrement des emplacement de clés ne sont pas compatibles avec le chiffrement des emplacements de LUKS2." -#: src/cryptsetup.c:150 src/cryptsetup.c:1179 src/cryptsetup.c:1544 -#: src/utils_reencrypt.c:1887 src/utils_reencrypt_luks1.c:502 +#: src/cryptsetup.c:150 src/cryptsetup.c:1180 src/cryptsetup.c:1545 +#: src/utils_reencrypt.c:1890 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." msgstr "Aucun motif connu d'algorithme de chiffrement n'a été détecté." @@ -2169,8 +2169,8 @@ msgstr "ATTENTION: Le paramètre --hash est ignoré en mode non chiffré quand l msgid "WARNING: The --keyfile-size option is being ignored, the read size is the same as the encryption key size.\n" msgstr "ATTENTION: L'option --keyfile-size est ignorée. La taille de lecture est la même que la taille de la clé de chiffrement.\n" -#: src/cryptsetup.c:226 src/cryptsetup.c:1374 src/cryptsetup.c:1597 -#: src/integritysetup.c:188 src/utils_reencrypt.c:2138 +#: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 +#: src/integritysetup.c:189 src/utils_reencrypt.c:2141 #, c-format msgid "Blkid scan failed for %s." msgstr "L'analyse de blkid a échouée pour %s." @@ -2180,11 +2180,11 @@ msgstr "L'analyse de blkid a échouée pour %s." msgid "Detected device signature(s) on %s. Proceeding further may damage existing data." msgstr "Signature(s) de périphérique détectée(s) sur %s. Continuer risque d'endommager les données existantes." -#: src/cryptsetup.c:238 src/cryptsetup.c:1260 src/cryptsetup.c:1308 -#: src/cryptsetup.c:1381 src/cryptsetup.c:1521 src/cryptsetup.c:1609 -#: src/cryptsetup.c:2494 src/cryptsetup.c:2923 src/integritysetup.c:178 -#: src/utils_reencrypt.c:111 src/utils_reencrypt.c:457 -#: src/utils_reencrypt.c:925 +#: src/cryptsetup.c:238 src/cryptsetup.c:1261 src/cryptsetup.c:1309 +#: src/cryptsetup.c:1382 src/cryptsetup.c:1522 src/cryptsetup.c:1610 +#: src/cryptsetup.c:2495 src/cryptsetup.c:2925 src/integritysetup.c:179 +#: src/utils_reencrypt.c:111 src/utils_reencrypt.c:459 +#: src/utils_reencrypt.c:927 msgid "Operation aborted.\n" msgstr "Opération interrompue.\n" @@ -2192,36 +2192,36 @@ msgstr "Opération interrompue.\n" msgid "Option --key-file is required." msgstr "L'option --key-file est requise." -#: src/cryptsetup.c:377 +#: src/cryptsetup.c:378 msgid "Enter VeraCrypt PIM: " msgstr "Entrez le PIN VeraCrypt : " -#: src/cryptsetup.c:386 +#: src/cryptsetup.c:387 msgid "Invalid PIM value: parse error." msgstr "Valeur PIN invalide : erreur d'analyse" -#: src/cryptsetup.c:389 +#: src/cryptsetup.c:390 msgid "Invalid PIM value: 0." msgstr "Valeur PIN invalide: 0" -#: src/cryptsetup.c:392 +#: src/cryptsetup.c:393 msgid "Invalid PIM value: outside of range." msgstr "Valeur PIN invalide: hors des limites." -#: src/cryptsetup.c:415 +#: src/cryptsetup.c:416 msgid "No device header detected with this passphrase." msgstr "Aucun en-tête détecté avec cette phrase secrète sur le périphérique." -#: src/cryptsetup.c:492 src/cryptsetup.c:677 +#: src/cryptsetup.c:493 src/cryptsetup.c:678 #, c-format msgid "Device %s is not a valid BITLK device." msgstr "Le périphérique %s n'est pas un périphérique BITLK valide." -#: src/cryptsetup.c:500 +#: src/cryptsetup.c:501 msgid "Cannot determine volume key size for BITLK, please use --key-size option." msgstr "Impossible de déterminer la taille de la clé de volume pour BITLK, veuillez utiliser l'option --key-size." -#: src/cryptsetup.c:546 +#: src/cryptsetup.c:547 msgid "" "Header dump with volume key is sensitive information\n" "which allows access to encrypted partition without passphrase.\n" @@ -2231,7 +2231,7 @@ msgstr "" "sensible qui permet d'accéder à la partition chiffrée sans mot de passe.\n" "Ce contenu devrait toujours être stocké, chiffré, en lieu sûr." -#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2519 +#: src/cryptsetup.c:614 src/cryptsetup.c:700 src/cryptsetup.c:2520 msgid "" "The header dump with volume key is sensitive information\n" "that allows access to encrypted partition without a passphrase.\n" @@ -2241,88 +2241,88 @@ msgstr "" "sensible qui permet d'accéder à la partition chiffrée sans mot de passe.\n" "Ce contenu devrait être stocké, chiffré, en lieu sûr." -#: src/cryptsetup.c:754 src/cryptsetup.c:786 +#: src/cryptsetup.c:755 src/cryptsetup.c:787 #, c-format msgid "Device %s is not a valid FVAULT2 device." msgstr "Le périphérique %s n'est pas un périphérique FVAULT2 valide." -#: src/cryptsetup.c:794 +#: src/cryptsetup.c:795 msgid "Cannot determine volume key size for FVAULT2, please use --key-size option." msgstr "Impossible de déterminer la taille de la clé de volume pour FVAULT2, veuillez utiliser l'option --key-size." -#: src/cryptsetup.c:848 src/veritysetup.c:317 src/integritysetup.c:416 +#: src/cryptsetup.c:849 src/veritysetup.c:317 src/integritysetup.c:422 #, c-format msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "Le périphérique %s est toujours actif et prévu pour une suppression différée.\n" -#: src/cryptsetup.c:881 src/cryptsetup.c:1807 src/cryptsetup.c:2081 -#: src/cryptsetup.c:2228 src/cryptsetup.c:2647 src/cryptsetup.c:2728 -#: src/cryptsetup.c:3261 +#: src/cryptsetup.c:882 src/cryptsetup.c:1808 src/cryptsetup.c:2082 +#: src/cryptsetup.c:2229 src/cryptsetup.c:2648 src/cryptsetup.c:2730 +#: src/cryptsetup.c:3263 #, c-format msgid "Failed to set external tokens path %s." msgstr "Échec en essayant de définir le chemin %s pour les jetons externes." -#: src/cryptsetup.c:890 +#: src/cryptsetup.c:891 msgid "Resize of active device requires volume key in keyring but --disable-keyring option is set." msgstr "Le redimensionnement d'un périphérique actif requiert que la clé du volume soit dans le porte-clé mais l'option --disable-keyring est définie." -#: src/cryptsetup.c:1057 +#: src/cryptsetup.c:1058 msgid "Benchmark interrupted." msgstr "Test de performance interrompu." -#: src/cryptsetup.c:1078 +#: src/cryptsetup.c:1079 #, c-format msgid "PBKDF2-%-9s N/A\n" msgstr "PBKDF2-%-9s N/A\n" -#: src/cryptsetup.c:1080 +#: src/cryptsetup.c:1081 #, c-format msgid "PBKDF2-%-9s %7u iterations per second for %zu-bit key\n" msgstr "PBKDF2-%-9s %7u itérations par seconde pour une clé de %zu bits\n" -#: src/cryptsetup.c:1094 +#: src/cryptsetup.c:1095 #, c-format msgid "%-10s N/A\n" msgstr "%-10s N/A\n" -#: src/cryptsetup.c:1096 +#: src/cryptsetup.c:1097 #, c-format msgid "%-10s %4u iterations, %5u memory, %1u parallel threads (CPUs) for %zu-bit key (requested %u ms time)\n" msgstr "%-10s %4u itérations, %5u mémoire, %1u threads parallèles (CPUs) pour une clé de %zu bits (temps de %u ms demandé)\n" -#: src/cryptsetup.c:1120 +#: src/cryptsetup.c:1121 msgid "Result of benchmark is not reliable." msgstr "Le résultat de l'évaluation de performance n'est pas fiable." -#: src/cryptsetup.c:1171 +#: src/cryptsetup.c:1172 msgid "# Tests are approximate using memory only (no storage IO).\n" msgstr "# Tests approximatifs en utilisant uniquement la mémoire (pas de stockage E/S).\n" #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1196 +#: src/cryptsetup.c:1197 #, c-format msgid "#%*s Algorithm | Key | Encryption | Decryption\n" msgstr "#%*s Algorithme | Clé | Chiffrement | Déchiffrement\n" -#: src/cryptsetup.c:1204 +#: src/cryptsetup.c:1205 #, c-format msgid "Cipher %s (with %i bits key) is not available." msgstr "Le chiffrement %s (avec une clé de %i bits) n'est pas disponible." #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1225 +#: src/cryptsetup.c:1226 msgid "# Algorithm | Key | Encryption | Decryption\n" msgstr "# Algorithme | Clé | Chiffrement | Déchiffrement\n" -#: src/cryptsetup.c:1238 +#: src/cryptsetup.c:1239 msgid "N/A" msgstr "N/D" -#: src/cryptsetup.c:1241 +#: src/cryptsetup.c:1242 msgid "# Cipher speed test is not available.\n" msgstr "# Le test de la vitesse de chiffrement n'est pas disponible.\n" -#: src/cryptsetup.c:1257 +#: src/cryptsetup.c:1258 msgid "" "Unprotected LUKS2 reencryption metadata detected. Please verify the reencryption operation is desirable (see luksDump output)\n" "and continue (upgrade metadata) only if you acknowledge the operation as genuine." @@ -2331,27 +2331,27 @@ msgstr "" "désirable (consultez la sortie de luksDump) et continuez (mise à niveau des métadonnées) uniquement si vous constatez que\n" "l'opération est légitime." -#: src/cryptsetup.c:1263 +#: src/cryptsetup.c:1264 msgid "Enter passphrase to protect and upgrade reencryption metadata: " msgstr "Entrez la phrase secrète pour protéger et mettre à niveau les métadonnées de rechiffrement : " -#: src/cryptsetup.c:1307 +#: src/cryptsetup.c:1308 msgid "Really proceed with LUKS2 reencryption recovery?" msgstr "Réellement procéder à la récupération du rechiffrement LUKS2 ?" -#: src/cryptsetup.c:1316 +#: src/cryptsetup.c:1317 msgid "Enter passphrase to verify reencryption metadata digest: " msgstr "Entrez la phrase secrète pour vérifier le résumé des métadonnées du rechiffrement : " -#: src/cryptsetup.c:1318 +#: src/cryptsetup.c:1319 msgid "Enter passphrase for reencryption recovery: " msgstr "Entrez la phrase secrète pour la récupération du rechiffrement : " -#: src/cryptsetup.c:1380 +#: src/cryptsetup.c:1381 msgid "Really try to repair LUKS device header?" msgstr "Réellement essayer de réparer l'en-tête du périphérique LUKS ?" -#: src/cryptsetup.c:1408 src/integritysetup.c:76 src/integritysetup.c:244 +#: src/cryptsetup.c:1409 src/integritysetup.c:76 src/integritysetup.c:246 msgid "" "\n" "Wipe interrupted." @@ -2359,7 +2359,7 @@ msgstr "" "\n" "Effacement interrompu." -#: src/cryptsetup.c:1413 src/integritysetup.c:81 src/integritysetup.c:289 +#: src/cryptsetup.c:1414 src/integritysetup.c:81 src/integritysetup.c:291 msgid "" "Wiping device to initialize integrity checksum.\n" "You can interrupt this by pressing CTRL+c (rest of not wiped device will contain invalid checksum).\n" @@ -2367,167 +2367,167 @@ msgstr "" "Effacement du périphérique pour initialiser les sommes de contrôle d'intégrité.\n" "Vous pouvez interrompre ceci en appuyant sur CTRL+c (le reste du périphérique effacé contiendra toujours des sommes de contrôle invalides).\n" -#: src/cryptsetup.c:1435 src/integritysetup.c:103 +#: src/cryptsetup.c:1436 src/integritysetup.c:103 #, c-format msgid "Cannot deactivate temporary device %s." msgstr "Impossible de désactiver le périphérique temporaire %s." -#: src/cryptsetup.c:1483 +#: src/cryptsetup.c:1484 msgid "OPAL hw-only encryption does not support --cipher and --key-size, options ignored." msgstr "Un chiffrement utilisant uniquement OPAL hw ne supporte pas --cipher et --key-size, les options sont ignorées." -#: src/cryptsetup.c:1496 +#: src/cryptsetup.c:1497 msgid "Integrity option can be used only for LUKS2 format." msgstr "L'option d'intégrité peut uniquement être utilisée avec le format LUKS2." -#: src/cryptsetup.c:1501 src/cryptsetup.c:1581 +#: src/cryptsetup.c:1502 src/cryptsetup.c:1582 msgid "Unsupported LUKS2 metadata size options." msgstr "Options de taille des métadonnées LUKS2 non supportées." -#: src/cryptsetup.c:1506 +#: src/cryptsetup.c:1507 msgid "OPAL is supported only for LUKS2 format." msgstr "OPAL est uniquement supporté avec le format LUKS2." -#: src/cryptsetup.c:1511 +#: src/cryptsetup.c:1512 msgid "Inline hw tags are supported only for LUKS2 format." msgstr "Les étiquettes hw en ligne sont uniquement supportées avec le format LUKS2." -#: src/cryptsetup.c:1520 +#: src/cryptsetup.c:1521 msgid "Header file does not exist, do you want to create it?" msgstr "Le fichier d'en-tête n'existe pas, voulez-vous le créer ?" -#: src/cryptsetup.c:1528 +#: src/cryptsetup.c:1529 #, c-format msgid "Cannot create header file %s." msgstr "Impossible de créer le fichier d'en-tête %s." -#: src/cryptsetup.c:1554 src/integritysetup.c:126 src/integritysetup.c:141 -#: src/integritysetup.c:150 src/integritysetup.c:328 src/integritysetup.c:336 -#: src/integritysetup.c:346 +#: src/cryptsetup.c:1555 src/integritysetup.c:127 src/integritysetup.c:142 +#: src/integritysetup.c:151 src/integritysetup.c:330 src/integritysetup.c:338 +#: src/integritysetup.c:348 msgid "No known integrity specification pattern detected." msgstr "Aucun motif connu de spécification d'intégrité n'a été détecté." -#: src/cryptsetup.c:1556 +#: src/cryptsetup.c:1557 msgid "Cannot use specified integrity key size." msgstr "Impossible d'utiliser la taille de clé d'intégrité spécifiée." -#: src/cryptsetup.c:1574 +#: src/cryptsetup.c:1575 #, c-format msgid "Cannot use %s as on-disk header." msgstr "Ne peut utiliser %s comme en-tête sur disque." -#: src/cryptsetup.c:1603 src/integritysetup.c:172 +#: src/cryptsetup.c:1604 src/integritysetup.c:173 #, c-format msgid "This will overwrite data on %s irrevocably." msgstr "Cette action écrasera définitivement les données sur %s." -#: src/cryptsetup.c:1640 +#: src/cryptsetup.c:1641 msgid "OPAL Admin password cannot be empty." msgstr "Le mot de passe Admin de OPAL ne peut pas être vide." -#: src/cryptsetup.c:1654 src/cryptsetup.c:2098 src/cryptsetup.c:2241 -#: src/cryptsetup.c:2376 src/cryptsetup.c:2442 src/utils_reencrypt_luks1.c:428 +#: src/cryptsetup.c:1655 src/cryptsetup.c:2099 src/cryptsetup.c:2242 +#: src/cryptsetup.c:2377 src/cryptsetup.c:2443 src/utils_reencrypt_luks1.c:428 msgid "Failed to set pbkdf parameters." msgstr "Impossible de définir les paramètres pbkdf." -#: src/cryptsetup.c:1785 +#: src/cryptsetup.c:1786 msgid "Reduced data offset is allowed only for detached LUKS header." msgstr "Décalage réduit de données est uniquement permis dans un en-tête LUKS détaché." -#: src/cryptsetup.c:1792 +#: src/cryptsetup.c:1793 #, c-format msgid "LUKS file container %s is too small for activation, there is no remaining space for data." msgstr "Le container %s du fichier LUKS est trop petit pour l'activation, il ne reste pas d'espace pour les données." -#: src/cryptsetup.c:1834 src/cryptsetup.c:2247 src/utils_reencrypt.c:277 -#: src/utils_reencrypt.c:369 src/utils_reencrypt.c:1907 +#: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:278 +#: src/utils_reencrypt.c:371 src/utils_reencrypt.c:1910 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "Impossible de déterminer la taille de la clé de volume pour LUKS sans emplacement de clé, veuillez utiliser l'option --key-size." -#: src/cryptsetup.c:1853 src/utils_reencrypt.c:303 +#: src/cryptsetup.c:1854 src/utils_reencrypt.c:304 msgid "Device requires two volume keys." msgstr "Le périphérique requiert deux clés de volume." -#: src/cryptsetup.c:1888 +#: src/cryptsetup.c:1889 msgid "Some specified activation parameters were ignored with OPAL hw-only encryption." msgstr "Certains paramètres d'activation spécifiés ont été ignorés avec le chiffrement utilisant uniquement OPAL hw." -#: src/cryptsetup.c:1893 +#: src/cryptsetup.c:1894 msgid "Device activated but cannot make flags persistent." msgstr "Le périphérique a été activé mais les fanions ne peuvent pas être rendus permanents." -#: src/cryptsetup.c:1973 src/cryptsetup.c:2041 +#: src/cryptsetup.c:1974 src/cryptsetup.c:2042 #, c-format msgid "Keyslot %d is selected for deletion." msgstr "Emplacement de clé %d sélectionné pour suppression." -#: src/cryptsetup.c:1985 src/cryptsetup.c:2045 +#: src/cryptsetup.c:1986 src/cryptsetup.c:2046 msgid "This is the last keyslot. Device will become unusable after purging this key." msgstr "Ceci est le dernier emplacement de clé. Le périphérique sera inutilisable après la suppression de cette clé." -#: src/cryptsetup.c:1986 +#: src/cryptsetup.c:1987 msgid "Enter any remaining passphrase: " msgstr "Entrez toute phrase secrète restante : " -#: src/cryptsetup.c:1987 src/cryptsetup.c:2047 +#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 msgid "Operation aborted, the keyslot was NOT wiped.\n" msgstr "Opération interrompue, l'emplacement de clé n'a PAS été effacé.\n" -#: src/cryptsetup.c:2023 +#: src/cryptsetup.c:2024 msgid "Enter passphrase to be deleted: " msgstr "Entrez la phrase secrète à effacer : " -#: src/cryptsetup.c:2073 src/cryptsetup.c:2425 src/cryptsetup.c:3085 -#: src/cryptsetup.c:3252 +#: src/cryptsetup.c:2074 src/cryptsetup.c:2426 src/cryptsetup.c:3087 +#: src/cryptsetup.c:3254 #, c-format msgid "Device %s is not a valid LUKS2 device." msgstr "%s n'est pas un périphérique LUKS2 valide." -#: src/cryptsetup.c:2112 src/cryptsetup.c:2311 +#: src/cryptsetup.c:2113 src/cryptsetup.c:2312 msgid "Enter new passphrase for key slot: " msgstr "Entrez une nouvelle phrase secrète pour l'emplacement de clé : " -#: src/cryptsetup.c:2146 src/utils_luks.c:342 +#: src/cryptsetup.c:2147 src/utils_luks.c:342 #, c-format msgid "Enter token PIN: " msgstr "Entrez le code PIN du jeton : " -#: src/cryptsetup.c:2148 src/utils_luks.c:344 +#: src/cryptsetup.c:2149 src/utils_luks.c:344 #, c-format msgid "Enter token %d PIN: " msgstr "Entrez le code PIN du jeton %d : " -#: src/cryptsetup.c:2207 +#: src/cryptsetup.c:2208 msgid "WARNING: The --key-slot parameter is used for new keyslot number.\n" msgstr "ATTENTION: Le paramètre --key-slot est utilisé pour le nouveau numéro de l'emplacement de clé.\n" -#: src/cryptsetup.c:2284 src/utils_reencrypt_luks1.c:1094 +#: src/cryptsetup.c:2285 src/utils_reencrypt_luks1.c:1094 #, c-format msgid "Enter any existing passphrase: " msgstr "Entrez une phrase secrète existante : " -#: src/cryptsetup.c:2380 +#: src/cryptsetup.c:2381 msgid "Enter passphrase to be changed: " msgstr "Entrez la phrase secrète à changer : " -#: src/cryptsetup.c:2396 src/utils_reencrypt_luks1.c:1080 +#: src/cryptsetup.c:2397 src/utils_reencrypt_luks1.c:1080 msgid "Enter new passphrase: " msgstr "Entrez la nouvelle phrase secrète : " -#: src/cryptsetup.c:2446 +#: src/cryptsetup.c:2447 msgid "Enter passphrase for keyslot to be converted: " msgstr "Entrez la phrase secrète pour l'emplacement de clé à convertir: " -#: src/cryptsetup.c:2470 +#: src/cryptsetup.c:2471 msgid "Only one device argument for isLuks operation is supported." msgstr "L'opération isLuks supporte seulement un périphérique en argument." -#: src/cryptsetup.c:2575 +#: src/cryptsetup.c:2576 #, c-format msgid "Keyslot %d does not contain unbound key." msgstr "L'emplacement de clé %d ne contient pas de clé non liée." -#: src/cryptsetup.c:2580 +#: src/cryptsetup.c:2581 msgid "" "The header dump with unbound key is sensitive information.\n" "This dump should be stored encrypted in a safe place." @@ -2535,52 +2535,52 @@ msgstr "" "Le contenu de l'en-tête avec une clé non liée est une information sensible.\n" "Ce contenu devrait être stocké, chiffré, en lieu sûr." -#: src/cryptsetup.c:2675 src/cryptsetup.c:2711 +#: src/cryptsetup.c:2676 src/cryptsetup.c:2713 #, c-format msgid "%s is not active %s device name." msgstr "%s n'est pas un nom de périphérique %s actif." -#: src/cryptsetup.c:2706 +#: src/cryptsetup.c:2708 #, c-format msgid "%s is not active LUKS device name or header is missing." msgstr "%s n'est pas un nom de périphérique LUKS actif ou l'en-tête est manquant." -#: src/cryptsetup.c:2783 src/cryptsetup.c:2802 +#: src/cryptsetup.c:2785 src/cryptsetup.c:2804 msgid "Option --header-backup-file is required." msgstr "L'option --header-backup-file est requise." -#: src/cryptsetup.c:2833 +#: src/cryptsetup.c:2835 #, c-format msgid "%s is not cryptsetup managed device." msgstr "%s n'est pas un périphérique géré par cryptsetup." -#: src/cryptsetup.c:2844 +#: src/cryptsetup.c:2846 #, c-format msgid "Refresh is not supported for device type %s" msgstr "Le rafraîchissement n'est pas supporté pour un périphérique de type %s" -#: src/cryptsetup.c:2894 +#: src/cryptsetup.c:2896 #, c-format msgid "Unrecognized metadata device type %s." msgstr "Type de métadonnée du périphérique %s non reconnu." -#: src/cryptsetup.c:2896 +#: src/cryptsetup.c:2898 msgid "Command requires device and mapped name as arguments." msgstr "La commande exige un périphérique et un nom de correspondance comme arguments." -#: src/cryptsetup.c:2914 +#: src/cryptsetup.c:2916 msgid "Enter OPAL PSID: " msgstr "Entrez le PSID OPAL : " -#: src/cryptsetup.c:2914 +#: src/cryptsetup.c:2916 msgid "Enter OPAL Admin password: " msgstr "Entrez le mot de passe Admin de OPAL : " -#: src/cryptsetup.c:2922 +#: src/cryptsetup.c:2924 msgid "WARNING: WHOLE disk will be factory reset and all data will be lost! Continue?" msgstr "ATTENTION : Le disque ENTIER sera réinitialisé d'usine et toutes les données seront perdues ! Continuer ?" -#: src/cryptsetup.c:2965 +#: src/cryptsetup.c:2967 #, c-format msgid "" "This operation will erase all keyslots on device %s.\n" @@ -2589,363 +2589,363 @@ msgstr "" "Cette opération va supprimer tous les emplacements de clés du périphérique %s.\n" "Le périphérique sera inutilisable après cette opération." -#: src/cryptsetup.c:2972 +#: src/cryptsetup.c:2974 msgid "Operation aborted, keyslots were NOT wiped.\n" msgstr "Opération interrompue, les emplacements de clés n'ont PAS été effacés.\n" -#: src/cryptsetup.c:3011 +#: src/cryptsetup.c:3013 msgid "Invalid LUKS type, only luks1 and luks2 are supported." msgstr "Type LUKS invalide, seuls luks1 et luks2 sont supportés." -#: src/cryptsetup.c:3027 +#: src/cryptsetup.c:3029 #, c-format msgid "Device is already %s type." msgstr "Le périphérique est déjà du type %s." -#: src/cryptsetup.c:3034 +#: src/cryptsetup.c:3036 #, c-format msgid "This operation will convert %s to %s format.\n" msgstr "Cette opération va convertir %s au format %s.\n" -#: src/cryptsetup.c:3037 +#: src/cryptsetup.c:3039 msgid "Operation aborted, device was NOT converted.\n" msgstr "Opération interrompue, le périphérique n'a PAS été converti.\n" -#: src/cryptsetup.c:3077 +#: src/cryptsetup.c:3079 msgid "Option --priority, --label or --subsystem is missing." msgstr "L'option --priority, --label ou --subsystem est manquante." -#: src/cryptsetup.c:3111 src/cryptsetup.c:3151 src/cryptsetup.c:3171 +#: src/cryptsetup.c:3113 src/cryptsetup.c:3153 src/cryptsetup.c:3173 #, c-format msgid "Token %d is invalid." msgstr "Le jeton %d est invalide." -#: src/cryptsetup.c:3114 src/cryptsetup.c:3174 +#: src/cryptsetup.c:3116 src/cryptsetup.c:3176 #, c-format msgid "Token %d in use." msgstr "Le jeton %d est utilisé." -#: src/cryptsetup.c:3126 +#: src/cryptsetup.c:3128 #, c-format msgid "Failed to add luks2-keyring token %d." msgstr "Échec lors de l'ajout du jeton %d au porte-clé luks2." -#: src/cryptsetup.c:3137 src/cryptsetup.c:3200 +#: src/cryptsetup.c:3139 src/cryptsetup.c:3202 #, c-format msgid "Failed to assign token %d to keyslot %d." msgstr "Échec lors de l'affectation du jeton %d à l'emplacement de clé %d." -#: src/cryptsetup.c:3154 +#: src/cryptsetup.c:3156 #, c-format msgid "Token %d is not in use." msgstr "Le jeton %d n'est pas utilisé." -#: src/cryptsetup.c:3191 +#: src/cryptsetup.c:3193 msgid "Failed to import token from file." msgstr "Impossible d'importer le jeton depuis le fichier." -#: src/cryptsetup.c:3216 +#: src/cryptsetup.c:3218 #, c-format msgid "Failed to get token %d for export." msgstr "Impossible d'obtenir le jeton %d pour l'export." -#: src/cryptsetup.c:3229 +#: src/cryptsetup.c:3231 #, c-format msgid "Token %d is not assigned to keyslot %d." msgstr "Le jeton %d n'est pas assigné à l'emplacement de clé %d." -#: src/cryptsetup.c:3231 src/cryptsetup.c:3238 +#: src/cryptsetup.c:3233 src/cryptsetup.c:3240 #, c-format msgid "Failed to unassign token %d from keyslot %d." msgstr "Impossible de dissocier le jeton %d de l'emplacement de clé %d." -#: src/cryptsetup.c:3297 +#: src/cryptsetup.c:3299 msgid "Option --tcrypt-hidden, --tcrypt-system or --tcrypt-backup is supported only for TCRYPT device." msgstr "Les options --tcrypt-hidden, --tcrypt-system ou --tcrypt-backup sont supportées seulement pour un périphérique TCRYPT." -#: src/cryptsetup.c:3300 +#: src/cryptsetup.c:3302 msgid "Option --veracrypt or --disable-veracrypt is supported only for TCRYPT device type." msgstr "L'option --veracrypt ou --disable-veracrypt est uniquement supportée pour un périphérique de type TCRYPT." -#: src/cryptsetup.c:3303 +#: src/cryptsetup.c:3305 msgid "Option --veracrypt-pim is supported only for VeraCrypt compatible devices." msgstr "L'option --veracrypt-pim est uniquement supportée pour un périphérique compatible avec VeraCrypt." -#: src/cryptsetup.c:3307 +#: src/cryptsetup.c:3309 msgid "Option --veracrypt-query-pim is supported only for VeraCrypt compatible devices." msgstr "L'option --veracrypt-query-pim est uniquement supportée pour un périphérique compatible avec VeraCrypt." -#: src/cryptsetup.c:3309 +#: src/cryptsetup.c:3311 msgid "The options --veracrypt-pim and --veracrypt-query-pim are mutually exclusive." msgstr "Les options --veracrypt-pim et --veracrypt-query-pim sont mutuellement exclusives." -#: src/cryptsetup.c:3318 +#: src/cryptsetup.c:3320 msgid "Option --persistent is not allowed with --test-passphrase." msgstr "L'option --persistent n'est pas permise avec --test-passphrase." -#: src/cryptsetup.c:3321 +#: src/cryptsetup.c:3323 msgid "Options --refresh and --test-passphrase are mutually exclusive." msgstr "Les options --refresh et --test-passphrase sont mutuellement exclusives." -#: src/cryptsetup.c:3324 +#: src/cryptsetup.c:3326 msgid "Option --shared is allowed only for open of plain device." msgstr "L'option --shared est permise uniquement pour ouvrir un périphérique ordinaire." -#: src/cryptsetup.c:3327 +#: src/cryptsetup.c:3329 msgid "Option --skip is supported only for open of plain and loopaes devices." msgstr "L'option --skip est supportée uniquement pour ouvrir des périphériques ordinaires et loopaes." -#: src/cryptsetup.c:3330 +#: src/cryptsetup.c:3332 msgid "Option --offset with open action is only supported for plain and loopaes devices." msgstr "L'option --offset avec l'action d'ouverture est supportée uniquement pour des périphériques ordinaires et loopaes." -#: src/cryptsetup.c:3333 +#: src/cryptsetup.c:3335 msgid "Option --tcrypt-hidden cannot be combined with --allow-discards." msgstr "L'option --tcrypt-hidden ne peut pas être combinée avec --allow-discards." -#: src/cryptsetup.c:3337 +#: src/cryptsetup.c:3339 msgid "Sector size option with open action is supported only for plain devices." msgstr "L'option de taille de secteur avec l'action d'ouverture est uniquement supportée pour des périphérique ordinaires." -#: src/cryptsetup.c:3341 +#: src/cryptsetup.c:3343 msgid "Large IV sectors option is supported only for opening plain type device with sector size larger than 512 bytes." msgstr "L'option des secteurs IV (vecteur d'initialisation) de grande taille est supportée uniquement à l'ouverture de périphériques de type simple avec une taille de secteur supérieure à 512 octets." -#: src/cryptsetup.c:3346 +#: src/cryptsetup.c:3348 msgid "Option --test-passphrase is allowed only for open of LUKS, TCRYPT, BITLK and FVAULT2 devices." msgstr "L'option --test-passphrase est autorisée uniquement pour ouvrir des périphériques LUKS, TCRYPT, BITLK et FVAULT2." -#: src/cryptsetup.c:3349 src/cryptsetup.c:3379 +#: src/cryptsetup.c:3351 src/cryptsetup.c:3381 msgid "Options --device-size and --size cannot be combined." msgstr "Les options --device-size et --size ne peuvent pas être combinées." -#: src/cryptsetup.c:3352 +#: src/cryptsetup.c:3354 msgid "Option --unbound is allowed only for open of luks device." msgstr "L'option --unbound est permise uniquement pour ouvrir un périphérique luks." -#: src/cryptsetup.c:3355 +#: src/cryptsetup.c:3357 msgid "Option --unbound cannot be used without --test-passphrase." msgstr "L'option --unbound ne peut pas être utilisée sans --test-passphrase." -#: src/cryptsetup.c:3359 +#: src/cryptsetup.c:3361 msgid "Option --volume-key-keyring cannot be combined with --hash or --volume-key-file." msgstr "L'option --volume-key-keyring ne peut pas être combinée avec --hash ou --volume-key-file." -#: src/cryptsetup.c:3362 +#: src/cryptsetup.c:3364 msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "Les deux options --volume-key-file doivent être appariées avec les options --key-size respectives." -#: src/cryptsetup.c:3371 src/veritysetup.c:673 src/integritysetup.c:787 +#: src/cryptsetup.c:3373 src/veritysetup.c:673 src/integritysetup.c:793 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "Les options --cancel-deferred et --deferred ne peuvent pas être utilisées en même temps." -#: src/cryptsetup.c:3387 +#: src/cryptsetup.c:3389 msgid "Option --active-name can be set only for LUKS2 device." msgstr "L'option --active-name peut uniquement être définie pour un périphérique LUKS2." -#: src/cryptsetup.c:3390 +#: src/cryptsetup.c:3392 msgid "Options --active-name and --force-offline-reencrypt cannot be combined." msgstr "Les options --active-name et --force-offline-reencrypt ne peuvent pas être combinées." -#: src/cryptsetup.c:3393 +#: src/cryptsetup.c:3395 msgid "Options --new-volume-key-file and --keep-key cannot be combined." msgstr "Les options --new-volume-key et --keep-key ne peuvent pas être combinées." -#: src/cryptsetup.c:3396 +#: src/cryptsetup.c:3398 msgid "Options --new-volume-key-keyring and --keep-key cannot be combined." msgstr "Les options --new-volume-key-keyring et --keep-key ne peuvent pas être combinées." -#: src/cryptsetup.c:3404 src/cryptsetup.c:3434 +#: src/cryptsetup.c:3406 src/cryptsetup.c:3436 msgid "Keyslot specification is required." msgstr "Une spécification d'emplacement de clé est requise." -#: src/cryptsetup.c:3412 +#: src/cryptsetup.c:3414 msgid "Options --align-payload and --offset cannot be combined." msgstr "Les options --align-payload et --offset ne peuvent pas être combinées." -#: src/cryptsetup.c:3415 +#: src/cryptsetup.c:3417 msgid "Option --integrity-no-wipe can be used only for format action with integrity extension." msgstr "L'option --integrity-no-wipe peut uniquement être utilisée pour une action de formatage avec l'extension d'intégrité." -#: src/cryptsetup.c:3418 +#: src/cryptsetup.c:3420 msgid "Only one of --use-[u]random options is allowed." msgstr "Seule une des deux possibilités --use-[u]random est autorisée." -#: src/cryptsetup.c:3426 +#: src/cryptsetup.c:3428 msgid "Key size is required with --unbound option." msgstr "La taille de clé est requise avec l'option --unbound." -#: src/cryptsetup.c:3446 +#: src/cryptsetup.c:3448 msgid "Invalid token action." msgstr "L'action de jeton est invalide." -#: src/cryptsetup.c:3449 +#: src/cryptsetup.c:3451 msgid "--key-description parameter is mandatory for token add action." msgstr "Le paramètre --key-description est requis pour l'action d'ajout d'un jeton." -#: src/cryptsetup.c:3453 src/cryptsetup.c:3466 +#: src/cryptsetup.c:3455 src/cryptsetup.c:3468 msgid "Action requires specific token. Use --token-id parameter." msgstr "L'action requiert un jeton spécifique. Utilisez le paramètre --token-id." -#: src/cryptsetup.c:3457 +#: src/cryptsetup.c:3459 msgid "Option --unbound is valid only with token add action." msgstr "L'option --unbound est uniquement valable avec l'action d'ajout d'un jeton." -#: src/cryptsetup.c:3459 +#: src/cryptsetup.c:3461 msgid "Options --key-slot and --unbound cannot be combined." msgstr "Les options --key-slot et --unbound ne peuvent pas être combinées." -#: src/cryptsetup.c:3464 +#: src/cryptsetup.c:3466 msgid "Action requires specific keyslot. Use --key-slot parameter." msgstr "L'action requiert un jeton spécifique. Utilisez le paramètre --key-slot." -#: src/cryptsetup.c:3480 +#: src/cryptsetup.c:3482 msgid " [--type ] []" msgstr " [--type ] []" -#: src/cryptsetup.c:3480 src/veritysetup.c:487 src/integritysetup.c:554 +#: src/cryptsetup.c:3482 src/veritysetup.c:487 src/integritysetup.c:560 msgid "open device as " msgstr "ouvrir le périphérique comme " -#: src/cryptsetup.c:3481 src/cryptsetup.c:3482 src/cryptsetup.c:3483 -#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:555 -#: src/integritysetup.c:556 src/integritysetup.c:558 +#: src/cryptsetup.c:3483 src/cryptsetup.c:3484 src/cryptsetup.c:3485 +#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:561 +#: src/integritysetup.c:562 src/integritysetup.c:564 msgid "" msgstr "" -#: src/cryptsetup.c:3481 src/veritysetup.c:488 src/integritysetup.c:555 +#: src/cryptsetup.c:3483 src/veritysetup.c:488 src/integritysetup.c:561 msgid "close device (remove mapping)" msgstr "fermeture du périphérique (supprime le « mapping »)" -#: src/cryptsetup.c:3482 src/integritysetup.c:558 +#: src/cryptsetup.c:3484 src/integritysetup.c:564 msgid "resize active device" msgstr "redimensionner le périphérique actif" -#: src/cryptsetup.c:3483 +#: src/cryptsetup.c:3485 msgid "show device status" msgstr "afficher le statut du périphérique" -#: src/cryptsetup.c:3484 +#: src/cryptsetup.c:3486 msgid "[--cipher ]" msgstr "[--cipher ]" -#: src/cryptsetup.c:3484 +#: src/cryptsetup.c:3486 msgid "benchmark cipher" msgstr "chiffrement pour test de performance" -#: src/cryptsetup.c:3485 src/cryptsetup.c:3486 src/cryptsetup.c:3487 -#: src/cryptsetup.c:3488 src/cryptsetup.c:3489 src/cryptsetup.c:3496 -#: src/cryptsetup.c:3497 src/cryptsetup.c:3498 src/cryptsetup.c:3499 -#: src/cryptsetup.c:3500 src/cryptsetup.c:3501 src/cryptsetup.c:3502 -#: src/cryptsetup.c:3503 src/cryptsetup.c:3504 src/cryptsetup.c:3505 +#: src/cryptsetup.c:3487 src/cryptsetup.c:3488 src/cryptsetup.c:3489 +#: src/cryptsetup.c:3490 src/cryptsetup.c:3491 src/cryptsetup.c:3498 +#: src/cryptsetup.c:3499 src/cryptsetup.c:3500 src/cryptsetup.c:3501 +#: src/cryptsetup.c:3502 src/cryptsetup.c:3503 src/cryptsetup.c:3504 +#: src/cryptsetup.c:3505 src/cryptsetup.c:3506 src/cryptsetup.c:3507 msgid "" msgstr "" -#: src/cryptsetup.c:3485 +#: src/cryptsetup.c:3487 msgid "try to repair on-disk metadata" msgstr "essayer de réparer les métadonnées sur le disque" -#: src/cryptsetup.c:3486 +#: src/cryptsetup.c:3488 msgid "reencrypt LUKS2 device" msgstr "rechiffrer le périphérique LUKS2" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3489 msgid "erase all keyslots (remove encryption key)" msgstr "supprimer tous les emplacements de clés (supprime la clé de chiffrement)" -#: src/cryptsetup.c:3488 +#: src/cryptsetup.c:3490 msgid "convert LUKS from/to LUKS2 format" msgstr "convertir LUKS depuis/vers le format LUKS2" -#: src/cryptsetup.c:3489 +#: src/cryptsetup.c:3491 msgid "set permanent configuration options for LUKS2" msgstr "définir les options de configuration permanentes pour LUKS2" -#: src/cryptsetup.c:3490 src/cryptsetup.c:3491 +#: src/cryptsetup.c:3492 src/cryptsetup.c:3493 msgid " []" msgstr " []" -#: src/cryptsetup.c:3490 +#: src/cryptsetup.c:3492 msgid "formats a LUKS device" msgstr "formater un périphérique LUKS" -#: src/cryptsetup.c:3491 +#: src/cryptsetup.c:3493 msgid "add key to LUKS device" msgstr "ajouter une clé au périphérique LUKS" -#: src/cryptsetup.c:3492 src/cryptsetup.c:3493 src/cryptsetup.c:3494 +#: src/cryptsetup.c:3494 src/cryptsetup.c:3495 src/cryptsetup.c:3496 msgid " []" msgstr " []" -#: src/cryptsetup.c:3492 +#: src/cryptsetup.c:3494 msgid "removes supplied key or key file from LUKS device" msgstr "retire du périphérique LUKS la clé ou le fichier de clé fourni" -#: src/cryptsetup.c:3493 +#: src/cryptsetup.c:3495 msgid "changes supplied key or key file of LUKS device" msgstr "modifie la clé ou le fichier de clé fourni pour le périphérique LUKS" -#: src/cryptsetup.c:3494 +#: src/cryptsetup.c:3496 msgid "converts a key to new pbkdf parameters" msgstr "converti une clé vers les nouveaux paramètres pbkdf" -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3497 msgid " " msgstr " " -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3497 msgid "wipes key with number from LUKS device" msgstr "efface de façon sécurisée la clé avec le numéro du périphérique LUKS" -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3498 msgid "print UUID of LUKS device" msgstr "afficher l'UUID du périphérique LUKS" -#: src/cryptsetup.c:3497 +#: src/cryptsetup.c:3499 msgid "tests for LUKS partition header" msgstr "teste si a un en-tête de partition LUKS" -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3500 msgid "dump LUKS partition information" msgstr "affiche les informations LUKS de la partition" -#: src/cryptsetup.c:3499 +#: src/cryptsetup.c:3501 msgid "dump TCRYPT device information" msgstr "affiche les informations du périphérique TCRYPT" -#: src/cryptsetup.c:3500 +#: src/cryptsetup.c:3502 msgid "dump BITLK device information" msgstr "affiche les informations du périphérique BITLK" -#: src/cryptsetup.c:3501 +#: src/cryptsetup.c:3503 msgid "dump FVAULT2 device information" msgstr "affiche les informations du périphérique FVAULT2" -#: src/cryptsetup.c:3502 +#: src/cryptsetup.c:3504 msgid "Suspend LUKS device and wipe key (all IOs are frozen)" msgstr "Suspendre le périphérique LUKS et effacer de façon sécurisée la clé (toutes les entrées/sorties sont suspendues)" -#: src/cryptsetup.c:3503 +#: src/cryptsetup.c:3505 msgid "Resume suspended LUKS device" msgstr "Remettre en service le périphérique LUKS suspendu" -#: src/cryptsetup.c:3504 +#: src/cryptsetup.c:3506 msgid "Backup LUKS device header and keyslots" msgstr "Sauvegarder l'en-tête et les emplacements de clés du périphérique LUKS" -#: src/cryptsetup.c:3505 +#: src/cryptsetup.c:3507 msgid "Restore LUKS device header and keyslots" msgstr "Restaurer l'en-tête et les emplacements de clés du périphérique LUKS" -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3508 msgid " " msgstr " " -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3508 msgid "Manipulate LUKS2 tokens" msgstr "Manipuler les jetons LUKS2" -#: src/cryptsetup.c:3525 src/veritysetup.c:505 src/integritysetup.c:573 +#: src/cryptsetup.c:3527 src/veritysetup.c:505 src/integritysetup.c:579 msgid "" "\n" " is one of:\n" @@ -2953,7 +2953,7 @@ msgstr "" "\n" " est l'une de :\n" -#: src/cryptsetup.c:3531 +#: src/cryptsetup.c:3533 msgid "" "\n" "You can also use old syntax aliases:\n" @@ -2965,7 +2965,7 @@ msgstr "" "\touvrir : create (plainOpen), luksOpen, loopaesOpen, tcryptOpen, bitlkOpen, fvault2Open\n" "\tfermer : remove (plainClose), luksClose, loopaesClose, tcryptClose, bitlkClose, fvault2Close\n" -#: src/cryptsetup.c:3535 +#: src/cryptsetup.c:3537 #, c-format msgid "" "\n" @@ -2980,7 +2980,7 @@ msgstr "" " est le numéro de l'emplacement de clé LUKS à modifier\n" " est un fichier optionnel contenant la nouvelle clé pour l'action luksAddKey\n" -#: src/cryptsetup.c:3542 +#: src/cryptsetup.c:3544 #, c-format msgid "" "\n" @@ -2989,7 +2989,7 @@ msgstr "" "\n" "Le format de métadonnées compilé par défaut est %s (pour l'action luksFormat).\n" -#: src/cryptsetup.c:3547 +#: src/cryptsetup.c:3549 msgid "" "\n" "LUKS2 external token plugin support is enabled.\n" @@ -2997,12 +2997,12 @@ msgstr "" "\n" "Le support du greffon de jeton externe LUKS2 est enabled.\n" -#: src/cryptsetup.c:3548 +#: src/cryptsetup.c:3550 #, c-format msgid "LUKS2 external token plugin path: %s.\n" msgstr "Chemin du greffon de jeton externe LUKS2 : %s.\n" -#: src/cryptsetup.c:3550 +#: src/cryptsetup.c:3552 msgid "" "\n" "LUKS2 external token plugin support is disabled.\n" @@ -3010,7 +3010,7 @@ msgstr "" "\n" "Le support du greffon de jeton externe LUKS2 est désactivé.\n" -#: src/cryptsetup.c:3554 +#: src/cryptsetup.c:3556 #, c-format msgid "" "\n" @@ -3027,7 +3027,7 @@ msgstr "" "PBKDF par défaut pour LUKS2 : %s\n" "\tTemps d'itération: %d, Mémoire requise: %d ko, Threads parallèles: %d\n" -#: src/cryptsetup.c:3565 +#: src/cryptsetup.c:3567 #, c-format msgid "" "\n" @@ -3042,122 +3042,126 @@ msgstr "" "\tplain: %s, Clé: %d bits, Hachage mot de passe: %s\n" "\tLUKS: %s, Clé: %d bits, Hachage en-tête LUKS: %s, RNG: %s\n" -#: src/cryptsetup.c:3574 +#: src/cryptsetup.c:3576 msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: La taille de clé par défaut en mode XTS (deux clés internes) sera doublée.\n" -#: src/cryptsetup.c:3592 src/veritysetup.c:647 src/integritysetup.c:733 +#: src/cryptsetup.c:3594 src/veritysetup.c:647 src/integritysetup.c:739 #, c-format msgid "%s: requires %s as arguments" msgstr "%s : exige %s comme arguments." -#: src/cryptsetup.c:3632 src/utils_reencrypt_luks1.c:1143 +#: src/cryptsetup.c:3634 src/utils_reencrypt_luks1.c:1143 msgid "Key slot is invalid." msgstr "Emplacement de clé non valide." -#: src/cryptsetup.c:3660 +#: src/cryptsetup.c:3662 msgid "Device size must be multiple of 512 bytes sector." msgstr "La taille du périphérique doit être un multiple d'un secteur de 512 octets." -#: src/cryptsetup.c:3665 +#: src/cryptsetup.c:3667 msgid "Invalid max reencryption hotzone size specification." msgstr "La spécification de la taille maximale de la zone chaude de rechiffrement est invalide." -#: src/cryptsetup.c:3679 src/cryptsetup.c:3696 src/cryptsetup.c:3708 +#: src/cryptsetup.c:3681 src/cryptsetup.c:3698 src/cryptsetup.c:3710 msgid "Key size must be a multiple of 8 bits" msgstr "La taille de la clé doit être un multiple de 8 bits" -#: src/cryptsetup.c:3686 +#: src/cryptsetup.c:3688 msgid "At most 2 key size specifications can be supplied." msgstr "Au plus 2 spécifications de taille de clé peuvent être fournies." -#: src/cryptsetup.c:3715 src/cryptsetup.c:3726 +#: src/cryptsetup.c:3717 src/cryptsetup.c:3728 #, c-format msgid "At most %d volume key specifications can be supplied." msgstr "Au plus %d spécifications de clés de volume peuvent être fournies." -#: src/cryptsetup.c:3738 +#: src/cryptsetup.c:3740 #, c-format msgid "At most %d keyring link specifications can be supplied." msgstr "Au plus %d spécifications de liaison de porte-clé peuvent être fournies." -#: src/cryptsetup.c:3747 +#: src/cryptsetup.c:3749 msgid "Maximum device reduce size is 1 GiB." msgstr "La taille maximum réduite pour le périphérique est 1 GiB." -#: src/cryptsetup.c:3750 +#: src/cryptsetup.c:3752 msgid "Reduce size must be multiple of 512 bytes sector." msgstr "La taille réduite doit être un multiple d'un secteur de 512 octets." -#: src/cryptsetup.c:3767 +#: src/cryptsetup.c:3769 msgid "Option --priority can be only ignore/normal/prefer." msgstr "L'option --priority peut uniquement être ignore/normal/prefer." -#: src/cryptsetup.c:3786 src/veritysetup.c:568 src/integritysetup.c:653 +#: src/cryptsetup.c:3774 +msgid "Invalid maximal tries specification." +msgstr "La spécification du nombre maximal de tentatives est invalide." + +#: src/cryptsetup.c:3793 src/veritysetup.c:568 src/integritysetup.c:659 msgid "Show this help message" msgstr "Afficher ce message d'aide" -#: src/cryptsetup.c:3787 src/veritysetup.c:569 src/integritysetup.c:654 +#: src/cryptsetup.c:3794 src/veritysetup.c:569 src/integritysetup.c:660 msgid "Display brief usage" msgstr "Afficher, en résumé, la syntaxe d'invocation" -#: src/cryptsetup.c:3788 src/veritysetup.c:570 src/integritysetup.c:655 +#: src/cryptsetup.c:3795 src/veritysetup.c:570 src/integritysetup.c:661 msgid "Print package version" msgstr "Afficher la version du paquet" -#: src/cryptsetup.c:3799 src/veritysetup.c:581 src/integritysetup.c:666 +#: src/cryptsetup.c:3806 src/veritysetup.c:581 src/integritysetup.c:672 msgid "Help options:" msgstr "Options d'aide :" -#: src/cryptsetup.c:3822 src/veritysetup.c:602 src/integritysetup.c:686 +#: src/cryptsetup.c:3829 src/veritysetup.c:602 src/integritysetup.c:692 msgid "[OPTION...] " msgstr "[OPTION...] " -#: src/cryptsetup.c:3831 src/veritysetup.c:611 src/integritysetup.c:697 +#: src/cryptsetup.c:3838 src/veritysetup.c:611 src/integritysetup.c:703 msgid "Argument missing." msgstr "Il manque l'argument ." -#: src/cryptsetup.c:3910 src/veritysetup.c:642 src/integritysetup.c:728 +#: src/cryptsetup.c:3917 src/veritysetup.c:642 src/integritysetup.c:734 msgid "Unknown action." msgstr "Action inconnue." -#: src/cryptsetup.c:3928 +#: src/cryptsetup.c:3935 msgid "Option --key-file takes precedence over specified key file argument." msgstr "L'option --key-file est prioritaire par rapport à un fichier de clé spécifié en argument." -#: src/cryptsetup.c:3934 +#: src/cryptsetup.c:3941 msgid "Only one --key-file argument is allowed." msgstr "Un seul argument --key-file est autorisé." -#: src/cryptsetup.c:3939 +#: src/cryptsetup.c:3946 msgid "Password-based key derivation function (PBKDF) can be only pbkdf2 or argon2i/argon2id." msgstr "La fonction de dérivation d'une clé basée sur un mot de passe (PBKDF = Password-Based Key Derivation Function) peut uniquement être pbkdf2 ou argon2i/argon2id." -#: src/cryptsetup.c:3944 +#: src/cryptsetup.c:3951 msgid "PBKDF forced iterations cannot be combined with iteration time option." msgstr "Les itérations forcées de PBKDF ne peuvent pas être combinées avec l'option de temps d'itération." -#: src/cryptsetup.c:3949 +#: src/cryptsetup.c:3956 msgid "Cannot link volume key to a keyring when keyring is disabled." msgstr "Impossible de lier une clé de volume à un porte-clé quand le porte-clé est désactivé." -#: src/cryptsetup.c:3954 +#: src/cryptsetup.c:3961 msgid "Cannot use keyring key description when keyring is disabled." msgstr "Impossible d'utiliser la description de clé de porte-clé quand le porte-clé est désactivé." -#: src/cryptsetup.c:3959 +#: src/cryptsetup.c:3966 msgid "Inline integrity must be used together with --integrity option." msgstr "L'intégrité en ligne doit être utilisée avec l'option --integrity." -#: src/cryptsetup.c:3970 +#: src/cryptsetup.c:3977 msgid "Options --keyslot-cipher and --keyslot-key-size must be used together." msgstr "Les options --keyslot-cipher et --keyslot-key-size doivent être utilisées ensembles." -#: src/cryptsetup.c:3978 +#: src/cryptsetup.c:3985 msgid "No action taken. Invoked with --test-args option.\n" msgstr "Aucune action réalisée. Invoqué avec l'option --test-args.\n" -#: src/cryptsetup.c:3991 +#: src/cryptsetup.c:3998 msgid "Cannot disable metadata locking." msgstr "Impossible de désactiver le verrouillage des métadonnées." @@ -3222,7 +3226,7 @@ msgstr "La commande exige ou l'option --root-hash-file comme ar msgid " " msgstr " " -#: src/veritysetup.c:485 src/integritysetup.c:553 +#: src/veritysetup.c:485 src/integritysetup.c:559 msgid "format device" msgstr "formater le périphérique" @@ -3238,7 +3242,7 @@ msgstr "vérifier le périphérique" msgid " []" msgstr " []" -#: src/veritysetup.c:489 src/integritysetup.c:556 +#: src/veritysetup.c:489 src/integritysetup.c:562 msgid "show active device status" msgstr "afficher le statut du périphérique actif" @@ -3246,7 +3250,7 @@ msgstr "afficher le statut du périphérique actif" msgid "" msgstr "" -#: src/veritysetup.c:490 src/integritysetup.c:557 +#: src/veritysetup.c:490 src/integritysetup.c:563 msgid "show on-disk information" msgstr "afficher les informations sur le disque" @@ -3288,7 +3292,7 @@ msgstr "Les options --panic-on-corruption et --restart-on-corruption ne peuvent msgid "Option --error-as-corruption must be used with --panic-on-corruption or --restart-on-corruption." msgstr "L'option --error-as-corruption doit être utilisée avec --panic-on-corruption ou --restart-on-corruption." -#: src/integritysetup.c:168 +#: src/integritysetup.c:169 #, c-format msgid "" "This will overwrite data on %s and %s irrevocably.\n" @@ -3297,33 +3301,33 @@ msgstr "" "Ceci écrasera les données sur %s et %s de manière irrévocable.\n" "Pour préserver le périphérique de données, utilisez l'option --no-wipe (et ensuite activez-le avec --integrity-recalculate)." -#: src/integritysetup.c:213 +#: src/integritysetup.c:215 #, c-format msgid "Formatted with tag size %u%s, internal integrity %s.\n" msgstr "Formaté avec une taille de balise de %u%s, intégrité interne %s.\n" -#: src/integritysetup.c:214 +#: src/integritysetup.c:216 msgid " (inline hw tags)" msgstr " (étiquettes HW en ligne)" -#: src/integritysetup.c:303 +#: src/integritysetup.c:305 msgid "Setting recalculate flag is not supported, you may consider using --wipe instead." msgstr "Définir le fanion pour le recalcul n'est pas supporté, envisagez plutôt d'utiliser --wipe." -#: src/integritysetup.c:380 src/integritysetup.c:540 +#: src/integritysetup.c:382 src/integritysetup.c:546 #, c-format msgid "Device %s is not a valid INTEGRITY device." msgstr "Le périphérique %s n'est pas un périphérique INTEGRITY valable." -#: src/integritysetup.c:553 src/integritysetup.c:557 +#: src/integritysetup.c:559 src/integritysetup.c:563 msgid "" msgstr "" -#: src/integritysetup.c:554 +#: src/integritysetup.c:560 msgid " " msgstr " " -#: src/integritysetup.c:577 +#: src/integritysetup.c:583 #, c-format msgid "" "\n" @@ -3334,7 +3338,7 @@ msgstr "" " est le périphérique à créer sous %s\n" " est le périphérique contenant les données avec les balises d'intégrité\n" -#: src/integritysetup.c:582 +#: src/integritysetup.c:588 #, c-format msgid "" "\n" @@ -3347,48 +3351,48 @@ msgstr "" "\tAlgorithme de somme de contrôle : %s\n" "\tTaille maximale du fichier de clé : %dko\n" -#: src/integritysetup.c:639 +#: src/integritysetup.c:645 #, c-format msgid "Invalid --%s size. Maximum is %u bytes." msgstr "La taille --%s n'est pas valide. Le maximum est %u octets." -#: src/integritysetup.c:742 +#: src/integritysetup.c:748 msgid "Both key file and key size options must be specified." msgstr "Les options du fichier de clé et de la taille de la clé doivent être spécifiées toutes les deux." -#: src/integritysetup.c:746 +#: src/integritysetup.c:752 msgid "Both journal integrity key file and key size options must be specified." msgstr "Les options du fichier de clé de l'intégrité du journal et de la taille de la clé doivent être spécifiées toutes les deux." -#: src/integritysetup.c:749 +#: src/integritysetup.c:755 msgid "Journal integrity algorithm must be specified if journal integrity key is used." msgstr "L'algorithme d'intégrité du journal doit être spécifié si la clé d'intégrité du journal est utilisée." -#: src/integritysetup.c:753 +#: src/integritysetup.c:759 msgid "Both journal encryption key file and key size options must be specified." msgstr "Les options du fichier de clé de chiffrement du journal et de la taille de la clé doivent être spécifiées toutes les deux." -#: src/integritysetup.c:756 +#: src/integritysetup.c:762 msgid "Journal encryption algorithm must be specified if journal encryption key is used." msgstr "L'algorithme de chiffrement du journal doit être spécifié si la clé de chiffrement du journal est utilisée." -#: src/integritysetup.c:760 +#: src/integritysetup.c:766 msgid "Recovery and bitmap mode options are mutually exclusive." msgstr "Les options de mode récupération et champ de bits sont mutuellement exclusives." -#: src/integritysetup.c:767 +#: src/integritysetup.c:773 msgid "Journal options cannot be used in bitmap mode." msgstr "Les options de journal ne peuvent pas être utilisées en mode champ de bits." -#: src/integritysetup.c:772 +#: src/integritysetup.c:778 msgid "Bitmap options can be used only in bitmap mode." msgstr "Les options de champ de bits peuvent uniquement être utilisées en mode champ de bits." -#: src/integritysetup.c:778 +#: src/integritysetup.c:784 msgid "Inline mode cannot be combined with journal or bitmap options." msgstr "Le mode en ligne ne peut pas être combiné avec les options de journal ou de carte de bits." -#: src/integritysetup.c:782 +#: src/integritysetup.c:788 msgid "Inline mode cannot be combined with separate data device." msgstr "Le mode en ligne ne peut pas être combiné avec un périphérique qui a des données séparées." @@ -3742,32 +3746,32 @@ msgstr "Le périphérique n'est pas en cours de déchiffrement LUKS2. Option --d msgid "Device is in reencryption using datashift resilience. Requested --resilience option cannot be applied." msgstr "Le périphérique est en cours de rechiffrement en utilisant la résilience datashift. L'option --resilience demandée ne peut pas être appliquée." -#: src/utils_reencrypt.c:282 src/utils_reencrypt.c:1924 +#: src/utils_reencrypt.c:283 src/utils_reencrypt.c:1927 msgid "Cannot determine volume key size for LUKS without keyslots, please use --new-key-size option." msgstr "Impossible de déterminer la taille de la clé de volume pour LUKS sans emplacement de clé, veuillez utiliser l'option --new-key-size." -#: src/utils_reencrypt.c:436 +#: src/utils_reencrypt.c:438 msgid "Device requires reencryption recovery. Run repair first." msgstr "Le périphérique requiert une récupération de rechiffrement. Exécuter d'abord une réparation." -#: src/utils_reencrypt.c:450 +#: src/utils_reencrypt.c:452 #, c-format msgid "Device %s is already in LUKS2 reencryption. Do you wish to resume previously initialised operation?" msgstr "Le périphérique %s est déjà en cours de rechiffrement LUKS2. Voulez-vous redémarrer l'opération précédemment initialisée ?" -#: src/utils_reencrypt.c:561 +#: src/utils_reencrypt.c:563 msgid "Legacy LUKS2 reencryption is no longer supported." msgstr "Le rechiffrement LUKS2 historique n'est plus supporté." -#: src/utils_reencrypt.c:566 +#: src/utils_reencrypt.c:568 msgid "Can not reencrypt LUKS2 device configured to use OPAL." msgstr "Impossible de rechiffrer un périphérique LUKS2 configuré pour utiliser OPAL." -#: src/utils_reencrypt.c:572 +#: src/utils_reencrypt.c:574 msgid "Reencryption of device with integrity profile is not supported." msgstr "Le rechiffrement d'un périphérique avec un profil d'intégrité n'est pas supporté." -#: src/utils_reencrypt.c:609 +#: src/utils_reencrypt.c:611 #, c-format msgid "" "Requested --sector-size % is incompatible with %s superblock\n" @@ -3776,110 +3780,110 @@ msgstr "" "La taille de secteur demandée avec --sector-size % est incompatible avec le superbloc %s\n" "(taille de bloc : % octets) détecté sur le périphérique %s." -#: src/utils_reencrypt.c:678 src/utils_reencrypt.c:2204 +#: src/utils_reencrypt.c:680 src/utils_reencrypt.c:2207 msgid "Encryption without detached header (--header) is not possible without data device size reduction (--reduce-device-size)." msgstr "Le chiffrement sans en-tête détaché (--header) n'est pas possible sans une réduction de la taille du périphérique de données (--reduce-device-size)" -#: src/utils_reencrypt.c:687 +#: src/utils_reencrypt.c:689 msgid "Requested data offset must be less than or equal to half of --reduce-device-size parameter." msgstr "Le décalage de données demandé doit être inférieur ou égal à la moitié du paramètre --reduce-device-size." -#: src/utils_reencrypt.c:697 +#: src/utils_reencrypt.c:699 #, c-format msgid "Adjusting --reduce-device-size value to twice the --offset % (sectors).\n" msgstr "Ajustement de la valeur de --reduce-device-size à deux fois --offset % (secteurs).\n" -#: src/utils_reencrypt.c:727 +#: src/utils_reencrypt.c:729 #, c-format msgid "Temporary header file %s already exists. Aborting." msgstr "Le fichier temporaire d'en-tête %s existe déjà. Abandon." -#: src/utils_reencrypt.c:729 src/utils_reencrypt.c:736 +#: src/utils_reencrypt.c:731 src/utils_reencrypt.c:738 #, c-format msgid "Cannot create temporary header file %s." msgstr "Impossible de créer le fichier temporaire d'en-tête %s." -#: src/utils_reencrypt.c:761 +#: src/utils_reencrypt.c:763 msgid "LUKS2 metadata size is larger than data shift value." msgstr "La taille des métadonnées LUKS2 est plus grande que la valeur de décalage des données." -#: src/utils_reencrypt.c:800 +#: src/utils_reencrypt.c:802 #, c-format msgid "Failed to place new header at head of device %s." msgstr "Impossible de placer le nouvel en-tête au début du périphérique %s." -#: src/utils_reencrypt.c:813 +#: src/utils_reencrypt.c:815 #, c-format msgid "%s/%s is now active and ready for online encryption.\n" msgstr "%s/%s est maintenant actif et prêt pour un chiffrement en ligne.\n" -#: src/utils_reencrypt.c:850 +#: src/utils_reencrypt.c:852 #, c-format msgid "Active device %s is not LUKS2." msgstr "Le périphérique actif %s n'est pas LUKS2." -#: src/utils_reencrypt.c:878 +#: src/utils_reencrypt.c:880 msgid "Restoring original LUKS2 header." msgstr "Restauration de l'en-tête LUKS2 original." -#: src/utils_reencrypt.c:886 +#: src/utils_reencrypt.c:888 msgid "Original LUKS2 header restore failed." msgstr "Échec de la restauration de l'en-tête LUKS2 original." -#: src/utils_reencrypt.c:918 +#: src/utils_reencrypt.c:920 #, c-format msgid "Header file %s does not exist. Do you want to initialize LUKS2 decryption of device %s and export LUKS2 header to file %s?" msgstr "Le fichier d'en-tête %s n'existe pas. Voulez-vous initialiser le déchiffrement LUKS2 du périphérique %s et exporter l'en-tête LUKS2 dans le fichier %s ?" -#: src/utils_reencrypt.c:961 +#: src/utils_reencrypt.c:963 msgid "Failed to add read/write permissions to exported header file." msgstr "Échec de l'ajout des permissions lecture/écriture pour exporter le fichier d'en-tête." -#: src/utils_reencrypt.c:1015 +#: src/utils_reencrypt.c:1017 #, c-format msgid "Reencryption initialization failed. Header backup is available in %s." msgstr "L'initialisation du rechiffrement a échoué. La sauvegarde de l'en-tête est disponible dans %s." -#: src/utils_reencrypt.c:1043 +#: src/utils_reencrypt.c:1045 msgid "LUKS2 decryption is supported with detached header device only (with data offset set to 0)." msgstr "Le déchiffrement LUKS2 est uniquement supporté avec un périphérique à l'en-tête détaché (avec l'offset de données défini à 0)." -#: src/utils_reencrypt.c:1487 +#: src/utils_reencrypt.c:1490 msgid "No token could unlock the device." msgstr "Aucun jeton n'a pu déverrouiller ce périphérique." -#: src/utils_reencrypt.c:1519 src/utils_reencrypt.c:1528 +#: src/utils_reencrypt.c:1522 src/utils_reencrypt.c:1531 msgid "Not enough free keyslots for reencryption." msgstr "Pas assez d'emplacements de clés libres pour le rechiffrement." -#: src/utils_reencrypt.c:1559 +#: src/utils_reencrypt.c:1562 msgid "Key file or keyring key description can be used only with --key-slot or with exactly one key slot active." msgstr "Le fichier de clé ou le porte clé peut uniquement être utilisé avec --key-slot ou avec exactement un seul emplacement de clé actif." -#: src/utils_reencrypt.c:1566 src/utils_reencrypt.c:1579 +#: src/utils_reencrypt.c:1569 src/utils_reencrypt.c:1582 #: src/utils_reencrypt_luks1.c:1092 src/utils_reencrypt_luks1.c:1103 #, c-format msgid "Enter passphrase for key slot %d: " msgstr "Entrez la phrase secrète pour l'emplacement de clé %d : " -#: src/utils_reencrypt.c:1876 +#: src/utils_reencrypt.c:1879 #, c-format msgid "Switching data encryption cipher to %s.\n" msgstr "Basculement de l'algorithme de chiffrement de données vers %s.\n" -#: src/utils_reencrypt.c:1977 src/utils_reencrypt.c:1998 +#: src/utils_reencrypt.c:1980 src/utils_reencrypt.c:2001 msgid "Use --force-no-keyslots to reencrypt device with active keyslots by passing volume keys directly." msgstr "Utilise --force-no-keyslots pour rechiffrer le périphérique avec les emplacements de clé actifs en passant directement les clés du volume." -#: src/utils_reencrypt.c:1993 +#: src/utils_reencrypt.c:1996 msgid "Option --new-volume-key-file must be paired with --new-key-size" msgstr "L'option --new-volume-key-file doit être appariée avec --new-key-size" -#: src/utils_reencrypt.c:2035 +#: src/utils_reencrypt.c:2038 msgid "No data segment parameters changed. Reencryption aborted." msgstr "Aucun paramètre de segment de donnée changé. Rechiffrement abandonné." -#: src/utils_reencrypt.c:2072 +#: src/utils_reencrypt.c:2075 msgid "" "Encryption sector size increase on offline device is not supported.\n" "Activate the device first or use --force-offline-reencrypt option (dangerous!)." @@ -3887,7 +3891,7 @@ msgstr "" "L'augmentation de la taille du secteur de chiffrement n'est pas supportée sur un périphérique hors-ligne.\n" "Activez d'abord le périphérique ou utilisez l'option --force-offline-reencrypt (dangereux !)." -#: src/utils_reencrypt.c:2114 src/utils_reencrypt_luks1.c:688 +#: src/utils_reencrypt.c:2117 src/utils_reencrypt_luks1.c:688 #: src/utils_reencrypt_luks1.c:759 msgid "" "\n" @@ -3896,58 +3900,58 @@ msgstr "" "\n" "Rechiffrement interrompu." -#: src/utils_reencrypt.c:2119 +#: src/utils_reencrypt.c:2122 msgid "Resuming LUKS reencryption in forced offline mode.\n" msgstr "Redémarrage du rechiffrement LUKS en mode hors-ligne forcé.\n" -#: src/utils_reencrypt.c:2142 +#: src/utils_reencrypt.c:2145 #, c-format msgid "Device %s contains broken LUKS metadata. Aborting operation." msgstr "Le périphérique %s contient des métadonnées LUKS endommagées. L'opération est abandonnée." -#: src/utils_reencrypt.c:2158 src/utils_reencrypt.c:2180 +#: src/utils_reencrypt.c:2161 src/utils_reencrypt.c:2183 #, c-format msgid "Device %s is already LUKS device. Aborting operation." msgstr "Le périphérique %s est déjà un périphérique LUKS. L'opération est abandonnée." -#: src/utils_reencrypt.c:2186 +#: src/utils_reencrypt.c:2189 #, c-format msgid "Device %s is already in LUKS reencryption. Aborting operation." msgstr "Le périphérique %s est déjà en cours de rechiffrement LUKS. L'opération est abandonnée." -#: src/utils_reencrypt.c:2269 +#: src/utils_reencrypt.c:2272 msgid "LUKS2 decryption requires --header option." msgstr "Le déchiffrement LUKS2 requiert l'option --header." -#: src/utils_reencrypt.c:2317 +#: src/utils_reencrypt.c:2320 msgid "Command requires device as argument." msgstr "La commande exige un périphérique comme argument." -#: src/utils_reencrypt.c:2330 +#: src/utils_reencrypt.c:2333 #, c-format msgid "Conflicting versions. Device %s is LUKS1." msgstr "Versions conflictuelles. Le périphérique %s est LUKS1." -#: src/utils_reencrypt.c:2336 +#: src/utils_reencrypt.c:2339 #, c-format msgid "Conflicting versions. Device %s is in LUKS1 reencryption." msgstr "Versions conflictuelles. Le périphérique %s est en cours de rechiffrement LUKS1." -#: src/utils_reencrypt.c:2342 +#: src/utils_reencrypt.c:2345 #, c-format msgid "Conflicting versions. Device %s is LUKS2." msgstr "Versions conflictuelle. Le périphérique %s est LUKS2" -#: src/utils_reencrypt.c:2348 +#: src/utils_reencrypt.c:2351 #, c-format msgid "Conflicting versions. Device %s is in LUKS2 reencryption." msgstr "Versions conflictuelles. Le périphérique %s est en cours de rechiffrement LUKS2." -#: src/utils_reencrypt.c:2354 +#: src/utils_reencrypt.c:2357 msgid "LUKS2 reencryption already initialized. Aborting operation." msgstr "Rechiffrement LUKS2 déjà initialisé. Abandon de l'opération." -#: src/utils_reencrypt.c:2361 +#: src/utils_reencrypt.c:2364 msgid "Device reencryption not in progress." msgstr "Le rechiffrement du périphérique n'est pas en cours." @@ -4960,9 +4964,6 @@ msgstr "Erreur durant l'authentification par clé publique : " #~ msgid "Options --journal-size, --interleave-sectors, --sector-size, --tag-size and --no-wipe can be used only for format action." #~ msgstr "Les options --journal-size, --interleave-sectors, --sector-size, --tag-size et --no-wipe peuvent uniquement être utilisée avec l'action de format." -#~ msgid "Invalid journal size specification." -#~ msgstr "La spécification de la taille du journal est invalide." - #~ msgid "Reencryption block size" #~ msgstr "Taille de bloc de re-chiffrement" From f0bdfd6c17f38577189583e1d54b842d49bc72ad Mon Sep 17 00:00:00 2001 From: Hiroshi Takekawa Date: Sun, 19 Jul 2026 19:51:04 +0200 Subject: [PATCH 184/244] po: update ja.po (from translationproject.org) --- po/ja.po | 628 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 316 insertions(+), 312 deletions(-) diff --git a/po/ja.po b/po/ja.po index 61ab865dc..6f18abbd7 100644 --- a/po/ja.po +++ b/po/ja.po @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.7-rc1\n" +"Project-Id-Version: cryptsetup 2.8.7-rc2\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2026-06-29 21:30+0200\n" -"PO-Revision-Date: 2026-06-30 21:06+0900\n" +"POT-Creation-Date: 2026-07-09 10:46+0200\n" +"PO-Revision-Date: 2026-07-11 23:24+0900\n" "Last-Translator: Hiroshi Takekawa \n" "Language-Team: Japanese \n" "Language: ja\n" @@ -198,10 +198,10 @@ msgid "Failed to rollback LUKS2 metadata in memory." msgstr "メモリ上の LUKS2 メタデータのロールバックに失敗しました。" #: lib/setup.c:896 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 -#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1779 -#: src/cryptsetup.c:1963 src/cryptsetup.c:2018 src/cryptsetup.c:2216 -#: src/cryptsetup.c:2361 src/cryptsetup.c:2639 src/cryptsetup.c:2952 -#: src/cryptsetup.c:3020 src/utils_reencrypt.c:2281 +#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 +#: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 +#: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2954 +#: src/cryptsetup.c:3022 src/utils_reencrypt.c:2284 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." @@ -245,7 +245,7 @@ msgid "Detached metadata device is not supported for this crypt type." msgstr "分離したメタデータデバイスはこの暗号タイプではサポートされていません。" #: lib/setup.c:1642 lib/setup.c:1890 lib/luks2/luks2_reencrypt.c:3035 -#: src/cryptsetup.c:1491 src/cryptsetup.c:3759 +#: src/cryptsetup.c:1492 src/cryptsetup.c:3761 msgid "Unsupported encryption sector size." msgstr "サポートされていない暗号化セクタサイズです。" @@ -567,14 +567,14 @@ msgstr "ボリュームキーを指定されたキーリングからアンリン msgid "Failed to link volume key in user defined keyring." msgstr "ボリュームキーを指定されたキーリングにリンクできません。" -#: lib/setup.c:4556 src/cryptsetup.c:2720 +#: lib/setup.c:4556 src/cryptsetup.c:2722 #, c-format msgid "Volume %s is not suspended." msgstr "ボリューム %s は停止されていません。" -#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1855 -#: src/cryptsetup.c:2259 src/cryptsetup.c:2277 src/utils_reencrypt.c:305 -#: src/utils_reencrypt.c:1966 +#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1856 +#: src/cryptsetup.c:2260 src/cryptsetup.c:2278 src/utils_reencrypt.c:306 +#: src/utils_reencrypt.c:1969 msgid "Volume key does not match the volume." msgstr "ボリュームキーがボリュームに合いません。" @@ -587,8 +587,8 @@ msgstr "新しいキースロットを交換できませんでした。" msgid "Key slot %d is invalid." msgstr "キースロット %d は不正です。" -#: lib/setup.c:4925 src/cryptsetup.c:1976 src/cryptsetup.c:2436 -#: src/cryptsetup.c:3120 src/cryptsetup.c:3180 +#: lib/setup.c:4925 src/cryptsetup.c:1977 src/cryptsetup.c:2437 +#: src/cryptsetup.c:3122 src/cryptsetup.c:3182 #, c-format msgid "Keyslot %d is not active." msgstr "キースロット %d は非アクティブです。" @@ -785,7 +785,7 @@ msgid "Cannot read requested amount of data." msgstr "指定されたサイズのデータを読み込めません。" #: lib/utils_device.c:207 lib/utils_storage_wrappers.c:99 -#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2254 +#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2257 #, c-format msgid "Device %s does not exist or access denied." msgstr "デバイス %s は存在しないかアクセスが拒否されました。" @@ -1128,7 +1128,7 @@ msgstr "LUKS 暗号モード %s は不正です。" msgid "LUKS hash %s is invalid." msgstr "LUKS ハッシュ %s は不正です。" -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1366 +#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 msgid "No known problems detected for LUKS header." msgstr "LUKS ヘッダに既知の不具合は検出されませんでした。" @@ -1148,7 +1148,7 @@ msgstr "LUKS ヘッダのデータへのオフセットは 0 かヘッダサイ #: lib/luks1/keymanage.c:761 lib/luks1/keymanage.c:832 #: lib/luks2/luks2_json_format.c:231 lib/luks2/luks2_json_metadata.c:1261 -#: src/utils_reencrypt.c:701 +#: src/utils_reencrypt.c:703 msgid "Wrong LUKS UUID format provided." msgstr "LUKS UUID の形式が間違っています。" @@ -1673,7 +1673,7 @@ msgstr "dm-crypt セグメントの設定に失敗しました。" msgid "Failed to set dm-linear segment." msgstr "dm-linear セグメントの設定に失敗しました。" -#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:578 +#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:580 msgid "No known cipher specification pattern detected in LUKS2 header." msgstr "LUKS2 ヘッダに既知の暗号スペックパターンを検出できませんでした。" @@ -2136,8 +2136,8 @@ msgstr "キースロットの暗号化パラメータは LUKS2 デバイスで msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encryption." msgstr "キースロットの暗号化パラメータは LUKS2 キースロット暗号化と互換性がありません。" -#: src/cryptsetup.c:150 src/cryptsetup.c:1179 src/cryptsetup.c:1544 -#: src/utils_reencrypt.c:1887 src/utils_reencrypt_luks1.c:502 +#: src/cryptsetup.c:150 src/cryptsetup.c:1180 src/cryptsetup.c:1545 +#: src/utils_reencrypt.c:1890 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." msgstr "未知の暗号スペックです。" @@ -2164,8 +2164,8 @@ msgstr "警告: --hash パラメータは plain モードでキーファイル msgid "WARNING: The --keyfile-size option is being ignored, the read size is the same as the encryption key size.\n" msgstr "警告: --keyfile-size オプションは無視されて、読み込みサイズは暗号鍵のサイズと同じになります。\n" -#: src/cryptsetup.c:226 src/cryptsetup.c:1374 src/cryptsetup.c:1597 -#: src/integritysetup.c:188 src/utils_reencrypt.c:2138 +#: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 +#: src/integritysetup.c:189 src/utils_reencrypt.c:2141 #, c-format msgid "Blkid scan failed for %s." msgstr "%s の Blkid スキャンが失敗しました。" @@ -2175,11 +2175,11 @@ msgstr "%s の Blkid スキャンが失敗しました。" msgid "Detected device signature(s) on %s. Proceeding further may damage existing data." msgstr "%s にデバイス署名が検出されました。既にあるデータを破壊しかねません。" -#: src/cryptsetup.c:238 src/cryptsetup.c:1260 src/cryptsetup.c:1308 -#: src/cryptsetup.c:1381 src/cryptsetup.c:1521 src/cryptsetup.c:1609 -#: src/cryptsetup.c:2494 src/cryptsetup.c:2923 src/integritysetup.c:178 -#: src/utils_reencrypt.c:111 src/utils_reencrypt.c:457 -#: src/utils_reencrypt.c:925 +#: src/cryptsetup.c:238 src/cryptsetup.c:1261 src/cryptsetup.c:1309 +#: src/cryptsetup.c:1382 src/cryptsetup.c:1522 src/cryptsetup.c:1610 +#: src/cryptsetup.c:2495 src/cryptsetup.c:2925 src/integritysetup.c:179 +#: src/utils_reencrypt.c:111 src/utils_reencrypt.c:459 +#: src/utils_reencrypt.c:927 msgid "Operation aborted.\n" msgstr "中止されました。\n" @@ -2187,36 +2187,36 @@ msgstr "中止されました。\n" msgid "Option --key-file is required." msgstr "オプション --key-file が必要です。" -#: src/cryptsetup.c:377 +#: src/cryptsetup.c:378 msgid "Enter VeraCrypt PIM: " msgstr "VeraCrypt PIM を入力してください: " -#: src/cryptsetup.c:386 +#: src/cryptsetup.c:387 msgid "Invalid PIM value: parse error." msgstr "不正な PIM: 解釈できません。" -#: src/cryptsetup.c:389 +#: src/cryptsetup.c:390 msgid "Invalid PIM value: 0." msgstr "不正 PIM の値で 0 です。" -#: src/cryptsetup.c:392 +#: src/cryptsetup.c:393 msgid "Invalid PIM value: outside of range." msgstr "不正な PIM の値: 範囲外です。" -#: src/cryptsetup.c:415 +#: src/cryptsetup.c:416 msgid "No device header detected with this passphrase." msgstr "このパスフレーズではデバイスヘッダが検出されませんでした。" -#: src/cryptsetup.c:492 src/cryptsetup.c:677 +#: src/cryptsetup.c:493 src/cryptsetup.c:678 #, c-format msgid "Device %s is not a valid BITLK device." msgstr "デバイス %s は有効な BITLK デバイスではありません。" -#: src/cryptsetup.c:500 +#: src/cryptsetup.c:501 msgid "Cannot determine volume key size for BITLK, please use --key-size option." msgstr "BITLK のボリュームキーサイズが決定できないので、--key-size を使ってください。" -#: src/cryptsetup.c:546 +#: src/cryptsetup.c:547 msgid "" "Header dump with volume key is sensitive information\n" "which allows access to encrypted partition without passphrase.\n" @@ -2226,7 +2226,7 @@ msgstr "" "暗号化されたパーティションにパスフレーズなしでアクセス可能にます。\n" "このダンプは暗号化された安全な所に保存してください。" -#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2519 +#: src/cryptsetup.c:614 src/cryptsetup.c:700 src/cryptsetup.c:2520 msgid "" "The header dump with volume key is sensitive information\n" "that allows access to encrypted partition without a passphrase.\n" @@ -2236,88 +2236,88 @@ msgstr "" "暗号化されたパーティションにパスフレーズなしでアクセス可能になります。\n" "このダンプは暗号化された安全な所に保存してください。" -#: src/cryptsetup.c:754 src/cryptsetup.c:786 +#: src/cryptsetup.c:755 src/cryptsetup.c:787 #, c-format msgid "Device %s is not a valid FVAULT2 device." msgstr "デバイス %s は有効な FVAULT2 デバイスではありません。" -#: src/cryptsetup.c:794 +#: src/cryptsetup.c:795 msgid "Cannot determine volume key size for FVAULT2, please use --key-size option." msgstr "FVAULT2 のボリュームキーサイズが決定できないので、--key-size を使ってください。" -#: src/cryptsetup.c:848 src/veritysetup.c:317 src/integritysetup.c:416 +#: src/cryptsetup.c:849 src/veritysetup.c:317 src/integritysetup.c:422 #, c-format msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "デバイス %s はまたアクティブで後から削除される予定になっています。.\n" -#: src/cryptsetup.c:881 src/cryptsetup.c:1807 src/cryptsetup.c:2081 -#: src/cryptsetup.c:2228 src/cryptsetup.c:2647 src/cryptsetup.c:2728 -#: src/cryptsetup.c:3261 +#: src/cryptsetup.c:882 src/cryptsetup.c:1808 src/cryptsetup.c:2082 +#: src/cryptsetup.c:2229 src/cryptsetup.c:2648 src/cryptsetup.c:2730 +#: src/cryptsetup.c:3263 #, c-format msgid "Failed to set external tokens path %s." msgstr "外部トークンパス %s の設定に失敗しました。" -#: src/cryptsetup.c:890 +#: src/cryptsetup.c:891 msgid "Resize of active device requires volume key in keyring but --disable-keyring option is set." msgstr "アクティブなデバイスをリサイズするにはボリュームキーがキーリングに必要ですが、--disable-keyring が指定されています。" -#: src/cryptsetup.c:1057 +#: src/cryptsetup.c:1058 msgid "Benchmark interrupted." msgstr "ベンチマークが中止されました。" -#: src/cryptsetup.c:1078 +#: src/cryptsetup.c:1079 #, c-format msgid "PBKDF2-%-9s N/A\n" msgstr "PBKDF2-%-9s 計測値なし\n" -#: src/cryptsetup.c:1080 +#: src/cryptsetup.c:1081 #, c-format msgid "PBKDF2-%-9s %7u iterations per second for %zu-bit key\n" msgstr "PBKDF2-%-9s %7u 回/秒 (%zu ビットの鍵)\n" -#: src/cryptsetup.c:1094 +#: src/cryptsetup.c:1095 #, c-format msgid "%-10s N/A\n" msgstr "%-10s 計測値なし\n" -#: src/cryptsetup.c:1096 +#: src/cryptsetup.c:1097 #, c-format msgid "%-10s %4u iterations, %5u memory, %1u parallel threads (CPUs) for %zu-bit key (requested %u ms time)\n" msgstr "%-10s %4u 回, %5u KB使用, %1u スレッド (%zu のビットの鍵) (%u ms 計測)\n" -#: src/cryptsetup.c:1120 +#: src/cryptsetup.c:1121 msgid "Result of benchmark is not reliable." msgstr "ベンチマークの結果は信頼できません。" -#: src/cryptsetup.c:1171 +#: src/cryptsetup.c:1172 msgid "# Tests are approximate using memory only (no storage IO).\n" msgstr "# テストはストレージI/Oがなくメモリ上のもののため目安です。\n" #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1196 +#: src/cryptsetup.c:1197 #, c-format msgid "#%*s Algorithm | Key | Encryption | Decryption\n" msgstr "#%*s Algorithm | キー | 暗号化 | 復号化\n" -#: src/cryptsetup.c:1204 +#: src/cryptsetup.c:1205 #, c-format msgid "Cipher %s (with %i bits key) is not available." msgstr "暗号 %s (キーサイズ %i ビット) は利用できません。" #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1225 +#: src/cryptsetup.c:1226 msgid "# Algorithm | Key | Encryption | Decryption\n" msgstr "# Algorithm | キー | 暗号化 | 復号化\n" -#: src/cryptsetup.c:1238 +#: src/cryptsetup.c:1239 msgid "N/A" msgstr "計測値なし" -#: src/cryptsetup.c:1241 +#: src/cryptsetup.c:1242 msgid "# Cipher speed test is not available.\n" msgstr "# 暗号スピードテストは利用できません。\n" -#: src/cryptsetup.c:1257 +#: src/cryptsetup.c:1258 msgid "" "Unprotected LUKS2 reencryption metadata detected. Please verify the reencryption operation is desirable (see luksDump output)\n" "and continue (upgrade metadata) only if you acknowledge the operation as genuine." @@ -2325,27 +2325,27 @@ msgstr "" "保護されていない LUKS2 再暗号化メタデータが検出されました。再暗号化操作が望ましいものか確認してください。(luksDump の出力を見てください)\n" "そのうえで、この操作が問題ないと確認できたら継続(メタデータのアップグレード)してください。" -#: src/cryptsetup.c:1263 +#: src/cryptsetup.c:1264 msgid "Enter passphrase to protect and upgrade reencryption metadata: " msgstr "再暗号化メタデータの保護とアップグレードのためのパスフレーズを入力してください: " -#: src/cryptsetup.c:1307 +#: src/cryptsetup.c:1308 msgid "Really proceed with LUKS2 reencryption recovery?" msgstr "本当に LUKS2 再暗号化リカバリを行いますか?" -#: src/cryptsetup.c:1316 +#: src/cryptsetup.c:1317 msgid "Enter passphrase to verify reencryption metadata digest: " msgstr "再暗号化メタデータダイジェストを検証するためのパスフレーズを入力してください: " -#: src/cryptsetup.c:1318 +#: src/cryptsetup.c:1319 msgid "Enter passphrase for reencryption recovery: " msgstr "再暗号化のリカバリのためのパスフレーズを入力してください: " -#: src/cryptsetup.c:1380 +#: src/cryptsetup.c:1381 msgid "Really try to repair LUKS device header?" msgstr "本当に LUKS デバイスヘッダの復元を試みていいですか?" -#: src/cryptsetup.c:1408 src/integritysetup.c:76 src/integritysetup.c:244 +#: src/cryptsetup.c:1409 src/integritysetup.c:76 src/integritysetup.c:246 msgid "" "\n" "Wipe interrupted." @@ -2353,7 +2353,7 @@ msgstr "" "\n" "ワイプが中断されました。" -#: src/cryptsetup.c:1413 src/integritysetup.c:81 src/integritysetup.c:289 +#: src/cryptsetup.c:1414 src/integritysetup.c:81 src/integritysetup.c:291 msgid "" "Wiping device to initialize integrity checksum.\n" "You can interrupt this by pressing CTRL+c (rest of not wiped device will contain invalid checksum).\n" @@ -2361,167 +2361,167 @@ msgstr "" "整合性チェックサムの初期化のためにデバイスのデータを消去しています。\n" "CTRL+c で中止できます (初期化されなかったデバイスのチェックサムは正しくなくなります)。\n" -#: src/cryptsetup.c:1435 src/integritysetup.c:103 +#: src/cryptsetup.c:1436 src/integritysetup.c:103 #, c-format msgid "Cannot deactivate temporary device %s." msgstr "一時的デバイス %s を非アクティブにできません。" -#: src/cryptsetup.c:1483 +#: src/cryptsetup.c:1484 msgid "OPAL hw-only encryption does not support --cipher and --key-size, options ignored." msgstr "OPAL hw-only 暗号化は --cipher や --key-size をサポートしないため、無視されました。" -#: src/cryptsetup.c:1496 +#: src/cryptsetup.c:1497 msgid "Integrity option can be used only for LUKS2 format." msgstr "整合性オプションは LUKS2 形式でしか使えません。" -#: src/cryptsetup.c:1501 src/cryptsetup.c:1581 +#: src/cryptsetup.c:1502 src/cryptsetup.c:1582 msgid "Unsupported LUKS2 metadata size options." msgstr "サポートされていない LUKS2 メタデータのサイズオプションです。" -#: src/cryptsetup.c:1506 +#: src/cryptsetup.c:1507 msgid "OPAL is supported only for LUKS2 format." msgstr "OPAL は LUKS2 フォーマットでしかサポートされていません。" -#: src/cryptsetup.c:1511 +#: src/cryptsetup.c:1512 msgid "Inline hw tags are supported only for LUKS2 format." msgstr "インライン hw タグは LUKS2 フォーマットでしかサポートされていません。" -#: src/cryptsetup.c:1520 +#: src/cryptsetup.c:1521 msgid "Header file does not exist, do you want to create it?" msgstr "ヘッダファイルがありません。作成しますか?" -#: src/cryptsetup.c:1528 +#: src/cryptsetup.c:1529 #, c-format msgid "Cannot create header file %s." msgstr "ヘッダファイル %s を作成できません。" -#: src/cryptsetup.c:1554 src/integritysetup.c:126 src/integritysetup.c:141 -#: src/integritysetup.c:150 src/integritysetup.c:328 src/integritysetup.c:336 -#: src/integritysetup.c:346 +#: src/cryptsetup.c:1555 src/integritysetup.c:127 src/integritysetup.c:142 +#: src/integritysetup.c:151 src/integritysetup.c:330 src/integritysetup.c:338 +#: src/integritysetup.c:348 msgid "No known integrity specification pattern detected." msgstr "サポートしている整合性方式が検出されませんでした。" -#: src/cryptsetup.c:1556 +#: src/cryptsetup.c:1557 msgid "Cannot use specified integrity key size." msgstr "指定されたジャーナル整合性キーのサイズが使えません。" -#: src/cryptsetup.c:1574 +#: src/cryptsetup.c:1575 #, c-format msgid "Cannot use %s as on-disk header." msgstr "%s を on-disk ヘッダとして使えません。" -#: src/cryptsetup.c:1603 src/integritysetup.c:172 +#: src/cryptsetup.c:1604 src/integritysetup.c:173 #, c-format msgid "This will overwrite data on %s irrevocably." msgstr "%s のデータを上書きします。戻せません。" -#: src/cryptsetup.c:1640 +#: src/cryptsetup.c:1641 msgid "OPAL Admin password cannot be empty." msgstr "OPAL 管理者パスワードは空ではいけません。" -#: src/cryptsetup.c:1654 src/cryptsetup.c:2098 src/cryptsetup.c:2241 -#: src/cryptsetup.c:2376 src/cryptsetup.c:2442 src/utils_reencrypt_luks1.c:428 +#: src/cryptsetup.c:1655 src/cryptsetup.c:2099 src/cryptsetup.c:2242 +#: src/cryptsetup.c:2377 src/cryptsetup.c:2443 src/utils_reencrypt_luks1.c:428 msgid "Failed to set pbkdf parameters." msgstr "pbkdf パラメータを設定できません。" -#: src/cryptsetup.c:1785 +#: src/cryptsetup.c:1786 msgid "Reduced data offset is allowed only for detached LUKS header." msgstr "分離された LUKS ヘッダでのみ少ないデータオフセットが使えます。" -#: src/cryptsetup.c:1792 +#: src/cryptsetup.c:1793 #, c-format msgid "LUKS file container %s is too small for activation, there is no remaining space for data." msgstr "LUKS ファイルコンテナ %s がアクティベートするには小さすぎます。データ用の領域に空きがありません。" -#: src/cryptsetup.c:1834 src/cryptsetup.c:2247 src/utils_reencrypt.c:277 -#: src/utils_reencrypt.c:369 src/utils_reencrypt.c:1907 +#: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:278 +#: src/utils_reencrypt.c:371 src/utils_reencrypt.c:1910 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "キースロットのない LUKS のボリュームキーサイズが決定できないので、--key-size を使ってください。" -#: src/cryptsetup.c:1853 src/utils_reencrypt.c:303 +#: src/cryptsetup.c:1854 src/utils_reencrypt.c:304 msgid "Device requires two volume keys." msgstr "デバイスには2つのボリュームキーが必要です。" -#: src/cryptsetup.c:1888 +#: src/cryptsetup.c:1889 msgid "Some specified activation parameters were ignored with OPAL hw-only encryption." msgstr "いくつかの指定されたアクティベーションパラメータは OPAL hw-only 暗号化では無視されました。" -#: src/cryptsetup.c:1893 +#: src/cryptsetup.c:1894 msgid "Device activated but cannot make flags persistent." msgstr "デバイスはアクティベートされましたが、フラグを恒常的なものにできません。" -#: src/cryptsetup.c:1973 src/cryptsetup.c:2041 +#: src/cryptsetup.c:1974 src/cryptsetup.c:2042 #, c-format msgid "Keyslot %d is selected for deletion." msgstr "キースロット %d は削除対象として選択されました。" -#: src/cryptsetup.c:1985 src/cryptsetup.c:2045 +#: src/cryptsetup.c:1986 src/cryptsetup.c:2046 msgid "This is the last keyslot. Device will become unusable after purging this key." msgstr "これは最後のキースロットです。このキーがなくなるとデバイスは使用不能になります。" -#: src/cryptsetup.c:1986 +#: src/cryptsetup.c:1987 msgid "Enter any remaining passphrase: " msgstr "残っているパスフレーズを入力してください: " -#: src/cryptsetup.c:1987 src/cryptsetup.c:2047 +#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 msgid "Operation aborted, the keyslot was NOT wiped.\n" msgstr "操作は中止されました。キースロットは消去されていません。\n" -#: src/cryptsetup.c:2023 +#: src/cryptsetup.c:2024 msgid "Enter passphrase to be deleted: " msgstr "削除するキーのパスフレーズを入力してください: " -#: src/cryptsetup.c:2073 src/cryptsetup.c:2425 src/cryptsetup.c:3085 -#: src/cryptsetup.c:3252 +#: src/cryptsetup.c:2074 src/cryptsetup.c:2426 src/cryptsetup.c:3087 +#: src/cryptsetup.c:3254 #, c-format msgid "Device %s is not a valid LUKS2 device." msgstr "デバイス %s は有効な LUKS2 デバイスではありません。" -#: src/cryptsetup.c:2112 src/cryptsetup.c:2311 +#: src/cryptsetup.c:2113 src/cryptsetup.c:2312 msgid "Enter new passphrase for key slot: " msgstr "キースロットの新しいパスフレーズを入力してください: " -#: src/cryptsetup.c:2146 src/utils_luks.c:342 +#: src/cryptsetup.c:2147 src/utils_luks.c:342 #, c-format msgid "Enter token PIN: " msgstr "トークンPINを入力してください: " -#: src/cryptsetup.c:2148 src/utils_luks.c:344 +#: src/cryptsetup.c:2149 src/utils_luks.c:344 #, c-format msgid "Enter token %d PIN: " msgstr "トークン %d PINを入力してください: " -#: src/cryptsetup.c:2207 +#: src/cryptsetup.c:2208 msgid "WARNING: The --key-slot parameter is used for new keyslot number.\n" msgstr "警告: --key-slot パラメータは新しいキースロット番号に使われます。\n" -#: src/cryptsetup.c:2284 src/utils_reencrypt_luks1.c:1094 +#: src/cryptsetup.c:2285 src/utils_reencrypt_luks1.c:1094 #, c-format msgid "Enter any existing passphrase: " msgstr "有効なパスフレーズをどれか入力してください: " -#: src/cryptsetup.c:2380 +#: src/cryptsetup.c:2381 msgid "Enter passphrase to be changed: " msgstr "変更するキーのパスフレーズを入力してください: " -#: src/cryptsetup.c:2396 src/utils_reencrypt_luks1.c:1080 +#: src/cryptsetup.c:2397 src/utils_reencrypt_luks1.c:1080 msgid "Enter new passphrase: " msgstr "新しいキーのパスフレーズを入力してください: " -#: src/cryptsetup.c:2446 +#: src/cryptsetup.c:2447 msgid "Enter passphrase for keyslot to be converted: " msgstr "変換されるキースロットのパスフレーズを入力してください: " -#: src/cryptsetup.c:2470 +#: src/cryptsetup.c:2471 msgid "Only one device argument for isLuks operation is supported." msgstr "isLuks は一つのデバイス引数しかサポートしていません。" -#: src/cryptsetup.c:2575 +#: src/cryptsetup.c:2576 #, c-format msgid "Keyslot %d does not contain unbound key." msgstr "キースロット %d は unbound キーを含んでいません。" -#: src/cryptsetup.c:2580 +#: src/cryptsetup.c:2581 msgid "" "The header dump with unbound key is sensitive information.\n" "This dump should be stored encrypted in a safe place." @@ -2529,52 +2529,52 @@ msgstr "" "unbound キーを使ったヘッダダンプは取り扱いに注意すべき情報です。\n" "このダンプは暗号化された安全な所に保存してください。" -#: src/cryptsetup.c:2675 src/cryptsetup.c:2711 +#: src/cryptsetup.c:2676 src/cryptsetup.c:2713 #, c-format msgid "%s is not active %s device name." msgstr "%s はアクティブな %s デバイスではありません。" -#: src/cryptsetup.c:2706 +#: src/cryptsetup.c:2708 #, c-format msgid "%s is not active LUKS device name or header is missing." msgstr "%s はアクティブな LUKS デバイス名ではないか、ヘッダがありません。" -#: src/cryptsetup.c:2783 src/cryptsetup.c:2802 +#: src/cryptsetup.c:2785 src/cryptsetup.c:2804 msgid "Option --header-backup-file is required." msgstr "オプション --header-backup-file が必要です。" -#: src/cryptsetup.c:2833 +#: src/cryptsetup.c:2835 #, c-format msgid "%s is not cryptsetup managed device." msgstr "%s は cryptsetup で管理されているデバイスではありません。" -#: src/cryptsetup.c:2844 +#: src/cryptsetup.c:2846 #, c-format msgid "Refresh is not supported for device type %s" msgstr "リフレッシュはデバイスタイプ %s ではサポートされていません。" -#: src/cryptsetup.c:2894 +#: src/cryptsetup.c:2896 #, c-format msgid "Unrecognized metadata device type %s." msgstr "%s は認識できないメタデータデータタイプです。" -#: src/cryptsetup.c:2896 +#: src/cryptsetup.c:2898 msgid "Command requires device and mapped name as arguments." msgstr "コマンドはデバイスとマップされた名前を引数として必要とします。" -#: src/cryptsetup.c:2914 +#: src/cryptsetup.c:2916 msgid "Enter OPAL PSID: " msgstr "OPAL PSID を入力してください: " -#: src/cryptsetup.c:2914 +#: src/cryptsetup.c:2916 msgid "Enter OPAL Admin password: " msgstr "OPAL 管理者パスワードを入力してください: " -#: src/cryptsetup.c:2922 +#: src/cryptsetup.c:2924 msgid "WARNING: WHOLE disk will be factory reset and all data will be lost! Continue?" msgstr "警告: ディスク「全体」が出荷状態にリセットされ、データは全て消失します!続けますか?" -#: src/cryptsetup.c:2965 +#: src/cryptsetup.c:2967 #, c-format msgid "" "This operation will erase all keyslots on device %s.\n" @@ -2583,363 +2583,363 @@ msgstr "" "この処理はデバイス %s の全てのキースロットを消去します。\n" "デバイスのデータは使用できなくなります。" -#: src/cryptsetup.c:2972 +#: src/cryptsetup.c:2974 msgid "Operation aborted, keyslots were NOT wiped.\n" msgstr "処理は中止されました。キースロットは消去されません。\n" -#: src/cryptsetup.c:3011 +#: src/cryptsetup.c:3013 msgid "Invalid LUKS type, only luks1 and luks2 are supported." msgstr "不正な LUKS タイプです。luks1 と luks2 しかサポートしていません。" -#: src/cryptsetup.c:3027 +#: src/cryptsetup.c:3029 #, c-format msgid "Device is already %s type." msgstr "デバイスは既にタイプ %s です。" -#: src/cryptsetup.c:3034 +#: src/cryptsetup.c:3036 #, c-format msgid "This operation will convert %s to %s format.\n" msgstr "この処理は %s から %s フォーマットに変換します。\n" -#: src/cryptsetup.c:3037 +#: src/cryptsetup.c:3039 msgid "Operation aborted, device was NOT converted.\n" msgstr "処理は中止されました。デバイスは変換されませんでした。\n" -#: src/cryptsetup.c:3077 +#: src/cryptsetup.c:3079 msgid "Option --priority, --label or --subsystem is missing." msgstr "オプション --priority, --label か --subsystem がありません。" -#: src/cryptsetup.c:3111 src/cryptsetup.c:3151 src/cryptsetup.c:3171 +#: src/cryptsetup.c:3113 src/cryptsetup.c:3153 src/cryptsetup.c:3173 #, c-format msgid "Token %d is invalid." msgstr "トークン %d は不正です。" -#: src/cryptsetup.c:3114 src/cryptsetup.c:3174 +#: src/cryptsetup.c:3116 src/cryptsetup.c:3176 #, c-format msgid "Token %d in use." msgstr "トークン %d は使用中です。" -#: src/cryptsetup.c:3126 +#: src/cryptsetup.c:3128 #, c-format msgid "Failed to add luks2-keyring token %d." msgstr "luks2-キーリングトークン %d を追加できませんでした。" -#: src/cryptsetup.c:3137 src/cryptsetup.c:3200 +#: src/cryptsetup.c:3139 src/cryptsetup.c:3202 #, c-format msgid "Failed to assign token %d to keyslot %d." msgstr "トークン %d をキースロット %d に割りあてられませんでした。" -#: src/cryptsetup.c:3154 +#: src/cryptsetup.c:3156 #, c-format msgid "Token %d is not in use." msgstr "トークン %d は使われていません。" -#: src/cryptsetup.c:3191 +#: src/cryptsetup.c:3193 msgid "Failed to import token from file." msgstr "ファイルからトークンをインポートできません。" -#: src/cryptsetup.c:3216 +#: src/cryptsetup.c:3218 #, c-format msgid "Failed to get token %d for export." msgstr "トークン %d をエクスポートのために取得できませんでした。" -#: src/cryptsetup.c:3229 +#: src/cryptsetup.c:3231 #, c-format msgid "Token %d is not assigned to keyslot %d." msgstr "トークン %d をキースロット %d に割りあてられませんでした。" -#: src/cryptsetup.c:3231 src/cryptsetup.c:3238 +#: src/cryptsetup.c:3233 src/cryptsetup.c:3240 #, c-format msgid "Failed to unassign token %d from keyslot %d." msgstr "トークン %d をキースロット %d の割り当てから解除できませんでした。" -#: src/cryptsetup.c:3297 +#: src/cryptsetup.c:3299 msgid "Option --tcrypt-hidden, --tcrypt-system or --tcrypt-backup is supported only for TCRYPT device." msgstr "--tcrypt-hidden と --tcrypt-system と --tcrypt-backup は TCRYPT デバイスしか使えません。" -#: src/cryptsetup.c:3300 +#: src/cryptsetup.c:3302 msgid "Option --veracrypt or --disable-veracrypt is supported only for TCRYPT device type." msgstr "--veracrypt や --disable-veracrypt は TCRYPT デバイスでしか使えません。" -#: src/cryptsetup.c:3303 +#: src/cryptsetup.c:3305 msgid "Option --veracrypt-pim is supported only for VeraCrypt compatible devices." msgstr "--veracrypt-pim は VeraCrypt 互換デバイスにしか使えません。" -#: src/cryptsetup.c:3307 +#: src/cryptsetup.c:3309 msgid "Option --veracrypt-query-pim is supported only for VeraCrypt compatible devices." msgstr "--veracrypt-query-pim は VeraCrypt 互換デバイスにしか使えません。" -#: src/cryptsetup.c:3309 +#: src/cryptsetup.c:3311 msgid "The options --veracrypt-pim and --veracrypt-query-pim are mutually exclusive." msgstr "--veracrypt-pim と --veracrypt-query-pim はどちらかしか使えません。" -#: src/cryptsetup.c:3318 +#: src/cryptsetup.c:3320 msgid "Option --persistent is not allowed with --test-passphrase." msgstr "--persistent は --test-passphrase と一緒には使えません。" -#: src/cryptsetup.c:3321 +#: src/cryptsetup.c:3323 msgid "Options --refresh and --test-passphrase are mutually exclusive." msgstr "--refresh と --test-passphrase は同時には使えません。" -#: src/cryptsetup.c:3324 +#: src/cryptsetup.c:3326 msgid "Option --shared is allowed only for open of plain device." msgstr "--shared は plain デバイスの open にしか使えません。" -#: src/cryptsetup.c:3327 +#: src/cryptsetup.c:3329 msgid "Option --skip is supported only for open of plain and loopaes devices." msgstr "--skip は plain か loopaes デバイスの open にしか使えません。" -#: src/cryptsetup.c:3330 +#: src/cryptsetup.c:3332 msgid "Option --offset with open action is only supported for plain and loopaes devices." msgstr "--offset は plain か loopaes デバイスの open にしか使えません。" -#: src/cryptsetup.c:3333 +#: src/cryptsetup.c:3335 msgid "Option --tcrypt-hidden cannot be combined with --allow-discards." msgstr "--tcrypt-hidden は --allow-discards と一緒に使えません。" -#: src/cryptsetup.c:3337 +#: src/cryptsetup.c:3339 msgid "Sector size option with open action is supported only for plain devices." msgstr "オープン時のセクタサイズオプションは plain デバイスでしかサポートされていません。" -#: src/cryptsetup.c:3341 +#: src/cryptsetup.c:3343 msgid "Large IV sectors option is supported only for opening plain type device with sector size larger than 512 bytes." msgstr "大きな IV セクタオプションは plain タイプでセクタサイズが 512 バイトより大きいものをオープンする時しかサポートしていません。" -#: src/cryptsetup.c:3346 +#: src/cryptsetup.c:3348 msgid "Option --test-passphrase is allowed only for open of LUKS, TCRYPT, BITLK and FVAULT2 devices." msgstr "--test-passphrase は LUKS か TCRYPT か BITLK か FVAULT2 デバイスの open にしか使えません。." -#: src/cryptsetup.c:3349 src/cryptsetup.c:3379 +#: src/cryptsetup.c:3351 src/cryptsetup.c:3381 msgid "Options --device-size and --size cannot be combined." msgstr "--device-size と --size は一緒に使えません。" -#: src/cryptsetup.c:3352 +#: src/cryptsetup.c:3354 msgid "Option --unbound is allowed only for open of luks device." msgstr "オプション --unbound は luks デバイスの open にしか使えません。" -#: src/cryptsetup.c:3355 +#: src/cryptsetup.c:3357 msgid "Option --unbound cannot be used without --test-passphrase." msgstr "オプション --unbound は --test-passphrase がないと使えません。" -#: src/cryptsetup.c:3359 +#: src/cryptsetup.c:3361 msgid "Option --volume-key-keyring cannot be combined with --hash or --volume-key-file." msgstr "--volume-key-keyring オプションは --hash や --volume-key-file と一緒には使えません。" -#: src/cryptsetup.c:3362 +#: src/cryptsetup.c:3364 msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "--volume-key-file オプションは対応する --key-size オプションとペアになる必要があります。" -#: src/cryptsetup.c:3371 src/veritysetup.c:673 src/integritysetup.c:787 +#: src/cryptsetup.c:3373 src/veritysetup.c:673 src/integritysetup.c:793 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "オプション --cancel-deferred と --deferred は同時に使えません。" -#: src/cryptsetup.c:3387 +#: src/cryptsetup.c:3389 msgid "Option --active-name can be set only for LUKS2 device." msgstr "オプション --active-nameは LUKS2 デバイスでしか設定できません。" -#: src/cryptsetup.c:3390 +#: src/cryptsetup.c:3392 msgid "Options --active-name and --force-offline-reencrypt cannot be combined." msgstr "オプション --active-name と --force-offline-reencrypt は一緒に使えません。" -#: src/cryptsetup.c:3393 +#: src/cryptsetup.c:3395 msgid "Options --new-volume-key-file and --keep-key cannot be combined." msgstr "--new-volume-key-file オプションと --keep-key は一緒に使えません。" -#: src/cryptsetup.c:3396 +#: src/cryptsetup.c:3398 msgid "Options --new-volume-key-keyring and --keep-key cannot be combined." msgstr "--new-volume-key-keyring オプションと --keep-key は一緒に使えません。" -#: src/cryptsetup.c:3404 src/cryptsetup.c:3434 +#: src/cryptsetup.c:3406 src/cryptsetup.c:3436 msgid "Keyslot specification is required." msgstr "キースロットの指定が必要です。" -#: src/cryptsetup.c:3412 +#: src/cryptsetup.c:3414 msgid "Options --align-payload and --offset cannot be combined." msgstr "--align-payload と --offset は一緒に使えません。" -#: src/cryptsetup.c:3415 +#: src/cryptsetup.c:3417 msgid "Option --integrity-no-wipe can be used only for format action with integrity extension." msgstr "--integrity-no-wipe は format で整合性拡張付きの時しか使えません。" -#: src/cryptsetup.c:3418 +#: src/cryptsetup.c:3420 msgid "Only one of --use-[u]random options is allowed." msgstr "--use-[u]random は一つしか使えません。" -#: src/cryptsetup.c:3426 +#: src/cryptsetup.c:3428 msgid "Key size is required with --unbound option." msgstr "--unbound にはキーサイズが必要です。" -#: src/cryptsetup.c:3446 +#: src/cryptsetup.c:3448 msgid "Invalid token action." msgstr "不正なトークンアクションです。" -#: src/cryptsetup.c:3449 +#: src/cryptsetup.c:3451 msgid "--key-description parameter is mandatory for token add action." msgstr "--key-description はトークン追加には必須です。" -#: src/cryptsetup.c:3453 src/cryptsetup.c:3466 +#: src/cryptsetup.c:3455 src/cryptsetup.c:3468 msgid "Action requires specific token. Use --token-id parameter." msgstr "トークンを必要としています。--token-id を使用してください。" -#: src/cryptsetup.c:3457 +#: src/cryptsetup.c:3459 msgid "Option --unbound is valid only with token add action." msgstr "オプション --unbound はトークンの追加にしか使えません。" -#: src/cryptsetup.c:3459 +#: src/cryptsetup.c:3461 msgid "Options --key-slot and --unbound cannot be combined." msgstr "--key-slot と --unbound は一緒に使えません。" -#: src/cryptsetup.c:3464 +#: src/cryptsetup.c:3466 msgid "Action requires specific keyslot. Use --key-slot parameter." msgstr "特定のキースロットを必要としています。--key-slot を使用してください。" -#: src/cryptsetup.c:3480 +#: src/cryptsetup.c:3482 msgid " [--type ] []" msgstr "<デバイス> [--type <タイプ>] [<名前>]" -#: src/cryptsetup.c:3480 src/veritysetup.c:487 src/integritysetup.c:554 +#: src/cryptsetup.c:3482 src/veritysetup.c:487 src/integritysetup.c:560 msgid "open device as " msgstr "デバイスを <名前> としてオープン" -#: src/cryptsetup.c:3481 src/cryptsetup.c:3482 src/cryptsetup.c:3483 -#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:555 -#: src/integritysetup.c:556 src/integritysetup.c:558 +#: src/cryptsetup.c:3483 src/cryptsetup.c:3484 src/cryptsetup.c:3485 +#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:561 +#: src/integritysetup.c:562 src/integritysetup.c:564 msgid "" msgstr "<名前>" -#: src/cryptsetup.c:3481 src/veritysetup.c:488 src/integritysetup.c:555 +#: src/cryptsetup.c:3483 src/veritysetup.c:488 src/integritysetup.c:561 msgid "close device (remove mapping)" msgstr "デバイスをクローズします (マッピングを削除します)" -#: src/cryptsetup.c:3482 src/integritysetup.c:558 +#: src/cryptsetup.c:3484 src/integritysetup.c:564 msgid "resize active device" msgstr "アクティブデバイスをリサイズ" -#: src/cryptsetup.c:3483 +#: src/cryptsetup.c:3485 msgid "show device status" msgstr "デバイスステータスを表示" -#: src/cryptsetup.c:3484 +#: src/cryptsetup.c:3486 msgid "[--cipher ]" msgstr "[--cipher <暗号>]" -#: src/cryptsetup.c:3484 +#: src/cryptsetup.c:3486 msgid "benchmark cipher" msgstr "暗号ベンチマーク" -#: src/cryptsetup.c:3485 src/cryptsetup.c:3486 src/cryptsetup.c:3487 -#: src/cryptsetup.c:3488 src/cryptsetup.c:3489 src/cryptsetup.c:3496 -#: src/cryptsetup.c:3497 src/cryptsetup.c:3498 src/cryptsetup.c:3499 -#: src/cryptsetup.c:3500 src/cryptsetup.c:3501 src/cryptsetup.c:3502 -#: src/cryptsetup.c:3503 src/cryptsetup.c:3504 src/cryptsetup.c:3505 +#: src/cryptsetup.c:3487 src/cryptsetup.c:3488 src/cryptsetup.c:3489 +#: src/cryptsetup.c:3490 src/cryptsetup.c:3491 src/cryptsetup.c:3498 +#: src/cryptsetup.c:3499 src/cryptsetup.c:3500 src/cryptsetup.c:3501 +#: src/cryptsetup.c:3502 src/cryptsetup.c:3503 src/cryptsetup.c:3504 +#: src/cryptsetup.c:3505 src/cryptsetup.c:3506 src/cryptsetup.c:3507 msgid "" msgstr "<デバイス>" -#: src/cryptsetup.c:3485 +#: src/cryptsetup.c:3487 msgid "try to repair on-disk metadata" msgstr "on-disk メタデータを修復しようとしています" -#: src/cryptsetup.c:3486 +#: src/cryptsetup.c:3488 msgid "reencrypt LUKS2 device" msgstr "LUKS2 デバイスを再暗号化" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3489 msgid "erase all keyslots (remove encryption key)" msgstr "全てのキースロットを消去します (暗号鍵も削除します)" -#: src/cryptsetup.c:3488 +#: src/cryptsetup.c:3490 msgid "convert LUKS from/to LUKS2 format" msgstr "LUKS2 から LUKS もしくは LUKS から LUKS2 形式に変換します" -#: src/cryptsetup.c:3489 +#: src/cryptsetup.c:3491 msgid "set permanent configuration options for LUKS2" msgstr "LUKS2 の permanent configuration オプションを設定します" -#: src/cryptsetup.c:3490 src/cryptsetup.c:3491 +#: src/cryptsetup.c:3492 src/cryptsetup.c:3493 msgid " []" msgstr "<デバイス> [<新しいキーファイル>]" -#: src/cryptsetup.c:3490 +#: src/cryptsetup.c:3492 msgid "formats a LUKS device" msgstr "LUKS デバイスをフォーマットします" -#: src/cryptsetup.c:3491 +#: src/cryptsetup.c:3493 msgid "add key to LUKS device" msgstr "LUKS デバイスにキーを追加します" -#: src/cryptsetup.c:3492 src/cryptsetup.c:3493 src/cryptsetup.c:3494 +#: src/cryptsetup.c:3494 src/cryptsetup.c:3495 src/cryptsetup.c:3496 msgid " []" msgstr "<デバイス> [<キーファイル>]" -#: src/cryptsetup.c:3492 +#: src/cryptsetup.c:3494 msgid "removes supplied key or key file from LUKS device" msgstr "与えられたキーかキーファイルを LUKS デバイスから削除します。" -#: src/cryptsetup.c:3493 +#: src/cryptsetup.c:3495 msgid "changes supplied key or key file of LUKS device" msgstr "与えられた LUKS デバイスのキーかキーファイルを変更します" -#: src/cryptsetup.c:3494 +#: src/cryptsetup.c:3496 msgid "converts a key to new pbkdf parameters" msgstr "キーを新しい pbkdf パラメータに変換します" -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3497 msgid " " msgstr "<デバイス> <キースロット>" -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3497 msgid "wipes key with number from LUKS device" msgstr "<キースロット>のキーを LUKS デバイスから削除します" -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3498 msgid "print UUID of LUKS device" msgstr "LUKS デバイスの UUID を表示" -#: src/cryptsetup.c:3497 +#: src/cryptsetup.c:3499 msgid "tests for LUKS partition header" msgstr "<デバイス> の LUKS パーティションヘッダをテストします" -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3500 msgid "dump LUKS partition information" msgstr "LUKS パーティション情報をダンプします" -#: src/cryptsetup.c:3499 +#: src/cryptsetup.c:3501 msgid "dump TCRYPT device information" msgstr "TCRYPT デバイス情報をダンプします" -#: src/cryptsetup.c:3500 +#: src/cryptsetup.c:3502 msgid "dump BITLK device information" msgstr "BITLK デバイス情報をダンプします" -#: src/cryptsetup.c:3501 +#: src/cryptsetup.c:3503 msgid "dump FVAULT2 device information" msgstr "FVAULT2 デバイス情報をダンプします" -#: src/cryptsetup.c:3502 +#: src/cryptsetup.c:3504 msgid "Suspend LUKS device and wipe key (all IOs are frozen)" msgstr "LUKS デバイスを停止してキーを削除します (全てのI/Oは停止します)" -#: src/cryptsetup.c:3503 +#: src/cryptsetup.c:3505 msgid "Resume suspended LUKS device" msgstr "停止していた LUKS デバイスを再開します" -#: src/cryptsetup.c:3504 +#: src/cryptsetup.c:3506 msgid "Backup LUKS device header and keyslots" msgstr "LUKS デバイスヘッダとキースロットをバックアップします" -#: src/cryptsetup.c:3505 +#: src/cryptsetup.c:3507 msgid "Restore LUKS device header and keyslots" msgstr "LUKS デバイスヘッダとキースロットをリストアします" -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3508 msgid " " msgstr " <デバイス>" -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3508 msgid "Manipulate LUKS2 tokens" msgstr "LUKS2 トークンを操作します" -#: src/cryptsetup.c:3525 src/veritysetup.c:505 src/integritysetup.c:573 +#: src/cryptsetup.c:3527 src/veritysetup.c:505 src/integritysetup.c:579 msgid "" "\n" " is one of:\n" @@ -2947,7 +2947,7 @@ msgstr "" "\n" " は以下のうちの一つです:\n" -#: src/cryptsetup.c:3531 +#: src/cryptsetup.c:3533 msgid "" "\n" "You can also use old syntax aliases:\n" @@ -2959,7 +2959,7 @@ msgstr "" "\topen: create (plainOpen), luksOpen, loopaesOpen, tcryptOpen, bitlkOpen, fvault2Open\n" "\tclose: remove (plainClose), luksClose, loopaesClose, tcryptClose, bitlkClose, fvault2Close\n" -#: src/cryptsetup.c:3535 +#: src/cryptsetup.c:3537 #, c-format msgid "" "\n" @@ -2974,7 +2974,7 @@ msgstr "" "<キースロット> は変更する LUKS キースロット番号\n" "<キーファイル> は luskAddKey でオプションで与えられる新しいキーのキーファイル\n" -#: src/cryptsetup.c:3542 +#: src/cryptsetup.c:3544 #, c-format msgid "" "\n" @@ -2983,7 +2983,7 @@ msgstr "" "\n" "デフォルトのコンパイル時に決められたメタデータ形式は %s です(luksFormat で使われます)。\n" -#: src/cryptsetup.c:3547 +#: src/cryptsetup.c:3549 msgid "" "\n" "LUKS2 external token plugin support is enabled.\n" @@ -2991,12 +2991,12 @@ msgstr "" "\n" "LUKS2 外部トークンプラグインサポートは有効です。\n" -#: src/cryptsetup.c:3548 +#: src/cryptsetup.c:3550 #, c-format msgid "LUKS2 external token plugin path: %s.\n" msgstr "LUKS2 外部トークンプラグインパス: %s.\n" -#: src/cryptsetup.c:3550 +#: src/cryptsetup.c:3552 msgid "" "\n" "LUKS2 external token plugin support is disabled.\n" @@ -3004,7 +3004,7 @@ msgstr "" "\n" "LUKS2 外部トークンプラグインサポートは無効です。\n" -#: src/cryptsetup.c:3554 +#: src/cryptsetup.c:3556 #, c-format msgid "" "\n" @@ -3021,7 +3021,7 @@ msgstr "" "デフォルト LUKS2 向け PBKDF: %s\n" "\t繰り返す時間: %d, 使うメモリ: %dkB, 並列スレッド: %d\n" -#: src/cryptsetup.c:3565 +#: src/cryptsetup.c:3567 #, c-format msgid "" "\n" @@ -3036,122 +3036,126 @@ msgstr "" "\tplain: %s, キー: %d ビット, パスワードハッシュ: %s\n" "\tLUKS: %s, キー: %d ビット, LUKS ヘッダハッシュ: %s, 乱数生成: %s\n" -#: src/cryptsetup.c:3574 +#: src/cryptsetup.c:3576 msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: XTS モードのデフォルトキーサイズは (2つの内部キーがあるため) 倍になります。\n" -#: src/cryptsetup.c:3592 src/veritysetup.c:647 src/integritysetup.c:733 +#: src/cryptsetup.c:3594 src/veritysetup.c:647 src/integritysetup.c:739 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: は %s を引数で与える必要があります" -#: src/cryptsetup.c:3632 src/utils_reencrypt_luks1.c:1143 +#: src/cryptsetup.c:3634 src/utils_reencrypt_luks1.c:1143 msgid "Key slot is invalid." msgstr "キースロットは不正です。" -#: src/cryptsetup.c:3660 +#: src/cryptsetup.c:3662 msgid "Device size must be multiple of 512 bytes sector." msgstr "デバイスサイズは 512 バイトセクタの倍数である必要があります。" -#: src/cryptsetup.c:3665 +#: src/cryptsetup.c:3667 msgid "Invalid max reencryption hotzone size specification." msgstr "再暗号化ホットゾーン最大サイズの指定が不正です。" -#: src/cryptsetup.c:3679 src/cryptsetup.c:3696 src/cryptsetup.c:3708 +#: src/cryptsetup.c:3681 src/cryptsetup.c:3698 src/cryptsetup.c:3710 msgid "Key size must be a multiple of 8 bits" msgstr "キーサイズは 8bit の倍数でなければなりません" -#: src/cryptsetup.c:3686 +#: src/cryptsetup.c:3688 msgid "At most 2 key size specifications can be supplied." msgstr "多くても2つのキーサイズ設定しか指定できません。" -#: src/cryptsetup.c:3715 src/cryptsetup.c:3726 +#: src/cryptsetup.c:3717 src/cryptsetup.c:3728 #, c-format msgid "At most %d volume key specifications can be supplied." msgstr "多くても %d 個のボリュームキーしか指定できません。" -#: src/cryptsetup.c:3738 +#: src/cryptsetup.c:3740 #, c-format msgid "At most %d keyring link specifications can be supplied." msgstr "多くても %d 個のキーリングリンクしか指定できません。" -#: src/cryptsetup.c:3747 +#: src/cryptsetup.c:3749 msgid "Maximum device reduce size is 1 GiB." msgstr "デバイスを減らせる最大値は 1 GiB です。" -#: src/cryptsetup.c:3750 +#: src/cryptsetup.c:3752 msgid "Reduce size must be multiple of 512 bytes sector." msgstr "減らすサイズは 512 バイトセクタの倍数である必要があります。" -#: src/cryptsetup.c:3767 +#: src/cryptsetup.c:3769 msgid "Option --priority can be only ignore/normal/prefer." msgstr "--priority の引数は ignore/normal/prefer のいずれかのみです。" -#: src/cryptsetup.c:3786 src/veritysetup.c:568 src/integritysetup.c:653 +#: src/cryptsetup.c:3774 +msgid "Invalid maximal tries specification." +msgstr "最大試行回数の指定が不正です。" + +#: src/cryptsetup.c:3793 src/veritysetup.c:568 src/integritysetup.c:659 msgid "Show this help message" msgstr "このヘルプを表示します" -#: src/cryptsetup.c:3787 src/veritysetup.c:569 src/integritysetup.c:654 +#: src/cryptsetup.c:3794 src/veritysetup.c:569 src/integritysetup.c:660 msgid "Display brief usage" msgstr "コンパクトな使用法表示をします" -#: src/cryptsetup.c:3788 src/veritysetup.c:570 src/integritysetup.c:655 +#: src/cryptsetup.c:3795 src/veritysetup.c:570 src/integritysetup.c:661 msgid "Print package version" msgstr "パッケージのバージョンを表示" -#: src/cryptsetup.c:3799 src/veritysetup.c:581 src/integritysetup.c:666 +#: src/cryptsetup.c:3806 src/veritysetup.c:581 src/integritysetup.c:672 msgid "Help options:" msgstr "ヘルプオプション:" -#: src/cryptsetup.c:3822 src/veritysetup.c:602 src/integritysetup.c:686 +#: src/cryptsetup.c:3829 src/veritysetup.c:602 src/integritysetup.c:692 msgid "[OPTION...] " msgstr "[オプション...] <アクション> <アクション特有>" -#: src/cryptsetup.c:3831 src/veritysetup.c:611 src/integritysetup.c:697 +#: src/cryptsetup.c:3838 src/veritysetup.c:611 src/integritysetup.c:703 msgid "Argument missing." msgstr "<アクション> がありません。" -#: src/cryptsetup.c:3910 src/veritysetup.c:642 src/integritysetup.c:728 +#: src/cryptsetup.c:3917 src/veritysetup.c:642 src/integritysetup.c:734 msgid "Unknown action." msgstr "未知のアクションです。" -#: src/cryptsetup.c:3928 +#: src/cryptsetup.c:3935 msgid "Option --key-file takes precedence over specified key file argument." msgstr "--key-file は他で指定されたキーファイルを上書きします。" -#: src/cryptsetup.c:3934 +#: src/cryptsetup.c:3941 msgid "Only one --key-file argument is allowed." msgstr "--key-file は一つしか使えません。" -#: src/cryptsetup.c:3939 +#: src/cryptsetup.c:3946 msgid "Password-based key derivation function (PBKDF) can be only pbkdf2 or argon2i/argon2id." msgstr "パスワードからキーを作る関数 (PBKDF) は pbkdf2 argon2i argon2id のいずれかのみです。" -#: src/cryptsetup.c:3944 +#: src/cryptsetup.c:3951 msgid "PBKDF forced iterations cannot be combined with iteration time option." msgstr "PBKDF の繰り返し回数の強制と繰り返し時間指定オプションは共存できません。" -#: src/cryptsetup.c:3949 +#: src/cryptsetup.c:3956 msgid "Cannot link volume key to a keyring when keyring is disabled." msgstr "キーリングが無効化されているためボリュームキーをキーリングにリンクできません。" -#: src/cryptsetup.c:3954 +#: src/cryptsetup.c:3961 msgid "Cannot use keyring key description when keyring is disabled." msgstr "キーリングが無効化されているためキーリングキー記述を使えません。" -#: src/cryptsetup.c:3959 +#: src/cryptsetup.c:3966 msgid "Inline integrity must be used together with --integrity option." msgstr "インライン整合性拡張は --integrity オプション付きの時しか使えません。" -#: src/cryptsetup.c:3970 +#: src/cryptsetup.c:3977 msgid "Options --keyslot-cipher and --keyslot-key-size must be used together." msgstr "--keyslot-cipher と --keyslot-key-size は同時に使う必要があります。" -#: src/cryptsetup.c:3978 +#: src/cryptsetup.c:3985 msgid "No action taken. Invoked with --test-args option.\n" msgstr "--test-args オプションつきだったため、何もしません。\n" -#: src/cryptsetup.c:3991 +#: src/cryptsetup.c:3998 msgid "Cannot disable metadata locking." msgstr "メタデータロックを禁止できません。" @@ -3216,7 +3220,7 @@ msgstr "コマンドは か --root-hash-file オプションを引 msgid " " msgstr "<データデバイス> <ハッシュデバイス>" -#: src/veritysetup.c:485 src/integritysetup.c:553 +#: src/veritysetup.c:485 src/integritysetup.c:559 msgid "format device" msgstr "デバイスをフォーマット" @@ -3232,7 +3236,7 @@ msgstr "デバイスを検証" msgid " []" msgstr "<データデバイス> <名前> <ハッシュデバイス> [<ルートハッシュ>]" -#: src/veritysetup.c:489 src/integritysetup.c:556 +#: src/veritysetup.c:489 src/integritysetup.c:562 msgid "show active device status" msgstr "アクティブデバイスのステータスを表示" @@ -3240,7 +3244,7 @@ msgstr "アクティブデバイスのステータスを表示" msgid "" msgstr "<ハッシュデバイス>" -#: src/veritysetup.c:490 src/integritysetup.c:557 +#: src/veritysetup.c:490 src/integritysetup.c:563 msgid "show on-disk information" msgstr "ディスク上の情報を表示" @@ -3282,7 +3286,7 @@ msgstr "--panic-on-corruption と --restart-on-corruption は同時に使えま msgid "Option --error-as-corruption must be used with --panic-on-corruption or --restart-on-corruption." msgstr "--error-as-corruption オプションは --panic-on-corruption か --restart-on-corruption と一緒に使う必要があります。" -#: src/integritysetup.c:168 +#: src/integritysetup.c:169 #, c-format msgid "" "This will overwrite data on %s and %s irrevocably.\n" @@ -3291,33 +3295,33 @@ msgstr "" "%s と %s のデータを復元不能な形で上書きします。\n" "データデバイスを保持するにはオプション --no-wipe を使ってください (その後、--integrity-recalculate を付けてアクティベートしてください)。" -#: src/integritysetup.c:213 +#: src/integritysetup.c:215 #, c-format msgid "Formatted with tag size %u%s, internal integrity %s.\n" msgstr "タグサイズ %u%s、内部整合性は %s でフォーマットされました。\n" -#: src/integritysetup.c:214 +#: src/integritysetup.c:216 msgid " (inline hw tags)" msgstr " (インラインHWタグ)" -#: src/integritysetup.c:303 +#: src/integritysetup.c:305 msgid "Setting recalculate flag is not supported, you may consider using --wipe instead." msgstr "再計算フラグの設定はサポートされていません。代わりに --wipe を使うことを検討してください。" -#: src/integritysetup.c:380 src/integritysetup.c:540 +#: src/integritysetup.c:382 src/integritysetup.c:546 #, c-format msgid "Device %s is not a valid INTEGRITY device." msgstr "デバイス %s が有効な INTEGRITY デバイスではありません。" -#: src/integritysetup.c:553 src/integritysetup.c:557 +#: src/integritysetup.c:559 src/integritysetup.c:563 msgid "" msgstr "<整合性デバイス>" -#: src/integritysetup.c:554 +#: src/integritysetup.c:560 msgid " " msgstr "<整合性デバイス> <名前>" -#: src/integritysetup.c:577 +#: src/integritysetup.c:583 #, c-format msgid "" "\n" @@ -3328,7 +3332,7 @@ msgstr "" "<名前> は %s に作られるデバイス\n" "<整合性デバイス> は整合性タグを格納するデバイス\n" -#: src/integritysetup.c:582 +#: src/integritysetup.c:588 #, c-format msgid "" "\n" @@ -3341,48 +3345,48 @@ msgstr "" "\tチェックサムアルゴリズム: %s\n" " 最大キーファイルサイズ: %dkB\n" -#: src/integritysetup.c:639 +#: src/integritysetup.c:645 #, c-format msgid "Invalid --%s size. Maximum is %u bytes." msgstr "不正な --%s サイズです。最大は %u バイトです。" -#: src/integritysetup.c:742 +#: src/integritysetup.c:748 msgid "Both key file and key size options must be specified." msgstr "キーファイルとキーサイズの両方の指定が必要です。" -#: src/integritysetup.c:746 +#: src/integritysetup.c:752 msgid "Both journal integrity key file and key size options must be specified." msgstr "ジャーナル整合性キーファイルとキーサイズの両方の指定が必要です。" -#: src/integritysetup.c:749 +#: src/integritysetup.c:755 msgid "Journal integrity algorithm must be specified if journal integrity key is used." msgstr "ジャーナル整合性キーを使う場合はアルゴリズムの指定が必要です。" -#: src/integritysetup.c:753 +#: src/integritysetup.c:759 msgid "Both journal encryption key file and key size options must be specified." msgstr "ジャーナル暗号キーファイルとキーサイズの両方の指定が必要です。" -#: src/integritysetup.c:756 +#: src/integritysetup.c:762 msgid "Journal encryption algorithm must be specified if journal encryption key is used." msgstr "ジャーナル暗号キーを使う場合はアルゴリズムの指定が必要です。" -#: src/integritysetup.c:760 +#: src/integritysetup.c:766 msgid "Recovery and bitmap mode options are mutually exclusive." msgstr "リカバリと bitmap モードオプションは同時には使えません。" -#: src/integritysetup.c:767 +#: src/integritysetup.c:773 msgid "Journal options cannot be used in bitmap mode." msgstr "ジャーナルオプションは bitmap モードでは使えません。" -#: src/integritysetup.c:772 +#: src/integritysetup.c:778 msgid "Bitmap options can be used only in bitmap mode." msgstr "bitmap オプションは bitmap モードでしか使えません。" -#: src/integritysetup.c:778 +#: src/integritysetup.c:784 msgid "Inline mode cannot be combined with journal or bitmap options." msgstr "インラインモードは journal や bitmap オプションと一緒に使えません。" -#: src/integritysetup.c:782 +#: src/integritysetup.c:788 msgid "Inline mode cannot be combined with separate data device." msgstr "インラインモードは分離データデバイスと一緒には使えません。" @@ -3736,32 +3740,32 @@ msgstr "デバイスは LUKS2 復号状態にありません。オプション - msgid "Device is in reencryption using datashift resilience. Requested --resilience option cannot be applied." msgstr "デバイスはデータシフト耐性を使った再暗号化状態にあります。--resilience オプションは適用できません。" -#: src/utils_reencrypt.c:282 src/utils_reencrypt.c:1924 +#: src/utils_reencrypt.c:283 src/utils_reencrypt.c:1927 msgid "Cannot determine volume key size for LUKS without keyslots, please use --new-key-size option." msgstr "キースロットのない LUKS のボリュームキーサイズが決定できないので、--new-key-size を使ってください。" -#: src/utils_reencrypt.c:436 +#: src/utils_reencrypt.c:438 msgid "Device requires reencryption recovery. Run repair first." msgstr "デバイスは再暗号化リカバリが必要です。先に修復してください。" -#: src/utils_reencrypt.c:450 +#: src/utils_reencrypt.c:452 #, c-format msgid "Device %s is already in LUKS2 reencryption. Do you wish to resume previously initialised operation?" msgstr "デバイス %s は既に LUKS2 再暗号化状態にあります。以前に初期化された処理に復帰しますか?" -#: src/utils_reencrypt.c:561 +#: src/utils_reencrypt.c:563 msgid "Legacy LUKS2 reencryption is no longer supported." msgstr "古い LUKS2 再暗号化はサポートされなくなりました。" -#: src/utils_reencrypt.c:566 +#: src/utils_reencrypt.c:568 msgid "Can not reencrypt LUKS2 device configured to use OPAL." msgstr "OPAL を使うよう設定された LUKS2 デバイスは再暗号化できません。" -#: src/utils_reencrypt.c:572 +#: src/utils_reencrypt.c:574 msgid "Reencryption of device with integrity profile is not supported." msgstr "整合性プロファイルつきのデバイスの再暗号化はサポートされていません。" -#: src/utils_reencrypt.c:609 +#: src/utils_reencrypt.c:611 #, c-format msgid "" "Requested --sector-size % is incompatible with %s superblock\n" @@ -3770,110 +3774,110 @@ msgstr "" "要求された --sector-size % は %s superblock\n" "(ブロックサイズ: % バイト、デバイス %s)と互換性がありません。" -#: src/utils_reencrypt.c:678 src/utils_reencrypt.c:2204 +#: src/utils_reencrypt.c:680 src/utils_reencrypt.c:2207 msgid "Encryption without detached header (--header) is not possible without data device size reduction (--reduce-device-size)." msgstr "データデバイスサイズの縮小(--reduce-device-size)なしに分離ヘッダ(--header)による暗号化はできません。" -#: src/utils_reencrypt.c:687 +#: src/utils_reencrypt.c:689 msgid "Requested data offset must be less than or equal to half of --reduce-device-size parameter." msgstr "要求されたデータオフセットは --reduce-device-size パラメータの半分以下である必要があります。" -#: src/utils_reencrypt.c:697 +#: src/utils_reencrypt.c:699 #, c-format msgid "Adjusting --reduce-device-size value to twice the --offset % (sectors).\n" msgstr "--reduce-device-size の値を --offset % (セクタ) の倍にします。\n" -#: src/utils_reencrypt.c:727 +#: src/utils_reencrypt.c:729 #, c-format msgid "Temporary header file %s already exists. Aborting." msgstr "テンポラリヘッダファイル %s は既に存在しているので、中止します。" -#: src/utils_reencrypt.c:729 src/utils_reencrypt.c:736 +#: src/utils_reencrypt.c:731 src/utils_reencrypt.c:738 #, c-format msgid "Cannot create temporary header file %s." msgstr "テンポラリヘッダファイル %s を作成できません。" -#: src/utils_reencrypt.c:761 +#: src/utils_reencrypt.c:763 msgid "LUKS2 metadata size is larger than data shift value." msgstr "LUKS2 メタデータサイズがデータシフト値より大きいです。" -#: src/utils_reencrypt.c:800 +#: src/utils_reencrypt.c:802 #, c-format msgid "Failed to place new header at head of device %s." msgstr "デバイス %s の先頭に新しいヘッダを置けません。" -#: src/utils_reencrypt.c:813 +#: src/utils_reencrypt.c:815 #, c-format msgid "%s/%s is now active and ready for online encryption.\n" msgstr "%s/%s がアクティブでオンライン暗号化可能です。\n" -#: src/utils_reencrypt.c:850 +#: src/utils_reencrypt.c:852 #, c-format msgid "Active device %s is not LUKS2." msgstr "アクティブなデバイス %s は LUKS2 ではありません。" -#: src/utils_reencrypt.c:878 +#: src/utils_reencrypt.c:880 msgid "Restoring original LUKS2 header." msgstr "オリジナルの LUKS2 ヘッダを復元しています。" -#: src/utils_reencrypt.c:886 +#: src/utils_reencrypt.c:888 msgid "Original LUKS2 header restore failed." msgstr "オリジナルの LUKS ヘッダの復元に失敗しました。" -#: src/utils_reencrypt.c:918 +#: src/utils_reencrypt.c:920 #, c-format msgid "Header file %s does not exist. Do you want to initialize LUKS2 decryption of device %s and export LUKS2 header to file %s?" msgstr "ヘッダファイル %s が存在しません。デバイス %s の復号化をして LUKS2 ヘッダをファイル %s に出力しますか?" -#: src/utils_reencrypt.c:961 +#: src/utils_reencrypt.c:963 msgid "Failed to add read/write permissions to exported header file." msgstr "エクスポートされたヘッダファイルに読み書き権限を付与できません。" -#: src/utils_reencrypt.c:1015 +#: src/utils_reencrypt.c:1017 #, c-format msgid "Reencryption initialization failed. Header backup is available in %s." msgstr "再暗号化の初期化に失敗しました。ヘッダのバックアップは %s にあります。" -#: src/utils_reencrypt.c:1043 +#: src/utils_reencrypt.c:1045 msgid "LUKS2 decryption is supported with detached header device only (with data offset set to 0)." msgstr "LUKS2 復号は分離(detached)ヘッダデバイスしかサポートしていません(データへのオフセットが0)。" -#: src/utils_reencrypt.c:1487 +#: src/utils_reencrypt.c:1490 msgid "No token could unlock the device." msgstr "デバイスをアンロックできるトークンがありません。" -#: src/utils_reencrypt.c:1519 src/utils_reencrypt.c:1528 +#: src/utils_reencrypt.c:1522 src/utils_reencrypt.c:1531 msgid "Not enough free keyslots for reencryption." msgstr "再暗号化に必要な空きキースロットがありません。" -#: src/utils_reencrypt.c:1559 +#: src/utils_reencrypt.c:1562 msgid "Key file or keyring key description can be used only with --key-slot or with exactly one key slot active." msgstr "キーファイルやキーリングキー記述は --key-slot と使うか、1 つのキースロットだけアクティブの時にしか使えません。" -#: src/utils_reencrypt.c:1566 src/utils_reencrypt.c:1579 +#: src/utils_reencrypt.c:1569 src/utils_reencrypt.c:1582 #: src/utils_reencrypt_luks1.c:1092 src/utils_reencrypt_luks1.c:1103 #, c-format msgid "Enter passphrase for key slot %d: " msgstr "キースロット %d のパスフレーズを入力してください: " -#: src/utils_reencrypt.c:1876 +#: src/utils_reencrypt.c:1879 #, c-format msgid "Switching data encryption cipher to %s.\n" msgstr "データの暗号化用の暗号アルゴリズムを %s にします。\n" -#: src/utils_reencrypt.c:1977 src/utils_reencrypt.c:1998 +#: src/utils_reencrypt.c:1980 src/utils_reencrypt.c:2001 msgid "Use --force-no-keyslots to reencrypt device with active keyslots by passing volume keys directly." msgstr "アクティブキースロットがあるデバイスを再暗号化するには --force-no-keyslots を使いボリュームキーを直接渡してください。" -#: src/utils_reencrypt.c:1993 +#: src/utils_reencrypt.c:1996 msgid "Option --new-volume-key-file must be paired with --new-key-size" msgstr "--new-volume-key-file オプションは --new-key-size とペアにする必要があります。" -#: src/utils_reencrypt.c:2035 +#: src/utils_reencrypt.c:2038 msgid "No data segment parameters changed. Reencryption aborted." msgstr "データセグメントのパラメータが変わっていません。再暗号化を中止します。" -#: src/utils_reencrypt.c:2072 +#: src/utils_reencrypt.c:2075 msgid "" "Encryption sector size increase on offline device is not supported.\n" "Activate the device first or use --force-offline-reencrypt option (dangerous!)." @@ -3881,7 +3885,7 @@ msgstr "" "オフラインデバイスの暗号化セクタサイズの増加はサポートしていません。\n" "まずデバイスをアクティベートするか、--force-offline-reencrypt オプションを使ってください (ただし危険です!)。" -#: src/utils_reencrypt.c:2114 src/utils_reencrypt_luks1.c:688 +#: src/utils_reencrypt.c:2117 src/utils_reencrypt_luks1.c:688 #: src/utils_reencrypt_luks1.c:759 msgid "" "\n" @@ -3890,58 +3894,58 @@ msgstr "" "\n" "再暗号化が中断されました。" -#: src/utils_reencrypt.c:2119 +#: src/utils_reencrypt.c:2122 msgid "Resuming LUKS reencryption in forced offline mode.\n" msgstr "LUKS 再暗号化を強制オフラインモードで再開します。\n" -#: src/utils_reencrypt.c:2142 +#: src/utils_reencrypt.c:2145 #, c-format msgid "Device %s contains broken LUKS metadata. Aborting operation." msgstr "デバイス %s は壊れた LUKS メタデータを含んでいます。処理を中止します。" -#: src/utils_reencrypt.c:2158 src/utils_reencrypt.c:2180 +#: src/utils_reencrypt.c:2161 src/utils_reencrypt.c:2183 #, c-format msgid "Device %s is already LUKS device. Aborting operation." msgstr "デバイス %s は既に LUKS デバイスです。処理を中止します。" -#: src/utils_reencrypt.c:2186 +#: src/utils_reencrypt.c:2189 #, c-format msgid "Device %s is already in LUKS reencryption. Aborting operation." msgstr "デバイス %s は既に LUKS 再暗号化状態にあります。処理を中止します。" -#: src/utils_reencrypt.c:2269 +#: src/utils_reencrypt.c:2272 msgid "LUKS2 decryption requires --header option." msgstr "LUKS2 復号には --header オプションが必要です。" -#: src/utils_reencrypt.c:2317 +#: src/utils_reencrypt.c:2320 msgid "Command requires device as argument." msgstr "コマンドはデバイスを引数として必要とします。" -#: src/utils_reencrypt.c:2330 +#: src/utils_reencrypt.c:2333 #, c-format msgid "Conflicting versions. Device %s is LUKS1." msgstr "バージョンが衝突しています。デバイス %s は LUKS1 です。" -#: src/utils_reencrypt.c:2336 +#: src/utils_reencrypt.c:2339 #, c-format msgid "Conflicting versions. Device %s is in LUKS1 reencryption." msgstr "バージョンが衝突しています。デバイス %s は LUKS1 再暗号化状態にあります。" -#: src/utils_reencrypt.c:2342 +#: src/utils_reencrypt.c:2345 #, c-format msgid "Conflicting versions. Device %s is LUKS2." msgstr "バージョンが衝突しています。デバイス %s は LUKS2 です。" -#: src/utils_reencrypt.c:2348 +#: src/utils_reencrypt.c:2351 #, c-format msgid "Conflicting versions. Device %s is in LUKS2 reencryption." msgstr "バージョンが衝突しています。デバイス %s は LUKS2 再暗号化状態にあります。" -#: src/utils_reencrypt.c:2354 +#: src/utils_reencrypt.c:2357 msgid "LUKS2 reencryption already initialized. Aborting operation." msgstr "LUKS2 再暗号化が既に初期化済なので操作を中止します。" -#: src/utils_reencrypt.c:2361 +#: src/utils_reencrypt.c:2364 msgid "Device reencryption not in progress." msgstr "再暗号化処理を実行中ではありません。" From ef05e9ecf641dbc0aec4ac54dc688eed36759c01 Mon Sep 17 00:00:00 2001 From: Seong-ho Cho Date: Sun, 19 Jul 2026 19:51:04 +0200 Subject: [PATCH 185/244] po: update ko.po (from translationproject.org) --- po/ko.po | 633 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 318 insertions(+), 315 deletions(-) diff --git a/po/ko.po b/po/ko.po index 0053efdc4..68a9dca65 100644 --- a/po/ko.po +++ b/po/ko.po @@ -6,19 +6,18 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.7-rc1\n" +"Project-Id-Version: cryptsetup 2.8.7-rc2\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2026-06-29 21:30+0200\n" -"PO-Revision-Date: 2026-07-02 09:35+0900\n" +"POT-Creation-Date: 2026-07-09 10:46+0200\n" +"PO-Revision-Date: 2026-07-13 11:02+0900\n" "Last-Translator: Seong-ho Cho \n" "Language-Team: Korean \n" "Language: ko_KR\n" -"X-Bugs: Report translation errors to the Language-Team address.\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"\n" -"X-Generator: Poedit 3.7\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Poedit 3.6\n" #: lib/libdevmapper.c:419 msgid "Cannot initialize device-mapper, running as non-root user." @@ -201,10 +200,10 @@ msgid "Failed to rollback LUKS2 metadata in memory." msgstr "메모리에서 LUKS2 메타데이터 되돌리기 실패." #: lib/setup.c:896 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 -#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1779 -#: src/cryptsetup.c:1963 src/cryptsetup.c:2018 src/cryptsetup.c:2216 -#: src/cryptsetup.c:2361 src/cryptsetup.c:2639 src/cryptsetup.c:2952 -#: src/cryptsetup.c:3020 src/utils_reencrypt.c:2281 +#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 +#: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 +#: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2954 +#: src/cryptsetup.c:3022 src/utils_reencrypt.c:2284 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." @@ -248,7 +247,7 @@ msgid "Detached metadata device is not supported for this crypt type." msgstr "이 암호화 형식에서 분리한 메타데이터 장치를 지원하지 않습니다." #: lib/setup.c:1642 lib/setup.c:1890 lib/luks2/luks2_reencrypt.c:3035 -#: src/cryptsetup.c:1491 src/cryptsetup.c:3759 +#: src/cryptsetup.c:1492 src/cryptsetup.c:3761 msgid "Unsupported encryption sector size." msgstr "지원하지 않는 암호화 섹터 크기입니다." @@ -570,14 +569,14 @@ msgstr "사용자 지정 키 모음으로의 볼륨 키 연결 해제 실패." msgid "Failed to link volume key in user defined keyring." msgstr "사용자 지정 키 모음으로의 볼륨 키 연결 실패." -#: lib/setup.c:4556 src/cryptsetup.c:2720 +#: lib/setup.c:4556 src/cryptsetup.c:2722 #, c-format msgid "Volume %s is not suspended." msgstr "%s 볼륨은 대기 상태가 아닙니다." -#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1855 -#: src/cryptsetup.c:2259 src/cryptsetup.c:2277 src/utils_reencrypt.c:305 -#: src/utils_reencrypt.c:1966 +#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1856 +#: src/cryptsetup.c:2260 src/cryptsetup.c:2278 src/utils_reencrypt.c:306 +#: src/utils_reencrypt.c:1969 msgid "Volume key does not match the volume." msgstr "볼륨 키가 볼륨과 맞지 않습니다." @@ -590,8 +589,8 @@ msgstr "새 키 슬롯 교환 실패." msgid "Key slot %d is invalid." msgstr "%d번 키 슬롯이 적절하지 않습니다." -#: lib/setup.c:4925 src/cryptsetup.c:1976 src/cryptsetup.c:2436 -#: src/cryptsetup.c:3120 src/cryptsetup.c:3180 +#: lib/setup.c:4925 src/cryptsetup.c:1977 src/cryptsetup.c:2437 +#: src/cryptsetup.c:3122 src/cryptsetup.c:3182 #, c-format msgid "Keyslot %d is not active." msgstr "%d번 키 슬롯은 동작 중이 아닙니다." @@ -788,7 +787,7 @@ msgid "Cannot read requested amount of data." msgstr "요청한 양의 데이터를 읽을 수 없습니다." #: lib/utils_device.c:207 lib/utils_storage_wrappers.c:99 -#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2254 +#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2257 #, c-format msgid "Device %s does not exist or access denied." msgstr "%s 장치가 없거나 접근이 막혔습니다." @@ -1131,7 +1130,7 @@ msgstr "LUKS 암호화 방식 모드 %s이(가) 적절하지 않습니다." msgid "LUKS hash %s is invalid." msgstr "%s LUKS 해시가 적절하지 않습니다." -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1366 +#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 msgid "No known problems detected for LUKS header." msgstr "LUKS 헤더에 알려진 문제가 없습니다." @@ -1151,7 +1150,7 @@ msgstr "LUKS 헤더용 데이터 오프셋은 0 또는 헤더 길이보다 더 #: lib/luks1/keymanage.c:761 lib/luks1/keymanage.c:832 #: lib/luks2/luks2_json_format.c:231 lib/luks2/luks2_json_metadata.c:1261 -#: src/utils_reencrypt.c:701 +#: src/utils_reencrypt.c:703 msgid "Wrong LUKS UUID format provided." msgstr "잘못된 LUKS UUID 형식을 지정했습니다." @@ -1676,7 +1675,7 @@ msgstr "dm-crypt 세그먼트 설정 실패." msgid "Failed to set dm-linear segment." msgstr "dm-linear 세그먼트 설정 실패." -#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:578 +#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:580 msgid "No known cipher specification pattern detected in LUKS2 header." msgstr "LUKS2 헤더에서 찾은 알려진 암호화 방식 명세 패턴이 없습니다." @@ -2139,8 +2138,8 @@ msgstr "키 슬롯 암호화 매개변수는 LUKS2 장치에서만 설정할 수 msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encryption." msgstr "키 슬롯 암호화 매개변수는 LUKS2 키 슬롯 암호화 과정과 호환성이 없습니다." -#: src/cryptsetup.c:150 src/cryptsetup.c:1179 src/cryptsetup.c:1544 -#: src/utils_reencrypt.c:1887 src/utils_reencrypt_luks1.c:502 +#: src/cryptsetup.c:150 src/cryptsetup.c:1180 src/cryptsetup.c:1545 +#: src/utils_reencrypt.c:1890 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." msgstr "확인한 암호화 방식 명세 패턴 중 알려진 항목이 없습니다." @@ -2167,8 +2166,8 @@ msgstr "경고: 키 파일을 지정한 상황에서 일반 모드에서는 --ha msgid "WARNING: The --keyfile-size option is being ignored, the read size is the same as the encryption key size.\n" msgstr "경고: 읽기 대상 크기가 암호화 키 크기와 동일한 상황에서는 --keyfile-size 옵션을 무시합니다.\n" -#: src/cryptsetup.c:226 src/cryptsetup.c:1374 src/cryptsetup.c:1597 -#: src/integritysetup.c:188 src/utils_reencrypt.c:2138 +#: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 +#: src/integritysetup.c:189 src/utils_reencrypt.c:2141 #, c-format msgid "Blkid scan failed for %s." msgstr "%s의 blkid 검사 실패." @@ -2178,11 +2177,11 @@ msgstr "%s의 blkid 검사 실패." msgid "Detected device signature(s) on %s. Proceeding further may damage existing data." msgstr "%s에서 장치 시그니처를 확인했습니다. 더 이상 진행하면 기존 데이터를 파괴할 수 있습니다." -#: src/cryptsetup.c:238 src/cryptsetup.c:1260 src/cryptsetup.c:1308 -#: src/cryptsetup.c:1381 src/cryptsetup.c:1521 src/cryptsetup.c:1609 -#: src/cryptsetup.c:2494 src/cryptsetup.c:2923 src/integritysetup.c:178 -#: src/utils_reencrypt.c:111 src/utils_reencrypt.c:457 -#: src/utils_reencrypt.c:925 +#: src/cryptsetup.c:238 src/cryptsetup.c:1261 src/cryptsetup.c:1309 +#: src/cryptsetup.c:1382 src/cryptsetup.c:1522 src/cryptsetup.c:1610 +#: src/cryptsetup.c:2495 src/cryptsetup.c:2925 src/integritysetup.c:179 +#: src/utils_reencrypt.c:111 src/utils_reencrypt.c:459 +#: src/utils_reencrypt.c:927 msgid "Operation aborted.\n" msgstr "동작을 멈추었습니다.\n" @@ -2190,36 +2189,36 @@ msgstr "동작을 멈추었습니다.\n" msgid "Option --key-file is required." msgstr "--key-file 옵션이 필요합니다." -#: src/cryptsetup.c:377 +#: src/cryptsetup.c:378 msgid "Enter VeraCrypt PIM: " msgstr "VeraCrypt PIM 입력: " -#: src/cryptsetup.c:386 +#: src/cryptsetup.c:387 msgid "Invalid PIM value: parse error." msgstr "부적절한 PIM 값: 해석 오류." -#: src/cryptsetup.c:389 +#: src/cryptsetup.c:390 msgid "Invalid PIM value: 0." msgstr "부적절한 PIM 값: 0." -#: src/cryptsetup.c:392 +#: src/cryptsetup.c:393 msgid "Invalid PIM value: outside of range." msgstr "부적절한 PIM 값: 범위 밖." -#: src/cryptsetup.c:415 +#: src/cryptsetup.c:416 msgid "No device header detected with this passphrase." msgstr "이 암호로 확인한 장치 헤더가 없습니다." -#: src/cryptsetup.c:492 src/cryptsetup.c:677 +#: src/cryptsetup.c:493 src/cryptsetup.c:678 #, c-format msgid "Device %s is not a valid BITLK device." msgstr "%s 장치는 적절한 BITLK 장치가 아닙니다." -#: src/cryptsetup.c:500 +#: src/cryptsetup.c:501 msgid "Cannot determine volume key size for BITLK, please use --key-size option." msgstr "BITLK의 볼륨 키 크기를 알 수 없습니다. --key-size 옵션을 사용하십시오." -#: src/cryptsetup.c:546 +#: src/cryptsetup.c:547 msgid "" "Header dump with volume key is sensitive information\n" "which allows access to encrypted partition without passphrase.\n" @@ -2229,7 +2228,7 @@ msgstr "" "접근할 수 있게 하는 민감 정보가 들어있습니다.\n" "이 덤프는 항상 안전한 영역에 암호화하여 저장해야 합니다." -#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2519 +#: src/cryptsetup.c:614 src/cryptsetup.c:700 src/cryptsetup.c:2520 msgid "" "The header dump with volume key is sensitive information\n" "that allows access to encrypted partition without a passphrase.\n" @@ -2239,88 +2238,88 @@ msgstr "" "접근할 수 있게 하는 민감 정보가 들어있습니다.\n" "이 덤프는 안전한 영역에 암호화하여 저장해야 합니다." -#: src/cryptsetup.c:754 src/cryptsetup.c:786 +#: src/cryptsetup.c:755 src/cryptsetup.c:787 #, c-format msgid "Device %s is not a valid FVAULT2 device." msgstr "%s 장치는 적절한 FVAULT2 장치가 아닙니다." -#: src/cryptsetup.c:794 +#: src/cryptsetup.c:795 msgid "Cannot determine volume key size for FVAULT2, please use --key-size option." msgstr "FVAULT2 볼륨 키 크기를 확인할 수 없습니다. --key-size 옵션을 활용하십시오." -#: src/cryptsetup.c:848 src/veritysetup.c:317 src/integritysetup.c:416 +#: src/cryptsetup.c:849 src/veritysetup.c:317 src/integritysetup.c:422 #, c-format msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "%s 장치는 여전히 동작중이며 지연된 제거 동작에 따라 제거 예정입니다.\n" -#: src/cryptsetup.c:881 src/cryptsetup.c:1807 src/cryptsetup.c:2081 -#: src/cryptsetup.c:2228 src/cryptsetup.c:2647 src/cryptsetup.c:2728 -#: src/cryptsetup.c:3261 +#: src/cryptsetup.c:882 src/cryptsetup.c:1808 src/cryptsetup.c:2082 +#: src/cryptsetup.c:2229 src/cryptsetup.c:2648 src/cryptsetup.c:2730 +#: src/cryptsetup.c:3263 #, c-format msgid "Failed to set external tokens path %s." msgstr "%s 외부 토큰 경로 설정 실패." -#: src/cryptsetup.c:890 +#: src/cryptsetup.c:891 msgid "Resize of active device requires volume key in keyring but --disable-keyring option is set." msgstr "동작 중인 장치 크기 조정은 키 모음의 볼륨 키가 필요합니다만 --disable-keyring 옵션을 지정했습니다." -#: src/cryptsetup.c:1057 +#: src/cryptsetup.c:1058 msgid "Benchmark interrupted." msgstr "비교 시험을 중단했습니다." -#: src/cryptsetup.c:1078 +#: src/cryptsetup.c:1079 #, c-format msgid "PBKDF2-%-9s N/A\n" msgstr "PBKDF2-%-9s N/A\n" -#: src/cryptsetup.c:1080 +#: src/cryptsetup.c:1081 #, c-format msgid "PBKDF2-%-9s %7u iterations per second for %zu-bit key\n" msgstr "PBKDF2-%-9s %7u 초당 반복 + %zu-비트 키\n" -#: src/cryptsetup.c:1094 +#: src/cryptsetup.c:1095 #, c-format msgid "%-10s N/A\n" msgstr "%-10s N/A\n" -#: src/cryptsetup.c:1096 +#: src/cryptsetup.c:1097 #, c-format msgid "%-10s %4u iterations, %5u memory, %1u parallel threads (CPUs) for %zu-bit key (requested %u ms time)\n" msgstr "%-10s %4u 반복, %5u 메모리, %1u 병렬처리 스레드(CPUs) + %zu-비트 키 (%u ms 시간에 요청)\n" -#: src/cryptsetup.c:1120 +#: src/cryptsetup.c:1121 msgid "Result of benchmark is not reliable." msgstr "비교 시험 결과는 신뢰할 만하지 않습니다." -#: src/cryptsetup.c:1171 +#: src/cryptsetup.c:1172 msgid "# Tests are approximate using memory only (no storage IO).\n" msgstr "# 시험은 대략적으로 메모리만 사용하여 추산했습니다 (저장장치 입출력 아님).\n" #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1196 +#: src/cryptsetup.c:1197 #, c-format msgid "#%*s Algorithm | Key | Encryption | Decryption\n" msgstr "#%*s 알고리즘 | 키 | 암호화 | 해 독 \n" -#: src/cryptsetup.c:1204 +#: src/cryptsetup.c:1205 #, c-format msgid "Cipher %s (with %i bits key) is not available." msgstr "%s 암호화 방식(%i 비트 키)을 사용할 수 없습니다." #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1225 +#: src/cryptsetup.c:1226 msgid "# Algorithm | Key | Encryption | Decryption\n" msgstr "# 알고리즘 | 키 | 암호화 | 해 독 \n" -#: src/cryptsetup.c:1238 +#: src/cryptsetup.c:1239 msgid "N/A" msgstr "해당 없음" -#: src/cryptsetup.c:1241 +#: src/cryptsetup.c:1242 msgid "# Cipher speed test is not available.\n" msgstr "# 암호화 방식 처리 속도를 시험할 수 없습니다.\n" -#: src/cryptsetup.c:1257 +#: src/cryptsetup.c:1258 msgid "" "Unprotected LUKS2 reencryption metadata detected. Please verify the reencryption operation is desirable (see luksDump output)\n" "and continue (upgrade metadata) only if you acknowledge the operation as genuine." @@ -2328,27 +2327,27 @@ msgstr "" "보호하지 않은 LUKS2 재암호화 메타데이터를 확인했습니다. 재암호화 동작이 적절한 지 검증하시고 (luksDump 출력 확인)\n" "동작에 문제가 없다고 확신이 들 경우에만 계속(메타데이터 업그레이드)하십시오." -#: src/cryptsetup.c:1263 +#: src/cryptsetup.c:1264 msgid "Enter passphrase to protect and upgrade reencryption metadata: " msgstr "재암호화 메타데이터 보호 및 업그레이드 암호 입력: " -#: src/cryptsetup.c:1307 +#: src/cryptsetup.c:1308 msgid "Really proceed with LUKS2 reencryption recovery?" msgstr "정말로 LUKS2 재암호화 복원을 진행하시겠습니까?" -#: src/cryptsetup.c:1316 +#: src/cryptsetup.c:1317 msgid "Enter passphrase to verify reencryption metadata digest: " msgstr "재암호화 메타데이터 다이제스트 검증용 암호 입력: " -#: src/cryptsetup.c:1318 +#: src/cryptsetup.c:1319 msgid "Enter passphrase for reencryption recovery: " msgstr "재암호화 복원 암호 입력: " -#: src/cryptsetup.c:1380 +#: src/cryptsetup.c:1381 msgid "Really try to repair LUKS device header?" msgstr "정말로 LUKS 장치 헤더 복원을 시도하시겠습니까?" -#: src/cryptsetup.c:1408 src/integritysetup.c:76 src/integritysetup.c:244 +#: src/cryptsetup.c:1409 src/integritysetup.c:76 src/integritysetup.c:246 msgid "" "\n" "Wipe interrupted." @@ -2356,7 +2355,7 @@ msgstr "" "\n" "소거 중단함." -#: src/cryptsetup.c:1413 src/integritysetup.c:81 src/integritysetup.c:289 +#: src/cryptsetup.c:1414 src/integritysetup.c:81 src/integritysetup.c:291 msgid "" "Wiping device to initialize integrity checksum.\n" "You can interrupt this by pressing CTRL+c (rest of not wiped device will contain invalid checksum).\n" @@ -2364,167 +2363,167 @@ msgstr "" "무결성 체크섬을 초기화하기 위해 장치를 소거합니다.\n" "CTRL+c 키를 눌러 이 동작을 중단할 수 있습니다 (소거하지 않은 장치의 나머지 영역에 부적절한 체크섬이 있을 수도 있음).\n" -#: src/cryptsetup.c:1435 src/integritysetup.c:103 +#: src/cryptsetup.c:1436 src/integritysetup.c:103 #, c-format msgid "Cannot deactivate temporary device %s." msgstr "%s 임시 장치의 동작을 해제할 수 없습니다." -#: src/cryptsetup.c:1483 +#: src/cryptsetup.c:1484 msgid "OPAL hw-only encryption does not support --cipher and --key-size, options ignored." msgstr "OPAL 하드웨어 전용 암호화는 --cipher와 --key-size 를 지원하지 않아, 옵션을 무시했습니다." -#: src/cryptsetup.c:1496 +#: src/cryptsetup.c:1497 msgid "Integrity option can be used only for LUKS2 format." msgstr "LUKS2 형식에 대해서\"만\" 무결성 옵션을 사용할 수 있습니다." -#: src/cryptsetup.c:1501 src/cryptsetup.c:1581 +#: src/cryptsetup.c:1502 src/cryptsetup.c:1582 msgid "Unsupported LUKS2 metadata size options." msgstr "지원하지 않는 LUKS2 메타데이터 크기 옵션." -#: src/cryptsetup.c:1506 +#: src/cryptsetup.c:1507 msgid "OPAL is supported only for LUKS2 format." msgstr "OPAL은 LUKS2 형식에서만 지원합니다." -#: src/cryptsetup.c:1511 +#: src/cryptsetup.c:1512 msgid "Inline hw tags are supported only for LUKS2 format." msgstr "인라인 하드웨어 태그는 LUKS2 형식에서만 지원합니다." -#: src/cryptsetup.c:1520 +#: src/cryptsetup.c:1521 msgid "Header file does not exist, do you want to create it?" msgstr "헤더 파일이 없습니다. 만드시겠습니까?" -#: src/cryptsetup.c:1528 +#: src/cryptsetup.c:1529 #, c-format msgid "Cannot create header file %s." msgstr "%s 헤더 파일을 만들 수 없습니다." -#: src/cryptsetup.c:1554 src/integritysetup.c:126 src/integritysetup.c:141 -#: src/integritysetup.c:150 src/integritysetup.c:328 src/integritysetup.c:336 -#: src/integritysetup.c:346 +#: src/cryptsetup.c:1555 src/integritysetup.c:127 src/integritysetup.c:142 +#: src/integritysetup.c:151 src/integritysetup.c:330 src/integritysetup.c:338 +#: src/integritysetup.c:348 msgid "No known integrity specification pattern detected." msgstr "알려진 무결성 명세 패턴이 없습니다." -#: src/cryptsetup.c:1556 +#: src/cryptsetup.c:1557 msgid "Cannot use specified integrity key size." msgstr "지정 무결성 키 크기를 사용할 수 없습니다." -#: src/cryptsetup.c:1574 +#: src/cryptsetup.c:1575 #, c-format msgid "Cannot use %s as on-disk header." msgstr "%s을(를) 디스크 저장 헤더로 활용할 수 없습니다." -#: src/cryptsetup.c:1603 src/integritysetup.c:172 +#: src/cryptsetup.c:1604 src/integritysetup.c:173 #, c-format msgid "This will overwrite data on %s irrevocably." msgstr "이 동작은 %s의 데이터를 돌이킬 수 없도록 덮어쓰기합니다." -#: src/cryptsetup.c:1640 +#: src/cryptsetup.c:1641 msgid "OPAL Admin password cannot be empty." msgstr "OPAL 관리자 암호는 비워둘 수 없습니다." -#: src/cryptsetup.c:1654 src/cryptsetup.c:2098 src/cryptsetup.c:2241 -#: src/cryptsetup.c:2376 src/cryptsetup.c:2442 src/utils_reencrypt_luks1.c:428 +#: src/cryptsetup.c:1655 src/cryptsetup.c:2099 src/cryptsetup.c:2242 +#: src/cryptsetup.c:2377 src/cryptsetup.c:2443 src/utils_reencrypt_luks1.c:428 msgid "Failed to set pbkdf parameters." msgstr "pbkdf 매개변수 설정 실패." -#: src/cryptsetup.c:1785 +#: src/cryptsetup.c:1786 msgid "Reduced data offset is allowed only for detached LUKS header." msgstr "데이터 오프셋 값의 감소 조절은 LUKS 헤더를 장치에서 분리했을 때만 가능합니다." -#: src/cryptsetup.c:1792 +#: src/cryptsetup.c:1793 #, c-format msgid "LUKS file container %s is too small for activation, there is no remaining space for data." msgstr "%s LUKS 파일 컨테이너의 동작을 개시하기에는 너무 작습니다. 데이터 저장에 필요한 여분 공간이 없습니다." -#: src/cryptsetup.c:1834 src/cryptsetup.c:2247 src/utils_reencrypt.c:277 -#: src/utils_reencrypt.c:369 src/utils_reencrypt.c:1907 +#: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:278 +#: src/utils_reencrypt.c:371 src/utils_reencrypt.c:1910 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "키 슬롯을 누락한 상태에서 LUKS의 볼륨 키 크기를 알 수 없습니다. --key-size 옵션을 사용하십시오." -#: src/cryptsetup.c:1853 src/utils_reencrypt.c:303 +#: src/cryptsetup.c:1854 src/utils_reencrypt.c:304 msgid "Device requires two volume keys." msgstr "장치에 볼륨 키 두개가 필요합니다." -#: src/cryptsetup.c:1888 +#: src/cryptsetup.c:1889 msgid "Some specified activation parameters were ignored with OPAL hw-only encryption." msgstr "OPAL 하드웨어 전용 암호화시 몇가지 동작 개시 매개 변수는 무시합니다." -#: src/cryptsetup.c:1893 +#: src/cryptsetup.c:1894 msgid "Device activated but cannot make flags persistent." msgstr "장치 동작을 개시했으나, 플래그를 영속적으로 적용할 수는 없습니다." -#: src/cryptsetup.c:1973 src/cryptsetup.c:2041 +#: src/cryptsetup.c:1974 src/cryptsetup.c:2042 #, c-format msgid "Keyslot %d is selected for deletion." msgstr "%d번 키 슬롯을 삭제 대상으로 선택했습니다." -#: src/cryptsetup.c:1985 src/cryptsetup.c:2045 +#: src/cryptsetup.c:1986 src/cryptsetup.c:2046 msgid "This is the last keyslot. Device will become unusable after purging this key." msgstr "이 키 슬롯이 마지막입니다. 이 키를 제거하면 장치를 사용할 수 없습니다." -#: src/cryptsetup.c:1986 +#: src/cryptsetup.c:1987 msgid "Enter any remaining passphrase: " msgstr "임의의 나머지 암호 입력: " -#: src/cryptsetup.c:1987 src/cryptsetup.c:2047 +#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 msgid "Operation aborted, the keyslot was NOT wiped.\n" msgstr "동작을 멈추었습니다. 키 슬롯을 소거하지 않았습니다.\n" -#: src/cryptsetup.c:2023 +#: src/cryptsetup.c:2024 msgid "Enter passphrase to be deleted: " msgstr "삭제할 암호 입력: " -#: src/cryptsetup.c:2073 src/cryptsetup.c:2425 src/cryptsetup.c:3085 -#: src/cryptsetup.c:3252 +#: src/cryptsetup.c:2074 src/cryptsetup.c:2426 src/cryptsetup.c:3087 +#: src/cryptsetup.c:3254 #, c-format msgid "Device %s is not a valid LUKS2 device." msgstr "%s 장치는 적절한 LUKS2 장치가 아닙니다." -#: src/cryptsetup.c:2112 src/cryptsetup.c:2311 +#: src/cryptsetup.c:2113 src/cryptsetup.c:2312 msgid "Enter new passphrase for key slot: " msgstr "키 슬롯의 새 암호 입력: " -#: src/cryptsetup.c:2146 src/utils_luks.c:342 +#: src/cryptsetup.c:2147 src/utils_luks.c:342 #, c-format msgid "Enter token PIN: " msgstr "토큰 PIN 입력: " -#: src/cryptsetup.c:2148 src/utils_luks.c:344 +#: src/cryptsetup.c:2149 src/utils_luks.c:344 #, c-format msgid "Enter token %d PIN: " msgstr "%d번 토큰 PIN 입력: " -#: src/cryptsetup.c:2207 +#: src/cryptsetup.c:2208 msgid "WARNING: The --key-slot parameter is used for new keyslot number.\n" msgstr "경고: --key-slot 매개변수를 새 키 슬롯 번호에 사용했습니다.\n" -#: src/cryptsetup.c:2284 src/utils_reencrypt_luks1.c:1094 +#: src/cryptsetup.c:2285 src/utils_reencrypt_luks1.c:1094 #, c-format msgid "Enter any existing passphrase: " msgstr "기존 임의의 암호 입력: " -#: src/cryptsetup.c:2380 +#: src/cryptsetup.c:2381 msgid "Enter passphrase to be changed: " msgstr "바꿀 암호 입력: " -#: src/cryptsetup.c:2396 src/utils_reencrypt_luks1.c:1080 +#: src/cryptsetup.c:2397 src/utils_reencrypt_luks1.c:1080 msgid "Enter new passphrase: " msgstr "새 암호 입력: " -#: src/cryptsetup.c:2446 +#: src/cryptsetup.c:2447 msgid "Enter passphrase for keyslot to be converted: " msgstr "키 슬롯을 변환할 암호 입력: " -#: src/cryptsetup.c:2470 +#: src/cryptsetup.c:2471 msgid "Only one device argument for isLuks operation is supported." msgstr "isLuks 동작에 대해 하나의 장치 인자만 지원합니다." -#: src/cryptsetup.c:2575 +#: src/cryptsetup.c:2576 #, c-format msgid "Keyslot %d does not contain unbound key." msgstr "%d번 키 슬롯에는 범위 밖 키가 없습니다." -#: src/cryptsetup.c:2580 +#: src/cryptsetup.c:2581 msgid "" "The header dump with unbound key is sensitive information.\n" "This dump should be stored encrypted in a safe place." @@ -2532,52 +2531,52 @@ msgstr "" "범위 밖 키를 내포하는 헤더 덤프에 민감 정보가 들어있습니다.\n" "이 덤프는 안전한 위치에 암호화 하여 저장해야 합니다." -#: src/cryptsetup.c:2675 src/cryptsetup.c:2711 +#: src/cryptsetup.c:2676 src/cryptsetup.c:2713 #, c-format msgid "%s is not active %s device name." msgstr "%s은(는) 동작 중인 %s 장치 이름이 아닙니다." -#: src/cryptsetup.c:2706 +#: src/cryptsetup.c:2708 #, c-format msgid "%s is not active LUKS device name or header is missing." msgstr "%s은(는) 동작 중인 LUKS 장치 이름이 아니거나 헤더가 빠졌습니다." -#: src/cryptsetup.c:2783 src/cryptsetup.c:2802 +#: src/cryptsetup.c:2785 src/cryptsetup.c:2804 msgid "Option --header-backup-file is required." msgstr "--header-backup-file 옵션이 필요합니다." -#: src/cryptsetup.c:2833 +#: src/cryptsetup.c:2835 #, c-format msgid "%s is not cryptsetup managed device." msgstr "%s은(는) cryptsetup으로 관리하는 장치가 아닙니다." -#: src/cryptsetup.c:2844 +#: src/cryptsetup.c:2846 #, c-format msgid "Refresh is not supported for device type %s" msgstr "%s 장치 형식에는 새로 고침 (최신화) 동작을 지원하지 않습니다." -#: src/cryptsetup.c:2894 +#: src/cryptsetup.c:2896 #, c-format msgid "Unrecognized metadata device type %s." msgstr "인식할 수 없는 %s 메타데이터 장치 형식." -#: src/cryptsetup.c:2896 +#: src/cryptsetup.c:2898 msgid "Command requires device and mapped name as arguments." msgstr "명쳥에 장치와 매핑 이름을 인자로 지정해야 합니다." -#: src/cryptsetup.c:2914 +#: src/cryptsetup.c:2916 msgid "Enter OPAL PSID: " msgstr "OPAL PSID 입력: " -#: src/cryptsetup.c:2914 +#: src/cryptsetup.c:2916 msgid "Enter OPAL Admin password: " msgstr "OPAL 관리자 암호 입력: " -#: src/cryptsetup.c:2922 +#: src/cryptsetup.c:2924 msgid "WARNING: WHOLE disk will be factory reset and all data will be lost! Continue?" msgstr "경고: 전체 디스크를 공장 초기화하며, 모든 데이터를 잃게 됩니다! 계속 하시겠습니까?" -#: src/cryptsetup.c:2965 +#: src/cryptsetup.c:2967 #, c-format msgid "" "This operation will erase all keyslots on device %s.\n" @@ -2586,363 +2585,363 @@ msgstr "" "이 동작은 %s 장치의 모든 키 슬롯을 지웁니다.\n" "이 동작이 끝나면 장치를 사용할 수 없습니다." -#: src/cryptsetup.c:2972 +#: src/cryptsetup.c:2974 msgid "Operation aborted, keyslots were NOT wiped.\n" msgstr "동작을 멈추었습니다. 키 슬롯을 소거하지 않았습니다.\n" -#: src/cryptsetup.c:3011 +#: src/cryptsetup.c:3013 msgid "Invalid LUKS type, only luks1 and luks2 are supported." msgstr "부적절한 LUKS 형식, luks1 및 luks2 형식만 지원합니다." -#: src/cryptsetup.c:3027 +#: src/cryptsetup.c:3029 #, c-format msgid "Device is already %s type." msgstr "장치가 이미 %s 형식입니다." -#: src/cryptsetup.c:3034 +#: src/cryptsetup.c:3036 #, c-format msgid "This operation will convert %s to %s format.\n" msgstr "이 동작은 %s을 %s 형식으로 변환합니다.\n" -#: src/cryptsetup.c:3037 +#: src/cryptsetup.c:3039 msgid "Operation aborted, device was NOT converted.\n" msgstr "동작을 멈추었습니다. 장치를 변환하지 \"않았습니다\".\n" -#: src/cryptsetup.c:3077 +#: src/cryptsetup.c:3079 msgid "Option --priority, --label or --subsystem is missing." msgstr "--priority, --label, --subsystem 옵션 중 하나가 빠졌습니다." -#: src/cryptsetup.c:3111 src/cryptsetup.c:3151 src/cryptsetup.c:3171 +#: src/cryptsetup.c:3113 src/cryptsetup.c:3153 src/cryptsetup.c:3173 #, c-format msgid "Token %d is invalid." msgstr "%d번 토큰이 부적절합니다." -#: src/cryptsetup.c:3114 src/cryptsetup.c:3174 +#: src/cryptsetup.c:3116 src/cryptsetup.c:3176 #, c-format msgid "Token %d in use." msgstr "%d번 토큰은 사용중입니다." -#: src/cryptsetup.c:3126 +#: src/cryptsetup.c:3128 #, c-format msgid "Failed to add luks2-keyring token %d." msgstr "luks2-keyring 토큰 %d번 추가 실패." -#: src/cryptsetup.c:3137 src/cryptsetup.c:3200 +#: src/cryptsetup.c:3139 src/cryptsetup.c:3202 #, c-format msgid "Failed to assign token %d to keyslot %d." msgstr "키 슬롯 %2$d번으로의 토큰 %1$d번 할당 실패." -#: src/cryptsetup.c:3154 +#: src/cryptsetup.c:3156 #, c-format msgid "Token %d is not in use." msgstr "%d번 토큰은 미사용중입니다." -#: src/cryptsetup.c:3191 +#: src/cryptsetup.c:3193 msgid "Failed to import token from file." msgstr "파일에서 토큰 가져오기 실패." -#: src/cryptsetup.c:3216 +#: src/cryptsetup.c:3218 #, c-format msgid "Failed to get token %d for export." msgstr "내보낼 %d번 토큰 가져오기 실패." -#: src/cryptsetup.c:3229 +#: src/cryptsetup.c:3231 #, c-format msgid "Token %d is not assigned to keyslot %d." msgstr "%d번 토큰은 %d번 키 슬롯에 할당하지 않았습니다." -#: src/cryptsetup.c:3231 src/cryptsetup.c:3238 +#: src/cryptsetup.c:3233 src/cryptsetup.c:3240 #, c-format msgid "Failed to unassign token %d from keyslot %d." msgstr "%d번 키 슬롯에서 %d번 토큰 할당 해제 실패." -#: src/cryptsetup.c:3297 +#: src/cryptsetup.c:3299 msgid "Option --tcrypt-hidden, --tcrypt-system or --tcrypt-backup is supported only for TCRYPT device." msgstr "--tcrypt-hidden, --tcrypt-system, --tcrypt-backup 옵션은 TCRYPT 장치 형식에서만 지원합니다." -#: src/cryptsetup.c:3300 +#: src/cryptsetup.c:3302 msgid "Option --veracrypt or --disable-veracrypt is supported only for TCRYPT device type." msgstr "--veracrypt, --disable-veracrypt 옵션은 TCRYPT 장치 형식에서만 지원합니다." -#: src/cryptsetup.c:3303 +#: src/cryptsetup.c:3305 msgid "Option --veracrypt-pim is supported only for VeraCrypt compatible devices." msgstr "--veracrypt-pim 옵션은 VeraCrypt 호환 장치에서만 지원합니다." -#: src/cryptsetup.c:3307 +#: src/cryptsetup.c:3309 msgid "Option --veracrypt-query-pim is supported only for VeraCrypt compatible devices." msgstr "--veracrypt-query-pim 옵션은 VeraCrypt 호환 장치에서만 지원합니다." -#: src/cryptsetup.c:3309 +#: src/cryptsetup.c:3311 msgid "The options --veracrypt-pim and --veracrypt-query-pim are mutually exclusive." msgstr "--veracrypt-pim 옵션과 --veracrypt-query-pim 옵션은 혼용할 수 없습니다." -#: src/cryptsetup.c:3318 +#: src/cryptsetup.c:3320 msgid "Option --persistent is not allowed with --test-passphrase." msgstr "--persistent 옵션은 --test-passphrase 옵션의 혼용을 허용하지 않습니다." -#: src/cryptsetup.c:3321 +#: src/cryptsetup.c:3323 msgid "Options --refresh and --test-passphrase are mutually exclusive." msgstr "--refresh 옵션과 --test-passphrase 옵션은 혼용할 수 없습니다" -#: src/cryptsetup.c:3324 +#: src/cryptsetup.c:3326 msgid "Option --shared is allowed only for open of plain device." msgstr "--shared 옵션 사용은 일반 장비를 열 때만 허용합니다." -#: src/cryptsetup.c:3327 +#: src/cryptsetup.c:3329 msgid "Option --skip is supported only for open of plain and loopaes devices." msgstr "--skip 옵션 사용은 일반 장비와 루프 장비를 열 때만 지원합니다." -#: src/cryptsetup.c:3330 +#: src/cryptsetup.c:3332 msgid "Option --offset with open action is only supported for plain and loopaes devices." msgstr "열기 동작시 --offset 옵션의 사용은 일반 장비와 루프 장비에서만 지원합니다." -#: src/cryptsetup.c:3333 +#: src/cryptsetup.c:3335 msgid "Option --tcrypt-hidden cannot be combined with --allow-discards." msgstr "--tcrypt-hidden 옵션과 --allow-discards 옵션은 혼용할 수 없습니다." -#: src/cryptsetup.c:3337 +#: src/cryptsetup.c:3339 msgid "Sector size option with open action is supported only for plain devices." msgstr "섹터 크기 옵션과 열기 동작은 일반 장비 에서만 지원합니다." -#: src/cryptsetup.c:3341 +#: src/cryptsetup.c:3343 msgid "Large IV sectors option is supported only for opening plain type device with sector size larger than 512 bytes." msgstr "Large IV 섹터 옵션은 512 바이트 이상의 섹터 크기를 가진 일반 장비를 열 때만 지원합니다." -#: src/cryptsetup.c:3346 +#: src/cryptsetup.c:3348 msgid "Option --test-passphrase is allowed only for open of LUKS, TCRYPT, BITLK and FVAULT2 devices." msgstr "--test-passphrase 옵션 사용은 LUKS, TCRYPT, BITLK, FVAULT2 장비를 열 때만 허용합니다." -#: src/cryptsetup.c:3349 src/cryptsetup.c:3379 +#: src/cryptsetup.c:3351 src/cryptsetup.c:3381 msgid "Options --device-size and --size cannot be combined." msgstr "--device-size 옵션과 --size 옵션은 혼용할 수 없습니다." -#: src/cryptsetup.c:3352 +#: src/cryptsetup.c:3354 msgid "Option --unbound is allowed only for open of luks device." msgstr "--unbound 옵션의 사용은 luks 장치를 열 때만 허용합니다." -#: src/cryptsetup.c:3355 +#: src/cryptsetup.c:3357 msgid "Option --unbound cannot be used without --test-passphrase." msgstr "--unbound 옵션은 --test-passphrase 옵션을 제외하고는 사용할 수 없습니다." -#: src/cryptsetup.c:3359 +#: src/cryptsetup.c:3361 msgid "Option --volume-key-keyring cannot be combined with --hash or --volume-key-file." msgstr "--volume-key-keyring 옵션은 --hash 옵션 또는 --volume-key-file 옵션과 혼용할 수 없습니다." -#: src/cryptsetup.c:3362 +#: src/cryptsetup.c:3364 msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "--volume-key-file 옵션 개별 지정에 따라 --key-size 옵션을 하나씩 짝으로 지정해야 합니다." -#: src/cryptsetup.c:3371 src/veritysetup.c:673 src/integritysetup.c:787 +#: src/cryptsetup.c:3373 src/veritysetup.c:673 src/integritysetup.c:793 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "--cancel-deferred 옵션과 --deferred 옵션은 혼용할 수 없습니다." -#: src/cryptsetup.c:3387 +#: src/cryptsetup.c:3389 msgid "Option --active-name can be set only for LUKS2 device." msgstr "--active-name 옵션은 LUKS2 장치에 대해서만 설정할 수 있습니다." -#: src/cryptsetup.c:3390 +#: src/cryptsetup.c:3392 msgid "Options --active-name and --force-offline-reencrypt cannot be combined." msgstr "--active-name 옵션과 --force-offline-reencrypt 옵션은 혼용할 수 없습니다." -#: src/cryptsetup.c:3393 +#: src/cryptsetup.c:3395 msgid "Options --new-volume-key-file and --keep-key cannot be combined." msgstr "--new-volume-key-file 옵션과 --keep-key 옵션은 혼용할 수 없습니다." -#: src/cryptsetup.c:3396 +#: src/cryptsetup.c:3398 msgid "Options --new-volume-key-keyring and --keep-key cannot be combined." msgstr "--new-volume-key-keyring 옵션과 --keep-key 옵션은 혼용할 수 없습니다." -#: src/cryptsetup.c:3404 src/cryptsetup.c:3434 +#: src/cryptsetup.c:3406 src/cryptsetup.c:3436 msgid "Keyslot specification is required." msgstr "키 슬롯 명세가 필요합니다." -#: src/cryptsetup.c:3412 +#: src/cryptsetup.c:3414 msgid "Options --align-payload and --offset cannot be combined." msgstr "--align-payload 옵션과 --offset 옵션은 혼용할 수 없습니다." -#: src/cryptsetup.c:3415 +#: src/cryptsetup.c:3417 msgid "Option --integrity-no-wipe can be used only for format action with integrity extension." msgstr "--integrity-no-wipe 옵션은 무결성 확장 기능을 동반한 포매팅 동작에만 사용할 수 있습니다." -#: src/cryptsetup.c:3418 +#: src/cryptsetup.c:3420 msgid "Only one of --use-[u]random options is allowed." msgstr "--use-[u]random 옵션 중 하나만 허용합니다." -#: src/cryptsetup.c:3426 +#: src/cryptsetup.c:3428 msgid "Key size is required with --unbound option." msgstr "키 크키 값은 --unbound 옵션 사용이 필요합니다." -#: src/cryptsetup.c:3446 +#: src/cryptsetup.c:3448 msgid "Invalid token action." msgstr "부적절한 토근 동작입니다." -#: src/cryptsetup.c:3449 +#: src/cryptsetup.c:3451 msgid "--key-description parameter is mandatory for token add action." msgstr "--key-description 매개변수는 토큰 추가 동작에 있어 필수입니다." -#: src/cryptsetup.c:3453 src/cryptsetup.c:3466 +#: src/cryptsetup.c:3455 src/cryptsetup.c:3468 msgid "Action requires specific token. Use --token-id parameter." msgstr "동작에 지정 토큰이 필요합니다. --token-id 매개변수를 활용하십시오." -#: src/cryptsetup.c:3457 +#: src/cryptsetup.c:3459 msgid "Option --unbound is valid only with token add action." msgstr "--unbound 옵션은 토큰 추가 동작일 설정했을 경우에만 유효합니다." -#: src/cryptsetup.c:3459 +#: src/cryptsetup.c:3461 msgid "Options --key-slot and --unbound cannot be combined." msgstr "--key-slot 옵션과 --unbound 옵션은 함께 사용할 수 없습니다." -#: src/cryptsetup.c:3464 +#: src/cryptsetup.c:3466 msgid "Action requires specific keyslot. Use --key-slot parameter." msgstr "동작에 지정 키 슬롯이 필요합니다. --key-slot 매개변수를 활용하십시오." -#: src/cryptsetup.c:3480 +#: src/cryptsetup.c:3482 msgid " [--type ] []" msgstr "<장치> [--type <형식>] [<명칭>]" -#: src/cryptsetup.c:3480 src/veritysetup.c:487 src/integritysetup.c:554 +#: src/cryptsetup.c:3482 src/veritysetup.c:487 src/integritysetup.c:560 msgid "open device as " msgstr "<명칭> 으로 장치를 엽니다" -#: src/cryptsetup.c:3481 src/cryptsetup.c:3482 src/cryptsetup.c:3483 -#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:555 -#: src/integritysetup.c:556 src/integritysetup.c:558 +#: src/cryptsetup.c:3483 src/cryptsetup.c:3484 src/cryptsetup.c:3485 +#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:561 +#: src/integritysetup.c:562 src/integritysetup.c:564 msgid "" msgstr "<명칭>" -#: src/cryptsetup.c:3481 src/veritysetup.c:488 src/integritysetup.c:555 +#: src/cryptsetup.c:3483 src/veritysetup.c:488 src/integritysetup.c:561 msgid "close device (remove mapping)" msgstr "장치를 닫습니다 (매핑 제거)" -#: src/cryptsetup.c:3482 src/integritysetup.c:558 +#: src/cryptsetup.c:3484 src/integritysetup.c:564 msgid "resize active device" msgstr "활성 장치 크기를 조절합니다." -#: src/cryptsetup.c:3483 +#: src/cryptsetup.c:3485 msgid "show device status" msgstr "장치 상태를 보여줍니다" -#: src/cryptsetup.c:3484 +#: src/cryptsetup.c:3486 msgid "[--cipher ]" msgstr "[--cipher <암호화방식>]" -#: src/cryptsetup.c:3484 +#: src/cryptsetup.c:3486 msgid "benchmark cipher" msgstr "암호화 방식을 비교 시험합니다" -#: src/cryptsetup.c:3485 src/cryptsetup.c:3486 src/cryptsetup.c:3487 -#: src/cryptsetup.c:3488 src/cryptsetup.c:3489 src/cryptsetup.c:3496 -#: src/cryptsetup.c:3497 src/cryptsetup.c:3498 src/cryptsetup.c:3499 -#: src/cryptsetup.c:3500 src/cryptsetup.c:3501 src/cryptsetup.c:3502 -#: src/cryptsetup.c:3503 src/cryptsetup.c:3504 src/cryptsetup.c:3505 +#: src/cryptsetup.c:3487 src/cryptsetup.c:3488 src/cryptsetup.c:3489 +#: src/cryptsetup.c:3490 src/cryptsetup.c:3491 src/cryptsetup.c:3498 +#: src/cryptsetup.c:3499 src/cryptsetup.c:3500 src/cryptsetup.c:3501 +#: src/cryptsetup.c:3502 src/cryptsetup.c:3503 src/cryptsetup.c:3504 +#: src/cryptsetup.c:3505 src/cryptsetup.c:3506 src/cryptsetup.c:3507 msgid "" msgstr "<장치>" -#: src/cryptsetup.c:3485 +#: src/cryptsetup.c:3487 msgid "try to repair on-disk metadata" msgstr "디스크 메타데이터의 복구를 시도합니다." -#: src/cryptsetup.c:3486 +#: src/cryptsetup.c:3488 msgid "reencrypt LUKS2 device" msgstr "LUKS2 장치를 재암호화합니다" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3489 msgid "erase all keyslots (remove encryption key)" msgstr "모든 키 슬롯을 삭제합니다 (암호화 키 제거)" -#: src/cryptsetup.c:3488 +#: src/cryptsetup.c:3490 msgid "convert LUKS from/to LUKS2 format" msgstr "LUKS 에서/을 LUKS2 으로/부터 형식을 상호 변환합니다" -#: src/cryptsetup.c:3489 +#: src/cryptsetup.c:3491 msgid "set permanent configuration options for LUKS2" msgstr "LUKS2의 영구 설정 옵션을 설정합니다" -#: src/cryptsetup.c:3490 src/cryptsetup.c:3491 +#: src/cryptsetup.c:3492 src/cryptsetup.c:3493 msgid " []" msgstr "<장치> [<새_키_파일>]" -#: src/cryptsetup.c:3490 +#: src/cryptsetup.c:3492 msgid "formats a LUKS device" msgstr "LUKS 장치를 포매팅합니다" -#: src/cryptsetup.c:3491 +#: src/cryptsetup.c:3493 msgid "add key to LUKS device" msgstr "LUKS 장치에 키를 추가합니다" -#: src/cryptsetup.c:3492 src/cryptsetup.c:3493 src/cryptsetup.c:3494 +#: src/cryptsetup.c:3494 src/cryptsetup.c:3495 src/cryptsetup.c:3496 msgid " []" msgstr "<장치> [<키_파일>]" -#: src/cryptsetup.c:3492 +#: src/cryptsetup.c:3494 msgid "removes supplied key or key file from LUKS device" msgstr "보관 키 또는 키 파일을 LUKS 장치에서 제거합니다" -#: src/cryptsetup.c:3493 +#: src/cryptsetup.c:3495 msgid "changes supplied key or key file of LUKS device" msgstr "LUKS 장치의 보관 키 또는 키 파일을 바꿉니다" -#: src/cryptsetup.c:3494 +#: src/cryptsetup.c:3496 msgid "converts a key to new pbkdf parameters" msgstr "새 pbkdf 매개변수를 사용하여 키를 변환합니다" -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3497 msgid " " msgstr "<장치> <키_슬롯>" -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3497 msgid "wipes key with number from LUKS device" msgstr "LUKS 장치에서 <키_슬롯> 번호로 키를 소거합니다" -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3498 msgid "print UUID of LUKS device" msgstr "LUKS 장치의 UUID를 출력합니다" -#: src/cryptsetup.c:3497 +#: src/cryptsetup.c:3499 msgid "tests for LUKS partition header" msgstr "<장치>의 LUKS 분할 영역 헤더를 시험합니다" -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3500 msgid "dump LUKS partition information" msgstr "LUKS 분할 영역 정보 덤프" -#: src/cryptsetup.c:3499 +#: src/cryptsetup.c:3501 msgid "dump TCRYPT device information" msgstr "TCRYPT 장치 정보 덤프" -#: src/cryptsetup.c:3500 +#: src/cryptsetup.c:3502 msgid "dump BITLK device information" msgstr "BITLK 장치 정보 덤프" -#: src/cryptsetup.c:3501 +#: src/cryptsetup.c:3503 msgid "dump FVAULT2 device information" msgstr "FVAULT2 장치 정보 덤프" -#: src/cryptsetup.c:3502 +#: src/cryptsetup.c:3504 msgid "Suspend LUKS device and wipe key (all IOs are frozen)" msgstr "LUKS 장치를 대기 상태로 놓고 키를 소거합니다 (모든 입출력 동작을 중단)" -#: src/cryptsetup.c:3503 +#: src/cryptsetup.c:3505 msgid "Resume suspended LUKS device" msgstr "대기 상태로 들어간 LUKS 장치의 동작을 재개합니다" -#: src/cryptsetup.c:3504 +#: src/cryptsetup.c:3506 msgid "Backup LUKS device header and keyslots" msgstr "LUKS 장치 헤더와 키 슬롯을 백업합니다" -#: src/cryptsetup.c:3505 +#: src/cryptsetup.c:3507 msgid "Restore LUKS device header and keyslots" msgstr "LUKS 장치 헤더와 키 슬롯을 복원합니다" -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3508 msgid " " msgstr " <장치>" -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3508 msgid "Manipulate LUKS2 tokens" msgstr "LUKS2 토큰을 처리합니다" -#: src/cryptsetup.c:3525 src/veritysetup.c:505 src/integritysetup.c:573 +#: src/cryptsetup.c:3527 src/veritysetup.c:505 src/integritysetup.c:579 msgid "" "\n" " is one of:\n" @@ -2950,7 +2949,7 @@ msgstr "" "\n" "<동작>은 다음 중 하나입니다:\n" -#: src/cryptsetup.c:3531 +#: src/cryptsetup.c:3533 msgid "" "\n" "You can also use old syntax aliases:\n" @@ -2962,7 +2961,7 @@ msgstr "" "\t열기: create (plainOpen), luksOpen, loopaesOpen, tcryptOpen, bitlkOpen, fvault2Open\n" "\t닫기: remove (plainClose), luksClose, loopaesClose, tcryptClose, bitlkClose, fvault2Close\n" -#: src/cryptsetup.c:3535 +#: src/cryptsetup.c:3537 #, c-format msgid "" "\n" @@ -2977,7 +2976,7 @@ msgstr "" "<키_슬롯>은 수정할 LUKS 키 슬롯 번호\n" "<키_파일>은 luksAddKey 동작에 사용할 새 키의 추가 키 파일입니다\n" -#: src/cryptsetup.c:3542 +#: src/cryptsetup.c:3544 #, c-format msgid "" "\n" @@ -2986,7 +2985,7 @@ msgstr "" "\n" "컴파일 과정에 들어간 기본 메타데이터 형식은 %s 입니다(luksFormat 동작용).\n" -#: src/cryptsetup.c:3547 +#: src/cryptsetup.c:3549 msgid "" "\n" "LUKS2 external token plugin support is enabled.\n" @@ -2994,12 +2993,12 @@ msgstr "" "\n" "LUKS2 외부 토큰 플러그인 지원을 사용합니다.\n" -#: src/cryptsetup.c:3548 +#: src/cryptsetup.c:3550 #, c-format msgid "LUKS2 external token plugin path: %s.\n" msgstr "LUKS2 외부 토큰 플러그인 경로: %s.\n" -#: src/cryptsetup.c:3550 +#: src/cryptsetup.c:3552 msgid "" "\n" "LUKS2 external token plugin support is disabled.\n" @@ -3007,7 +3006,7 @@ msgstr "" "\n" "LUKS2 외부 토큰 플러그인 지원 사용을 해제합니다.\n" -#: src/cryptsetup.c:3554 +#: src/cryptsetup.c:3556 #, c-format msgid "" "\n" @@ -3024,7 +3023,7 @@ msgstr "" "LUKS2의 기본 PBKDF: %s\n" "\t반복 횟수: %d, 요구 메모리 용량: %dkB, 병렬 스레드: %d\n" -#: src/cryptsetup.c:3565 +#: src/cryptsetup.c:3567 #, c-format msgid "" "\n" @@ -3039,122 +3038,126 @@ msgstr "" "\t평문: %s, 키: %d비트, 암호 해싱: %s\n" "\tLUKS: %s, 키: %d비트, LUKS 헤더 해싱: %s, RNG: %s\n" -#: src/cryptsetup.c:3574 +#: src/cryptsetup.c:3576 msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: XTS 모드에서의 기본 키 크기(내부 키 2개)가 2배로 늘어납니다.\n" -#: src/cryptsetup.c:3592 src/veritysetup.c:647 src/integritysetup.c:733 +#: src/cryptsetup.c:3594 src/veritysetup.c:647 src/integritysetup.c:739 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: %s 인자 값이 필요합니다" -#: src/cryptsetup.c:3632 src/utils_reencrypt_luks1.c:1143 +#: src/cryptsetup.c:3634 src/utils_reencrypt_luks1.c:1143 msgid "Key slot is invalid." msgstr "키 슬롯이 적절하지 않습니다." -#: src/cryptsetup.c:3660 +#: src/cryptsetup.c:3662 msgid "Device size must be multiple of 512 bytes sector." msgstr "장치 크기는 512 바이트 섹터의 배수여야 합니다." -#: src/cryptsetup.c:3665 +#: src/cryptsetup.c:3667 msgid "Invalid max reencryption hotzone size specification." msgstr "부절적한 최대 재암호화 핫존 크기 지정 값입니다." -#: src/cryptsetup.c:3679 src/cryptsetup.c:3696 src/cryptsetup.c:3708 +#: src/cryptsetup.c:3681 src/cryptsetup.c:3698 src/cryptsetup.c:3710 msgid "Key size must be a multiple of 8 bits" msgstr "키 크기는 8비트의 배수여야 합니다." -#: src/cryptsetup.c:3686 +#: src/cryptsetup.c:3688 msgid "At most 2 key size specifications can be supplied." msgstr "최대 키 크키 명세 2가지를 지정할 수 있습니다." -#: src/cryptsetup.c:3715 src/cryptsetup.c:3726 +#: src/cryptsetup.c:3717 src/cryptsetup.c:3728 #, c-format msgid "At most %d volume key specifications can be supplied." msgstr "최대 볼륨 키 명세 %d가지를 지정할 수 있습니다." -#: src/cryptsetup.c:3738 +#: src/cryptsetup.c:3740 #, c-format msgid "At most %d keyring link specifications can be supplied." msgstr "최대 키 모음 링크 명세 %d가지를 지정할 수 있습니다." -#: src/cryptsetup.c:3747 +#: src/cryptsetup.c:3749 msgid "Maximum device reduce size is 1 GiB." msgstr "최대 장치 축소 용량은 1GiB 입니다." -#: src/cryptsetup.c:3750 +#: src/cryptsetup.c:3752 msgid "Reduce size must be multiple of 512 bytes sector." msgstr "축소 용량은 512바이트 섹터의 배수여야 합니다." -#: src/cryptsetup.c:3767 +#: src/cryptsetup.c:3769 msgid "Option --priority can be only ignore/normal/prefer." msgstr "--priority 옵션은 ignore/normal/prefer 셋 중 한가지 값만 지정 가능합니다." -#: src/cryptsetup.c:3786 src/veritysetup.c:568 src/integritysetup.c:653 +#: src/cryptsetup.c:3774 +msgid "Invalid maximal tries specification." +msgstr "부적절한 최대 시도 지정 값입니다." + +#: src/cryptsetup.c:3793 src/veritysetup.c:568 src/integritysetup.c:659 msgid "Show this help message" msgstr "이 도움말 메시지를 나타냅니다" -#: src/cryptsetup.c:3787 src/veritysetup.c:569 src/integritysetup.c:654 +#: src/cryptsetup.c:3794 src/veritysetup.c:569 src/integritysetup.c:660 msgid "Display brief usage" msgstr "간단한 사용법을 나타냅니다" -#: src/cryptsetup.c:3788 src/veritysetup.c:570 src/integritysetup.c:655 +#: src/cryptsetup.c:3795 src/veritysetup.c:570 src/integritysetup.c:661 msgid "Print package version" msgstr "패키지 버전을 출력합니다" -#: src/cryptsetup.c:3799 src/veritysetup.c:581 src/integritysetup.c:666 +#: src/cryptsetup.c:3806 src/veritysetup.c:581 src/integritysetup.c:672 msgid "Help options:" msgstr "도움말 옵션:" -#: src/cryptsetup.c:3822 src/veritysetup.c:602 src/integritysetup.c:686 +#: src/cryptsetup.c:3829 src/veritysetup.c:602 src/integritysetup.c:692 msgid "[OPTION...] " msgstr "[옵션...] <동작> <동작별_옵션>" -#: src/cryptsetup.c:3831 src/veritysetup.c:611 src/integritysetup.c:697 +#: src/cryptsetup.c:3838 src/veritysetup.c:611 src/integritysetup.c:703 msgid "Argument missing." msgstr "<동작> 인자가 빠졌습니다." -#: src/cryptsetup.c:3910 src/veritysetup.c:642 src/integritysetup.c:728 +#: src/cryptsetup.c:3917 src/veritysetup.c:642 src/integritysetup.c:734 msgid "Unknown action." msgstr "알 수 없는 동작." -#: src/cryptsetup.c:3928 +#: src/cryptsetup.c:3935 msgid "Option --key-file takes precedence over specified key file argument." msgstr "--key-file 옵션은 키 파일 인자 값보다 우선합니다." -#: src/cryptsetup.c:3934 +#: src/cryptsetup.c:3941 msgid "Only one --key-file argument is allowed." msgstr "--key-file 인자는 하나만 허용합니다." -#: src/cryptsetup.c:3939 +#: src/cryptsetup.c:3946 msgid "Password-based key derivation function (PBKDF) can be only pbkdf2 or argon2i/argon2id." msgstr "암호 기반 키 파생 함수(PBKDF)는 pbkdf2 또는 argon2i/argon2id만 지정 가능합니다." -#: src/cryptsetup.c:3944 +#: src/cryptsetup.c:3951 msgid "PBKDF forced iterations cannot be combined with iteration time option." msgstr "PBKDF 강제 반복 옵션은 반복 횟수 옵션과 함께 사용할 수 없습니다." -#: src/cryptsetup.c:3949 +#: src/cryptsetup.c:3956 msgid "Cannot link volume key to a keyring when keyring is disabled." msgstr "키 모음을 사용하지 않을 때는 볼륨 키를 키 모음에 연결할 수 없습니다." -#: src/cryptsetup.c:3954 +#: src/cryptsetup.c:3961 msgid "Cannot use keyring key description when keyring is disabled." msgstr "키 모음을 사용하지 않을 때는 키 모음 키 설명을 사용할 수 없습니다." -#: src/cryptsetup.c:3959 +#: src/cryptsetup.c:3966 msgid "Inline integrity must be used together with --integrity option." msgstr "인라인 무결성 확인은 --integrity 옵션을 함꼐 사용해야 합니다." -#: src/cryptsetup.c:3970 +#: src/cryptsetup.c:3977 msgid "Options --keyslot-cipher and --keyslot-key-size must be used together." msgstr "--keyslot-cipher 옵션과 --keyslow-key-size 옵션을 함께 사용해야 합니다." -#: src/cryptsetup.c:3978 +#: src/cryptsetup.c:3985 msgid "No action taken. Invoked with --test-args option.\n" msgstr "취한 동작이 없습니다. --test-args 옵션을 넣어 실행했습니다.\n" -#: src/cryptsetup.c:3991 +#: src/cryptsetup.c:3998 msgid "Cannot disable metadata locking." msgstr "메타데이터 잠금을 해제할 수 없습니다." @@ -3219,7 +3222,7 @@ msgstr "명령에 <루트_해시> 또는 --root-hash-file 옵션 인자 값이 msgid " " msgstr "<데이터_장치> <해시_장치>" -#: src/veritysetup.c:485 src/integritysetup.c:553 +#: src/veritysetup.c:485 src/integritysetup.c:559 msgid "format device" msgstr "장치를 포매팅합니다" @@ -3235,7 +3238,7 @@ msgstr "장치를 검증합니다" msgid " []" msgstr "<데이터_장치> <명칭> <해시_장치> [<루트_해시>]" -#: src/veritysetup.c:489 src/integritysetup.c:556 +#: src/veritysetup.c:489 src/integritysetup.c:562 msgid "show active device status" msgstr "장치 동작 상황을 보여줍니다" @@ -3243,7 +3246,7 @@ msgstr "장치 동작 상황을 보여줍니다" msgid "" msgstr "<해시_장치>" -#: src/veritysetup.c:490 src/integritysetup.c:557 +#: src/veritysetup.c:490 src/integritysetup.c:563 msgid "show on-disk information" msgstr "디스크 정보를 보여줍니다" @@ -3285,7 +3288,7 @@ msgstr "--panic-on-corruption 옵션과 --restart-on-corruption 옵션을 혼용 msgid "Option --error-as-corruption must be used with --panic-on-corruption or --restart-on-corruption." msgstr "--error-as-corruption 옵션은 --panic-on-corruption 옵션 또는 --restart-on-corruption 옵션을 함께 사용해야 합니다." -#: src/integritysetup.c:168 +#: src/integritysetup.c:169 #, c-format msgid "" "This will overwrite data on %s and %s irrevocably.\n" @@ -3294,33 +3297,33 @@ msgstr "" "%s와 %s의 데이터를 덮어쓰며 돌이킬 수 없습니다.\n" "데이터 장치를 보존하려면 --no-wipe 옵션을 사용하십시오 (그리고 --integrity-recalculate 옵션으로 장치 동작 시작)." -#: src/integritysetup.c:213 +#: src/integritysetup.c:215 #, c-format msgid "Formatted with tag size %u%s, internal integrity %s.\n" msgstr "%u%s 태그 크기와 내부 무결성 %s(으)로 포매팅했습니다.\n" -#: src/integritysetup.c:214 +#: src/integritysetup.c:216 msgid " (inline hw tags)" msgstr " (인라인 hw 태그)" -#: src/integritysetup.c:303 +#: src/integritysetup.c:305 msgid "Setting recalculate flag is not supported, you may consider using --wipe instead." msgstr "재계산 플래그 설정은 지원하지 않습니다. --wipe 옵션 사용을 대신 고려하십시오." -#: src/integritysetup.c:380 src/integritysetup.c:540 +#: src/integritysetup.c:382 src/integritysetup.c:546 #, c-format msgid "Device %s is not a valid INTEGRITY device." msgstr "%s 장치는 적절한 \"무결성\" 장치가 아닙니다." -#: src/integritysetup.c:553 src/integritysetup.c:557 +#: src/integritysetup.c:559 src/integritysetup.c:563 msgid "" msgstr "<무결성_장치>" -#: src/integritysetup.c:554 +#: src/integritysetup.c:560 msgid " " msgstr "<무결성_장치> <명칭>" -#: src/integritysetup.c:577 +#: src/integritysetup.c:583 #, c-format msgid "" "\n" @@ -3331,7 +3334,7 @@ msgstr "" "<명칭> 은 %s에 만들 장치\n" "<무결성_장치>는 무결성 태그와 데이터가 들어간 장치입니다\n" -#: src/integritysetup.c:582 +#: src/integritysetup.c:588 #, c-format msgid "" "\n" @@ -3344,48 +3347,48 @@ msgstr "" "\t체크섬 알고리즘: %s\n" "\t최대 키 파일 크기: %dkB\n" -#: src/integritysetup.c:639 +#: src/integritysetup.c:645 #, c-format msgid "Invalid --%s size. Maximum is %u bytes." msgstr "부적절한 --%s 크기 값입니다. 최대값은 %u 바이트입니다." -#: src/integritysetup.c:742 +#: src/integritysetup.c:748 msgid "Both key file and key size options must be specified." msgstr "키 파일과 키 크기 옵션을 함께 지정해야 합니다." -#: src/integritysetup.c:746 +#: src/integritysetup.c:752 msgid "Both journal integrity key file and key size options must be specified." msgstr "저널 무결성 키와 키 크키 옵션을 함께 지정해야 합니다." -#: src/integritysetup.c:749 +#: src/integritysetup.c:755 msgid "Journal integrity algorithm must be specified if journal integrity key is used." msgstr "저널 무결성 키를 사용한다면 저널 무결성 알고리즘은 지정해야 합니다." -#: src/integritysetup.c:753 +#: src/integritysetup.c:759 msgid "Both journal encryption key file and key size options must be specified." msgstr "저널 암호화 키 파일과 키 크기 옵션을 함께 지정해야 합니다." -#: src/integritysetup.c:756 +#: src/integritysetup.c:762 msgid "Journal encryption algorithm must be specified if journal encryption key is used." msgstr "저널 암호화 키를 사용할 경우 저널 암호화 알고리즘을 지정해야 합니다." -#: src/integritysetup.c:760 +#: src/integritysetup.c:766 msgid "Recovery and bitmap mode options are mutually exclusive." msgstr "복구 및 비트맵 모드 옵션은 혼용할 수 없습니다." -#: src/integritysetup.c:767 +#: src/integritysetup.c:773 msgid "Journal options cannot be used in bitmap mode." msgstr "저널 옵션은 비트맵 모드에서 사용할 수 없습니다." -#: src/integritysetup.c:772 +#: src/integritysetup.c:778 msgid "Bitmap options can be used only in bitmap mode." msgstr "비트맵 옵션은 비트맵 모드에서만 사용할 수 있습니다." -#: src/integritysetup.c:778 +#: src/integritysetup.c:784 msgid "Inline mode cannot be combined with journal or bitmap options." msgstr "인라인 모드는 저널 옵션 또는 비트맵 옵션과 혼용할 수 없습니다." -#: src/integritysetup.c:782 +#: src/integritysetup.c:788 msgid "Inline mode cannot be combined with separate data device." msgstr "인라인 모드는 개별 데이터 장치와 혼용할 수 없습니다." @@ -3739,32 +3742,32 @@ msgstr "LUKS2 암호화 장치가 아닙니다. --decrypt 옵션의 사용이 msgid "Device is in reencryption using datashift resilience. Requested --resilience option cannot be applied." msgstr "데이터 쉬프트 복원 기능을 활용하여 장치를 재암호화중입니다. 요청한 --resilience 옵션을 적용할 수 없습니다." -#: src/utils_reencrypt.c:282 src/utils_reencrypt.c:1924 +#: src/utils_reencrypt.c:283 src/utils_reencrypt.c:1927 msgid "Cannot determine volume key size for LUKS without keyslots, please use --new-key-size option." msgstr "키 슬롯을 제외하고 LUKS 볼륨 키 크기를 확인할 수 없습니다. --new-key-size 옵션을 활용하십시오." -#: src/utils_reencrypt.c:436 +#: src/utils_reencrypt.c:438 msgid "Device requires reencryption recovery. Run repair first." msgstr "장치 재암호화 복원이 필요합니다. 우선 복원을 실행하십시오." -#: src/utils_reencrypt.c:450 +#: src/utils_reencrypt.c:452 #, c-format msgid "Device %s is already in LUKS2 reencryption. Do you wish to resume previously initialised operation?" msgstr "%s 장치가 이미 LUKS2 재암호화 상태입니다. 앞서 초기화한 동작을 재개하시겠습니까?" -#: src/utils_reencrypt.c:561 +#: src/utils_reencrypt.c:563 msgid "Legacy LUKS2 reencryption is no longer supported." msgstr "기존의 LUKS2 재암호화 기능은 더 이상 지원하지 않습니다." -#: src/utils_reencrypt.c:566 +#: src/utils_reencrypt.c:568 msgid "Can not reencrypt LUKS2 device configured to use OPAL." msgstr "OPAL을 사용하도록 설정한 LUKS2 장치를 재암호화할 수 없습니다." -#: src/utils_reencrypt.c:572 +#: src/utils_reencrypt.c:574 msgid "Reencryption of device with integrity profile is not supported." msgstr "무결성 프로파일을 동반한 장치 재암호화는 지원하지 않습니다." -#: src/utils_reencrypt.c:609 +#: src/utils_reencrypt.c:611 #, c-format msgid "" "Requested --sector-size % is incompatible with %s superblock\n" @@ -3773,110 +3776,110 @@ msgstr "" "요청한 --sector-size %1$ 옵션은 %4$s 장치에서 찾은\n" "%2$s 수퍼블록(블록 크기: %3$바이트)과의 호환성이 없습니다." -#: src/utils_reencrypt.c:678 src/utils_reencrypt.c:2204 +#: src/utils_reencrypt.c:680 src/utils_reencrypt.c:2207 msgid "Encryption without detached header (--header) is not possible without data device size reduction (--reduce-device-size)." msgstr "분리 헤더(--header)를 제외한 암호화는 데이터 장치 용량을 줄이지 않고는(--reduce-device-size) 불가능합니다." -#: src/utils_reencrypt.c:687 +#: src/utils_reencrypt.c:689 msgid "Requested data offset must be less than or equal to half of --reduce-device-size parameter." msgstr "요청한 데이터 오프셋은 --reduce-device-size 매개변수 값의 절반보다 작거나 같아야 합니다." -#: src/utils_reencrypt.c:697 +#: src/utils_reencrypt.c:699 #, c-format msgid "Adjusting --reduce-device-size value to twice the --offset % (sectors).\n" msgstr "--reduce-device-size 값을 --offset % (섹터)로 두번 조정합니다.\n" -#: src/utils_reencrypt.c:727 +#: src/utils_reencrypt.c:729 #, c-format msgid "Temporary header file %s already exists. Aborting." msgstr "%s 임시 헤더 파일이 이미 있습니다. 멈춤." -#: src/utils_reencrypt.c:729 src/utils_reencrypt.c:736 +#: src/utils_reencrypt.c:731 src/utils_reencrypt.c:738 #, c-format msgid "Cannot create temporary header file %s." msgstr "%s 임시 헤더 파일을 만들 수 없습니다." -#: src/utils_reencrypt.c:761 +#: src/utils_reencrypt.c:763 msgid "LUKS2 metadata size is larger than data shift value." msgstr "LUKS2 메타데이터 크기가 데이터 쉬프트 값보다 큽니다." -#: src/utils_reencrypt.c:800 +#: src/utils_reencrypt.c:802 #, c-format msgid "Failed to place new header at head of device %s." msgstr "장치 %s의 헤드에 새 헤더 설정 실패." -#: src/utils_reencrypt.c:813 +#: src/utils_reencrypt.c:815 #, c-format msgid "%s/%s is now active and ready for online encryption.\n" msgstr "%s/%s은(는) 이제부터 동작하며 온라인 암호화 대기중입니다.\n" -#: src/utils_reencrypt.c:850 +#: src/utils_reencrypt.c:852 #, c-format msgid "Active device %s is not LUKS2." msgstr "%s 동작 장치는 LUKS2 버전이 아닙니다." -#: src/utils_reencrypt.c:878 +#: src/utils_reencrypt.c:880 msgid "Restoring original LUKS2 header." msgstr "원본 LUKS2 헤더를 복원합니다." -#: src/utils_reencrypt.c:886 +#: src/utils_reencrypt.c:888 msgid "Original LUKS2 header restore failed." msgstr "원본 LUKS2 헤더 복원 실패." -#: src/utils_reencrypt.c:918 +#: src/utils_reencrypt.c:920 #, c-format msgid "Header file %s does not exist. Do you want to initialize LUKS2 decryption of device %s and export LUKS2 header to file %s?" msgstr "%s 헤더 파일이 없습니다. %s 장치의 LUKS2 해독 과정을 초기화하고 %s 파일로 LUKS2 헤더를 내보낼까요?" -#: src/utils_reencrypt.c:961 +#: src/utils_reencrypt.c:963 msgid "Failed to add read/write permissions to exported header file." msgstr "내보낸 헤더 파일의 읽기/쓰기 권한 추가 실패." -#: src/utils_reencrypt.c:1015 +#: src/utils_reencrypt.c:1017 #, c-format msgid "Reencryption initialization failed. Header backup is available in %s." msgstr "재엄호화 초기화 실패. 헤더 백업은 %s에 있습니다." -#: src/utils_reencrypt.c:1043 +#: src/utils_reencrypt.c:1045 msgid "LUKS2 decryption is supported with detached header device only (with data offset set to 0)." msgstr "분리한 헤더 장치에서만 LUKS2 해독을 지원합니다 (데이터 오프셋 0값으로)." -#: src/utils_reencrypt.c:1487 +#: src/utils_reencrypt.c:1490 msgid "No token could unlock the device." msgstr "장치 잠금을 해제할 수 있는 토큰이 없습니다." -#: src/utils_reencrypt.c:1519 src/utils_reencrypt.c:1528 +#: src/utils_reencrypt.c:1522 src/utils_reencrypt.c:1531 msgid "Not enough free keyslots for reencryption." msgstr "재암호화에 활용할 여분의 키 슬롯이 부족합니다." -#: src/utils_reencrypt.c:1559 +#: src/utils_reencrypt.c:1562 msgid "Key file or keyring key description can be used only with --key-slot or with exactly one key slot active." msgstr "키 파일 또는 키 모음의 키 설명은 --key-slot 옵션의 값으로 또는 정확히 하나의 동작하는 키 슬롯과 사용할 수 있습니다." -#: src/utils_reencrypt.c:1566 src/utils_reencrypt.c:1579 +#: src/utils_reencrypt.c:1569 src/utils_reencrypt.c:1582 #: src/utils_reencrypt_luks1.c:1092 src/utils_reencrypt_luks1.c:1103 #, c-format msgid "Enter passphrase for key slot %d: " msgstr "키 슬롯 %d번의 암호 입력: " -#: src/utils_reencrypt.c:1876 +#: src/utils_reencrypt.c:1879 #, c-format msgid "Switching data encryption cipher to %s.\n" msgstr "데이터 암호화 암호 알고리즘을 %s(으)로 전환합니다.\n" -#: src/utils_reencrypt.c:1977 src/utils_reencrypt.c:1998 +#: src/utils_reencrypt.c:1980 src/utils_reencrypt.c:2001 msgid "Use --force-no-keyslots to reencrypt device with active keyslots by passing volume keys directly." msgstr "볼륨 키를 직접 전달하여 동작하고 있는 키 슬롯으로 장치를 재암호화하려면 --force-no-keyslots 옵션을 사용하십시오." -#: src/utils_reencrypt.c:1993 +#: src/utils_reencrypt.c:1996 msgid "Option --new-volume-key-file must be paired with --new-key-size" msgstr "--new-volume-key-file 옵션은 --new-key-size 옵션과 함께 사용해야 합니다." -#: src/utils_reencrypt.c:2035 +#: src/utils_reencrypt.c:2038 msgid "No data segment parameters changed. Reencryption aborted." msgstr "바뀐 데이터 세그먼트 매개변수가 없습니다. 재암호화를 멈추었습니다." -#: src/utils_reencrypt.c:2072 +#: src/utils_reencrypt.c:2075 msgid "" "Encryption sector size increase on offline device is not supported.\n" "Activate the device first or use --force-offline-reencrypt option (dangerous!)." @@ -3884,7 +3887,7 @@ msgstr "" "오프라인 장치에서의 암호화 섹터 크기 증가는 지원하지 않습니다.\n" "우선 장치를 동작하게 만들거나 --force-offline-reencrypt 옵션(위험!)을 사용하십시오." -#: src/utils_reencrypt.c:2114 src/utils_reencrypt_luks1.c:688 +#: src/utils_reencrypt.c:2117 src/utils_reencrypt_luks1.c:688 #: src/utils_reencrypt_luks1.c:759 msgid "" "\n" @@ -3893,58 +3896,58 @@ msgstr "" "\n" "재암호화를 중단했습니다." -#: src/utils_reencrypt.c:2119 +#: src/utils_reencrypt.c:2122 msgid "Resuming LUKS reencryption in forced offline mode.\n" msgstr "강제 오프라인 모드에서 LUKS 재암호화 동작을 재개합니다.\n" -#: src/utils_reencrypt.c:2142 +#: src/utils_reencrypt.c:2145 #, c-format msgid "Device %s contains broken LUKS metadata. Aborting operation." msgstr "%s 장치에 망가진 LUKS 메타데이터가 있습니다. 동작을 멈춥니다." -#: src/utils_reencrypt.c:2158 src/utils_reencrypt.c:2180 +#: src/utils_reencrypt.c:2161 src/utils_reencrypt.c:2183 #, c-format msgid "Device %s is already LUKS device. Aborting operation." msgstr "%s 장치에 이미 LUKS 장치가 있습니다. 동작을 멈춥니다." -#: src/utils_reencrypt.c:2186 +#: src/utils_reencrypt.c:2189 #, c-format msgid "Device %s is already in LUKS reencryption. Aborting operation." msgstr "%s 장치가 이미 LUKS 재암호화 상태입니다. 동작을 멈춥니다." -#: src/utils_reencrypt.c:2269 +#: src/utils_reencrypt.c:2272 msgid "LUKS2 decryption requires --header option." msgstr "LUKS2 암호화 해제에 --header 옵션이 필요합니다." -#: src/utils_reencrypt.c:2317 +#: src/utils_reencrypt.c:2320 msgid "Command requires device as argument." msgstr "명쳥에 장치를 인자로 지정해야합니다." -#: src/utils_reencrypt.c:2330 +#: src/utils_reencrypt.c:2333 #, c-format msgid "Conflicting versions. Device %s is LUKS1." msgstr "버전이 맞지 않습니다. %s 장치는 LUKS1입니다." -#: src/utils_reencrypt.c:2336 +#: src/utils_reencrypt.c:2339 #, c-format msgid "Conflicting versions. Device %s is in LUKS1 reencryption." msgstr "버전이 맞지 않습니다. %s 장치는 LUKS1 재암호화 상태입니다." -#: src/utils_reencrypt.c:2342 +#: src/utils_reencrypt.c:2345 #, c-format msgid "Conflicting versions. Device %s is LUKS2." msgstr "버전이 맞지 않습니다. %s 장치는 LUKS2입니다." -#: src/utils_reencrypt.c:2348 +#: src/utils_reencrypt.c:2351 #, c-format msgid "Conflicting versions. Device %s is in LUKS2 reencryption." msgstr "버전이 맞지 않습니다. %s 장치는 LUKS2 재암호화 상태입니다." -#: src/utils_reencrypt.c:2354 +#: src/utils_reencrypt.c:2357 msgid "LUKS2 reencryption already initialized. Aborting operation." msgstr "LUKS2 재암호화를 이미 초기화했습니다. 동작을 멈줍니다." -#: src/utils_reencrypt.c:2361 +#: src/utils_reencrypt.c:2364 msgid "Device reencryption not in progress." msgstr "장치 재암호화를 진행하고 있지 않습니다." From ecb592663ce557133f7fd8213cb978d849aa6657 Mon Sep 17 00:00:00 2001 From: Jakub Bogusz Date: Sun, 19 Jul 2026 19:51:04 +0200 Subject: [PATCH 186/244] po: update pl.po (from translationproject.org) --- po/pl.po | 628 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 316 insertions(+), 312 deletions(-) diff --git a/po/pl.po b/po/pl.po index d3970610c..8c4bc8031 100644 --- a/po/pl.po +++ b/po/pl.po @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.7-rc1\n" +"Project-Id-Version: cryptsetup 2.8.7-rc2\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2026-06-29 21:30+0200\n" -"PO-Revision-Date: 2026-07-03 19:35+0200\n" +"POT-Creation-Date: 2026-07-09 10:46+0200\n" +"PO-Revision-Date: 2026-07-11 18:45+0200\n" "Last-Translator: Jakub Bogusz \n" "Language-Team: Polish \n" "Language: pl\n" @@ -199,10 +199,10 @@ msgid "Failed to rollback LUKS2 metadata in memory." msgstr "Nie udało się wycofać zmian w metadanych LUKS2 w pamięci." #: lib/setup.c:896 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 -#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1779 -#: src/cryptsetup.c:1963 src/cryptsetup.c:2018 src/cryptsetup.c:2216 -#: src/cryptsetup.c:2361 src/cryptsetup.c:2639 src/cryptsetup.c:2952 -#: src/cryptsetup.c:3020 src/utils_reencrypt.c:2281 +#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 +#: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 +#: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2954 +#: src/cryptsetup.c:3022 src/utils_reencrypt.c:2284 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." @@ -246,7 +246,7 @@ msgid "Detached metadata device is not supported for this crypt type." msgstr "Osobne urządzenie metadanych nie jest obsługiwane dla tego rodzaju szyfrowania." #: lib/setup.c:1642 lib/setup.c:1890 lib/luks2/luks2_reencrypt.c:3035 -#: src/cryptsetup.c:1491 src/cryptsetup.c:3759 +#: src/cryptsetup.c:1492 src/cryptsetup.c:3761 msgid "Unsupported encryption sector size." msgstr "Nieobsługiwany rozmiar sektora szyfrowania." @@ -568,14 +568,14 @@ msgstr "Nie udało się odłączyć klucza wolumenu z pęku kluczy podanego prze msgid "Failed to link volume key in user defined keyring." msgstr "Nie udało się dołączuć klucza wolumenu do pęku kluczy zdefiniowanego przez użytkownika." -#: lib/setup.c:4556 src/cryptsetup.c:2720 +#: lib/setup.c:4556 src/cryptsetup.c:2722 #, c-format msgid "Volume %s is not suspended." msgstr "Wolumen %s nie jest wstrzymany." -#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1855 -#: src/cryptsetup.c:2259 src/cryptsetup.c:2277 src/utils_reencrypt.c:305 -#: src/utils_reencrypt.c:1966 +#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1856 +#: src/cryptsetup.c:2260 src/cryptsetup.c:2278 src/utils_reencrypt.c:306 +#: src/utils_reencrypt.c:1969 msgid "Volume key does not match the volume." msgstr "Klucz wolumenu nie pasuje do wolumenu." @@ -588,8 +588,8 @@ msgstr "Nie udało się podstawić nowego klucza." msgid "Key slot %d is invalid." msgstr "Numer klucza %d jest nieprawidłowy." -#: lib/setup.c:4925 src/cryptsetup.c:1976 src/cryptsetup.c:2436 -#: src/cryptsetup.c:3120 src/cryptsetup.c:3180 +#: lib/setup.c:4925 src/cryptsetup.c:1977 src/cryptsetup.c:2437 +#: src/cryptsetup.c:3122 src/cryptsetup.c:3182 #, c-format msgid "Keyslot %d is not active." msgstr "Klucz %d nie jest aktywny." @@ -786,7 +786,7 @@ msgid "Cannot read requested amount of data." msgstr "Nie można odczytać żądanej ilości danych." #: lib/utils_device.c:207 lib/utils_storage_wrappers.c:99 -#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2254 +#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2257 #, c-format msgid "Device %s does not exist or access denied." msgstr "Urządzenie %s nie istnieje lub dostęp jest zabroniony." @@ -1129,7 +1129,7 @@ msgstr "Tryb szyfru LUKS %s jest nieprawidłowy." msgid "LUKS hash %s is invalid." msgstr "Skrót LUKS %s jest nieprawidłowy." -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1366 +#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 msgid "No known problems detected for LUKS header." msgstr "W nagłówku LUKS nie wykryto żadnych znanych problemów." @@ -1149,7 +1149,7 @@ msgstr "Offset danych dla nagłówka LUKS musi wynosić 0 lub więcej niż rozmi #: lib/luks1/keymanage.c:761 lib/luks1/keymanage.c:832 #: lib/luks2/luks2_json_format.c:231 lib/luks2/luks2_json_metadata.c:1261 -#: src/utils_reencrypt.c:701 +#: src/utils_reencrypt.c:703 msgid "Wrong LUKS UUID format provided." msgstr "Podano zły format LUKS UUID." @@ -1674,7 +1674,7 @@ msgstr "Nie udało się ustawić segmentu dm-crypt." msgid "Failed to set dm-linear segment." msgstr "Nie udało się ustawić segmentu dm-linear." -#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:578 +#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:580 msgid "No known cipher specification pattern detected in LUKS2 header." msgstr "Nie wykryto znanego wzorca określającego szyfr w nagłówku LUKS2." @@ -2137,8 +2137,8 @@ msgstr "Parametry szyfrowania kluczy mogą być ustawione tylko dla urządzeń L msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encryption." msgstr "Parametry szyfrowania kluczy nie są zgodne z szyfrowaniem kluczy LUKS2." -#: src/cryptsetup.c:150 src/cryptsetup.c:1179 src/cryptsetup.c:1544 -#: src/utils_reencrypt.c:1887 src/utils_reencrypt_luks1.c:502 +#: src/cryptsetup.c:150 src/cryptsetup.c:1180 src/cryptsetup.c:1545 +#: src/utils_reencrypt.c:1890 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." msgstr "Nie wykryto znanego wzorca określającego szyfr." @@ -2165,8 +2165,8 @@ msgstr "UWAGA: Parametr --hash jest ignorowany w trybie zwykłym z podanym pliki msgid "WARNING: The --keyfile-size option is being ignored, the read size is the same as the encryption key size.\n" msgstr "UWAGA: Opcja --keyfile-size jest ignorowana, rozmiar odczytu jest taki sam, jak rozmiar klucza szyfrującego.\n" -#: src/cryptsetup.c:226 src/cryptsetup.c:1374 src/cryptsetup.c:1597 -#: src/integritysetup.c:188 src/utils_reencrypt.c:2138 +#: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 +#: src/integritysetup.c:189 src/utils_reencrypt.c:2141 #, c-format msgid "Blkid scan failed for %s." msgstr "Skanowanie blkid dla %s nie powiodło się." @@ -2176,11 +2176,11 @@ msgstr "Skanowanie blkid dla %s nie powiodło się." msgid "Detected device signature(s) on %s. Proceeding further may damage existing data." msgstr "Wykryto sygnatury urządzeń na %s. Dalsze operacje mogą uszkodzić istniejące dane." -#: src/cryptsetup.c:238 src/cryptsetup.c:1260 src/cryptsetup.c:1308 -#: src/cryptsetup.c:1381 src/cryptsetup.c:1521 src/cryptsetup.c:1609 -#: src/cryptsetup.c:2494 src/cryptsetup.c:2923 src/integritysetup.c:178 -#: src/utils_reencrypt.c:111 src/utils_reencrypt.c:457 -#: src/utils_reencrypt.c:925 +#: src/cryptsetup.c:238 src/cryptsetup.c:1261 src/cryptsetup.c:1309 +#: src/cryptsetup.c:1382 src/cryptsetup.c:1522 src/cryptsetup.c:1610 +#: src/cryptsetup.c:2495 src/cryptsetup.c:2925 src/integritysetup.c:179 +#: src/utils_reencrypt.c:111 src/utils_reencrypt.c:459 +#: src/utils_reencrypt.c:927 msgid "Operation aborted.\n" msgstr "Operacja przerwana.\n" @@ -2188,36 +2188,36 @@ msgstr "Operacja przerwana.\n" msgid "Option --key-file is required." msgstr "Wymagana jest opcja --key-file." -#: src/cryptsetup.c:377 +#: src/cryptsetup.c:378 msgid "Enter VeraCrypt PIM: " msgstr "Proszę wprowadzić PIM VeraCrypt: " -#: src/cryptsetup.c:386 +#: src/cryptsetup.c:387 msgid "Invalid PIM value: parse error." msgstr "Błędna wartość PIM: błąd składni." -#: src/cryptsetup.c:389 +#: src/cryptsetup.c:390 msgid "Invalid PIM value: 0." msgstr "Błędna wartość PIM: 0." -#: src/cryptsetup.c:392 +#: src/cryptsetup.c:393 msgid "Invalid PIM value: outside of range." msgstr "Błędna wartość PIM: poza zakresem." -#: src/cryptsetup.c:415 +#: src/cryptsetup.c:416 msgid "No device header detected with this passphrase." msgstr "Nie wykryto nagłówka urządzenia z tym hasłem." -#: src/cryptsetup.c:492 src/cryptsetup.c:677 +#: src/cryptsetup.c:493 src/cryptsetup.c:678 #, c-format msgid "Device %s is not a valid BITLK device." msgstr "Urządzenie %s nie jest prawidłowym urządzeniem BITLK." -#: src/cryptsetup.c:500 +#: src/cryptsetup.c:501 msgid "Cannot determine volume key size for BITLK, please use --key-size option." msgstr "Nie można określić rozmiaru klucza wolumenu dla BITLK, proszę użyć opcji --key-size." -#: src/cryptsetup.c:546 +#: src/cryptsetup.c:547 msgid "" "Header dump with volume key is sensitive information\n" "which allows access to encrypted partition without passphrase.\n" @@ -2228,7 +2228,7 @@ msgstr "" "Zrzut ten powinien być zawsze zapisywany w postaci zaszyfrowanej\n" "w bezpiecznym miejscu." -#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2519 +#: src/cryptsetup.c:614 src/cryptsetup.c:700 src/cryptsetup.c:2520 msgid "" "The header dump with volume key is sensitive information\n" "that allows access to encrypted partition without a passphrase.\n" @@ -2239,88 +2239,88 @@ msgstr "" "Zrzut ten powinien być zawsze zapisywany w postaci zaszyfrowanej\n" "w bezpiecznym miejscu." -#: src/cryptsetup.c:754 src/cryptsetup.c:786 +#: src/cryptsetup.c:755 src/cryptsetup.c:787 #, c-format msgid "Device %s is not a valid FVAULT2 device." msgstr "Urządzenie %s nie jest prawidłowym urządzeniem FVAULT2." -#: src/cryptsetup.c:794 +#: src/cryptsetup.c:795 msgid "Cannot determine volume key size for FVAULT2, please use --key-size option." msgstr "Nie można określić rozmiaru klucza wolumenu dla FVAULT2, proszę użyć opcji --key-size." -#: src/cryptsetup.c:848 src/veritysetup.c:317 src/integritysetup.c:416 +#: src/cryptsetup.c:849 src/veritysetup.c:317 src/integritysetup.c:422 #, c-format msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "Urządzenie %s jest nadal aktywne i zaplanowane do odroczonego usunięcia.\n" -#: src/cryptsetup.c:881 src/cryptsetup.c:1807 src/cryptsetup.c:2081 -#: src/cryptsetup.c:2228 src/cryptsetup.c:2647 src/cryptsetup.c:2728 -#: src/cryptsetup.c:3261 +#: src/cryptsetup.c:882 src/cryptsetup.c:1808 src/cryptsetup.c:2082 +#: src/cryptsetup.c:2229 src/cryptsetup.c:2648 src/cryptsetup.c:2730 +#: src/cryptsetup.c:3263 #, c-format msgid "Failed to set external tokens path %s." msgstr "Nie udało się ustawić ścieżki tokenów zewnętrznych %s." -#: src/cryptsetup.c:890 +#: src/cryptsetup.c:891 msgid "Resize of active device requires volume key in keyring but --disable-keyring option is set." msgstr "Zmiana rozmiaru aktywnego urządzenia wymaga klucza wolumenu w pęku, ale ustawiono opcję --disable-keyring." -#: src/cryptsetup.c:1057 +#: src/cryptsetup.c:1058 msgid "Benchmark interrupted." msgstr "Test szybkości przerwany." -#: src/cryptsetup.c:1078 +#: src/cryptsetup.c:1079 #, c-format msgid "PBKDF2-%-9s N/A\n" msgstr "PBKDF2-%-9s N/D\n" -#: src/cryptsetup.c:1080 +#: src/cryptsetup.c:1081 #, c-format msgid "PBKDF2-%-9s %7u iterations per second for %zu-bit key\n" msgstr "PBKDF2-%-9s %7u iteracji/sekundę dla klucza %zu-bitowego\n" -#: src/cryptsetup.c:1094 +#: src/cryptsetup.c:1095 #, c-format msgid "%-10s N/A\n" msgstr "%-10s N/D\n" -#: src/cryptsetup.c:1096 +#: src/cryptsetup.c:1097 #, c-format msgid "%-10s %4u iterations, %5u memory, %1u parallel threads (CPUs) for %zu-bit key (requested %u ms time)\n" msgstr "%-10s %4u iteracji, pamięć: %5u, równoległe wątki (CPU): %1u dla klucza %zu-bitowego (żądany czas %u ms)\n" -#: src/cryptsetup.c:1120 +#: src/cryptsetup.c:1121 msgid "Result of benchmark is not reliable." msgstr "Wynik testu wydajności nie jest wiarygodny." -#: src/cryptsetup.c:1171 +#: src/cryptsetup.c:1172 msgid "# Tests are approximate using memory only (no storage IO).\n" msgstr "# Testy są przybliżone tylko z użyciem pamięci (bez we/wy na dysk).\n" #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1196 +#: src/cryptsetup.c:1197 #, c-format msgid "#%*s Algorithm | Key | Encryption | Decryption\n" msgstr "#%*s Algorytm | Klucz | Szyfrowanie | Odszyfrowywanie\n" -#: src/cryptsetup.c:1204 +#: src/cryptsetup.c:1205 #, c-format msgid "Cipher %s (with %i bits key) is not available." msgstr "Szyfr %s (rozmiar klucza w bitach: %i) nie jest dostępny." #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1225 +#: src/cryptsetup.c:1226 msgid "# Algorithm | Key | Encryption | Decryption\n" msgstr "# Algorytm | Klucz | Szyfrowanie | Odszyfrowywanie\n" -#: src/cryptsetup.c:1238 +#: src/cryptsetup.c:1239 msgid "N/A" msgstr "N/D" -#: src/cryptsetup.c:1241 +#: src/cryptsetup.c:1242 msgid "# Cipher speed test is not available.\n" msgstr "# Test szybkości szyfru nie jest dostępny.\n" -#: src/cryptsetup.c:1257 +#: src/cryptsetup.c:1258 msgid "" "Unprotected LUKS2 reencryption metadata detected. Please verify the reencryption operation is desirable (see luksDump output)\n" "and continue (upgrade metadata) only if you acknowledge the operation as genuine." @@ -2328,27 +2328,27 @@ msgstr "" "Wybryto niezabezpieczone metadane ponownego szyfrowania LUKS2. Proszę sprawdzić, czy operacja ponownego szyfrowania jest pożądana (p. wyjście luksDump)\n" "i kontynuować (uaktualnić metadane) tylko jeśli ta operacja ma być faktycznie wykonana." -#: src/cryptsetup.c:1263 +#: src/cryptsetup.c:1264 msgid "Enter passphrase to protect and upgrade reencryption metadata: " msgstr "Hasło do zabezpieczenia i uaktualnienia metadanych ponownego szyfrowania: " -#: src/cryptsetup.c:1307 +#: src/cryptsetup.c:1308 msgid "Really proceed with LUKS2 reencryption recovery?" msgstr "Naprawdę kontynuować odtwarzanie ponownego szyfrowania LUKS2?" -#: src/cryptsetup.c:1316 +#: src/cryptsetup.c:1317 msgid "Enter passphrase to verify reencryption metadata digest: " msgstr "Hasło do weryfikacji skrótu metadanych ponownego szyfrowania: " -#: src/cryptsetup.c:1318 +#: src/cryptsetup.c:1319 msgid "Enter passphrase for reencryption recovery: " msgstr "Hasło do odtwarzania ponownego szyfrowania: " -#: src/cryptsetup.c:1380 +#: src/cryptsetup.c:1381 msgid "Really try to repair LUKS device header?" msgstr "Naprawdę próbować naprawić nagłówek urządzenia LUKS?" -#: src/cryptsetup.c:1408 src/integritysetup.c:76 src/integritysetup.c:244 +#: src/cryptsetup.c:1409 src/integritysetup.c:76 src/integritysetup.c:246 msgid "" "\n" "Wipe interrupted." @@ -2356,7 +2356,7 @@ msgstr "" "\n" "Wymazywanie przerwane." -#: src/cryptsetup.c:1413 src/integritysetup.c:81 src/integritysetup.c:289 +#: src/cryptsetup.c:1414 src/integritysetup.c:81 src/integritysetup.c:291 msgid "" "Wiping device to initialize integrity checksum.\n" "You can interrupt this by pressing CTRL+c (rest of not wiped device will contain invalid checksum).\n" @@ -2364,167 +2364,167 @@ msgstr "" "Czyszczenie urządzenia w celu zainicjowania sumy kontrolnej integralności.\n" "Można przerwać ten proces wciskając Ctrl+C (reszta niewymazanego urządzenia będzie zawierać błędną sumę kontrolną).\n" -#: src/cryptsetup.c:1435 src/integritysetup.c:103 +#: src/cryptsetup.c:1436 src/integritysetup.c:103 #, c-format msgid "Cannot deactivate temporary device %s." msgstr "Nie można dezaktywować urządzenia tymczasowego %s." -#: src/cryptsetup.c:1483 +#: src/cryptsetup.c:1484 msgid "OPAL hw-only encryption does not support --cipher and --key-size, options ignored." msgstr "Szyfrowanie wyłącznie sprzętowe OPAL nie obsługuje --cipher i --key-size, opcje zignorowano." -#: src/cryptsetup.c:1496 +#: src/cryptsetup.c:1497 msgid "Integrity option can be used only for LUKS2 format." msgstr "Opcja integralności może być używana tylko dla formatu LUKS2." -#: src/cryptsetup.c:1501 src/cryptsetup.c:1581 +#: src/cryptsetup.c:1502 src/cryptsetup.c:1582 msgid "Unsupported LUKS2 metadata size options." msgstr "Nieobsługiwane opcje rozmiaru metadanych LUKS2." -#: src/cryptsetup.c:1506 +#: src/cryptsetup.c:1507 msgid "OPAL is supported only for LUKS2 format." msgstr "OPAL jest obsługiwany tylko dla formatu LUKS2." -#: src/cryptsetup.c:1511 +#: src/cryptsetup.c:1512 msgid "Inline hw tags are supported only for LUKS2 format." msgstr "Znaczniki hw wbudowane są obsługiwane tylko dla formatu LUKS2." -#: src/cryptsetup.c:1520 +#: src/cryptsetup.c:1521 msgid "Header file does not exist, do you want to create it?" msgstr "Plik nagłówka nie istnieje, czy utworzyć go?" -#: src/cryptsetup.c:1528 +#: src/cryptsetup.c:1529 #, c-format msgid "Cannot create header file %s." msgstr "Nie można utworzyć pliku nagłówka %s." -#: src/cryptsetup.c:1554 src/integritysetup.c:126 src/integritysetup.c:141 -#: src/integritysetup.c:150 src/integritysetup.c:328 src/integritysetup.c:336 -#: src/integritysetup.c:346 +#: src/cryptsetup.c:1555 src/integritysetup.c:127 src/integritysetup.c:142 +#: src/integritysetup.c:151 src/integritysetup.c:330 src/integritysetup.c:338 +#: src/integritysetup.c:348 msgid "No known integrity specification pattern detected." msgstr "Nie wykryto znanego wzorca określającego integralność." -#: src/cryptsetup.c:1556 +#: src/cryptsetup.c:1557 msgid "Cannot use specified integrity key size." msgstr "Nie można użyć podanego rozmiaru klucza integralności." -#: src/cryptsetup.c:1574 +#: src/cryptsetup.c:1575 #, c-format msgid "Cannot use %s as on-disk header." msgstr "Nie można użyć %s jako nagłówka na dysku." -#: src/cryptsetup.c:1603 src/integritysetup.c:172 +#: src/cryptsetup.c:1604 src/integritysetup.c:173 #, c-format msgid "This will overwrite data on %s irrevocably." msgstr "To nieodwołalnie nadpisze dane na %s." -#: src/cryptsetup.c:1640 +#: src/cryptsetup.c:1641 msgid "OPAL Admin password cannot be empty." msgstr "Hasło administratora OPAL nie może być puste." -#: src/cryptsetup.c:1654 src/cryptsetup.c:2098 src/cryptsetup.c:2241 -#: src/cryptsetup.c:2376 src/cryptsetup.c:2442 src/utils_reencrypt_luks1.c:428 +#: src/cryptsetup.c:1655 src/cryptsetup.c:2099 src/cryptsetup.c:2242 +#: src/cryptsetup.c:2377 src/cryptsetup.c:2443 src/utils_reencrypt_luks1.c:428 msgid "Failed to set pbkdf parameters." msgstr "Nie udało się ustawić parametrów PBKDF." -#: src/cryptsetup.c:1785 +#: src/cryptsetup.c:1786 msgid "Reduced data offset is allowed only for detached LUKS header." msgstr "Offset zmniejszonych danych jest dozwolony tylko dla odłączonego nagłówka LUKS." -#: src/cryptsetup.c:1792 +#: src/cryptsetup.c:1793 #, c-format msgid "LUKS file container %s is too small for activation, there is no remaining space for data." msgstr "Kontener plikowy LUKS %s jest zbyt mały do uaktywnienia, nie ma miejsca pozostałego na dane." -#: src/cryptsetup.c:1834 src/cryptsetup.c:2247 src/utils_reencrypt.c:277 -#: src/utils_reencrypt.c:369 src/utils_reencrypt.c:1907 +#: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:278 +#: src/utils_reencrypt.c:371 src/utils_reencrypt.c:1910 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "Nie można określić rozmiaru klucza wolumenu dla LUKS bez kluczy, proszę użyć opcji --key-size." -#: src/cryptsetup.c:1853 src/utils_reencrypt.c:303 +#: src/cryptsetup.c:1854 src/utils_reencrypt.c:304 msgid "Device requires two volume keys." msgstr "Urządzenie wymaga dwóch kluczy wolumenu." -#: src/cryptsetup.c:1888 +#: src/cryptsetup.c:1889 msgid "Some specified activation parameters were ignored with OPAL hw-only encryption." msgstr "Niektóre podane parametry aktywacji zostały zignorowane przy szyforwaniu wyłącznie sprzętowym OPAL." -#: src/cryptsetup.c:1893 +#: src/cryptsetup.c:1894 msgid "Device activated but cannot make flags persistent." msgstr "Urządzenie uaktywnione, ale nie można uczynić flag trwałymi." -#: src/cryptsetup.c:1973 src/cryptsetup.c:2041 +#: src/cryptsetup.c:1974 src/cryptsetup.c:2042 #, c-format msgid "Keyslot %d is selected for deletion." msgstr "Klucz %d jest wybrany do usunięcia." -#: src/cryptsetup.c:1985 src/cryptsetup.c:2045 +#: src/cryptsetup.c:1986 src/cryptsetup.c:2046 msgid "This is the last keyslot. Device will become unusable after purging this key." msgstr "To jest ostatni klucz. Urządzenie stanie się bezużyteczne po usunięciu tego klucza." -#: src/cryptsetup.c:1986 +#: src/cryptsetup.c:1987 msgid "Enter any remaining passphrase: " msgstr "Dowolne pozostałe hasło: " -#: src/cryptsetup.c:1987 src/cryptsetup.c:2047 +#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 msgid "Operation aborted, the keyslot was NOT wiped.\n" msgstr "Operacja przerwana, klucz NIE został wymazany.\n" -#: src/cryptsetup.c:2023 +#: src/cryptsetup.c:2024 msgid "Enter passphrase to be deleted: " msgstr "Hasło do usunięcia: " -#: src/cryptsetup.c:2073 src/cryptsetup.c:2425 src/cryptsetup.c:3085 -#: src/cryptsetup.c:3252 +#: src/cryptsetup.c:2074 src/cryptsetup.c:2426 src/cryptsetup.c:3087 +#: src/cryptsetup.c:3254 #, c-format msgid "Device %s is not a valid LUKS2 device." msgstr "Urządzenie %s nie jest prawidłowym urządzeniem LUKS2." -#: src/cryptsetup.c:2112 src/cryptsetup.c:2311 +#: src/cryptsetup.c:2113 src/cryptsetup.c:2312 msgid "Enter new passphrase for key slot: " msgstr "Nowe hasło dla klucza: " -#: src/cryptsetup.c:2146 src/utils_luks.c:342 +#: src/cryptsetup.c:2147 src/utils_luks.c:342 #, c-format msgid "Enter token PIN: " msgstr "Proszę wprowadzić PIN: " -#: src/cryptsetup.c:2148 src/utils_luks.c:344 +#: src/cryptsetup.c:2149 src/utils_luks.c:344 #, c-format msgid "Enter token %d PIN: " msgstr "Proszę wprowadzić PIN tokenu %d: " -#: src/cryptsetup.c:2207 +#: src/cryptsetup.c:2208 msgid "WARNING: The --key-slot parameter is used for new keyslot number.\n" msgstr "UWAGA: Parametr --key-slot jest używany do numeru nowego klucza.\n" -#: src/cryptsetup.c:2284 src/utils_reencrypt_luks1.c:1094 +#: src/cryptsetup.c:2285 src/utils_reencrypt_luks1.c:1094 #, c-format msgid "Enter any existing passphrase: " msgstr "Dowolne istniejące hasło: " -#: src/cryptsetup.c:2380 +#: src/cryptsetup.c:2381 msgid "Enter passphrase to be changed: " msgstr "Hasło, które ma być zmienione: " -#: src/cryptsetup.c:2396 src/utils_reencrypt_luks1.c:1080 +#: src/cryptsetup.c:2397 src/utils_reencrypt_luks1.c:1080 msgid "Enter new passphrase: " msgstr "Nowe hasło: " -#: src/cryptsetup.c:2446 +#: src/cryptsetup.c:2447 msgid "Enter passphrase for keyslot to be converted: " msgstr "Hasło dla klucza do konwersji: " -#: src/cryptsetup.c:2470 +#: src/cryptsetup.c:2471 msgid "Only one device argument for isLuks operation is supported." msgstr "Dla operacji isLuks obsługiwany jest tylko jeden argument będący urządzeniem." -#: src/cryptsetup.c:2575 +#: src/cryptsetup.c:2576 #, c-format msgid "Keyslot %d does not contain unbound key." msgstr "Miejsce %d nie zawiera niepowiązanego klucza." -#: src/cryptsetup.c:2580 +#: src/cryptsetup.c:2581 msgid "" "The header dump with unbound key is sensitive information.\n" "This dump should be stored encrypted in a safe place." @@ -2533,52 +2533,52 @@ msgstr "" "Zrzut ten powinien być zawsze zapisywany w postaci zaszyfrowanej\n" "w bezpiecznym miejscu." -#: src/cryptsetup.c:2675 src/cryptsetup.c:2711 +#: src/cryptsetup.c:2676 src/cryptsetup.c:2713 #, c-format msgid "%s is not active %s device name." msgstr "%s nie jest nazwą aktywnego urządzenia %s." -#: src/cryptsetup.c:2706 +#: src/cryptsetup.c:2708 #, c-format msgid "%s is not active LUKS device name or header is missing." msgstr "%s nie jest nazwą aktywnego urządzenia LUKS lub brak nagłówka." -#: src/cryptsetup.c:2783 src/cryptsetup.c:2802 +#: src/cryptsetup.c:2785 src/cryptsetup.c:2804 msgid "Option --header-backup-file is required." msgstr "Wymagana jest opcja --header-backup-file." -#: src/cryptsetup.c:2833 +#: src/cryptsetup.c:2835 #, c-format msgid "%s is not cryptsetup managed device." msgstr "%s nie jest urządzeniem zarządzanym przez cryptsetup." -#: src/cryptsetup.c:2844 +#: src/cryptsetup.c:2846 #, c-format msgid "Refresh is not supported for device type %s" msgstr "Odświeżanie nie jest obsługiwane dla typu urządzenia %s" -#: src/cryptsetup.c:2894 +#: src/cryptsetup.c:2896 #, c-format msgid "Unrecognized metadata device type %s." msgstr "Nierozpoznany typ urządzenia metadanych %s." -#: src/cryptsetup.c:2896 +#: src/cryptsetup.c:2898 msgid "Command requires device and mapped name as arguments." msgstr "Polecenie wymaga urządzenia i nazwy odwzorowywanej jako argumentów." -#: src/cryptsetup.c:2914 +#: src/cryptsetup.c:2916 msgid "Enter OPAL PSID: " msgstr "Proszę wprowadzić PSID OPAL: " -#: src/cryptsetup.c:2914 +#: src/cryptsetup.c:2916 msgid "Enter OPAL Admin password: " msgstr "Hasło administratora OPAL: " -#: src/cryptsetup.c:2922 +#: src/cryptsetup.c:2924 msgid "WARNING: WHOLE disk will be factory reset and all data will be lost! Continue?" msgstr "UWAGA: CAŁY dysk będzie przywrócony do stanu fabrycznego i wszystkie dane zostaną utracone! Kontynuować?" -#: src/cryptsetup.c:2965 +#: src/cryptsetup.c:2967 #, c-format msgid "" "This operation will erase all keyslots on device %s.\n" @@ -2587,363 +2587,363 @@ msgstr "" "Ta operacja usunię wszystkie klucze na urządzeniu %s.\n" "Urządzenie po tej operacji stanie się bezużyteczne." -#: src/cryptsetup.c:2972 +#: src/cryptsetup.c:2974 msgid "Operation aborted, keyslots were NOT wiped.\n" msgstr "Operacja przerwana, klucze NIE zostały wymazane.\n" -#: src/cryptsetup.c:3011 +#: src/cryptsetup.c:3013 msgid "Invalid LUKS type, only luks1 and luks2 are supported." msgstr "Błędny typ LUKS, obsługiwane są tylko luks1 i luks2." -#: src/cryptsetup.c:3027 +#: src/cryptsetup.c:3029 #, c-format msgid "Device is already %s type." msgstr "Urządzenie już ma typ %s." -#: src/cryptsetup.c:3034 +#: src/cryptsetup.c:3036 #, c-format msgid "This operation will convert %s to %s format.\n" msgstr "Ta operacja przekonwertuje %s do formatu %s.\n" -#: src/cryptsetup.c:3037 +#: src/cryptsetup.c:3039 msgid "Operation aborted, device was NOT converted.\n" msgstr "Operacja przerwana, urządzenie NIE zostało skonwertowane.\n" -#: src/cryptsetup.c:3077 +#: src/cryptsetup.c:3079 msgid "Option --priority, --label or --subsystem is missing." msgstr "Brak opcji --priority, --label lub --subsystem." -#: src/cryptsetup.c:3111 src/cryptsetup.c:3151 src/cryptsetup.c:3171 +#: src/cryptsetup.c:3113 src/cryptsetup.c:3153 src/cryptsetup.c:3173 #, c-format msgid "Token %d is invalid." msgstr "Token %d jest błędny." -#: src/cryptsetup.c:3114 src/cryptsetup.c:3174 +#: src/cryptsetup.c:3116 src/cryptsetup.c:3176 #, c-format msgid "Token %d in use." msgstr "Token %d jest w użyciu." -#: src/cryptsetup.c:3126 +#: src/cryptsetup.c:3128 #, c-format msgid "Failed to add luks2-keyring token %d." msgstr "Nie udało się dodać tokenu %d do pęku kluczy luks2." -#: src/cryptsetup.c:3137 src/cryptsetup.c:3200 +#: src/cryptsetup.c:3139 src/cryptsetup.c:3202 #, c-format msgid "Failed to assign token %d to keyslot %d." msgstr "Nie udało się przypisać tokenu %d do klucza %d." -#: src/cryptsetup.c:3154 +#: src/cryptsetup.c:3156 #, c-format msgid "Token %d is not in use." msgstr "Token %d nie jest w użyciu." -#: src/cryptsetup.c:3191 +#: src/cryptsetup.c:3193 msgid "Failed to import token from file." msgstr "Nie udało się zaimportować tokenu z pliku." -#: src/cryptsetup.c:3216 +#: src/cryptsetup.c:3218 #, c-format msgid "Failed to get token %d for export." msgstr "Nie udało się pobrać tokenu %d do eksportu." -#: src/cryptsetup.c:3229 +#: src/cryptsetup.c:3231 #, c-format msgid "Token %d is not assigned to keyslot %d." msgstr "Token %d nie jest przypisany do klucza %d." -#: src/cryptsetup.c:3231 src/cryptsetup.c:3238 +#: src/cryptsetup.c:3233 src/cryptsetup.c:3240 #, c-format msgid "Failed to unassign token %d from keyslot %d." msgstr "Nie udało się usunąć przypisania tokenu %d do klucza %d." -#: src/cryptsetup.c:3297 +#: src/cryptsetup.c:3299 msgid "Option --tcrypt-hidden, --tcrypt-system or --tcrypt-backup is supported only for TCRYPT device." msgstr "Opcje --tcrypt-hidden, --tcrypt-system i --tcrypt-backup są obsługiwane tylko dla urządzeń TCRYPT." -#: src/cryptsetup.c:3300 +#: src/cryptsetup.c:3302 msgid "Option --veracrypt or --disable-veracrypt is supported only for TCRYPT device type." msgstr "Opcje --veracrypt i --disable-veracrypt są obsługiwane tylko dla typu urządzeń TCRYPT." -#: src/cryptsetup.c:3303 +#: src/cryptsetup.c:3305 msgid "Option --veracrypt-pim is supported only for VeraCrypt compatible devices." msgstr "Opcja --veracrypt-pim jest obsługiwana tylko dla urządzeń zgodnych z VeraCryptem." -#: src/cryptsetup.c:3307 +#: src/cryptsetup.c:3309 msgid "Option --veracrypt-query-pim is supported only for VeraCrypt compatible devices." msgstr "Opcja --veracrypt-query-pim jest obsługiwana tylko dla urządzeń zgodnych z VeraCryptem." -#: src/cryptsetup.c:3309 +#: src/cryptsetup.c:3311 msgid "The options --veracrypt-pim and --veracrypt-query-pim are mutually exclusive." msgstr "Opcje --veracrypt-pim i --veracrypt-query-pim wykluczają się wzajemnie." -#: src/cryptsetup.c:3318 +#: src/cryptsetup.c:3320 msgid "Option --persistent is not allowed with --test-passphrase." msgstr "Opcja --persistent nie jest dozwolona z --test-passphrase." -#: src/cryptsetup.c:3321 +#: src/cryptsetup.c:3323 msgid "Options --refresh and --test-passphrase are mutually exclusive." msgstr "Opcje --refresh i --test-passphrase wykluczają się wzajemnie." -#: src/cryptsetup.c:3324 +#: src/cryptsetup.c:3326 msgid "Option --shared is allowed only for open of plain device." msgstr "Opcja --shared jest dozwolona tylko dla operacji otwarcia zwykłego urządzenia." -#: src/cryptsetup.c:3327 +#: src/cryptsetup.c:3329 msgid "Option --skip is supported only for open of plain and loopaes devices." msgstr "Opcja --skip jest obsługiwana tylko przy otwieraniu urządzeń plain i loopaes." -#: src/cryptsetup.c:3330 +#: src/cryptsetup.c:3332 msgid "Option --offset with open action is only supported for plain and loopaes devices." msgstr "Opcja --offset z akcją open jest obsługiwana tylko dla urządzeń plain i loopaes." -#: src/cryptsetup.c:3333 +#: src/cryptsetup.c:3335 msgid "Option --tcrypt-hidden cannot be combined with --allow-discards." msgstr "Opcji --tcrypt-hidden nie można łączyć z --allow-discards." -#: src/cryptsetup.c:3337 +#: src/cryptsetup.c:3339 msgid "Sector size option with open action is supported only for plain devices." msgstr "Opcja rozmiaru sektora z akcją open jest obsługiwana tylko dla urządzeń plain." -#: src/cryptsetup.c:3341 +#: src/cryptsetup.c:3343 msgid "Large IV sectors option is supported only for opening plain type device with sector size larger than 512 bytes." msgstr "Opcja dużych rozmiarów sektorów IV jest obsługiwana tylko przy otwieraniu urządzeń typu plain z sektorem większym niż 512 bajtów." -#: src/cryptsetup.c:3346 +#: src/cryptsetup.c:3348 msgid "Option --test-passphrase is allowed only for open of LUKS, TCRYPT, BITLK and FVAULT2 devices." msgstr "Opcja --test-passphrase jest dozwolona tylko przy otwieraniu urządzeń LUKS, TRCYPT, BITLK i FVAULT2." -#: src/cryptsetup.c:3349 src/cryptsetup.c:3379 +#: src/cryptsetup.c:3351 src/cryptsetup.c:3381 msgid "Options --device-size and --size cannot be combined." msgstr "Opcji --device-size i --size nie można łączyć." -#: src/cryptsetup.c:3352 +#: src/cryptsetup.c:3354 msgid "Option --unbound is allowed only for open of luks device." msgstr "Opcja --unbound jest dozwolona tylko dla operacji otwarcia urządzenia LUKS." -#: src/cryptsetup.c:3355 +#: src/cryptsetup.c:3357 msgid "Option --unbound cannot be used without --test-passphrase." msgstr "Opcja --unbound nie może być użyta bez --test-passphrase." -#: src/cryptsetup.c:3359 +#: src/cryptsetup.c:3361 msgid "Option --volume-key-keyring cannot be combined with --hash or --volume-key-file." msgstr "Opcji --volume-key-keyring nie można łączyć z --hash ani --volume-key-file." -#: src/cryptsetup.c:3362 +#: src/cryptsetup.c:3364 msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "Obie opcje --volume-key-file muszą być sparowane z odpowiednimi opcjami --key-size." -#: src/cryptsetup.c:3371 src/veritysetup.c:673 src/integritysetup.c:787 +#: src/cryptsetup.c:3373 src/veritysetup.c:673 src/integritysetup.c:793 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "Opcje --cancel-deferred i --deferred nie mogą być użyte naraz." -#: src/cryptsetup.c:3387 +#: src/cryptsetup.c:3389 msgid "Option --active-name can be set only for LUKS2 device." msgstr "Opcja --active-name może być ustawiona tylko dla urządzenia LUKS2." -#: src/cryptsetup.c:3390 +#: src/cryptsetup.c:3392 msgid "Options --active-name and --force-offline-reencrypt cannot be combined." msgstr "Opcji --active-name i --force-offline-reencrypt nie można łączyć." -#: src/cryptsetup.c:3393 +#: src/cryptsetup.c:3395 msgid "Options --new-volume-key-file and --keep-key cannot be combined." msgstr "Opcji --new-volume-key-file i --keep-key nie można łączyć." -#: src/cryptsetup.c:3396 +#: src/cryptsetup.c:3398 msgid "Options --new-volume-key-keyring and --keep-key cannot be combined." msgstr "Opcji --new-volume-key-keyring i --keep-key nie można łączyć." -#: src/cryptsetup.c:3404 src/cryptsetup.c:3434 +#: src/cryptsetup.c:3406 src/cryptsetup.c:3436 msgid "Keyslot specification is required." msgstr "Wymagane jest określenie klucza." -#: src/cryptsetup.c:3412 +#: src/cryptsetup.c:3414 msgid "Options --align-payload and --offset cannot be combined." msgstr "Opcji --align-payload i --offset nie można łączyć." -#: src/cryptsetup.c:3415 +#: src/cryptsetup.c:3417 msgid "Option --integrity-no-wipe can be used only for format action with integrity extension." msgstr "Opcja --integrity-no-wipe może być użyta tylko do akcji formatowania z rozszerzeniem integralności." -#: src/cryptsetup.c:3418 +#: src/cryptsetup.c:3420 msgid "Only one of --use-[u]random options is allowed." msgstr "Dozwolona jest tylko jedna z opcji --use-[u]random." -#: src/cryptsetup.c:3426 +#: src/cryptsetup.c:3428 msgid "Key size is required with --unbound option." msgstr "Przy opcji --unbound wymagany jest rozmiar klucza." -#: src/cryptsetup.c:3446 +#: src/cryptsetup.c:3448 msgid "Invalid token action." msgstr "Błędna akcja token." -#: src/cryptsetup.c:3449 +#: src/cryptsetup.c:3451 msgid "--key-description parameter is mandatory for token add action." msgstr "Parametr --key-description jest wymagany do akcji dodania tokenu." -#: src/cryptsetup.c:3453 src/cryptsetup.c:3466 +#: src/cryptsetup.c:3455 src/cryptsetup.c:3468 msgid "Action requires specific token. Use --token-id parameter." msgstr "Akcja wymaga określonego tokenu. Należy użyć parametru --token-id." -#: src/cryptsetup.c:3457 +#: src/cryptsetup.c:3459 msgid "Option --unbound is valid only with token add action." msgstr "Opcja --unbound jest dozwolona tylko dla operacji dodania tokenu." -#: src/cryptsetup.c:3459 +#: src/cryptsetup.c:3461 msgid "Options --key-slot and --unbound cannot be combined." msgstr "Opcji --key-slot i --unbound nie można łączyć." -#: src/cryptsetup.c:3464 +#: src/cryptsetup.c:3466 msgid "Action requires specific keyslot. Use --key-slot parameter." msgstr "Akcja wymaga określonego klucza. Należy użyć parametru --key-slot." -#: src/cryptsetup.c:3480 +#: src/cryptsetup.c:3482 msgid " [--type ] []" msgstr " [--type ] []" -#: src/cryptsetup.c:3480 src/veritysetup.c:487 src/integritysetup.c:554 +#: src/cryptsetup.c:3482 src/veritysetup.c:487 src/integritysetup.c:560 msgid "open device as " msgstr "otwarcie urządzenia jako " -#: src/cryptsetup.c:3481 src/cryptsetup.c:3482 src/cryptsetup.c:3483 -#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:555 -#: src/integritysetup.c:556 src/integritysetup.c:558 +#: src/cryptsetup.c:3483 src/cryptsetup.c:3484 src/cryptsetup.c:3485 +#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:561 +#: src/integritysetup.c:562 src/integritysetup.c:564 msgid "" msgstr "" -#: src/cryptsetup.c:3481 src/veritysetup.c:488 src/integritysetup.c:555 +#: src/cryptsetup.c:3483 src/veritysetup.c:488 src/integritysetup.c:561 msgid "close device (remove mapping)" msgstr "zamknięcie urządzenia (usunięcie odwzorowania)" -#: src/cryptsetup.c:3482 src/integritysetup.c:558 +#: src/cryptsetup.c:3484 src/integritysetup.c:564 msgid "resize active device" msgstr "zmiana rozmiaru aktywnego urządzenia" -#: src/cryptsetup.c:3483 +#: src/cryptsetup.c:3485 msgid "show device status" msgstr "pokazanie stanu urządzenia" -#: src/cryptsetup.c:3484 +#: src/cryptsetup.c:3486 msgid "[--cipher ]" msgstr "[--cipher ]" -#: src/cryptsetup.c:3484 +#: src/cryptsetup.c:3486 msgid "benchmark cipher" msgstr "test szybkości szyfru" -#: src/cryptsetup.c:3485 src/cryptsetup.c:3486 src/cryptsetup.c:3487 -#: src/cryptsetup.c:3488 src/cryptsetup.c:3489 src/cryptsetup.c:3496 -#: src/cryptsetup.c:3497 src/cryptsetup.c:3498 src/cryptsetup.c:3499 -#: src/cryptsetup.c:3500 src/cryptsetup.c:3501 src/cryptsetup.c:3502 -#: src/cryptsetup.c:3503 src/cryptsetup.c:3504 src/cryptsetup.c:3505 +#: src/cryptsetup.c:3487 src/cryptsetup.c:3488 src/cryptsetup.c:3489 +#: src/cryptsetup.c:3490 src/cryptsetup.c:3491 src/cryptsetup.c:3498 +#: src/cryptsetup.c:3499 src/cryptsetup.c:3500 src/cryptsetup.c:3501 +#: src/cryptsetup.c:3502 src/cryptsetup.c:3503 src/cryptsetup.c:3504 +#: src/cryptsetup.c:3505 src/cryptsetup.c:3506 src/cryptsetup.c:3507 msgid "" msgstr "" -#: src/cryptsetup.c:3485 +#: src/cryptsetup.c:3487 msgid "try to repair on-disk metadata" msgstr "próba naprawy metadanych na dysku" -#: src/cryptsetup.c:3486 +#: src/cryptsetup.c:3488 msgid "reencrypt LUKS2 device" msgstr "ponowne szyfrowanie urządzenia LUKS2" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3489 msgid "erase all keyslots (remove encryption key)" msgstr "usunięcie wszystkich kluczy (usunięcie klucza szyfrującego)" -#: src/cryptsetup.c:3488 +#: src/cryptsetup.c:3490 msgid "convert LUKS from/to LUKS2 format" msgstr "przekonwertowanie formatu LUKS z/do LUKS2" -#: src/cryptsetup.c:3489 +#: src/cryptsetup.c:3491 msgid "set permanent configuration options for LUKS2" msgstr "ustawienie opcji trwałej konfiguracji dla LUKS2" -#: src/cryptsetup.c:3490 src/cryptsetup.c:3491 +#: src/cryptsetup.c:3492 src/cryptsetup.c:3493 msgid " []" msgstr " []" -#: src/cryptsetup.c:3490 +#: src/cryptsetup.c:3492 msgid "formats a LUKS device" msgstr "sformatowanie urządzenia LUKS" -#: src/cryptsetup.c:3491 +#: src/cryptsetup.c:3493 msgid "add key to LUKS device" msgstr "dodanie klucza do urządzenia LUKS" -#: src/cryptsetup.c:3492 src/cryptsetup.c:3493 src/cryptsetup.c:3494 +#: src/cryptsetup.c:3494 src/cryptsetup.c:3495 src/cryptsetup.c:3496 msgid " []" msgstr " []" -#: src/cryptsetup.c:3492 +#: src/cryptsetup.c:3494 msgid "removes supplied key or key file from LUKS device" msgstr "usunięcie podanego klucza lub pliku klucza z urządzenia LUKS" -#: src/cryptsetup.c:3493 +#: src/cryptsetup.c:3495 msgid "changes supplied key or key file of LUKS device" msgstr "zmiana podanego klucza lub pliku klucza urządzenia LUKS" -#: src/cryptsetup.c:3494 +#: src/cryptsetup.c:3496 msgid "converts a key to new pbkdf parameters" msgstr "konwersja klucza na nowe parametry pbkdf" -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3497 msgid " " msgstr " " -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3497 msgid "wipes key with number from LUKS device" msgstr "wymazanie klucza o numerze z urządzenia LUKS" -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3498 msgid "print UUID of LUKS device" msgstr "wypisanie UUID-a urządzenia LUKS" -#: src/cryptsetup.c:3497 +#: src/cryptsetup.c:3499 msgid "tests for LUKS partition header" msgstr "sprawdzenie pod kątem nagłówka partycji LUKS" -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3500 msgid "dump LUKS partition information" msgstr "zrzut informacji o partycji LUKS" -#: src/cryptsetup.c:3499 +#: src/cryptsetup.c:3501 msgid "dump TCRYPT device information" msgstr "zrzut informacji o urządzeniu TCRYPT" -#: src/cryptsetup.c:3500 +#: src/cryptsetup.c:3502 msgid "dump BITLK device information" msgstr "zrzut informacji o urządzeniu BITLK" -#: src/cryptsetup.c:3501 +#: src/cryptsetup.c:3503 msgid "dump FVAULT2 device information" msgstr "zrzut informacji o urządzeniu FVAULT2" -#: src/cryptsetup.c:3502 +#: src/cryptsetup.c:3504 msgid "Suspend LUKS device and wipe key (all IOs are frozen)" msgstr "Wstrzymanie urządzenia LUKS i wymazanie klucza (zamraża wszystkie operacje we/wy)" -#: src/cryptsetup.c:3503 +#: src/cryptsetup.c:3505 msgid "Resume suspended LUKS device" msgstr "Wznowienie zatrzymanego urządzenia LUKS" -#: src/cryptsetup.c:3504 +#: src/cryptsetup.c:3506 msgid "Backup LUKS device header and keyslots" msgstr "Kopia zapasowa nagłówka i kluczy urządzenia LUKS" -#: src/cryptsetup.c:3505 +#: src/cryptsetup.c:3507 msgid "Restore LUKS device header and keyslots" msgstr "Odtworzenie nagłówka i kluczy urządzenia LUKS z kopii zapasowej" -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3508 msgid " " msgstr " " -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3508 msgid "Manipulate LUKS2 tokens" msgstr "Operacja na tokenach LUKS2" -#: src/cryptsetup.c:3525 src/veritysetup.c:505 src/integritysetup.c:573 +#: src/cryptsetup.c:3527 src/veritysetup.c:505 src/integritysetup.c:579 msgid "" "\n" " is one of:\n" @@ -2951,7 +2951,7 @@ msgstr "" "\n" " to jedno z:\n" -#: src/cryptsetup.c:3531 +#: src/cryptsetup.c:3533 msgid "" "\n" "You can also use old syntax aliases:\n" @@ -2963,7 +2963,7 @@ msgstr "" "\topen: create (plainOpen), luksOpen, loopaesOpen, tcryptOpen, bitlkOpen, fvault2Open\n" "\tclose: remove (plainClose), luksClose, loopaesClose, tcryptClose, bitlkClose, fvault2Close\n" -#: src/cryptsetup.c:3535 +#: src/cryptsetup.c:3537 #, c-format msgid "" "\n" @@ -2978,7 +2978,7 @@ msgstr "" " to numer klucza LUKS do zmiany\n" " to opcjonalny plik nowego klucza dla akcji luksAddKey\n" -#: src/cryptsetup.c:3542 +#: src/cryptsetup.c:3544 #, c-format msgid "" "\n" @@ -2987,7 +2987,7 @@ msgstr "" "\n" "Domyślny wkompilowany format metadanych to %s (dla akcji luksFormat).\n" -#: src/cryptsetup.c:3547 +#: src/cryptsetup.c:3549 msgid "" "\n" "LUKS2 external token plugin support is enabled.\n" @@ -2995,12 +2995,12 @@ msgstr "" "\n" "Obsługa zewnętrznych wtyczek tokenów LUKS2 jest włączona.\n" -#: src/cryptsetup.c:3548 +#: src/cryptsetup.c:3550 #, c-format msgid "LUKS2 external token plugin path: %s.\n" msgstr "Ścieżka zewnętrznych wtyczek tokenów LUKS2: %s.\n" -#: src/cryptsetup.c:3550 +#: src/cryptsetup.c:3552 msgid "" "\n" "LUKS2 external token plugin support is disabled.\n" @@ -3008,7 +3008,7 @@ msgstr "" "\n" "Obsługa zewnętrznych wtyczek tokenów LUKS2 jest wyłączona.\n" -#: src/cryptsetup.c:3554 +#: src/cryptsetup.c:3556 #, c-format msgid "" "\n" @@ -3025,7 +3025,7 @@ msgstr "" "Domyślny PBKDF dla LUKS2: %s\n" "\tCzas iteracji: %d, wymagana pamięć: %dkB, liczba wątków: %d\n" -#: src/cryptsetup.c:3565 +#: src/cryptsetup.c:3567 #, c-format msgid "" "\n" @@ -3040,122 +3040,126 @@ msgstr "" "\tplain: %s, bitów klucza: %d, skrót hasła: %s\n" "\tLUKS: %s, bitów klucza: %d, skrót nagłówka LUKS: %s, RNG: %s\n" -#: src/cryptsetup.c:3574 +#: src/cryptsetup.c:3576 msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: Domyślny rozmiar klucza z trybem XTS (dwa klucze wewnętrzne) będzie podwojony.\n" -#: src/cryptsetup.c:3592 src/veritysetup.c:647 src/integritysetup.c:733 +#: src/cryptsetup.c:3594 src/veritysetup.c:647 src/integritysetup.c:739 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: wymaga %s jako argumentów" -#: src/cryptsetup.c:3632 src/utils_reencrypt_luks1.c:1143 +#: src/cryptsetup.c:3634 src/utils_reencrypt_luks1.c:1143 msgid "Key slot is invalid." msgstr "Numer klucza jest nieprawidłowy." -#: src/cryptsetup.c:3660 +#: src/cryptsetup.c:3662 msgid "Device size must be multiple of 512 bytes sector." msgstr "Rozmiar urządzenia musi być wielokrotnością 512-bajtowego sektora." -#: src/cryptsetup.c:3665 +#: src/cryptsetup.c:3667 msgid "Invalid max reencryption hotzone size specification." msgstr "Błędne określenie maksymalnego rozmiaru strefy gorącej ponownego szyfrowania." -#: src/cryptsetup.c:3679 src/cryptsetup.c:3696 src/cryptsetup.c:3708 +#: src/cryptsetup.c:3681 src/cryptsetup.c:3698 src/cryptsetup.c:3710 msgid "Key size must be a multiple of 8 bits" msgstr "Rozmiar klucza musi być wielokrotnością 8 bitów" -#: src/cryptsetup.c:3686 +#: src/cryptsetup.c:3688 msgid "At most 2 key size specifications can be supplied." msgstr "Można podać najwyżej 2 określenia rozmiarów kluczy." -#: src/cryptsetup.c:3715 src/cryptsetup.c:3726 +#: src/cryptsetup.c:3717 src/cryptsetup.c:3728 #, c-format msgid "At most %d volume key specifications can be supplied." msgstr "Określono za dużo kluczy wolumenu, można podać najwyżej %d." -#: src/cryptsetup.c:3738 +#: src/cryptsetup.c:3740 #, c-format msgid "At most %d keyring link specifications can be supplied." msgstr "Określono za dużo dołączeń pęków kluczy, można podać najwyżej %d." -#: src/cryptsetup.c:3747 +#: src/cryptsetup.c:3749 msgid "Maximum device reduce size is 1 GiB." msgstr "Maksymalna wartość ograniczenia rozmiaru urządzenia to 1GiB." -#: src/cryptsetup.c:3750 +#: src/cryptsetup.c:3752 msgid "Reduce size must be multiple of 512 bytes sector." msgstr "Rozmiar ograniczenia musi być wielokrotnością 512-bajtowego sektora." -#: src/cryptsetup.c:3767 +#: src/cryptsetup.c:3769 msgid "Option --priority can be only ignore/normal/prefer." msgstr "Opcja --priority może mieć wartości tylko ignore/normal/prefer." -#: src/cryptsetup.c:3786 src/veritysetup.c:568 src/integritysetup.c:653 +#: src/cryptsetup.c:3774 +msgid "Invalid maximal tries specification." +msgstr "Błędne określenie maksymalnej liczby prób." + +#: src/cryptsetup.c:3793 src/veritysetup.c:568 src/integritysetup.c:659 msgid "Show this help message" msgstr "Wyświetlenie tego opisu" -#: src/cryptsetup.c:3787 src/veritysetup.c:569 src/integritysetup.c:654 +#: src/cryptsetup.c:3794 src/veritysetup.c:569 src/integritysetup.c:660 msgid "Display brief usage" msgstr "Wyświetlenie krótkiej informacji o składni" -#: src/cryptsetup.c:3788 src/veritysetup.c:570 src/integritysetup.c:655 +#: src/cryptsetup.c:3795 src/veritysetup.c:570 src/integritysetup.c:661 msgid "Print package version" msgstr "Wypisanie wersji pakietu" -#: src/cryptsetup.c:3799 src/veritysetup.c:581 src/integritysetup.c:666 +#: src/cryptsetup.c:3806 src/veritysetup.c:581 src/integritysetup.c:672 msgid "Help options:" msgstr "Opcje pomocnicze:" -#: src/cryptsetup.c:3822 src/veritysetup.c:602 src/integritysetup.c:686 +#: src/cryptsetup.c:3829 src/veritysetup.c:602 src/integritysetup.c:692 msgid "[OPTION...] " msgstr "[OPCJA...] " -#: src/cryptsetup.c:3831 src/veritysetup.c:611 src/integritysetup.c:697 +#: src/cryptsetup.c:3838 src/veritysetup.c:611 src/integritysetup.c:703 msgid "Argument missing." msgstr "Brak argumentu ." -#: src/cryptsetup.c:3910 src/veritysetup.c:642 src/integritysetup.c:728 +#: src/cryptsetup.c:3917 src/veritysetup.c:642 src/integritysetup.c:734 msgid "Unknown action." msgstr "Nieznana akcja." -#: src/cryptsetup.c:3928 +#: src/cryptsetup.c:3935 msgid "Option --key-file takes precedence over specified key file argument." msgstr "Opcja --key-file ma priorytet nad podanym argumentem pliku klucza." -#: src/cryptsetup.c:3934 +#: src/cryptsetup.c:3941 msgid "Only one --key-file argument is allowed." msgstr "Dozwolony jest tylko jeden argument --key-file." -#: src/cryptsetup.c:3939 +#: src/cryptsetup.c:3946 msgid "Password-based key derivation function (PBKDF) can be only pbkdf2 or argon2i/argon2id." msgstr "Funkcja pochodna klucza oparta na haśle (PBKDF) może być tylko pbkdf2 lub argon2i/argon2id." -#: src/cryptsetup.c:3944 +#: src/cryptsetup.c:3951 msgid "PBKDF forced iterations cannot be combined with iteration time option." msgstr "Wymuszonych iteracji PBKDF nie można łączyć z opcją czasu iteracji." -#: src/cryptsetup.c:3949 +#: src/cryptsetup.c:3956 msgid "Cannot link volume key to a keyring when keyring is disabled." msgstr "Nie można dołączyć klucza wolumenu do pęku kluczy, kiedy pęk kluczy jest wyłączony." -#: src/cryptsetup.c:3954 +#: src/cryptsetup.c:3961 msgid "Cannot use keyring key description when keyring is disabled." msgstr "Nie można użyć opisu klucza pęku kluczy, kiedy pęk kluczy jest wyłączony." -#: src/cryptsetup.c:3959 +#: src/cryptsetup.c:3966 msgid "Inline integrity must be used together with --integrity option." msgstr "Integralności wbudowanej należy używać wraz z opcją --integrity." -#: src/cryptsetup.c:3970 +#: src/cryptsetup.c:3977 msgid "Options --keyslot-cipher and --keyslot-key-size must be used together." msgstr "Opcje --keyslot-cipher i --keyslot-key-size muszą być użyte łącznie." -#: src/cryptsetup.c:3978 +#: src/cryptsetup.c:3985 msgid "No action taken. Invoked with --test-args option.\n" msgstr "Nie wykonano akcji. Wywołano z opcją --test-args.\n" -#: src/cryptsetup.c:3991 +#: src/cryptsetup.c:3998 msgid "Cannot disable metadata locking." msgstr "Nie można wyłączyć blokowania metadanych." @@ -3220,7 +3224,7 @@ msgstr "Polecenie wymaga lub opcji --root-hash-file jako argu msgid " " msgstr " " -#: src/veritysetup.c:485 src/integritysetup.c:553 +#: src/veritysetup.c:485 src/integritysetup.c:559 msgid "format device" msgstr "sformatowanie urządzenia" @@ -3236,7 +3240,7 @@ msgstr "weryfikacja urządzenia" msgid " []" msgstr " []" -#: src/veritysetup.c:489 src/integritysetup.c:556 +#: src/veritysetup.c:489 src/integritysetup.c:562 msgid "show active device status" msgstr "pokazanie stanu aktywnego urządzenia" @@ -3244,7 +3248,7 @@ msgstr "pokazanie stanu aktywnego urządzenia" msgid "" msgstr "" -#: src/veritysetup.c:490 src/integritysetup.c:557 +#: src/veritysetup.c:490 src/integritysetup.c:563 msgid "show on-disk information" msgstr "wyświetlenie informacji z dysku" @@ -3286,7 +3290,7 @@ msgstr "Opcji --panic-on-corruption oraz --restart-on-corruption nie można uży msgid "Option --error-as-corruption must be used with --panic-on-corruption or --restart-on-corruption." msgstr "Opcja --error-as-corruption musi być użyta z --panic-on-corruption lub --restart-on-corruption." -#: src/integritysetup.c:168 +#: src/integritysetup.c:169 #, c-format msgid "" "This will overwrite data on %s and %s irrevocably.\n" @@ -3295,33 +3299,33 @@ msgstr "" "Ta operacja nieodwracalnie nadpisze dane na %s i %s.\n" "Aby zachować urządzenie danych, można użyć opcji --no-wipe (a następnie uaktywnić z --integrity-recalculate)." -#: src/integritysetup.c:213 +#: src/integritysetup.c:215 #, c-format msgid "Formatted with tag size %u%s, internal integrity %s.\n" msgstr "Sformatowano z rozmiarem znacznika %u%s, wewnętrzna integralność %s.\n" -#: src/integritysetup.c:214 +#: src/integritysetup.c:216 msgid " (inline hw tags)" msgstr " (wbudowane znaczniki hw)" -#: src/integritysetup.c:303 +#: src/integritysetup.c:305 msgid "Setting recalculate flag is not supported, you may consider using --wipe instead." msgstr "Ustawianie flagi recalculate nie jest obsługiwane, zamiast tego można rozważyć użycie --wipe." -#: src/integritysetup.c:380 src/integritysetup.c:540 +#: src/integritysetup.c:382 src/integritysetup.c:546 #, c-format msgid "Device %s is not a valid INTEGRITY device." msgstr "Urządzenie %s nie jest prawidłowym urządzeniem INTEGRITY." -#: src/integritysetup.c:553 src/integritysetup.c:557 +#: src/integritysetup.c:559 src/integritysetup.c:563 msgid "" msgstr "" -#: src/integritysetup.c:554 +#: src/integritysetup.c:560 msgid " " msgstr " " -#: src/integritysetup.c:577 +#: src/integritysetup.c:583 #, c-format msgid "" "\n" @@ -3332,7 +3336,7 @@ msgstr "" " to urządzenie do utworzenia pod %s\n" " to urządzenie zawierające dane ze znacznikami integralności\n" -#: src/integritysetup.c:582 +#: src/integritysetup.c:588 #, c-format msgid "" "\n" @@ -3345,48 +3349,48 @@ msgstr "" "\tAlgorytm sumy kontrolnej: %s\n" "\tMaksymalny rozmiar pliku klucza: %dkB\n" -#: src/integritysetup.c:639 +#: src/integritysetup.c:645 #, c-format msgid "Invalid --%s size. Maximum is %u bytes." msgstr "Błędny rozmiar --%s. Maksimum w bajtach to %u." -#: src/integritysetup.c:742 +#: src/integritysetup.c:748 msgid "Both key file and key size options must be specified." msgstr "Muszą być podane obie opcje: pliku klucza i rozmiaru klucza." -#: src/integritysetup.c:746 +#: src/integritysetup.c:752 msgid "Both journal integrity key file and key size options must be specified." msgstr "Muszą być podane obie opcje: pliku klucza integralności i rozmiaru klucza." -#: src/integritysetup.c:749 +#: src/integritysetup.c:755 msgid "Journal integrity algorithm must be specified if journal integrity key is used." msgstr "Algorytm integralności kroniki musi być podany, jeśli używany jest klucz integralności kroniki." -#: src/integritysetup.c:753 +#: src/integritysetup.c:759 msgid "Both journal encryption key file and key size options must be specified." msgstr "Muszą być podane obie opcje: pliku szyfrowania kroniki i rozmiaru klucza." -#: src/integritysetup.c:756 +#: src/integritysetup.c:762 msgid "Journal encryption algorithm must be specified if journal encryption key is used." msgstr "Algorytm szyfrowania kroniki musi być podany, jeśli używany jest klucz szyfrowania kroniki." -#: src/integritysetup.c:760 +#: src/integritysetup.c:766 msgid "Recovery and bitmap mode options are mutually exclusive." msgstr "Opcje trybu odtwarzania i bitmapy wykluczają się wzajemnie." -#: src/integritysetup.c:767 +#: src/integritysetup.c:773 msgid "Journal options cannot be used in bitmap mode." msgstr "Opcji kroniki nie można używać w trybie bitmapy." -#: src/integritysetup.c:772 +#: src/integritysetup.c:778 msgid "Bitmap options can be used only in bitmap mode." msgstr "Opcje bitmapy mogą być używane tylko w trybie bitmapy." -#: src/integritysetup.c:778 +#: src/integritysetup.c:784 msgid "Inline mode cannot be combined with journal or bitmap options." msgstr "Tryb wbudowany nie może być łączony z opcjami kroniki ani bitmapy." -#: src/integritysetup.c:782 +#: src/integritysetup.c:788 msgid "Inline mode cannot be combined with separate data device." msgstr "Tryb wbudowany nie może być łączony z osobnym urządzeniem danych." @@ -3741,32 +3745,32 @@ msgstr "Urządzenie nie jest w trybie odszyfrowywania LUKS2. Konflikt opcji --de msgid "Device is in reencryption using datashift resilience. Requested --resilience option cannot be applied." msgstr "Urządzenie jest w trybie ponownego szyfrowania z użyciem odporności przesunięcia danych. Nie można użyć żądanej opcji --resilience." -#: src/utils_reencrypt.c:282 src/utils_reencrypt.c:1924 +#: src/utils_reencrypt.c:283 src/utils_reencrypt.c:1927 msgid "Cannot determine volume key size for LUKS without keyslots, please use --new-key-size option." msgstr "Nie można określić rozmiaru klucza wolumenu dla LUKS bez kluczy, proszę użyć opcji --new-key-size." -#: src/utils_reencrypt.c:436 +#: src/utils_reencrypt.c:438 msgid "Device requires reencryption recovery. Run repair first." msgstr "Urządzenie wymaga odtwarzania ponownego szyfrowania. Najpierw należy uruchomić naprawę." -#: src/utils_reencrypt.c:450 +#: src/utils_reencrypt.c:452 #, c-format msgid "Device %s is already in LUKS2 reencryption. Do you wish to resume previously initialised operation?" msgstr "Urządzenie %s jest już w trybie ponownego szyfrowania LUKS2. Czy wznowić uprzednio zainicjowaną operację?" -#: src/utils_reencrypt.c:561 +#: src/utils_reencrypt.c:563 msgid "Legacy LUKS2 reencryption is no longer supported." msgstr "Stara wersja ponownego szyfrowania LUKS2 nie jest już obsługiwana." -#: src/utils_reencrypt.c:566 +#: src/utils_reencrypt.c:568 msgid "Can not reencrypt LUKS2 device configured to use OPAL." msgstr "Nie można ponownie zaszyfrować urządzenia LUKS2 skonfigurowanego do używania OPAL." -#: src/utils_reencrypt.c:572 +#: src/utils_reencrypt.c:574 msgid "Reencryption of device with integrity profile is not supported." msgstr "Ponowne szyfrowanie urządzenia z profilem integralności nie jest obsługiwane." -#: src/utils_reencrypt.c:609 +#: src/utils_reencrypt.c:611 #, c-format msgid "" "Requested --sector-size % is incompatible with %s superblock\n" @@ -3775,110 +3779,110 @@ msgstr "" "Żądany --sector-size % jest niezgodny z superblokiem %s\n" "(rozmiar bloku: % B), wykrytym na urządzeniu %s." -#: src/utils_reencrypt.c:678 src/utils_reencrypt.c:2204 +#: src/utils_reencrypt.c:680 src/utils_reencrypt.c:2207 msgid "Encryption without detached header (--header) is not possible without data device size reduction (--reduce-device-size)." msgstr "Szyfrowanie bez odłączonego nagłówka (--header) jest niemożliwe bez ograniczenia rozmiaru urządzenia danych (--reduce-device-size)." -#: src/utils_reencrypt.c:687 +#: src/utils_reencrypt.c:689 msgid "Requested data offset must be less than or equal to half of --reduce-device-size parameter." msgstr "Żądany offset danych musi być mniejszy lub równy połowie parametru --reduce-device-size." -#: src/utils_reencrypt.c:697 +#: src/utils_reencrypt.c:699 #, c-format msgid "Adjusting --reduce-device-size value to twice the --offset % (sectors).\n" msgstr "Modyfikowanie wartości --reduce-device-size do dwukrotności parametru --offset % (w sektorach).\n" -#: src/utils_reencrypt.c:727 +#: src/utils_reencrypt.c:729 #, c-format msgid "Temporary header file %s already exists. Aborting." msgstr "Plik nagłówka %s już istnieje. Przerwano." -#: src/utils_reencrypt.c:729 src/utils_reencrypt.c:736 +#: src/utils_reencrypt.c:731 src/utils_reencrypt.c:738 #, c-format msgid "Cannot create temporary header file %s." msgstr "Nie można utworzyć pliku tymczasowego nagłówka %s." -#: src/utils_reencrypt.c:761 +#: src/utils_reencrypt.c:763 msgid "LUKS2 metadata size is larger than data shift value." msgstr "Rozmiar metadanych LUKS2 jest większy niż wartość przesunięcia danych." -#: src/utils_reencrypt.c:800 +#: src/utils_reencrypt.c:802 #, c-format msgid "Failed to place new header at head of device %s." msgstr "Nie udało się umieścić nowego nagłówka na początku urządzenia %s." -#: src/utils_reencrypt.c:813 +#: src/utils_reencrypt.c:815 #, c-format msgid "%s/%s is now active and ready for online encryption.\n" msgstr "%s/%s jest teraz aktywne i gotowe do szyfrowania w locie.\n" -#: src/utils_reencrypt.c:850 +#: src/utils_reencrypt.c:852 #, c-format msgid "Active device %s is not LUKS2." msgstr "Aktywne urządzenie %s nie jest urządzeniem LUKS2." -#: src/utils_reencrypt.c:878 +#: src/utils_reencrypt.c:880 msgid "Restoring original LUKS2 header." msgstr "Odtwarzanie oryginalnego nagłówka LUKS2." -#: src/utils_reencrypt.c:886 +#: src/utils_reencrypt.c:888 msgid "Original LUKS2 header restore failed." msgstr "Odtwarzanie oryginalnego nagłówka LUKS2 nie powiodło się." -#: src/utils_reencrypt.c:918 +#: src/utils_reencrypt.c:920 #, c-format msgid "Header file %s does not exist. Do you want to initialize LUKS2 decryption of device %s and export LUKS2 header to file %s?" msgstr "Plik nagłówka %s nie istnieje. Czy zainicjować odszyfrowywanie LUKS2 urządzenia %s i eksport nagłówka LUKS2 do pliku %s?" -#: src/utils_reencrypt.c:961 +#: src/utils_reencrypt.c:963 msgid "Failed to add read/write permissions to exported header file." msgstr "Nie udało się dodać uprawnień odczytu/zapisu do pliku wyeksportowanego nagłówka." -#: src/utils_reencrypt.c:1015 +#: src/utils_reencrypt.c:1017 #, c-format msgid "Reencryption initialization failed. Header backup is available in %s." msgstr "Inicjowanie ponownego szyfrowania nie powiodło się. Kopia zapasowa nagłówka jest dostępna w %s." -#: src/utils_reencrypt.c:1043 +#: src/utils_reencrypt.c:1045 msgid "LUKS2 decryption is supported with detached header device only (with data offset set to 0)." msgstr "Odszyfrowanie LUKS2 jest obsługiwane tylko z urządzeniem z odłączonym nagłówkiem (z offsetem danych ustawionym na 0)." -#: src/utils_reencrypt.c:1487 +#: src/utils_reencrypt.c:1490 msgid "No token could unlock the device." msgstr "Żaden token nie może odblokować urządzenia." -#: src/utils_reencrypt.c:1519 src/utils_reencrypt.c:1528 +#: src/utils_reencrypt.c:1522 src/utils_reencrypt.c:1531 msgid "Not enough free keyslots for reencryption." msgstr "Za mało wolnych kluczy do ponownego szyfrowania." -#: src/utils_reencrypt.c:1559 +#: src/utils_reencrypt.c:1562 msgid "Key file or keyring key description can be used only with --key-slot or with exactly one key slot active." msgstr "Pliku klucza lub opisu klucza pęku kluczy można użyć tylko z --key-slot albo przy dokładnie jednym aktywnym kluczu." -#: src/utils_reencrypt.c:1566 src/utils_reencrypt.c:1579 +#: src/utils_reencrypt.c:1569 src/utils_reencrypt.c:1582 #: src/utils_reencrypt_luks1.c:1092 src/utils_reencrypt_luks1.c:1103 #, c-format msgid "Enter passphrase for key slot %d: " msgstr "Hasło dla klucza %d: " -#: src/utils_reencrypt.c:1876 +#: src/utils_reencrypt.c:1879 #, c-format msgid "Switching data encryption cipher to %s.\n" msgstr "Zmiana szyfru do szyfrowania danych na %s.\n" -#: src/utils_reencrypt.c:1977 src/utils_reencrypt.c:1998 +#: src/utils_reencrypt.c:1980 src/utils_reencrypt.c:2001 msgid "Use --force-no-keyslots to reencrypt device with active keyslots by passing volume keys directly." msgstr "Można użyć --force-no-keyslots, aby ponownie zaszyfrować urządzenie z aktywnymi kluczami przekazując bezpośrednio klucze wolumenu." -#: src/utils_reencrypt.c:1993 +#: src/utils_reencrypt.c:1996 msgid "Option --new-volume-key-file must be paired with --new-key-size" msgstr "Opcja --new-volume-key-file musi być sparowana z --new-key-size" -#: src/utils_reencrypt.c:2035 +#: src/utils_reencrypt.c:2038 msgid "No data segment parameters changed. Reencryption aborted." msgstr "Nie zmieniono parametrów segmentu danych. Ponowne szyfrowanie przerwane." -#: src/utils_reencrypt.c:2072 +#: src/utils_reencrypt.c:2075 msgid "" "Encryption sector size increase on offline device is not supported.\n" "Activate the device first or use --force-offline-reencrypt option (dangerous!)." @@ -3886,7 +3890,7 @@ msgstr "" "Zwiększanie rozmiaru sektora szyfrowania na urządzeniu offline nie jest obsługiwane.\n" "Należy najpierw uaktywnić urządzenie lub użyć opcji --force-offline-reencrypt (niebezpieczna!)." -#: src/utils_reencrypt.c:2114 src/utils_reencrypt_luks1.c:688 +#: src/utils_reencrypt.c:2117 src/utils_reencrypt_luks1.c:688 #: src/utils_reencrypt_luks1.c:759 msgid "" "\n" @@ -3895,58 +3899,58 @@ msgstr "" "\n" "Ponowne szyfrowanie przerwane." -#: src/utils_reencrypt.c:2119 +#: src/utils_reencrypt.c:2122 msgid "Resuming LUKS reencryption in forced offline mode.\n" msgstr "Wznawianie ponownego szyfrowania LUKS w wymuszonym trybie offline.\n" -#: src/utils_reencrypt.c:2142 +#: src/utils_reencrypt.c:2145 #, c-format msgid "Device %s contains broken LUKS metadata. Aborting operation." msgstr "Urządzenie %s zawiera uszkodzone metadane LUKS. Przerwano operację." -#: src/utils_reencrypt.c:2158 src/utils_reencrypt.c:2180 +#: src/utils_reencrypt.c:2161 src/utils_reencrypt.c:2183 #, c-format msgid "Device %s is already LUKS device. Aborting operation." msgstr "Urządzenie %s jest już urządzeniem LUKS. Przerwano operację." -#: src/utils_reencrypt.c:2186 +#: src/utils_reencrypt.c:2189 #, c-format msgid "Device %s is already in LUKS reencryption. Aborting operation." msgstr "Urządzenie %s jest już w trybie ponownego szyfrowania LUKS. Przerwano operację." -#: src/utils_reencrypt.c:2269 +#: src/utils_reencrypt.c:2272 msgid "LUKS2 decryption requires --header option." msgstr "Odszyfrowanie LUKS2 wymaga opcji --header." -#: src/utils_reencrypt.c:2317 +#: src/utils_reencrypt.c:2320 msgid "Command requires device as argument." msgstr "Polecenie wymaga urządzenia jako argumentu." -#: src/utils_reencrypt.c:2330 +#: src/utils_reencrypt.c:2333 #, c-format msgid "Conflicting versions. Device %s is LUKS1." msgstr "Konflikt wersji. Urządzenie %s jest urządzeniem LUKS1." -#: src/utils_reencrypt.c:2336 +#: src/utils_reencrypt.c:2339 #, c-format msgid "Conflicting versions. Device %s is in LUKS1 reencryption." msgstr "Konflikt wersji. Urządzenie %s jest w trybie ponownego szyfrowania LUKS1." -#: src/utils_reencrypt.c:2342 +#: src/utils_reencrypt.c:2345 #, c-format msgid "Conflicting versions. Device %s is LUKS2." msgstr "Konflikt wersji. Urządzenie %s jest urządzeniem LUKS2." -#: src/utils_reencrypt.c:2348 +#: src/utils_reencrypt.c:2351 #, c-format msgid "Conflicting versions. Device %s is in LUKS2 reencryption." msgstr "Konflikt wersji. Urządzenie %s jest w trybie ponownego szyfrowania LUKS2." -#: src/utils_reencrypt.c:2354 +#: src/utils_reencrypt.c:2357 msgid "LUKS2 reencryption already initialized. Aborting operation." msgstr "Ponowne szyfrowanie LUKS2 jest już zainicjowane. Przerywanie operacji." -#: src/utils_reencrypt.c:2361 +#: src/utils_reencrypt.c:2364 msgid "Device reencryption not in progress." msgstr "Ponowne szyfrowanie urządzenia nie jest w toku." From 252dc78d6a5b53354f3581aec196b06c2bce08e6 Mon Sep 17 00:00:00 2001 From: Remus-Gabriel Chelu Date: Sun, 19 Jul 2026 19:51:04 +0200 Subject: [PATCH 187/244] po: update ro.po (from translationproject.org) --- po/ro.po | 629 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 317 insertions(+), 312 deletions(-) diff --git a/po/ro.po b/po/ro.po index 144a5bcd2..5bd85f158 100644 --- a/po/ro.po +++ b/po/ro.po @@ -19,14 +19,15 @@ # Actualizare a traducerii pentru versiunea 2.8.2-rc0, făcută de R-GC, dec-2025. # Actualizare a traducerii pentru versiunea 2.8.5-rc0, făcută de R-GC, mar-2026. # Actualizare a traducerii pentru versiunea 2.8.7-rc1, făcută de R-GC, iun-2026. +# Actualizare a traducerii pentru versiunea 2.8.7-rc2, făcută de R-GC, iul-2026. # Actualizare a traducerii pentru versiunea Y, făcută de X, Y(luna-anul). # msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.7-rc1\n" +"Project-Id-Version: cryptsetup 2.8.7-rc2\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2026-06-29 21:30+0200\n" -"PO-Revision-Date: 2026-06-30 15:24+0200\n" +"POT-Creation-Date: 2026-07-09 10:46+0200\n" +"PO-Revision-Date: 2026-07-11 17:10+0200\n" "Last-Translator: Remus-Gabriel Chelu \n" "Language-Team: Romanian \n" "Language: ro\n" @@ -218,10 +219,10 @@ msgid "Failed to rollback LUKS2 metadata in memory." msgstr "Nu s-au putut reîncărca metadatele LUKS2 în memorie." #: lib/setup.c:896 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 -#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1779 -#: src/cryptsetup.c:1963 src/cryptsetup.c:2018 src/cryptsetup.c:2216 -#: src/cryptsetup.c:2361 src/cryptsetup.c:2639 src/cryptsetup.c:2952 -#: src/cryptsetup.c:3020 src/utils_reencrypt.c:2281 +#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 +#: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 +#: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2954 +#: src/cryptsetup.c:3022 src/utils_reencrypt.c:2284 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." @@ -265,7 +266,7 @@ msgid "Detached metadata device is not supported for this crypt type." msgstr "Dispozitivul cu metadate detașate nu este acceptat pentru acest tip de criptare." #: lib/setup.c:1642 lib/setup.c:1890 lib/luks2/luks2_reencrypt.c:3035 -#: src/cryptsetup.c:1491 src/cryptsetup.c:3759 +#: src/cryptsetup.c:1492 src/cryptsetup.c:3761 msgid "Unsupported encryption sector size." msgstr "Dimensiunea sectorului de criptare nu este acceptată." @@ -587,14 +588,14 @@ msgstr "Nu s-a putut dezlega cheia de volum de la inelul de chei specificat de u msgid "Failed to link volume key in user defined keyring." msgstr "Nu s-a putut leg cheia de volum la inelul de chei specificat de utilizator." -#: lib/setup.c:4556 src/cryptsetup.c:2720 +#: lib/setup.c:4556 src/cryptsetup.c:2722 #, c-format msgid "Volume %s is not suspended." msgstr "Volumul %s nu este suspendat." -#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1855 -#: src/cryptsetup.c:2259 src/cryptsetup.c:2277 src/utils_reencrypt.c:305 -#: src/utils_reencrypt.c:1966 +#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1856 +#: src/cryptsetup.c:2260 src/cryptsetup.c:2278 src/utils_reencrypt.c:306 +#: src/utils_reencrypt.c:1969 msgid "Volume key does not match the volume." msgstr "Cheia de volum nu se potrivește cu volumul." @@ -607,8 +608,8 @@ msgstr "Nu s-a putut efectua interschimbarea cu noul slot pentru cheie." msgid "Key slot %d is invalid." msgstr "Slotul de cheie %d nu este valid." -#: lib/setup.c:4925 src/cryptsetup.c:1976 src/cryptsetup.c:2436 -#: src/cryptsetup.c:3120 src/cryptsetup.c:3180 +#: lib/setup.c:4925 src/cryptsetup.c:1977 src/cryptsetup.c:2437 +#: src/cryptsetup.c:3122 src/cryptsetup.c:3182 #, c-format msgid "Keyslot %d is not active." msgstr "Slotul de cheie %d nu este activ." @@ -805,7 +806,7 @@ msgid "Cannot read requested amount of data." msgstr "Nu se poate citi cantitatea de date solicitată." #: lib/utils_device.c:207 lib/utils_storage_wrappers.c:99 -#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2254 +#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2257 #, c-format msgid "Device %s does not exist or access denied." msgstr "Dispozitivul %s nu există sau accesul a fost refuzat." @@ -1148,7 +1149,7 @@ msgstr "Modul de cifrare LUKS %s este nevalid." msgid "LUKS hash %s is invalid." msgstr "Suma de control(hash) LUKS %s nu este validă." -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1366 +#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 msgid "No known problems detected for LUKS header." msgstr "Nu s-a detectat nicio problemă cunoscută pentru antetul LUKS." @@ -1168,7 +1169,7 @@ msgstr "Decalajul datelor pentru antetul LUKS trebuie să fie 0 sau mai mare dec #: lib/luks1/keymanage.c:761 lib/luks1/keymanage.c:832 #: lib/luks2/luks2_json_format.c:231 lib/luks2/luks2_json_metadata.c:1261 -#: src/utils_reencrypt.c:701 +#: src/utils_reencrypt.c:703 msgid "Wrong LUKS UUID format provided." msgstr "Formatul UUID LUKS furnizat este greșit." @@ -1693,7 +1694,7 @@ msgstr "Nu s-a putut definii segmentul dm-crypt." msgid "Failed to set dm-linear segment." msgstr "Nu s-a putut definii segmentul dm-linear." -#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:578 +#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:580 msgid "No known cipher specification pattern detected in LUKS2 header." msgstr "Nu s-a detectat niciun model de specificație de cifrare cunoscut în antetul LUKS2." @@ -2156,8 +2157,8 @@ msgstr "Parametrii de criptare a slotului de cheie pot fi stabiliți numai pentr msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encryption." msgstr "Parametrii de criptare a slotului de chei nu sunt compatibili cu criptarea slotului de chei LUKS2." -#: src/cryptsetup.c:150 src/cryptsetup.c:1179 src/cryptsetup.c:1544 -#: src/utils_reencrypt.c:1887 src/utils_reencrypt_luks1.c:502 +#: src/cryptsetup.c:150 src/cryptsetup.c:1180 src/cryptsetup.c:1545 +#: src/utils_reencrypt.c:1890 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." msgstr "Nu s-a detectat niciun model de specificație de cifrare cunoscut." @@ -2184,8 +2185,8 @@ msgstr "AVERTISMENT: Parametrul „--hash” este ignorat în modul simplu, cu f msgid "WARNING: The --keyfile-size option is being ignored, the read size is the same as the encryption key size.\n" msgstr "AVERTISMENT: Opțiunea „--keyfile-size” este ignorată, dimensiunea de citire este aceeași cu dimensiunea cheii de criptare.\n" -#: src/cryptsetup.c:226 src/cryptsetup.c:1374 src/cryptsetup.c:1597 -#: src/integritysetup.c:188 src/utils_reencrypt.c:2138 +#: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 +#: src/integritysetup.c:189 src/utils_reencrypt.c:2141 #, c-format msgid "Blkid scan failed for %s." msgstr "Scanarea «blkid» a eșuat pentru %s." @@ -2195,11 +2196,11 @@ msgstr "Scanarea «blkid» a eșuat pentru %s." msgid "Detected device signature(s) on %s. Proceeding further may damage existing data." msgstr "S-au detectat semnături de dispozitiv pe %s. Continuarea operației, riscă să deterioreze datele existente." -#: src/cryptsetup.c:238 src/cryptsetup.c:1260 src/cryptsetup.c:1308 -#: src/cryptsetup.c:1381 src/cryptsetup.c:1521 src/cryptsetup.c:1609 -#: src/cryptsetup.c:2494 src/cryptsetup.c:2923 src/integritysetup.c:178 -#: src/utils_reencrypt.c:111 src/utils_reencrypt.c:457 -#: src/utils_reencrypt.c:925 +#: src/cryptsetup.c:238 src/cryptsetup.c:1261 src/cryptsetup.c:1309 +#: src/cryptsetup.c:1382 src/cryptsetup.c:1522 src/cryptsetup.c:1610 +#: src/cryptsetup.c:2495 src/cryptsetup.c:2925 src/integritysetup.c:179 +#: src/utils_reencrypt.c:111 src/utils_reencrypt.c:459 +#: src/utils_reencrypt.c:927 msgid "Operation aborted.\n" msgstr "Operația se întrerupe.\n" @@ -2207,36 +2208,36 @@ msgstr "Operația se întrerupe.\n" msgid "Option --key-file is required." msgstr "Opțiunea „--key-file” este necesară." -#: src/cryptsetup.c:377 +#: src/cryptsetup.c:378 msgid "Enter VeraCrypt PIM: " msgstr "Introduceți PIM-ul VeraCrypt: " -#: src/cryptsetup.c:386 +#: src/cryptsetup.c:387 msgid "Invalid PIM value: parse error." msgstr "Valoare PIM nevalidă: eroare de analizare." -#: src/cryptsetup.c:389 +#: src/cryptsetup.c:390 msgid "Invalid PIM value: 0." msgstr "Valoare PIM nevalidă: 0." -#: src/cryptsetup.c:392 +#: src/cryptsetup.c:393 msgid "Invalid PIM value: outside of range." msgstr "Valoare PIM nevalidă: în afara intervalului." -#: src/cryptsetup.c:415 +#: src/cryptsetup.c:416 msgid "No device header detected with this passphrase." msgstr "Nu a fost detectat niciun antet de dispozitiv cu această frază de acces." -#: src/cryptsetup.c:492 src/cryptsetup.c:677 +#: src/cryptsetup.c:493 src/cryptsetup.c:678 #, c-format msgid "Device %s is not a valid BITLK device." msgstr "Dispozitivul %s nu este un dispozitiv BITLK valid." -#: src/cryptsetup.c:500 +#: src/cryptsetup.c:501 msgid "Cannot determine volume key size for BITLK, please use --key-size option." msgstr "Nu se poate determina dimensiunea cheii de volum pentru BITLK; utilizați opțiunea „--key-size” pentru a o furniza." -#: src/cryptsetup.c:546 +#: src/cryptsetup.c:547 msgid "" "Header dump with volume key is sensitive information\n" "which allows access to encrypted partition without passphrase.\n" @@ -2246,7 +2247,7 @@ msgstr "" "care permite accesul la partiția criptată fără fraza de acces.\n" "Acest conținut ar trebui să fie întotdeauna stocat criptat într-un loc sigur." -#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2519 +#: src/cryptsetup.c:614 src/cryptsetup.c:700 src/cryptsetup.c:2520 msgid "" "The header dump with volume key is sensitive information\n" "that allows access to encrypted partition without a passphrase.\n" @@ -2256,114 +2257,114 @@ msgstr "" "care permite accesul la partiția criptată fără fraza de acces.\n" "Acest conținut ar trebui să fie întotdeauna stocat criptat într-un loc sigur." -#: src/cryptsetup.c:754 src/cryptsetup.c:786 +#: src/cryptsetup.c:755 src/cryptsetup.c:787 #, c-format msgid "Device %s is not a valid FVAULT2 device." msgstr "Dispozitivul %s nu este un dispozitiv FVAULT2 valid." -#: src/cryptsetup.c:794 +#: src/cryptsetup.c:795 msgid "Cannot determine volume key size for FVAULT2, please use --key-size option." msgstr "Nu se poate determina dimensiunea cheii de volum pentru FVAULT2; utilizați opțiunea „--key-size” pentru a o furniza." -#: src/cryptsetup.c:848 src/veritysetup.c:317 src/integritysetup.c:416 +#: src/cryptsetup.c:849 src/veritysetup.c:317 src/integritysetup.c:422 #, c-format msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "Dispozitivul %s este încă activ și programat pentru eliminare temporizată.\n" -#: src/cryptsetup.c:881 src/cryptsetup.c:1807 src/cryptsetup.c:2081 -#: src/cryptsetup.c:2228 src/cryptsetup.c:2647 src/cryptsetup.c:2728 -#: src/cryptsetup.c:3261 +#: src/cryptsetup.c:882 src/cryptsetup.c:1808 src/cryptsetup.c:2082 +#: src/cryptsetup.c:2229 src/cryptsetup.c:2648 src/cryptsetup.c:2730 +#: src/cryptsetup.c:3263 #, c-format msgid "Failed to set external tokens path %s." msgstr "Nu s-a putut definii ruta jetoanelor(tokens) externe %s." -#: src/cryptsetup.c:890 +#: src/cryptsetup.c:891 msgid "Resize of active device requires volume key in keyring but --disable-keyring option is set." msgstr "Redimensionarea dispozitivului activ necesită cheia de volum în inelul de chei, dar opțiunea „--disable-keyring” este furnizată." -#: src/cryptsetup.c:1057 +#: src/cryptsetup.c:1058 msgid "Benchmark interrupted." msgstr "Testarea pentru evaluarea performanței a fost întreruptă." -#: src/cryptsetup.c:1078 +#: src/cryptsetup.c:1079 #, c-format msgid "PBKDF2-%-9s N/A\n" msgstr "PBKDF2-%-9s (neaplicabil)\n" -#: src/cryptsetup.c:1080 +#: src/cryptsetup.c:1081 #, c-format msgid "PBKDF2-%-9s %7u iterations per second for %zu-bit key\n" msgstr "PBKDF2-%-9s %7u iterații pe secundă pentru cheia %zu-bit\n" -#: src/cryptsetup.c:1094 +#: src/cryptsetup.c:1095 #, c-format msgid "%-10s N/A\n" msgstr "%-10s (neaplicabil)\n" -#: src/cryptsetup.c:1096 +#: src/cryptsetup.c:1097 #, c-format msgid "%-10s %4u iterations, %5u memory, %1u parallel threads (CPUs) for %zu-bit key (requested %u ms time)\n" msgstr "%-10s %4u iterații, %5u memorie, %1u fire paralele (CPU-uri) pentru cheia %zu-bit (timpul necesitat %u ms)\n" -#: src/cryptsetup.c:1120 +#: src/cryptsetup.c:1121 msgid "Result of benchmark is not reliable." msgstr "Rezultatul testului de evaluare a performanței nu este fiabil." -#: src/cryptsetup.c:1171 +#: src/cryptsetup.c:1172 msgid "# Tests are approximate using memory only (no storage IO).\n" msgstr "# Testele sunt aproximative folosind doar memoria (fără In/Ieș de stocare).\n" #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1196 +#: src/cryptsetup.c:1197 #, c-format msgid "#%*s Algorithm | Key | Encryption | Decryption\n" msgstr "#%*s Algoritm | Cheie | Criptare | Decriptare\n" -#: src/cryptsetup.c:1204 +#: src/cryptsetup.c:1205 #, c-format msgid "Cipher %s (with %i bits key) is not available." msgstr "Cifrarea %s (cu cheie de %i biți) nu este disponibilă." #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1225 +#: src/cryptsetup.c:1226 msgid "# Algorithm | Key | Encryption | Decryption\n" msgstr "# Algoritm | Cheie | Criptare | Decriptare\n" -#: src/cryptsetup.c:1238 +#: src/cryptsetup.c:1239 msgid "N/A" msgstr "nedisponibil" -#: src/cryptsetup.c:1241 +#: src/cryptsetup.c:1242 msgid "# Cipher speed test is not available.\n" msgstr "# Testul de viteză al cifrului nu este disponibil.\n" -#: src/cryptsetup.c:1257 +#: src/cryptsetup.c:1258 msgid "" "Unprotected LUKS2 reencryption metadata detected. Please verify the reencryption operation is desirable (see luksDump output)\n" "and continue (upgrade metadata) only if you acknowledge the operation as genuine." msgstr "Au fost detectate metadate neprotejate de recriptare LUKS2. Verificați că operațiunea de recriptare este de dorit (consultați ieșirea luksDump) și continuați (să actualizați metadatele) numai dacă recunoașteți operația ca fiind autentică." -#: src/cryptsetup.c:1263 +#: src/cryptsetup.c:1264 msgid "Enter passphrase to protect and upgrade reencryption metadata: " msgstr "Introduceți fraza de acces pentru a proteja și actualiza metadatele de recriptare: " -#: src/cryptsetup.c:1307 +#: src/cryptsetup.c:1308 msgid "Really proceed with LUKS2 reencryption recovery?" msgstr "Continuați cu adevărat cu recuperarea recriptării LUKS2?" -#: src/cryptsetup.c:1316 +#: src/cryptsetup.c:1317 msgid "Enter passphrase to verify reencryption metadata digest: " msgstr "Introduceți fraza de acces pentru a verifica calcularea sumele de control a metadatelor de recriptare: " -#: src/cryptsetup.c:1318 +#: src/cryptsetup.c:1319 msgid "Enter passphrase for reencryption recovery: " msgstr "Introduceți fraza de acces pentru recuperarea recriptării: " -#: src/cryptsetup.c:1380 +#: src/cryptsetup.c:1381 msgid "Really try to repair LUKS device header?" msgstr "Încercați cu adevărat să reparați antetul dispozitivului LUKS?" -#: src/cryptsetup.c:1408 src/integritysetup.c:76 src/integritysetup.c:244 +#: src/cryptsetup.c:1409 src/integritysetup.c:76 src/integritysetup.c:246 msgid "" "\n" "Wipe interrupted." @@ -2371,7 +2372,7 @@ msgstr "" "\n" "Ștergere întreruptă." -#: src/cryptsetup.c:1413 src/integritysetup.c:81 src/integritysetup.c:289 +#: src/cryptsetup.c:1414 src/integritysetup.c:81 src/integritysetup.c:291 msgid "" "Wiping device to initialize integrity checksum.\n" "You can interrupt this by pressing CTRL+c (rest of not wiped device will contain invalid checksum).\n" @@ -2379,167 +2380,167 @@ msgstr "" "Se șterge dispozitivul pentru a inițializa calcularea sumei de control a integrității.\n" "Puteți întrerupe acest lucru apăsând CTRL+c (restul dispozitivului care nu este șters va conține o sumă de control nevalidă).\n" -#: src/cryptsetup.c:1435 src/integritysetup.c:103 +#: src/cryptsetup.c:1436 src/integritysetup.c:103 #, c-format msgid "Cannot deactivate temporary device %s." msgstr "Nu se poate dezactiva dispozitivul temporar %s." -#: src/cryptsetup.c:1483 +#: src/cryptsetup.c:1484 msgid "OPAL hw-only encryption does not support --cipher and --key-size, options ignored." msgstr "Criptarea OPAL hw-only nu acceptă „--cipher” și „--key-size”, opțiunile sunt ignorate." -#: src/cryptsetup.c:1496 +#: src/cryptsetup.c:1497 msgid "Integrity option can be used only for LUKS2 format." msgstr "Opțiunea de integritate poate fi utilizată numai pentru formatul LUKS2." -#: src/cryptsetup.c:1501 src/cryptsetup.c:1581 +#: src/cryptsetup.c:1502 src/cryptsetup.c:1582 msgid "Unsupported LUKS2 metadata size options." msgstr "Opțiuni de dimensiune a metadatelor LUKS2 neacceptate." -#: src/cryptsetup.c:1506 +#: src/cryptsetup.c:1507 msgid "OPAL is supported only for LUKS2 format." msgstr "OPAL este acceptat numai pentru formatul LUKS2." -#: src/cryptsetup.c:1511 +#: src/cryptsetup.c:1512 msgid "Inline hw tags are supported only for LUKS2 format." msgstr "Etichetele hw în linie „inline” sunt acceptate numai pentru formatul LUKS2." -#: src/cryptsetup.c:1520 +#: src/cryptsetup.c:1521 msgid "Header file does not exist, do you want to create it?" msgstr "Fișierul antet nu există, doriți să îl creați?" -#: src/cryptsetup.c:1528 +#: src/cryptsetup.c:1529 #, c-format msgid "Cannot create header file %s." msgstr "Nu se poate crea fișierul antet %s." -#: src/cryptsetup.c:1554 src/integritysetup.c:126 src/integritysetup.c:141 -#: src/integritysetup.c:150 src/integritysetup.c:328 src/integritysetup.c:336 -#: src/integritysetup.c:346 +#: src/cryptsetup.c:1555 src/integritysetup.c:127 src/integritysetup.c:142 +#: src/integritysetup.c:151 src/integritysetup.c:330 src/integritysetup.c:338 +#: src/integritysetup.c:348 msgid "No known integrity specification pattern detected." msgstr "Nu a fost detectat niciun model de specificație de integritate cunoscut." -#: src/cryptsetup.c:1556 +#: src/cryptsetup.c:1557 msgid "Cannot use specified integrity key size." msgstr "Nu se poate utiliza dimensiunea specificată a cheii de integritate." -#: src/cryptsetup.c:1574 +#: src/cryptsetup.c:1575 #, c-format msgid "Cannot use %s as on-disk header." msgstr "Nu se poate folosi %s ca antet pe disc." -#: src/cryptsetup.c:1603 src/integritysetup.c:172 +#: src/cryptsetup.c:1604 src/integritysetup.c:173 #, c-format msgid "This will overwrite data on %s irrevocably." msgstr "Acest lucru va suprascrie datele de pe %s în mod irevocabil." -#: src/cryptsetup.c:1640 +#: src/cryptsetup.c:1641 msgid "OPAL Admin password cannot be empty." msgstr "Parola de administrator OPAL nu poate fi goală." -#: src/cryptsetup.c:1654 src/cryptsetup.c:2098 src/cryptsetup.c:2241 -#: src/cryptsetup.c:2376 src/cryptsetup.c:2442 src/utils_reencrypt_luks1.c:428 +#: src/cryptsetup.c:1655 src/cryptsetup.c:2099 src/cryptsetup.c:2242 +#: src/cryptsetup.c:2377 src/cryptsetup.c:2443 src/utils_reencrypt_luks1.c:428 msgid "Failed to set pbkdf parameters." msgstr "Nu s-au putut definii parametrii pbkdf." -#: src/cryptsetup.c:1785 +#: src/cryptsetup.c:1786 msgid "Reduced data offset is allowed only for detached LUKS header." msgstr "Decalajul redus de date este permis numai pentru antetul LUKS detașat." -#: src/cryptsetup.c:1792 +#: src/cryptsetup.c:1793 #, c-format msgid "LUKS file container %s is too small for activation, there is no remaining space for data." msgstr "Containerul de fișiere LUKS %s este prea mic pentru activare, nu mai rămâne spațiu pentru date." -#: src/cryptsetup.c:1834 src/cryptsetup.c:2247 src/utils_reencrypt.c:277 -#: src/utils_reencrypt.c:369 src/utils_reencrypt.c:1907 +#: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:278 +#: src/utils_reencrypt.c:371 src/utils_reencrypt.c:1910 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "Nu se poate determina dimensiunea cheii de volum pentru LUKS fără sloturi de chei; folosiți opțiunea „--key-size” pentru a furniza aceste date." -#: src/cryptsetup.c:1853 src/utils_reencrypt.c:303 +#: src/cryptsetup.c:1854 src/utils_reencrypt.c:304 msgid "Device requires two volume keys." msgstr "Dispozitivul necesită două chei de volum." -#: src/cryptsetup.c:1888 +#: src/cryptsetup.c:1889 msgid "Some specified activation parameters were ignored with OPAL hw-only encryption." msgstr "Unii parametri de activare specificați au fost ignorați cu criptarea OPAL hw-only." -#: src/cryptsetup.c:1893 +#: src/cryptsetup.c:1894 msgid "Device activated but cannot make flags persistent." msgstr "Dispozitivul a fost activat, dar nu se poate face ca fanioanele să fie persistente." -#: src/cryptsetup.c:1973 src/cryptsetup.c:2041 +#: src/cryptsetup.c:1974 src/cryptsetup.c:2042 #, c-format msgid "Keyslot %d is selected for deletion." msgstr "Slotul de cheie %d este selectat pentru ștergere." -#: src/cryptsetup.c:1985 src/cryptsetup.c:2045 +#: src/cryptsetup.c:1986 src/cryptsetup.c:2046 msgid "This is the last keyslot. Device will become unusable after purging this key." msgstr "Acesta este ultimul slot de cheie. Dispozitivul va deveni inutilizabil după eliminarea acestei chei." -#: src/cryptsetup.c:1986 +#: src/cryptsetup.c:1987 msgid "Enter any remaining passphrase: " msgstr "Introduceți orice frază de acces rămasă: " -#: src/cryptsetup.c:1987 src/cryptsetup.c:2047 +#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 msgid "Operation aborted, the keyslot was NOT wiped.\n" msgstr "Operația a fost întreruptă, slotul de cheie NU a fost șters.\n" -#: src/cryptsetup.c:2023 +#: src/cryptsetup.c:2024 msgid "Enter passphrase to be deleted: " msgstr "Introduceți fraza de acces pentru a fi ștearsă: " -#: src/cryptsetup.c:2073 src/cryptsetup.c:2425 src/cryptsetup.c:3085 -#: src/cryptsetup.c:3252 +#: src/cryptsetup.c:2074 src/cryptsetup.c:2426 src/cryptsetup.c:3087 +#: src/cryptsetup.c:3254 #, c-format msgid "Device %s is not a valid LUKS2 device." msgstr "Dispozitivul %s nu este un dispozitiv LUKS2 valid." -#: src/cryptsetup.c:2112 src/cryptsetup.c:2311 +#: src/cryptsetup.c:2113 src/cryptsetup.c:2312 msgid "Enter new passphrase for key slot: " msgstr "Introduceți noua frază de acces pentru slotul de cheie: " -#: src/cryptsetup.c:2146 src/utils_luks.c:342 +#: src/cryptsetup.c:2147 src/utils_luks.c:342 #, c-format msgid "Enter token PIN: " msgstr "Introduceți codul PIN al jetonului: " -#: src/cryptsetup.c:2148 src/utils_luks.c:344 +#: src/cryptsetup.c:2149 src/utils_luks.c:344 #, c-format msgid "Enter token %d PIN: " msgstr "Introduceți codul PIN al jetonului(token) %d: " -#: src/cryptsetup.c:2207 +#: src/cryptsetup.c:2208 msgid "WARNING: The --key-slot parameter is used for new keyslot number.\n" msgstr "AVERTISMENT: Parametrul „--key-slot” este utilizat pentru noul număr de slot de cheie.\n" -#: src/cryptsetup.c:2284 src/utils_reencrypt_luks1.c:1094 +#: src/cryptsetup.c:2285 src/utils_reencrypt_luks1.c:1094 #, c-format msgid "Enter any existing passphrase: " msgstr "Introduceți orice frază de acces existentă: " -#: src/cryptsetup.c:2380 +#: src/cryptsetup.c:2381 msgid "Enter passphrase to be changed: " msgstr "Introduceți fraza de acces pentru a fi schimbată: " -#: src/cryptsetup.c:2396 src/utils_reencrypt_luks1.c:1080 +#: src/cryptsetup.c:2397 src/utils_reencrypt_luks1.c:1080 msgid "Enter new passphrase: " msgstr "Introduceți nouă frază de acces: " -#: src/cryptsetup.c:2446 +#: src/cryptsetup.c:2447 msgid "Enter passphrase for keyslot to be converted: " msgstr "Introduceți fraza de acces pentru slotul de cheie care urmează să fie convertit: " -#: src/cryptsetup.c:2470 +#: src/cryptsetup.c:2471 msgid "Only one device argument for isLuks operation is supported." msgstr "Doar un singur dispozitiv este admis ca argument pentru operația isLuks." -#: src/cryptsetup.c:2575 +#: src/cryptsetup.c:2576 #, c-format msgid "Keyslot %d does not contain unbound key." msgstr "Slotul de cheie %d nu conține o cheie neasociată." -#: src/cryptsetup.c:2580 +#: src/cryptsetup.c:2581 msgid "" "The header dump with unbound key is sensitive information.\n" "This dump should be stored encrypted in a safe place." @@ -2547,52 +2548,52 @@ msgstr "" "Conținutul antetului cu cheia neasociată este o informație sensibilă.\n" "Acest conținut ar trebui să fie stocat criptat într-un loc sigur." -#: src/cryptsetup.c:2675 src/cryptsetup.c:2711 +#: src/cryptsetup.c:2676 src/cryptsetup.c:2713 #, c-format msgid "%s is not active %s device name." msgstr "%s nu este numele dispozitivului activ %s." -#: src/cryptsetup.c:2706 +#: src/cryptsetup.c:2708 #, c-format msgid "%s is not active LUKS device name or header is missing." msgstr "%s nu este numele unui dispozitiv LUKS activ sau antetul lipsește." -#: src/cryptsetup.c:2783 src/cryptsetup.c:2802 +#: src/cryptsetup.c:2785 src/cryptsetup.c:2804 msgid "Option --header-backup-file is required." msgstr "Este necesară opțiunea „--header-backup-file”." -#: src/cryptsetup.c:2833 +#: src/cryptsetup.c:2835 #, c-format msgid "%s is not cryptsetup managed device." msgstr "%s nu este un dispozitiv gestionat de «cryptsetup»." -#: src/cryptsetup.c:2844 +#: src/cryptsetup.c:2846 #, c-format msgid "Refresh is not supported for device type %s" msgstr "Reîmprospătarea nu este disponibilă pentru tipul de dispozitiv %s" -#: src/cryptsetup.c:2894 +#: src/cryptsetup.c:2896 #, c-format msgid "Unrecognized metadata device type %s." msgstr "Tip de dispozitiv de metadate nerecunoscut %s." -#: src/cryptsetup.c:2896 +#: src/cryptsetup.c:2898 msgid "Command requires device and mapped name as arguments." msgstr "Comanda necesită un dispozitiv și numele asociat acestuia ca argumente." -#: src/cryptsetup.c:2914 +#: src/cryptsetup.c:2916 msgid "Enter OPAL PSID: " msgstr "Introduceți PSID OPAL: " -#: src/cryptsetup.c:2914 +#: src/cryptsetup.c:2916 msgid "Enter OPAL Admin password: " msgstr "Introduceți parola de administrator OPAL: " -#: src/cryptsetup.c:2922 +#: src/cryptsetup.c:2924 msgid "WARNING: WHOLE disk will be factory reset and all data will be lost! Continue?" msgstr "AVERTISMENT: ÎNTREGUL disc va fi reinițializat la valorile din fabrică și toate datele se vor pierde! Continuați?" -#: src/cryptsetup.c:2965 +#: src/cryptsetup.c:2967 #, c-format msgid "" "This operation will erase all keyslots on device %s.\n" @@ -2601,363 +2602,363 @@ msgstr "" "Această operație va șterge toate sloturile de chei de pe dispozitivul %s.\n" "Dispozitivul va deveni inutilizabil după această operație." -#: src/cryptsetup.c:2972 +#: src/cryptsetup.c:2974 msgid "Operation aborted, keyslots were NOT wiped.\n" msgstr "Operația a fost întreruptă, sloturile de chei NU au fost șterse.\n" -#: src/cryptsetup.c:3011 +#: src/cryptsetup.c:3013 msgid "Invalid LUKS type, only luks1 and luks2 are supported." msgstr "Tip LUKS nevalid, numai luks1 și luks2 sunt acceptate." -#: src/cryptsetup.c:3027 +#: src/cryptsetup.c:3029 #, c-format msgid "Device is already %s type." msgstr "Dispozitivul este deja de tip %s." -#: src/cryptsetup.c:3034 +#: src/cryptsetup.c:3036 #, c-format msgid "This operation will convert %s to %s format.\n" msgstr "Această operație va converti %s în formatul %s.\n" -#: src/cryptsetup.c:3037 +#: src/cryptsetup.c:3039 msgid "Operation aborted, device was NOT converted.\n" msgstr "Operația a fost întreruptă, dispozitivul NU a fost convertit.\n" -#: src/cryptsetup.c:3077 +#: src/cryptsetup.c:3079 msgid "Option --priority, --label or --subsystem is missing." msgstr "Opțiunea „--priority”, „--label” sau „--subsystem” lipsește." -#: src/cryptsetup.c:3111 src/cryptsetup.c:3151 src/cryptsetup.c:3171 +#: src/cryptsetup.c:3113 src/cryptsetup.c:3153 src/cryptsetup.c:3173 #, c-format msgid "Token %d is invalid." msgstr "Jetonul(token) %d nu este valid." -#: src/cryptsetup.c:3114 src/cryptsetup.c:3174 +#: src/cryptsetup.c:3116 src/cryptsetup.c:3176 #, c-format msgid "Token %d in use." msgstr "Jetonul(token) %d este în uz." -#: src/cryptsetup.c:3126 +#: src/cryptsetup.c:3128 #, c-format msgid "Failed to add luks2-keyring token %d." msgstr "Nu s-a putut adăuga jetonul(token) %d la inelul de chei luks2." -#: src/cryptsetup.c:3137 src/cryptsetup.c:3200 +#: src/cryptsetup.c:3139 src/cryptsetup.c:3202 #, c-format msgid "Failed to assign token %d to keyslot %d." msgstr "Nu s-a putut atribui jetonul(token) %d slotului pentru cheie %d." -#: src/cryptsetup.c:3154 +#: src/cryptsetup.c:3156 #, c-format msgid "Token %d is not in use." msgstr "Jetonul %d nu este în uz." -#: src/cryptsetup.c:3191 +#: src/cryptsetup.c:3193 msgid "Failed to import token from file." msgstr "Nu s-a putut importa jetonul din fișier." -#: src/cryptsetup.c:3216 +#: src/cryptsetup.c:3218 #, c-format msgid "Failed to get token %d for export." msgstr "Nu s-a putut obține jetonul %d pentru export." -#: src/cryptsetup.c:3229 +#: src/cryptsetup.c:3231 #, c-format msgid "Token %d is not assigned to keyslot %d." msgstr "Jetonul %d nu este alocat slotului de cheie %d." -#: src/cryptsetup.c:3231 src/cryptsetup.c:3238 +#: src/cryptsetup.c:3233 src/cryptsetup.c:3240 #, c-format msgid "Failed to unassign token %d from keyslot %d." msgstr "Nu s-a putut anula atribuirea jetonului %d din slotul de cheie %d." -#: src/cryptsetup.c:3297 +#: src/cryptsetup.c:3299 msgid "Option --tcrypt-hidden, --tcrypt-system or --tcrypt-backup is supported only for TCRYPT device." msgstr "Opțiunea „--tcrypt-hidden”, „--tcrypt-system” sau „--tcrypt-backup” este acceptată doar pentru dispozitivele TCRYPT." -#: src/cryptsetup.c:3300 +#: src/cryptsetup.c:3302 msgid "Option --veracrypt or --disable-veracrypt is supported only for TCRYPT device type." msgstr "Opțiunea „--veracrypt” sau „--disable-veracrypt” este acceptată numai pentru tipul de dispozitiv TCRYPT." -#: src/cryptsetup.c:3303 +#: src/cryptsetup.c:3305 msgid "Option --veracrypt-pim is supported only for VeraCrypt compatible devices." msgstr "Opțiunea „--veracrypt-pim” este acceptată numai pentru dispozitivele compatibile cu VeraCrypt." -#: src/cryptsetup.c:3307 +#: src/cryptsetup.c:3309 msgid "Option --veracrypt-query-pim is supported only for VeraCrypt compatible devices." msgstr "Opțiunea „--veracrypt-query-pim” este acceptată numai pentru dispozitivele compatibile cu VeraCrypt." -#: src/cryptsetup.c:3309 +#: src/cryptsetup.c:3311 msgid "The options --veracrypt-pim and --veracrypt-query-pim are mutually exclusive." msgstr "Opțiunile „--veracrypt-pim” și „--veracrypt-query-pim” se exclud reciproc." -#: src/cryptsetup.c:3318 +#: src/cryptsetup.c:3320 msgid "Option --persistent is not allowed with --test-passphrase." msgstr "Opțiunea „--persistent” nu este permisă cu opțiunea „--test-passphrase”." -#: src/cryptsetup.c:3321 +#: src/cryptsetup.c:3323 msgid "Options --refresh and --test-passphrase are mutually exclusive." msgstr "Opțiunile „--refresh” și „--test-passphrase” se exclud reciproc." -#: src/cryptsetup.c:3324 +#: src/cryptsetup.c:3326 msgid "Option --shared is allowed only for open of plain device." msgstr "Opțiunea „--shared” este permisă numai pentru deschiderea unui dispozitiv simplu." -#: src/cryptsetup.c:3327 +#: src/cryptsetup.c:3329 msgid "Option --skip is supported only for open of plain and loopaes devices." msgstr "Opțiunea „--skip” este acceptată numai pentru deschiderea dispozitivelor simple și a dispozitivelor loopaes." -#: src/cryptsetup.c:3330 +#: src/cryptsetup.c:3332 msgid "Option --offset with open action is only supported for plain and loopaes devices." msgstr "Opțiunea „--offset” cu acțiune de deschidere este acceptată numai pentru dispozitivele simple și dispozitivele loopaes." -#: src/cryptsetup.c:3333 +#: src/cryptsetup.c:3335 msgid "Option --tcrypt-hidden cannot be combined with --allow-discards." msgstr "Opțiunea „--tcrypt-hidden” nu poate fi combinată cu opțiunea „--allow-discards”." -#: src/cryptsetup.c:3337 +#: src/cryptsetup.c:3339 msgid "Sector size option with open action is supported only for plain devices." msgstr "Opțiunea de dimensiune a sectorului cu acțiune de deschidere este acceptată numai pentru dispozitivele simple." -#: src/cryptsetup.c:3341 +#: src/cryptsetup.c:3343 msgid "Large IV sectors option is supported only for opening plain type device with sector size larger than 512 bytes." msgstr "Opțiunea sectoare IV (vector de inițializare) mari este acceptată numai pentru deschiderea dispozitivelor de tip simplu, cu dimensiunea sectorului mai mare de 512 de octeți." -#: src/cryptsetup.c:3346 +#: src/cryptsetup.c:3348 msgid "Option --test-passphrase is allowed only for open of LUKS, TCRYPT, BITLK and FVAULT2 devices." msgstr "Opțiunea „--test-passphrase” este permisă numai pentru deschiderea dispozitivelor LUKS, TCRYPT, BITLK și FVAULT2." -#: src/cryptsetup.c:3349 src/cryptsetup.c:3379 +#: src/cryptsetup.c:3351 src/cryptsetup.c:3381 msgid "Options --device-size and --size cannot be combined." msgstr "Opțiunile „--device-size” și „--size” nu pot fi combinate." -#: src/cryptsetup.c:3352 +#: src/cryptsetup.c:3354 msgid "Option --unbound is allowed only for open of luks device." msgstr "Opțiunea „--unbound” este permisă numai pentru deschiderea dispozitivelor luks." -#: src/cryptsetup.c:3355 +#: src/cryptsetup.c:3357 msgid "Option --unbound cannot be used without --test-passphrase." msgstr "Opțiunea „--unbound” nu poate fi utilizată fără opțiunea „--test-passphrase”." -#: src/cryptsetup.c:3359 +#: src/cryptsetup.c:3361 msgid "Option --volume-key-keyring cannot be combined with --hash or --volume-key-file." msgstr "Opțiunea „--volume-key-keyring” nu poate fi combinată cu opțiunea „--hash” sau cu opțiunea „--volume-key-file”." -#: src/cryptsetup.c:3362 +#: src/cryptsetup.c:3364 msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "Ambele opțiuni „--volume-key-file” trebuie să fie asociate cu opțiunile „--key-size” respective." -#: src/cryptsetup.c:3371 src/veritysetup.c:673 src/integritysetup.c:787 +#: src/cryptsetup.c:3373 src/veritysetup.c:673 src/integritysetup.c:793 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "Opțiunile „--cancel-deferred” și „--deferred” nu pot fi utilizate în același timp." -#: src/cryptsetup.c:3387 +#: src/cryptsetup.c:3389 msgid "Option --active-name can be set only for LUKS2 device." msgstr "Opțiunea „--active-name” poate fi utilizată numai pentru dispozitivele LUKS2." -#: src/cryptsetup.c:3390 +#: src/cryptsetup.c:3392 msgid "Options --active-name and --force-offline-reencrypt cannot be combined." msgstr "Opțiunile „--active-name” și „--force-offline-reencrypt” nu pot fi combinate." -#: src/cryptsetup.c:3393 +#: src/cryptsetup.c:3395 msgid "Options --new-volume-key-file and --keep-key cannot be combined." msgstr "Opțiunile „--new-volume-key-file” și „--keep-key” nu pot fi combinate." -#: src/cryptsetup.c:3396 +#: src/cryptsetup.c:3398 msgid "Options --new-volume-key-keyring and --keep-key cannot be combined." msgstr "Opțiunile „--new-volume-key-keyring” și „--keep-key” nu pot fi combinate." -#: src/cryptsetup.c:3404 src/cryptsetup.c:3434 +#: src/cryptsetup.c:3406 src/cryptsetup.c:3436 msgid "Keyslot specification is required." msgstr "Este necesară specificarea slotului de cheie." -#: src/cryptsetup.c:3412 +#: src/cryptsetup.c:3414 msgid "Options --align-payload and --offset cannot be combined." msgstr "Opțiunile „--align-payload” și „--offset” nu pot fi combinate." -#: src/cryptsetup.c:3415 +#: src/cryptsetup.c:3417 msgid "Option --integrity-no-wipe can be used only for format action with integrity extension." msgstr "Opțiunea „--integrity-no-wipe” poate fi utilizată numai pentru acțiuni de formatare cu extensie de integritate." -#: src/cryptsetup.c:3418 +#: src/cryptsetup.c:3420 msgid "Only one of --use-[u]random options is allowed." msgstr "Numai una dintre opțiunile „--use-[u]random” este permisă." -#: src/cryptsetup.c:3426 +#: src/cryptsetup.c:3428 msgid "Key size is required with --unbound option." msgstr "Dimensiunea cheii este necesară cu opțiunea „--unbound”." -#: src/cryptsetup.c:3446 +#: src/cryptsetup.c:3448 msgid "Invalid token action." msgstr "Operație cu jeton(token) nevalidă." -#: src/cryptsetup.c:3449 +#: src/cryptsetup.c:3451 msgid "--key-description parameter is mandatory for token add action." msgstr "Parametrul „--key-description” este obligatoriu pentru acțiunea de adăugare a jetonului." -#: src/cryptsetup.c:3453 src/cryptsetup.c:3466 +#: src/cryptsetup.c:3455 src/cryptsetup.c:3468 msgid "Action requires specific token. Use --token-id parameter." msgstr "Acțiunea necesită un jeton(token)l specific. Utilizați parametrul „--token-id”." -#: src/cryptsetup.c:3457 +#: src/cryptsetup.c:3459 msgid "Option --unbound is valid only with token add action." msgstr "Opțiunea „--unbound” este validă numai cu acțiunea de adăugare a jetonului." -#: src/cryptsetup.c:3459 +#: src/cryptsetup.c:3461 msgid "Options --key-slot and --unbound cannot be combined." msgstr "Opțiunile „--key-slot” și „--unbound” nu pot fi combinate." -#: src/cryptsetup.c:3464 +#: src/cryptsetup.c:3466 msgid "Action requires specific keyslot. Use --key-slot parameter." msgstr "Acțiunea necesită un slot de cheie specific. Utilizați parametrul „--key-slot”." -#: src/cryptsetup.c:3480 +#: src/cryptsetup.c:3482 msgid " [--type ] []" msgstr " [--type ] []" -#: src/cryptsetup.c:3480 src/veritysetup.c:487 src/integritysetup.c:554 +#: src/cryptsetup.c:3482 src/veritysetup.c:487 src/integritysetup.c:560 msgid "open device as " msgstr "deschide dispozitivul ca " -#: src/cryptsetup.c:3481 src/cryptsetup.c:3482 src/cryptsetup.c:3483 -#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:555 -#: src/integritysetup.c:556 src/integritysetup.c:558 +#: src/cryptsetup.c:3483 src/cryptsetup.c:3484 src/cryptsetup.c:3485 +#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:561 +#: src/integritysetup.c:562 src/integritysetup.c:564 msgid "" msgstr "" -#: src/cryptsetup.c:3481 src/veritysetup.c:488 src/integritysetup.c:555 +#: src/cryptsetup.c:3483 src/veritysetup.c:488 src/integritysetup.c:561 msgid "close device (remove mapping)" msgstr "închide dispozitivul (elimină asocierea)" -#: src/cryptsetup.c:3482 src/integritysetup.c:558 +#: src/cryptsetup.c:3484 src/integritysetup.c:564 msgid "resize active device" msgstr "redimensionează dispozitivul activ" -#: src/cryptsetup.c:3483 +#: src/cryptsetup.c:3485 msgid "show device status" msgstr "afișează starea dispozitivului" -#: src/cryptsetup.c:3484 +#: src/cryptsetup.c:3486 msgid "[--cipher ]" msgstr "[--cipher ]" -#: src/cryptsetup.c:3484 +#: src/cryptsetup.c:3486 msgid "benchmark cipher" msgstr "evaluează performanța cifrului" -#: src/cryptsetup.c:3485 src/cryptsetup.c:3486 src/cryptsetup.c:3487 -#: src/cryptsetup.c:3488 src/cryptsetup.c:3489 src/cryptsetup.c:3496 -#: src/cryptsetup.c:3497 src/cryptsetup.c:3498 src/cryptsetup.c:3499 -#: src/cryptsetup.c:3500 src/cryptsetup.c:3501 src/cryptsetup.c:3502 -#: src/cryptsetup.c:3503 src/cryptsetup.c:3504 src/cryptsetup.c:3505 +#: src/cryptsetup.c:3487 src/cryptsetup.c:3488 src/cryptsetup.c:3489 +#: src/cryptsetup.c:3490 src/cryptsetup.c:3491 src/cryptsetup.c:3498 +#: src/cryptsetup.c:3499 src/cryptsetup.c:3500 src/cryptsetup.c:3501 +#: src/cryptsetup.c:3502 src/cryptsetup.c:3503 src/cryptsetup.c:3504 +#: src/cryptsetup.c:3505 src/cryptsetup.c:3506 src/cryptsetup.c:3507 msgid "" msgstr "" -#: src/cryptsetup.c:3485 +#: src/cryptsetup.c:3487 msgid "try to repair on-disk metadata" msgstr "încearcă să repare metadatele de pe disc" -#: src/cryptsetup.c:3486 +#: src/cryptsetup.c:3488 msgid "reencrypt LUKS2 device" msgstr "recriptează dispozitivul LUKS2" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3489 msgid "erase all keyslots (remove encryption key)" msgstr "șterge toate sloturile de chei (elimină cheia de criptare)" -#: src/cryptsetup.c:3488 +#: src/cryptsetup.c:3490 msgid "convert LUKS from/to LUKS2 format" msgstr "convertește LUKS din/în formatul LUKS2" -#: src/cryptsetup.c:3489 +#: src/cryptsetup.c:3491 msgid "set permanent configuration options for LUKS2" msgstr "definește opțiunile permanente de configurare pentru LUKS2" -#: src/cryptsetup.c:3490 src/cryptsetup.c:3491 +#: src/cryptsetup.c:3492 src/cryptsetup.c:3493 msgid " []" msgstr " []" -#: src/cryptsetup.c:3490 +#: src/cryptsetup.c:3492 msgid "formats a LUKS device" msgstr "formatează un dispozitiv LUKS" -#: src/cryptsetup.c:3491 +#: src/cryptsetup.c:3493 msgid "add key to LUKS device" msgstr "adaugă o cheie la dispozitivul LUKS" -#: src/cryptsetup.c:3492 src/cryptsetup.c:3493 src/cryptsetup.c:3494 +#: src/cryptsetup.c:3494 src/cryptsetup.c:3495 src/cryptsetup.c:3496 msgid " []" msgstr " []" -#: src/cryptsetup.c:3492 +#: src/cryptsetup.c:3494 msgid "removes supplied key or key file from LUKS device" msgstr "elimină cheia sau fișierul cheie furnizat de pe dispozitivul LUKS" -#: src/cryptsetup.c:3493 +#: src/cryptsetup.c:3495 msgid "changes supplied key or key file of LUKS device" msgstr "modifică cheia furnizată sau fișierul cheie al dispozitivului LUKS" -#: src/cryptsetup.c:3494 +#: src/cryptsetup.c:3496 msgid "converts a key to new pbkdf parameters" msgstr "convertește o cheie în noii parametri pbkdf" -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3497 msgid " " msgstr " " -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3497 msgid "wipes key with number from LUKS device" msgstr "șterge cheia cu numărul de pe dispozitivul LUKS" -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3498 msgid "print UUID of LUKS device" msgstr "afișează UUID-ul dispozitivului LUKS" -#: src/cryptsetup.c:3497 +#: src/cryptsetup.c:3499 msgid "tests for LUKS partition header" msgstr "testează pentru antetul partiției LUKS" -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3500 msgid "dump LUKS partition information" msgstr "afișează informațiile despre partiția LUKS" -#: src/cryptsetup.c:3499 +#: src/cryptsetup.c:3501 msgid "dump TCRYPT device information" msgstr "afișează informațiile despre dispozitivul TCRYPT" -#: src/cryptsetup.c:3500 +#: src/cryptsetup.c:3502 msgid "dump BITLK device information" msgstr "afișează informațiile despre dispozitivul BITLK" -#: src/cryptsetup.c:3501 +#: src/cryptsetup.c:3503 msgid "dump FVAULT2 device information" msgstr "afișează informațiile despre dispozitivul FVAULT2" -#: src/cryptsetup.c:3502 +#: src/cryptsetup.c:3504 msgid "Suspend LUKS device and wipe key (all IOs are frozen)" msgstr "Suspendă dispozitivul LUKS și șterge cheia (toate In/Ieșirile sunt înghețate)" -#: src/cryptsetup.c:3503 +#: src/cryptsetup.c:3505 msgid "Resume suspended LUKS device" msgstr "Repune în funcțiune dispozitivul LUKS suspendat" -#: src/cryptsetup.c:3504 +#: src/cryptsetup.c:3506 msgid "Backup LUKS device header and keyslots" msgstr "Face copie de rezervă pentru antetul dispozitivului LUKS și pentru sloturile de chei" -#: src/cryptsetup.c:3505 +#: src/cryptsetup.c:3507 msgid "Restore LUKS device header and keyslots" msgstr "Restaurează antetul dispozitivului LUKS și sloturile de chei" -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3508 msgid " " msgstr " " -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3508 msgid "Manipulate LUKS2 tokens" msgstr "Manipulează jetoanele LUKS2" -#: src/cryptsetup.c:3525 src/veritysetup.c:505 src/integritysetup.c:573 +#: src/cryptsetup.c:3527 src/veritysetup.c:505 src/integritysetup.c:579 msgid "" "\n" " is one of:\n" @@ -2972,7 +2973,7 @@ msgstr "" # nume, sau alias pentru primele. # A se vedea ieșirea comenzii: # «cryptsetup -?|--help» -#: src/cryptsetup.c:3531 +#: src/cryptsetup.c:3533 msgid "" "\n" "You can also use old syntax aliases:\n" @@ -2984,7 +2985,7 @@ msgstr "" "\topen: create (plainOpen), luksOpen, loopaesOpen, tcryptOpen, bitlkOpen, fvault2Open\n" "\tclose: remove (plainClose), luksClose, loopaesClose, tcryptClose, bitlkClose, fvault2Close\n" -#: src/cryptsetup.c:3535 +#: src/cryptsetup.c:3537 #, c-format msgid "" "\n" @@ -2999,7 +3000,7 @@ msgstr "" " este numărul slotului de cheie LUKS de modificat\n" " fișier cheie opțional pentru noua cheie pentru acțiunea luksAddKey\n" -#: src/cryptsetup.c:3542 +#: src/cryptsetup.c:3544 #, c-format msgid "" "\n" @@ -3008,7 +3009,7 @@ msgstr "" "\n" "Formatul implicit de metadate compilate este %s (pentru acțiunea luksFormat).\n" -#: src/cryptsetup.c:3547 +#: src/cryptsetup.c:3549 msgid "" "\n" "LUKS2 external token plugin support is enabled.\n" @@ -3016,12 +3017,12 @@ msgstr "" "\n" "Suportul pentru modulul de jeton(token) extern LUKS2 este activat.\n" -#: src/cryptsetup.c:3548 +#: src/cryptsetup.c:3550 #, c-format msgid "LUKS2 external token plugin path: %s.\n" msgstr "Ruta modulului pentru jetonul(token) extern LUKS2: %s.\n" -#: src/cryptsetup.c:3550 +#: src/cryptsetup.c:3552 msgid "" "\n" "LUKS2 external token plugin support is disabled.\n" @@ -3029,7 +3030,7 @@ msgstr "" "\n" "Suportul pentru modulul de jeton(token) extern LUKS2 este dezactivat.\n" -#: src/cryptsetup.c:3554 +#: src/cryptsetup.c:3556 #, c-format msgid "" "\n" @@ -3046,7 +3047,7 @@ msgstr "" "PBKDF implicit pentru LUKS2: %s\n" "\tTimp de iterare: %d, Memorie necesară: %dko, Fire de execuție paralele: %d\n" -#: src/cryptsetup.c:3565 +#: src/cryptsetup.c:3567 #, c-format msgid "" "\n" @@ -3061,122 +3062,126 @@ msgstr "" "\tsimplu: %s, Cheie: %d biți, Suma de control a parolei: %s\n" "\tLUKS: %s, Cheie: %d biți, Suma de control a antetului LUKS: %s, RNG: %s\n" -#: src/cryptsetup.c:3574 +#: src/cryptsetup.c:3576 msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: Dimensiunea implicită a cheii cu modul XTS (două chei interne) va fi dublată.\n" -#: src/cryptsetup.c:3592 src/veritysetup.c:647 src/integritysetup.c:733 +#: src/cryptsetup.c:3594 src/veritysetup.c:647 src/integritysetup.c:739 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: necesită %s ca argumente" -#: src/cryptsetup.c:3632 src/utils_reencrypt_luks1.c:1143 +#: src/cryptsetup.c:3634 src/utils_reencrypt_luks1.c:1143 msgid "Key slot is invalid." msgstr "Slotul de cheie nu este valid." -#: src/cryptsetup.c:3660 +#: src/cryptsetup.c:3662 msgid "Device size must be multiple of 512 bytes sector." msgstr "Dimensiunea dispozitivului trebuie să fie multiplu al sectorului de 512 octeți." -#: src/cryptsetup.c:3665 +#: src/cryptsetup.c:3667 msgid "Invalid max reencryption hotzone size specification." msgstr "Specificația pentru dimensiunea zonei fierbinți(active) pentru recriptare maximă nu este validă." -#: src/cryptsetup.c:3679 src/cryptsetup.c:3696 src/cryptsetup.c:3708 +#: src/cryptsetup.c:3681 src/cryptsetup.c:3698 src/cryptsetup.c:3710 msgid "Key size must be a multiple of 8 bits" msgstr "Dimensiunea cheii trebuie să fie multiplu de 8 biți" -#: src/cryptsetup.c:3686 +#: src/cryptsetup.c:3688 msgid "At most 2 key size specifications can be supplied." msgstr "Pot fi furnizate cel mult 2 specificații privind dimensiunea cheii." -#: src/cryptsetup.c:3715 src/cryptsetup.c:3726 +#: src/cryptsetup.c:3717 src/cryptsetup.c:3728 #, c-format msgid "At most %d volume key specifications can be supplied." msgstr "Pot fi furnizate cel mult %d specificații ale cheilor de volum." -#: src/cryptsetup.c:3738 +#: src/cryptsetup.c:3740 #, c-format msgid "At most %d keyring link specifications can be supplied." msgstr "Pot fi furnizate cel mult %d specificații de legătură a inelului de chei." -#: src/cryptsetup.c:3747 +#: src/cryptsetup.c:3749 msgid "Maximum device reduce size is 1 GiB." msgstr "Dimensiunea maximă de reducere a dispozitivului este de 1 GiB." -#: src/cryptsetup.c:3750 +#: src/cryptsetup.c:3752 msgid "Reduce size must be multiple of 512 bytes sector." msgstr "Dimensiunea redusă trebuie să fie multiplu al sectorului de 512 octeți." -#: src/cryptsetup.c:3767 +#: src/cryptsetup.c:3769 msgid "Option --priority can be only ignore/normal/prefer." msgstr "Argumentul opțiuni „--priority” poate fi doar «ignore/normal/prefer»." -#: src/cryptsetup.c:3786 src/veritysetup.c:568 src/integritysetup.c:653 +#: src/cryptsetup.c:3774 +msgid "Invalid maximal tries specification." +msgstr "Specificare nevalidă pentru numărul maxim de încercări." + +#: src/cryptsetup.c:3793 src/veritysetup.c:568 src/integritysetup.c:659 msgid "Show this help message" msgstr "Afișează acest mesaj de ajutor" -#: src/cryptsetup.c:3787 src/veritysetup.c:569 src/integritysetup.c:654 +#: src/cryptsetup.c:3794 src/veritysetup.c:569 src/integritysetup.c:660 msgid "Display brief usage" msgstr "Afișează modul de utilizare pe scurt" -#: src/cryptsetup.c:3788 src/veritysetup.c:570 src/integritysetup.c:655 +#: src/cryptsetup.c:3795 src/veritysetup.c:570 src/integritysetup.c:661 msgid "Print package version" msgstr "Afișează versiunea pachetului" -#: src/cryptsetup.c:3799 src/veritysetup.c:581 src/integritysetup.c:666 +#: src/cryptsetup.c:3806 src/veritysetup.c:581 src/integritysetup.c:672 msgid "Help options:" msgstr "Opțiuni de ajutor:" -#: src/cryptsetup.c:3822 src/veritysetup.c:602 src/integritysetup.c:686 +#: src/cryptsetup.c:3829 src/veritysetup.c:602 src/integritysetup.c:692 msgid "[OPTION...] " msgstr "[OPȚIUNE...] " -#: src/cryptsetup.c:3831 src/veritysetup.c:611 src/integritysetup.c:697 +#: src/cryptsetup.c:3838 src/veritysetup.c:611 src/integritysetup.c:703 msgid "Argument missing." msgstr "Argumentul lipsește." -#: src/cryptsetup.c:3910 src/veritysetup.c:642 src/integritysetup.c:728 +#: src/cryptsetup.c:3917 src/veritysetup.c:642 src/integritysetup.c:734 msgid "Unknown action." msgstr "Acțiune necunoscută." -#: src/cryptsetup.c:3928 +#: src/cryptsetup.c:3935 msgid "Option --key-file takes precedence over specified key file argument." msgstr "Opțiunea „--key-file” are prioritate față de argumentul specificat pentru fișierul cheie." -#: src/cryptsetup.c:3934 +#: src/cryptsetup.c:3941 msgid "Only one --key-file argument is allowed." msgstr "Numai un argument „--key-file” este permis." -#: src/cryptsetup.c:3939 +#: src/cryptsetup.c:3946 msgid "Password-based key derivation function (PBKDF) can be only pbkdf2 or argon2i/argon2id." msgstr "Funcția de derivare a unei chei bazată pe parolă (PBKDF=Password-Based Key Derivation Function) poate fi doar pbkdf2 sau argon2i/argon2id." -#: src/cryptsetup.c:3944 +#: src/cryptsetup.c:3951 msgid "PBKDF forced iterations cannot be combined with iteration time option." msgstr "Iterațiile forțate PBKDF nu pot fi combinate cu opțiunea de timp de iterație." -#: src/cryptsetup.c:3949 +#: src/cryptsetup.c:3956 msgid "Cannot link volume key to a keyring when keyring is disabled." msgstr "Nu se poate lega cheia de volum la un inel de chei când este dezactivat." -#: src/cryptsetup.c:3954 +#: src/cryptsetup.c:3961 msgid "Cannot use keyring key description when keyring is disabled." msgstr "Nu se poate utiliza descrierea cheii pentru inelul de chei atunci când inelul de chei este dezactivat." -#: src/cryptsetup.c:3959 +#: src/cryptsetup.c:3966 msgid "Inline integrity must be used together with --integrity option." msgstr "Integritatea în linie trebuie utilizată împreună cu opțiunea „--integrity”." -#: src/cryptsetup.c:3970 +#: src/cryptsetup.c:3977 msgid "Options --keyslot-cipher and --keyslot-key-size must be used together." msgstr "Opțiunile „--keyslot-cipher” și „--keyslot-key-size” trebuie să fie folosite împreună." -#: src/cryptsetup.c:3978 +#: src/cryptsetup.c:3985 msgid "No action taken. Invoked with --test-args option.\n" msgstr "Nu s-a executat nicio acțiune. Programul a fost invocat cu opțiunea „--test-args”.\n" -#: src/cryptsetup.c:3991 +#: src/cryptsetup.c:3998 msgid "Cannot disable metadata locking." msgstr "Nu se poate dezactiva blocarea metadatelor." @@ -3241,7 +3246,7 @@ msgstr "Comanda necesită ca argument opțiunea " msgstr " " -#: src/veritysetup.c:485 src/integritysetup.c:553 +#: src/veritysetup.c:485 src/integritysetup.c:559 msgid "format device" msgstr "formatează dispozitivul" @@ -3257,7 +3262,7 @@ msgstr "verifică dispozitivul" msgid " []" msgstr " []" -#: src/veritysetup.c:489 src/integritysetup.c:556 +#: src/veritysetup.c:489 src/integritysetup.c:562 msgid "show active device status" msgstr "afișează starea dispozitivului activ" @@ -3265,7 +3270,7 @@ msgstr "afișează starea dispozitivului activ" msgid "" msgstr "" -#: src/veritysetup.c:490 src/integritysetup.c:557 +#: src/veritysetup.c:490 src/integritysetup.c:563 msgid "show on-disk information" msgstr "afișează informațiile de pe disc" @@ -3308,7 +3313,7 @@ msgstr "Opțiunile „--panic-on-corruption” și „--restart-on-corruption” msgid "Option --error-as-corruption must be used with --panic-on-corruption or --restart-on-corruption." msgstr "Opțiunea „--error-as-corruption” trebuie să fie utilizată cu „--panic-on-corruption” sau „--restart-on-corruption”." -#: src/integritysetup.c:168 +#: src/integritysetup.c:169 #, c-format msgid "" "This will overwrite data on %s and %s irrevocably.\n" @@ -3317,33 +3322,33 @@ msgstr "" "Acest lucru va suprascrie datele de pe %s și %s în mod irevocabil.\n" "Pentru a păstra datele dispozitivului de date, utilizați opțiunea „--no-wipe” (și apoi activați-l cu „--integrity-recalculate”)." -#: src/integritysetup.c:213 +#: src/integritysetup.c:215 #, c-format msgid "Formatted with tag size %u%s, internal integrity %s.\n" msgstr "Formatat cu dimensiunea etichetei %u%s, integritate internă %s.\n" -#: src/integritysetup.c:214 +#: src/integritysetup.c:216 msgid " (inline hw tags)" msgstr " (etichete hw în linie „inline”)" -#: src/integritysetup.c:303 +#: src/integritysetup.c:305 msgid "Setting recalculate flag is not supported, you may consider using --wipe instead." msgstr "Utilizarea fanionului pentru recalculare(...-recalculate) nu este acceptată, luați în considerare utilizarea opțiunii „--wipe” în schimb." -#: src/integritysetup.c:380 src/integritysetup.c:540 +#: src/integritysetup.c:382 src/integritysetup.c:546 #, c-format msgid "Device %s is not a valid INTEGRITY device." msgstr "Dispozitivul %s nu este un dispozitiv INTEGRITY valid." -#: src/integritysetup.c:553 src/integritysetup.c:557 +#: src/integritysetup.c:559 src/integritysetup.c:563 msgid "" msgstr "" -#: src/integritysetup.c:554 +#: src/integritysetup.c:560 msgid " " msgstr " " -#: src/integritysetup.c:577 +#: src/integritysetup.c:583 #, c-format msgid "" "\n" @@ -3354,7 +3359,7 @@ msgstr "" " este dispozitivul de creat sub %s\n" " este dispozitivul care conține date cu etichete de integritate\n" -#: src/integritysetup.c:582 +#: src/integritysetup.c:588 #, c-format msgid "" "\n" @@ -3367,48 +3372,48 @@ msgstr "" "\tAlgoritmul sumei de control: %s\n" "\tDimensiunea maximă a fișierului cheie: %dko\n" -#: src/integritysetup.c:639 +#: src/integritysetup.c:645 #, c-format msgid "Invalid --%s size. Maximum is %u bytes." msgstr "Dimensiune nevalidă --%s. Maximul este de %u octeți." -#: src/integritysetup.c:742 +#: src/integritysetup.c:748 msgid "Both key file and key size options must be specified." msgstr "Trebuie specificată atât opțiunea pentru fișierul cheie, cât și opțiunea pentru dimensiunea cheii." -#: src/integritysetup.c:746 +#: src/integritysetup.c:752 msgid "Both journal integrity key file and key size options must be specified." msgstr "Trebuie specificată atât opțiunea pentru fișierul cheii de integritate a jurnalului, cât și opțiunea pentru dimensiunea cheii." -#: src/integritysetup.c:749 +#: src/integritysetup.c:755 msgid "Journal integrity algorithm must be specified if journal integrity key is used." msgstr "Algoritmul de integritate a jurnalului trebuie să fie specificat dacă este utilizată cheia de integritate a jurnalului." -#: src/integritysetup.c:753 +#: src/integritysetup.c:759 msgid "Both journal encryption key file and key size options must be specified." msgstr "Trebuie specificată atât opțiunea pentru fișierul cheii de criptare a jurnalului, cât și opțiunea pentru dimensiunea cheii." -#: src/integritysetup.c:756 +#: src/integritysetup.c:762 msgid "Journal encryption algorithm must be specified if journal encryption key is used." msgstr "Algoritmul de criptare a jurnalului trebuie să fie specificat dacă este utilizată cheia de criptare a jurnalului." -#: src/integritysetup.c:760 +#: src/integritysetup.c:766 msgid "Recovery and bitmap mode options are mutually exclusive." msgstr "Opțiunile de recuperare și modul de hartă de biți(bitmap) se exclud reciproc." -#: src/integritysetup.c:767 +#: src/integritysetup.c:773 msgid "Journal options cannot be used in bitmap mode." msgstr "Opțiunile jurnalului nu pot fi utilizate în modul de hartă de biți(bitmap)." -#: src/integritysetup.c:772 +#: src/integritysetup.c:778 msgid "Bitmap options can be used only in bitmap mode." msgstr "Opțiunile de hartă de biți(bitmap) pot fi utilizate numai în modul de hartă de biți(bitmap)." -#: src/integritysetup.c:778 +#: src/integritysetup.c:784 msgid "Inline mode cannot be combined with journal or bitmap options." msgstr "Modul în linie nu poate fi combinat cu opțiunile de jurnal sau de hartă de biți." -#: src/integritysetup.c:782 +#: src/integritysetup.c:788 msgid "Inline mode cannot be combined with separate data device." msgstr "Modul în linie nu poate fi combinat cu un dispozitiv de date separat." @@ -3771,32 +3776,32 @@ msgstr "Dispozitivul nu este în decriptare LUKS2. Opțiune în conflict „--de msgid "Device is in reencryption using datashift resilience. Requested --resilience option cannot be applied." msgstr "Dispozitivul este în recriptare folosind adaptabilitatea la transferul de date. Opțiunea „--resilience” solicitată nu poate fi aplicată." -#: src/utils_reencrypt.c:282 src/utils_reencrypt.c:1924 +#: src/utils_reencrypt.c:283 src/utils_reencrypt.c:1927 msgid "Cannot determine volume key size for LUKS without keyslots, please use --new-key-size option." msgstr "Nu se poate determina dimensiunea cheii de volum pentru LUKS fără sloturi de chei; folosiți opțiunea „--new-key-size” pentru a furniza aceste date." -#: src/utils_reencrypt.c:436 +#: src/utils_reencrypt.c:438 msgid "Device requires reencryption recovery. Run repair first." msgstr "Dispozitivul necesită recuperarea recriptării. Rulați mai întâi operația de reparare." -#: src/utils_reencrypt.c:450 +#: src/utils_reencrypt.c:452 #, c-format msgid "Device %s is already in LUKS2 reencryption. Do you wish to resume previously initialised operation?" msgstr "Dispozitivul %s este deja în recriptare LUKS2. Doriți să reluați operația inițializată anterior?" -#: src/utils_reencrypt.c:561 +#: src/utils_reencrypt.c:563 msgid "Legacy LUKS2 reencryption is no longer supported." msgstr "Recriptarea veche LUKS2 nu mai este acceptată." -#: src/utils_reencrypt.c:566 +#: src/utils_reencrypt.c:568 msgid "Can not reencrypt LUKS2 device configured to use OPAL." msgstr "Nu se poate recripta dispozitivul LUKS2 configurat să utilizeze OPAL." -#: src/utils_reencrypt.c:572 +#: src/utils_reencrypt.c:574 msgid "Reencryption of device with integrity profile is not supported." msgstr "Recriptarea dispozitivului cu profil de integritate nu este acceptată." -#: src/utils_reencrypt.c:609 +#: src/utils_reencrypt.c:611 #, c-format msgid "" "Requested --sector-size % is incompatible with %s superblock\n" @@ -3805,110 +3810,110 @@ msgstr "" "Solicitarea făcută cu opțiunea „--sector-size %” este incompatibilă cu superblocul %s\n" "(dimensiunea blocului: % octeți) detectat pe dispozitivul %s." -#: src/utils_reencrypt.c:678 src/utils_reencrypt.c:2204 +#: src/utils_reencrypt.c:680 src/utils_reencrypt.c:2207 msgid "Encryption without detached header (--header) is not possible without data device size reduction (--reduce-device-size)." msgstr "Criptarea fără antet detașat (--header) nu este posibilă fără reducerea dimensiunii dispozitivului de date (--reduce-device-size)." -#: src/utils_reencrypt.c:687 +#: src/utils_reencrypt.c:689 msgid "Requested data offset must be less than or equal to half of --reduce-device-size parameter." msgstr "Decalajul de date solicitat trebuie să fie mai mic sau egal cu jumătate din parametrul opțiunii „--reduce-device-size”." -#: src/utils_reencrypt.c:697 +#: src/utils_reencrypt.c:699 #, c-format msgid "Adjusting --reduce-device-size value to twice the --offset % (sectors).\n" msgstr "Ajustarea valorii „--reduce-device-size” la de două ori față de „--offset % (sectoare)”.\n" -#: src/utils_reencrypt.c:727 +#: src/utils_reencrypt.c:729 #, c-format msgid "Temporary header file %s already exists. Aborting." msgstr "Fișierul antet temporar %s există deja. Se abandonează." -#: src/utils_reencrypt.c:729 src/utils_reencrypt.c:736 +#: src/utils_reencrypt.c:731 src/utils_reencrypt.c:738 #, c-format msgid "Cannot create temporary header file %s." msgstr "Nu se poate crea fișierul antet temporar %s." -#: src/utils_reencrypt.c:761 +#: src/utils_reencrypt.c:763 msgid "LUKS2 metadata size is larger than data shift value." msgstr "Dimensiunea metadatelor LUKS2 este mai mare decât valoarea decalajului de date." -#: src/utils_reencrypt.c:800 +#: src/utils_reencrypt.c:802 #, c-format msgid "Failed to place new header at head of device %s." msgstr "Nu s-a putut plasa antetul nou la începutul dispozitivului %s." -#: src/utils_reencrypt.c:813 +#: src/utils_reencrypt.c:815 #, c-format msgid "%s/%s is now active and ready for online encryption.\n" msgstr "%s/%s este acum activ și pregătit pentru criptarea online.\n" -#: src/utils_reencrypt.c:850 +#: src/utils_reencrypt.c:852 #, c-format msgid "Active device %s is not LUKS2." msgstr "Dispozitivul activ %s nu este LUKS2." -#: src/utils_reencrypt.c:878 +#: src/utils_reencrypt.c:880 msgid "Restoring original LUKS2 header." msgstr "Se restabilește antetul LUKS2 original." -#: src/utils_reencrypt.c:886 +#: src/utils_reencrypt.c:888 msgid "Original LUKS2 header restore failed." msgstr "Restaurarea antetului LUKS2 original a eșuat." -#: src/utils_reencrypt.c:918 +#: src/utils_reencrypt.c:920 #, c-format msgid "Header file %s does not exist. Do you want to initialize LUKS2 decryption of device %s and export LUKS2 header to file %s?" msgstr "Fișierul antet %s nu există. Doriți să inițializați decriptarea LUKS2 a dispozitivului %s și să exportați antetul LUKS2 în fișierul %s?" -#: src/utils_reencrypt.c:961 +#: src/utils_reencrypt.c:963 msgid "Failed to add read/write permissions to exported header file." msgstr "Nu s-au putut adăuga permisiuni de citire/scriere la fișierul antet exportat." -#: src/utils_reencrypt.c:1015 +#: src/utils_reencrypt.c:1017 #, c-format msgid "Reencryption initialization failed. Header backup is available in %s." msgstr "Inițializarea recriptării a eșuat. Copia de rezervă a antetului este disponibilă în %s." -#: src/utils_reencrypt.c:1043 +#: src/utils_reencrypt.c:1045 msgid "LUKS2 decryption is supported with detached header device only (with data offset set to 0)." msgstr "Decriptarea LUKS2 este acceptată numai cu dispozitivul antet detașat (cu decalajul de date fixat la 0)." -#: src/utils_reencrypt.c:1487 +#: src/utils_reencrypt.c:1490 msgid "No token could unlock the device." msgstr "Niciun jeton(token) nu a putut debloca dispozitivul." -#: src/utils_reencrypt.c:1519 src/utils_reencrypt.c:1528 +#: src/utils_reencrypt.c:1522 src/utils_reencrypt.c:1531 msgid "Not enough free keyslots for reencryption." msgstr "Nu sunt suficiente sloturi de chei libere pentru recriptare." -#: src/utils_reencrypt.c:1559 +#: src/utils_reencrypt.c:1562 msgid "Key file or keyring key description can be used only with --key-slot or with exactly one key slot active." msgstr "Fișierul de chei sau descrierea cheii inelului de chei pot fi utilizate numai cu opțiunea „--key-slot” sau cu exact un slot de cheie activ." -#: src/utils_reencrypt.c:1566 src/utils_reencrypt.c:1579 +#: src/utils_reencrypt.c:1569 src/utils_reencrypt.c:1582 #: src/utils_reencrypt_luks1.c:1092 src/utils_reencrypt_luks1.c:1103 #, c-format msgid "Enter passphrase for key slot %d: " msgstr "Introduceți fraza de acces pentru slotul de cheie %d: " -#: src/utils_reencrypt.c:1876 +#: src/utils_reencrypt.c:1879 #, c-format msgid "Switching data encryption cipher to %s.\n" msgstr "Se comută cifrul de criptare a datelor la %s.\n" -#: src/utils_reencrypt.c:1977 src/utils_reencrypt.c:1998 +#: src/utils_reencrypt.c:1980 src/utils_reencrypt.c:2001 msgid "Use --force-no-keyslots to reencrypt device with active keyslots by passing volume keys directly." msgstr "Utilizați „--force-no-keyslots” pentru a re-cripta dispozitivul cu sloturi de chei active prin pasarea directă a cheilor de volum." -#: src/utils_reencrypt.c:1993 +#: src/utils_reencrypt.c:1996 msgid "Option --new-volume-key-file must be paired with --new-key-size" msgstr "Opțiunea „--new-volume-key-file” trebuie să fie combinată cu opțiunea „--new-key-size”" -#: src/utils_reencrypt.c:2035 +#: src/utils_reencrypt.c:2038 msgid "No data segment parameters changed. Reencryption aborted." msgstr "Nu s-au modificat parametrii de segment de date. Recriptarea a fost abandonată." -#: src/utils_reencrypt.c:2072 +#: src/utils_reencrypt.c:2075 msgid "" "Encryption sector size increase on offline device is not supported.\n" "Activate the device first or use --force-offline-reencrypt option (dangerous!)." @@ -3916,7 +3921,7 @@ msgstr "" "Creșterea dimensiunii sectorului de criptare pe dispozitivul offline nu este acceptată.\n" "Activați mai întâi dispozitivul sau utilizați opțiunea „--force-offline-reencrypt” (periculos!)." -#: src/utils_reencrypt.c:2114 src/utils_reencrypt_luks1.c:688 +#: src/utils_reencrypt.c:2117 src/utils_reencrypt_luks1.c:688 #: src/utils_reencrypt_luks1.c:759 msgid "" "\n" @@ -3925,58 +3930,58 @@ msgstr "" "\n" "Recriptarea a fost întreruptă." -#: src/utils_reencrypt.c:2119 +#: src/utils_reencrypt.c:2122 msgid "Resuming LUKS reencryption in forced offline mode.\n" msgstr "Reluarea recriptării LUKS în modul offline forțat.\n" -#: src/utils_reencrypt.c:2142 +#: src/utils_reencrypt.c:2145 #, c-format msgid "Device %s contains broken LUKS metadata. Aborting operation." msgstr "Dispozitivul %s conține metadate LUKS deteriorate. Se abandonează operația." -#: src/utils_reencrypt.c:2158 src/utils_reencrypt.c:2180 +#: src/utils_reencrypt.c:2161 src/utils_reencrypt.c:2183 #, c-format msgid "Device %s is already LUKS device. Aborting operation." msgstr "Dispozitivul %s este deja un dispozitiv LUKS. Se abandonează operația." -#: src/utils_reencrypt.c:2186 +#: src/utils_reencrypt.c:2189 #, c-format msgid "Device %s is already in LUKS reencryption. Aborting operation." msgstr "Dispozitivul %s este deja în recriptare LUKS. Se abandonează operația." -#: src/utils_reencrypt.c:2269 +#: src/utils_reencrypt.c:2272 msgid "LUKS2 decryption requires --header option." msgstr "Decriptarea LUKS2 necesită opțiunea „--header”." -#: src/utils_reencrypt.c:2317 +#: src/utils_reencrypt.c:2320 msgid "Command requires device as argument." msgstr "Comanda necesită un dispozitiv ca argument." -#: src/utils_reencrypt.c:2330 +#: src/utils_reencrypt.c:2333 #, c-format msgid "Conflicting versions. Device %s is LUKS1." msgstr "Versiuni în conflict. Dispozitivul %s este LUKS1." -#: src/utils_reencrypt.c:2336 +#: src/utils_reencrypt.c:2339 #, c-format msgid "Conflicting versions. Device %s is in LUKS1 reencryption." msgstr "Versiuni în conflict. Dispozitivul %s este în recriptare LUKS1." -#: src/utils_reencrypt.c:2342 +#: src/utils_reencrypt.c:2345 #, c-format msgid "Conflicting versions. Device %s is LUKS2." msgstr "Versiuni în conflict. Dispozitivul %s este LUKS2." -#: src/utils_reencrypt.c:2348 +#: src/utils_reencrypt.c:2351 #, c-format msgid "Conflicting versions. Device %s is in LUKS2 reencryption." msgstr "Versiuni în conflict. Dispozitivul %s este în recriptare LUKS2." -#: src/utils_reencrypt.c:2354 +#: src/utils_reencrypt.c:2357 msgid "LUKS2 reencryption already initialized. Aborting operation." msgstr "Recriptarea LUKS2 a fost deja inițializată. Se abandonează operația." -#: src/utils_reencrypt.c:2361 +#: src/utils_reencrypt.c:2364 msgid "Device reencryption not in progress." msgstr "Recriptarea dispozitivului nu este în curs de desfășurare." From 164241d406be197931769b1cb0881b3ddadad1cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mari=C3=A1n=20Haburaj?= Date: Sun, 19 Jul 2026 19:51:04 +0200 Subject: [PATCH 188/244] po: update sk.po (from translationproject.org) --- po/sk.po | 628 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 316 insertions(+), 312 deletions(-) diff --git a/po/sk.po b/po/sk.po index 2ffed35e7..131021fa4 100644 --- a/po/sk.po +++ b/po/sk.po @@ -16,10 +16,10 @@ # msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.7-rc1\n" +"Project-Id-Version: cryptsetup 2.8.7-rc2\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2026-06-29 21:30+0200\n" -"PO-Revision-Date: 2026-06-30 13:17+0200\n" +"POT-Creation-Date: 2026-07-09 10:46+0200\n" +"PO-Revision-Date: 2026-07-13 10:51+0200\n" "Last-Translator: Marián Haburaj \n" "Language-Team: Slovak \n" "Language: sk\n" @@ -210,10 +210,10 @@ msgid "Failed to rollback LUKS2 metadata in memory." msgstr "Nahradenie pôvodných LUKS2 metadát v pamäti zlyhalo." #: lib/setup.c:896 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 -#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1779 -#: src/cryptsetup.c:1963 src/cryptsetup.c:2018 src/cryptsetup.c:2216 -#: src/cryptsetup.c:2361 src/cryptsetup.c:2639 src/cryptsetup.c:2952 -#: src/cryptsetup.c:3020 src/utils_reencrypt.c:2281 +#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 +#: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 +#: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2954 +#: src/cryptsetup.c:3022 src/utils_reencrypt.c:2284 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." @@ -257,7 +257,7 @@ msgid "Detached metadata device is not supported for this crypt type." msgstr "Zariadenie s oddelenými metadátami nie je podporované pre tento typ šifrovania." #: lib/setup.c:1642 lib/setup.c:1890 lib/luks2/luks2_reencrypt.c:3035 -#: src/cryptsetup.c:1491 src/cryptsetup.c:3759 +#: src/cryptsetup.c:1492 src/cryptsetup.c:3761 msgid "Unsupported encryption sector size." msgstr "Nepodporovaná veľkosť šifrovaného sektoru." @@ -579,14 +579,14 @@ msgstr "Zlyhalo odpojenie kľúča zväzku od používateľom zadaného zväzku msgid "Failed to link volume key in user defined keyring." msgstr "Zlyhalo pripojenie kľúča zväzku do používateľom zadaného zväzku kľúčov." -#: lib/setup.c:4556 src/cryptsetup.c:2720 +#: lib/setup.c:4556 src/cryptsetup.c:2722 #, c-format msgid "Volume %s is not suspended." msgstr "Zväzok %s nie je pozastavený." -#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1855 -#: src/cryptsetup.c:2259 src/cryptsetup.c:2277 src/utils_reencrypt.c:305 -#: src/utils_reencrypt.c:1966 +#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1856 +#: src/cryptsetup.c:2260 src/cryptsetup.c:2278 src/utils_reencrypt.c:306 +#: src/utils_reencrypt.c:1969 msgid "Volume key does not match the volume." msgstr "Kľúč zväzku nezodpovedá zväzku." @@ -599,8 +599,8 @@ msgstr "Zlyhala výmena nového miesta pre kľúč." msgid "Key slot %d is invalid." msgstr "Miesto pre kľúč %d je neplatné." -#: lib/setup.c:4925 src/cryptsetup.c:1976 src/cryptsetup.c:2436 -#: src/cryptsetup.c:3120 src/cryptsetup.c:3180 +#: lib/setup.c:4925 src/cryptsetup.c:1977 src/cryptsetup.c:2437 +#: src/cryptsetup.c:3122 src/cryptsetup.c:3182 #, c-format msgid "Keyslot %d is not active." msgstr "Miesto pre kľúč %d nie je aktívne." @@ -797,7 +797,7 @@ msgid "Cannot read requested amount of data." msgstr "Nedá sa prečítať požadované množstvo údajov." #: lib/utils_device.c:207 lib/utils_storage_wrappers.c:99 -#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2254 +#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2257 #, c-format msgid "Device %s does not exist or access denied." msgstr "Zariadenie %s neexistuje alebo bol prístup odmietnutý." @@ -1140,7 +1140,7 @@ msgstr "LUKS šifrovací režim %s je neplatný." msgid "LUKS hash %s is invalid." msgstr "LUKS hash %s je neplatný." -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1366 +#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 msgid "No known problems detected for LUKS header." msgstr "Žiadne známe problémy neboli zistené pre hlavičku LUKS." @@ -1160,7 +1160,7 @@ msgstr "Odsadenie údajov pre LUKS hlavičku musí byť 0 alebo číslo väčši #: lib/luks1/keymanage.c:761 lib/luks1/keymanage.c:832 #: lib/luks2/luks2_json_format.c:231 lib/luks2/luks2_json_metadata.c:1261 -#: src/utils_reencrypt.c:701 +#: src/utils_reencrypt.c:703 msgid "Wrong LUKS UUID format provided." msgstr "Poskytnutý nesprávny formát LUKS UUID." @@ -1685,7 +1685,7 @@ msgstr "Zlyhalo nastavenie dm-crypt segmentu." msgid "Failed to set dm-linear segment." msgstr "Zlyhalo nastavenie dm-linear segmentu." -#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:578 +#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:580 msgid "No known cipher specification pattern detected in LUKS2 header." msgstr "Nebol nájdený žiaden známy vzor špecifikácie šifry v hlavičke LUKS2." @@ -2148,8 +2148,8 @@ msgstr "Parametre šifrovania miesta pre kľúč môžu byť nastavené len pre msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encryption." msgstr "Parametre šifrovania miesta pre kľúč nie sú kompatibilné so šifrovaním miesta pre kľúč LUKS2." -#: src/cryptsetup.c:150 src/cryptsetup.c:1179 src/cryptsetup.c:1544 -#: src/utils_reencrypt.c:1887 src/utils_reencrypt_luks1.c:502 +#: src/cryptsetup.c:150 src/cryptsetup.c:1180 src/cryptsetup.c:1545 +#: src/utils_reencrypt.c:1890 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." msgstr "Nebol nájdený žiaden známy vzor špecifikácie šifry." @@ -2176,8 +2176,8 @@ msgstr "VAROVANIE: Parameter --hash je ignorovaný v režime plain so zadaným s msgid "WARNING: The --keyfile-size option is being ignored, the read size is the same as the encryption key size.\n" msgstr "VAROVANIE: Možnosť --keyfile-size je ignorovaná, veľkosť čítania je rovnaká ako veľkosť kľúča šifrovania.\n" -#: src/cryptsetup.c:226 src/cryptsetup.c:1374 src/cryptsetup.c:1597 -#: src/integritysetup.c:188 src/utils_reencrypt.c:2138 +#: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 +#: src/integritysetup.c:189 src/utils_reencrypt.c:2141 #, c-format msgid "Blkid scan failed for %s." msgstr "Skenovanie blkid zlyhalo pre %s." @@ -2187,11 +2187,11 @@ msgstr "Skenovanie blkid zlyhalo pre %s." msgid "Detected device signature(s) on %s. Proceeding further may damage existing data." msgstr "Zaznamenané podpis(y) zariadenia na %s. Pokračovanie ďalej môže poškodiť existujúce údaje." -#: src/cryptsetup.c:238 src/cryptsetup.c:1260 src/cryptsetup.c:1308 -#: src/cryptsetup.c:1381 src/cryptsetup.c:1521 src/cryptsetup.c:1609 -#: src/cryptsetup.c:2494 src/cryptsetup.c:2923 src/integritysetup.c:178 -#: src/utils_reencrypt.c:111 src/utils_reencrypt.c:457 -#: src/utils_reencrypt.c:925 +#: src/cryptsetup.c:238 src/cryptsetup.c:1261 src/cryptsetup.c:1309 +#: src/cryptsetup.c:1382 src/cryptsetup.c:1522 src/cryptsetup.c:1610 +#: src/cryptsetup.c:2495 src/cryptsetup.c:2925 src/integritysetup.c:179 +#: src/utils_reencrypt.c:111 src/utils_reencrypt.c:459 +#: src/utils_reencrypt.c:927 msgid "Operation aborted.\n" msgstr "Operácia zrušená.\n" @@ -2199,36 +2199,36 @@ msgstr "Operácia zrušená.\n" msgid "Option --key-file is required." msgstr "Možnosť --key-file je požadovaná." -#: src/cryptsetup.c:377 +#: src/cryptsetup.c:378 msgid "Enter VeraCrypt PIM: " msgstr "Zadajte VeraCrypt PIM: " -#: src/cryptsetup.c:386 +#: src/cryptsetup.c:387 msgid "Invalid PIM value: parse error." msgstr "Neplatná hodnota PIM: chyba pri rozbore." -#: src/cryptsetup.c:389 +#: src/cryptsetup.c:390 msgid "Invalid PIM value: 0." msgstr "Neplatná hodnota PIM: 0." -#: src/cryptsetup.c:392 +#: src/cryptsetup.c:393 msgid "Invalid PIM value: outside of range." msgstr "Neplatná hodnota PIM: mimo rozsahu." -#: src/cryptsetup.c:415 +#: src/cryptsetup.c:416 msgid "No device header detected with this passphrase." msgstr "Žiadna hlavička zariadenia nebola rozpoznaná pre toto heslo." -#: src/cryptsetup.c:492 src/cryptsetup.c:677 +#: src/cryptsetup.c:493 src/cryptsetup.c:678 #, c-format msgid "Device %s is not a valid BITLK device." msgstr "Zariadenie %s nie je platné BITLK zariadenie." -#: src/cryptsetup.c:500 +#: src/cryptsetup.c:501 msgid "Cannot determine volume key size for BITLK, please use --key-size option." msgstr "Nedá sa určiť veľkosť kľúča zväzku pre BITLK, prosím použite možnosť --key-size." -#: src/cryptsetup.c:546 +#: src/cryptsetup.c:547 msgid "" "Header dump with volume key is sensitive information\n" "which allows access to encrypted partition without passphrase.\n" @@ -2238,7 +2238,7 @@ msgstr "" "ktorý povoľuje prístup k zašifrovaným oddielom bez hesla.\n" "Tento výpis by mal byť vždy uložený zašifrovaný na bezpečnom mieste." -#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2519 +#: src/cryptsetup.c:614 src/cryptsetup.c:700 src/cryptsetup.c:2520 msgid "" "The header dump with volume key is sensitive information\n" "that allows access to encrypted partition without a passphrase.\n" @@ -2248,88 +2248,88 @@ msgstr "" "ktorý povoľuje prístup k zašifrovaným oddielom bez hesla.\n" "Tento výpis by mal byť uložený zašifrovaný na bezpečnom mieste." -#: src/cryptsetup.c:754 src/cryptsetup.c:786 +#: src/cryptsetup.c:755 src/cryptsetup.c:787 #, c-format msgid "Device %s is not a valid FVAULT2 device." msgstr "Zariadenie %s nie je platné FVAULT2 zariadenie." -#: src/cryptsetup.c:794 +#: src/cryptsetup.c:795 msgid "Cannot determine volume key size for FVAULT2, please use --key-size option." msgstr "Nedá sa určiť veľkosť kľúča zväzku pre FVAULT2, prosím použite možnosť --key-size." -#: src/cryptsetup.c:848 src/veritysetup.c:317 src/integritysetup.c:416 +#: src/cryptsetup.c:849 src/veritysetup.c:317 src/integritysetup.c:422 #, c-format msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "Zariadenie %s je stále aktívne a naplánované pre odložené odstránenie.\n" -#: src/cryptsetup.c:881 src/cryptsetup.c:1807 src/cryptsetup.c:2081 -#: src/cryptsetup.c:2228 src/cryptsetup.c:2647 src/cryptsetup.c:2728 -#: src/cryptsetup.c:3261 +#: src/cryptsetup.c:882 src/cryptsetup.c:1808 src/cryptsetup.c:2082 +#: src/cryptsetup.c:2229 src/cryptsetup.c:2648 src/cryptsetup.c:2730 +#: src/cryptsetup.c:3263 #, c-format msgid "Failed to set external tokens path %s." msgstr "Zlyhalo nastavenie cesty k externým tokenom %s." -#: src/cryptsetup.c:890 +#: src/cryptsetup.c:891 msgid "Resize of active device requires volume key in keyring but --disable-keyring option is set." msgstr "Zmena veľkosti aktívneho zariadenia vyžaduje kľúč zväzku vo zväzku kľúčov, ale možnosť --disable-keyring je nastavená." -#: src/cryptsetup.c:1057 +#: src/cryptsetup.c:1058 msgid "Benchmark interrupted." msgstr "Hodnotenie výkonu prerušené." -#: src/cryptsetup.c:1078 +#: src/cryptsetup.c:1079 #, c-format msgid "PBKDF2-%-9s N/A\n" msgstr "PBKDF2-%-9s –\n" -#: src/cryptsetup.c:1080 +#: src/cryptsetup.c:1081 #, c-format msgid "PBKDF2-%-9s %7u iterations per second for %zu-bit key\n" msgstr "PBKDF2-%-9s %7u iterácií za sekundu pre %zu-bitový kľúč\n" -#: src/cryptsetup.c:1094 +#: src/cryptsetup.c:1095 #, c-format msgid "%-10s N/A\n" msgstr "%-10s –\n" -#: src/cryptsetup.c:1096 +#: src/cryptsetup.c:1097 #, c-format msgid "%-10s %4u iterations, %5u memory, %1u parallel threads (CPUs) for %zu-bit key (requested %u ms time)\n" msgstr "%-10s %4u iterácií, %5u pamäte, %1u paralelných vlákien (CPU) pre %zu-bitový kľúč (vyžadovaný čas %u ms)\n" -#: src/cryptsetup.c:1120 +#: src/cryptsetup.c:1121 msgid "Result of benchmark is not reliable." msgstr "Výsledok hodnotenia výkonu nie je spoľahlivý." -#: src/cryptsetup.c:1171 +#: src/cryptsetup.c:1172 msgid "# Tests are approximate using memory only (no storage IO).\n" msgstr "# Testy sú len približné a používajú iba pamäť (žiadne vstupno-výstupné úložisko).\n" #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1196 +#: src/cryptsetup.c:1197 #, c-format msgid "#%*s Algorithm | Key | Encryption | Decryption\n" msgstr "#%*s Algoritmus| Kľúč | Šifrovanie | Dešifrovanie\n" -#: src/cryptsetup.c:1204 +#: src/cryptsetup.c:1205 #, c-format msgid "Cipher %s (with %i bits key) is not available." msgstr "Šifra %s (s %i bitovým kľúčom) nie je dostupná." #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1225 +#: src/cryptsetup.c:1226 msgid "# Algorithm | Key | Encryption | Decryption\n" msgstr "# Algoritmus| Kľúč | Šifrovanie | Dešifrovanie\n" -#: src/cryptsetup.c:1238 +#: src/cryptsetup.c:1239 msgid "N/A" msgstr "–" -#: src/cryptsetup.c:1241 +#: src/cryptsetup.c:1242 msgid "# Cipher speed test is not available.\n" msgstr "# Test rýchlosti šifry nie je dostupný.\n" -#: src/cryptsetup.c:1257 +#: src/cryptsetup.c:1258 msgid "" "Unprotected LUKS2 reencryption metadata detected. Please verify the reencryption operation is desirable (see luksDump output)\n" "and continue (upgrade metadata) only if you acknowledge the operation as genuine." @@ -2337,27 +2337,27 @@ msgstr "" "Zaznamenané nechránené metadáta LUKS2 prešifrovania. Prosím overte, či je operácia prešifrovania žiadúca (pozri výstup luksDump)\n" "a pokračujte (aktualizujte metadáta) iba keď operáciu uznáte za žiadúcu." -#: src/cryptsetup.c:1263 +#: src/cryptsetup.c:1264 msgid "Enter passphrase to protect and upgrade reencryption metadata: " msgstr "Zadajte heslo na ochránenie a aktualizáciu metadát prešifrovania: " -#: src/cryptsetup.c:1307 +#: src/cryptsetup.c:1308 msgid "Really proceed with LUKS2 reencryption recovery?" msgstr "Naozaj pokračovať s obnovou LUKS2 prešifrovania?" -#: src/cryptsetup.c:1316 +#: src/cryptsetup.c:1317 msgid "Enter passphrase to verify reencryption metadata digest: " msgstr "Zadajte heslo na overenie otlačku (digest) metadát prešifrovania: " -#: src/cryptsetup.c:1318 +#: src/cryptsetup.c:1319 msgid "Enter passphrase for reencryption recovery: " msgstr "Zadajte heslo pre obnovu prešifrovania: " -#: src/cryptsetup.c:1380 +#: src/cryptsetup.c:1381 msgid "Really try to repair LUKS device header?" msgstr "Naozaj sa pokúsiť opraviť hlavičku LUKS zariadenia?" -#: src/cryptsetup.c:1408 src/integritysetup.c:76 src/integritysetup.c:244 +#: src/cryptsetup.c:1409 src/integritysetup.c:76 src/integritysetup.c:246 msgid "" "\n" "Wipe interrupted." @@ -2365,7 +2365,7 @@ msgstr "" "\n" "Mazanie prerušené." -#: src/cryptsetup.c:1413 src/integritysetup.c:81 src/integritysetup.c:289 +#: src/cryptsetup.c:1414 src/integritysetup.c:81 src/integritysetup.c:291 msgid "" "Wiping device to initialize integrity checksum.\n" "You can interrupt this by pressing CTRL+c (rest of not wiped device will contain invalid checksum).\n" @@ -2373,167 +2373,167 @@ msgstr "" "Mazanie zariadenia na inicializáciu kontrolného súčtu integrity.\n" "Môžete to prerušiť stlačením CTRL+c (zvyšok nevymazaného zariadenia bude obsahovať neplatný kontrolný súčet).\n" -#: src/cryptsetup.c:1435 src/integritysetup.c:103 +#: src/cryptsetup.c:1436 src/integritysetup.c:103 #, c-format msgid "Cannot deactivate temporary device %s." msgstr "Nedá sa deaktivovať dočasné zariadenie %s." -#: src/cryptsetup.c:1483 +#: src/cryptsetup.c:1484 msgid "OPAL hw-only encryption does not support --cipher and --key-size, options ignored." msgstr "Iba hardvérové šifrovanie OPAL nepodporuje --cipher a --key-size, možnosti sa ignorujú." -#: src/cryptsetup.c:1496 +#: src/cryptsetup.c:1497 msgid "Integrity option can be used only for LUKS2 format." msgstr "Možnosti integrity môžu byť použité len pre formát LUKS2." -#: src/cryptsetup.c:1501 src/cryptsetup.c:1581 +#: src/cryptsetup.c:1502 src/cryptsetup.c:1582 msgid "Unsupported LUKS2 metadata size options." msgstr "Nepodporovaná možnosť veľkosti LUKS2 metadát." -#: src/cryptsetup.c:1506 +#: src/cryptsetup.c:1507 msgid "OPAL is supported only for LUKS2 format." msgstr "OPAL je podporovaný len pre formát LUKS2." -#: src/cryptsetup.c:1511 +#: src/cryptsetup.c:1512 msgid "Inline hw tags are supported only for LUKS2 format." msgstr "Hardvérové inline príznaky sú podporované len pre LUKS2 formát." -#: src/cryptsetup.c:1520 +#: src/cryptsetup.c:1521 msgid "Header file does not exist, do you want to create it?" msgstr "Súbor s hlavičkou neexistuje, chcete ho vytvoriť?" -#: src/cryptsetup.c:1528 +#: src/cryptsetup.c:1529 #, c-format msgid "Cannot create header file %s." msgstr "Nedá sa vytvoriť súbor s hlavičkou %s." -#: src/cryptsetup.c:1554 src/integritysetup.c:126 src/integritysetup.c:141 -#: src/integritysetup.c:150 src/integritysetup.c:328 src/integritysetup.c:336 -#: src/integritysetup.c:346 +#: src/cryptsetup.c:1555 src/integritysetup.c:127 src/integritysetup.c:142 +#: src/integritysetup.c:151 src/integritysetup.c:330 src/integritysetup.c:338 +#: src/integritysetup.c:348 msgid "No known integrity specification pattern detected." msgstr "Nebol rozpoznaný žiaden známy vzor špecifikácie integrity." -#: src/cryptsetup.c:1556 +#: src/cryptsetup.c:1557 msgid "Cannot use specified integrity key size." msgstr "Nedá sa použiť zadaná veľkosť kľúča integrity." -#: src/cryptsetup.c:1574 +#: src/cryptsetup.c:1575 #, c-format msgid "Cannot use %s as on-disk header." msgstr "Nedá sa použiť %s ako hlavička na disku." -#: src/cryptsetup.c:1603 src/integritysetup.c:172 +#: src/cryptsetup.c:1604 src/integritysetup.c:173 #, c-format msgid "This will overwrite data on %s irrevocably." msgstr "Toto prepíše údaje na %s nenávratne." -#: src/cryptsetup.c:1640 +#: src/cryptsetup.c:1641 msgid "OPAL Admin password cannot be empty." msgstr "OPAL heslo administrátora nemôže byť prázdne." -#: src/cryptsetup.c:1654 src/cryptsetup.c:2098 src/cryptsetup.c:2241 -#: src/cryptsetup.c:2376 src/cryptsetup.c:2442 src/utils_reencrypt_luks1.c:428 +#: src/cryptsetup.c:1655 src/cryptsetup.c:2099 src/cryptsetup.c:2242 +#: src/cryptsetup.c:2377 src/cryptsetup.c:2443 src/utils_reencrypt_luks1.c:428 msgid "Failed to set pbkdf parameters." msgstr "Zlyhalo nastavenie pbkdf parametrov." -#: src/cryptsetup.c:1785 +#: src/cryptsetup.c:1786 msgid "Reduced data offset is allowed only for detached LUKS header." msgstr "Znížené odsadenie údajov je povolené len pre oddelenú hlavičku LUKS." -#: src/cryptsetup.c:1792 +#: src/cryptsetup.c:1793 #, c-format msgid "LUKS file container %s is too small for activation, there is no remaining space for data." msgstr "Kontajnerový súbor LUKS %s je príliš malý na aktiváciu, nie je tam žiadne zvyšné miesto pre údaje." -#: src/cryptsetup.c:1834 src/cryptsetup.c:2247 src/utils_reencrypt.c:277 -#: src/utils_reencrypt.c:369 src/utils_reencrypt.c:1907 +#: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:278 +#: src/utils_reencrypt.c:371 src/utils_reencrypt.c:1910 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "Nedá sa zistiť veľkosť kľúču zväzku pre LUKS bez miest pre kľúče, prosím použite voľbu --key-size." -#: src/cryptsetup.c:1853 src/utils_reencrypt.c:303 +#: src/cryptsetup.c:1854 src/utils_reencrypt.c:304 msgid "Device requires two volume keys." msgstr "Zariadenie vyžaduje dve kľúče zväzku." -#: src/cryptsetup.c:1888 +#: src/cryptsetup.c:1889 msgid "Some specified activation parameters were ignored with OPAL hw-only encryption." msgstr "Niektoré zadané aktivačné parametre boli ignorované s len hardvérovým šifrovaním OPAL." -#: src/cryptsetup.c:1893 +#: src/cryptsetup.c:1894 msgid "Device activated but cannot make flags persistent." msgstr "Zariadenie aktivované, ale nedajú sa urobiť príznaky trvalými." -#: src/cryptsetup.c:1973 src/cryptsetup.c:2041 +#: src/cryptsetup.c:1974 src/cryptsetup.c:2042 #, c-format msgid "Keyslot %d is selected for deletion." msgstr "Miesto pre kľúč %d je vybrané pre vymazanie." -#: src/cryptsetup.c:1985 src/cryptsetup.c:2045 +#: src/cryptsetup.c:1986 src/cryptsetup.c:2046 msgid "This is the last keyslot. Device will become unusable after purging this key." msgstr "Toto je posledné miesto pre kľúč. Zariadenie sa stane nepoužiteľné po odstránení tohto kľúča." -#: src/cryptsetup.c:1986 +#: src/cryptsetup.c:1987 msgid "Enter any remaining passphrase: " msgstr "Zadajte akékoľvek zvyšné heslo: " -#: src/cryptsetup.c:1987 src/cryptsetup.c:2047 +#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 msgid "Operation aborted, the keyslot was NOT wiped.\n" msgstr "Operácia zrušená, miesto pre kľúč NEBOLO zmazané.\n" -#: src/cryptsetup.c:2023 +#: src/cryptsetup.c:2024 msgid "Enter passphrase to be deleted: " msgstr "Zadajte heslo, ktoré má byť vymazané: " -#: src/cryptsetup.c:2073 src/cryptsetup.c:2425 src/cryptsetup.c:3085 -#: src/cryptsetup.c:3252 +#: src/cryptsetup.c:2074 src/cryptsetup.c:2426 src/cryptsetup.c:3087 +#: src/cryptsetup.c:3254 #, c-format msgid "Device %s is not a valid LUKS2 device." msgstr "Zariadenie %s nie je platné LUKS2 zariadenie." -#: src/cryptsetup.c:2112 src/cryptsetup.c:2311 +#: src/cryptsetup.c:2113 src/cryptsetup.c:2312 msgid "Enter new passphrase for key slot: " msgstr "Zadajte nové heslo k miestu pre kľúč: " -#: src/cryptsetup.c:2146 src/utils_luks.c:342 +#: src/cryptsetup.c:2147 src/utils_luks.c:342 #, c-format msgid "Enter token PIN: " msgstr "Zadaj PIN k tokenu: " -#: src/cryptsetup.c:2148 src/utils_luks.c:344 +#: src/cryptsetup.c:2149 src/utils_luks.c:344 #, c-format msgid "Enter token %d PIN: " msgstr "Zadaj PIN k tokenu %d: " -#: src/cryptsetup.c:2207 +#: src/cryptsetup.c:2208 msgid "WARNING: The --key-slot parameter is used for new keyslot number.\n" msgstr "VAROVANIE: Parameter --key-slot je použitý pre nové číslo miesta pre kľúč.\n" -#: src/cryptsetup.c:2284 src/utils_reencrypt_luks1.c:1094 +#: src/cryptsetup.c:2285 src/utils_reencrypt_luks1.c:1094 #, c-format msgid "Enter any existing passphrase: " msgstr "Zadajte akékoľvek existujúce heslo: " -#: src/cryptsetup.c:2380 +#: src/cryptsetup.c:2381 msgid "Enter passphrase to be changed: " msgstr "Zadajte heslo, ktoré sa má zmeniť: " -#: src/cryptsetup.c:2396 src/utils_reencrypt_luks1.c:1080 +#: src/cryptsetup.c:2397 src/utils_reencrypt_luks1.c:1080 msgid "Enter new passphrase: " msgstr "Zadajte nové heslo: " -#: src/cryptsetup.c:2446 +#: src/cryptsetup.c:2447 msgid "Enter passphrase for keyslot to be converted: " msgstr "Zadajte heslo k miestu pre kľúč, ktoré má byť konvertované: " -#: src/cryptsetup.c:2470 +#: src/cryptsetup.c:2471 msgid "Only one device argument for isLuks operation is supported." msgstr "Iba jeden argument so zariadením pre operáciu isLuks je podporovaný." -#: src/cryptsetup.c:2575 +#: src/cryptsetup.c:2576 #, c-format msgid "Keyslot %d does not contain unbound key." msgstr "Miesto pre kľúč %d neobsahuje neviazaný kľúč." -#: src/cryptsetup.c:2580 +#: src/cryptsetup.c:2581 msgid "" "The header dump with unbound key is sensitive information.\n" "This dump should be stored encrypted in a safe place." @@ -2541,52 +2541,52 @@ msgstr "" "Výpis hlavičky s neviazaným kľúčom je citlivý údaj.\n" "Tento výpis by mal byť uložený šifrovaný na bezpečnom mieste." -#: src/cryptsetup.c:2675 src/cryptsetup.c:2711 +#: src/cryptsetup.c:2676 src/cryptsetup.c:2713 #, c-format msgid "%s is not active %s device name." msgstr "%s nie je názov aktívneho zariadenia %s." -#: src/cryptsetup.c:2706 +#: src/cryptsetup.c:2708 #, c-format msgid "%s is not active LUKS device name or header is missing." msgstr "%s nie je názov aktívneho LUKS zariadenia alebo chýba hlavička." -#: src/cryptsetup.c:2783 src/cryptsetup.c:2802 +#: src/cryptsetup.c:2785 src/cryptsetup.c:2804 msgid "Option --header-backup-file is required." msgstr "Možnosť --header-backup-file je vyžadovaná." -#: src/cryptsetup.c:2833 +#: src/cryptsetup.c:2835 #, c-format msgid "%s is not cryptsetup managed device." msgstr "%s nie je zariadenie spravované cryptsetup-om." -#: src/cryptsetup.c:2844 +#: src/cryptsetup.c:2846 #, c-format msgid "Refresh is not supported for device type %s" msgstr "Obnovenie nie je podporované pre typ zariadenia %s" -#: src/cryptsetup.c:2894 +#: src/cryptsetup.c:2896 #, c-format msgid "Unrecognized metadata device type %s." msgstr "Nerozpoznaný typ zariadenia %s v metadátach." -#: src/cryptsetup.c:2896 +#: src/cryptsetup.c:2898 msgid "Command requires device and mapped name as arguments." msgstr "Príkaz požaduje zariadenie a mapovaný názov ako argumenty." -#: src/cryptsetup.c:2914 +#: src/cryptsetup.c:2916 msgid "Enter OPAL PSID: " msgstr "Zadajte OPAL PSID: " -#: src/cryptsetup.c:2914 +#: src/cryptsetup.c:2916 msgid "Enter OPAL Admin password: " msgstr "Zadajte OPAL heslo administrátora: " -#: src/cryptsetup.c:2922 +#: src/cryptsetup.c:2924 msgid "WARNING: WHOLE disk will be factory reset and all data will be lost! Continue?" msgstr "VAROVANIE: CELÝ disk bude obnovený do továrenských nastavení a všetky údaje budú stratené! Pokračovať?" -#: src/cryptsetup.c:2965 +#: src/cryptsetup.c:2967 #, c-format msgid "" "This operation will erase all keyslots on device %s.\n" @@ -2595,363 +2595,363 @@ msgstr "" "Táto operácia vymaže všetky miesta s kľúčmi na zariadení %s.\n" "Zariadenie sa stane nepoužiteľné po tejto operácií." -#: src/cryptsetup.c:2972 +#: src/cryptsetup.c:2974 msgid "Operation aborted, keyslots were NOT wiped.\n" msgstr "Operácia zrušená, miesta s kľúčmi NEBOLI vymazané.\n" -#: src/cryptsetup.c:3011 +#: src/cryptsetup.c:3013 msgid "Invalid LUKS type, only luks1 and luks2 are supported." msgstr "Neplatný typ LUKS, iba luks1 a luks2 sú podporované." -#: src/cryptsetup.c:3027 +#: src/cryptsetup.c:3029 #, c-format msgid "Device is already %s type." msgstr "Zariadenie je už typom %s." -#: src/cryptsetup.c:3034 +#: src/cryptsetup.c:3036 #, c-format msgid "This operation will convert %s to %s format.\n" msgstr "Táto operácia premení %s na formát %s.\n" -#: src/cryptsetup.c:3037 +#: src/cryptsetup.c:3039 msgid "Operation aborted, device was NOT converted.\n" msgstr "Operácia zrušená, zariadenie NEBOLO premenené.\n" -#: src/cryptsetup.c:3077 +#: src/cryptsetup.c:3079 msgid "Option --priority, --label or --subsystem is missing." msgstr "Možnosť --priority, --label alebo --subsystem chýba." -#: src/cryptsetup.c:3111 src/cryptsetup.c:3151 src/cryptsetup.c:3171 +#: src/cryptsetup.c:3113 src/cryptsetup.c:3153 src/cryptsetup.c:3173 #, c-format msgid "Token %d is invalid." msgstr "Token %d je neplatný." -#: src/cryptsetup.c:3114 src/cryptsetup.c:3174 +#: src/cryptsetup.c:3116 src/cryptsetup.c:3176 #, c-format msgid "Token %d in use." msgstr "Token %d je používaný." -#: src/cryptsetup.c:3126 +#: src/cryptsetup.c:3128 #, c-format msgid "Failed to add luks2-keyring token %d." msgstr "Zlyhalo pridanie tokenu luks2-keyring %d." -#: src/cryptsetup.c:3137 src/cryptsetup.c:3200 +#: src/cryptsetup.c:3139 src/cryptsetup.c:3202 #, c-format msgid "Failed to assign token %d to keyslot %d." msgstr "Zlyhalo priradenie tokenu %d k miestu pre kľúč %d." -#: src/cryptsetup.c:3154 +#: src/cryptsetup.c:3156 #, c-format msgid "Token %d is not in use." msgstr "Token %d sa nepoužíva." -#: src/cryptsetup.c:3191 +#: src/cryptsetup.c:3193 msgid "Failed to import token from file." msgstr "Zlyhalo importovanie tokenu zo súboru." -#: src/cryptsetup.c:3216 +#: src/cryptsetup.c:3218 #, c-format msgid "Failed to get token %d for export." msgstr "Zlyhalo získanie tokenu %d pre export." -#: src/cryptsetup.c:3229 +#: src/cryptsetup.c:3231 #, c-format msgid "Token %d is not assigned to keyslot %d." msgstr "Token %d nie je priradený k miestu pre kľúč %d." -#: src/cryptsetup.c:3231 src/cryptsetup.c:3238 +#: src/cryptsetup.c:3233 src/cryptsetup.c:3240 #, c-format msgid "Failed to unassign token %d from keyslot %d." msgstr "Zlyhalo zrušenie priradenia tokenu %d z miesta pre kľúč %d." -#: src/cryptsetup.c:3297 +#: src/cryptsetup.c:3299 msgid "Option --tcrypt-hidden, --tcrypt-system or --tcrypt-backup is supported only for TCRYPT device." msgstr "Možnosť --tcrypt-hidden, --tcrypt-system alebo --tcrypt-backup je podporovaná len pre TCRYPT zariadenie." -#: src/cryptsetup.c:3300 +#: src/cryptsetup.c:3302 msgid "Option --veracrypt or --disable-veracrypt is supported only for TCRYPT device type." msgstr "Možnosť --veracrypt alebo --disable-veracrypt je podporovaná len pre zariadenie typu TCRYPT." -#: src/cryptsetup.c:3303 +#: src/cryptsetup.c:3305 msgid "Option --veracrypt-pim is supported only for VeraCrypt compatible devices." msgstr "Možnosť --veracrypt-pim je podporovaná len pre zariadenia kompatibilné s VeraCrypt." -#: src/cryptsetup.c:3307 +#: src/cryptsetup.c:3309 msgid "Option --veracrypt-query-pim is supported only for VeraCrypt compatible devices." msgstr "Možnosť --veracrypt-query-pim je podporovaná len pre zariadenia kompatibilné s VeraCrypt." -#: src/cryptsetup.c:3309 +#: src/cryptsetup.c:3311 msgid "The options --veracrypt-pim and --veracrypt-query-pim are mutually exclusive." msgstr "Možnosti --veracrypt-pim a --veracrypt-query-pim sa vzájomne vylučujú." -#: src/cryptsetup.c:3318 +#: src/cryptsetup.c:3320 msgid "Option --persistent is not allowed with --test-passphrase." msgstr "Možnosť --persistent nie je povolené s --test-passphrase." -#: src/cryptsetup.c:3321 +#: src/cryptsetup.c:3323 msgid "Options --refresh and --test-passphrase are mutually exclusive." msgstr "Možnosti --refresh a --test-passphrase sa navzájom vylučujú." -#: src/cryptsetup.c:3324 +#: src/cryptsetup.c:3326 msgid "Option --shared is allowed only for open of plain device." msgstr "Možnosť --shared je povolená len pre otvorenie zariadenia plain." -#: src/cryptsetup.c:3327 +#: src/cryptsetup.c:3329 msgid "Option --skip is supported only for open of plain and loopaes devices." msgstr "Možnosť --skip je podporovaná len pre otvorenie zariadení plain a loopaes." -#: src/cryptsetup.c:3330 +#: src/cryptsetup.c:3332 msgid "Option --offset with open action is only supported for plain and loopaes devices." msgstr "Možnosť --offset s akciou otvorenia je podporovaná len pre zariadenia plain a loopaes." -#: src/cryptsetup.c:3333 +#: src/cryptsetup.c:3335 msgid "Option --tcrypt-hidden cannot be combined with --allow-discards." msgstr "Možnosť --tcrypt-hidden nemôže byť kombinovaná s --allow-discards." -#: src/cryptsetup.c:3337 +#: src/cryptsetup.c:3339 msgid "Sector size option with open action is supported only for plain devices." msgstr "Možnosť veľkosti sektora s akciou otvorenia je podporovaná len pre zariadenia plain." -#: src/cryptsetup.c:3341 +#: src/cryptsetup.c:3343 msgid "Large IV sectors option is supported only for opening plain type device with sector size larger than 512 bytes." msgstr "Možnosť veľkých IV sektorov je podporovaná len pre otváranie zariadenia typu plain s veľkosťou sektora väčšou než 512 bajtov." -#: src/cryptsetup.c:3346 +#: src/cryptsetup.c:3348 msgid "Option --test-passphrase is allowed only for open of LUKS, TCRYPT, BITLK and FVAULT2 devices." msgstr "Možnosť --test-passphrase je povolená len pre otvorenie LUKS, TCRYPT, BITLK a FVAULT2 zariadení." -#: src/cryptsetup.c:3349 src/cryptsetup.c:3379 +#: src/cryptsetup.c:3351 src/cryptsetup.c:3381 msgid "Options --device-size and --size cannot be combined." msgstr "Možnosť --device-size a --size nemôžu byť kombinované." -#: src/cryptsetup.c:3352 +#: src/cryptsetup.c:3354 msgid "Option --unbound is allowed only for open of luks device." msgstr "Možnosť --unbound je povolená len pre otvorenie zariadení luks." -#: src/cryptsetup.c:3355 +#: src/cryptsetup.c:3357 msgid "Option --unbound cannot be used without --test-passphrase." msgstr "Možnosť --unbound nemôže byť použitá bez --test-passphrase." -#: src/cryptsetup.c:3359 +#: src/cryptsetup.c:3361 msgid "Option --volume-key-keyring cannot be combined with --hash or --volume-key-file." msgstr "Možnosť --volume-key-keyring nemôže byť kombinovaná s --hash alebo --volume-key-file." -#: src/cryptsetup.c:3362 +#: src/cryptsetup.c:3364 msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "Obe možnosti --volume-key-file musia byť zadané spolu s príslušnými možnosťami --key-size." -#: src/cryptsetup.c:3371 src/veritysetup.c:673 src/integritysetup.c:787 +#: src/cryptsetup.c:3373 src/veritysetup.c:673 src/integritysetup.c:793 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "Možnosti --cancal-deferred a --deferred nemôžu byť použité naraz." -#: src/cryptsetup.c:3387 +#: src/cryptsetup.c:3389 msgid "Option --active-name can be set only for LUKS2 device." msgstr "Možnosť --active-name možno nastaviť len pre zariadenie LUKS2." -#: src/cryptsetup.c:3390 +#: src/cryptsetup.c:3392 msgid "Options --active-name and --force-offline-reencrypt cannot be combined." msgstr "Možnosti --active-name a --force-offline-reencrypt nemožno kombinovať." -#: src/cryptsetup.c:3393 +#: src/cryptsetup.c:3395 msgid "Options --new-volume-key-file and --keep-key cannot be combined." msgstr "Možnosti --new-volume-key-file a --keep-key nemožno kombinovať." -#: src/cryptsetup.c:3396 +#: src/cryptsetup.c:3398 msgid "Options --new-volume-key-keyring and --keep-key cannot be combined." msgstr "Možnosti --new-volume-key-keyring a --keep-key nemožno kombinovať." -#: src/cryptsetup.c:3404 src/cryptsetup.c:3434 +#: src/cryptsetup.c:3406 src/cryptsetup.c:3436 msgid "Keyslot specification is required." msgstr "Vyžaduje sa zadanie miesta pre kľúč." -#: src/cryptsetup.c:3412 +#: src/cryptsetup.c:3414 msgid "Options --align-payload and --offset cannot be combined." msgstr "Možnosti --align-payload a --offset nemožno kombinovať." -#: src/cryptsetup.c:3415 +#: src/cryptsetup.c:3417 msgid "Option --integrity-no-wipe can be used only for format action with integrity extension." msgstr "Možnosť --integrity-no-wipe môže byť použitá len pre formátovanie s rozšírením integrity." -#: src/cryptsetup.c:3418 +#: src/cryptsetup.c:3420 msgid "Only one of --use-[u]random options is allowed." msgstr "Iba jedna z možností --use-[u]random je povolená." -#: src/cryptsetup.c:3426 +#: src/cryptsetup.c:3428 msgid "Key size is required with --unbound option." msgstr "Veľkosť kľúča sa vyžaduje s možnosťou --unbound." -#: src/cryptsetup.c:3446 +#: src/cryptsetup.c:3448 msgid "Invalid token action." msgstr "Neplatná operácia s tokenom." -#: src/cryptsetup.c:3449 +#: src/cryptsetup.c:3451 msgid "--key-description parameter is mandatory for token add action." msgstr "Parameter --key-description je povinný pre pridanie tokenu." -#: src/cryptsetup.c:3453 src/cryptsetup.c:3466 +#: src/cryptsetup.c:3455 src/cryptsetup.c:3468 msgid "Action requires specific token. Use --token-id parameter." msgstr "Akcia vyžaduje špecifický token. Použite --token-id parameter." -#: src/cryptsetup.c:3457 +#: src/cryptsetup.c:3459 msgid "Option --unbound is valid only with token add action." msgstr "Možnosť --unbound je platná len pri pridávaní tokenu." -#: src/cryptsetup.c:3459 +#: src/cryptsetup.c:3461 msgid "Options --key-slot and --unbound cannot be combined." msgstr "Možnosti --key-slot a --unbound nemožno kombinovať." -#: src/cryptsetup.c:3464 +#: src/cryptsetup.c:3466 msgid "Action requires specific keyslot. Use --key-slot parameter." msgstr "Akcia vyžaduje špecifický token. Použite --key-slot parameter." -#: src/cryptsetup.c:3480 +#: src/cryptsetup.c:3482 msgid " [--type ] []" msgstr " [--type ] []" -#: src/cryptsetup.c:3480 src/veritysetup.c:487 src/integritysetup.c:554 +#: src/cryptsetup.c:3482 src/veritysetup.c:487 src/integritysetup.c:560 msgid "open device as " msgstr "otvorí zariadenie ako " -#: src/cryptsetup.c:3481 src/cryptsetup.c:3482 src/cryptsetup.c:3483 -#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:555 -#: src/integritysetup.c:556 src/integritysetup.c:558 +#: src/cryptsetup.c:3483 src/cryptsetup.c:3484 src/cryptsetup.c:3485 +#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:561 +#: src/integritysetup.c:562 src/integritysetup.c:564 msgid "" msgstr "" -#: src/cryptsetup.c:3481 src/veritysetup.c:488 src/integritysetup.c:555 +#: src/cryptsetup.c:3483 src/veritysetup.c:488 src/integritysetup.c:561 msgid "close device (remove mapping)" msgstr "zatvorí zariadenie (odstráni mapovanie)" -#: src/cryptsetup.c:3482 src/integritysetup.c:558 +#: src/cryptsetup.c:3484 src/integritysetup.c:564 msgid "resize active device" msgstr "zmení veľkosť aktívneho zariadenia" -#: src/cryptsetup.c:3483 +#: src/cryptsetup.c:3485 msgid "show device status" msgstr "zobrazí stav zariadenia" -#: src/cryptsetup.c:3484 +#: src/cryptsetup.c:3486 msgid "[--cipher ]" msgstr "[--cipher <šifra>]" -#: src/cryptsetup.c:3484 +#: src/cryptsetup.c:3486 msgid "benchmark cipher" msgstr "zhodnotí výkon šifry" -#: src/cryptsetup.c:3485 src/cryptsetup.c:3486 src/cryptsetup.c:3487 -#: src/cryptsetup.c:3488 src/cryptsetup.c:3489 src/cryptsetup.c:3496 -#: src/cryptsetup.c:3497 src/cryptsetup.c:3498 src/cryptsetup.c:3499 -#: src/cryptsetup.c:3500 src/cryptsetup.c:3501 src/cryptsetup.c:3502 -#: src/cryptsetup.c:3503 src/cryptsetup.c:3504 src/cryptsetup.c:3505 +#: src/cryptsetup.c:3487 src/cryptsetup.c:3488 src/cryptsetup.c:3489 +#: src/cryptsetup.c:3490 src/cryptsetup.c:3491 src/cryptsetup.c:3498 +#: src/cryptsetup.c:3499 src/cryptsetup.c:3500 src/cryptsetup.c:3501 +#: src/cryptsetup.c:3502 src/cryptsetup.c:3503 src/cryptsetup.c:3504 +#: src/cryptsetup.c:3505 src/cryptsetup.c:3506 src/cryptsetup.c:3507 msgid "" msgstr "" -#: src/cryptsetup.c:3485 +#: src/cryptsetup.c:3487 msgid "try to repair on-disk metadata" msgstr "pokúsi sa opraviť metadáta uložené na disku" -#: src/cryptsetup.c:3486 +#: src/cryptsetup.c:3488 msgid "reencrypt LUKS2 device" msgstr "prešifruje zariadenie LUKS2" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3489 msgid "erase all keyslots (remove encryption key)" msgstr "vymaže všetky miesta s kľúčmi (odstráni šifrovací kľúč)" -#: src/cryptsetup.c:3488 +#: src/cryptsetup.c:3490 msgid "convert LUKS from/to LUKS2 format" msgstr "prevedie LUKS z/na LUKS2 formát(u)" -#: src/cryptsetup.c:3489 +#: src/cryptsetup.c:3491 msgid "set permanent configuration options for LUKS2" msgstr "nastaví trvalé možnosti konfigurácie pre LUKS2" -#: src/cryptsetup.c:3490 src/cryptsetup.c:3491 +#: src/cryptsetup.c:3492 src/cryptsetup.c:3493 msgid " []" msgstr " []" -#: src/cryptsetup.c:3490 +#: src/cryptsetup.c:3492 msgid "formats a LUKS device" msgstr "naformátuje zariadenie LUKS" -#: src/cryptsetup.c:3491 +#: src/cryptsetup.c:3493 msgid "add key to LUKS device" msgstr "pridá kľúč do zariadenia LUKS" -#: src/cryptsetup.c:3492 src/cryptsetup.c:3493 src/cryptsetup.c:3494 +#: src/cryptsetup.c:3494 src/cryptsetup.c:3495 src/cryptsetup.c:3496 msgid " []" msgstr " []" -#: src/cryptsetup.c:3492 +#: src/cryptsetup.c:3494 msgid "removes supplied key or key file from LUKS device" msgstr "odstráni poskytnutý kľúč alebo súbor s kľúčom zo zariadenia LUKS" -#: src/cryptsetup.c:3493 +#: src/cryptsetup.c:3495 msgid "changes supplied key or key file of LUKS device" msgstr "zmení poskytnutý kľúč alebo súbor s kľúčom na zariadení LUKS" -#: src/cryptsetup.c:3494 +#: src/cryptsetup.c:3496 msgid "converts a key to new pbkdf parameters" msgstr "prevedie kľúč na nové parametre pbkdf" -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3497 msgid " " msgstr " " -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3497 msgid "wipes key with number from LUKS device" msgstr "vymaže kľúč s číslom zo zariadenia LUKS" -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3498 msgid "print UUID of LUKS device" msgstr "vypíše UUID zariadení LUKS" -#: src/cryptsetup.c:3497 +#: src/cryptsetup.c:3499 msgid "tests for LUKS partition header" msgstr "otestuje na hlavičku diskového oddielu LUKS" -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3500 msgid "dump LUKS partition information" msgstr "vypíše informácie o oddiely LUKS" -#: src/cryptsetup.c:3499 +#: src/cryptsetup.c:3501 msgid "dump TCRYPT device information" msgstr "vypíše informácie o zariadení TCRYPT" -#: src/cryptsetup.c:3500 +#: src/cryptsetup.c:3502 msgid "dump BITLK device information" msgstr "vypíše informácie o zariadení BITLK" -#: src/cryptsetup.c:3501 +#: src/cryptsetup.c:3503 msgid "dump FVAULT2 device information" msgstr "vypíše informácie o zariadení FVAULT2" -#: src/cryptsetup.c:3502 +#: src/cryptsetup.c:3504 msgid "Suspend LUKS device and wipe key (all IOs are frozen)" msgstr "Pozastaví zariadenie LUKS a vymaže kľúč (všetky vstupno-výstupné operácie budú zmrazené)" -#: src/cryptsetup.c:3503 +#: src/cryptsetup.c:3505 msgid "Resume suspended LUKS device" msgstr "Prebudí pozastavené zariadenie LUKS" -#: src/cryptsetup.c:3504 +#: src/cryptsetup.c:3506 msgid "Backup LUKS device header and keyslots" msgstr "Zálohuje hlavičku a miesta s kľúčmi zariadenia LUKS" -#: src/cryptsetup.c:3505 +#: src/cryptsetup.c:3507 msgid "Restore LUKS device header and keyslots" msgstr "Obnoví hlavičku a miesta s kľúčmi zariadenia LUKS" -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3508 msgid " " msgstr " " -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3508 msgid "Manipulate LUKS2 tokens" msgstr "Manipuluje s tokenmi LUKS2" -#: src/cryptsetup.c:3525 src/veritysetup.c:505 src/integritysetup.c:573 +#: src/cryptsetup.c:3527 src/veritysetup.c:505 src/integritysetup.c:579 msgid "" "\n" " is one of:\n" @@ -2959,7 +2959,7 @@ msgstr "" "\n" " je jedna z:\n" -#: src/cryptsetup.c:3531 +#: src/cryptsetup.c:3533 msgid "" "\n" "You can also use old syntax aliases:\n" @@ -2971,7 +2971,7 @@ msgstr "" "\topen: create (plainOpen), luksOpen, loopaesOpen, tcryptOpen, bitlkOpen, fvault2Open\n" "\tclose: remove (plainClose), luksClose, loopaesClose, tcryptClose, bitlkClose, fvault2Close\n" -#: src/cryptsetup.c:3535 +#: src/cryptsetup.c:3537 #, c-format msgid "" "\n" @@ -2986,7 +2986,7 @@ msgstr "" " je číslo miesta pre kľúč LUKS na upravovanie\n" " je voliteľný súbor s kľúčom pre nový kľúč pre akciu luksAddKey\n" -#: src/cryptsetup.c:3542 +#: src/cryptsetup.c:3544 #, c-format msgid "" "\n" @@ -2995,7 +2995,7 @@ msgstr "" "\n" "Predvolené zakompilovaný formát metadát je %s (pre akciu luksFormat).\n" -#: src/cryptsetup.c:3547 +#: src/cryptsetup.c:3549 msgid "" "\n" "LUKS2 external token plugin support is enabled.\n" @@ -3003,12 +3003,12 @@ msgstr "" "\n" "LUKS2 podpora zásuvného modulu externého tokenu je zapnutá.\n" -#: src/cryptsetup.c:3548 +#: src/cryptsetup.c:3550 #, c-format msgid "LUKS2 external token plugin path: %s.\n" msgstr "Cesta k zásuvnému modulu externého tokenu LUKS2: %s.\n" -#: src/cryptsetup.c:3550 +#: src/cryptsetup.c:3552 msgid "" "\n" "LUKS2 external token plugin support is disabled.\n" @@ -3016,7 +3016,7 @@ msgstr "" "\n" "LUKS2 podpora zásuvného modulu externého tokenu je vypnutá.\n" -#: src/cryptsetup.c:3554 +#: src/cryptsetup.c:3556 #, c-format msgid "" "\n" @@ -3033,7 +3033,7 @@ msgstr "" "Predvolené PBKDF pre LUKS2: %s\n" "\tČas iterácie: %d, Pamäť potrebná: %d kB, Paralelné vlákna: %d\n" -#: src/cryptsetup.c:3565 +#: src/cryptsetup.c:3567 #, c-format msgid "" "\n" @@ -3048,122 +3048,126 @@ msgstr "" "\tplain: %s, Kľúč: %d bitov, Hashovanie hesla: %s\n" "\tLUKS: %s, Kľúč: %d bitov, Hashovanie LUKS hlavičky: %s, RNG: %s\n" -#: src/cryptsetup.c:3574 +#: src/cryptsetup.c:3576 msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: Predvolená veľkosť kľúča s režimom XTS (dva interné kľúče) bude zdvojnásobená.\n" -#: src/cryptsetup.c:3592 src/veritysetup.c:647 src/integritysetup.c:733 +#: src/cryptsetup.c:3594 src/veritysetup.c:647 src/integritysetup.c:739 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: požaduje %s ako argumenty" -#: src/cryptsetup.c:3632 src/utils_reencrypt_luks1.c:1143 +#: src/cryptsetup.c:3634 src/utils_reencrypt_luks1.c:1143 msgid "Key slot is invalid." msgstr "Miesto pre kľúč je neplatné." -#: src/cryptsetup.c:3660 +#: src/cryptsetup.c:3662 msgid "Device size must be multiple of 512 bytes sector." msgstr "Veľkosť zariadenie musí byť násobkom 512-bajtového sektora." -#: src/cryptsetup.c:3665 +#: src/cryptsetup.c:3667 msgid "Invalid max reencryption hotzone size specification." msgstr "Zadaná neplatná maximálna veľkosť horúcej zóny prešifrovania." -#: src/cryptsetup.c:3679 src/cryptsetup.c:3696 src/cryptsetup.c:3708 +#: src/cryptsetup.c:3681 src/cryptsetup.c:3698 src/cryptsetup.c:3710 msgid "Key size must be a multiple of 8 bits" msgstr "Veľkosť kľúča musí byť násobkom 8 bitov" -#: src/cryptsetup.c:3686 +#: src/cryptsetup.c:3688 msgid "At most 2 key size specifications can be supplied." msgstr "Najviac dve veľkosti kľúčov môžu byť zadané." -#: src/cryptsetup.c:3715 src/cryptsetup.c:3726 +#: src/cryptsetup.c:3717 src/cryptsetup.c:3728 #, c-format msgid "At most %d volume key specifications can be supplied." msgstr "Najviac %d špecifikácií kľúča zväzku môže byť zadaných." -#: src/cryptsetup.c:3738 +#: src/cryptsetup.c:3740 #, c-format msgid "At most %d keyring link specifications can be supplied." msgstr "Najviac %d zväzkov kľúčov môže byť zadaných." -#: src/cryptsetup.c:3747 +#: src/cryptsetup.c:3749 msgid "Maximum device reduce size is 1 GiB." msgstr "Maximálna veľkosť zmenšenia zariadenia je 1 GiB." -#: src/cryptsetup.c:3750 +#: src/cryptsetup.c:3752 msgid "Reduce size must be multiple of 512 bytes sector." msgstr "Veľkosť zmenšenia musí byť násobkom 512-bajtového sektora." -#: src/cryptsetup.c:3767 +#: src/cryptsetup.c:3769 msgid "Option --priority can be only ignore/normal/prefer." msgstr "Možnosť --priority môže byť len ignore/normal/prefer." -#: src/cryptsetup.c:3786 src/veritysetup.c:568 src/integritysetup.c:653 +#: src/cryptsetup.c:3774 +msgid "Invalid maximal tries specification." +msgstr "Zadaný neplatný maximálny počet pokusov." + +#: src/cryptsetup.c:3793 src/veritysetup.c:568 src/integritysetup.c:659 msgid "Show this help message" msgstr "Zobrazí túto pomocnú správu" -#: src/cryptsetup.c:3787 src/veritysetup.c:569 src/integritysetup.c:654 +#: src/cryptsetup.c:3794 src/veritysetup.c:569 src/integritysetup.c:660 msgid "Display brief usage" msgstr "Zobrazí stručný návod na použitie" -#: src/cryptsetup.c:3788 src/veritysetup.c:570 src/integritysetup.c:655 +#: src/cryptsetup.c:3795 src/veritysetup.c:570 src/integritysetup.c:661 msgid "Print package version" msgstr "Vypíše verziu balíka" -#: src/cryptsetup.c:3799 src/veritysetup.c:581 src/integritysetup.c:666 +#: src/cryptsetup.c:3806 src/veritysetup.c:581 src/integritysetup.c:672 msgid "Help options:" msgstr "Možnosti pomoci:" -#: src/cryptsetup.c:3822 src/veritysetup.c:602 src/integritysetup.c:686 +#: src/cryptsetup.c:3829 src/veritysetup.c:602 src/integritysetup.c:692 msgid "[OPTION...] " msgstr "[MOŽNOSŤ...] <špecifikácia akcie>" -#: src/cryptsetup.c:3831 src/veritysetup.c:611 src/integritysetup.c:697 +#: src/cryptsetup.c:3838 src/veritysetup.c:611 src/integritysetup.c:703 msgid "Argument missing." msgstr "Chýba argument ." -#: src/cryptsetup.c:3910 src/veritysetup.c:642 src/integritysetup.c:728 +#: src/cryptsetup.c:3917 src/veritysetup.c:642 src/integritysetup.c:734 msgid "Unknown action." msgstr "Neznáma akcia." -#: src/cryptsetup.c:3928 +#: src/cryptsetup.c:3935 msgid "Option --key-file takes precedence over specified key file argument." msgstr "Možnosť --key-file má prednosť pred zadaným argumentom súboru s kľúčom." -#: src/cryptsetup.c:3934 +#: src/cryptsetup.c:3941 msgid "Only one --key-file argument is allowed." msgstr "Iba jeden argument --key-file je dovolený." -#: src/cryptsetup.c:3939 +#: src/cryptsetup.c:3946 msgid "Password-based key derivation function (PBKDF) can be only pbkdf2 or argon2i/argon2id." msgstr "Funkcia na odvodenie kľúča na základe hesla (PBKDF) môže byť iba pbkdf2 alebo argon2i/argon2id." -#: src/cryptsetup.c:3944 +#: src/cryptsetup.c:3951 msgid "PBKDF forced iterations cannot be combined with iteration time option." msgstr "Vynútené iterácie PBKDF nemôžu byť kombinované s možnosťou času iterácie." -#: src/cryptsetup.c:3949 +#: src/cryptsetup.c:3956 msgid "Cannot link volume key to a keyring when keyring is disabled." msgstr "Nedá sa prepojiť kľúč zväzku na zväzok kľúčov, keď je zväzok kľúčov vypnutý." -#: src/cryptsetup.c:3954 +#: src/cryptsetup.c:3961 msgid "Cannot use keyring key description when keyring is disabled." msgstr "Nedá sa použiť popis kľúča zo zväzku kľúčov, keď je zväzok kľúčov vypnutý." -#: src/cryptsetup.c:3959 +#: src/cryptsetup.c:3966 msgid "Inline integrity must be used together with --integrity option." msgstr "Inline integrita musí byť použitá spolu s možnosťou --integrity." -#: src/cryptsetup.c:3970 +#: src/cryptsetup.c:3977 msgid "Options --keyslot-cipher and --keyslot-key-size must be used together." msgstr "Možnosti --keyslot-cipher a --keyslot-key-size musia byť použité spolu." -#: src/cryptsetup.c:3978 +#: src/cryptsetup.c:3985 msgid "No action taken. Invoked with --test-args option.\n" msgstr "Žiadna akcia sa nevykonala. Zavolané s možnosťou --test-args.\n" -#: src/cryptsetup.c:3991 +#: src/cryptsetup.c:3998 msgid "Cannot disable metadata locking." msgstr "Nedá sa vypnúť zamykanie metadát." @@ -3228,7 +3232,7 @@ msgstr "Príkaz vyžaduje alebo možnosť --root-hash-file ako msgid " " msgstr " " -#: src/veritysetup.c:485 src/integritysetup.c:553 +#: src/veritysetup.c:485 src/integritysetup.c:559 msgid "format device" msgstr "formátuje zariadenie" @@ -3244,7 +3248,7 @@ msgstr "overí zariadenie" msgid " []" msgstr " []" -#: src/veritysetup.c:489 src/integritysetup.c:556 +#: src/veritysetup.c:489 src/integritysetup.c:562 msgid "show active device status" msgstr "zobrazí stav aktívneho zariadenia" @@ -3252,7 +3256,7 @@ msgstr "zobrazí stav aktívneho zariadenia" msgid "" msgstr "" -#: src/veritysetup.c:490 src/integritysetup.c:557 +#: src/veritysetup.c:490 src/integritysetup.c:563 msgid "show on-disk information" msgstr "zobrazí informácie na disku" @@ -3294,7 +3298,7 @@ msgstr "Možnosť --panic-on-corruption a --restart-on-corruption nemôžu byť msgid "Option --error-as-corruption must be used with --panic-on-corruption or --restart-on-corruption." msgstr "Možnosť --error-as-corruption musí byť použitá spolu s --panic-on-corruption alebo --restart-on-corruption." -#: src/integritysetup.c:168 +#: src/integritysetup.c:169 #, c-format msgid "" "This will overwrite data on %s and %s irrevocably.\n" @@ -3303,33 +3307,33 @@ msgstr "" "Toto nenávratne prepíše údaje na %s a %s.\n" "Na zachovanie zariadenia s údajmi použite možnosť --no-wipe (a potom ho aktivujte s --integrity-recalculate)." -#: src/integritysetup.c:213 +#: src/integritysetup.c:215 #, c-format msgid "Formatted with tag size %u%s, internal integrity %s.\n" msgstr "Naformátované s veľkosťou príznaku %u %s, interná integrita %s.\n" -#: src/integritysetup.c:214 +#: src/integritysetup.c:216 msgid " (inline hw tags)" msgstr " (hardvérové inline príznaky)" -#: src/integritysetup.c:303 +#: src/integritysetup.c:305 msgid "Setting recalculate flag is not supported, you may consider using --wipe instead." msgstr "Nastavenie príznaku prepočítania nie je podporované, môžete zvážiť použitie --wipe namiesto toho." -#: src/integritysetup.c:380 src/integritysetup.c:540 +#: src/integritysetup.c:382 src/integritysetup.c:546 #, c-format msgid "Device %s is not a valid INTEGRITY device." msgstr "Zariadenie %s nie je platné INTEGRITY zariadenie." -#: src/integritysetup.c:553 src/integritysetup.c:557 +#: src/integritysetup.c:559 src/integritysetup.c:563 msgid "" msgstr "" -#: src/integritysetup.c:554 +#: src/integritysetup.c:560 msgid " " msgstr " " -#: src/integritysetup.c:577 +#: src/integritysetup.c:583 #, c-format msgid "" "\n" @@ -3340,7 +3344,7 @@ msgstr "" " je zariadenie na vytvorenie pod %s\n" " je zariadenie obsahujúce údaje s príznakmi integrity\n" -#: src/integritysetup.c:582 +#: src/integritysetup.c:588 #, c-format msgid "" "\n" @@ -3353,48 +3357,48 @@ msgstr "" "\tAlgoritmus kontrolného súčtu: %s\n" "\tMaximálna veľkosť súboru s kľúčom: %d kB\n" -#: src/integritysetup.c:639 +#: src/integritysetup.c:645 #, c-format msgid "Invalid --%s size. Maximum is %u bytes." msgstr "Neplatná veľkosť --%s. Maximum je %u bajtov." -#: src/integritysetup.c:742 +#: src/integritysetup.c:748 msgid "Both key file and key size options must be specified." msgstr "Obe možnosti musia byť zadané, súbor s kľúčom aj veľkosť kľúča." -#: src/integritysetup.c:746 +#: src/integritysetup.c:752 msgid "Both journal integrity key file and key size options must be specified." msgstr "Obe možnosti musia byť zadané, súbor s kľúčom pre integritu denníka aj veľkosť kľúča." -#: src/integritysetup.c:749 +#: src/integritysetup.c:755 msgid "Journal integrity algorithm must be specified if journal integrity key is used." msgstr "Algoritmus integrity denníka musí byť zadaný, keď sa používa kľúč pre integritu denníka." -#: src/integritysetup.c:753 +#: src/integritysetup.c:759 msgid "Both journal encryption key file and key size options must be specified." msgstr "Obe možnosti musia byť zadané, súbor s kľúčom na šifrovanie denníka aj veľkosť kľúča." -#: src/integritysetup.c:756 +#: src/integritysetup.c:762 msgid "Journal encryption algorithm must be specified if journal encryption key is used." msgstr "Algoritmus šifrovania denníka musí byť zadaný, keď sa používa kľúč na šifrovanie denníka." -#: src/integritysetup.c:760 +#: src/integritysetup.c:766 msgid "Recovery and bitmap mode options are mutually exclusive." msgstr "Možnosti režimu obnovenia a bitmapy sa vzájomne vylučujú." -#: src/integritysetup.c:767 +#: src/integritysetup.c:773 msgid "Journal options cannot be used in bitmap mode." msgstr "Možnosti denníka nemôžu byť použité v bitmapovom režime." -#: src/integritysetup.c:772 +#: src/integritysetup.c:778 msgid "Bitmap options can be used only in bitmap mode." msgstr "Možnosti bitmapy môžu byť použité len v bitmapovom režime." -#: src/integritysetup.c:778 +#: src/integritysetup.c:784 msgid "Inline mode cannot be combined with journal or bitmap options." msgstr "Režim inline nemôže byť kombinovaný s možnosťami režimu denníka alebo bitmapy." -#: src/integritysetup.c:782 +#: src/integritysetup.c:788 msgid "Inline mode cannot be combined with separate data device." msgstr "Režim inline nemôže byť kombinovaný s oddeleným zariadením s údajmi." @@ -3748,32 +3752,32 @@ msgstr "Zariadenie nie je v stave dešifrovania LUKS2. Konfliktná možnosť --d msgid "Device is in reencryption using datashift resilience. Requested --resilience option cannot be applied." msgstr "Zariadenie je v stave prešifrovania s odolnosťou posunu dát. Požadovaná možnosť --resilience nemôže byť aplikovaná." -#: src/utils_reencrypt.c:282 src/utils_reencrypt.c:1924 +#: src/utils_reencrypt.c:283 src/utils_reencrypt.c:1927 msgid "Cannot determine volume key size for LUKS without keyslots, please use --new-key-size option." msgstr "Nedá sa zistiť veľkosť kľúču zväzku pre LUKS bez miest pre kľúče, prosím použite možnosť --new-key-size." -#: src/utils_reencrypt.c:436 +#: src/utils_reencrypt.c:438 msgid "Device requires reencryption recovery. Run repair first." msgstr "Zariadenie požaduje obnovu prešifrovania. Spustite najprv opravu." -#: src/utils_reencrypt.c:450 +#: src/utils_reencrypt.c:452 #, c-format msgid "Device %s is already in LUKS2 reencryption. Do you wish to resume previously initialised operation?" msgstr "Zariadenie %s je už v stave LUKS2 prešifrovania. Želáte si obnoviť už predtým inicializovanú operáciu?" -#: src/utils_reencrypt.c:561 +#: src/utils_reencrypt.c:563 msgid "Legacy LUKS2 reencryption is no longer supported." msgstr "Zastaralé LUKS2 prešifrovanie už nie je podporované." -#: src/utils_reencrypt.c:566 +#: src/utils_reencrypt.c:568 msgid "Can not reencrypt LUKS2 device configured to use OPAL." msgstr "Nedá sa prešifrovať zariadenie LUKS2, ktoré je nakonfigurované na používanie OPAL." -#: src/utils_reencrypt.c:572 +#: src/utils_reencrypt.c:574 msgid "Reencryption of device with integrity profile is not supported." msgstr "Prešifrovanie zariadenia s profilom integrity nie je podporované." -#: src/utils_reencrypt.c:609 +#: src/utils_reencrypt.c:611 #, c-format msgid "" "Requested --sector-size % is incompatible with %s superblock\n" @@ -3782,110 +3786,110 @@ msgstr "" "Požadovaná --sector-size % nie je kompatibilná so superblokom %s\n" "(veľkosť bloku: % bajtov) rozpoznaným na zariadení %s." -#: src/utils_reencrypt.c:678 src/utils_reencrypt.c:2204 +#: src/utils_reencrypt.c:680 src/utils_reencrypt.c:2207 msgid "Encryption without detached header (--header) is not possible without data device size reduction (--reduce-device-size)." msgstr "Šifrovanie bez oddelenej hlavičky (--header) nie je možné bez zmenšenia veľkosti zariadenia s údajmi (--reduce-device-size)." -#: src/utils_reencrypt.c:687 +#: src/utils_reencrypt.c:689 msgid "Requested data offset must be less than or equal to half of --reduce-device-size parameter." msgstr "Vyžadované odsadenie údajov musí byť menšie alebo rovné polovici parametra --reduce-device-size." -#: src/utils_reencrypt.c:697 +#: src/utils_reencrypt.c:699 #, c-format msgid "Adjusting --reduce-device-size value to twice the --offset % (sectors).\n" msgstr "Upravuje sa hodnota --reduce-device-size na dvojnásobok --offset % (sektorov).\n" -#: src/utils_reencrypt.c:727 +#: src/utils_reencrypt.c:729 #, c-format msgid "Temporary header file %s already exists. Aborting." msgstr "Dočasný súbor hlavičky %s už existuje. Operácia sa ruší." -#: src/utils_reencrypt.c:729 src/utils_reencrypt.c:736 +#: src/utils_reencrypt.c:731 src/utils_reencrypt.c:738 #, c-format msgid "Cannot create temporary header file %s." msgstr "Nedá sa vytvoriť dočasný súbor s hlavičkou %s." -#: src/utils_reencrypt.c:761 +#: src/utils_reencrypt.c:763 msgid "LUKS2 metadata size is larger than data shift value." msgstr "Veľkosť metadát LUKS2 je väčšia ako hodnota posunu údajov." -#: src/utils_reencrypt.c:800 +#: src/utils_reencrypt.c:802 #, c-format msgid "Failed to place new header at head of device %s." msgstr "Zlyhalo umiestnenie novej hlavičky na začiatok zariadenia %s." -#: src/utils_reencrypt.c:813 +#: src/utils_reencrypt.c:815 #, c-format msgid "%s/%s is now active and ready for online encryption.\n" msgstr "%s/%s je teraz aktívne a pripravené na online prešifrovanie.\n" -#: src/utils_reencrypt.c:850 +#: src/utils_reencrypt.c:852 #, c-format msgid "Active device %s is not LUKS2." msgstr "Aktívne zariadenie %s nie je typu LUKS2." -#: src/utils_reencrypt.c:878 +#: src/utils_reencrypt.c:880 msgid "Restoring original LUKS2 header." msgstr "Obnovuje sa pôvodná hlavička LUKS2." -#: src/utils_reencrypt.c:886 +#: src/utils_reencrypt.c:888 msgid "Original LUKS2 header restore failed." msgstr "Obnova pôvodnej hlavičky LUKS2 zlyhala." -#: src/utils_reencrypt.c:918 +#: src/utils_reencrypt.c:920 #, c-format msgid "Header file %s does not exist. Do you want to initialize LUKS2 decryption of device %s and export LUKS2 header to file %s?" msgstr "Súbor s hlavičkou %s neexistuje. Chcete začať LUKS2 dešifrovanie zariadenia %s a exportovať hlavičku LUKS2 do súboru %s?" -#: src/utils_reencrypt.c:961 +#: src/utils_reencrypt.c:963 msgid "Failed to add read/write permissions to exported header file." msgstr "Zlyhalo priradenie oprávnení čítania/zápisu k exportovanému súboru s hlavičkou." -#: src/utils_reencrypt.c:1015 +#: src/utils_reencrypt.c:1017 #, c-format msgid "Reencryption initialization failed. Header backup is available in %s." msgstr "Inicializácia prešifrovania zlyhala. Záložná hlavička je dostupná v %s." -#: src/utils_reencrypt.c:1043 +#: src/utils_reencrypt.c:1045 msgid "LUKS2 decryption is supported with detached header device only (with data offset set to 0)." msgstr "Dešifrovanie LUKS2 je podporované iba s oddelenou hlavičkou (s odsadením údajov nastaveným na 0)." -#: src/utils_reencrypt.c:1487 +#: src/utils_reencrypt.c:1490 msgid "No token could unlock the device." msgstr "Žiaden token nemôže odomknúť zariadenie." -#: src/utils_reencrypt.c:1519 src/utils_reencrypt.c:1528 +#: src/utils_reencrypt.c:1522 src/utils_reencrypt.c:1531 msgid "Not enough free keyslots for reencryption." msgstr "Nie je dostatok voľných miest pre kľúč na prešifrovanie." -#: src/utils_reencrypt.c:1559 +#: src/utils_reencrypt.c:1562 msgid "Key file or keyring key description can be used only with --key-slot or with exactly one key slot active." msgstr "Súbor s kľúčom alebo kľúč zo zväzku kľúčov môže byť použitý iba s --key-slot alebo s práve jedným aktívnym miestom pre kľúč." -#: src/utils_reencrypt.c:1566 src/utils_reencrypt.c:1579 +#: src/utils_reencrypt.c:1569 src/utils_reencrypt.c:1582 #: src/utils_reencrypt_luks1.c:1092 src/utils_reencrypt_luks1.c:1103 #, c-format msgid "Enter passphrase for key slot %d: " msgstr "Zadajte heslo miesta pre kľúč %d: " -#: src/utils_reencrypt.c:1876 +#: src/utils_reencrypt.c:1879 #, c-format msgid "Switching data encryption cipher to %s.\n" msgstr "Mení sa algoritmus šifrovanie údajov na %s.\n" -#: src/utils_reencrypt.c:1977 src/utils_reencrypt.c:1998 +#: src/utils_reencrypt.c:1980 src/utils_reencrypt.c:2001 msgid "Use --force-no-keyslots to reencrypt device with active keyslots by passing volume keys directly." msgstr "Použite --force-no-keyslots na prešifrovanie zariadenia s aktívnymi miestami pre kľúč priamo odovzdaním kľúčov zväzku." -#: src/utils_reencrypt.c:1993 +#: src/utils_reencrypt.c:1996 msgid "Option --new-volume-key-file must be paired with --new-key-size" msgstr "Možnosť --new-volume-key-file musí byť použitá spolu s --new-key-size" -#: src/utils_reencrypt.c:2035 +#: src/utils_reencrypt.c:2038 msgid "No data segment parameters changed. Reencryption aborted." msgstr "Žiaden parameter údajových segmentov nezmenený. Prešifrovanie sa ruší." -#: src/utils_reencrypt.c:2072 +#: src/utils_reencrypt.c:2075 msgid "" "Encryption sector size increase on offline device is not supported.\n" "Activate the device first or use --force-offline-reencrypt option (dangerous!)." @@ -3893,7 +3897,7 @@ msgstr "" "Zväčšenie veľkosti šifrovaného sektora na offline zariadení nie je podporované.\n" "Aktivujte najprv zariadenie alebo použite možnosť --force-offline-reencrypt (nebezpečné!)." -#: src/utils_reencrypt.c:2114 src/utils_reencrypt_luks1.c:688 +#: src/utils_reencrypt.c:2117 src/utils_reencrypt_luks1.c:688 #: src/utils_reencrypt_luks1.c:759 msgid "" "\n" @@ -3902,58 +3906,58 @@ msgstr "" "\n" "Prešifrovanie prerušené." -#: src/utils_reencrypt.c:2119 +#: src/utils_reencrypt.c:2122 msgid "Resuming LUKS reencryption in forced offline mode.\n" msgstr "Obnovovanie LUKS prešifrovania vo vynútenom režime offline.\n" -#: src/utils_reencrypt.c:2142 +#: src/utils_reencrypt.c:2145 #, c-format msgid "Device %s contains broken LUKS metadata. Aborting operation." msgstr "Zariadenie %s obsahuje chybné LUKS metadáta. Operácia sa ruší." -#: src/utils_reencrypt.c:2158 src/utils_reencrypt.c:2180 +#: src/utils_reencrypt.c:2161 src/utils_reencrypt.c:2183 #, c-format msgid "Device %s is already LUKS device. Aborting operation." msgstr "Zariadenie %s už je LUKS zariadenie. Operácia sa ruší." -#: src/utils_reencrypt.c:2186 +#: src/utils_reencrypt.c:2189 #, c-format msgid "Device %s is already in LUKS reencryption. Aborting operation." msgstr "Zariadenie %s je už v stave prešifrovania LUKS. Operácia sa ruší." -#: src/utils_reencrypt.c:2269 +#: src/utils_reencrypt.c:2272 msgid "LUKS2 decryption requires --header option." msgstr "LUKS2 dešifrovanie požaduje možnosť --header." -#: src/utils_reencrypt.c:2317 +#: src/utils_reencrypt.c:2320 msgid "Command requires device as argument." msgstr "Príkaz vyžaduje zariadenie ako argument." -#: src/utils_reencrypt.c:2330 +#: src/utils_reencrypt.c:2333 #, c-format msgid "Conflicting versions. Device %s is LUKS1." msgstr "Konfliktné verzie. Zariadenie %s je LUKS1." -#: src/utils_reencrypt.c:2336 +#: src/utils_reencrypt.c:2339 #, c-format msgid "Conflicting versions. Device %s is in LUKS1 reencryption." msgstr "Konfliktné verzie. Zariadenie %s je v stave prešifrovania LUKS1." -#: src/utils_reencrypt.c:2342 +#: src/utils_reencrypt.c:2345 #, c-format msgid "Conflicting versions. Device %s is LUKS2." msgstr "Konfliktné verzie. Zariadenie %s je LUKS2." -#: src/utils_reencrypt.c:2348 +#: src/utils_reencrypt.c:2351 #, c-format msgid "Conflicting versions. Device %s is in LUKS2 reencryption." msgstr "Konfliktné verzie. Zariadenie %s je v stave prešifrovania LUKS2." -#: src/utils_reencrypt.c:2354 +#: src/utils_reencrypt.c:2357 msgid "LUKS2 reencryption already initialized. Aborting operation." msgstr "LUKS2 prešifrovanie je už inicializované. Operácia sa ruší." -#: src/utils_reencrypt.c:2361 +#: src/utils_reencrypt.c:2364 msgid "Device reencryption not in progress." msgstr "Opätovné šifrovanie zariadenia neprebieha." From be437475e12069ecbb3d8656c590431bf4905143 Mon Sep 17 00:00:00 2001 From: Yuri Chornoivan Date: Sun, 19 Jul 2026 19:51:04 +0200 Subject: [PATCH 189/244] po: update uk.po (from translationproject.org) --- po/uk.po | 631 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 316 insertions(+), 315 deletions(-) diff --git a/po/uk.po b/po/uk.po index a9fe8f905..7f7f8845f 100644 --- a/po/uk.po +++ b/po/uk.po @@ -5,10 +5,10 @@ # Yuri Chornoivan , 2012-2023, 2024, 2025, 2026. msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.7-rc1\n" +"Project-Id-Version: cryptsetup 2.8.7-rc2\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2026-06-29 21:30+0200\n" -"PO-Revision-Date: 2026-06-30 13:31+0300\n" +"POT-Creation-Date: 2026-07-09 10:46+0200\n" +"PO-Revision-Date: 2026-07-11 17:13+0300\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" "Language: uk\n" @@ -200,10 +200,10 @@ msgid "Failed to rollback LUKS2 metadata in memory." msgstr "Не вдалося відкотити метадані LUKS2 у пам'яті." #: lib/setup.c:896 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 -#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1779 -#: src/cryptsetup.c:1963 src/cryptsetup.c:2018 src/cryptsetup.c:2216 -#: src/cryptsetup.c:2361 src/cryptsetup.c:2639 src/cryptsetup.c:2952 -#: src/cryptsetup.c:3020 src/utils_reencrypt.c:2281 +#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 +#: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 +#: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2954 +#: src/cryptsetup.c:3022 src/utils_reencrypt.c:2284 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." @@ -247,7 +247,7 @@ msgid "Detached metadata device is not supported for this crypt type." msgstr "Підтримки пристрою від'єднаних метаданих для цього типу шифрування не передбачено." #: lib/setup.c:1642 lib/setup.c:1890 lib/luks2/luks2_reencrypt.c:3035 -#: src/cryptsetup.c:1491 src/cryptsetup.c:3759 +#: src/cryptsetup.c:1492 src/cryptsetup.c:3761 msgid "Unsupported encryption sector size." msgstr "Непідтримуваний розмір сектора шифрування." @@ -569,14 +569,14 @@ msgstr "Не вдалося скасувати прив'язку ключа то msgid "Failed to link volume key in user defined keyring." msgstr "Не вдалося пов'язати ключ тому із визначеним користувачем сховищем ключів." -#: lib/setup.c:4556 src/cryptsetup.c:2720 +#: lib/setup.c:4556 src/cryptsetup.c:2722 #, c-format msgid "Volume %s is not suspended." msgstr "Том %s не приспано." -#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1855 -#: src/cryptsetup.c:2259 src/cryptsetup.c:2277 src/utils_reencrypt.c:305 -#: src/utils_reencrypt.c:1966 +#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1856 +#: src/cryptsetup.c:2260 src/cryptsetup.c:2278 src/utils_reencrypt.c:306 +#: src/utils_reencrypt.c:1969 msgid "Volume key does not match the volume." msgstr "Ключ тому не відповідає тому." @@ -589,8 +589,8 @@ msgstr "Не вдалося зарезервувати новий слот кл msgid "Key slot %d is invalid." msgstr "Слот ключа %d є некоректним." -#: lib/setup.c:4925 src/cryptsetup.c:1976 src/cryptsetup.c:2436 -#: src/cryptsetup.c:3120 src/cryptsetup.c:3180 +#: lib/setup.c:4925 src/cryptsetup.c:1977 src/cryptsetup.c:2437 +#: src/cryptsetup.c:3122 src/cryptsetup.c:3182 #, c-format msgid "Keyslot %d is not active." msgstr "Слот ключа %d не є активним." @@ -787,7 +787,7 @@ msgid "Cannot read requested amount of data." msgstr "Не вдалося прочитати бажаний об’єм даних." #: lib/utils_device.c:207 lib/utils_storage_wrappers.c:99 -#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2254 +#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2257 #, c-format msgid "Device %s does not exist or access denied." msgstr "Пристрою %s не існує або доступ до цього пристрою заборонено." @@ -1130,7 +1130,7 @@ msgstr "Режим шифрування LUKS %s є некоректним." msgid "LUKS hash %s is invalid." msgstr "Хеш-сума LUKS %s є некоректною." -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1366 +#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 msgid "No known problems detected for LUKS header." msgstr "У заголовку LUKS не виявлено жодних проблем." @@ -1150,7 +1150,7 @@ msgstr "Відступ даних для заголовка LUKS має бути #: lib/luks1/keymanage.c:761 lib/luks1/keymanage.c:832 #: lib/luks2/luks2_json_format.c:231 lib/luks2/luks2_json_metadata.c:1261 -#: src/utils_reencrypt.c:701 +#: src/utils_reencrypt.c:703 msgid "Wrong LUKS UUID format provided." msgstr "Вказано UUID LUKS у помилковому форматі." @@ -1675,7 +1675,7 @@ msgstr "Не вдалося встановити сегмент dm-crypt." msgid "Failed to set dm-linear segment." msgstr "Не вдалося встановити сегмент dm-linear." -#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:578 +#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:580 msgid "No known cipher specification pattern detected in LUKS2 header." msgstr "Не виявлено жодного відомого зразка специфікації шифрування у заголовку LUKS." @@ -2138,8 +2138,8 @@ msgstr "Параметри шифрування слоту ключів можн msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encryption." msgstr "Параметри шифрування слоту ключів є несумісними із шифруванням слотів ключів LUKS2." -#: src/cryptsetup.c:150 src/cryptsetup.c:1179 src/cryptsetup.c:1544 -#: src/utils_reencrypt.c:1887 src/utils_reencrypt_luks1.c:502 +#: src/cryptsetup.c:150 src/cryptsetup.c:1180 src/cryptsetup.c:1545 +#: src/utils_reencrypt.c:1890 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." msgstr "Не виявлено жодного відомого зразка специфікації шифрування." @@ -2166,8 +2166,8 @@ msgstr "Попередження: параметр --hash у простому р msgid "WARNING: The --keyfile-size option is being ignored, the read size is the same as the encryption key size.\n" msgstr "Попередження: параметр --keyfile-size проігноровано, розмір прочитаних даних збігається із розміром ключа шифрування.\n" -#: src/cryptsetup.c:226 src/cryptsetup.c:1374 src/cryptsetup.c:1597 -#: src/integritysetup.c:188 src/utils_reencrypt.c:2138 +#: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 +#: src/integritysetup.c:189 src/utils_reencrypt.c:2141 #, c-format msgid "Blkid scan failed for %s." msgstr "Помилка сканування Blkid для %s." @@ -2177,11 +2177,11 @@ msgstr "Помилка сканування Blkid для %s." msgid "Detected device signature(s) on %s. Proceeding further may damage existing data." msgstr "На %s виявлено підписи пристроїв. Подальша обробка може пошкодити наявні дані." -#: src/cryptsetup.c:238 src/cryptsetup.c:1260 src/cryptsetup.c:1308 -#: src/cryptsetup.c:1381 src/cryptsetup.c:1521 src/cryptsetup.c:1609 -#: src/cryptsetup.c:2494 src/cryptsetup.c:2923 src/integritysetup.c:178 -#: src/utils_reencrypt.c:111 src/utils_reencrypt.c:457 -#: src/utils_reencrypt.c:925 +#: src/cryptsetup.c:238 src/cryptsetup.c:1261 src/cryptsetup.c:1309 +#: src/cryptsetup.c:1382 src/cryptsetup.c:1522 src/cryptsetup.c:1610 +#: src/cryptsetup.c:2495 src/cryptsetup.c:2925 src/integritysetup.c:179 +#: src/utils_reencrypt.c:111 src/utils_reencrypt.c:459 +#: src/utils_reencrypt.c:927 msgid "Operation aborted.\n" msgstr "Дію перервано.\n" @@ -2189,36 +2189,36 @@ msgstr "Дію перервано.\n" msgid "Option --key-file is required." msgstr "Слід вказати параметр --key-file." -#: src/cryptsetup.c:377 +#: src/cryptsetup.c:378 msgid "Enter VeraCrypt PIM: " msgstr "Введіть PIM VeraCrypt: " -#: src/cryptsetup.c:386 +#: src/cryptsetup.c:387 msgid "Invalid PIM value: parse error." msgstr "Некоректне значення PIM: помилка обробки." -#: src/cryptsetup.c:389 +#: src/cryptsetup.c:390 msgid "Invalid PIM value: 0." msgstr "Некоректне значення PIM: 0." -#: src/cryptsetup.c:392 +#: src/cryptsetup.c:393 msgid "Invalid PIM value: outside of range." msgstr "Некоректне значення PIM: поза межами діапазону." -#: src/cryptsetup.c:415 +#: src/cryptsetup.c:416 msgid "No device header detected with this passphrase." msgstr "Для цього пароля не виявлено заголовка пристрою." -#: src/cryptsetup.c:492 src/cryptsetup.c:677 +#: src/cryptsetup.c:493 src/cryptsetup.c:678 #, c-format msgid "Device %s is not a valid BITLK device." msgstr "Пристрій %s не є коректним пристроєм BITLK." -#: src/cryptsetup.c:500 +#: src/cryptsetup.c:501 msgid "Cannot determine volume key size for BITLK, please use --key-size option." msgstr "Неможливо визначити розмір ключа тому для BITLK. Будь ласка, скористайтеся параметром --key-size." -#: src/cryptsetup.c:546 +#: src/cryptsetup.c:547 msgid "" "Header dump with volume key is sensitive information\n" "which allows access to encrypted partition without passphrase.\n" @@ -2229,7 +2229,7 @@ msgstr "" "без пароля. Цей дамп слід зберігати у зашифрованому форматі\n" "у безпечному місці." -#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2519 +#: src/cryptsetup.c:614 src/cryptsetup.c:700 src/cryptsetup.c:2520 msgid "" "The header dump with volume key is sensitive information\n" "that allows access to encrypted partition without a passphrase.\n" @@ -2240,88 +2240,88 @@ msgstr "" "без пароля. Цей дамп слід зберігати у зашифрованому форматі\n" "у безпечному місці." -#: src/cryptsetup.c:754 src/cryptsetup.c:786 +#: src/cryptsetup.c:755 src/cryptsetup.c:787 #, c-format msgid "Device %s is not a valid FVAULT2 device." msgstr "Пристрій %s не є коректним пристроєм FVAULT2." -#: src/cryptsetup.c:794 +#: src/cryptsetup.c:795 msgid "Cannot determine volume key size for FVAULT2, please use --key-size option." msgstr "Неможливо визначити розмір ключа тому для FVAULT2. Будь ласка, скористайтеся параметром --key-size." -#: src/cryptsetup.c:848 src/veritysetup.c:317 src/integritysetup.c:416 +#: src/cryptsetup.c:849 src/veritysetup.c:317 src/integritysetup.c:422 #, c-format msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "Пристрій %s усе ще є активним, його заплановано для відкладеного вилучення.\n" -#: src/cryptsetup.c:881 src/cryptsetup.c:1807 src/cryptsetup.c:2081 -#: src/cryptsetup.c:2228 src/cryptsetup.c:2647 src/cryptsetup.c:2728 -#: src/cryptsetup.c:3261 +#: src/cryptsetup.c:882 src/cryptsetup.c:1808 src/cryptsetup.c:2082 +#: src/cryptsetup.c:2229 src/cryptsetup.c:2648 src/cryptsetup.c:2730 +#: src/cryptsetup.c:3263 #, c-format msgid "Failed to set external tokens path %s." msgstr "Не вдалося встановити шлях до зовнішніх жетонів %s." -#: src/cryptsetup.c:890 +#: src/cryptsetup.c:891 msgid "Resize of active device requires volume key in keyring but --disable-keyring option is set." msgstr "Зміна розмірів активного пристрою потребує наявності ключа тому у сховищі ключів, але вказано параметр --disable-keyring." -#: src/cryptsetup.c:1057 +#: src/cryptsetup.c:1058 msgid "Benchmark interrupted." msgstr "Тестування перервано." -#: src/cryptsetup.c:1078 +#: src/cryptsetup.c:1079 #, c-format msgid "PBKDF2-%-9s N/A\n" msgstr "PBKDF2-%-9s н/д\n" -#: src/cryptsetup.c:1080 +#: src/cryptsetup.c:1081 #, c-format msgid "PBKDF2-%-9s %7u iterations per second for %zu-bit key\n" msgstr "PBKDF2-%-9s %7u ітерацій за секунду для %zu-бітового ключа\n" -#: src/cryptsetup.c:1094 +#: src/cryptsetup.c:1095 #, c-format msgid "%-10s N/A\n" msgstr "%-10s н/д\n" -#: src/cryptsetup.c:1096 +#: src/cryptsetup.c:1097 #, c-format msgid "%-10s %4u iterations, %5u memory, %1u parallel threads (CPUs) for %zu-bit key (requested %u ms time)\n" msgstr "%-10s %4u ітерацій, пам'ять: %5u, %1u паралельних потоків (процесорів) для %zu-бітового ключа (запит на %u мс часу)\n" -#: src/cryptsetup.c:1120 +#: src/cryptsetup.c:1121 msgid "Result of benchmark is not reliable." msgstr "Результат тестування є ненадійним." -#: src/cryptsetup.c:1171 +#: src/cryptsetup.c:1172 msgid "# Tests are approximate using memory only (no storage IO).\n" msgstr "# Наближені значення під час перевірки визначаються лише за допомогою оперативної пам’яті (без запису на диск).\n" #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1196 +#: src/cryptsetup.c:1197 #, c-format msgid "#%*s Algorithm | Key | Encryption | Decryption\n" msgstr "№%*s Алгоритм | Ключ | Шифрування | Розшифрування\n" -#: src/cryptsetup.c:1204 +#: src/cryptsetup.c:1205 #, c-format msgid "Cipher %s (with %i bits key) is not available." msgstr "Шифрування %s (розмір ключа — %i бітів) є недоступним." #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1225 +#: src/cryptsetup.c:1226 msgid "# Algorithm | Key | Encryption | Decryption\n" msgstr "№ Алгоритм | Ключ | Шифрування | Розшифрування\n" -#: src/cryptsetup.c:1238 +#: src/cryptsetup.c:1239 msgid "N/A" msgstr "н/д" -#: src/cryptsetup.c:1241 +#: src/cryptsetup.c:1242 msgid "# Cipher speed test is not available.\n" msgstr "# Перевірка швидкості шифрування недоступна.\n" -#: src/cryptsetup.c:1257 +#: src/cryptsetup.c:1258 msgid "" "Unprotected LUKS2 reencryption metadata detected. Please verify the reencryption operation is desirable (see luksDump output)\n" "and continue (upgrade metadata) only if you acknowledge the operation as genuine." @@ -2329,27 +2329,27 @@ msgstr "" "Виявлено незахищені метадані повторного шифрування LUKS2. Будь ласка, перевірте, чи бажаною є дія з повторного шифрування\n" "(див. виведення luksDump), і продовжуйте (оновлення метаданих), лише якщо впевнені, що дія є бажаною." -#: src/cryptsetup.c:1263 +#: src/cryptsetup.c:1264 msgid "Enter passphrase to protect and upgrade reencryption metadata: " msgstr "Вкажіть пароль для захисту і оновлення метаданих повторного шифрування: " -#: src/cryptsetup.c:1307 +#: src/cryptsetup.c:1308 msgid "Really proceed with LUKS2 reencryption recovery?" msgstr "Ви справді хочете продовжити процедуру відновлення повторного шифрування LUKS2?" -#: src/cryptsetup.c:1316 +#: src/cryptsetup.c:1317 msgid "Enter passphrase to verify reencryption metadata digest: " msgstr "Вкажіть пароль для перевірки контрольної суми метаданих повторного шифрування: " -#: src/cryptsetup.c:1318 +#: src/cryptsetup.c:1319 msgid "Enter passphrase for reencryption recovery: " msgstr "Вкажіть пароль для відновлення повторного шифрування: " -#: src/cryptsetup.c:1380 +#: src/cryptsetup.c:1381 msgid "Really try to repair LUKS device header?" msgstr "Спробувати відновити заголовок пристрою LUKS?" -#: src/cryptsetup.c:1408 src/integritysetup.c:76 src/integritysetup.c:244 +#: src/cryptsetup.c:1409 src/integritysetup.c:76 src/integritysetup.c:246 msgid "" "\n" "Wipe interrupted." @@ -2357,7 +2357,7 @@ msgstr "" "\n" "Витирання перервано." -#: src/cryptsetup.c:1413 src/integritysetup.c:81 src/integritysetup.c:289 +#: src/cryptsetup.c:1414 src/integritysetup.c:81 src/integritysetup.c:291 msgid "" "Wiping device to initialize integrity checksum.\n" "You can interrupt this by pressing CTRL+c (rest of not wiped device will contain invalid checksum).\n" @@ -2365,167 +2365,167 @@ msgstr "" "Витираємо пристрій для ініціалізації контрольних сум для цілісності.\n" "Ви можете перервати цей процес натисканням комбінації клавіш CTRL+C (решта невитертого пристрою міститиме некоректну контрольну суму).\n" -#: src/cryptsetup.c:1435 src/integritysetup.c:103 +#: src/cryptsetup.c:1436 src/integritysetup.c:103 #, c-format msgid "Cannot deactivate temporary device %s." msgstr "Не можна скасувати активацію тимчасового пристрою %s." -#: src/cryptsetup.c:1483 +#: src/cryptsetup.c:1484 msgid "OPAL hw-only encryption does not support --cipher and --key-size, options ignored." msgstr "У апаратному шифрування OPAL не передбачено підтримки параметрів --cipher і --key-size, параметри проігноровано." -#: src/cryptsetup.c:1496 +#: src/cryptsetup.c:1497 msgid "Integrity option can be used only for LUKS2 format." msgstr "Параметр цілісності може бути використано лише для формату LUKS2." -#: src/cryptsetup.c:1501 src/cryptsetup.c:1581 +#: src/cryptsetup.c:1502 src/cryptsetup.c:1582 msgid "Unsupported LUKS2 metadata size options." msgstr "Непідтримувані параметри розміру метаданих LUKS2." -#: src/cryptsetup.c:1506 +#: src/cryptsetup.c:1507 msgid "OPAL is supported only for LUKS2 format." msgstr "Підтримку OPAL передбачено лише для формату LUKS2." -#: src/cryptsetup.c:1511 +#: src/cryptsetup.c:1512 msgid "Inline hw tags are supported only for LUKS2 format." msgstr "Підтримку вбудованих апаратних міток передбачено лише для формату LUKS2." -#: src/cryptsetup.c:1520 +#: src/cryptsetup.c:1521 msgid "Header file does not exist, do you want to create it?" msgstr "Файла заголовка не існує. Хочете його створити?" -#: src/cryptsetup.c:1528 +#: src/cryptsetup.c:1529 #, c-format msgid "Cannot create header file %s." msgstr "Не вдалося створити файл заголовка %s." -#: src/cryptsetup.c:1554 src/integritysetup.c:126 src/integritysetup.c:141 -#: src/integritysetup.c:150 src/integritysetup.c:328 src/integritysetup.c:336 -#: src/integritysetup.c:346 +#: src/cryptsetup.c:1555 src/integritysetup.c:127 src/integritysetup.c:142 +#: src/integritysetup.c:151 src/integritysetup.c:330 src/integritysetup.c:338 +#: src/integritysetup.c:348 msgid "No known integrity specification pattern detected." msgstr "Не виявлено жодного відомого зразка специфікації цілісності." -#: src/cryptsetup.c:1556 +#: src/cryptsetup.c:1557 msgid "Cannot use specified integrity key size." msgstr "Не можна використовувати вказаний розмір ключа цілісності." -#: src/cryptsetup.c:1574 +#: src/cryptsetup.c:1575 #, c-format msgid "Cannot use %s as on-disk header." msgstr "Не можна використовувати %s як заголовок на диску." -#: src/cryptsetup.c:1603 src/integritysetup.c:172 +#: src/cryptsetup.c:1604 src/integritysetup.c:173 #, c-format msgid "This will overwrite data on %s irrevocably." msgstr "Дані на %s буде перезаписано без можливості відновлення." -#: src/cryptsetup.c:1640 +#: src/cryptsetup.c:1641 msgid "OPAL Admin password cannot be empty." msgstr "Пароль адміністратора OPAL не може бути порожнім." -#: src/cryptsetup.c:1654 src/cryptsetup.c:2098 src/cryptsetup.c:2241 -#: src/cryptsetup.c:2376 src/cryptsetup.c:2442 src/utils_reencrypt_luks1.c:428 +#: src/cryptsetup.c:1655 src/cryptsetup.c:2099 src/cryptsetup.c:2242 +#: src/cryptsetup.c:2377 src/cryptsetup.c:2443 src/utils_reencrypt_luks1.c:428 msgid "Failed to set pbkdf parameters." msgstr "Не вдалося встановити параметри pbkdf." -#: src/cryptsetup.c:1785 +#: src/cryptsetup.c:1786 msgid "Reduced data offset is allowed only for detached LUKS header." msgstr "Зменшений відступ даних можна використовувати лише для від’єднаних заголовків LUKS." -#: src/cryptsetup.c:1792 +#: src/cryptsetup.c:1793 #, c-format msgid "LUKS file container %s is too small for activation, there is no remaining space for data." msgstr "Контейнер файлів LUKS %s є надто малим для активації, на ньому не лишиться місця для даних." -#: src/cryptsetup.c:1834 src/cryptsetup.c:2247 src/utils_reencrypt.c:277 -#: src/utils_reencrypt.c:369 src/utils_reencrypt.c:1907 +#: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:278 +#: src/utils_reencrypt.c:371 src/utils_reencrypt.c:1910 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "Неможливо визначити розмір ключа тому для LUKS без слотів ключів. Будь ласка, скористайтеся параметром --key-size." -#: src/cryptsetup.c:1853 src/utils_reencrypt.c:303 +#: src/cryptsetup.c:1854 src/utils_reencrypt.c:304 msgid "Device requires two volume keys." msgstr "Для пристрою потрібні два ключі тому." -#: src/cryptsetup.c:1888 +#: src/cryptsetup.c:1889 msgid "Some specified activation parameters were ignored with OPAL hw-only encryption." msgstr "Деякі із вказаних параметрів активації було проігноровано через апаратне шифрування OPAL." -#: src/cryptsetup.c:1893 +#: src/cryptsetup.c:1894 msgid "Device activated but cannot make flags persistent." msgstr "Пристрій задіяно, але не вдалося зробити прапорці сталими." -#: src/cryptsetup.c:1973 src/cryptsetup.c:2041 +#: src/cryptsetup.c:1974 src/cryptsetup.c:2042 #, c-format msgid "Keyslot %d is selected for deletion." msgstr "Слот ключа %d позначено для вилучення." -#: src/cryptsetup.c:1985 src/cryptsetup.c:2045 +#: src/cryptsetup.c:1986 src/cryptsetup.c:2046 msgid "This is the last keyslot. Device will become unusable after purging this key." msgstr "Це останній слот ключа. Пристрій стане непридатним для використання після спорожнення цього ключа." -#: src/cryptsetup.c:1986 +#: src/cryptsetup.c:1987 msgid "Enter any remaining passphrase: " msgstr "Введіть будь-який інший пароль: " -#: src/cryptsetup.c:1987 src/cryptsetup.c:2047 +#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 msgid "Operation aborted, the keyslot was NOT wiped.\n" msgstr "Дію перервано, слот ключів НЕ витерто.\n" -#: src/cryptsetup.c:2023 +#: src/cryptsetup.c:2024 msgid "Enter passphrase to be deleted: " msgstr "Введіть пароль, який слід вилучити: " -#: src/cryptsetup.c:2073 src/cryptsetup.c:2425 src/cryptsetup.c:3085 -#: src/cryptsetup.c:3252 +#: src/cryptsetup.c:2074 src/cryptsetup.c:2426 src/cryptsetup.c:3087 +#: src/cryptsetup.c:3254 #, c-format msgid "Device %s is not a valid LUKS2 device." msgstr "Пристрій %s не є коректним пристроєм LUKS2." -#: src/cryptsetup.c:2112 src/cryptsetup.c:2311 +#: src/cryptsetup.c:2113 src/cryptsetup.c:2312 msgid "Enter new passphrase for key slot: " msgstr "Введіть новий пароль для слота ключа: " -#: src/cryptsetup.c:2146 src/utils_luks.c:342 +#: src/cryptsetup.c:2147 src/utils_luks.c:342 #, c-format msgid "Enter token PIN: " msgstr "Введіть пінкод жетона: " -#: src/cryptsetup.c:2148 src/utils_luks.c:344 +#: src/cryptsetup.c:2149 src/utils_luks.c:344 #, c-format msgid "Enter token %d PIN: " msgstr "Введіть пінкод жетона %d: " -#: src/cryptsetup.c:2207 +#: src/cryptsetup.c:2208 msgid "WARNING: The --key-slot parameter is used for new keyslot number.\n" msgstr "Попередження: параметр --key-slot використано для нового числа слоту ключа.\n" -#: src/cryptsetup.c:2284 src/utils_reencrypt_luks1.c:1094 +#: src/cryptsetup.c:2285 src/utils_reencrypt_luks1.c:1094 #, c-format msgid "Enter any existing passphrase: " msgstr "Введіть будь-який пароль: " -#: src/cryptsetup.c:2380 +#: src/cryptsetup.c:2381 msgid "Enter passphrase to be changed: " msgstr "Введіть пароль, який слід змінити: " -#: src/cryptsetup.c:2396 src/utils_reencrypt_luks1.c:1080 +#: src/cryptsetup.c:2397 src/utils_reencrypt_luks1.c:1080 msgid "Enter new passphrase: " msgstr "Введіть новий пароль: " -#: src/cryptsetup.c:2446 +#: src/cryptsetup.c:2447 msgid "Enter passphrase for keyslot to be converted: " msgstr "Вкажіть пароль для слоту ключа, який буде перетворено: " -#: src/cryptsetup.c:2470 +#: src/cryptsetup.c:2471 msgid "Only one device argument for isLuks operation is supported." msgstr "У команді isLuks можна використовувати лише один аргумент назви пристрою." -#: src/cryptsetup.c:2575 +#: src/cryptsetup.c:2576 #, c-format msgid "Keyslot %d does not contain unbound key." msgstr "Слот ключа %d не містить непов'язаного ключа." -#: src/cryptsetup.c:2580 +#: src/cryptsetup.c:2581 msgid "" "The header dump with unbound key is sensitive information.\n" "This dump should be stored encrypted in a safe place." @@ -2533,52 +2533,52 @@ msgstr "" "Дамп заголовка з непов'язаним ключем є конфіденційними даними.\n" "Цей дамп слід зберігати у зашифрованому форматі у безпечному місці." -#: src/cryptsetup.c:2675 src/cryptsetup.c:2711 +#: src/cryptsetup.c:2676 src/cryptsetup.c:2713 #, c-format msgid "%s is not active %s device name." msgstr "%s не є назвою активного пристрою %s." -#: src/cryptsetup.c:2706 +#: src/cryptsetup.c:2708 #, c-format msgid "%s is not active LUKS device name or header is missing." msgstr "%s не є назвою активного пристрою LUKS або пропущено заголовок." -#: src/cryptsetup.c:2783 src/cryptsetup.c:2802 +#: src/cryptsetup.c:2785 src/cryptsetup.c:2804 msgid "Option --header-backup-file is required." msgstr "Слід вказати параметр --header-backup-file." -#: src/cryptsetup.c:2833 +#: src/cryptsetup.c:2835 #, c-format msgid "%s is not cryptsetup managed device." msgstr "%s не є керованим cryptsetup пристроєм." -#: src/cryptsetup.c:2844 +#: src/cryptsetup.c:2846 #, c-format msgid "Refresh is not supported for device type %s" msgstr "Підтримки дії з оновлення для пристрою типу %s не передбачено." -#: src/cryptsetup.c:2894 +#: src/cryptsetup.c:2896 #, c-format msgid "Unrecognized metadata device type %s." msgstr "Нерозпізнаний тип пристрою метаданих, %s." -#: src/cryptsetup.c:2896 +#: src/cryptsetup.c:2898 msgid "Command requires device and mapped name as arguments." msgstr "Аргументами команди мають бути назва пристрою та призначена до нього назва." -#: src/cryptsetup.c:2914 +#: src/cryptsetup.c:2916 msgid "Enter OPAL PSID: " msgstr "Введіть PSID OPAL: " -#: src/cryptsetup.c:2914 +#: src/cryptsetup.c:2916 msgid "Enter OPAL Admin password: " msgstr "Введіть пароль адміністратора OPAL: " -#: src/cryptsetup.c:2922 +#: src/cryptsetup.c:2924 msgid "WARNING: WHOLE disk will be factory reset and all data will be lost! Continue?" msgstr "УВАГА: УВЕСЬ диск буде повернуто до початкових параметрів, а усі дані на ньому буде втрачено! Виконати дію?" -#: src/cryptsetup.c:2965 +#: src/cryptsetup.c:2967 #, c-format msgid "" "This operation will erase all keyslots on device %s.\n" @@ -2587,363 +2587,363 @@ msgstr "" "У результаті виконання цієї операції буде витерто усі слоти ключів на пристрої %s.\n" "Після виконання цієї дії пристроєм не можна буде скористатися." -#: src/cryptsetup.c:2972 +#: src/cryptsetup.c:2974 msgid "Operation aborted, keyslots were NOT wiped.\n" msgstr "Дію перервано, слоти ключів НЕ витерто.\n" -#: src/cryptsetup.c:3011 +#: src/cryptsetup.c:3013 msgid "Invalid LUKS type, only luks1 and luks2 are supported." msgstr "Некоректний тип LUKS. Передбачено підтримку лише luks1 і luks2." -#: src/cryptsetup.c:3027 +#: src/cryptsetup.c:3029 #, c-format msgid "Device is already %s type." msgstr "Пристрій вже належить до типу %s." -#: src/cryptsetup.c:3034 +#: src/cryptsetup.c:3036 #, c-format msgid "This operation will convert %s to %s format.\n" msgstr "Ця дія перетворить %s до формату %s.\n" -#: src/cryptsetup.c:3037 +#: src/cryptsetup.c:3039 msgid "Operation aborted, device was NOT converted.\n" msgstr "Дію перервано, дані пристрою НЕ перетворено.\n" -#: src/cryptsetup.c:3077 +#: src/cryptsetup.c:3079 msgid "Option --priority, --label or --subsystem is missing." msgstr "Пропущено параметр --priority, --label або --subsystem." -#: src/cryptsetup.c:3111 src/cryptsetup.c:3151 src/cryptsetup.c:3171 +#: src/cryptsetup.c:3113 src/cryptsetup.c:3153 src/cryptsetup.c:3173 #, c-format msgid "Token %d is invalid." msgstr "Жетон %d є некоректним." -#: src/cryptsetup.c:3114 src/cryptsetup.c:3174 +#: src/cryptsetup.c:3116 src/cryptsetup.c:3176 #, c-format msgid "Token %d in use." msgstr "Жетон %d використовується." -#: src/cryptsetup.c:3126 +#: src/cryptsetup.c:3128 #, c-format msgid "Failed to add luks2-keyring token %d." msgstr "Не вдалося додати жетон %d зі сховища ключів luks2." -#: src/cryptsetup.c:3137 src/cryptsetup.c:3200 +#: src/cryptsetup.c:3139 src/cryptsetup.c:3202 #, c-format msgid "Failed to assign token %d to keyslot %d." msgstr "Не вдалося прив'язати жетон %d до слоту ключа %d." -#: src/cryptsetup.c:3154 +#: src/cryptsetup.c:3156 #, c-format msgid "Token %d is not in use." msgstr "Жетон %d не використовується." -#: src/cryptsetup.c:3191 +#: src/cryptsetup.c:3193 msgid "Failed to import token from file." msgstr "Не вдалося імпортувати жетон з файла." -#: src/cryptsetup.c:3216 +#: src/cryptsetup.c:3218 #, c-format msgid "Failed to get token %d for export." msgstr "Не вдалося отримати жетон %d для експортування." -#: src/cryptsetup.c:3229 +#: src/cryptsetup.c:3231 #, c-format msgid "Token %d is not assigned to keyslot %d." msgstr "Жетон %d не пов'язано зі слотом ключа %d." -#: src/cryptsetup.c:3231 src/cryptsetup.c:3238 +#: src/cryptsetup.c:3233 src/cryptsetup.c:3240 #, c-format msgid "Failed to unassign token %d from keyslot %d." msgstr "Не вдалося відв'язати жетон %d від слоту ключа %d." -#: src/cryptsetup.c:3297 +#: src/cryptsetup.c:3299 msgid "Option --tcrypt-hidden, --tcrypt-system or --tcrypt-backup is supported only for TCRYPT device." msgstr "Підтримку параметрів --tcrypt-hidden, --tcrypt-system і --tcrypt-backup передбачено лише для пристроїв TCRYPT." -#: src/cryptsetup.c:3300 +#: src/cryptsetup.c:3302 msgid "Option --veracrypt or --disable-veracrypt is supported only for TCRYPT device type." msgstr "Підтримку параметра --veracrypt або --disable-veracrypt передбачено лише для пристроїв TCRYPT." -#: src/cryptsetup.c:3303 +#: src/cryptsetup.c:3305 msgid "Option --veracrypt-pim is supported only for VeraCrypt compatible devices." msgstr "Параметр --veracrypt-pim можна використовувати лише для сумісних із VeraCrypt пристроїв." -#: src/cryptsetup.c:3307 +#: src/cryptsetup.c:3309 msgid "Option --veracrypt-query-pim is supported only for VeraCrypt compatible devices." msgstr "Параметр --veracrypt-query-pim можна використовувати лише для сумісних із VeraCrypt пристроїв." -#: src/cryptsetup.c:3309 +#: src/cryptsetup.c:3311 msgid "The options --veracrypt-pim and --veracrypt-query-pim are mutually exclusive." msgstr "Не можна поєднувати параметри --veracrypt-pim і --veracrypt-query-pim." -#: src/cryptsetup.c:3318 +#: src/cryptsetup.c:3320 msgid "Option --persistent is not allowed with --test-passphrase." msgstr "Параметр --persistent не можна використовувати разом із --test-passphrase." -#: src/cryptsetup.c:3321 +#: src/cryptsetup.c:3323 msgid "Options --refresh and --test-passphrase are mutually exclusive." msgstr "Не можна поєднувати параметри --refresh і --test-passphrase." -#: src/cryptsetup.c:3324 +#: src/cryptsetup.c:3326 msgid "Option --shared is allowed only for open of plain device." msgstr "Параметр --shared можна використовувати лише для відкриття незашифрованого пристрою." -#: src/cryptsetup.c:3327 +#: src/cryptsetup.c:3329 msgid "Option --skip is supported only for open of plain and loopaes devices." msgstr "Підтримку параметра --skip передбачено лише для відкриття незашифрованих пристроїв та пристроїв loopaes." -#: src/cryptsetup.c:3330 +#: src/cryptsetup.c:3332 msgid "Option --offset with open action is only supported for plain and loopaes devices." msgstr "Підтримку параметра --offset разом із дією з відкриття передбачено лише для незашифрованих пристроїв та пристроїв loopaes." -#: src/cryptsetup.c:3333 +#: src/cryptsetup.c:3335 msgid "Option --tcrypt-hidden cannot be combined with --allow-discards." msgstr "Параметр --tcrypt-hidden не можна поєднувати з --allow-discards." -#: src/cryptsetup.c:3337 +#: src/cryptsetup.c:3339 msgid "Sector size option with open action is supported only for plain devices." msgstr "Підтримку параметра розміру сектора разом із дією з відкриття передбачено лише для незашифрованих пристроїв." -#: src/cryptsetup.c:3341 +#: src/cryptsetup.c:3343 msgid "Large IV sectors option is supported only for opening plain type device with sector size larger than 512 bytes." msgstr "Підтримку можливості використання великих секторів IV передбачено лише для відкриття пристроїв простого типу з розміром сектора, який перевищує 512 байтів." -#: src/cryptsetup.c:3346 +#: src/cryptsetup.c:3348 msgid "Option --test-passphrase is allowed only for open of LUKS, TCRYPT, BITLK and FVAULT2 devices." msgstr "Параметр --test-passphrase можна використовувати лише для відкриття пристроїв LUKS, TCRYPT, BITLK та FVAULT2." -#: src/cryptsetup.c:3349 src/cryptsetup.c:3379 +#: src/cryptsetup.c:3351 src/cryptsetup.c:3381 msgid "Options --device-size and --size cannot be combined." msgstr "Не можна одночасно використовувати параметри --device-size і --size." -#: src/cryptsetup.c:3352 +#: src/cryptsetup.c:3354 msgid "Option --unbound is allowed only for open of luks device." msgstr "Параметр --sunbound можна використовувати лише для відкриття пристрою LUKS." -#: src/cryptsetup.c:3355 +#: src/cryptsetup.c:3357 msgid "Option --unbound cannot be used without --test-passphrase." msgstr "Параметр --unbound не можна використовувати без --test-passphrase." -#: src/cryptsetup.c:3359 +#: src/cryptsetup.c:3361 msgid "Option --volume-key-keyring cannot be combined with --hash or --volume-key-file." msgstr "Параметр --volume-key-keyring не можна поєднувати з --hash і --volume-key-file." -#: src/cryptsetup.c:3362 +#: src/cryptsetup.c:3364 msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "Обидва параметри --volume-key-file має бути поєднано із відповідними параметрами --key-size." -#: src/cryptsetup.c:3371 src/veritysetup.c:673 src/integritysetup.c:787 +#: src/cryptsetup.c:3373 src/veritysetup.c:673 src/integritysetup.c:793 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "Не можна одночасно використовувати параметр --cancel-deferred і --deferred." -#: src/cryptsetup.c:3387 +#: src/cryptsetup.c:3389 msgid "Option --active-name can be set only for LUKS2 device." msgstr "Параметр --active-name можна встановлювати лише для пристроїв LUKS2." -#: src/cryptsetup.c:3390 +#: src/cryptsetup.c:3392 msgid "Options --active-name and --force-offline-reencrypt cannot be combined." msgstr "Не можна одночасно використовувати параметри ---active-name і --force-offline-reencrypt." -#: src/cryptsetup.c:3393 +#: src/cryptsetup.c:3395 msgid "Options --new-volume-key-file and --keep-key cannot be combined." msgstr "Не можна поєднувати параметри --new-volume-key-file і --keep-key." -#: src/cryptsetup.c:3396 +#: src/cryptsetup.c:3398 msgid "Options --new-volume-key-keyring and --keep-key cannot be combined." msgstr "Не можна поєднувати параметри --new-volume-key-keyring і --keep-key." -#: src/cryptsetup.c:3404 src/cryptsetup.c:3434 +#: src/cryptsetup.c:3406 src/cryptsetup.c:3436 msgid "Keyslot specification is required." msgstr "Слід вказати специфікація слотів ключів." -#: src/cryptsetup.c:3412 +#: src/cryptsetup.c:3414 msgid "Options --align-payload and --offset cannot be combined." msgstr "Не можна одночасно використовувати параметри --align-payload і --offset." -#: src/cryptsetup.c:3415 +#: src/cryptsetup.c:3417 msgid "Option --integrity-no-wipe can be used only for format action with integrity extension." msgstr "Параметром --integrity-no-wipe можна користуватися лише для дії з форматування із розширенням забезпечення цілісності." -#: src/cryptsetup.c:3418 +#: src/cryptsetup.c:3420 msgid "Only one of --use-[u]random options is allowed." msgstr "Можна використовувати лише один з параметрів --use-[u]random." -#: src/cryptsetup.c:3426 +#: src/cryptsetup.c:3428 msgid "Key size is required with --unbound option." msgstr "Разом із параметром --unbound слід вказувати розмір ключа." -#: src/cryptsetup.c:3446 +#: src/cryptsetup.c:3448 msgid "Invalid token action." msgstr "Некоректна дія з жетоном." -#: src/cryptsetup.c:3449 +#: src/cryptsetup.c:3451 msgid "--key-description parameter is mandatory for token add action." msgstr "Параметр --key-description є обов'язковим для дій із додавання жетонів." -#: src/cryptsetup.c:3453 src/cryptsetup.c:3466 +#: src/cryptsetup.c:3455 src/cryptsetup.c:3468 msgid "Action requires specific token. Use --token-id parameter." msgstr "Для виконання дії потрібен специфічний жетон. Скористайтеся параметром --token-id." -#: src/cryptsetup.c:3457 +#: src/cryptsetup.c:3459 msgid "Option --unbound is valid only with token add action." msgstr "Параметр --unbound можна використовувати лише разом із дією з додавання жетона." -#: src/cryptsetup.c:3459 +#: src/cryptsetup.c:3461 msgid "Options --key-slot and --unbound cannot be combined." msgstr "Не можна поєднувати параметри --key-slot і --unbound." -#: src/cryptsetup.c:3464 +#: src/cryptsetup.c:3466 msgid "Action requires specific keyslot. Use --key-slot parameter." msgstr "Дія потребує зазначення слоту ключа. Скористайтеся параметром --key-slot." -#: src/cryptsetup.c:3480 +#: src/cryptsetup.c:3482 msgid " [--type ] []" msgstr "<пристрій> [--type <тип>] [<назва>]" -#: src/cryptsetup.c:3480 src/veritysetup.c:487 src/integritysetup.c:554 +#: src/cryptsetup.c:3482 src/veritysetup.c:487 src/integritysetup.c:560 msgid "open device as " msgstr "відкрити пристрій як <назва>" -#: src/cryptsetup.c:3481 src/cryptsetup.c:3482 src/cryptsetup.c:3483 -#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:555 -#: src/integritysetup.c:556 src/integritysetup.c:558 +#: src/cryptsetup.c:3483 src/cryptsetup.c:3484 src/cryptsetup.c:3485 +#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:561 +#: src/integritysetup.c:562 src/integritysetup.c:564 msgid "" msgstr "<назва>" -#: src/cryptsetup.c:3481 src/veritysetup.c:488 src/integritysetup.c:555 +#: src/cryptsetup.c:3483 src/veritysetup.c:488 src/integritysetup.c:561 msgid "close device (remove mapping)" msgstr "закрити пристрій (вилучити призначення)" -#: src/cryptsetup.c:3482 src/integritysetup.c:558 +#: src/cryptsetup.c:3484 src/integritysetup.c:564 msgid "resize active device" msgstr "змінити розмір активного пристрою" -#: src/cryptsetup.c:3483 +#: src/cryptsetup.c:3485 msgid "show device status" msgstr "показати стан пристрою" -#: src/cryptsetup.c:3484 +#: src/cryptsetup.c:3486 msgid "[--cipher ]" msgstr "[--cipher <шифр>]" -#: src/cryptsetup.c:3484 +#: src/cryptsetup.c:3486 msgid "benchmark cipher" msgstr "перевірити швидкодію шифрування" -#: src/cryptsetup.c:3485 src/cryptsetup.c:3486 src/cryptsetup.c:3487 -#: src/cryptsetup.c:3488 src/cryptsetup.c:3489 src/cryptsetup.c:3496 -#: src/cryptsetup.c:3497 src/cryptsetup.c:3498 src/cryptsetup.c:3499 -#: src/cryptsetup.c:3500 src/cryptsetup.c:3501 src/cryptsetup.c:3502 -#: src/cryptsetup.c:3503 src/cryptsetup.c:3504 src/cryptsetup.c:3505 +#: src/cryptsetup.c:3487 src/cryptsetup.c:3488 src/cryptsetup.c:3489 +#: src/cryptsetup.c:3490 src/cryptsetup.c:3491 src/cryptsetup.c:3498 +#: src/cryptsetup.c:3499 src/cryptsetup.c:3500 src/cryptsetup.c:3501 +#: src/cryptsetup.c:3502 src/cryptsetup.c:3503 src/cryptsetup.c:3504 +#: src/cryptsetup.c:3505 src/cryptsetup.c:3506 src/cryptsetup.c:3507 msgid "" msgstr "<пристрій>" -#: src/cryptsetup.c:3485 +#: src/cryptsetup.c:3487 msgid "try to repair on-disk metadata" msgstr "спробувати виправити метадані на диску" -#: src/cryptsetup.c:3486 +#: src/cryptsetup.c:3488 msgid "reencrypt LUKS2 device" msgstr "повторно зашифрувати пристрій LUKS2" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3489 msgid "erase all keyslots (remove encryption key)" msgstr "витерти усі слоти ключів (вилучити ключ шифрування)" -#: src/cryptsetup.c:3488 +#: src/cryptsetup.c:3490 msgid "convert LUKS from/to LUKS2 format" msgstr "перетворити LUKS із формату LUKS2 або навпаки" -#: src/cryptsetup.c:3489 +#: src/cryptsetup.c:3491 msgid "set permanent configuration options for LUKS2" msgstr "встановити сталі параметри налаштування для LUKS2" -#: src/cryptsetup.c:3490 src/cryptsetup.c:3491 +#: src/cryptsetup.c:3492 src/cryptsetup.c:3493 msgid " []" msgstr "<пристрій> [<новий файл ключа>]" -#: src/cryptsetup.c:3490 +#: src/cryptsetup.c:3492 msgid "formats a LUKS device" msgstr "форматує пристрій LUKS" -#: src/cryptsetup.c:3491 +#: src/cryptsetup.c:3493 msgid "add key to LUKS device" msgstr "додати ключ до пристрою LUKS" -#: src/cryptsetup.c:3492 src/cryptsetup.c:3493 src/cryptsetup.c:3494 +#: src/cryptsetup.c:3494 src/cryptsetup.c:3495 src/cryptsetup.c:3496 msgid " []" msgstr "<пристрій> [<файл ключа>]" -#: src/cryptsetup.c:3492 +#: src/cryptsetup.c:3494 msgid "removes supplied key or key file from LUKS device" msgstr "вилучає наданий ключ або файл ключа з пристрою LUKS" -#: src/cryptsetup.c:3493 +#: src/cryptsetup.c:3495 msgid "changes supplied key or key file of LUKS device" msgstr "змінює наданий ключ або файл ключа пристрою LUKS" -#: src/cryptsetup.c:3494 +#: src/cryptsetup.c:3496 msgid "converts a key to new pbkdf parameters" msgstr "перетворює ключ до нових параметрів pbkdf" -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3497 msgid " " msgstr "<пристрій> <слот ключа>" -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3497 msgid "wipes key with number from LUKS device" msgstr "вилучає ключ з номером <слот ключа> з пристрою LUKS" -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3498 msgid "print UUID of LUKS device" msgstr "вивести UUID пристрою LUKS" -#: src/cryptsetup.c:3497 +#: src/cryptsetup.c:3499 msgid "tests for LUKS partition header" msgstr "виконати спробу виявлення заголовка розділу LUKS на пристрої <пристрій>" -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3500 msgid "dump LUKS partition information" msgstr "створити дамп даних щодо розділу LUKS" -#: src/cryptsetup.c:3499 +#: src/cryptsetup.c:3501 msgid "dump TCRYPT device information" msgstr "створити дамп даних пристрою TCRYPT" -#: src/cryptsetup.c:3500 +#: src/cryptsetup.c:3502 msgid "dump BITLK device information" msgstr "створити дамп даних пристрою BITLK" -#: src/cryptsetup.c:3501 +#: src/cryptsetup.c:3503 msgid "dump FVAULT2 device information" msgstr "створити дамп даних пристрою FVAULT2" -#: src/cryptsetup.c:3502 +#: src/cryptsetup.c:3504 msgid "Suspend LUKS device and wipe key (all IOs are frozen)" msgstr "Приспати пристрій LUKS і витерти ключ (роботу всіх каналів введення-виведення буде заморожено)" -#: src/cryptsetup.c:3503 +#: src/cryptsetup.c:3505 msgid "Resume suspended LUKS device" msgstr "Відновити роботу приспаного пристрою LUKS" -#: src/cryptsetup.c:3504 +#: src/cryptsetup.c:3506 msgid "Backup LUKS device header and keyslots" msgstr "Створити резервну копію заголовка пристрою LUKS і слотів ключів" -#: src/cryptsetup.c:3505 +#: src/cryptsetup.c:3507 msgid "Restore LUKS device header and keyslots" msgstr "Відновити заголовок пристрою LUKS і слоти ключів" -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3508 msgid " " msgstr " <пристрій>" -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3508 msgid "Manipulate LUKS2 tokens" msgstr "Керування жетонами LUKS2" -#: src/cryptsetup.c:3525 src/veritysetup.c:505 src/integritysetup.c:573 +#: src/cryptsetup.c:3527 src/veritysetup.c:505 src/integritysetup.c:579 msgid "" "\n" " is one of:\n" @@ -2951,7 +2951,7 @@ msgstr "" "\n" "<дія> є однією з таких:\n" -#: src/cryptsetup.c:3531 +#: src/cryptsetup.c:3533 msgid "" "\n" "You can also use old syntax aliases:\n" @@ -2964,7 +2964,7 @@ msgstr "" "\tвідкрити: create (plainOpen), luksOpen, loopaesOpen, tcryptOpen, bitlkOpen, fvault2Open\n" "\tзакрити: remove (plainClose), luksClose, loopaesClose, tcryptClose, bitlkClose, fvault2Close\n" -#: src/cryptsetup.c:3535 +#: src/cryptsetup.c:3537 #, c-format msgid "" "\n" @@ -2979,7 +2979,7 @@ msgstr "" "<слот ключа> — номер слота ключа LUKS, який слід змінити\n" "<файл ключа> — необов’язковий файл ключа для нового ключа для дії luksAddKey\n" -#: src/cryptsetup.c:3542 +#: src/cryptsetup.c:3544 #, c-format msgid "" "\n" @@ -2988,7 +2988,7 @@ msgstr "" "\n" "Типовий укомпільований формат метаданих — %s (для дії luksFormat).\n" -#: src/cryptsetup.c:3547 +#: src/cryptsetup.c:3549 msgid "" "\n" "LUKS2 external token plugin support is enabled.\n" @@ -2996,12 +2996,12 @@ msgstr "" "\n" "Підтримку додатків зовнішніх жетонів LUKS2 увімкнено.\n" -#: src/cryptsetup.c:3548 +#: src/cryptsetup.c:3550 #, c-format msgid "LUKS2 external token plugin path: %s.\n" msgstr "Шлях до теки додатків зовнішніх жетонів LUKS2: %s.\n" -#: src/cryptsetup.c:3550 +#: src/cryptsetup.c:3552 msgid "" "\n" "LUKS2 external token plugin support is disabled.\n" @@ -3009,7 +3009,7 @@ msgstr "" "\n" "Підтримку додатків зовнішніх жетонів LUKS2 вимкнено.\n" -#: src/cryptsetup.c:3554 +#: src/cryptsetup.c:3556 #, c-format msgid "" "\n" @@ -3026,7 +3026,7 @@ msgstr "" "Типовий PBKDF для LUKS2: %s\n" "\tЧас ітерації: %d, потрібний обсяг пам'яті: %d кБ, паралельних потоків: %d\n" -#: src/cryptsetup.c:3565 +#: src/cryptsetup.c:3567 #, c-format msgid "" "\n" @@ -3041,122 +3041,126 @@ msgstr "" "\tзвичайне: %s, ключ: %d-бітовий, хешування пароля: %s\n" "\tLUKS: %s, ключ: %d-бітовий, хешування заголовка LUKS: %s, RNG: %s\n" -#: src/cryptsetup.c:3574 +#: src/cryptsetup.c:3576 msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: типовий розмір ключа у режимі XTS (два вбудованих ключа) буде подвоєно.\n" -#: src/cryptsetup.c:3592 src/veritysetup.c:647 src/integritysetup.c:733 +#: src/cryptsetup.c:3594 src/veritysetup.c:647 src/integritysetup.c:739 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: слід вказати у параметрах %s" -#: src/cryptsetup.c:3632 src/utils_reencrypt_luks1.c:1143 +#: src/cryptsetup.c:3634 src/utils_reencrypt_luks1.c:1143 msgid "Key slot is invalid." msgstr "Некоректний слот ключа." -#: src/cryptsetup.c:3660 +#: src/cryptsetup.c:3662 msgid "Device size must be multiple of 512 bytes sector." msgstr "Розмір пристрою має бути кратним до 512-байтового сектора." -#: src/cryptsetup.c:3665 +#: src/cryptsetup.c:3667 msgid "Invalid max reencryption hotzone size specification." msgstr "Некоректна специфікація розміру «гарячої» ділянки повторного шифрування." -#: src/cryptsetup.c:3679 src/cryptsetup.c:3696 src/cryptsetup.c:3708 +#: src/cryptsetup.c:3681 src/cryptsetup.c:3698 src/cryptsetup.c:3710 msgid "Key size must be a multiple of 8 bits" msgstr "Розмір ключа має бути кратним 8 бітам" -#: src/cryptsetup.c:3686 +#: src/cryptsetup.c:3688 msgid "At most 2 key size specifications can be supplied." msgstr "Можна надати не більше 2 специфікацій розмірів ключів." -#: src/cryptsetup.c:3715 src/cryptsetup.c:3726 +#: src/cryptsetup.c:3717 src/cryptsetup.c:3728 #, c-format msgid "At most %d volume key specifications can be supplied." msgstr "Можна надати не більше %d специфікацій ключів томів." -#: src/cryptsetup.c:3738 +#: src/cryptsetup.c:3740 #, c-format msgid "At most %d keyring link specifications can be supplied." msgstr "Можна надати не більше %d специфікацій посилань на сховище ключів." -#: src/cryptsetup.c:3747 +#: src/cryptsetup.c:3749 msgid "Maximum device reduce size is 1 GiB." msgstr "Максимальний розмір зменшення розміру пристрою дорівнює 1 ГіБ." -#: src/cryptsetup.c:3750 +#: src/cryptsetup.c:3752 msgid "Reduce size must be multiple of 512 bytes sector." msgstr "Розмір зменшення має бути кратним до 512-байтового сектора." -#: src/cryptsetup.c:3767 +#: src/cryptsetup.c:3769 msgid "Option --priority can be only ignore/normal/prefer." msgstr "Значенням для параметра --priority може бути лише один з таких рядків: ignore, normal або prefer." -#: src/cryptsetup.c:3786 src/veritysetup.c:568 src/integritysetup.c:653 +#: src/cryptsetup.c:3774 +msgid "Invalid maximal tries specification." +msgstr "Некоректна специфікація максимальної кількості спроб." + +#: src/cryptsetup.c:3793 src/veritysetup.c:568 src/integritysetup.c:659 msgid "Show this help message" msgstr "Показати цю довідку" -#: src/cryptsetup.c:3787 src/veritysetup.c:569 src/integritysetup.c:654 +#: src/cryptsetup.c:3794 src/veritysetup.c:569 src/integritysetup.c:660 msgid "Display brief usage" msgstr "Показати короткі настанови щодо користування" -#: src/cryptsetup.c:3788 src/veritysetup.c:570 src/integritysetup.c:655 +#: src/cryptsetup.c:3795 src/veritysetup.c:570 src/integritysetup.c:661 msgid "Print package version" msgstr "Вивести дані щодо версії пакунка" -#: src/cryptsetup.c:3799 src/veritysetup.c:581 src/integritysetup.c:666 +#: src/cryptsetup.c:3806 src/veritysetup.c:581 src/integritysetup.c:672 msgid "Help options:" msgstr "Пункти довідки:" -#: src/cryptsetup.c:3822 src/veritysetup.c:602 src/integritysetup.c:686 +#: src/cryptsetup.c:3829 src/veritysetup.c:602 src/integritysetup.c:692 msgid "[OPTION...] " msgstr "[ПАРАМЕТР...] <дія> <параметри_дії>" -#: src/cryptsetup.c:3831 src/veritysetup.c:611 src/integritysetup.c:697 +#: src/cryptsetup.c:3838 src/veritysetup.c:611 src/integritysetup.c:703 msgid "Argument missing." msgstr "Не вказано аргумент <дія>." -#: src/cryptsetup.c:3910 src/veritysetup.c:642 src/integritysetup.c:728 +#: src/cryptsetup.c:3917 src/veritysetup.c:642 src/integritysetup.c:734 msgid "Unknown action." msgstr "Невідома дія." -#: src/cryptsetup.c:3928 +#: src/cryptsetup.c:3935 msgid "Option --key-file takes precedence over specified key file argument." msgstr "Параметр --key-file має пріоритет над вказаним параметром файла ключа." -#: src/cryptsetup.c:3934 +#: src/cryptsetup.c:3941 msgid "Only one --key-file argument is allowed." msgstr "Можна використовувати лише один аргумент --key-file." -#: src/cryptsetup.c:3939 +#: src/cryptsetup.c:3946 msgid "Password-based key derivation function (PBKDF) can be only pbkdf2 or argon2i/argon2id." msgstr "Функцією отримання ключа на основі пароля (PBKDF) може бути лише pbkdf2 або argon2i/argon2id." -#: src/cryptsetup.c:3944 +#: src/cryptsetup.c:3951 msgid "PBKDF forced iterations cannot be combined with iteration time option." msgstr "Примусові ітерації PBKDF не можна поєднувати із параметром тривалості ітерацій." -#: src/cryptsetup.c:3949 +#: src/cryptsetup.c:3956 msgid "Cannot link volume key to a keyring when keyring is disabled." msgstr "Неможливо пов'язати ключ тому зі сховищем ключів, якщо сховище ключів вимкнено." -#: src/cryptsetup.c:3954 +#: src/cryptsetup.c:3961 msgid "Cannot use keyring key description when keyring is disabled." msgstr "Не можна скористатися описом ключа сховища ключів, якщо сховище ключів вимкнено." -#: src/cryptsetup.c:3959 +#: src/cryptsetup.c:3966 msgid "Inline integrity must be used together with --integrity option." msgstr "Вбудовану цілісність має бути використано разом із параметром --integrity." -#: src/cryptsetup.c:3970 +#: src/cryptsetup.c:3977 msgid "Options --keyslot-cipher and --keyslot-key-size must be used together." msgstr "Параметри --keyslot-cipher і --keyslot-key-size має бути використано разом." -#: src/cryptsetup.c:3978 +#: src/cryptsetup.c:3985 msgid "No action taken. Invoked with --test-args option.\n" msgstr "Дій не виконано. Викликано із параметром --test-args.\n" -#: src/cryptsetup.c:3991 +#: src/cryptsetup.c:3998 msgid "Cannot disable metadata locking." msgstr "Не вдалося вимкнути блокування метаданих." @@ -3221,7 +3225,7 @@ msgstr "Для виконання команди потрібен <корене msgid " " msgstr "<пристрій_даних> <пристрій_хешу>" -#: src/veritysetup.c:485 src/integritysetup.c:553 +#: src/veritysetup.c:485 src/integritysetup.c:559 msgid "format device" msgstr "форматувати пристрій" @@ -3237,7 +3241,7 @@ msgstr "перевірити пристрій" msgid " []" msgstr "<пристрій_даних> <назва> <пристрій_хешу> [<кореневий_хеш>]" -#: src/veritysetup.c:489 src/integritysetup.c:556 +#: src/veritysetup.c:489 src/integritysetup.c:562 msgid "show active device status" msgstr "показати стан активного пристрою" @@ -3245,7 +3249,7 @@ msgstr "показати стан активного пристрою" msgid "" msgstr "<пристрій_хешу>" -#: src/veritysetup.c:490 src/integritysetup.c:557 +#: src/veritysetup.c:490 src/integritysetup.c:563 msgid "show on-disk information" msgstr "показати вбудовані дані" @@ -3287,7 +3291,7 @@ msgstr "Параметри --panic-on-corruption і --restart-on-corruption не msgid "Option --error-as-corruption must be used with --panic-on-corruption or --restart-on-corruption." msgstr "Параметр --error-as-corruption має бути використано з --panic-on-corruption або --restart-on-corruption." -#: src/integritysetup.c:168 +#: src/integritysetup.c:169 #, c-format msgid "" "This will overwrite data on %s and %s irrevocably.\n" @@ -3296,33 +3300,33 @@ msgstr "" "Дані на %s і %s буде перезаписано без можливості відновлення.\n" "Щоб зберегти пристрій даних, скористайтеся параметром --no-wipe (а потім активуйте за допомогою --integrity-recalculate)." -#: src/integritysetup.c:213 +#: src/integritysetup.c:215 #, c-format msgid "Formatted with tag size %u%s, internal integrity %s.\n" msgstr "Форматовано із розміром мітки %u%s, внутрішня цілісність %s.\n" -#: src/integritysetup.c:214 +#: src/integritysetup.c:216 msgid " (inline hw tags)" msgstr " (вбудовані апаратні мітки)" -#: src/integritysetup.c:303 +#: src/integritysetup.c:305 msgid "Setting recalculate flag is not supported, you may consider using --wipe instead." msgstr "Підтримки встановлення прапорця повторного обчислення не передбачено. Вам варто розглянути можливість використання --wipe." -#: src/integritysetup.c:380 src/integritysetup.c:540 +#: src/integritysetup.c:382 src/integritysetup.c:546 #, c-format msgid "Device %s is not a valid INTEGRITY device." msgstr "Пристрій %s не є коректним пристроєм INTEGRITY." -#: src/integritysetup.c:553 src/integritysetup.c:557 +#: src/integritysetup.c:559 src/integritysetup.c:563 msgid "" msgstr "<пристрій_цілісності>" -#: src/integritysetup.c:554 +#: src/integritysetup.c:560 msgid " " msgstr "<пристрій_цілісності> <назва>" -#: src/integritysetup.c:577 +#: src/integritysetup.c:583 #, c-format msgid "" "\n" @@ -3333,7 +3337,7 @@ msgstr "" "<назва> є пристроєм, який слід створити у %s\n" "<пристрій_цілісності> є пристроєм, на якому зберігаються дані із мітками цілісності\n" -#: src/integritysetup.c:582 +#: src/integritysetup.c:588 #, c-format msgid "" "\n" @@ -3346,48 +3350,48 @@ msgstr "" "\tАлгоритм обчислення контрольної суми: %s\n" "\tМаксимальний розмір файла ключа: %d кБ\n" -#: src/integritysetup.c:639 +#: src/integritysetup.c:645 #, c-format msgid "Invalid --%s size. Maximum is %u bytes." msgstr "Некоректний розмір --%s. Максимальний розмір дорівнює %u байтів." -#: src/integritysetup.c:742 +#: src/integritysetup.c:748 msgid "Both key file and key size options must be specified." msgstr "Не можна одночасно вказувати параметри файла ключа і розміру ключа." -#: src/integritysetup.c:746 +#: src/integritysetup.c:752 msgid "Both journal integrity key file and key size options must be specified." msgstr "Не можна одночасно вказувати параметри файла ключа цілісності журналу і розміру ключа." -#: src/integritysetup.c:749 +#: src/integritysetup.c:755 msgid "Journal integrity algorithm must be specified if journal integrity key is used." msgstr "Якщо використано ключ цілісності журналу, має бути вказано алгоритм забезпечення цілісності журналу." -#: src/integritysetup.c:753 +#: src/integritysetup.c:759 msgid "Both journal encryption key file and key size options must be specified." msgstr "Не можна одночасно вказувати параметри файла ключа шифрування журналу і розміру ключа." -#: src/integritysetup.c:756 +#: src/integritysetup.c:762 msgid "Journal encryption algorithm must be specified if journal encryption key is used." msgstr "Якщо використано ключ шифрування журналу, має бути вказано алгоритм забезпечення шифрування журналу." -#: src/integritysetup.c:760 +#: src/integritysetup.c:766 msgid "Recovery and bitmap mode options are mutually exclusive." msgstr "Не можна поєднувати параметри відновлення і бітової карти." -#: src/integritysetup.c:767 +#: src/integritysetup.c:773 msgid "Journal options cannot be used in bitmap mode." msgstr "Параметри журналу у режимі бітової карти використовувати не можна." -#: src/integritysetup.c:772 +#: src/integritysetup.c:778 msgid "Bitmap options can be used only in bitmap mode." msgstr "Параметри бітової карти можна використовувати лише у режимі бітового карти." -#: src/integritysetup.c:778 +#: src/integritysetup.c:784 msgid "Inline mode cannot be combined with journal or bitmap options." msgstr "Вбудований режим не може бути поєднано із параметрами журналу або бітової карти." -#: src/integritysetup.c:782 +#: src/integritysetup.c:788 msgid "Inline mode cannot be combined with separate data device." msgstr "Вбудований режим не можна поєднувати із окремим пристроєм даних." @@ -3741,32 +3745,32 @@ msgstr "Пристрій не у розшифруванні LUKS2. Конфлі msgid "Device is in reencryption using datashift resilience. Requested --resilience option cannot be applied." msgstr "Пристрій перебуває у повторному шифруванні з використанням стійкості зсуву даних. Вказаний параметр --resilience не може бути застосовано." -#: src/utils_reencrypt.c:282 src/utils_reencrypt.c:1924 +#: src/utils_reencrypt.c:283 src/utils_reencrypt.c:1927 msgid "Cannot determine volume key size for LUKS without keyslots, please use --new-key-size option." msgstr "Неможливо визначити розмір ключа тому для LUKS без слотів ключів. Будь ласка, скористайтеся параметром --new-key-size." -#: src/utils_reencrypt.c:436 +#: src/utils_reencrypt.c:438 msgid "Device requires reencryption recovery. Run repair first." msgstr "Пристрій потребує відновлення повторного шифрування. Спочатку виконайте відновлення." -#: src/utils_reencrypt.c:450 +#: src/utils_reencrypt.c:452 #, c-format msgid "Device %s is already in LUKS2 reencryption. Do you wish to resume previously initialised operation?" msgstr "Пристрій %s вже перебуває у стані повторного шифрування LUKS2. Хочете відновити раніше ініціалізовану дію?" -#: src/utils_reencrypt.c:561 +#: src/utils_reencrypt.c:563 msgid "Legacy LUKS2 reencryption is no longer supported." msgstr "Підтримки застарілого повторного шифрування LUKS2 більше не передбачено." -#: src/utils_reencrypt.c:566 +#: src/utils_reencrypt.c:568 msgid "Can not reencrypt LUKS2 device configured to use OPAL." msgstr "Неможливо повторно зашифрувати пристрій LUKS2, який налаштовано на використання OPAL." -#: src/utils_reencrypt.c:572 +#: src/utils_reencrypt.c:574 msgid "Reencryption of device with integrity profile is not supported." msgstr "Підтримки повторного шифрування пристрою із профілем цілісності не передбачено." -#: src/utils_reencrypt.c:609 +#: src/utils_reencrypt.c:611 #, c-format msgid "" "Requested --sector-size % is incompatible with %s superblock\n" @@ -3775,110 +3779,110 @@ msgstr "" "Вказаний --sector-size % є несумісним із суперблоком %s\n" "(розмір блоку: % байтів), який виявлено на пристрої %s." -#: src/utils_reencrypt.c:678 src/utils_reencrypt.c:2204 +#: src/utils_reencrypt.c:680 src/utils_reencrypt.c:2207 msgid "Encryption without detached header (--header) is not possible without data device size reduction (--reduce-device-size)." msgstr "Шифрування без від'єднаного заголовка (--header) є неможливим без зменшення розміру пристрою зберігання даних (--reduce-device-size)." -#: src/utils_reencrypt.c:687 +#: src/utils_reencrypt.c:689 msgid "Requested data offset must be less than or equal to half of --reduce-device-size parameter." msgstr "Вказаний зсув даних має бути меншим або рівним половині значення параметра --reduce-device-size." -#: src/utils_reencrypt.c:697 +#: src/utils_reencrypt.c:699 #, c-format msgid "Adjusting --reduce-device-size value to twice the --offset % (sectors).\n" msgstr "Коригуємо значення --reduce-device-size до подвійного значення --offset % (у секторах).\n" -#: src/utils_reencrypt.c:727 +#: src/utils_reencrypt.c:729 #, c-format msgid "Temporary header file %s already exists. Aborting." msgstr "Файл тимчасового заголовка %s вже існує. Перериваємо обробку." -#: src/utils_reencrypt.c:729 src/utils_reencrypt.c:736 +#: src/utils_reencrypt.c:731 src/utils_reencrypt.c:738 #, c-format msgid "Cannot create temporary header file %s." msgstr "Не вдалося створити файл тимчасового заголовка %s." -#: src/utils_reencrypt.c:761 +#: src/utils_reencrypt.c:763 msgid "LUKS2 metadata size is larger than data shift value." msgstr "Розмір метаданих LUKS2 перевищує значення зсуву даних." -#: src/utils_reencrypt.c:800 +#: src/utils_reencrypt.c:802 #, c-format msgid "Failed to place new header at head of device %s." msgstr "Не вдалося розмістити новий заголовок на початку пристрою %s." -#: src/utils_reencrypt.c:813 +#: src/utils_reencrypt.c:815 #, c-format msgid "%s/%s is now active and ready for online encryption.\n" msgstr "%s/%s задіяно, система готова до інтерактивного шифрування.\n" -#: src/utils_reencrypt.c:850 +#: src/utils_reencrypt.c:852 #, c-format msgid "Active device %s is not LUKS2." msgstr "Активний пристрій %s не є пристроєм LUKS2." -#: src/utils_reencrypt.c:878 +#: src/utils_reencrypt.c:880 msgid "Restoring original LUKS2 header." msgstr "Відновлюємо початковий заголовок LUKS2." -#: src/utils_reencrypt.c:886 +#: src/utils_reencrypt.c:888 msgid "Original LUKS2 header restore failed." msgstr "Спроба відновлення початкового заголовка LUKS2 зазнала невдачі." -#: src/utils_reencrypt.c:918 +#: src/utils_reencrypt.c:920 #, c-format msgid "Header file %s does not exist. Do you want to initialize LUKS2 decryption of device %s and export LUKS2 header to file %s?" msgstr "Файла заголовка %s не існує. Хочете ініціалізувати розшифрування LUKS2 пристрою %s і експортувати заголовок LUKS2 до файла %s?" -#: src/utils_reencrypt.c:961 +#: src/utils_reencrypt.c:963 msgid "Failed to add read/write permissions to exported header file." msgstr "Не вдалося додати права доступу для читання-запису до експортованого файла заголовка." -#: src/utils_reencrypt.c:1015 +#: src/utils_reencrypt.c:1017 #, c-format msgid "Reencryption initialization failed. Header backup is available in %s." msgstr "Не вдалося ініціалізувати повторне шифрування. Резервна копія заголовка перебуває у %s." -#: src/utils_reencrypt.c:1043 +#: src/utils_reencrypt.c:1045 msgid "LUKS2 decryption is supported with detached header device only (with data offset set to 0)." msgstr "Підтримку розшифровування LUKS2 передбачено лише для пристроїв із від'єднаним заголовком (із встановленим нульовим відступом даних)." -#: src/utils_reencrypt.c:1487 +#: src/utils_reencrypt.c:1490 msgid "No token could unlock the device." msgstr "Жоден жетон не змін розблокувати пристрій." -#: src/utils_reencrypt.c:1519 src/utils_reencrypt.c:1528 +#: src/utils_reencrypt.c:1522 src/utils_reencrypt.c:1531 msgid "Not enough free keyslots for reencryption." msgstr "Недостатньо вільних слотів ключів для повторного шифрування." -#: src/utils_reencrypt.c:1559 +#: src/utils_reencrypt.c:1562 msgid "Key file or keyring key description can be used only with --key-slot or with exactly one key slot active." msgstr "Файлом ключа або описом ключа у сховищі ключів можна користуватися лише з --key-slot, або якщо активним є лише один слот ключа." -#: src/utils_reencrypt.c:1566 src/utils_reencrypt.c:1579 +#: src/utils_reencrypt.c:1569 src/utils_reencrypt.c:1582 #: src/utils_reencrypt_luks1.c:1092 src/utils_reencrypt_luks1.c:1103 #, c-format msgid "Enter passphrase for key slot %d: " msgstr "Вкажіть пароль для слоту ключа %d: " -#: src/utils_reencrypt.c:1876 +#: src/utils_reencrypt.c:1879 #, c-format msgid "Switching data encryption cipher to %s.\n" msgstr "Перемикаємося на шифрування даних %s.\n" -#: src/utils_reencrypt.c:1977 src/utils_reencrypt.c:1998 +#: src/utils_reencrypt.c:1980 src/utils_reencrypt.c:2001 msgid "Use --force-no-keyslots to reencrypt device with active keyslots by passing volume keys directly." msgstr "Скористайтеся --force-no-keyslots, щоб повторно зашифрувати пристрій із активними слотами ключів, передавши ключі тому безпосередньо." -#: src/utils_reencrypt.c:1993 +#: src/utils_reencrypt.c:1996 msgid "Option --new-volume-key-file must be paired with --new-key-size" msgstr "Параметр --new-volume-key-file має бути поєднано з --new-key-size" -#: src/utils_reencrypt.c:2035 +#: src/utils_reencrypt.c:2038 msgid "No data segment parameters changed. Reencryption aborted." msgstr "Не змінено параметри сегмента даних. Повторне шифрування перервано." -#: src/utils_reencrypt.c:2072 +#: src/utils_reencrypt.c:2075 msgid "" "Encryption sector size increase on offline device is not supported.\n" "Activate the device first or use --force-offline-reencrypt option (dangerous!)." @@ -3886,7 +3890,7 @@ msgstr "" "Підтримки збільшення розміру сектора шифрування на вимкненому пристрої не передбачено.\n" "Спочатку активуйте пристрій або скористайтеся параметром --force-offline-reencrypt (небезпечно!)." -#: src/utils_reencrypt.c:2114 src/utils_reencrypt_luks1.c:688 +#: src/utils_reencrypt.c:2117 src/utils_reencrypt_luks1.c:688 #: src/utils_reencrypt_luks1.c:759 msgid "" "\n" @@ -3895,58 +3899,58 @@ msgstr "" "\n" "Повторне шифрування перервано." -#: src/utils_reencrypt.c:2119 +#: src/utils_reencrypt.c:2122 msgid "Resuming LUKS reencryption in forced offline mode.\n" msgstr "Відновлюємо повторне шифрування LUKS у примусовому вимкненому режимі.\n" -#: src/utils_reencrypt.c:2142 +#: src/utils_reencrypt.c:2145 #, c-format msgid "Device %s contains broken LUKS metadata. Aborting operation." msgstr "На пристрої %s містяться пошкоджені метадані LUKS. Перериваємо дію." -#: src/utils_reencrypt.c:2158 src/utils_reencrypt.c:2180 +#: src/utils_reencrypt.c:2161 src/utils_reencrypt.c:2183 #, c-format msgid "Device %s is already LUKS device. Aborting operation." msgstr "Пристрій %s вже є пристроєм LUKS. Перериваємо дію." -#: src/utils_reencrypt.c:2186 +#: src/utils_reencrypt.c:2189 #, c-format msgid "Device %s is already in LUKS reencryption. Aborting operation." msgstr "Пристрій %s вже перебуває у стані повторного шифрування LUKS. Перериваємо дію." -#: src/utils_reencrypt.c:2269 +#: src/utils_reencrypt.c:2272 msgid "LUKS2 decryption requires --header option." msgstr "Для розшифровування LUKS2 потрібен параметр --header." -#: src/utils_reencrypt.c:2317 +#: src/utils_reencrypt.c:2320 msgid "Command requires device as argument." msgstr "Комарні слід передати аргумент пристрою." -#: src/utils_reencrypt.c:2330 +#: src/utils_reencrypt.c:2333 #, c-format msgid "Conflicting versions. Device %s is LUKS1." msgstr "Конфлікт версій. Пристрій %s є пристроєм LUKS1." -#: src/utils_reencrypt.c:2336 +#: src/utils_reencrypt.c:2339 #, c-format msgid "Conflicting versions. Device %s is in LUKS1 reencryption." msgstr "Конфлікт версій. Пристрій %s перебуває у стані повторного шифрування LUKS1." -#: src/utils_reencrypt.c:2342 +#: src/utils_reencrypt.c:2345 #, c-format msgid "Conflicting versions. Device %s is LUKS2." msgstr "Конфлікт версій. Пристрій %s є пристроєм LUKS2." -#: src/utils_reencrypt.c:2348 +#: src/utils_reencrypt.c:2351 #, c-format msgid "Conflicting versions. Device %s is in LUKS2 reencryption." msgstr "Конфлікт версій. Пристрій %s перебуває у стані повторного шифрування LUKS2." -#: src/utils_reencrypt.c:2354 +#: src/utils_reencrypt.c:2357 msgid "LUKS2 reencryption already initialized. Aborting operation." msgstr "Вже ініційовано повторне шифрування LUKS2. Перериваємо виконання дії." -#: src/utils_reencrypt.c:2361 +#: src/utils_reencrypt.c:2364 msgid "Device reencryption not in progress." msgstr "Повторне шифрування пристрою не виконується." @@ -4956,9 +4960,6 @@ msgstr "Помилка розпізнавання за відкритим клю #~ msgid "Options --journal-size, --interleave-sectors, --sector-size, --tag-size and --no-wipe can be used only for format action." #~ msgstr "Параметри --journal-size, --interleave-sectors, --sector-size, --tag-size та --no-wipe можна використовувати лише для дії з форматування." -#~ msgid "Invalid journal size specification." -#~ msgstr "Некоректна специфікація розміру журналу." - #~ msgid "Reencryption block size" #~ msgstr "Розмір блоку повторного шифрування" From 9b560a0d4948cde06a1a961813ee3c01264a185f Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Tue, 21 Jul 2026 21:03:48 +0200 Subject: [PATCH 190/244] Version 2.8.7. --- README.md | 14 ++++------- ...7-rc2-ReleaseNotes => v2.8.7-ReleaseNotes} | 23 ++++++++----------- 2 files changed, 13 insertions(+), 24 deletions(-) rename docs/{v2.8.7-rc2-ReleaseNotes => v2.8.7-ReleaseNotes} (95%) diff --git a/README.md b/README.md index 99ed3335e..22c930a1e 100644 --- a/README.md +++ b/README.md @@ -39,17 +39,11 @@ Download Release notes and tarballs are available at [kernel.org](https://cdn.kernel.org/pub/linux/utils/cryptsetup/). -**The latest cryptsetup release candidate version is 2.8.7-rc2** - * [cryptsetup-2.8.7-rc2.tar.xz](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/cryptsetup-2.8.7-rc2.tar.xz) - * Signature [cryptsetup-2.8.7-rc2.tar.sign](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/cryptsetup-2.8.7-rc2.tar.sign) +**The latest stable cryptsetup release version is 2.8.7** + * [cryptsetup-2.8.7.tar.xz](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/cryptsetup-2.8.7.tar.xz) + * Signature [cryptsetup-2.8.7.tar.sign](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/cryptsetup-2.8.7.tar.sign) _(You need to decompress file first to check signature.)_ - * [Cryptsetup 2.8.7-rc2 Release Notes](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/v2.8.7-rc2-ReleaseNotes). - -**The latest stable cryptsetup release version is 2.8.6** - * [cryptsetup-2.8.6.tar.xz](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/cryptsetup-2.8.6.tar.xz) - * Signature [cryptsetup-2.8.6.tar.sign](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/cryptsetup-2.8.6.tar.sign) - _(You need to decompress file first to check signature.)_ - * [Cryptsetup 2.8.6 Release Notes](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/v2.8.6-ReleaseNotes). + * [Cryptsetup 2.8.7 Release Notes](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/v2.8.7-ReleaseNotes). [Previous versions](https://cdn.kernel.org/pub/linux/utils/cryptsetup) diff --git a/docs/v2.8.7-rc2-ReleaseNotes b/docs/v2.8.7-ReleaseNotes similarity index 95% rename from docs/v2.8.7-rc2-ReleaseNotes rename to docs/v2.8.7-ReleaseNotes index 23bf01251..00e5db25f 100644 --- a/docs/v2.8.7-rc2-ReleaseNotes +++ b/docs/v2.8.7-ReleaseNotes @@ -1,20 +1,9 @@ -Cryptsetup 2.8.7-rc2 Release Notes -================================== -Stable bug-fix release candidate that solves several compatibility issues. +Cryptsetup 2.8.7 Release Notes +============================== +Stable bug-fix release that solves several compatibility issues. All users of cryptsetup must upgrade to this version. -Changes since version 2.8.7-rc1 -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -* Fix tests to compile crypto-check helper properly. - -* Add support for --integrity-legacy-hmac in integritysetup open command. - Integritysetup open command incorrectly configured options for legacy HMAC devices. - To use --integrity-legacy-hmac, it must now be used both on format and open. - -* Fix cryptsetup --tries option not to overflow for high values. - Changes since version 2.8.6 ~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -102,3 +91,9 @@ Changes since version 2.8.6 * Fix jq (JSON commandline processor) use in testing scripts. After the security update for jq, it no longer processes JSON with trailing zeroes. Regression test scripts were updated to avoid using this scenario. + +* Add support for --integrity-legacy-hmac in integritysetup open command. + Integritysetup open command incorrectly configured options for legacy HMAC devices. + To use --integrity-legacy-hmac, it must now be used both on format and open. + +* Fix cryptsetup --tries option not to overflow for high values. From b0bb482a02a12a98d5374b79ea0e5b600a0634f3 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Wed, 29 Jul 2026 17:32:53 +0200 Subject: [PATCH 191/244] cryptsetup: fix local memory corruption bug in reencrypt init. Fixes local memory corruption bug (OOB write in stack) if LUKS2 reencryption operation is being initialized via cryptsetup CLI and in the same time the LUKS2 metadata contains more then 16 active LUKS2 keyslots or more then 16 active LUKS2 tokens assigned to active keyslots. The bug can be triggered only for reencryption operation with no specific keyslot selected (via --key-slot parameter) in the mode when cryptsetup CLI requires user to unlock all active LUKS2 keyslots available in the LUKS2 metadata before the reencryption operation could be initialized. Reported by: Aisle Research --- src/utils_reencrypt.c | 52 ++++++++++++++++++++++++++--------- tests/luks2-reencryption-test | 17 ++++++++++++ 2 files changed, 56 insertions(+), 13 deletions(-) diff --git a/src/utils_reencrypt.c b/src/utils_reencrypt.c index d17acf7d4..9b79975bc 100644 --- a/src/utils_reencrypt.c +++ b/src/utils_reencrypt.c @@ -1182,20 +1182,25 @@ static struct crypt_keyslot_context *reencrypt_get_token_context(struct keyslot_ return NULL; } -static void reencrypt_token_add_for_unlock(struct keyslot_contexts *kcs, int token) +static bool reencrypt_token_add_for_unlock(struct keyslot_contexts *kcs, int token) { assert(kcs); assert(token >= 0); if (reencrypt_token_for_unlock(kcs, token)) - return; + return true; + + if (kcs->last_tkn >= ARRAY_SIZE(kcs->tkns)) + return false; kcs->tkns[kcs->last_tkn++].id = token; log_dbg("Token %d candidate for keyslot unlock.", token); + + return true; } -static void reencrypt_token_add(struct keyslot_contexts *kcs, +static bool reencrypt_token_add(struct keyslot_contexts *kcs, int token, struct crypt_keyslot_context *token_kc) { @@ -1207,12 +1212,14 @@ static void reencrypt_token_add(struct keyslot_contexts *kcs, for (i = 0; i < kcs->last_tkn; i++) { if (kcs->tkns[i].id == token) { + if (kcs->last_kc >= ARRAY_SIZE(kcs->kc)) + return false; kcs->kc[kcs->last_kc++] = kcs->tkns[i].p_kc = token_kc; - return; + return true; } } - abort(); + return false; } static void reencrypt_keyslot_unlocked_by_context(struct keyslot_contexts *kcs, @@ -1237,16 +1244,21 @@ static void reencrypt_keyslot_unlocked_by_context(struct keyslot_contexts *kcs, } /* Add keyslot in unlock candidates */ -static void reencrypt_keyslot_add_for_unlock(struct keyslot_contexts *kcs, int keyslot) +static bool reencrypt_keyslot_add_for_unlock(struct keyslot_contexts *kcs, int keyslot) { assert(kcs); assert(keyslot >= 0); + if (kcs->last_ks >= ARRAY_SIZE(kcs->ks)) + return false; + kcs->ks[kcs->last_ks].id = keyslot; kcs->ks[kcs->last_ks++].new_id = -1; + + return true; } -static void reencrypt_token_unlocks_keyslot(struct keyslot_contexts *kcs, +static bool reencrypt_token_unlocks_keyslot(struct keyslot_contexts *kcs, int token, int keyslot, struct crypt_keyslot_context *token_kc) @@ -1254,8 +1266,12 @@ static void reencrypt_token_unlocks_keyslot(struct keyslot_contexts *kcs, assert(kcs); assert(token_kc); - reencrypt_token_add(kcs, token, token_kc); + if (!reencrypt_token_add(kcs, token, token_kc)) + return false; + reencrypt_keyslot_unlocked_by_context(kcs, keyslot, token_kc); + + return true; } static void reencrypt_keyslot_unlocked_by_context_new(struct keyslot_contexts *kcs, @@ -1265,6 +1281,7 @@ static void reencrypt_keyslot_unlocked_by_context_new(struct keyslot_contexts *k assert(kcs); assert(kc); assert(keyslot >= 0); + assert(kcs->last_kc < ARRAY_SIZE(kcs->kc)); kcs->kc[kcs->last_kc++] = kc; reencrypt_keyslot_unlocked_by_context(kcs, keyslot, kc); @@ -1304,8 +1321,9 @@ static int single_token(struct crypt_device *cd, ARG_STR(OPT_TOKEN_TYPE_ID), 0, /* FIXME: do we need any? */ set_tries_tty(false), true, true, &kc); if (r == slot_to_check) { + if (!reencrypt_token_unlocks_keyslot(kcs, token, slot_to_check, kc)) + return -EINVAL; log_dbg("Token %d unlocks keyslot %d", token, slot_to_check); - reencrypt_token_unlocks_keyslot(kcs, token, slot_to_check, kc); } return r; @@ -1388,15 +1406,18 @@ static int reencrypt_add_token_keyslot(struct crypt_device *cd, if (crypt_token_is_assigned(cd, token, keyslot)) return 0; - reencrypt_token_add_for_unlock(kcs, token); + if (!reencrypt_token_add_for_unlock(kcs, token)) + return -EINVAL; /* continue if keyslot is already added in unlock queue */ if (reencrypt_keyslot_for_unlock(kcs, keyslot)) return 0; + if (!reencrypt_keyslot_add_for_unlock(kcs, keyslot)) + return -EINVAL; + log_dbg("Keyslot %d candidate for unlock.", keyslot); - reencrypt_keyslot_add_for_unlock(kcs, keyslot); return 1; } @@ -1481,8 +1502,10 @@ static int reencrypt_add_keyslots_for_unlock(struct crypt_device *cd, i = reencrypt_add_token_keyslots_for_unlock(cd, kcs, ARG_INT32(OPT_TOKEN_ID_ID), ARG_STR(OPT_TOKEN_TYPE_ID), ARG_INT32(OPT_KEY_SLOT_ID)); - if (i < 0) + if (i < 0) { + log_err(_("Not enough free keyslots for reencryption.")); return i; + } /* token based reencryption preferred and no keyslot * could be used for reencryption */ @@ -1504,7 +1527,10 @@ static int reencrypt_add_keyslots_for_unlock(struct crypt_device *cd, active++; if (!only_token_keyslots && !reencrypt_keyslot_for_unlock(kcs, i) && (!ARG_SET(OPT_KEY_SLOT_ID) || ARG_INT32(OPT_KEY_SLOT_ID) == i)) { - reencrypt_keyslot_add_for_unlock(kcs, i); + if (!reencrypt_keyslot_add_for_unlock(kcs, i)) { + log_err(_("Not enough free keyslots for reencryption.")); + return -EINVAL; + } unlocked++; log_dbg("Keyslot %d candidate for unlock by passphrase prompt.", i); } diff --git a/tests/luks2-reencryption-test b/tests/luks2-reencryption-test index c7f75175e..ae95124ac 100755 --- a/tests/luks2-reencryption-test +++ b/tests/luks2-reencryption-test @@ -2152,6 +2152,23 @@ $CRYPTSETUP luksDump $DEV | grep -q "online-reencrypt" && fail # check cli removed all unbound keyslots created in-before reencryption initialization $CRYPTSETUP luksDump $DEV | grep -q "unbound" && fail +echo $PWD1 | $CRYPTSETUP -q luksFormat --type luks2 --offset 32768 -S0 $FAST_PBKDF_ARGON $DEV || fail +KS=1 +while [ $KS -le 16 ]; do + echo -e "$PWD1\n$PWD1" | $CRYPTSETUP luksAddKey -S$KS $DEV -q $FAST_PBKDF_ARGON || fail + KS=$((KS+1)) +done +# TODO: test compiled with e.g.: -fsanitize=address -fsanitize=undefined -fsanitize=bounds-strict -fno-omit-frame-pointer +echo -e "$PWD1\n$PWD1\n$PWD1\n$PWD1\n$PWD1\n$PWD1\n$PWD1\n$PWD1\n$PWD1\n$PWD1\n$PWD1\n$PWD1\n$PWD1\n$PWD1\n$PWD1\n$PWD1\n$PWD1" | $CRYPTSETUP reencrypt $DEV -q 2>/dev/null && fail + +TK=0 +while [ $TK -le 16 ]; do + $CRYPTSETUP token add --key-description "aaa" -S $TK --token-id $TK $DEV || fail + TK=$((TK+1)) +done +# TODO: test compiled with e.g.: -fsanitize=address -fsanitize=undefined -fsanitize=bounds-strict -fno-omit-frame-pointer +$CRYPTSETUP reencrypt $DEV --token-only -q 2>/dev/null && fail + echo "[23] Reencryption with specified new volume key" prepare dev_size_mb=32 echo $PWD1 | $CRYPTSETUP -q luksFormat --type luks2 -s 256 -c aes-cbc-essiv:sha256 --offset 8192 $FAST_PBKDF_ARGON $DEV || fail From f31c1ed4f6a43af53d16f2ec9b65429543dd7060 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Tue, 28 Jul 2026 11:50:12 +0200 Subject: [PATCH 192/244] Make LUKS2_hdr_version_unlocked to use internal device The function is used to determine LUKS version before calling the real code to detect full validated header. There is an undeeded TOCTOU, let's use allocated device struct that caches open file descriptor. --- lib/luks2/luks2.h | 3 +-- lib/luks2/luks2_disk_metadata.c | 23 +++++------------------ lib/setup.c | 11 +++++++++-- 3 files changed, 15 insertions(+), 22 deletions(-) diff --git a/lib/luks2/luks2.h b/lib/luks2/luks2.h index d4f1624cb..6c6afae53 100644 --- a/lib/luks2/luks2.h +++ b/lib/luks2/luks2.h @@ -155,8 +155,7 @@ struct luks2_keyslot_params { #define LUKS2_HDR2_OFFSETS { 0x04000, 0x008000, 0x010000, 0x020000, \ 0x40000, 0x080000, 0x100000, 0x200000, LUKS2_HDR_OFFSET_MAX } -int LUKS2_hdr_version_unlocked(struct crypt_device *cd, - const char *backup_file); +int LUKS2_hdr_version_unlocked(struct crypt_device *cd, struct device *backup_device); int LUKS2_hdr_read(struct crypt_device *cd, struct luks2_hdr *hdr, int repair); int LUKS2_hdr_write(struct crypt_device *cd, struct luks2_hdr *hdr); diff --git a/lib/luks2/luks2_disk_metadata.c b/lib/luks2/luks2_disk_metadata.c index ee88b71d7..cacaf87a1 100644 --- a/lib/luks2/luks2_disk_metadata.c +++ b/lib/luks2/luks2_disk_metadata.c @@ -806,38 +806,25 @@ int LUKS2_disk_hdr_read(struct crypt_device *cd, struct luks2_hdr *hdr, return r; } -int LUKS2_hdr_version_unlocked(struct crypt_device *cd, const char *backup_file) +int LUKS2_hdr_version_unlocked(struct crypt_device *cd, struct device *device) { struct { char magic[LUKS2_MAGIC_L]; uint16_t version; } __attribute__ ((packed)) hdr; - struct device *device = NULL; - int r = 0, devfd = -1, flags; + int r = 0, devfd, flags = O_RDONLY; - if (!backup_file) - device = crypt_metadata_device(cd); - else if (device_alloc(cd, &device, backup_file) < 0) - return 0; - - if (!device) - return 0; + assert(cd); + assert(device); - flags = O_RDONLY; if (device_direct_io(device)) flags |= O_DIRECT; - devfd = open(device_path(device), flags); + devfd = device_open(cd, device, flags); if (devfd != -1 && (read_lseek_blockwise(devfd, device_block_size(cd, device), device_alignment(device), &hdr, sizeof(hdr), 0) == sizeof(hdr)) && !memcmp(hdr.magic, LUKS2_MAGIC_1ST, LUKS2_MAGIC_L)) r = (int)be16_to_cpu(hdr.version); - if (devfd != -1) - close(devfd); - - if (backup_file) - device_free(cd, device); - return r; } diff --git a/lib/setup.c b/lib/setup.c index 1c0f21e6f..da2333efb 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -830,7 +830,7 @@ static int _crypt_load_luks(struct crypt_device *cd, const char *requested_type, return r; /* This will return 0 if primary LUKS2 header is damaged */ - version = LUKS2_hdr_version_unlocked(cd, NULL); + version = LUKS2_hdr_version_unlocked(cd, crypt_metadata_device(cd)); if ((isLUKS1(requested_type) && version == 2) || (isLUKS2(requested_type) && version == 1)) @@ -4078,6 +4078,7 @@ int crypt_header_restore(struct crypt_device *cd, const char *requested_type, const char *backup_file) { + struct device *backup_device = NULL; struct luks_phdr hdr1; struct luks2_hdr hdr2; int r, version; @@ -4095,7 +4096,12 @@ int crypt_header_restore(struct crypt_device *cd, log_dbg(cd, "Requested header restore to device %s (%s) from " "file %s.", mdata_device_path(cd), requested_type ?: "any type", backup_file); - version = LUKS2_hdr_version_unlocked(cd, backup_file); + if (device_alloc(cd, &backup_device, backup_file) < 0) { + log_err(cd, _("Header backup file does not contain compatible LUKS header.")); + return -EINVAL; + } + + version = LUKS2_hdr_version_unlocked(cd, backup_device); if (!version || (requested_type && version == 1 && !isLUKS1(requested_type)) || (requested_type && version == 2 && !isLUKS2(requested_type))) { @@ -4125,6 +4131,7 @@ int crypt_header_restore(struct crypt_device *cd, if (!r) r = _crypt_load_luks(cd, version == 1 ? CRYPT_LUKS1 : CRYPT_LUKS2, false, true); + device_free(cd, backup_device); return r; } From 2fb52062e50300dbb20f02c32eeb529464a33a7f Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Tue, 28 Jul 2026 12:00:43 +0200 Subject: [PATCH 193/244] Initialize temporary header in crypt_header_restore early The temporary headers can be initialized on stack, no need to call memset later. --- lib/setup.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/setup.c b/lib/setup.c index da2333efb..3796c1743 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -4079,8 +4079,8 @@ int crypt_header_restore(struct crypt_device *cd, const char *backup_file) { struct device *backup_device = NULL; - struct luks_phdr hdr1; - struct luks2_hdr hdr2; + struct luks_phdr hdr1 = {0}; + struct luks2_hdr hdr2 = {0}; int r, version; if (requested_type && !isLUKS(requested_type)) @@ -4109,8 +4109,6 @@ int crypt_header_restore(struct crypt_device *cd, return -EINVAL; } - memset(&hdr2, 0, sizeof(hdr2)); - if (!cd->type) { if (version == 1) r = LUKS_hdr_restore(backup_file, &hdr1, cd); From da8e96507cfcd0071eca1c20037bcead18f49dde Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Tue, 28 Jul 2026 12:32:27 +0200 Subject: [PATCH 194/244] Make LUKS1 header restore use internal device struct This avoids unnecessary TOCTOU processing header backup file. Reported by Vivek Parikh, BreachX Zero Day Labs --- lib/luks1/keymanage.c | 42 +++++++++++++++++++----------------------- lib/luks1/luks.h | 5 +++-- lib/setup.c | 4 ++-- 3 files changed, 24 insertions(+), 27 deletions(-) diff --git a/lib/luks1/keymanage.c b/lib/luks1/keymanage.c index 269d55df2..b5f9507b9 100644 --- a/lib/luks1/keymanage.c +++ b/lib/luks1/keymanage.c @@ -274,7 +274,7 @@ int LUKS_hdr_backup(const char *backup_file, struct crypt_device *ctx) } int LUKS_hdr_restore( - const char *backup_file, + struct device *backup_device, struct luks_phdr *hdr, struct crypt_device *ctx) { @@ -284,7 +284,7 @@ int LUKS_hdr_restore( char *buffer = NULL, msg[200]; struct luks_phdr hdr_file; - r = LUKS_read_phdr_backup(backup_file, &hdr_file, 0, ctx); + r = LUKS_read_phdr_backup(backup_device, &hdr_file, 0, ctx); if (r == -ENOENT) return r; @@ -303,17 +303,17 @@ int LUKS_hdr_restore( goto out; } - fd = open(backup_file, O_RDONLY); + fd = device_open(ctx, backup_device, O_RDONLY); if (fd == -1) { - log_err(ctx, _("Cannot open header backup file %s."), backup_file); + log_err(ctx, _("Cannot open header backup file %s."), device_path(backup_device)); r = -EINVAL; goto out; } - ret = read_buffer(fd, buffer, buffer_size); - close(fd); + ret = read_lseek_blockwise(fd, device_block_size(ctx, backup_device), + device_alignment(backup_device), buffer, buffer_size, 0); if (ret < buffer_size) { - log_err(ctx, _("Cannot read header backup file %s."), backup_file); + log_err(ctx, _("Cannot read header backup file %s."), device_path(backup_device)); r = -EIO; goto out; } @@ -497,7 +497,7 @@ static int _keyslot_repair(struct luks_phdr *phdr, struct crypt_device *ctx) return r; } -static int _check_and_convert_hdr(const char *device, +static int _check_and_convert_hdr(const struct device *device, struct luks_phdr *hdr, int require_luks_device, int repair, @@ -511,7 +511,7 @@ static int _check_and_convert_hdr(const char *device, if (memcmp(hdr->magic, luksMagic, LUKS_MAGIC_L)) { /* Check magic */ log_dbg(ctx, "LUKS header not detected."); if (require_luks_device) - log_err(ctx, _("Device %s is not a valid LUKS device."), device); + log_err(ctx, _("Device %s is not a valid LUKS device."), device_path(device)); return -EINVAL; } else if (hdr->version != 1) { log_err(ctx, _("Unsupported LUKS version %d."), hdr->version); @@ -564,31 +564,28 @@ static int _check_and_convert_hdr(const char *device, return r; } -int LUKS_read_phdr_backup(const char *backup_file, +int LUKS_read_phdr_backup(struct device *backup_device, struct luks_phdr *hdr, int require_luks_device, struct crypt_device *ctx) { ssize_t hdr_size = sizeof(struct luks_phdr); - int devfd = 0, r = 0; + int devfd; log_dbg(ctx, "Reading LUKS header of size %d from backup file %s", - (int)hdr_size, backup_file); + (int)hdr_size, device_path(backup_device)); - devfd = open(backup_file, O_RDONLY); + devfd = device_open(ctx, backup_device, O_RDONLY); if (devfd == -1) { - log_err(ctx, _("Cannot open header backup file %s."), backup_file); + log_err(ctx, _("Cannot open header backup file %s."), device_path(backup_device)); return -ENOENT; } - if (read_buffer(devfd, hdr, hdr_size) < hdr_size) - r = -EIO; - else - r = _check_and_convert_hdr(backup_file, hdr, - require_luks_device, 0, ctx); + if (read_lseek_blockwise(devfd, device_block_size(ctx, backup_device), + device_alignment(backup_device), hdr, hdr_size, 0) < hdr_size) + return -EIO; - close(devfd); - return r; + return _check_and_convert_hdr(backup_device, hdr, require_luks_device, 0, ctx); } int LUKS_read_phdr(struct luks_phdr *hdr, @@ -622,8 +619,7 @@ int LUKS_read_phdr(struct luks_phdr *hdr, hdr, hdr_size, 0) < hdr_size) r = -EIO; else - r = _check_and_convert_hdr(device_path(device), hdr, require_luks_device, - repair, ctx); + r = _check_and_convert_hdr(device, hdr, require_luks_device, repair, ctx); if (!r) r = LUKS_check_device_size(ctx, hdr, 0); diff --git a/lib/luks1/luks.h b/lib/luks1/luks.h index 69cf9c9b9..bd652a890 100644 --- a/lib/luks1/luks.h +++ b/lib/luks1/luks.h @@ -56,6 +56,7 @@ converted */ struct volume_key; struct device_backend; +struct device; struct luks_phdr { char magic[LUKS_MAGIC_L]; @@ -107,7 +108,7 @@ int LUKS_read_phdr( struct crypt_device *ctx); int LUKS_read_phdr_backup( - const char *backup_file, + struct device *backup_device, struct luks_phdr *hdr, int require_luks_device, struct crypt_device *ctx); @@ -122,7 +123,7 @@ int LUKS_hdr_backup( struct crypt_device *ctx); int LUKS_hdr_restore( - const char *backup_file, + struct device *backup_device, struct luks_phdr *hdr, struct crypt_device *ctx); diff --git a/lib/setup.c b/lib/setup.c index 3796c1743..edebe2c18 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -4111,7 +4111,7 @@ int crypt_header_restore(struct crypt_device *cd, if (!cd->type) { if (version == 1) - r = LUKS_hdr_restore(backup_file, &hdr1, cd); + r = LUKS_hdr_restore(backup_device, &hdr1, cd); else r = LUKS2_hdr_restore(cd, &hdr2, backup_file); @@ -4122,7 +4122,7 @@ int crypt_header_restore(struct crypt_device *cd, if (r) (void) _crypt_load_luks2(cd, 1, 0); } else if (isLUKS1(cd->type) && (!requested_type || isLUKS1(requested_type))) - r = LUKS_hdr_restore(backup_file, &cd->u.luks1.hdr, cd); + r = LUKS_hdr_restore(backup_device, &cd->u.luks1.hdr, cd); else r = -EINVAL; From 5449c5e137b0d7a1b25892fd991b8f8e1d5be1ff Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Tue, 28 Jul 2026 13:18:36 +0200 Subject: [PATCH 195/244] Make LUKS2 header restore use internal device struct This avoids unnecessary TOCTOU processing header backup file. Reported by Vivek Parikh, BreachX Zero Day Labs --- lib/luks2/luks2.h | 2 +- lib/luks2/luks2_json_metadata.c | 26 +++++++++----------------- lib/setup.c | 4 ++-- 3 files changed, 12 insertions(+), 20 deletions(-) diff --git a/lib/luks2/luks2.h b/lib/luks2/luks2.h index 6c6afae53..fc06927a6 100644 --- a/lib/luks2/luks2.h +++ b/lib/luks2/luks2.h @@ -181,7 +181,7 @@ int LUKS2_hdr_backup(struct crypt_device *cd, const char *backup_file); int LUKS2_hdr_restore(struct crypt_device *cd, struct luks2_hdr *hdr, - const char *backup_file); + struct device *backup_device); uint64_t LUKS2_hdr_and_areas_size(struct luks2_hdr *hdr); uint64_t LUKS2_keyslots_size(struct luks2_hdr *hdr); diff --git a/lib/luks2/luks2_json_metadata.c b/lib/luks2/luks2_json_metadata.c index d9755c70c..c532576d8 100644 --- a/lib/luks2/luks2_json_metadata.c +++ b/lib/luks2/luks2_json_metadata.c @@ -1398,31 +1398,23 @@ int LUKS2_hdr_backup(struct crypt_device *cd, struct luks2_hdr *hdr, return r; } -int LUKS2_hdr_restore(struct crypt_device *cd, struct luks2_hdr *hdr, - const char *backup_file) +int LUKS2_hdr_restore(struct crypt_device *cd, struct luks2_hdr *hdr, struct device *backup_device) { - struct device *backup_device, *device = crypt_metadata_device(cd); + struct device *device = crypt_metadata_device(cd); int r, fd, devfd = -1, diff_uuid = 0; ssize_t ret, buffer_size = 0; char *buffer = NULL, msg[1024]; struct luks2_hdr hdr_file = {}, tmp_hdr = {}; uint32_t reqs = 0; - r = device_alloc(cd, &backup_device, backup_file); - if (r < 0) - return r; - r = device_read_lock(cd, backup_device); if (r) { - log_err(cd, _("Failed to acquire read lock on device %s."), - device_path(backup_device)); - device_free(cd, backup_device); + log_err(cd, _("Failed to acquire read lock on device %s."), device_path(backup_device)); return r; } r = LUKS2_disk_hdr_read(cd, &hdr_file, backup_device, 0, 0); device_read_unlock(cd, backup_device); - device_free(cd, backup_device); if (r < 0) { log_err(cd, _("Backup file does not contain valid LUKS header.")); @@ -1433,7 +1425,7 @@ int LUKS2_hdr_restore(struct crypt_device *cd, struct luks2_hdr *hdr, if (LUKS2_unmet_requirements(cd, &hdr_file, CRYPT_REQUIREMENT_ONLINE_REENCRYPT | CRYPT_REQUIREMENT_INLINE_HW_TAGS, 1)) { log_err(cd, _("Forbidden LUKS2 requirements detected in backup %s."), - backup_file); + device_path(backup_device)); r = -ETXTBSY; goto out; } @@ -1445,17 +1437,17 @@ int LUKS2_hdr_restore(struct crypt_device *cd, struct luks2_hdr *hdr, goto out; } - fd = open(backup_file, O_RDONLY); + fd = device_open(cd, backup_device, O_RDONLY); if (fd == -1) { - log_err(cd, _("Cannot open header backup file %s."), backup_file); + log_err(cd, _("Cannot open header backup file %s."), device_path(backup_device)); r = -EINVAL; goto out; } - ret = read_buffer(fd, buffer, buffer_size); - close(fd); + ret = read_lseek_blockwise(fd, device_block_size(cd, backup_device), + device_alignment(backup_device), buffer, buffer_size, 0); if (ret < buffer_size) { - log_err(cd, _("Cannot read header backup file %s."), backup_file); + log_err(cd, _("Cannot read header backup file %s."), device_path(backup_device)); r = -EIO; goto out; } diff --git a/lib/setup.c b/lib/setup.c index edebe2c18..82a1ae35b 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -4113,12 +4113,12 @@ int crypt_header_restore(struct crypt_device *cd, if (version == 1) r = LUKS_hdr_restore(backup_device, &hdr1, cd); else - r = LUKS2_hdr_restore(cd, &hdr2, backup_file); + r = LUKS2_hdr_restore(cd, &hdr2, backup_device); crypt_safe_memzero(&hdr1, sizeof(hdr1)); crypt_safe_memzero(&hdr2, sizeof(hdr2)); } else if (isLUKS2(cd->type) && (!requested_type || isLUKS2(requested_type))) { - r = LUKS2_hdr_restore(cd, &cd->u.luks2.hdr, backup_file); + r = LUKS2_hdr_restore(cd, &cd->u.luks2.hdr, backup_device); if (r) (void) _crypt_load_luks2(cd, 1, 0); } else if (isLUKS1(cd->type) && (!requested_type || isLUKS1(requested_type))) From eda8a2654769a700f36883cc58c2dc1659373838 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sun, 9 Aug 2026 23:58:45 +0200 Subject: [PATCH 196/244] integritysetup: add support for keyed discards An integrity device in standalone mode with a keyed integrity algorithm like HMAC and enabled discards (TRIM) could be vulnerable to wiping part of the device with a discard pattern. This issue can be worked around by using a keyed discards filler and the allow_discards_keyed device-mapper table option. Once set, it is set permanently in the superblock and cannot be reverted. This patch adds a new --allow-discards-keyed option to integritysetup; if used, it will upgrade the superblock and activate keyed discards. After the upgrade, even --allow-discards will also activate keyed discards. The patch also adds the CRYPT_COMPAT_LEGACY_INTEGRITY_DISCARD API flag that can be used to avoid discards upgrade. Note: do not use an integrity device with a keyed algorithm (like HMAC). Integritysetup was intended to be used with non-cryptographic integrity protection. If you need cryptographic protection, use LUKS2 and AEAD (discards are not supported in this configuration). --- lib/integrity/integrity.c | 7 ++++--- lib/integrity/integrity.h | 2 ++ lib/libcryptsetup.h | 2 ++ lib/libdevmapper.c | 16 ++++++++++++++-- lib/setup.c | 10 ++++++++++ lib/utils_dm.h | 2 ++ man/integritysetup.8.adoc | 9 ++++++++- src/integritysetup.c | 17 ++++++++++++----- src/integritysetup_arg_list.h | 2 ++ src/utils_arg_names.h | 1 + tests/integrity-compat-test | 32 ++++++++++++++++++++++++++++++++ 11 files changed, 89 insertions(+), 11 deletions(-) diff --git a/lib/integrity/integrity.c b/lib/integrity/integrity.c index 92da41ffb..8fe8a139a 100644 --- a/lib/integrity/integrity.c +++ b/lib/integrity/integrity.c @@ -46,7 +46,7 @@ static int INTEGRITY_read_superblock(struct crypt_device *cd, if (memcmp(sb->magic, SB_MAGIC, sizeof(sb->magic))) { log_dbg(cd, "No kernel dm-integrity metadata detected on %s.", device_path(device)); r = -EINVAL; - } else if (sb->version < SB_VERSION_1 || sb->version > SB_VERSION_6) { + } else if (sb->version < SB_VERSION_1 || sb->version > SB_VERSION_7) { log_err(cd, _("Incompatible kernel dm-integrity metadata (version %u) detected on %s."), sb->version, device_path(device)); r = -EINVAL; @@ -110,13 +110,14 @@ int INTEGRITY_dump(struct crypt_device *cd, struct device *device, uint64_t offs log_std(cd, "journal sections: %u\n", sb.journal_sections); log_std(cd, "log2 interleave sectors: %d\n", sb.log2_interleave_sectors); log_std(cd, "log2 blocks per bitmap: %u\n", sb.log2_blocks_per_bitmap_bit); - log_std(cd, "flags: %s%s%s%s%s%s\n", + log_std(cd, "flags: %s%s%s%s%s%s%s\n", sb.flags & SB_FLAG_HAVE_JOURNAL_MAC ? "have_journal_mac " : "", sb.flags & SB_FLAG_RECALCULATING ? "recalculating " : "", sb.flags & SB_FLAG_DIRTY_BITMAP ? "dirty_bitmap " : "", sb.flags & SB_FLAG_FIXED_PADDING ? "fix_padding " : "", sb.flags & SB_FLAG_FIXED_HMAC ? "fix_hmac " : "", - sb.flags & SB_FLAG_INLINE ? "inline " : ""); + sb.flags & SB_FLAG_INLINE ? "inline " : "", + sb.flags & SB_FLAG_DISCARD_KEYED ? "discards_keyed " : ""); return 0; } diff --git a/lib/integrity/integrity.h b/lib/integrity/integrity.h index fb0eebdf4..ec397dd54 100644 --- a/lib/integrity/integrity.h +++ b/lib/integrity/integrity.h @@ -25,6 +25,7 @@ struct crypt_dm_active_device; #define SB_VERSION_4 4 #define SB_VERSION_5 5 #define SB_VERSION_6 6 +#define SB_VERSION_7 7 #define SB_FLAG_HAVE_JOURNAL_MAC (1 << 0) #define SB_FLAG_RECALCULATING (1 << 1) /* V2 only */ @@ -32,6 +33,7 @@ struct crypt_dm_active_device; #define SB_FLAG_FIXED_PADDING (1 << 3) /* V4 only */ #define SB_FLAG_FIXED_HMAC (1 << 4) /* V5 only */ #define SB_FLAG_INLINE (1 << 5) /* V6 only */ +#define SB_FLAG_DISCARD_KEYED (1 << 6) /* V7 only */ struct superblock { uint8_t magic[8]; diff --git a/lib/libcryptsetup.h b/lib/libcryptsetup.h index 6d51e9173..4b9b00025 100644 --- a/lib/libcryptsetup.h +++ b/lib/libcryptsetup.h @@ -785,6 +785,8 @@ uint32_t crypt_get_compatibility(struct crypt_device *cd); #define CRYPT_COMPAT_LEGACY_INTEGRITY_RECALC (UINT32_C(1) << 2) /** disable SUM (Single User Mode) when formatting LUKS2 device w/ HW encryption (OPAL2) */ #define CRYPT_COMPAT_DISABLE_HW_OPAL_SUM (UINT32_C(1) << 3) +/** dm-integrity use non-keyed discard filler (old kernels) */ +#define CRYPT_COMPAT_LEGACY_INTEGRITY_DISCARD (UINT32_C(1) << 4) /** * Convert to new type for already existing device. diff --git a/lib/libdevmapper.c b/lib/libdevmapper.c index 42fc52047..03c9e5f0e 100644 --- a/lib/libdevmapper.c +++ b/lib/libdevmapper.c @@ -241,6 +241,9 @@ static void _dm_set_integrity_compat(struct crypt_device *cd, if (_dm_satisfies_version(1, 12, 0, integrity_maj, integrity_min, integrity_patch)) _dm_flags |= DM_INTEGRITY_INLINE_MODE_SUPPORTED; + if (_dm_satisfies_version(1, 15, 0, integrity_maj, integrity_min, integrity_patch)) + _dm_flags |= DM_INTEGRITY_DISCARD_KEYED_SUPPORTED; + _dm_integrity_checked = true; } @@ -875,7 +878,7 @@ static char *get_dm_integrity_params(const struct dm_target *tgt, uint32_t flags if (flags & CRYPT_ACTIVATE_ALLOW_DISCARDS) num_options++; - r = snprintf(features, max_size, "%d%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s", num_options, + r = snprintf(features, max_size, "%d%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s", num_options, tgt->u.integrity.journal_size ? _uf(feature[0], sizeof(feature[0]), /* MAX length 17 + int32 */ "journal_sectors", (unsigned)(tgt->u.integrity.journal_size / SECTOR_SIZE)) : "", tgt->u.integrity.journal_watermark ? _uf(feature[1], sizeof(feature[1]), /* MAX length 19 + int32 */ @@ -900,7 +903,8 @@ static char *get_dm_integrity_params(const struct dm_target *tgt, uint32_t flags tgt->u.integrity.legacy_recalc ? " legacy_recalculate" : "", /* MAX length 19 */ flags & CRYPT_ACTIVATE_RECALCULATE ? " recalculate" : "", /* MAX length 12 */ flags & CRYPT_ACTIVATE_RECALCULATE_RESET ? " reset_recalculate" : "", /* MAX length 18 */ - flags & CRYPT_ACTIVATE_ALLOW_DISCARDS ? " allow_discards" : "", /* MAX length 15 */ + (flags & CRYPT_ACTIVATE_ALLOW_DISCARDS) && !tgt->u.integrity.discard_keyed ? " allow_discards" : "", /* MAX length 15 */ + (flags & CRYPT_ACTIVATE_ALLOW_DISCARDS) && tgt->u.integrity.discard_keyed ? " allow_discards_keyed" : "", /* MAX length 21 */ tgt->u.integrity.meta_device ? " meta_device:" : "", /* MAX length 13 + str_device */ tgt->u.integrity.meta_device ? device_block_path(tgt->u.integrity.meta_device) : ""); if (r < 0 || r >= max_size) @@ -2714,6 +2718,9 @@ static int _dm_target_query_integrity(struct crypt_device *cd, tgt->u.integrity.legacy_recalc = true; } else if (!strcmp(arg, "allow_discards")) { *act_flags |= CRYPT_ACTIVATE_ALLOW_DISCARDS; + } else if (!strcmp(arg, "allow_discards_keyed")) { + *act_flags |= CRYPT_ACTIVATE_ALLOW_DISCARDS; + tgt->u.integrity.discard_keyed = true; } else /* unknown option */ goto err; } @@ -3479,6 +3486,11 @@ int dm_integrity_target_set(struct crypt_device *cd, if (crypt_get_compatibility(cd) & CRYPT_COMPAT_LEGACY_INTEGRITY_RECALC) tgt->u.integrity.legacy_recalc = true; + if (vk && !dm_flags(cd, DM_INTEGRITY, &dmi_flags) && + (dmi_flags & DM_INTEGRITY_DISCARD_KEYED_SUPPORTED) && + !(crypt_get_compatibility(cd) & CRYPT_COMPAT_LEGACY_INTEGRITY_DISCARD)) + tgt->u.integrity.discard_keyed = true; + if (ip) { tgt->u.integrity.journal_size = ip->journal_size; tgt->u.integrity.journal_watermark = ip->journal_watermark; diff --git a/lib/setup.c b/lib/setup.c index 82a1ae35b..1ae7cf24c 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -1005,6 +1005,12 @@ static int _crypt_load_integrity(struct crypt_device *cd, if (r < 0) goto out; + /* If superblock does not use keyed discard, keep compatibility flag */ + if (cd->u.integrity.sb_flags & SB_FLAG_DISCARD_KEYED) + cd->compatibility &= ~CRYPT_COMPAT_LEGACY_INTEGRITY_DISCARD; + else + cd->compatibility |= CRYPT_COMPAT_LEGACY_INTEGRITY_DISCARD; + // FIXME: add checks for fields in integrity sb vs params r = -ENOMEM; @@ -1502,6 +1508,10 @@ static int _init_by_name_integrity(struct crypt_device *cd, const char *name) if (tgt->u.integrity.journal_crypt_key) cd->u.integrity.params.journal_crypt_key_size = crypt_volume_key_length(tgt->u.integrity.journal_crypt_key); MOVE_REF(cd->metadata_device, tgt->u.integrity.meta_device); + if (tgt->u.integrity.discard_keyed) + cd->compatibility &= ~CRYPT_COMPAT_LEGACY_INTEGRITY_DISCARD; + else + cd->compatibility |= CRYPT_COMPAT_LEGACY_INTEGRITY_DISCARD; } out: dm_targets_free(cd, &dmd); diff --git a/lib/utils_dm.h b/lib/utils_dm.h index 7b8cb4658..3e9a812c7 100644 --- a/lib/utils_dm.h +++ b/lib/utils_dm.h @@ -67,6 +67,7 @@ static inline uint64_t act2dmflags(uint64_t act_flags) #define DM_CRYPT_INTEGRITY_KEY_SIZE_OPT_SUPPORTED (UINT64_C(1) << 30) /* dm-crypt support for integrity_key_size option */ #define DM_VERITY_ERROR_AS_CORRUPTION_SUPPORTED (UINT64_C(1) << 31) /* dm-verity restart/panic on corruption supported */ #define DM_INTEGRITY_INLINE_MODE_SUPPORTED (UINT64_C(1) << 32) /* dm-integrity inline mode supported */ +#define DM_INTEGRITY_DISCARD_KEYED_SUPPORTED (UINT64_C(1) << 33) /* dm-integrity discard keyed supported */ typedef enum { DM_CRYPT = 0, DM_VERITY, DM_INTEGRITY, DM_LINEAR, DM_ERROR, DM_ZERO, DM_UNKNOWN } dm_target_type; enum tdirection { TARGET_EMPTY = 0, TARGET_SET, TARGET_QUERY }; @@ -147,6 +148,7 @@ struct dm_target { bool fix_padding; bool fix_hmac; bool legacy_recalc; + bool discard_keyed; } integrity; struct { uint64_t offset; diff --git a/man/integritysetup.8.adoc b/man/integritysetup.8.adoc index 95842bbfd..c745f8149 100644 --- a/man/integritysetup.8.adoc +++ b/man/integritysetup.8.adoc @@ -44,7 +44,7 @@ Open a mapping with backed by device . If the integrity algorithm of the device is non-default, then the algorithm should be specified with the --integrity option. This will not be detected from the device. -** can be [--data-device, --batch-mode, --journal-watermark, --journal-commit-time, --buffer-sectors, --integrity, --integrity-key-size, --integrity-key-file, --integrity-no-journal, --integrity-recalculate, --integrity-recalculate-reset,--integrity-recovery-mode, --allow-discards]. +** can be [--data-device, --batch-mode, --journal-watermark, --journal-commit-time, --buffer-sectors, --integrity, --integrity-key-size, --integrity-key-file, --integrity-no-journal, --integrity-recalculate, --integrity-recalculate-reset,--integrity-recovery-mode, --allow-discards, --allow-discards-keyed]. === CLOSE *close * + @@ -82,6 +82,13 @@ Increasing the size of integrity volumes has been possible since the Linux kerne Allow the use of discard (TRIM) requests for the device. This option is available since the Linux kernel version 5.7. +*--allow-discards-keyed*:: +Enable secure keyed discard (TRIM) for the device. +This option can only be specified if a keyed algorithm (like HMAC) is used. +Once keyed discards are enabled, they are always used, even with the --allow-discard option. + +This option is available since Linux kernel version 7.3. + *--batch-mode*, *-q*:: Do not ask for confirmation. diff --git a/src/integritysetup.c b/src/integritysetup.c index f05c39397..28e8fe488 100644 --- a/src/integritysetup.c +++ b/src/integritysetup.c @@ -364,7 +364,7 @@ static int action_open(void) if (ARG_SET(OPT_INTEGRITY_RECALCULATE_RESET_ID)) activate_flags |= CRYPT_ACTIVATE_RECALCULATE_RESET; - if (ARG_SET(OPT_ALLOW_DISCARDS_ID)) + if (ARG_SET(OPT_ALLOW_DISCARDS_ID) || ARG_SET(OPT_ALLOW_DISCARDS_KEYED_ID)) activate_flags |= CRYPT_ACTIVATE_ALLOW_DISCARDS; if ((r = tools_check_newname(action_argv[1]))) @@ -383,12 +383,14 @@ static int action_open(void) goto out; } + /* Set in crypt_load according to superblock flag */ + if (!ARG_SET(OPT_ALLOW_DISCARDS_KEYED_ID)) + flags = crypt_get_compatibility(cd) & CRYPT_COMPAT_LEGACY_INTEGRITY_DISCARD; if (ARG_SET(OPT_INTEGRITY_LEGACY_HMAC_ID)) flags |= CRYPT_COMPAT_LEGACY_INTEGRITY_HMAC; if (ARG_SET(OPT_INTEGRITY_LEGACY_RECALC_ID)) flags |= CRYPT_COMPAT_LEGACY_INTEGRITY_RECALC; - if (flags) - crypt_set_compatibility(cd, flags); + crypt_set_compatibility(cd, flags); r = crypt_activate_by_volume_key(cd, action_argv[1], integrity_key, ARG_UINT32(OPT_INTEGRITY_KEY_SIZE_ID), activate_flags); @@ -519,9 +521,10 @@ static int action_status(void) if (ip.journal_crypt) log_std(" journal encryption: %s\n", ip.journal_crypt); } - if (cad.flags & (CRYPT_ACTIVATE_ALLOW_DISCARDS)) + if (cad.flags & CRYPT_ACTIVATE_ALLOW_DISCARDS) log_std(" flags: %s\n", - (cad.flags & CRYPT_ACTIVATE_ALLOW_DISCARDS) ? "discards " : ""); + (crypt_get_compatibility(cd) & CRYPT_COMPAT_LEGACY_INTEGRITY_DISCARD) ? + "discards" : "discards_keyed"); } out: crypt_free(cd); @@ -788,6 +791,10 @@ int main(int argc, const char **argv) usage(popt_context, EXIT_FAILURE, _("Inline mode cannot be combined with separate data device."), poptGetInvocationName(popt_context)); + if (ARG_SET(OPT_ALLOW_DISCARDS_KEYED_ID) && !ARG_SET(OPT_INTEGRITY_KEY_FILE_ID)) + usage(popt_context, EXIT_FAILURE, _("Keyed discards can be enabled only with keyed algorithms like HMAC."), + poptGetInvocationName(popt_context)); + if (ARG_SET(OPT_CANCEL_DEFERRED_ID) && ARG_SET(OPT_DEFERRED_ID)) usage(popt_context, EXIT_FAILURE, _("Options --cancel-deferred and --deferred cannot be used at the same time."), diff --git a/src/integritysetup_arg_list.h b/src/integritysetup_arg_list.h index 8f6d325b6..26603f2af 100644 --- a/src/integritysetup_arg_list.h +++ b/src/integritysetup_arg_list.h @@ -10,6 +10,8 @@ ARG(OPT_ALLOW_DISCARDS, '\0', POPT_ARG_NONE, N_("Allow discards (aka TRIM) requests for device"), NULL, CRYPT_ARG_BOOL, {}, OPT_ALLOW_DISCARDS_ACTIONS) +ARG(OPT_ALLOW_DISCARDS_KEYED, '\0', POPT_ARG_NONE, N_("Allow secure keyed discards (aka TRIM) requests for device"), NULL, CRYPT_ARG_BOOL, {}, OPT_ALLOW_DISCARDS_ACTIONS) + ARG(OPT_BATCH_MODE, 'q', POPT_ARG_NONE, N_("Do not ask for confirmation"), NULL, CRYPT_ARG_BOOL, {}, {}) ARG(OPT_BUFFER_SECTORS, '\0', POPT_ARG_STRING, N_("Buffers size"), N_("SECTORS"), CRYPT_ARG_UINT32, {}, {}) diff --git a/src/utils_arg_names.h b/src/utils_arg_names.h index e8777a834..677bd9da2 100644 --- a/src/utils_arg_names.h +++ b/src/utils_arg_names.h @@ -12,6 +12,7 @@ #define OPT_ACTIVE_NAME "active-name" #define OPT_ALIGN_PAYLOAD "align-payload" #define OPT_ALLOW_DISCARDS "allow-discards" +#define OPT_ALLOW_DISCARDS_KEYED "allow-discards-keyed" #define OPT_BATCH_MODE "batch-mode" #define OPT_BITMAP_FLUSH_TIME "bitmap-flush-time" #define OPT_BITMAP_SECTORS_PER_BIT "bitmap-sectors-per-bit" diff --git a/tests/integrity-compat-test b/tests/integrity-compat-test index 1e331b043..0f2b276d3 100755 --- a/tests/integrity-compat-test +++ b/tests/integrity-compat-test @@ -82,6 +82,7 @@ dm_integrity_features() } [ $VER_MIN -gt 5 ] && { DM_INTEGRITY_RESIZE_SUPPORTED=1 + DM_INTEGRITY_DISCARDS=1 } [ $VER_MIN -gt 6 ] && { DM_INTEGRITY_HMAC_FIX=1 @@ -95,6 +96,9 @@ dm_integrity_features() [ $VER_MIN -ge 13 ] && { DM_INTEGRITY_RECALCULATE_INLINE=1 } + [ $VER_MIN -ge 15 ] && { + DM_INTEGRITY_DISCARDS_KEYED=1 + } } add_device() { @@ -697,6 +701,34 @@ else echo "[N/A]" fi +echo -n "Discards flags:" +if [ -n "$DM_INTEGRITY_DISCARDS" ] ; then + add_device + echo -n "[DISCARDS]" + ARGS="--integrity hmac-sha256 --integrity-key-file $KEY_FILE --integrity-key-size 32" + $INTSETUP format -q $DEV --no-wipe --tag-size 32 $ARGS || fail "Cannot format device." + $INTSETUP open $DEV $DEV_NAME $ARGS || fail "Cannot activate device." + kernel_param_grep "allow_discards" && fail "allow_discards should not be set" + $INTSETUP close $DEV_NAME || fail "Cannot deactivate device." + $INTSETUP open $DEV $DEV_NAME $ARGS --allow-discards || fail "Cannot activate device." + kernel_param_grep "allow_discards" || fail "Missing allow_discards" + $INTSETUP close $DEV_NAME || fail "Cannot deactivate device." + if [ -n "$DM_INTEGRITY_DISCARDS_KEYED" ] ; then + echo -n "[DISCARDS_KEYED]" + $INTSETUP open $DEV $DEV_NAME $ARGS --allow-discards-keyed || fail "Cannot activate device." + kernel_param_grep "allow_discards_keyed" || fail "Missing allow_discards_keyed" + $INTSETUP dump $DEV | grep "flags" | grep -q "discards_keyed" || fail "Flag for discards_keyed not set." + $INTSETUP close $DEV_NAME || fail "Cannot deactivate device." + # Keyed now is permanent + $INTSETUP open $DEV $DEV_NAME $ARGS --allow-discards || fail "Cannot activate device." + kernel_param_grep "allow_discards_keyed" || fail "Missing allow_discards_keyed" + $INTSETUP close $DEV_NAME || fail "Cannot deactivate device." + fi + echo "[OK]" +else + echo "[N/A]" +fi + # shrinking the mapping should also work on older kernels echo -n "[INTEGRITY BASIC RESIZE NOKEY]" add_device From 31954692abb5f97bfa5f13f6f8628bbb554a3fa8 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Wed, 19 Aug 2026 11:50:52 +0200 Subject: [PATCH 197/244] Fix integer overflow in AF_split_sectors(). The AF split data size is computed as blocksize * blocknumbers and rounded up to the sector size without any overflow check. On builds where size_t is 32-bit, a crafted or tampered LUKS header with an oversized (but uint32-valid) key_size can wrap this multiplication, under-allocating the AF buffer while AF_merge() still walks it using the original key length. This causes a heap out-of-bounds read and a crash on the keyslot open path. Add overflow checks to AF_split_sectors() so it returns 0 on any wrap, and reject such headers early in LUKS_check_keyslots(). Reported by: Aisle Research Co-Authored-By: Claude Opus 4.8 --- lib/luks1/af.c | 7 +++++++ lib/luks1/keymanage.c | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/lib/luks1/af.c b/lib/luks1/af.c index 3da43e16c..4710567a2 100644 --- a/lib/luks1/af.c +++ b/lib/luks1/af.c @@ -10,6 +10,7 @@ */ #include +#include #include #include #include @@ -147,9 +148,15 @@ size_t AF_split_sectors(size_t blocksize, unsigned int blocknumbers) { size_t af_size; + if (!blocknumbers || blocksize >= (SIZE_MAX / blocknumbers)) + return 0; + /* data material * stripes */ af_size = blocksize * blocknumbers; + if (af_size >= (SIZE_MAX - SECTOR_SIZE + 1)) + return 0; + /* round up to sector */ af_size = (af_size + (SECTOR_SIZE - 1)) / SECTOR_SIZE; diff --git a/lib/luks1/keymanage.c b/lib/luks1/keymanage.c index b5f9507b9..de5e696f0 100644 --- a/lib/luks1/keymanage.c +++ b/lib/luks1/keymanage.c @@ -127,6 +127,11 @@ static int LUKS_check_keyslots(struct crypt_device *ctx, const struct luks_phdr int i, prev, next, sorted_areas[LUKS_NUMKEYS] = { 0, 1, 2, 3, 4, 5, 6, 7 }; uint32_t secs_per_stripes = AF_split_sectors(phdr->keyBytes, LUKS_STRIPES); + if (!secs_per_stripes) { + log_dbg(ctx, "Invalid volume key size."); + return -1; + } + LUKS_sort_keyslots(phdr, sorted_areas); /* Check keyslot to prevent access outside of header and keyslot area */ From 1d7f5daa0bc15f1f609ad1c8beaa68c8b6f9e2ec Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Wed, 19 Aug 2026 13:29:36 +0200 Subject: [PATCH 198/244] Minor code style improvements in LUKS1. --- lib/luks1/af.c | 4 +--- lib/luks1/keymanage.c | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/luks1/af.c b/lib/luks1/af.c index 4710567a2..2f10ec648 100644 --- a/lib/luks1/af.c +++ b/lib/luks1/af.c @@ -158,7 +158,5 @@ size_t AF_split_sectors(size_t blocksize, unsigned int blocknumbers) return 0; /* round up to sector */ - af_size = (af_size + (SECTOR_SIZE - 1)) / SECTOR_SIZE; - - return af_size; + return (af_size + (SECTOR_SIZE - 1)) / SECTOR_SIZE; } diff --git a/lib/luks1/keymanage.c b/lib/luks1/keymanage.c index de5e696f0..c33efe17e 100644 --- a/lib/luks1/keymanage.c +++ b/lib/luks1/keymanage.c @@ -27,7 +27,7 @@ int LUKS_keyslot_area(const struct luks_phdr *hdr, uint64_t *offset, uint64_t *length) { - if(keyslot >= LUKS_NUMKEYS || keyslot < 0) + if (keyslot >= LUKS_NUMKEYS || keyslot < 0) return -EINVAL; *offset = (uint64_t)hdr->keyblock[keyslot].keyMaterialOffset * SECTOR_SIZE; From e3b901de8b8791df2f7fc8c9a79bcde2915c594e Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Fri, 28 Aug 2026 19:56:57 +0200 Subject: [PATCH 199/244] Fix error path in crypt_header_restore The backup device can leak, fix it. Found by Coverity scanner. --- lib/setup.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/setup.c b/lib/setup.c index 1ae7cf24c..425cfd4d7 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -4116,7 +4116,8 @@ int crypt_header_restore(struct crypt_device *cd, (requested_type && version == 1 && !isLUKS1(requested_type)) || (requested_type && version == 2 && !isLUKS2(requested_type))) { log_err(cd, _("Header backup file does not contain compatible LUKS header.")); - return -EINVAL; + r = -EINVAL; + goto out; } if (!cd->type) { @@ -4138,7 +4139,7 @@ int crypt_header_restore(struct crypt_device *cd, if (!r) r = _crypt_load_luks(cd, version == 1 ? CRYPT_LUKS1 : CRYPT_LUKS2, false, true); - +out: device_free(cd, backup_device); return r; } From eef2e3e13a0db5d07a9c8430ffc6513c121767cb Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Mon, 31 Aug 2026 16:35:02 +0200 Subject: [PATCH 200/244] bitlk: prevent non-terminating loop on activation The BITLK activation path builds dm-zero and dm-crypt segments directly from metadata-supplied offsets and sizes (metadata_offset[], volume_header_offset, volume_header_size) without validating them against the device size. The gap-filling loop in _activate() then assumes the segments tile the device up to dmd.size. Reject metadata-derived segments that fall outside the device before the gap-filling loop, and stop the loop when the non-progressing branch runs past the end of the device, so malformed metadata is refused with -EINVAL instead of spinning forever. Reported-by: Aisle Research Co-Authored-By: Claude Opus 4.8 --- lib/bitlk/bitlk.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/bitlk/bitlk.c b/lib/bitlk/bitlk.c index 84bb1c51a..772442956 100644 --- a/lib/bitlk/bitlk.c +++ b/lib/bitlk/bitlk.c @@ -1512,6 +1512,15 @@ static int _activate(struct crypt_device *cd, segments[num_segments].type = BITLK_SEGTYPE_CRYPT; num_segments++; + /* reject malformed bitlk metadata. Segments out of device bounds cause infinite loop */ + for (i = 0; i < num_segments; i++) { + if (segments[i].offset >= dmd.size || segments[i].iv_offset >= dmd.size || + (segments[i].length > dmd.size - segments[i].offset)) { + log_dbg(cd, "Malformed BITLK metadata: segment out of device bounds"); + return -EINVAL; + } + } + /* now fill gaps between the dm-zero segments with dm-crypt */ last_segment = params->volume_header_size / SECTOR_SIZE; while (true) { @@ -1531,6 +1540,12 @@ static int _activate(struct crypt_device *cd, /* two zero segments next to each other, just bump the last_segment so the algorithm moves */ if (next_end - next_start == 0) { + /* nothing left to add: malformed metadata */ + if (next_start >= dmd.size) { + log_dbg(cd, "BITLK segment layout does not cover device."); + r = -EINVAL; + goto out; + } last_segment = next_end + 1; continue; } From 10c43e61aa1cf2e12fbeae4307d0147cae1b51f5 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Tue, 1 Sep 2026 19:38:37 +0200 Subject: [PATCH 201/244] bitlk: harden volume key size check If a crafted image is opened, the allocated buffer size for key can be wrong. This can happen if the encryption is changed from AES-CBC-128 to mode with Elephant diffuser without recalculation of stored key. Note that creating such incorrect image requires disk password, as the metadata are protected by MAC. The code fixes the error path to fail instead of accessing the wrongly allocated buffer. Reported-by: Aisle Research --- lib/bitlk/bitlk.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/bitlk/bitlk.c b/lib/bitlk/bitlk.c index 772442956..6c15a8ccc 100644 --- a/lib/bitlk/bitlk.c +++ b/lib/bitlk/bitlk.c @@ -1237,6 +1237,13 @@ static int decrypt_key(struct crypt_device *cd, if (is_fvek && strcmp(crypt_get_cipher_mode(cd), "cbc-elephant") == 0 && crypt_get_volume_key_size(cd) == 32) { + if (crypt_volume_key_length(enc_key) < (2 * 16 + BITLK_OPEN_KEY_METADATA_LEN + 16)) { + log_dbg(cd, "Unexpected volume key size: %i, decrypted key size %zu", + crypt_get_volume_key_size(cd), + crypt_volume_key_length(enc_key)); + r = -EINVAL; + goto out; + } /* 128bit AES-CBC with Elephant -- key size is 256 bit (2 keys) but key data is 512 bits, data: 16B CBC key, 16B empty, 16B elephant key, 16B empty */ crypt_safe_memcpy(outbuf + 16 + BITLK_OPEN_KEY_METADATA_LEN, @@ -1244,7 +1251,6 @@ static int decrypt_key(struct crypt_device *cd, key_size = 32 + BITLK_OPEN_KEY_METADATA_LEN; } - *vk = crypt_alloc_volume_key(key_size - BITLK_OPEN_KEY_METADATA_LEN, (const char *)(outbuf + BITLK_OPEN_KEY_METADATA_LEN)); r = *vk ? 0 : -ENOMEM; From 4059e0eeeeba00f3fec98fb665d486139dbf2a15 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Wed, 2 Sep 2026 13:06:50 +0200 Subject: [PATCH 202/244] Renumber unreleased compat flags To allow clear backport, swap OPAL and keyed discard flag in libcryptsetup.h. The keyed discard needs to be backported as it is a security fix, OPAL SUM mode will be released later. --- lib/libcryptsetup.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/libcryptsetup.h b/lib/libcryptsetup.h index 4b9b00025..365434cab 100644 --- a/lib/libcryptsetup.h +++ b/lib/libcryptsetup.h @@ -783,10 +783,10 @@ uint32_t crypt_get_compatibility(struct crypt_device *cd); #define CRYPT_COMPAT_LEGACY_INTEGRITY_HMAC (UINT32_C(1) << 1) /** dm-integrity allow recalculating of volumes with HMAC keys (old kernels) */ #define CRYPT_COMPAT_LEGACY_INTEGRITY_RECALC (UINT32_C(1) << 2) -/** disable SUM (Single User Mode) when formatting LUKS2 device w/ HW encryption (OPAL2) */ -#define CRYPT_COMPAT_DISABLE_HW_OPAL_SUM (UINT32_C(1) << 3) /** dm-integrity use non-keyed discard filler (old kernels) */ -#define CRYPT_COMPAT_LEGACY_INTEGRITY_DISCARD (UINT32_C(1) << 4) +#define CRYPT_COMPAT_LEGACY_INTEGRITY_DISCARD (UINT32_C(1) << 3) +/** disable SUM (Single User Mode) when formatting LUKS2 device w/ HW encryption (OPAL2) */ +#define CRYPT_COMPAT_DISABLE_HW_OPAL_SUM (UINT32_C(1) << 4) /** * Convert to new type for already existing device. From e73176ab29991e9d5daf6dc250e014a0a1b7315a Mon Sep 17 00:00:00 2001 From: Antonio Ceballos Date: Wed, 2 Sep 2026 15:06:30 +0200 Subject: [PATCH 203/244] po: update es.po (from translationproject.org) --- po/es.po | 1282 +++++++++++++++++++++++++++--------------------------- 1 file changed, 644 insertions(+), 638 deletions(-) diff --git a/po/es.po b/po/es.po index 724c248b5..6baf2131b 100644 --- a/po/es.po +++ b/po/es.po @@ -73,10 +73,10 @@ # msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.2-rc0\n" +"Project-Id-Version: cryptsetup 2.8.7-rc2\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2025-12-12 18:51+0100\n" -"PO-Revision-Date: 2026-01-17 19:37+0200\n" +"POT-Creation-Date: 2026-07-09 10:46+0200\n" +"PO-Revision-Date: 2026-08-21 11:22+0200\n" "Last-Translator: Antonio Ceballos \n" "Language-Team: Spanish \n" "Language: es\n" @@ -145,7 +145,7 @@ msgid "Requested automatic recalculation of integrity tags is not supported." msgstr "El recómputo automático de las etiquetas de integridad solicitado no está disponible." #: lib/libdevmapper.c:1802 lib/libdevmapper.c:1856 lib/libdevmapper.c:1859 -#: lib/luks2/luks2_json_metadata.c:2781 +#: lib/luks2/luks2_json_metadata.c:2799 msgid "Discard/TRIM is not supported." msgstr "Descartar/TRIM no disponible." @@ -191,670 +191,670 @@ msgstr "La calidad solicitada para el generador de números aleatorios es descon msgid "Error reading from RNG." msgstr "Error leyendo del generador de números aleatorios." -#: lib/setup.c:248 +#: lib/setup.c:251 msgid "OPAL support is disabled in libcryptsetup." msgstr "El soporte de OPAL está desactivado en libcryptsetup." -#: lib/setup.c:250 +#: lib/setup.c:253 #, c-format msgid "Device %s or kernel does not support OPAL encryption." msgstr "El dispositivo %s o el núcleo no disponen de cifrado OPAL." -#: lib/setup.c:266 +#: lib/setup.c:269 msgid "Cannot initialize crypto RNG backend." msgstr "No se puede inicializar el «backend» del generador de números aleatorios de cifrado." -#: lib/setup.c:272 +#: lib/setup.c:275 msgid "Cannot initialize crypto backend." msgstr "No se puede inicializar el «backend» de cifrado." -#: lib/setup.c:305 lib/setup.c:2766 lib/verity/verity.c:109 +#: lib/setup.c:308 lib/setup.c:2769 lib/verity/verity.c:109 #, c-format msgid "Hash algorithm %s not supported." msgstr "Algoritmo «hash» %s no disponible." -#: lib/setup.c:308 lib/loopaes/loopaes.c:78 +#: lib/setup.c:311 lib/loopaes/loopaes.c:78 #, c-format msgid "Key processing error (using hash %s)." msgstr "Error de procesamiento de la clave (usando «hash» %s)." -#: lib/setup.c:389 lib/setup.c:426 +#: lib/setup.c:392 lib/setup.c:429 msgid "Cannot determine device type. Incompatible activation of device?" msgstr "No se puede determinar el tipo de dispositivo. ¿Es incompatible la activación del dispositivo?" -#: lib/setup.c:395 lib/setup.c:4160 +#: lib/setup.c:398 lib/setup.c:4177 msgid "This operation is supported only for LUKS device." msgstr "Esta operación solamente está disponible para dispositivos LUKS." -#: lib/setup.c:432 +#: lib/setup.c:435 msgid "This operation is supported only for LUKS2 device." msgstr "Esta operación solamente está disponible para dispositivos LUKS2." -#: lib/setup.c:489 lib/luks2/luks2_reencrypt.c:3101 +#: lib/setup.c:492 lib/luks2/luks2_reencrypt.c:3102 msgid "All key slots full." msgstr "Todas las ranuras de claves están llenas." -#: lib/setup.c:500 +#: lib/setup.c:503 #, c-format msgid "Key slot %d is invalid, please select between 0 and %d." msgstr "La ranura de claves %d no es válida; seleccione un número entre 0 y %d." -#: lib/setup.c:506 +#: lib/setup.c:509 #, c-format msgid "Key slot %d is full, please select another one." msgstr "La ranura de claves %d está llena; seleccione otra." -#: lib/setup.c:531 lib/setup.c:3875 +#: lib/setup.c:534 lib/setup.c:3878 msgid "Device size is not aligned to device logical block size." msgstr "El tamaño del dispositivo no está alineado con el tamaño de bloque lógico del dispositivo." -#: lib/setup.c:628 +#: lib/setup.c:631 #, c-format msgid "Header detected but device %s is too small." msgstr "Cabecera detectada pero el dispositivo %s es demasiado pequeño." -#: lib/setup.c:669 lib/setup.c:3760 lib/setup.c:5227 -#: lib/luks2/luks2_reencrypt.c:3945 lib/luks2/luks2_reencrypt.c:4434 +#: lib/setup.c:672 lib/setup.c:3763 lib/setup.c:5272 +#: lib/luks2/luks2_reencrypt.c:3949 lib/luks2/luks2_reencrypt.c:4438 msgid "This operation is not supported for this device type." msgstr "Esta operación no está disponible para este tipo de dispositivo." -#: lib/setup.c:674 +#: lib/setup.c:677 msgid "Illegal operation with reencryption in-progress." msgstr "Operación con recifrado en curso no válida." -#: lib/setup.c:806 +#: lib/setup.c:809 msgid "Failed to rollback LUKS2 metadata in memory." msgstr "No se han podido echar atrás los metadatos de LUKS2 en memoria." -#: lib/setup.c:893 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 -#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1782 -#: src/cryptsetup.c:1966 src/cryptsetup.c:2021 src/cryptsetup.c:2219 -#: src/cryptsetup.c:2364 src/cryptsetup.c:2642 src/cryptsetup.c:2955 -#: src/cryptsetup.c:3023 src/utils_reencrypt.c:2281 +#: lib/setup.c:896 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 +#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 +#: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 +#: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2954 +#: src/cryptsetup.c:3022 src/utils_reencrypt.c:2284 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." msgstr "El dispositivo %s no es un dispositivo LUKS válido." -#: lib/setup.c:896 lib/luks1/keymanage.c:517 +#: lib/setup.c:899 lib/luks1/keymanage.c:517 #, c-format msgid "Unsupported LUKS version %d." msgstr "Versión LUKS no disponible %d." -#: lib/setup.c:1270 +#: lib/setup.c:1273 #, c-format msgid "No known cipher specification pattern detected for active device %s." msgstr "No se ha detectado ningún patrón conocido de especificación de cifrado para el dispositivo activo %s." -#: lib/setup.c:1515 lib/setup.c:3507 lib/setup.c:3599 lib/setup.c:3611 -#: lib/setup.c:3783 lib/setup.c:5805 +#: lib/setup.c:1518 lib/setup.c:3510 lib/setup.c:3602 lib/setup.c:3614 +#: lib/setup.c:3786 lib/setup.c:5850 #, c-format msgid "Device %s is not active." msgstr "El dispositivo %s no está activo." -#: lib/setup.c:1532 +#: lib/setup.c:1535 #, c-format msgid "Underlying device for crypt device %s disappeared." msgstr "El dispositivo subyacente asociado al dispositivo cifrado %s ha desaparecido." -#: lib/setup.c:1614 +#: lib/setup.c:1617 msgid "Invalid plain crypt parameters." msgstr "Parámetros de cifrado para modo claro no válidos." -#: lib/setup.c:1619 lib/setup.c:2669 +#: lib/setup.c:1622 lib/setup.c:2672 msgid "Invalid key size." msgstr "Tamaño de clave no válido." -#: lib/setup.c:1624 lib/setup.c:2674 lib/setup.c:2879 +#: lib/setup.c:1627 lib/setup.c:2677 lib/setup.c:2882 msgid "UUID is not supported for this crypt type." msgstr "El UUID no está disponible para este tipo de cifrado." -#: lib/setup.c:1629 lib/setup.c:2679 +#: lib/setup.c:1632 lib/setup.c:2682 msgid "Detached metadata device is not supported for this crypt type." msgstr "El dispositivo de metadatos separado no está disponible para este tipo de cifrado." -#: lib/setup.c:1639 lib/setup.c:1887 lib/luks2/luks2_reencrypt.c:3034 -#: src/cryptsetup.c:1494 src/cryptsetup.c:3762 +#: lib/setup.c:1642 lib/setup.c:1890 lib/luks2/luks2_reencrypt.c:3035 +#: src/cryptsetup.c:1492 src/cryptsetup.c:3761 msgid "Unsupported encryption sector size." msgstr "Tamaño de sector de cifrado no admitido." -#: lib/setup.c:1647 lib/setup.c:1916 lib/setup.c:3869 +#: lib/setup.c:1650 lib/setup.c:1919 lib/setup.c:3872 msgid "Device size is not aligned to requested sector size." msgstr "El tamaño del dispositivo no está alineado con el tamaño del sector solicitado." -#: lib/setup.c:1699 lib/setup.c:1951 lib/setup.c:2328 +#: lib/setup.c:1702 lib/setup.c:1954 lib/setup.c:2331 msgid "Can't format LUKS without device." msgstr "Imposible dar formato LUKS sin dispositivo." -#: lib/setup.c:1704 lib/setup.c:1956 +#: lib/setup.c:1707 lib/setup.c:1959 #, c-format msgid "Zoned device %s cannot be used for LUKS header." msgstr "El dispositivo zonificado %s no puede utilizarse para cabecera LUKS." -#: lib/setup.c:1711 lib/setup.c:1963 lib/setup.c:2334 +#: lib/setup.c:1714 lib/setup.c:1966 lib/setup.c:2337 msgid "Requested data alignment is not compatible with data offset." msgstr "El alineamiento de datos solicitado no es compatible con el desplazamiento de los datos." -#: lib/setup.c:1751 lib/setup.c:1981 +#: lib/setup.c:1754 lib/setup.c:1984 msgid "WARNING: DAX device can corrupt data as it does not guarantee atomic sector updates.\n" msgstr "ATENCIÓN: El dispositivo DAX puede corromper datos ya que no garantiza actualizaciones de sector atómicas.\n" -#: lib/setup.c:1789 lib/setup.c:2088 lib/setup.c:2109 lib/setup.c:2517 -#: lib/setup.c:2564 lib/setup.c:2896 +#: lib/setup.c:1792 lib/setup.c:2091 lib/setup.c:2112 lib/setup.c:2520 +#: lib/setup.c:2567 lib/setup.c:2899 #, c-format msgid "Cannot wipe header on device %s." msgstr "No se puede limpiar la cabecera del dispositivo %s." -#: lib/setup.c:1802 lib/setup.c:2161 +#: lib/setup.c:1805 lib/setup.c:2164 #, c-format msgid "Device %s is too small for activation, there is no remaining space for data.\n" msgstr "El dispositivo %s es demasiado pequeño para ser activado; no queda espacio para los datos.\n" -#: lib/setup.c:1843 +#: lib/setup.c:1846 msgid "Volume key is too small for encryption with integrity extensions." msgstr "La clave del volumen es demasiado pequeña para cifrado con extensiones de integridad." -#: lib/setup.c:1847 +#: lib/setup.c:1850 msgid "Integrity key size is too small." msgstr "El tamaño de la clave de integridad es demasiado pequeño." -#: lib/setup.c:1856 +#: lib/setup.c:1859 #, c-format msgid "Cipher %s-%s (key size %zd bits) is not available." msgstr "El algoritmo de cifrado %s-%s (tamaño de clave %zd bits) no está disponible." -#: lib/setup.c:1897 +#: lib/setup.c:1900 msgid "WARNING: The device activation will fail, dm-crypt is missing support for requested encryption sector size.\n" msgstr "ATENCIÓN: La activación del dispositivo va a fallar; dm-crypt no admite el tamaño de sector de cifrado solicitado.\n" -#: lib/setup.c:2091 lib/setup.c:2458 lib/setup.c:2520 lib/utils_device.c:896 -#: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3073 -#: lib/luks2/luks2_reencrypt.c:4494 +#: lib/setup.c:2094 lib/setup.c:2461 lib/setup.c:2523 lib/utils_device.c:906 +#: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3074 +#: lib/luks2/luks2_reencrypt.c:4498 #, c-format msgid "Device %s is too small." msgstr "El dispositivo %s es demasiado pequeño." -#: lib/setup.c:2102 lib/setup.c:2141 lib/setup.c:2557 lib/setup.c:2615 +#: lib/setup.c:2105 lib/setup.c:2144 lib/setup.c:2560 lib/setup.c:2618 #, c-format msgid "Cannot format device %s in use." msgstr "No se puede dar formato al dispositivo %s en uso." -#: lib/setup.c:2105 lib/setup.c:2144 lib/setup.c:2560 lib/setup.c:2618 +#: lib/setup.c:2108 lib/setup.c:2147 lib/setup.c:2563 lib/setup.c:2621 #, c-format msgid "Cannot format device %s, permission denied." msgstr "No se puede dar formato al dispositivo %s; permiso denegado." -#: lib/setup.c:2129 lib/setup.c:2587 lib/setup.c:2969 +#: lib/setup.c:2132 lib/setup.c:2590 lib/setup.c:2972 #, c-format msgid "Cannot format integrity for device %s." msgstr "No se puede dar formato a la integridad del dispositivo %s." -#: lib/setup.c:2148 lib/setup.c:2626 +#: lib/setup.c:2151 lib/setup.c:2629 #, c-format msgid "Cannot format device %s." msgstr "No se puede dar formato al dispositivo %s." -#: lib/setup.c:2191 +#: lib/setup.c:2194 msgid "Cannot get OPAL alignment parameters." msgstr "No se pueden obtener los parámetros de alineamiento OPAL." -#: lib/setup.c:2203 +#: lib/setup.c:2206 msgid "Bogus OPAL logical block size." msgstr "Tamaño de bloque lógico OPAL falso." -#: lib/setup.c:2208 lib/luks2/hw_opal/hw_opal.c:305 +#: lib/setup.c:2211 lib/luks2/hw_opal/hw_opal.c:305 msgid "Bogus OPAL logical block size differs from device block size." msgstr "Tamaño de bloque lógico OPAL falso difiere del tamaño de bloque del dispositivo." -#: lib/setup.c:2214 +#: lib/setup.c:2217 msgid "Requested data offset is not compatible with OPAL block size." msgstr "El desplazamiento de datos solicitado no es compatible con el tamaño de bloque OPAL." -#: lib/setup.c:2221 +#: lib/setup.c:2224 msgid "Requested data alignment is not compatible with OPAL alignment." msgstr "El alineamiento de datos solicitado no es compatible con el alineamiento OPAL." -#: lib/setup.c:2241 +#: lib/setup.c:2244 msgid "Data offset does not satisfy OPAL alignment requirements." msgstr "El desplazamiento de datos no satisface los requisitos de alineamiento OPAL." -#: lib/setup.c:2254 +#: lib/setup.c:2257 msgid "Requested data alignment does not satisfy locking range alignment requirements." msgstr "El alineamiento de datos solicitado no satisface los requisitos de alineamiento del rango de bloqueo." -#: lib/setup.c:2468 +#: lib/setup.c:2471 #, c-format msgid "Compensating device size by % sectors to align it with OPAL alignment granularity." msgstr "Compensando el tamaño de dispositivo con % sectores para alinearlo con la granularidad de alienamiento OPAL." -#: lib/setup.c:2528 lib/setup.c:4243 lib/setup.c:4432 lib/utils_wipe.c:356 -#: lib/luks2/luks2_json_metadata.c:2724 lib/luks2/luks2_json_metadata.c:2992 +#: lib/setup.c:2531 lib/setup.c:4260 lib/setup.c:4466 lib/utils_wipe.c:356 +#: lib/luks2/luks2_json_metadata.c:2742 lib/luks2/luks2_json_metadata.c:3017 #, c-format msgid "Failed to acquire OPAL lock on device %s." msgstr "No se ha podido adquirir el bloqueo OPAL para el dispositivo %s." -#: lib/setup.c:2538 +#: lib/setup.c:2541 msgid "Incorrect OPAL Admin key." msgstr "Clave de administrador de OPAL incorrecta." -#: lib/setup.c:2540 +#: lib/setup.c:2543 msgid "Cannot setup OPAL segment." msgstr "No se puede configurar el segmento de OPAL." -#: lib/setup.c:2622 +#: lib/setup.c:2625 #, c-format msgid "Cannot format device %s, OPAL device seems to be fully write-protected now." msgstr "No se puede dar formato al dispositivo %s; parece que el dispositivo OPAL está completamente protegido contra escritura actualmente." -#: lib/setup.c:2624 +#: lib/setup.c:2627 msgid "This is perhaps a bug in firmware. Run OPAL PSID reset and reconnect for recovery." msgstr "Quizá esto sea un error del firmware. Ejecute un reinicio PSID OPAL y reconecte para recuperar." -#: lib/setup.c:2644 +#: lib/setup.c:2647 #, c-format msgid "Locking range %d reset on device %s failed." msgstr "El reinicio del rango %d de bloqueo del dispositivo %s ha fallado." -#: lib/setup.c:2664 +#: lib/setup.c:2667 msgid "Can't format LOOPAES without device." msgstr "Imposible dar formato LOOPAES sin dispositivo." -#: lib/setup.c:2709 +#: lib/setup.c:2712 msgid "Can't format VERITY without device." msgstr "Imposible dar formato VERITY sin dispositivo." -#: lib/setup.c:2720 lib/verity/verity.c:88 +#: lib/setup.c:2723 lib/verity/verity.c:88 #, c-format msgid "Unsupported VERITY hash type %d." msgstr "Tipo de «hash» VERITY %d no disponible." -#: lib/setup.c:2726 lib/verity/verity.c:96 +#: lib/setup.c:2729 lib/verity/verity.c:96 msgid "Unsupported VERITY block size." msgstr "Tamaño de bloque VERITY no disponible." -#: lib/setup.c:2731 lib/verity/verity.c:61 +#: lib/setup.c:2734 lib/verity/verity.c:61 msgid "Unsupported VERITY hash offset." msgstr "Desplazamiento «hash» VERITY no disponible." -#: lib/setup.c:2736 +#: lib/setup.c:2739 msgid "Unsupported VERITY FEC offset." msgstr "Desplazamiento FEC VERITY no disponible." -#: lib/setup.c:2760 +#: lib/setup.c:2763 msgid "Data area overlaps with hash area." msgstr "La zona de datos se solapa con la zona «hash»." -#: lib/setup.c:2785 +#: lib/setup.c:2788 msgid "Hash area overlaps with FEC area." msgstr "La zona «hash» se solapa con la zona FEC." -#: lib/setup.c:2792 +#: lib/setup.c:2795 msgid "Data area overlaps with FEC area." msgstr "La zona de datos se solapa con la zona FEC." -#: lib/setup.c:2884 +#: lib/setup.c:2887 msgid "Integrity key size mismatch." msgstr "Tamaño de la clave de integridad discordante." -#: lib/setup.c:2935 +#: lib/setup.c:2938 #, c-format msgid "WARNING: Requested tag size %d bytes differs from %s size output (%d bytes).\n" msgstr "ATENCIÓN: El tamaño de etiqueta de %d bytes solicitado difiere del tamaño de salida de %s (%d bytes).\n" -#: lib/setup.c:3048 lib/setup.c:3150 +#: lib/setup.c:3051 lib/setup.c:3153 #, c-format msgid "Unknown or unsupported device type %s requested." msgstr "El tipo de dispositivo %s solicitado es desconocido o no está disponible." -#: lib/setup.c:3064 +#: lib/setup.c:3067 #, c-format msgid "Device %s does not provide inline integrity data fields." msgstr "El dispositivo %s no ofrece campos de datos de integridad en línea." -#: lib/setup.c:3070 +#: lib/setup.c:3073 #, c-format msgid "Inline tag size % [bytes] is larger than % provided by device %s." msgstr "El tamaño de etiqueta en línea % [bytes] es mayor que % proporcionado por el dispositivo %s." -#: lib/setup.c:3085 +#: lib/setup.c:3088 #, c-format msgid "Sector must be the same as device hardware sector (%zu bytes)." msgstr "El sector tiene que ser el mismo que el sector hardware del dispositivo (%zu bytes)." -#: lib/setup.c:3515 lib/setup.c:3604 lib/setup.c:3617 +#: lib/setup.c:3518 lib/setup.c:3607 lib/setup.c:3620 #, c-format msgid "Unsupported parameters on device %s." msgstr "Parámetros no admitidos para el dispositivo %s." -#: lib/setup.c:3521 lib/setup.c:3624 lib/luks2/luks2_reencrypt.c:2928 -#: lib/luks2/luks2_reencrypt.c:3197 lib/luks2/luks2_reencrypt.c:3591 +#: lib/setup.c:3524 lib/setup.c:3627 lib/luks2/luks2_reencrypt.c:2929 +#: lib/luks2/luks2_reencrypt.c:3198 lib/luks2/luks2_reencrypt.c:3595 #, c-format msgid "Mismatching parameters on device %s." msgstr "Parámetros discordantes en el dispositivo %s." -#: lib/setup.c:3647 +#: lib/setup.c:3650 msgid "Crypt devices mismatch." msgstr "Los dispositivos de cifrado no concuerdan." -#: lib/setup.c:3679 lib/setup.c:3684 lib/luks2/luks2_reencrypt.c:2412 -#: lib/luks2/luks2_reencrypt.c:2944 lib/luks2/luks2_reencrypt.c:4233 +#: lib/setup.c:3682 lib/setup.c:3687 lib/luks2/luks2_reencrypt.c:2413 +#: lib/luks2/luks2_reencrypt.c:2945 lib/luks2/luks2_reencrypt.c:4237 #, c-format msgid "Failed to reload device %s." msgstr "No se ha podido recargar el dispositivo %s." -#: lib/setup.c:3690 lib/setup.c:3696 lib/luks2/luks2_reencrypt.c:2382 -#: lib/luks2/luks2_reencrypt.c:2389 lib/luks2/luks2_reencrypt.c:2958 +#: lib/setup.c:3693 lib/setup.c:3699 lib/luks2/luks2_reencrypt.c:2383 +#: lib/luks2/luks2_reencrypt.c:2390 lib/luks2/luks2_reencrypt.c:2959 #, c-format msgid "Failed to suspend device %s." msgstr "No se ha podido suspender el dispositivo %s." -#: lib/setup.c:3702 lib/luks2/luks2_reencrypt.c:2396 -#: lib/luks2/luks2_reencrypt.c:2979 lib/luks2/luks2_reencrypt.c:4146 -#: lib/luks2/luks2_reencrypt.c:4237 +#: lib/setup.c:3705 lib/luks2/luks2_reencrypt.c:2397 +#: lib/luks2/luks2_reencrypt.c:2980 lib/luks2/luks2_reencrypt.c:4150 +#: lib/luks2/luks2_reencrypt.c:4241 #, c-format msgid "Failed to resume device %s." msgstr "No se ha podido reanudar el dispositivo %s." -#: lib/setup.c:3717 +#: lib/setup.c:3720 #, c-format msgid "Fatal error while reloading device %s (on top of device %s)." msgstr "Error grave durante la recarga del dispositivo %s (por encima del dispositivo %s)." -#: lib/setup.c:3720 lib/setup.c:3722 +#: lib/setup.c:3723 lib/setup.c:3725 #, c-format msgid "Failed to switch device %s to dm-error." msgstr "No se ha podido conmutar el dispositivo %s a dm-error." -#: lib/setup.c:3765 +#: lib/setup.c:3768 msgid "Can not resize LUKS2 device with static size." msgstr "No se ha podido cambiar el tamaño del dispositivo LUKS2 con un tamaño estático." -#: lib/setup.c:3770 +#: lib/setup.c:3773 msgid "Resize of LUKS2 device with integrity protection is not supported." msgstr "Redimensionar el dispositivo LUKS2 con protección de integridad no está disponible." -#: lib/setup.c:3816 +#: lib/setup.c:3819 msgid "Cannot resize loop device." msgstr "No se ha podido cambiar el tamaño del dispositivo de bucle." -#: lib/setup.c:3860 +#: lib/setup.c:3863 msgid "WARNING: Maximum size already set or kernel doesn't support resize.\n" msgstr "ATENCIÓN: ya se ha puesto el tamaño máximo o el núcleo no permite cambiarlo.\n" -#: lib/setup.c:3926 +#: lib/setup.c:3929 msgid "Resize failed, the kernel doesn't support it." msgstr "El cambio de tamaño ha fallado; el núcleo no admite el cambio." -#: lib/setup.c:3958 +#: lib/setup.c:3961 msgid "Do you really want to change UUID of device?" msgstr "¿Está seguro de que quiere cambiar el UUID del dispositivo?" -#: lib/setup.c:4050 +#: lib/setup.c:4053 msgid "Header backup file does not contain compatible LUKS header." msgstr "El fichero de copia de seguridad de la cabecera no contiene una cabecera LUKS compatible." -#: lib/setup.c:4143 +#: lib/setup.c:4160 #, c-format msgid "Volume %s is not active." msgstr "El volumen %s no está activo." -#: lib/setup.c:4198 +#: lib/setup.c:4215 #, c-format msgid "Volume %s is already suspended." msgstr "El volumen %s ya está suspendido." -#: lib/setup.c:4224 +#: lib/setup.c:4241 #, c-format msgid "Suspend is not supported for device %s." msgstr "La suspensión no está disponible para el dispositivo %s." -#: lib/setup.c:4226 lib/setup.c:4234 +#: lib/setup.c:4243 lib/setup.c:4251 #, c-format msgid "Error during suspending device %s." msgstr "Error durante la suspensión del dispositivo %s." -#: lib/setup.c:4249 +#: lib/setup.c:4266 #, c-format msgid "Device %s was suspended but hardware OPAL device cannot be locked." msgstr "Se ha suspendido el dispositivo %s pero el dispositivo OPAL hardware no puede bloquearse." -#: lib/setup.c:4280 lib/setup.c:4457 +#: lib/setup.c:4297 lib/setup.c:4491 #, c-format msgid "Resume is not supported for device %s." msgstr "La reanudación no está disponible para el dispositivo %s." -#: lib/setup.c:4282 lib/setup.c:4447 lib/setup.c:4459 +#: lib/setup.c:4299 lib/setup.c:4481 lib/setup.c:4493 #, c-format msgid "Error during resuming device %s." msgstr "Error durante la reanudación del dispositivo %s." -#: lib/setup.c:4301 +#: lib/setup.c:4335 msgid "Failed to unlink volume key from user specified keyring." msgstr "No se ha podido desvincular la clave del volumen del llavero de usuario especificado." -#: lib/setup.c:4423 lib/setup.c:5592 +#: lib/setup.c:4457 lib/setup.c:5637 msgid "Failed to link volume key in user defined keyring." msgstr "No se ha podido vincular la clave del volumne en el llavero de usuario especificado." -#: lib/setup.c:4521 src/cryptsetup.c:2723 +#: lib/setup.c:4556 src/cryptsetup.c:2722 #, c-format msgid "Volume %s is not suspended." msgstr "EL volumen %s no está suspendido." -#: lib/setup.c:4622 lib/setup.c:7265 lib/setup.c:7287 lib/setup.c:7341 -#: src/cryptsetup.c:1858 src/cryptsetup.c:2262 src/cryptsetup.c:2280 -#: src/utils_reencrypt.c:305 src/utils_reencrypt.c:1966 +#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1856 +#: src/cryptsetup.c:2260 src/cryptsetup.c:2278 src/utils_reencrypt.c:306 +#: src/utils_reencrypt.c:1969 msgid "Volume key does not match the volume." msgstr "La clave de volumen no corresponde a este volumen." -#: lib/setup.c:4776 +#: lib/setup.c:4821 msgid "Failed to swap new key slot." msgstr "No se ha logrado intercambiar la nueva ranura de claves." -#: lib/setup.c:4874 +#: lib/setup.c:4919 #, c-format msgid "Key slot %d is invalid." msgstr "La ranura de claves %d no es válida." -#: lib/setup.c:4880 src/cryptsetup.c:1979 src/cryptsetup.c:2439 -#: src/cryptsetup.c:3123 src/cryptsetup.c:3183 +#: lib/setup.c:4925 src/cryptsetup.c:1977 src/cryptsetup.c:2437 +#: src/cryptsetup.c:3122 src/cryptsetup.c:3182 #, c-format msgid "Keyslot %d is not active." msgstr "La ranura de claves %d no está activa." -#: lib/setup.c:4899 +#: lib/setup.c:4944 msgid "Device header overlaps with data area." msgstr "La cabecera del dispositivo se solapa con la zona de datos." -#: lib/setup.c:5120 +#: lib/setup.c:5165 msgid "Reencryption in-progress. Cannot activate device." msgstr "Recifrado en curso. No se puede activar el dispositivo." -#: lib/setup.c:5122 lib/luks2/luks2_json_metadata.c:2888 -#: lib/luks2/luks2_reencrypt.c:3722 +#: lib/setup.c:5167 lib/luks2/luks2_json_metadata.c:2913 +#: lib/luks2/luks2_reencrypt.c:3726 msgid "Failed to get reencryption lock." msgstr "No se ha podido conseguir el bloqueo de recifrado." -#: lib/setup.c:5144 +#: lib/setup.c:5189 msgid "LUKS2 reencryption recovery using volume key(s) failed." msgstr "La recuperación del recifrado LUKS2 utilizando la(s) clave(s) de volumen ha fallado." -#: lib/setup.c:5280 +#: lib/setup.c:5325 #, c-format msgid "Device %s already exists." msgstr "El dispositivo %s ya existe." -#: lib/setup.c:5287 +#: lib/setup.c:5332 #, c-format msgid "Cannot use device %s, name is invalid or still in use." msgstr "No se puede utilizar el dispositivo %s; el nombre no es válido o todavía está en uso." -#: lib/setup.c:5299 +#: lib/setup.c:5344 msgid "Reencryption volume keys do not match the volume." msgstr "Las claves de volumen de recifrado no corresponden a este volumen." -#: lib/setup.c:5316 +#: lib/setup.c:5361 msgid "Incorrect volume key specified for plain device." msgstr "Clave de volumen incorrecta para dispositivo no cifrado." -#: lib/setup.c:5342 lib/setup.c:5403 +#: lib/setup.c:5387 lib/setup.c:5448 msgid "Device type is not properly initialized." msgstr "Este tipo de dispositivo no se ha inicializado adecuadamente." -#: lib/setup.c:5441 +#: lib/setup.c:5486 msgid "Kernel keyring is not supported by the kernel." msgstr "El llavero de núcleo no está admitido en el núcleo." -#: lib/setup.c:5445 +#: lib/setup.c:5490 msgid "Kernel keyring missing: required for passing signature to kernel." msgstr "El llavero de núcleo está ausente: se necesita para pasar la firma al núcleo." -#: lib/setup.c:5500 +#: lib/setup.c:5545 #, c-format msgid "Cannot use keyring key %s." msgstr "No se puede la clave %s del llavero." -#: lib/setup.c:5713 +#: lib/setup.c:5758 msgid "Incorrect root hash specified for verity device." msgstr "«Hash» raíz incorrecta para dispositivo «verity»." -#: lib/setup.c:5754 lib/setup.c:5779 +#: lib/setup.c:5799 lib/setup.c:5824 msgid "OPAL does not support deferred deactivation." msgstr "OPAL no dispone de desactivación diferida." -#: lib/setup.c:5769 lib/setup.c:5800 lib/luks2/luks2_json_metadata.c:2953 +#: lib/setup.c:5814 lib/setup.c:5845 lib/luks2/luks2_json_metadata.c:2978 #: src/utils_reencrypt.c:89 #, c-format msgid "Device %s is still in use." msgstr "El dispositivo %s todavía se está utilizando." -#: lib/setup.c:5787 +#: lib/setup.c:5832 #, c-format msgid "Could not cancel deferred remove from device %s." msgstr "No se ha podido cancelar la eliminación diferida en el dispositivo %s." -#: lib/setup.c:5809 +#: lib/setup.c:5854 #, c-format msgid "Invalid device %s." msgstr "Dispositivo inválido %s." -#: lib/setup.c:5956 +#: lib/setup.c:6001 msgid "Volume key buffer too small." msgstr "El «buffer» de la clave del volumen es demasiado pequeño." -#: lib/setup.c:5967 +#: lib/setup.c:6012 msgid "Cannot retrieve volume key for LUKS2 device." msgstr "No se puede recuperar la clave del volumen para el dispositivo LUKS2." -#: lib/setup.c:5976 +#: lib/setup.c:6021 msgid "Cannot retrieve volume key for LUKS1 device." msgstr "No se puede recuperar la clave del volumen para el dispositivo LUKS1." -#: lib/setup.c:5990 +#: lib/setup.c:6035 msgid "Cannot retrieve volume key for plain device." msgstr "No se puede recuperar la clave para el dispositivo no cifrado." -#: lib/setup.c:5998 +#: lib/setup.c:6043 msgid "Cannot retrieve root hash for verity device." msgstr "No se puede recuperar el «hash» raíz para dispositivo «verity»." -#: lib/setup.c:6007 +#: lib/setup.c:6052 msgid "Cannot retrieve volume key for BITLK device." msgstr "No se puede recuperar la clave del volumen para el dispositivo BITLK." -#: lib/setup.c:6012 +#: lib/setup.c:6057 msgid "Cannot retrieve volume key for FVAULT2 device." msgstr "No se puede recuperar la clave del volumen para el dispositivo FVAULT2." -#: lib/setup.c:6014 +#: lib/setup.c:6059 #, c-format msgid "This operation is not supported for %s crypt device." msgstr "Esta operación no está disponible para el dispositivo cifrado %s." -#: lib/setup.c:6199 lib/setup.c:6210 +#: lib/setup.c:6244 lib/setup.c:6255 msgid "Dump operation is not supported for this device type." msgstr "Operación de volcado no deisponible para este tipo de dispositivo." -#: lib/setup.c:6590 +#: lib/setup.c:6635 #, c-format msgid "Data offset is not multiple of %u bytes." msgstr "El desplazamiento de datos no es múltiplo de %u bytes." -#: lib/setup.c:6898 +#: lib/setup.c:6943 #, c-format msgid "Cannot convert device %s which is still in use." msgstr "No se puede convertir el dispositivo %s que todavía está en uso." -#: lib/setup.c:7206 lib/setup.c:7350 +#: lib/setup.c:7251 lib/setup.c:7406 #, c-format msgid "Failed to assign keyslot %u as the new volume key." msgstr "No se ha logrado asignar la ranura de claves %u como nueva clave del volumen." -#: lib/setup.c:7230 +#: lib/setup.c:7275 msgid "Failed to initialize default LUKS2 keyslot parameters." msgstr "No se han podido inicializar los parámetros predefinidos de la ranura de claves LUKS2." -#: lib/setup.c:7236 +#: lib/setup.c:7281 #, c-format msgid "Failed to assign keyslot %d to digest." msgstr "No se ha logrado asignar la ranura de claves %d al resumen." -#: lib/setup.c:7467 +#: lib/setup.c:7523 msgid "Cannot add key slot, all slots disabled and no volume key provided." msgstr "No se puede añadir ranura de claves; todas las ranuras están desactivadas y no se ha proporcionado una clave para el volumen." -#: lib/setup.c:7540 lib/verity/verity.c:333 +#: lib/setup.c:7611 lib/setup.c:7626 lib/verity/verity.c:333 msgid "Failed to load key in kernel keyring." msgstr "No se ha podido cargar la clave en el llavero del núcleo." -#: lib/setup.c:7731 +#: lib/setup.c:7807 #, c-format msgid "Could not find keyring described by \"%s\"." msgstr "No se ha podido encontrar el llavero descrito por «%s»." -#: lib/setup.c:7796 +#: lib/setup.c:7872 msgid "Failed to acquire global memory-hard access serialization lock." msgstr "No se ha podido adquirir el bloqueo de la serialización de acceso duro de memoria global." -#: lib/utils.c:204 lib/tcrypt/tcrypt.c:490 +#: lib/utils.c:205 lib/tcrypt/tcrypt.c:488 msgid "Failed to open key file." msgstr "No se ha podido abrir el fichero de claves." -#: lib/utils.c:212 +#: lib/utils.c:213 msgid "Cannot read keyfile from a terminal." msgstr "No se puede leer el fichero de claves desde un terminal." -#: lib/utils.c:228 +#: lib/utils.c:229 msgid "Failed to stat key file." msgstr "No se ha podido efectuar «stat» sobre el fichero de claves." -#: lib/utils.c:236 lib/utils.c:257 +#: lib/utils.c:237 lib/utils.c:258 msgid "Cannot seek to requested keyfile offset." msgstr "No es posible situarse en la posición solicitada del fichero de claves." -#: lib/utils.c:251 lib/utils.c:266 src/utils_password.c:219 +#: lib/utils.c:252 lib/utils.c:267 src/utils_password.c:219 #: src/utils_password.c:231 msgid "Out of memory while reading passphrase." msgstr "Memoria agotada mientras se estaba leyendo la frase contraseña." -#: lib/utils.c:286 +#: lib/utils.c:287 msgid "Error reading passphrase." msgstr "Error al leer la frase contraseña." -#: lib/utils.c:303 +#: lib/utils.c:304 msgid "Nothing to read on input." msgstr "No hay nada para leer en la entrada." -#: lib/utils.c:310 +#: lib/utils.c:311 msgid "Maximum keyfile size exceeded." msgstr "Se ha excedido el tamaño máximo de fichero de claves." -#: lib/utils.c:315 +#: lib/utils.c:316 msgid "Cannot read requested amount of data." msgstr "No se puede leer la cantidad de datos solicitada." #: lib/utils_device.c:207 lib/utils_storage_wrappers.c:99 -#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2254 +#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2257 #, c-format msgid "Device %s does not exist or access denied." msgstr "El dispositivo %s no existe o el acceso al mismo ha sido denegado." @@ -869,40 +869,45 @@ msgstr "El dispositivo %s no es compatible." msgid "Ignoring bogus optimal-io size for data device (%u bytes)." msgstr "Se ignorará por falso el tamaño de optimal-io para el dispositivo de datos (%u bytes)." -#: lib/utils_device.c:707 +#: lib/utils_device.c:711 +#, c-format +msgid "Cannot grow %s to % bytes (%s)." +msgstr "No se puede incrementar %s a % bytes (%s)." + +#: lib/utils_device.c:717 #, c-format msgid "Device %s is too small. Need at least % bytes." msgstr "El dispositivo %s es demasiado pequeño. Se necesitan % bytes como mínimo." -#: lib/utils_device.c:788 +#: lib/utils_device.c:798 #, c-format msgid "Cannot use device %s which is in use (already mapped or mounted)." msgstr "No se puede usar el dispositivo %s porque ya está en uso (asignado o montado)." -#: lib/utils_device.c:792 +#: lib/utils_device.c:802 #, c-format msgid "Cannot use device %s, permission denied." msgstr "No se puede utilizar el dispositivo %s; permiso denegado." -#: lib/utils_device.c:795 +#: lib/utils_device.c:805 #, c-format msgid "Cannot get info about device %s." msgstr "No se puede obtener información del dispositivo %s." -#: lib/utils_device.c:818 +#: lib/utils_device.c:828 msgid "Cannot use a loopback device, running as non-root user." msgstr "No se puede utilizar un dispositivo de bucle invertido como usuario no administrador." -#: lib/utils_device.c:829 +#: lib/utils_device.c:839 msgid "Attaching loopback device failed (loop device with autoclear flag is required)." msgstr "No se ha logrado asociar el dispositivo de bucle invertido (hace falta un dispositivo de bucle con marcador de auto-limpieza)." -#: lib/utils_device.c:877 +#: lib/utils_device.c:887 #, c-format msgid "Requested offset is beyond real size of device %s." msgstr "El «offset» solicitado está más allá del tamaño real del dispositivo %s." -#: lib/utils_device.c:885 +#: lib/utils_device.c:895 #, c-format msgid "Device %s has zero size." msgstr "El dispositivo %s tiene tamaño cero." @@ -1025,7 +1030,7 @@ msgid "Cipher specification should be in [cipher]-[mode]-[iv] format." msgstr "La especificación de cifrado debería estar en formato [cipher]-[mode]-[iv]." #: lib/luks1/keyencryption.c:85 lib/luks1/keymanage.c:353 -#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1150 +#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1132 #: lib/luks2/luks2_json_metadata.c:1518 lib/luks2/luks2_keyslot.c:711 #, c-format msgid "Cannot write to device %s, permission denied." @@ -1039,16 +1044,16 @@ msgstr "No se ha podido abrir el dispositivo de almacenamiento de claves tempora msgid "Failed to access temporary keystore device." msgstr "No se ha podido acceder al dispositivo de almacenamiento de claves temporal." -#: lib/luks1/keyencryption.c:189 lib/luks2/luks2_keyslot_luks2.c:49 -#: lib/luks2/luks2_keyslot_luks2.c:67 lib/luks2/luks2_keyslot_reenc.c:184 +#: lib/luks1/keyencryption.c:189 lib/luks2/luks2_keyslot_luks2.c:47 +#: lib/luks2/luks2_keyslot_reenc.c:184 msgid "IO error while encrypting keyslot." msgstr "Error de entrada/salida mientras se cifraba una ranura de claves." #: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:356 -#: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:668 -#: lib/fvault2/fvault2.c:870 lib/verity/verity.c:67 lib/verity/verity.c:183 +#: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:659 +#: lib/fvault2/fvault2.c:872 lib/verity/verity.c:67 lib/verity/verity.c:183 #: lib/verity/verity_hash.c:312 lib/verity/verity_hash.c:321 -#: lib/verity/verity_hash.c:341 lib/verity/verity_fec.c:247 +#: lib/verity/verity_hash.c:350 lib/verity/verity_fec.c:247 #: lib/verity/verity_fec.c:259 lib/verity/verity_fec.c:264 #: lib/luks2/luks2_json_metadata.c:1521 src/utils_reencrypt_luks1.c:108 #: src/utils_reencrypt_luks1.c:120 @@ -1056,7 +1061,7 @@ msgstr "Error de entrada/salida mientras se cifraba una ranura de claves." msgid "Cannot open device %s." msgstr "No se puede abrir el dispositivo %s." -#: lib/luks1/keyencryption.c:247 lib/luks2/luks2_keyslot_luks2.c:128 +#: lib/luks1/keyencryption.c:247 lib/luks2/luks2_keyslot_luks2.c:85 msgid "IO error while decrypting keyslot." msgstr "Error de entrada/salida mientras se descifraba una ranura de claves." @@ -1146,7 +1151,7 @@ msgid "Cipher hash repaired to lowercase (%s)." msgstr "«Hash» de cifrado reparado a minúsculas (%s)." #: lib/luks1/keymanage.c:417 lib/luks1/keymanage.c:523 -#: lib/luks1/keymanage.c:777 +#: lib/luks1/keymanage.c:756 #, c-format msgid "Requested LUKS hash %s is not supported." msgstr "La «hash» LUKS solicitada %s no está disponible." @@ -1193,7 +1198,7 @@ msgstr "El modo de cifrado LUKS %s no es válido." msgid "LUKS hash %s is invalid." msgstr "El «hash» LUKS %s no es válido." -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1369 +#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 msgid "No known problems detected for LUKS header." msgstr "No se ha detectado ningún problema en la cabecera LUKS." @@ -1207,50 +1212,50 @@ msgstr "Error al actualizar la cabecera LUKS en el dispositivo %s." msgid "Error re-reading LUKS header after update on device %s." msgstr "Error al leer la cabecera LUKS después de actualizarla en el dispositivo %s." -#: lib/luks1/keymanage.c:771 +#: lib/luks1/keymanage.c:750 msgid "Data offset for LUKS header must be either 0 or higher than header size." msgstr "La posición de los datos de una cabecera LUKS debe ser 0 o superior al tamaño de la cabecera." -#: lib/luks1/keymanage.c:782 lib/luks1/keymanage.c:853 +#: lib/luks1/keymanage.c:761 lib/luks1/keymanage.c:832 #: lib/luks2/luks2_json_format.c:231 lib/luks2/luks2_json_metadata.c:1261 -#: src/utils_reencrypt.c:701 +#: src/utils_reencrypt.c:703 msgid "Wrong LUKS UUID format provided." msgstr "El formato de UUID LUKS proporcionado es incorrecto." -#: lib/luks1/keymanage.c:804 +#: lib/luks1/keymanage.c:783 msgid "Cannot create LUKS header: reading random salt failed." msgstr "No se puede crear la cabecera LUKS: fallo en la lectura «random salt»." -#: lib/luks1/keymanage.c:832 +#: lib/luks1/keymanage.c:811 #, c-format msgid "Cannot create LUKS header: header digest failed (using hash %s)." msgstr "No se puede crear la cabecera LUKS: fallo en la cabecera (usando «hash» %s)." -#: lib/luks1/keymanage.c:877 +#: lib/luks1/keymanage.c:856 #, c-format msgid "Key slot %d active, purge first." msgstr "La ranura de claves %d está activa; primero hay que purgar." -#: lib/luks1/keymanage.c:883 +#: lib/luks1/keymanage.c:862 #, c-format msgid "Key slot %d material includes too few stripes. Header manipulation?" msgstr "El material de la ranura de claves %d no tiene suficientes bandas. Quizá se haya manipulado la cabecera." -#: lib/luks1/keymanage.c:921 lib/luks2/luks2_keyslot_luks2.c:260 +#: lib/luks1/keymanage.c:900 lib/luks2/luks2_keyslot_luks2.c:217 msgid "PBKDF2 iteration value overflow." msgstr "Desbordamiento del valor de iteración PBKDF2." -#: lib/luks1/keymanage.c:1040 +#: lib/luks1/keymanage.c:1022 #, c-format msgid "Cannot open keyslot (using hash %s)." msgstr "No se puede abrir la ranura de claves (usando «hash» %s)." -#: lib/luks1/keymanage.c:1136 +#: lib/luks1/keymanage.c:1118 #, c-format msgid "Key slot %d is invalid, please select keyslot between 0 and %d." msgstr "La ranura %d no es válida; seleccione una ranura de claves entre 0 y %d." -#: lib/luks1/keymanage.c:1154 lib/luks2/luks2_keyslot.c:715 +#: lib/luks1/keymanage.c:1136 lib/luks2/luks2_keyslot.c:715 #, c-format msgid "Cannot wipe device %s." msgstr "No se puede limpiar el dispositivo %s." @@ -1271,56 +1276,48 @@ msgstr "Se ha detectado un fichero de claves incompatible con «loop-AES»." msgid "Kernel does not support loop-AES compatible mapping." msgstr "El núcleo no admite asignación compatible con «loop-AES»." -#: lib/tcrypt/tcrypt.c:497 +#: lib/tcrypt/tcrypt.c:495 #, c-format msgid "Error reading keyfile %s." msgstr "Error leyendo el fichero de claves %s." -#: lib/tcrypt/tcrypt.c:547 +#: lib/tcrypt/tcrypt.c:549 #, c-format msgid "Maximum TCRYPT passphrase length (%zu) exceeded." msgstr "Se ha excedido la longitud máxima (%zu) de la frase contraseña TCRYPT." -#: lib/tcrypt/tcrypt.c:589 +#: lib/tcrypt/tcrypt.c:591 #, c-format msgid "PBKDF2 hash algorithm %s not available, skipping." msgstr "El algoritmo «hash» %s no está disponible, por lo que se ha ignorado." -#: lib/tcrypt/tcrypt.c:608 src/cryptsetup.c:1242 -msgid "Required kernel crypto interface not available." -msgstr "La interfaz de cifrado del núcleo requerida no está disponible." - -#: lib/tcrypt/tcrypt.c:610 src/cryptsetup.c:1244 -msgid "Ensure you have algif_skcipher kernel module loaded." -msgstr "Asegúrese de que el módulo del núcleo algof_skcipher está cargado." - -#: lib/tcrypt/tcrypt.c:752 +#: lib/tcrypt/tcrypt.c:743 #, c-format msgid "Activation is not supported for %d sector size." msgstr "No es posible la activación para el tamaño de sector %d." -#: lib/tcrypt/tcrypt.c:758 +#: lib/tcrypt/tcrypt.c:749 msgid "Kernel does not support activation for this TCRYPT legacy mode." msgstr "El núcleo no dispone de activación para este modo antiguo TCRYPT." -#: lib/tcrypt/tcrypt.c:813 +#: lib/tcrypt/tcrypt.c:804 #, c-format msgid "Activating TCRYPT system encryption for partition %s." msgstr "Activando el sistema de cifrado TCRYPT para la partición %s." -#: lib/tcrypt/tcrypt.c:828 +#: lib/tcrypt/tcrypt.c:819 msgid "Cannot determine TCRYPT system partition offset, activating whole encrypted area." msgstr "No se puede determinar el desplazamiento de la partición del sistema TCRYPT; se activará el área cifrada entera." -#: lib/tcrypt/tcrypt.c:837 +#: lib/tcrypt/tcrypt.c:828 msgid "Cannot determine TCRYPT system partition offset, activating device as a system partition." msgstr "No se puede determinar el desplazamiento de la partición del sistema TCRYPT; se activará el dispositivo como una partición del sistema." -#: lib/tcrypt/tcrypt.c:917 +#: lib/tcrypt/tcrypt.c:908 msgid "Kernel does not support TCRYPT compatible mapping." msgstr "El núcleo no admite asignación compatible con TCRYPT." -#: lib/tcrypt/tcrypt.c:1146 +#: lib/tcrypt/tcrypt.c:1137 msgid "This function is not supported without TCRYPT header load." msgstr "Esta función no está disponible sin carga de cabecera TCRYPT." @@ -1361,11 +1358,6 @@ msgstr "Tamaño de sector no admitido %." msgid "Failed to read BITLK header from %s." msgstr "No se ha podido leer la cabecera BITLK de %s." -#: lib/bitlk/bitlk.c:593 -#, c-format -msgid "Failed to read or validate BITLK FVE metadata copy #%d from %s." -msgstr "No se ha podido leer o validar la copia de los metadatos BITLK FVE #%d desde %s." - #: lib/bitlk/bitlk.c:603 #, c-format msgid "Failed to read and validate BITLK FVE metadata from %s." @@ -1441,42 +1433,42 @@ msgstr "Esta operación no está disponible." msgid "Unexpected key data size." msgstr "Tamaño de datos de la clave no esperado." -#: lib/bitlk/bitlk.c:1431 +#: lib/bitlk/bitlk.c:1442 msgid "This BITLK device is in an unsupported state and cannot be activated." msgstr "Este dispositivo BITLK se encuentra en un estado en el que no puede activarse." -#: lib/bitlk/bitlk.c:1436 +#: lib/bitlk/bitlk.c:1447 #, c-format msgid "BITLK devices with type '%s' cannot be activated." msgstr "Los dispositivos BITLK con tipo '%s' no puede activarse." -#: lib/bitlk/bitlk.c:1475 +#: lib/bitlk/bitlk.c:1486 #, c-format msgid "WARNING: BitLocker volume size % does not match the underlying device size %" msgstr "ATENCIÓN: el tamaño del volumen «bitlocker» % no coincide con el tamaño del dispositivo subyacente %" -#: lib/bitlk/bitlk.c:1602 +#: lib/bitlk/bitlk.c:1613 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK IV." msgstr "No se puede activar el dispositivo; el dm-crypt del núcleo no sirve para BITLK IV." -#: lib/bitlk/bitlk.c:1606 +#: lib/bitlk/bitlk.c:1617 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK Elephant diffuser." msgstr "No se puede activar el dispositivo; el dm-crypt del núcleo no sirve para difusor BITLK «Elephant»." -#: lib/bitlk/bitlk.c:1610 +#: lib/bitlk/bitlk.c:1621 msgid "Cannot activate device, kernel dm-crypt is missing support for large sector size." msgstr "No se puede activar el dispositivo; el dm-crypt del núcleo no sirve para tamaño de sector grande." -#: lib/bitlk/bitlk.c:1614 +#: lib/bitlk/bitlk.c:1625 msgid "Cannot activate device, kernel dm-zero module is missing." msgstr "No se puede activar el dispositivo; falta el módulo dm-zero del núcleo." -#: lib/fvault2/fvault2.c:530 +#: lib/fvault2/fvault2.c:532 #, c-format msgid "Could not read %u bytes of volume header." msgstr "No se han podido leer %u «bytes» de la cabecera del volumen." -#: lib/fvault2/fvault2.c:542 +#: lib/fvault2/fvault2.c:544 #, c-format msgid "Unsupported FVAULT2 version %." msgstr "Versión de FVAULT2 no admitida %." @@ -1553,23 +1545,23 @@ msgstr "La verificación ha fallado en la posición %." msgid "Hash area overflow." msgstr "Desbordamiento del área «hash»." -#: lib/verity/verity_hash.c:372 +#: lib/verity/verity_hash.c:381 msgid "Verification of data area failed." msgstr "Fallo en la verificación del área de datos." -#: lib/verity/verity_hash.c:377 +#: lib/verity/verity_hash.c:386 msgid "Verification of root hash failed." msgstr "Fallo en la verificación de la «hash» raíz." -#: lib/verity/verity_hash.c:383 +#: lib/verity/verity_hash.c:392 msgid "Input/output error while creating hash area." msgstr "Error de entrada/salida al crear el área «hash»." -#: lib/verity/verity_hash.c:385 +#: lib/verity/verity_hash.c:394 msgid "Creation of hash area failed." msgstr "La creación del área «hash» ha fallado." -#: lib/verity/verity_hash.c:420 +#: lib/verity/verity_hash.c:429 #, c-format msgid "WARNING: Kernel cannot activate device if data block size exceeds page size (%u)." msgstr "ATENCIÓN: el núcleo no puede activar un dispositivo si el tamaño del bloque de datos excede el tamaño de página (%u)." @@ -1624,19 +1616,19 @@ msgstr "No se ha podido determinar el tamaño para el dispositivo %s." msgid "Incompatible kernel dm-integrity metadata (version %u) detected on %s." msgstr "Metadatos dm-integrity del núcleo incompatibles (versión %u) detectados en %s." -#: lib/integrity/integrity.c:304 lib/integrity/integrity.c:488 +#: lib/integrity/integrity.c:308 lib/integrity/integrity.c:492 msgid "Kernel does not support dm-integrity mapping." msgstr "El núcleo no dispone de asociación «dm-integrity»." -#: lib/integrity/integrity.c:310 +#: lib/integrity/integrity.c:314 msgid "Kernel does not support dm-integrity fixed metadata alignment." msgstr "El núcleo no dispone de alineamiento de metadatos fijo «dm-integrity»." -#: lib/integrity/integrity.c:319 +#: lib/integrity/integrity.c:323 msgid "Kernel refuses to activate insecure recalculate option (see legacy activation options to override)." msgstr "El núcleo rehúsa activar la opción de recálculo inseguro (véanse las opciones de activación antiguas para cambiar ese funcionamiento)." -#: lib/integrity/integrity.c:325 +#: lib/integrity/integrity.c:329 msgid "Kernel does not support dm-integrity inline mode." msgstr "El núcleo no dispone de modo en línea «dm-integrity»." @@ -1678,8 +1670,7 @@ msgid "WARNING: LUKS2 keyslots area size changed to % bytes.\n" msgstr "ATENCIÓN: el tamaño de la zona de ranuras de claves LUKS2 ha cambiado a % bytes.\n" #: lib/luks2/luks2_json_metadata.c:1171 lib/luks2/luks2_json_metadata.c:1357 -#: lib/luks2/luks2_json_metadata.c:1417 lib/luks2/luks2_keyslot_luks2.c:81 -#: lib/luks2/luks2_keyslot_luks2.c:105 +#: lib/luks2/luks2_json_metadata.c:1417 lib/luks2/luks2_keyslot_luks2.c:71 #, c-format msgid "Failed to acquire read lock on device %s." msgstr "No se ha podido adquirir el bloqueo de lectura para el dispositivo %s." @@ -1740,79 +1731,79 @@ msgstr "" msgid "Ignored unknown flag %s." msgstr "Se hará caso omiso del indicador desconocido %s." -#: lib/luks2/luks2_json_metadata.c:2545 lib/luks2/luks2_reencrypt.c:2109 +#: lib/luks2/luks2_json_metadata.c:2563 lib/luks2/luks2_reencrypt.c:2110 #, c-format msgid "Missing key for dm-crypt segment %u" msgstr "Falta la clave para el segmento dm-crypt %u" -#: lib/luks2/luks2_json_metadata.c:2557 lib/luks2/luks2_reencrypt.c:2122 +#: lib/luks2/luks2_json_metadata.c:2575 lib/luks2/luks2_reencrypt.c:2123 msgid "Failed to set dm-crypt segment." msgstr "No se ha podido establecer el segmento de dm-crypt." -#: lib/luks2/luks2_json_metadata.c:2563 lib/luks2/luks2_reencrypt.c:2128 +#: lib/luks2/luks2_json_metadata.c:2581 lib/luks2/luks2_reencrypt.c:2129 msgid "Failed to set dm-linear segment." msgstr "No se ha podido establecer el segmento de dm-linear." -#: lib/luks2/luks2_json_metadata.c:2683 src/utils_reencrypt.c:578 +#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:580 msgid "No known cipher specification pattern detected in LUKS2 header." msgstr "No se ha detectado ningún patrón conocido de especificación de cifrado en la cabecera LUKS2." -#: lib/luks2/luks2_json_metadata.c:2691 +#: lib/luks2/luks2_json_metadata.c:2709 msgid "OPAL device must have static device size." msgstr "El dispositivo OPAL debe tener tamaño de dispositivo estático." -#: lib/luks2/luks2_json_metadata.c:2711 +#: lib/luks2/luks2_json_metadata.c:2729 msgid "Encrypted OPAL device with integrity must be smaller than locking range." msgstr "El dispositivo OPAL con integridad cifrado debe ser más pequeño que el rango de bloqueo." -#: lib/luks2/luks2_json_metadata.c:2716 +#: lib/luks2/luks2_json_metadata.c:2734 msgid "OPAL device must have same size as locking range." msgstr "El dispositivo OPAL debe tener el mismo tamaño que el rango de bloqueo." -#: lib/luks2/luks2_json_metadata.c:2736 +#: lib/luks2/luks2_json_metadata.c:2754 #, c-format msgid "OPAL device is %s already unlocked.\n" msgstr "El dispositivo OPAL es %s ya desbloqueado.\n" -#: lib/luks2/luks2_json_metadata.c:2775 +#: lib/luks2/luks2_json_metadata.c:2793 msgid "Unsupported device integrity configuration." msgstr "Configuración de integridad de dispositivo no admitida." -#: lib/luks2/luks2_json_metadata.c:2791 +#: lib/luks2/luks2_json_metadata.c:2809 msgid "Underlying dm-integrity device with unexpected provided data sectors." msgstr "El dispositivo «dm-integrity» subyacente presenta sectores de datos inesperados." -#: lib/luks2/luks2_json_metadata.c:2886 +#: lib/luks2/luks2_json_metadata.c:2911 msgid "Reencryption in-progress. Cannot deactivate device." msgstr "Recifrado en curso. No se puede desactivar el dispositivo." -#: lib/luks2/luks2_json_metadata.c:2897 lib/luks2/luks2_reencrypt.c:4283 +#: lib/luks2/luks2_json_metadata.c:2922 lib/luks2/luks2_reencrypt.c:4287 #, c-format msgid "Failed to replace suspended device %s with dm-error target." msgstr "No se ha podido reemplazar el dispositivo suspendido %s con el objetivo dm-error." -#: lib/luks2/luks2_json_metadata.c:2976 lib/luks2/luks2_json_metadata.c:2998 +#: lib/luks2/luks2_json_metadata.c:3001 lib/luks2/luks2_json_metadata.c:3023 #, c-format msgid "Device %s was deactivated but hardware OPAL device cannot be locked." msgstr "El dispositivo %s ya se ha desactivado pero el dispositivo OPAL hardware no puede bloquearse." -#: lib/luks2/luks2_json_metadata.c:3020 +#: lib/luks2/luks2_json_metadata.c:3045 msgid "Unmet LUKS2 requirements detected." msgstr "Se han detectado requisitos LUKS2 no satisfechos." -#: lib/luks2/luks2_json_metadata.c:3028 +#: lib/luks2/luks2_json_metadata.c:3053 msgid "Operation incompatible with device marked for legacy reencryption. Aborting." msgstr "Operación incompatible con dispositivo marcado para recifrado obsoleto. Se aborta." -#: lib/luks2/luks2_json_metadata.c:3030 +#: lib/luks2/luks2_json_metadata.c:3055 msgid "Operation incompatible with device marked for LUKS2 reencryption. Aborting." msgstr "Operación incompatible con dispositivo marcado para recifrado LUKS2. Se aborta." -#: lib/luks2/luks2_json_metadata.c:3032 +#: lib/luks2/luks2_json_metadata.c:3057 msgid "Operation incompatible with device using OPAL. Aborting." msgstr "Operación incompatible con dispositivo que utiliza OPAL. Se aborta." -#: lib/luks2/luks2_json_metadata.c:3034 +#: lib/luks2/luks2_json_metadata.c:3059 msgid "Operation incompatible with device using inline HW tags. Aborting." msgstr "Operación incompatible con dispositivo que utiliza etiquetas HW en línea. Se aborta." @@ -1824,22 +1815,22 @@ msgstr "No hay memoria disponible suficiente para abrir una ranura de claves." msgid "Keyslot open failed." msgstr "Fallo al abrir la ranura de claves." -#: lib/luks2/luks2_keyslot_luks2.c:42 lib/luks2/luks2_keyslot_luks2.c:99 +#: lib/luks2/luks2_keyslot_luks2.c:40 lib/luks2/luks2_keyslot_luks2.c:77 #, c-format -msgid "Cannot use %s-%s cipher for keyslot encryption." -msgstr "No se puede utilizar el algoritmo de cifrado %s-%s para el cifrado de ranuras de clave." +msgid "Cannot use %s cipher for keyslot encryption." +msgstr "No se puede utilizar el algoritmo de cifrado %s para el cifrado de ranuras de clave." -#: lib/luks2/luks2_keyslot_luks2.c:262 +#: lib/luks2/luks2_keyslot_luks2.c:219 msgid "Not enough memory for keyslot key derivation." msgstr "No hay suficiente memoria para derivación de clave de ranuras de claves." -#: lib/luks2/luks2_keyslot_luks2.c:276 lib/luks2/luks2_keyslot_luks2.c:405 -#: lib/luks2/luks2_keyslot_reenc.c:434 lib/luks2/luks2_reencrypt.c:2733 +#: lib/luks2/luks2_keyslot_luks2.c:233 lib/luks2/luks2_keyslot_luks2.c:358 +#: lib/luks2/luks2_keyslot_reenc.c:434 lib/luks2/luks2_reencrypt.c:2734 #, c-format msgid "Hash algorithm %s is not available." msgstr "El algoritmo «hash» %s no está disponible." -#: lib/luks2/luks2_keyslot_luks2.c:522 +#: lib/luks2/luks2_keyslot_luks2.c:475 msgid "No space for new keyslot." msgstr "No hay espacio para la nueva ranura de claves." @@ -1856,336 +1847,336 @@ msgstr "No se puede actualizar el tipo de resiliencia. El nuevo tipo solo ofrece msgid "Failed to refresh reencryption verification digest." msgstr "No se ha podido refrescar el resumen de verificación del recifrado." -#: lib/luks2/luks2_luks1_convert.c:532 +#: lib/luks2/luks2_luks1_convert.c:498 #, c-format msgid "Cannot check status of device with uuid: %s." msgstr "No se puede comprobar el estado del dispositivo con uuid: %s." -#: lib/luks2/luks2_luks1_convert.c:558 +#: lib/luks2/luks2_luks1_convert.c:524 msgid "Unable to convert header with LUKSMETA additional metadata." msgstr "Imposible convertir cabecera con metadatos adicionales LUKSMETA." -#: lib/luks2/luks2_luks1_convert.c:590 lib/luks2/luks2_reencrypt.c:3890 +#: lib/luks2/luks2_luks1_convert.c:556 lib/luks2/luks2_reencrypt.c:3894 #, c-format msgid "Unable to use cipher specification %s-%s for LUKS2." msgstr "Imposible utilizar la especificación de cifrado %s-%s para LUKS2." -#: lib/luks2/luks2_luks1_convert.c:599 +#: lib/luks2/luks2_luks1_convert.c:565 #, c-format msgid "Unable to use cipher specification %s-%s for LUKS2 keyslot." msgstr "Imposible utilizar la especificación de cifrado %s-%s para ranura de claves LUKS2." -#: lib/luks2/luks2_luks1_convert.c:614 +#: lib/luks2/luks2_luks1_convert.c:580 msgid "Unable to move keyslot area. Not enough space." msgstr "Imposible mover el área de la ranura de claves. No hay suficiente espacio." -#: lib/luks2/luks2_luks1_convert.c:653 +#: lib/luks2/luks2_luks1_convert.c:619 msgid "Cannot convert to LUKS2 format - invalid metadata." msgstr "No se puede convertir a formato LUKS2 - los metadatos no son válidos." -#: lib/luks2/luks2_luks1_convert.c:670 +#: lib/luks2/luks2_luks1_convert.c:636 msgid "Unable to move keyslot area. LUKS2 keyslots area too small." msgstr "Imposible mover el área de la ranura de claves. Área de ranuras de clave LUKS2 demasiado pequeña." -#: lib/luks2/luks2_luks1_convert.c:676 lib/luks2/luks2_luks1_convert.c:1006 +#: lib/luks2/luks2_luks1_convert.c:642 lib/luks2/luks2_luks1_convert.c:972 msgid "Unable to move keyslot area." msgstr "Imposible mover el área de la ranura de claves." -#: lib/luks2/luks2_luks1_convert.c:791 +#: lib/luks2/luks2_luks1_convert.c:757 msgid "Cannot convert to LUKS1 format - default segment encryption sector size is not 512 bytes." msgstr "No se puede convertir a formato LUKS1 - el tamaño predefinido de sector de cifrado del segmento no es 512 bytes." -#: lib/luks2/luks2_luks1_convert.c:799 +#: lib/luks2/luks2_luks1_convert.c:765 msgid "Cannot convert to LUKS1 format - key slot digests are not LUKS1 compatible." msgstr "No se puede convertir a formato LUKS1 - los resúmenes de rarunas de claves no son compatibles con LUKS1." -#: lib/luks2/luks2_luks1_convert.c:813 +#: lib/luks2/luks2_luks1_convert.c:779 #, c-format msgid "Cannot convert to LUKS1 format - device uses wrapped key cipher %s." msgstr "No se puede convertir a formato LUKS1 - el dispositivo utiliza el cifrado de clave encapsulado %s." -#: lib/luks2/luks2_luks1_convert.c:818 +#: lib/luks2/luks2_luks1_convert.c:784 msgid "Cannot convert to LUKS1 format - device uses more segments." msgstr "No se puede convertir a formato LUKS1 - el dispositivo utiliza más segmentos." -#: lib/luks2/luks2_luks1_convert.c:826 +#: lib/luks2/luks2_luks1_convert.c:792 #, c-format msgid "Cannot convert to LUKS1 format - LUKS2 header contains %u token(s)." msgstr "No se puede convertir a formato LUKS1 - la cabecera LUKS2 contiene %u «token(s)»." -#: lib/luks2/luks2_luks1_convert.c:832 +#: lib/luks2/luks2_luks1_convert.c:798 msgid "Cannot convert to LUKS1 format - there are no active keyslots." msgstr "No se puede convertir a formato LUKS1 - no hay ranuras de claves activas." -#: lib/luks2/luks2_luks1_convert.c:844 +#: lib/luks2/luks2_luks1_convert.c:810 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is in invalid state." msgstr "No se puede convertir a formato LUKS1 - la ranura de claves %u está en un estado no válido." -#: lib/luks2/luks2_luks1_convert.c:849 +#: lib/luks2/luks2_luks1_convert.c:815 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is unbound." msgstr "No se puede convertir a formato LUKS1 - la ranura de claves %u no está acotada." -#: lib/luks2/luks2_luks1_convert.c:854 +#: lib/luks2/luks2_luks1_convert.c:820 #, c-format msgid "Cannot convert to LUKS1 format - slot %u (over maximum slots) is still active." msgstr "No se puede convertir a formato LUKS1 - la ranura %u (sobre las ranuras máximas) todavía está activa." -#: lib/luks2/luks2_luks1_convert.c:859 +#: lib/luks2/luks2_luks1_convert.c:825 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is not LUKS1 compatible." msgstr "No se puede convertir a formato LUKS1 - la ranura de claves %u no es compatible con LUKS1." -#: lib/luks2/luks2_reencrypt.c:1198 +#: lib/luks2/luks2_reencrypt.c:1199 #, c-format msgid "Hotzone size must be multiple of calculated zone alignment (%zu bytes)." msgstr "El tamaño de la zona activa debe ser múltiplo del alineamiento de zona calculado (%zu bytes)." -#: lib/luks2/luks2_reencrypt.c:1203 +#: lib/luks2/luks2_reencrypt.c:1204 #, c-format msgid "Device size must be multiple of calculated zone alignment (%zu bytes)." msgstr "El tamaño del dispositivo debe ser múltiplo del alineamiento de zona calculado (%zu bytes)." -#: lib/luks2/luks2_reencrypt.c:1410 lib/luks2/luks2_reencrypt.c:1596 -#: lib/luks2/luks2_reencrypt.c:1679 lib/luks2/luks2_reencrypt.c:1721 -#: lib/luks2/luks2_reencrypt.c:4077 +#: lib/luks2/luks2_reencrypt.c:1411 lib/luks2/luks2_reencrypt.c:1597 +#: lib/luks2/luks2_reencrypt.c:1680 lib/luks2/luks2_reencrypt.c:1722 +#: lib/luks2/luks2_reencrypt.c:4081 msgid "Failed to initialize old segment storage wrapper." msgstr "No se ha podido inicializar la envoltura antigua de almacenamiento del segmento." -#: lib/luks2/luks2_reencrypt.c:1424 lib/luks2/luks2_reencrypt.c:1574 +#: lib/luks2/luks2_reencrypt.c:1425 lib/luks2/luks2_reencrypt.c:1575 msgid "Failed to initialize new segment storage wrapper." msgstr "No se ha podido inicializar la envoltura nueva de almacenamiento del segmento." -#: lib/luks2/luks2_reencrypt.c:1550 lib/luks2/luks2_reencrypt.c:4089 +#: lib/luks2/luks2_reencrypt.c:1551 lib/luks2/luks2_reencrypt.c:4093 msgid "Failed to initialize hotzone protection." msgstr "No se ha podido inicializar la protección de la zona caliente." -#: lib/luks2/luks2_reencrypt.c:1623 +#: lib/luks2/luks2_reencrypt.c:1624 msgid "Failed to read checksums for current hotzone." msgstr "No se han podido leer las sumas de comprobación para la zona activa actual." -#: lib/luks2/luks2_reencrypt.c:1630 lib/luks2/luks2_reencrypt.c:4104 +#: lib/luks2/luks2_reencrypt.c:1631 lib/luks2/luks2_reencrypt.c:4108 #, c-format msgid "Failed to read hotzone area starting at %." msgstr "No se ha podido leer la zona activa que comienza en %." -#: lib/luks2/luks2_reencrypt.c:1649 +#: lib/luks2/luks2_reencrypt.c:1650 #, c-format msgid "Failed to decrypt sector %zu." msgstr "No se ha podido descifrar el sector %zu." -#: lib/luks2/luks2_reencrypt.c:1655 +#: lib/luks2/luks2_reencrypt.c:1656 #, c-format msgid "Failed to recover sector %zu." msgstr "No se ha podido recuperar el sector %zu." -#: lib/luks2/luks2_reencrypt.c:2208 +#: lib/luks2/luks2_reencrypt.c:2209 #, c-format msgid "Source and target device sizes don't match. Source %, target: %." msgstr "Los tamaños de los dispositivos origen y destino no coinciden. Origen %, destino: %." -#: lib/luks2/luks2_reencrypt.c:2310 +#: lib/luks2/luks2_reencrypt.c:2311 #, c-format msgid "Failed to activate hotzone device %s." msgstr "No se ha podido activar el dispositivo con zona activa %s." -#: lib/luks2/luks2_reencrypt.c:2322 +#: lib/luks2/luks2_reencrypt.c:2323 #, c-format msgid "Failed to allocate hotzone device %s." msgstr "No se ha podido reservar el dispositivo con zona activa %s." -#: lib/luks2/luks2_reencrypt.c:2339 +#: lib/luks2/luks2_reencrypt.c:2340 #, c-format msgid "Failed to activate overlay device %s with actual origin table." msgstr "No se ha podido activar el dispositivo de superposición %s con la tabla de orígenes actual." -#: lib/luks2/luks2_reencrypt.c:2346 +#: lib/luks2/luks2_reencrypt.c:2347 #, c-format msgid "Failed to load new mapping for device %s." msgstr "No se ha podido cargar el nuevo mapa para el dispositivo %s." -#: lib/luks2/luks2_reencrypt.c:2418 +#: lib/luks2/luks2_reencrypt.c:2419 msgid "Failed to refresh reencryption devices stack." msgstr "No se ha podido refrescar la pila del dispositivo de recifrado." -#: lib/luks2/luks2_reencrypt.c:2615 +#: lib/luks2/luks2_reencrypt.c:2616 msgid "Failed to set new keyslots area size." msgstr "No se ha logrado establecer el tamaño de las nuevas ranuras de claves." -#: lib/luks2/luks2_reencrypt.c:2751 +#: lib/luks2/luks2_reencrypt.c:2752 #, c-format msgid "Data shift value is not aligned to encryption sector size (% bytes)." msgstr "El valor del desplazamiento de datos no está alineado con el tamaño del sector de cifrado (% bytes)." -#: lib/luks2/luks2_reencrypt.c:2788 src/utils_reencrypt.c:162 +#: lib/luks2/luks2_reencrypt.c:2789 src/utils_reencrypt.c:162 #, c-format msgid "Unsupported resilience mode %s" msgstr "Modo de resiliencia %s no admitido." -#: lib/luks2/luks2_reencrypt.c:2824 +#: lib/luks2/luks2_reencrypt.c:2825 msgid "Moved segment size can not be greater than data shift value." msgstr "El tamaño del segmento movido no puede ser mayor que el valor del desplazamiento de los datos." -#: lib/luks2/luks2_reencrypt.c:2866 +#: lib/luks2/luks2_reencrypt.c:2867 msgid "Invalid reencryption resilience parameters." msgstr "Parámetros de resiliencia de recifrado no válidos." -#: lib/luks2/luks2_reencrypt.c:2888 +#: lib/luks2/luks2_reencrypt.c:2889 #, c-format msgid "Moved segment too large. Requested size %, available space for: %." msgstr "Segmento movido demasiado grande. Tamaño solicitado %, espacio disponible para: %." -#: lib/luks2/luks2_reencrypt.c:2977 +#: lib/luks2/luks2_reencrypt.c:2978 msgid "Failed to clear table." msgstr "No se ha podido limpiar la tabla." -#: lib/luks2/luks2_reencrypt.c:3063 +#: lib/luks2/luks2_reencrypt.c:3064 #, c-format msgid "Data shift (% sectors) is less than future data offset (% sectors)." msgstr "El desplazamiento de datos (% sectores) es menor que el desplazamiento de datos futuros (% sectores)." -#: lib/luks2/luks2_reencrypt.c:3078 lib/luks2/luks2_reencrypt.c:3085 +#: lib/luks2/luks2_reencrypt.c:3079 lib/luks2/luks2_reencrypt.c:3086 msgid "Reduced data size is larger than real device size." msgstr "El tamaño de los datos reducidos es mayor que el tamaño del dispositivo real." -#: lib/luks2/luks2_reencrypt.c:3095 +#: lib/luks2/luks2_reencrypt.c:3096 #, c-format msgid "Data device is not aligned to encryption sector size (% bytes)." msgstr "El dispositivo de datos no está alineado con el tamaño del sector de cifrado (% bytes)." -#: lib/luks2/luks2_reencrypt.c:3125 lib/luks2/luks2_reencrypt.c:3640 -#: lib/luks2/luks2_reencrypt.c:3661 +#: lib/luks2/luks2_reencrypt.c:3126 lib/luks2/luks2_reencrypt.c:3644 +#: lib/luks2/luks2_reencrypt.c:3665 #, c-format msgid "Failed to open %s in exclusive mode (already mapped or mounted)." msgstr "No se ha podido abrir %s en modo exclusivo (ya está asignado o montado)." -#: lib/luks2/luks2_reencrypt.c:3332 +#: lib/luks2/luks2_reencrypt.c:3333 msgid "Device not marked for LUKS2 reencryption." msgstr "El dispositivo no está marcado para recifrado LUKS2." -#: lib/luks2/luks2_reencrypt.c:3349 lib/luks2/luks2_reencrypt.c:4400 +#: lib/luks2/luks2_reencrypt.c:3350 lib/luks2/luks2_reencrypt.c:4404 msgid "Failed to load LUKS2 reencryption context." msgstr "No se ha podido cargar el contexto del recifrado LUKS2." -#: lib/luks2/luks2_reencrypt.c:3441 lib/luks2/luks2_reencrypt.c:3781 +#: lib/luks2/luks2_reencrypt.c:3445 lib/luks2/luks2_reencrypt.c:3785 msgid "Device is not in reencryption." msgstr "El dispositivo no está en recifrado." -#: lib/luks2/luks2_reencrypt.c:3448 lib/luks2/luks2_reencrypt.c:3788 +#: lib/luks2/luks2_reencrypt.c:3452 lib/luks2/luks2_reencrypt.c:3792 msgid "Reencryption process is already running." msgstr "El proceso de recifrado ya está en marcha." -#: lib/luks2/luks2_reencrypt.c:3450 lib/luks2/luks2_reencrypt.c:3790 +#: lib/luks2/luks2_reencrypt.c:3454 lib/luks2/luks2_reencrypt.c:3794 msgid "Failed to acquire reencryption lock." msgstr "No se ha podido adquirir el bloqueo de recifrado." -#: lib/luks2/luks2_reencrypt.c:3468 +#: lib/luks2/luks2_reencrypt.c:3472 msgid "Cannot proceed with reencryption. Run reencryption recovery first." msgstr "No se puede proceder con el recifrado. Ejecute primero la recuperación de recifrado." -#: lib/luks2/luks2_reencrypt.c:3604 +#: lib/luks2/luks2_reencrypt.c:3608 msgid "Active device size and requested reencryption size don't match." msgstr "El tamaño del dispositivo activo y el tamaño de recifrado solicitado no coinciden." -#: lib/luks2/luks2_reencrypt.c:3618 +#: lib/luks2/luks2_reencrypt.c:3622 msgid "Illegal device size requested in reencryption parameters." msgstr "El tamaño de dispositivo solicitado en los parámetros de recifrado no es válido." -#: lib/luks2/luks2_reencrypt.c:3720 +#: lib/luks2/luks2_reencrypt.c:3724 msgid "Reencryption in-progress. Cannot perform recovery." msgstr "Recifrado en proceso. No se puede llevar a cabo una recuperación." -#: lib/luks2/luks2_reencrypt.c:3741 +#: lib/luks2/luks2_reencrypt.c:3745 msgid "LUKS2 reencryption recovery failed." msgstr "La recuperación del recifrado LUKS2 ha fallado." -#: lib/luks2/luks2_reencrypt.c:3874 lib/luks2/luks2_reencrypt.c:4353 +#: lib/luks2/luks2_reencrypt.c:3878 lib/luks2/luks2_reencrypt.c:4357 msgid "Failed to initialize reencryption device stack." msgstr "No se ha podido inicializar la pila del dispositivo de recifrado." -#: lib/luks2/luks2_reencrypt.c:3907 +#: lib/luks2/luks2_reencrypt.c:3911 msgid "LUKS2 reencryption already initialized in metadata." msgstr "Recifrado LUKS2 ya inicializado en los metadatos." -#: lib/luks2/luks2_reencrypt.c:3915 +#: lib/luks2/luks2_reencrypt.c:3919 msgid "Failed to initialize LUKS2 reencryption in metadata." msgstr "No se ha podido inicializar el recifrado LUKS2 en los metadatos." -#: lib/luks2/luks2_reencrypt.c:3968 lib/luks2/luks2_reencrypt.c:4000 -#: lib/luks2/luks2_reencrypt.c:4030 +#: lib/luks2/luks2_reencrypt.c:3972 lib/luks2/luks2_reencrypt.c:4004 +#: lib/luks2/luks2_reencrypt.c:4034 msgid "Reencryption is not supported for DAX (persistent memory) devices." msgstr "El recifrado no está disponible para dispositivo DAX (memoria persistente)." -#: lib/luks2/luks2_reencrypt.c:4059 +#: lib/luks2/luks2_reencrypt.c:4063 msgid "Failed to set device segments for next reencryption hotzone." msgstr "No se han podido establecer los segmentos del dispositivo para la siguiente zona activa de recifrado." -#: lib/luks2/luks2_reencrypt.c:4112 +#: lib/luks2/luks2_reencrypt.c:4116 msgid "Failed to write reencryption resilience metadata." msgstr "No se han podido escribir los metadatos de resiliencia de recifrado." -#: lib/luks2/luks2_reencrypt.c:4119 +#: lib/luks2/luks2_reencrypt.c:4123 msgid "Decryption failed." msgstr "El descifrado ha fallado." -#: lib/luks2/luks2_reencrypt.c:4124 +#: lib/luks2/luks2_reencrypt.c:4128 #, c-format msgid "Failed to write hotzone area starting at %." msgstr "No se ha podido escribir la zona activa que comienza en %." -#: lib/luks2/luks2_reencrypt.c:4129 +#: lib/luks2/luks2_reencrypt.c:4133 msgid "Failed to sync data." msgstr "No se han podido sincronizar los datos." -#: lib/luks2/luks2_reencrypt.c:4137 +#: lib/luks2/luks2_reencrypt.c:4141 msgid "Failed to update metadata after current reencryption hotzone completed." msgstr "No se han podido actualizar los metadatos tras completar la zona activa de recifrado actual." -#: lib/luks2/luks2_reencrypt.c:4226 +#: lib/luks2/luks2_reencrypt.c:4230 msgid "Failed to write LUKS2 metadata." msgstr "No se han podido escribir los metadatos de LUKS2." -#: lib/luks2/luks2_reencrypt.c:4249 +#: lib/luks2/luks2_reencrypt.c:4253 msgid "Failed to wipe unused data device area." msgstr "No se ha podido limpiar el área no utilizada del dispositivo de datos." -#: lib/luks2/luks2_reencrypt.c:4255 +#: lib/luks2/luks2_reencrypt.c:4259 #, c-format msgid "Failed to remove unused (unbound) keyslot %d." msgstr "No se ha logrado borrar la ranura de claves (independiente) %d no utilizada." -#: lib/luks2/luks2_reencrypt.c:4265 +#: lib/luks2/luks2_reencrypt.c:4269 msgid "Failed to remove reencryption keyslot." msgstr "No se ha podido borrar la ranura de claves de recifrado." -#: lib/luks2/luks2_reencrypt.c:4275 +#: lib/luks2/luks2_reencrypt.c:4279 #, c-format msgid "Fatal error while reencrypting chunk starting at %, % sectors long." msgstr "Error fatal mientras se recifraba una porción que comienza en %, de % sectores de longitud." -#: lib/luks2/luks2_reencrypt.c:4279 +#: lib/luks2/luks2_reencrypt.c:4283 msgid "Online reencryption failed." msgstr "El recifrado «online» ha fallado." # No sé cómo traducir 'error target'. -#: lib/luks2/luks2_reencrypt.c:4284 +#: lib/luks2/luks2_reencrypt.c:4288 msgid "Do not resume the device unless replaced with error target manually." msgstr "No reanudar el dispositivo a menos que se reemplace con «error target» manualmente." -#: lib/luks2/luks2_reencrypt.c:4336 +#: lib/luks2/luks2_reencrypt.c:4340 msgid "Cannot proceed with reencryption. Unexpected reencryption status." msgstr "No se puede proceder con el recifrado. Estado de recifrado inesperado." -#: lib/luks2/luks2_reencrypt.c:4342 +#: lib/luks2/luks2_reencrypt.c:4346 msgid "Missing or invalid reencrypt context." msgstr "Contexto de recifrado ausente o no válido." -#: lib/luks2/luks2_reencrypt.c:4376 lib/luks2/luks2_reencrypt.c:4413 +#: lib/luks2/luks2_reencrypt.c:4380 lib/luks2/luks2_reencrypt.c:4417 msgid "Failed to update reencryption context." msgstr "No se ha podido actualizar el contexto de recifrado." -#: lib/luks2/luks2_reencrypt_digest.c:401 +#: lib/luks2/luks2_reencrypt_digest.c:402 msgid "Reencryption metadata is invalid." msgstr "Los metadatos de recifrado no son válidos." @@ -2217,8 +2208,8 @@ msgstr "Los parámetros de cifrado de ranura de claves solo pueden configurarse msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encryption." msgstr "Los parámetros de cifrado de ranura de claves no son compatibles con cifrado de ranura de claves LUKS2." -#: src/cryptsetup.c:150 src/cryptsetup.c:1180 src/cryptsetup.c:1547 -#: src/utils_reencrypt.c:1887 src/utils_reencrypt_luks1.c:502 +#: src/cryptsetup.c:150 src/cryptsetup.c:1180 src/cryptsetup.c:1545 +#: src/utils_reencrypt.c:1890 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." msgstr "No se ha detectado ningún patrón conocido de especificación de cifrado." @@ -2245,8 +2236,8 @@ msgstr "ATENCIÓN: No se va a hacer caso del parámetro --hash en modo sin cifra msgid "WARNING: The --keyfile-size option is being ignored, the read size is the same as the encryption key size.\n" msgstr "ATENCIÓN: No se va a hacer caso de la opción --keyfile-size; el tamaño de lectura es igual al tamaño de la clave de cifrado.\n" -#: src/cryptsetup.c:226 src/cryptsetup.c:1377 src/cryptsetup.c:1600 -#: src/integritysetup.c:188 src/utils_reencrypt.c:2138 +#: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 +#: src/integritysetup.c:189 src/utils_reencrypt.c:2141 #, c-format msgid "Blkid scan failed for %s." msgstr "La exploración de Blkid ha fallado para %s." @@ -2256,11 +2247,11 @@ msgstr "La exploración de Blkid ha fallado para %s." msgid "Detected device signature(s) on %s. Proceeding further may damage existing data." msgstr "Se ha(n) detectado firma(s) de dispositivo en %s. Si se prosigue, pueden dañarse los datos existentes." -#: src/cryptsetup.c:238 src/cryptsetup.c:1263 src/cryptsetup.c:1311 -#: src/cryptsetup.c:1384 src/cryptsetup.c:1524 src/cryptsetup.c:1612 -#: src/cryptsetup.c:2497 src/cryptsetup.c:2926 src/integritysetup.c:178 -#: src/utils_reencrypt.c:111 src/utils_reencrypt.c:457 -#: src/utils_reencrypt.c:925 +#: src/cryptsetup.c:238 src/cryptsetup.c:1261 src/cryptsetup.c:1309 +#: src/cryptsetup.c:1382 src/cryptsetup.c:1522 src/cryptsetup.c:1610 +#: src/cryptsetup.c:2495 src/cryptsetup.c:2925 src/integritysetup.c:179 +#: src/utils_reencrypt.c:111 src/utils_reencrypt.c:459 +#: src/utils_reencrypt.c:927 msgid "Operation aborted.\n" msgstr "Operación abortada.\n" @@ -2268,36 +2259,36 @@ msgstr "Operación abortada.\n" msgid "Option --key-file is required." msgstr "Es necesaria la opción --key-file." -#: src/cryptsetup.c:377 +#: src/cryptsetup.c:378 msgid "Enter VeraCrypt PIM: " msgstr "Introduzca PIM de VeraCrypt: " -#: src/cryptsetup.c:386 +#: src/cryptsetup.c:387 msgid "Invalid PIM value: parse error." msgstr "Valor de PIM no válido: error de análisis." -#: src/cryptsetup.c:389 +#: src/cryptsetup.c:390 msgid "Invalid PIM value: 0." msgstr "Valor de PIM no válido: 0." -#: src/cryptsetup.c:392 +#: src/cryptsetup.c:393 msgid "Invalid PIM value: outside of range." msgstr "Valor de PIM no válido: fuera de rango." -#: src/cryptsetup.c:415 +#: src/cryptsetup.c:416 msgid "No device header detected with this passphrase." msgstr "No se ha detectado ninguna cabecera de dispositivo con esa frase contraseña." -#: src/cryptsetup.c:492 src/cryptsetup.c:677 +#: src/cryptsetup.c:493 src/cryptsetup.c:678 #, c-format msgid "Device %s is not a valid BITLK device." msgstr "El dispositivo %s no es un dispositivo BITLK válido." -#: src/cryptsetup.c:500 +#: src/cryptsetup.c:501 msgid "Cannot determine volume key size for BITLK, please use --key-size option." msgstr "No se puede determinar el tamaño de la clave del volumen para BITLK; utilice la opción --key-size." -#: src/cryptsetup.c:546 +#: src/cryptsetup.c:547 msgid "" "Header dump with volume key is sensitive information\n" "which allows access to encrypted partition without passphrase.\n" @@ -2307,7 +2298,7 @@ msgstr "" "sensible que permite el acceso a una partición cifrada sin frase contraseña.\n" "Este volcado debería almacenarse siempre cifrado en un lugar seguro." -#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2522 +#: src/cryptsetup.c:614 src/cryptsetup.c:700 src/cryptsetup.c:2520 msgid "" "The header dump with volume key is sensitive information\n" "that allows access to encrypted partition without a passphrase.\n" @@ -2317,56 +2308,56 @@ msgstr "" "sensible que permite el acceso a una partición cifrada sin frase contraseña.\n" "Este volcado debería almacenarse cifrado en un lugar seguro." -#: src/cryptsetup.c:754 src/cryptsetup.c:786 +#: src/cryptsetup.c:755 src/cryptsetup.c:787 #, c-format msgid "Device %s is not a valid FVAULT2 device." msgstr "El dispositivo %s no es un dispositivo FVAULT2 válido." -#: src/cryptsetup.c:794 +#: src/cryptsetup.c:795 msgid "Cannot determine volume key size for FVAULT2, please use --key-size option." msgstr "No se puede determinar el tamaño de la clave del volumen para FVAULT2; utilice la opción --key-size." -#: src/cryptsetup.c:848 src/veritysetup.c:317 src/integritysetup.c:410 +#: src/cryptsetup.c:849 src/veritysetup.c:317 src/integritysetup.c:422 #, c-format msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "El dispositivo %s todavía está activo y programado para borrado diferido.\n" -#: src/cryptsetup.c:881 src/cryptsetup.c:1810 src/cryptsetup.c:2084 -#: src/cryptsetup.c:2231 src/cryptsetup.c:2650 src/cryptsetup.c:2731 -#: src/cryptsetup.c:3264 +#: src/cryptsetup.c:882 src/cryptsetup.c:1808 src/cryptsetup.c:2082 +#: src/cryptsetup.c:2229 src/cryptsetup.c:2648 src/cryptsetup.c:2730 +#: src/cryptsetup.c:3263 #, c-format msgid "Failed to set external tokens path %s." msgstr "No se ha podido establecer la ruta de «tokens» externa %s." -#: src/cryptsetup.c:890 +#: src/cryptsetup.c:891 msgid "Resize of active device requires volume key in keyring but --disable-keyring option is set." msgstr "El cambio de tamaño del dispositivo activo requiere clave de volumen en el llavero pero la opción --disable-keyring está puesta." -#: src/cryptsetup.c:1059 +#: src/cryptsetup.c:1058 msgid "Benchmark interrupted." msgstr "Comparativa interrumpida." -#: src/cryptsetup.c:1080 +#: src/cryptsetup.c:1079 #, c-format msgid "PBKDF2-%-9s N/A\n" msgstr "PBKDF2-%-9s N/A\n" -#: src/cryptsetup.c:1082 +#: src/cryptsetup.c:1081 #, c-format msgid "PBKDF2-%-9s %7u iterations per second for %zu-bit key\n" msgstr "PBKDF2-%-9s %7u iteraciones por segundo para clave de %zu bits\n" -#: src/cryptsetup.c:1096 +#: src/cryptsetup.c:1095 #, c-format msgid "%-10s N/A\n" msgstr "%-10s N/A\n" -#: src/cryptsetup.c:1098 +#: src/cryptsetup.c:1097 #, c-format msgid "%-10s %4u iterations, %5u memory, %1u parallel threads (CPUs) for %zu-bit key (requested %u ms time)\n" msgstr "%-10s %4u iteraciones, %5u memora, %1u hilos paralelos (CPUs) para clave de %zu bits (tiempo solicitado %u ms)\n" -#: src/cryptsetup.c:1122 +#: src/cryptsetup.c:1121 msgid "Result of benchmark is not reliable." msgstr "El resultado de la comparativa no es fiable." @@ -2386,15 +2377,19 @@ msgid "Cipher %s (with %i bits key) is not available." msgstr "El algoritmo de cifrado %s (con clave de %i bits) no está disponible." #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1224 +#: src/cryptsetup.c:1226 msgid "# Algorithm | Key | Encryption | Decryption\n" msgstr "# Algoritmo | Clave | Cifrado | Descifrado\n" -#: src/cryptsetup.c:1235 +#: src/cryptsetup.c:1239 msgid "N/A" msgstr "/N/A" -#: src/cryptsetup.c:1260 +#: src/cryptsetup.c:1242 +msgid "# Cipher speed test is not available.\n" +msgstr "# La prueba de velocidad de cifrado no está disponible.\n" + +#: src/cryptsetup.c:1258 msgid "" "Unprotected LUKS2 reencryption metadata detected. Please verify the reencryption operation is desirable (see luksDump output)\n" "and continue (upgrade metadata) only if you acknowledge the operation as genuine." @@ -2402,27 +2397,27 @@ msgstr "" "Se han detectado metadatos de recifrado LUKS2 no protegidos. Verifique que la operación de recifrado es deseable (consulte\n" "la salida de luksDump) y continúe (actualización de los metadatos) únicamente si reconoce la operación como auténtica." -#: src/cryptsetup.c:1266 +#: src/cryptsetup.c:1264 msgid "Enter passphrase to protect and upgrade reencryption metadata: " msgstr "Introduzca la frase contraseña para proteger y actualizar los metadatos del recifrado: " -#: src/cryptsetup.c:1310 +#: src/cryptsetup.c:1308 msgid "Really proceed with LUKS2 reencryption recovery?" msgstr "¿Está seguro de proceder con la recuperación del recifrado LUKS2?" -#: src/cryptsetup.c:1319 +#: src/cryptsetup.c:1317 msgid "Enter passphrase to verify reencryption metadata digest: " msgstr "Introduzca la frase contraseña para verificar el resumen de los metadatos del recifrado: " -#: src/cryptsetup.c:1321 +#: src/cryptsetup.c:1319 msgid "Enter passphrase for reencryption recovery: " msgstr "Introduzca la frase contraseña para la recuperación del recifrado: " -#: src/cryptsetup.c:1383 +#: src/cryptsetup.c:1381 msgid "Really try to repair LUKS device header?" msgstr "¿Está seguro de que quiere intentar reparar la cabecera del dispositivo LUKS?" -#: src/cryptsetup.c:1411 src/integritysetup.c:76 src/integritysetup.c:244 +#: src/cryptsetup.c:1409 src/integritysetup.c:76 src/integritysetup.c:246 msgid "" "\n" "Wipe interrupted." @@ -2430,7 +2425,7 @@ msgstr "" "\n" "Limpieza interrumpida." -#: src/cryptsetup.c:1416 src/integritysetup.c:81 src/integritysetup.c:283 +#: src/cryptsetup.c:1414 src/integritysetup.c:81 src/integritysetup.c:291 msgid "" "Wiping device to initialize integrity checksum.\n" "You can interrupt this by pressing CTRL+c (rest of not wiped device will contain invalid checksum).\n" @@ -2438,167 +2433,167 @@ msgstr "" "Limpieza de dispositivo para inicializar la suma de comprobación de integridad.\n" "Puede interrumpirse pulsando CTRL+c (el resto de dispositivo no limpiado contendrá sumas de comprobación no válidas.\n" -#: src/cryptsetup.c:1438 src/integritysetup.c:103 +#: src/cryptsetup.c:1436 src/integritysetup.c:103 #, c-format msgid "Cannot deactivate temporary device %s." msgstr "No se puede desactivar el dispositivo temporal %s." -#: src/cryptsetup.c:1486 +#: src/cryptsetup.c:1484 msgid "OPAL hw-only encryption does not support --cipher and --key-size, options ignored." msgstr "El cifrado solo hw OPAL no dispone de --cipher ni --key-size; se descartarán estas opciones" -#: src/cryptsetup.c:1499 +#: src/cryptsetup.c:1497 msgid "Integrity option can be used only for LUKS2 format." msgstr "La opción de integridad solo puede utilizarse para formato LUKS2." -#: src/cryptsetup.c:1504 src/cryptsetup.c:1584 +#: src/cryptsetup.c:1502 src/cryptsetup.c:1582 msgid "Unsupported LUKS2 metadata size options." msgstr "Opciones de tamaño de metadatos LUKS2 no admitidas." -#: src/cryptsetup.c:1509 +#: src/cryptsetup.c:1507 msgid "OPAL is supported only for LUKS2 format." msgstr "OPAL solo está disponible para formato LUKS2." -#: src/cryptsetup.c:1514 +#: src/cryptsetup.c:1512 msgid "Inline hw tags are supported only for LUKS2 format." msgstr "Las etiquetas hw en línea solo están disponibles para formato LUKS2." -#: src/cryptsetup.c:1523 +#: src/cryptsetup.c:1521 msgid "Header file does not exist, do you want to create it?" msgstr "No existe el fichero de cabecera; ¿desea crearlo?" -#: src/cryptsetup.c:1531 +#: src/cryptsetup.c:1529 #, c-format msgid "Cannot create header file %s." msgstr "No se puede crear el fichero de cabecera %s." -#: src/cryptsetup.c:1557 src/integritysetup.c:126 src/integritysetup.c:141 -#: src/integritysetup.c:150 src/integritysetup.c:322 src/integritysetup.c:330 -#: src/integritysetup.c:340 +#: src/cryptsetup.c:1555 src/integritysetup.c:127 src/integritysetup.c:142 +#: src/integritysetup.c:151 src/integritysetup.c:330 src/integritysetup.c:338 +#: src/integritysetup.c:348 msgid "No known integrity specification pattern detected." msgstr "No se ha detectado ningún patrón conocido de especificación de integridad." -#: src/cryptsetup.c:1559 +#: src/cryptsetup.c:1557 msgid "Cannot use specified integrity key size." msgstr "No se puede utilizar el tamaño de clave de integridad especificado." -#: src/cryptsetup.c:1577 +#: src/cryptsetup.c:1575 #, c-format msgid "Cannot use %s as on-disk header." msgstr "No se puede utilizar %s como cabecera en disco." -#: src/cryptsetup.c:1606 src/integritysetup.c:172 +#: src/cryptsetup.c:1604 src/integritysetup.c:173 #, c-format msgid "This will overwrite data on %s irrevocably." msgstr "Esto sobreescribirá los datos en %s de forma irrevocable." -#: src/cryptsetup.c:1643 +#: src/cryptsetup.c:1641 msgid "OPAL Admin password cannot be empty." msgstr "La contraseña de administrador de OPAL no puede estar vacía." -#: src/cryptsetup.c:1657 src/cryptsetup.c:2101 src/cryptsetup.c:2244 -#: src/cryptsetup.c:2379 src/cryptsetup.c:2445 src/utils_reencrypt_luks1.c:428 +#: src/cryptsetup.c:1655 src/cryptsetup.c:2099 src/cryptsetup.c:2242 +#: src/cryptsetup.c:2377 src/cryptsetup.c:2443 src/utils_reencrypt_luks1.c:428 msgid "Failed to set pbkdf parameters." msgstr "No se han podido establecer los parámetros pbkdf." -#: src/cryptsetup.c:1788 +#: src/cryptsetup.c:1786 msgid "Reduced data offset is allowed only for detached LUKS header." msgstr "La posición de datos reducida está permitida solamente para cabecera LUKS separada." -#: src/cryptsetup.c:1795 +#: src/cryptsetup.c:1793 #, c-format msgid "LUKS file container %s is too small for activation, there is no remaining space for data." msgstr "El contenedor de ficheros LUKS %s is demasiado pequeño para activarlo; no queda espacio para los datos." -#: src/cryptsetup.c:1837 src/cryptsetup.c:2250 src/utils_reencrypt.c:277 -#: src/utils_reencrypt.c:369 src/utils_reencrypt.c:1907 +#: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:278 +#: src/utils_reencrypt.c:371 src/utils_reencrypt.c:1910 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "No se puede determinar el tamaño de la clave del volumen para LUKS2 sin ranuras de claves; utilice la opción --key-size." -#: src/cryptsetup.c:1856 src/utils_reencrypt.c:303 +#: src/cryptsetup.c:1854 src/utils_reencrypt.c:304 msgid "Device requires two volume keys." msgstr "El dispositivo requiere dos claves de volumen." -#: src/cryptsetup.c:1891 +#: src/cryptsetup.c:1889 msgid "Some specified activation parameters were ignored with OPAL hw-only encryption." msgstr "Algunos parámetros de activación especificados se han descartado con el cifrado solo hw OPAL." -#: src/cryptsetup.c:1896 +#: src/cryptsetup.c:1894 msgid "Device activated but cannot make flags persistent." msgstr "Dispositivo activado pero los indicadores no pueden hacerse persistentes." -#: src/cryptsetup.c:1976 src/cryptsetup.c:2044 +#: src/cryptsetup.c:1974 src/cryptsetup.c:2042 #, c-format msgid "Keyslot %d is selected for deletion." msgstr "La ranura de claves %d se va a borrar." -#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 +#: src/cryptsetup.c:1986 src/cryptsetup.c:2046 msgid "This is the last keyslot. Device will become unusable after purging this key." msgstr "Esta es la última ranura de claves. El dispositivo quedará inutilizado después de purgar esta clave." -#: src/cryptsetup.c:1989 +#: src/cryptsetup.c:1987 msgid "Enter any remaining passphrase: " msgstr "Introduzca cualquier frase contraseña que quede: " -#: src/cryptsetup.c:1990 src/cryptsetup.c:2050 +#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 msgid "Operation aborted, the keyslot was NOT wiped.\n" msgstr "Operación abortada; la ranura de claves NO estaba limpia.\n" -#: src/cryptsetup.c:2026 +#: src/cryptsetup.c:2024 msgid "Enter passphrase to be deleted: " msgstr "Introduzca la frase contraseña que hay que borrar: " -#: src/cryptsetup.c:2076 src/cryptsetup.c:2428 src/cryptsetup.c:3088 -#: src/cryptsetup.c:3255 +#: src/cryptsetup.c:2074 src/cryptsetup.c:2426 src/cryptsetup.c:3087 +#: src/cryptsetup.c:3254 #, c-format msgid "Device %s is not a valid LUKS2 device." msgstr "El dispositivo %s no es un dispositivo LUKS2 válido." -#: src/cryptsetup.c:2115 src/cryptsetup.c:2314 +#: src/cryptsetup.c:2113 src/cryptsetup.c:2312 msgid "Enter new passphrase for key slot: " msgstr "Introduzca una nueva frase contraseña para la ranura de claves: " -#: src/cryptsetup.c:2149 src/utils_luks.c:342 +#: src/cryptsetup.c:2147 src/utils_luks.c:342 #, c-format msgid "Enter token PIN: " msgstr "Introduzca el PIN del «token»: " -#: src/cryptsetup.c:2151 src/utils_luks.c:344 +#: src/cryptsetup.c:2149 src/utils_luks.c:344 #, c-format msgid "Enter token %d PIN: " msgstr "Introduzca el PIN del «token» %d: " -#: src/cryptsetup.c:2210 +#: src/cryptsetup.c:2208 msgid "WARNING: The --key-slot parameter is used for new keyslot number.\n" msgstr "ATENCIÓN: Se utiliza el parámetro --key-slot para el número de una ranura de claves nueva.\n" -#: src/cryptsetup.c:2287 src/utils_reencrypt_luks1.c:1094 +#: src/cryptsetup.c:2285 src/utils_reencrypt_luks1.c:1094 #, c-format msgid "Enter any existing passphrase: " msgstr "Introduzca cualquier frase contraseña que exista: " -#: src/cryptsetup.c:2383 +#: src/cryptsetup.c:2381 msgid "Enter passphrase to be changed: " msgstr "Introduzca la frase contraseña que hay que cambiar: " -#: src/cryptsetup.c:2399 src/utils_reencrypt_luks1.c:1080 +#: src/cryptsetup.c:2397 src/utils_reencrypt_luks1.c:1080 msgid "Enter new passphrase: " msgstr "Introduzca una nueva frase contraseña: " -#: src/cryptsetup.c:2449 +#: src/cryptsetup.c:2447 msgid "Enter passphrase for keyslot to be converted: " msgstr "Introduzca la frase contraseña para la ranura de claves que se va a convertir: " -#: src/cryptsetup.c:2473 +#: src/cryptsetup.c:2471 msgid "Only one device argument for isLuks operation is supported." msgstr "La operación isLuks solo admite un argumento de dispositivo." -#: src/cryptsetup.c:2578 +#: src/cryptsetup.c:2576 #, c-format msgid "Keyslot %d does not contain unbound key." msgstr "La ranura de claves %d no contiene clave independiente." -#: src/cryptsetup.c:2583 +#: src/cryptsetup.c:2581 msgid "" "The header dump with unbound key is sensitive information.\n" "This dump should be stored encrypted in a safe place." @@ -2606,52 +2601,52 @@ msgstr "" "El volcado de la cabecera con clave independiente del volumen es información\n" "sensible. Este volcado debería almacenarse cifrado en un lugar seguro." -#: src/cryptsetup.c:2678 src/cryptsetup.c:2714 +#: src/cryptsetup.c:2676 src/cryptsetup.c:2713 #, c-format msgid "%s is not active %s device name." msgstr "%s no es un nombre de dispositivo %s activo." -#: src/cryptsetup.c:2709 +#: src/cryptsetup.c:2708 #, c-format msgid "%s is not active LUKS device name or header is missing." msgstr "%s no es un nombre de dispositivo LUKS activo o falta la cabecera." -#: src/cryptsetup.c:2786 src/cryptsetup.c:2805 +#: src/cryptsetup.c:2785 src/cryptsetup.c:2804 msgid "Option --header-backup-file is required." msgstr "Es necesaria la opción --header-backup-file." -#: src/cryptsetup.c:2836 +#: src/cryptsetup.c:2835 #, c-format msgid "%s is not cryptsetup managed device." msgstr "%s no es un dispositivo gestionable por cryptsetup." -#: src/cryptsetup.c:2847 +#: src/cryptsetup.c:2846 #, c-format msgid "Refresh is not supported for device type %s" msgstr "El refresco no está disponible para el tipo de dispositivo %s" -#: src/cryptsetup.c:2897 +#: src/cryptsetup.c:2896 #, c-format msgid "Unrecognized metadata device type %s." msgstr "Tipo de dispositivo de metadatos %s no reconocido." -#: src/cryptsetup.c:2899 +#: src/cryptsetup.c:2898 msgid "Command requires device and mapped name as arguments." msgstr "Esta orden necesita como argumentos el dispositivo y el nombre asociado." -#: src/cryptsetup.c:2917 +#: src/cryptsetup.c:2916 msgid "Enter OPAL PSID: " msgstr "Introduzca el PSID de OPAL: " -#: src/cryptsetup.c:2917 +#: src/cryptsetup.c:2916 msgid "Enter OPAL Admin password: " msgstr "Introduzca la contraseña de administrador de OPAL: " -#: src/cryptsetup.c:2925 +#: src/cryptsetup.c:2924 msgid "WARNING: WHOLE disk will be factory reset and all data will be lost! Continue?" msgstr "ATENCIÓN: ¡El disco ENTERO será restituido a la configuración de fábrica y todos los datos se perderán! ¿Continuar?" -#: src/cryptsetup.c:2968 +#: src/cryptsetup.c:2967 #, c-format msgid "" "This operation will erase all keyslots on device %s.\n" @@ -2660,363 +2655,363 @@ msgstr "" "Esta operación borrará todas las ranuras de claves en el dispositivo %s.\n" "El dispositivo quedará inutilizable después de esta operación." -#: src/cryptsetup.c:2975 +#: src/cryptsetup.c:2974 msgid "Operation aborted, keyslots were NOT wiped.\n" msgstr "Operación abortada; las ranuras de claves NO estaban limpias.\n" -#: src/cryptsetup.c:3014 +#: src/cryptsetup.c:3013 msgid "Invalid LUKS type, only luks1 and luks2 are supported." msgstr "Tipo LUKS no válido; solo se admiten luks1 y luks2." -#: src/cryptsetup.c:3030 +#: src/cryptsetup.c:3029 #, c-format msgid "Device is already %s type." msgstr "El dispositivo ya es de tipo %s." -#: src/cryptsetup.c:3037 +#: src/cryptsetup.c:3036 #, c-format msgid "This operation will convert %s to %s format.\n" msgstr "Esta operación convertirá el formato %s a %s.\n" -#: src/cryptsetup.c:3040 +#: src/cryptsetup.c:3039 msgid "Operation aborted, device was NOT converted.\n" msgstr "Operación abortada; el dispositivo NO estaba convertido.\n" -#: src/cryptsetup.c:3080 +#: src/cryptsetup.c:3079 msgid "Option --priority, --label or --subsystem is missing." msgstr "Falta la opción --priority, --label o --subsystem." -#: src/cryptsetup.c:3114 src/cryptsetup.c:3154 src/cryptsetup.c:3174 +#: src/cryptsetup.c:3113 src/cryptsetup.c:3153 src/cryptsetup.c:3173 #, c-format msgid "Token %d is invalid." msgstr "El «token» %d no es válido." -#: src/cryptsetup.c:3117 src/cryptsetup.c:3177 +#: src/cryptsetup.c:3116 src/cryptsetup.c:3176 #, c-format msgid "Token %d in use." msgstr "El «token» %d está en uso." -#: src/cryptsetup.c:3129 +#: src/cryptsetup.c:3128 #, c-format msgid "Failed to add luks2-keyring token %d." msgstr "No se ha podido añadir el «token» %d al llavero luks." -#: src/cryptsetup.c:3140 src/cryptsetup.c:3203 +#: src/cryptsetup.c:3139 src/cryptsetup.c:3202 #, c-format msgid "Failed to assign token %d to keyslot %d." msgstr "No se ha logrado asignar el «token» %d a la ranura de claves %d." -#: src/cryptsetup.c:3157 +#: src/cryptsetup.c:3156 #, c-format msgid "Token %d is not in use." msgstr "El «token» %d no está en uso." -#: src/cryptsetup.c:3194 +#: src/cryptsetup.c:3193 msgid "Failed to import token from file." msgstr "No se ha podido importar el «token» del fichero." -#: src/cryptsetup.c:3219 +#: src/cryptsetup.c:3218 #, c-format msgid "Failed to get token %d for export." msgstr "No se ha logrado obtener el «token» %d para exportar." -#: src/cryptsetup.c:3232 +#: src/cryptsetup.c:3231 #, c-format msgid "Token %d is not assigned to keyslot %d." msgstr "El «token» %d no se ha asignado a la ranura de claves %d." -#: src/cryptsetup.c:3234 src/cryptsetup.c:3241 +#: src/cryptsetup.c:3233 src/cryptsetup.c:3240 #, c-format msgid "Failed to unassign token %d from keyslot %d." msgstr "No se ha logrado desasignar el «token» %d de la ranura de claves %d." -#: src/cryptsetup.c:3300 +#: src/cryptsetup.c:3299 msgid "Option --tcrypt-hidden, --tcrypt-system or --tcrypt-backup is supported only for TCRYPT device." msgstr "La opción --tcrypt-hidden o --tcrypt-system o --tcrypt-backup solo está disponible para dispositivos TCRYPT." -#: src/cryptsetup.c:3303 +#: src/cryptsetup.c:3302 msgid "Option --veracrypt or --disable-veracrypt is supported only for TCRYPT device type." msgstr "Las opciones --veracrypt y --disable-veracrypt solo están disponibles para dispositivos de tipo TCRYPT." -#: src/cryptsetup.c:3306 +#: src/cryptsetup.c:3305 msgid "Option --veracrypt-pim is supported only for VeraCrypt compatible devices." msgstr "La opción --veracrypt-pim solo está disponible para dispositivos compatibles con VeraCrypt." -#: src/cryptsetup.c:3310 +#: src/cryptsetup.c:3309 msgid "Option --veracrypt-query-pim is supported only for VeraCrypt compatible devices." msgstr "La opción --veracrypt-query-pim solo está disponible para dispositivos compatibles con VeraCrypt." -#: src/cryptsetup.c:3312 +#: src/cryptsetup.c:3311 msgid "The options --veracrypt-pim and --veracrypt-query-pim are mutually exclusive." msgstr "Las opciones --veracrypt-pim y --veracrypt-query-pim son mutuamente excluyentes." -#: src/cryptsetup.c:3321 +#: src/cryptsetup.c:3320 msgid "Option --persistent is not allowed with --test-passphrase." msgstr "La opción --persistent no se permite con --test-passphrase." -#: src/cryptsetup.c:3324 +#: src/cryptsetup.c:3323 msgid "Options --refresh and --test-passphrase are mutually exclusive." msgstr "Las opciones --refresh y --test-passphrase son mutuamente excluyentes." -#: src/cryptsetup.c:3327 +#: src/cryptsetup.c:3326 msgid "Option --shared is allowed only for open of plain device." msgstr "La opción --shared solo se permite para abrir dispositivos no cifrados." -#: src/cryptsetup.c:3330 +#: src/cryptsetup.c:3329 msgid "Option --skip is supported only for open of plain and loopaes devices." msgstr "La opción --skip solo está disponible para abrir dispositivos no cifrados y «loopaes»." -#: src/cryptsetup.c:3333 +#: src/cryptsetup.c:3332 msgid "Option --offset with open action is only supported for plain and loopaes devices." msgstr "La opción --offset con acción de apertura solo está disponible para abrir dispositivos no cifrados y «loopaes»." -#: src/cryptsetup.c:3336 +#: src/cryptsetup.c:3335 msgid "Option --tcrypt-hidden cannot be combined with --allow-discards." msgstr "La opción --tcrypt-hidden no puede combinarse con --allow-discards." -#: src/cryptsetup.c:3340 +#: src/cryptsetup.c:3339 msgid "Sector size option with open action is supported only for plain devices." msgstr "La opción de tamaño de sector con acción de apertura solamente está disponible para dispositivos no cifrados." -#: src/cryptsetup.c:3344 +#: src/cryptsetup.c:3343 msgid "Large IV sectors option is supported only for opening plain type device with sector size larger than 512 bytes." msgstr "La opción de sectores IV grandes solo se admite para abrir dispositivo de tipo plano con tamaño de sector mayor de 512 bytes." -#: src/cryptsetup.c:3349 +#: src/cryptsetup.c:3348 msgid "Option --test-passphrase is allowed only for open of LUKS, TCRYPT, BITLK and FVAULT2 devices." msgstr "La opción --test-passphrase solo se permite para abrir dispositivos LUKS, TCRYPT, BITLK y FVAULT2." -#: src/cryptsetup.c:3352 src/cryptsetup.c:3382 +#: src/cryptsetup.c:3351 src/cryptsetup.c:3381 msgid "Options --device-size and --size cannot be combined." msgstr "Las opciones --device-size y --size no pueden combinarse." -#: src/cryptsetup.c:3355 +#: src/cryptsetup.c:3354 msgid "Option --unbound is allowed only for open of luks device." msgstr "La opción --unbound solo se permite para abrir dispositivos luks." -#: src/cryptsetup.c:3358 +#: src/cryptsetup.c:3357 msgid "Option --unbound cannot be used without --test-passphrase." msgstr "La opción --unbound no se puede utilizar sin --test-passphrase." -#: src/cryptsetup.c:3362 +#: src/cryptsetup.c:3361 msgid "Option --volume-key-keyring cannot be combined with --hash or --volume-key-file." msgstr "La opción --volume-key-keyring no puede combinarse con --hash ni --volume-key-file." -#: src/cryptsetup.c:3365 +#: src/cryptsetup.c:3364 msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "Todas las opciones --volume-key-file tienen que emparejarse con las respectivas opciones --key-size." -#: src/cryptsetup.c:3374 src/veritysetup.c:673 src/integritysetup.c:784 +#: src/cryptsetup.c:3373 src/veritysetup.c:673 src/integritysetup.c:793 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "Las opciones --cancel-deferred y --deferred no pueden utilizarse a la vez." -#: src/cryptsetup.c:3390 +#: src/cryptsetup.c:3389 msgid "Option --active-name can be set only for LUKS2 device." msgstr "La opción --active-name solo puede utilizarse para dispositivos LUKS2." -#: src/cryptsetup.c:3393 +#: src/cryptsetup.c:3392 msgid "Options --active-name and --force-offline-reencrypt cannot be combined." msgstr "Las opciones --active-name y --force-offline-reencrypt no pueden combinarse." -#: src/cryptsetup.c:3396 +#: src/cryptsetup.c:3395 msgid "Options --new-volume-key-file and --keep-key cannot be combined." msgstr "Las opciones --new-volume-key-file y --keep-key no pueden combinarse." -#: src/cryptsetup.c:3399 +#: src/cryptsetup.c:3398 msgid "Options --new-volume-key-keyring and --keep-key cannot be combined." msgstr "Las opciones -volume-key-keyring y --keep-key no pueden combinarse." -#: src/cryptsetup.c:3407 src/cryptsetup.c:3437 +#: src/cryptsetup.c:3406 src/cryptsetup.c:3436 msgid "Keyslot specification is required." msgstr "Se requiere especificación de ranura de claves." -#: src/cryptsetup.c:3415 +#: src/cryptsetup.c:3414 msgid "Options --align-payload and --offset cannot be combined." msgstr "Las opciones --align-payload y --offset no pueden combinarse." -#: src/cryptsetup.c:3418 +#: src/cryptsetup.c:3417 msgid "Option --integrity-no-wipe can be used only for format action with integrity extension." msgstr "La opción --integrity-no-wipe solo puede usarse para la acción de formato con extensión de integridad." -#: src/cryptsetup.c:3421 +#: src/cryptsetup.c:3420 msgid "Only one of --use-[u]random options is allowed." msgstr "Solo se permite una de las opciones --use-[u]random." -#: src/cryptsetup.c:3429 +#: src/cryptsetup.c:3428 msgid "Key size is required with --unbound option." msgstr "El tamaño de la clave es requerido con la opción --unbound." -#: src/cryptsetup.c:3449 +#: src/cryptsetup.c:3448 msgid "Invalid token action." msgstr "Acción de «token» no válida." -#: src/cryptsetup.c:3452 +#: src/cryptsetup.c:3451 msgid "--key-description parameter is mandatory for token add action." msgstr "El parámetro --key-description es obligatorio para la acción de añadir «token»." -#: src/cryptsetup.c:3456 src/cryptsetup.c:3469 +#: src/cryptsetup.c:3455 src/cryptsetup.c:3468 msgid "Action requires specific token. Use --token-id parameter." msgstr "La acción requiere un «token» específico. Utilice el parámetro --token-id." -#: src/cryptsetup.c:3460 +#: src/cryptsetup.c:3459 msgid "Option --unbound is valid only with token add action." msgstr "La opción --unbound solo es válida con la acción de añadir «token»." -#: src/cryptsetup.c:3462 +#: src/cryptsetup.c:3461 msgid "Options --key-slot and --unbound cannot be combined." msgstr "Las opciones --key-slot y --unbound no pueden combinarse." -#: src/cryptsetup.c:3467 +#: src/cryptsetup.c:3466 msgid "Action requires specific keyslot. Use --key-slot parameter." msgstr "La acción requiere una ranura de claves específica. Utilice el parámetro --key-slot." -#: src/cryptsetup.c:3483 +#: src/cryptsetup.c:3482 msgid " [--type ] []" msgstr " [--type []" -#: src/cryptsetup.c:3483 src/veritysetup.c:487 src/integritysetup.c:551 +#: src/cryptsetup.c:3482 src/veritysetup.c:487 src/integritysetup.c:560 msgid "open device as " msgstr "abrir el dispositivo como " -#: src/cryptsetup.c:3484 src/cryptsetup.c:3485 src/cryptsetup.c:3486 -#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:552 -#: src/integritysetup.c:553 src/integritysetup.c:555 +#: src/cryptsetup.c:3483 src/cryptsetup.c:3484 src/cryptsetup.c:3485 +#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:561 +#: src/integritysetup.c:562 src/integritysetup.c:564 msgid "" msgstr "" -#: src/cryptsetup.c:3484 src/veritysetup.c:488 src/integritysetup.c:552 +#: src/cryptsetup.c:3483 src/veritysetup.c:488 src/integritysetup.c:561 msgid "close device (remove mapping)" msgstr "cerrar dispositivo (eliminar asociación)" -#: src/cryptsetup.c:3485 src/integritysetup.c:555 +#: src/cryptsetup.c:3484 src/integritysetup.c:564 msgid "resize active device" msgstr "cambiar el tamaño del dispositivo activo" -#: src/cryptsetup.c:3486 +#: src/cryptsetup.c:3485 msgid "show device status" msgstr "mostrar el estado del dispositivo" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3486 msgid "[--cipher ]" msgstr "[--cypher ]" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3486 msgid "benchmark cipher" msgstr "algoritmo de cifrado para pruebas" -#: src/cryptsetup.c:3488 src/cryptsetup.c:3489 src/cryptsetup.c:3490 -#: src/cryptsetup.c:3491 src/cryptsetup.c:3492 src/cryptsetup.c:3499 -#: src/cryptsetup.c:3500 src/cryptsetup.c:3501 src/cryptsetup.c:3502 -#: src/cryptsetup.c:3503 src/cryptsetup.c:3504 src/cryptsetup.c:3505 -#: src/cryptsetup.c:3506 src/cryptsetup.c:3507 src/cryptsetup.c:3508 +#: src/cryptsetup.c:3487 src/cryptsetup.c:3488 src/cryptsetup.c:3489 +#: src/cryptsetup.c:3490 src/cryptsetup.c:3491 src/cryptsetup.c:3498 +#: src/cryptsetup.c:3499 src/cryptsetup.c:3500 src/cryptsetup.c:3501 +#: src/cryptsetup.c:3502 src/cryptsetup.c:3503 src/cryptsetup.c:3504 +#: src/cryptsetup.c:3505 src/cryptsetup.c:3506 src/cryptsetup.c:3507 msgid "" msgstr "" -#: src/cryptsetup.c:3488 +#: src/cryptsetup.c:3487 msgid "try to repair on-disk metadata" msgstr "intentar reparar metadatos en disco" -#: src/cryptsetup.c:3489 +#: src/cryptsetup.c:3488 msgid "reencrypt LUKS2 device" msgstr "recifrar dispositivo LUKS2" -#: src/cryptsetup.c:3490 +#: src/cryptsetup.c:3489 msgid "erase all keyslots (remove encryption key)" msgstr "borrar todas las ranuras de claves (eliminar clave de cifrado)" -#: src/cryptsetup.c:3491 +#: src/cryptsetup.c:3490 msgid "convert LUKS from/to LUKS2 format" msgstr "convertir formato LUKS de/en LUKS2" -#: src/cryptsetup.c:3492 +#: src/cryptsetup.c:3491 msgid "set permanent configuration options for LUKS2" msgstr "establecer opciones de configuración permanentes para LUKS2" -#: src/cryptsetup.c:3493 src/cryptsetup.c:3494 +#: src/cryptsetup.c:3492 src/cryptsetup.c:3493 msgid " []" msgstr " []" -#: src/cryptsetup.c:3493 +#: src/cryptsetup.c:3492 msgid "formats a LUKS device" msgstr "da formato a un dispositivo LUKS" -#: src/cryptsetup.c:3494 +#: src/cryptsetup.c:3493 msgid "add key to LUKS device" msgstr "añadir clave a un dispositivo LUKS" -#: src/cryptsetup.c:3495 src/cryptsetup.c:3496 src/cryptsetup.c:3497 +#: src/cryptsetup.c:3494 src/cryptsetup.c:3495 src/cryptsetup.c:3496 msgid " []" msgstr " []" -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3494 msgid "removes supplied key or key file from LUKS device" msgstr "elimina la clave suministrada o el fichero de claves del dispositivo LUKS" -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3495 msgid "changes supplied key or key file of LUKS device" msgstr "cambia la clave suministrada o el fichero de claves del dispositivo LUKS" -#: src/cryptsetup.c:3497 +#: src/cryptsetup.c:3496 msgid "converts a key to new pbkdf parameters" msgstr "convierte una clave a los nuevos parámetros pbkdf" -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3497 msgid " " msgstr " " -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3497 msgid "wipes key with number from LUKS device" msgstr "borra la clave con el número del dispositivo LUKS" -#: src/cryptsetup.c:3499 +#: src/cryptsetup.c:3498 msgid "print UUID of LUKS device" msgstr "imprimir el UUID del dispositivo LUKS" -#: src/cryptsetup.c:3500 +#: src/cryptsetup.c:3499 msgid "tests for LUKS partition header" msgstr "comprueba si tiene cabecera de partición LUKS" -#: src/cryptsetup.c:3501 +#: src/cryptsetup.c:3500 msgid "dump LUKS partition information" msgstr "volcar información sobre la partición LUKS" -#: src/cryptsetup.c:3502 +#: src/cryptsetup.c:3501 msgid "dump TCRYPT device information" msgstr "volcar información sobre el dispositivo TCRYPT" -#: src/cryptsetup.c:3503 +#: src/cryptsetup.c:3502 msgid "dump BITLK device information" msgstr "volcar información sobre el dispositivo BITLK" -#: src/cryptsetup.c:3504 +#: src/cryptsetup.c:3503 msgid "dump FVAULT2 device information" msgstr "volcar información sobre el dispositivo FVAULT2" -#: src/cryptsetup.c:3505 +#: src/cryptsetup.c:3504 msgid "Suspend LUKS device and wipe key (all IOs are frozen)" msgstr "Suspender el dispositivo LUKS y limpiar la clave (todas las entradas/salidas congeladas)." -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3505 msgid "Resume suspended LUKS device" msgstr "Reanudar el dispositivo LUKS suspendido." -#: src/cryptsetup.c:3507 +#: src/cryptsetup.c:3506 msgid "Backup LUKS device header and keyslots" msgstr "Hacer copia de seguridad de la cabecera y de las ranuras de claves del dispositivo LUKS" -#: src/cryptsetup.c:3508 +#: src/cryptsetup.c:3507 msgid "Restore LUKS device header and keyslots" msgstr "Restaurar la cabecera y las ranuras de claves del dispositivo LUKS" -#: src/cryptsetup.c:3509 +#: src/cryptsetup.c:3508 msgid " " msgstr " " -#: src/cryptsetup.c:3509 +#: src/cryptsetup.c:3508 msgid "Manipulate LUKS2 tokens" msgstr "Manipular «tokens» LUKS2" -#: src/cryptsetup.c:3528 src/veritysetup.c:505 src/integritysetup.c:570 +#: src/cryptsetup.c:3527 src/veritysetup.c:505 src/integritysetup.c:579 msgid "" "\n" " is one of:\n" @@ -3024,7 +3019,7 @@ msgstr "" "\n" " es una de:\n" -#: src/cryptsetup.c:3534 +#: src/cryptsetup.c:3533 msgid "" "\n" "You can also use old syntax aliases:\n" @@ -3036,7 +3031,7 @@ msgstr "" "\topen: create (plainOpen), luksOpen, loopaesOpen, tcryptOpen, bitlkOpen, fvault2Open\n" "\tclose: remove (plainClose), luksClose, loopaesClose, tcryptClose, bitlkClose, fvault2Close\n" -#: src/cryptsetup.c:3538 +#: src/cryptsetup.c:3537 #, c-format msgid "" "\n" @@ -3051,7 +3046,7 @@ msgstr "" " es el número de la ranura de claves que se va a modificar\n" " fichero de claves opcional para la nueva clave para la acción 'luksAddKey'\n" -#: src/cryptsetup.c:3545 +#: src/cryptsetup.c:3544 #, c-format msgid "" "\n" @@ -3060,7 +3055,7 @@ msgstr "" "\n" "El formato de metadatos predefinido de fábrica es %s (para la acción luksFormat).\n" -#: src/cryptsetup.c:3550 +#: src/cryptsetup.c:3549 msgid "" "\n" "LUKS2 external token plugin support is enabled.\n" @@ -3068,12 +3063,12 @@ msgstr "" "\n" "El soporte del «plugin» del «token» externo LUKS2 está activado.\n" -#: src/cryptsetup.c:3551 +#: src/cryptsetup.c:3550 #, c-format msgid "LUKS2 external token plugin path: %s.\n" msgstr "ruta del «plugin» del «token» externo LUKS2: %s.\n" -#: src/cryptsetup.c:3553 +#: src/cryptsetup.c:3552 msgid "" "\n" "LUKS2 external token plugin support is disabled.\n" @@ -3081,7 +3076,7 @@ msgstr "" "\n" "El soporte del «plugin» del «token» externo LUKS2 está desactivado.\n" -#: src/cryptsetup.c:3557 +#: src/cryptsetup.c:3556 #, c-format msgid "" "\n" @@ -3098,7 +3093,7 @@ msgstr "" "PBKDF predefinido para LUKS2: %s\n" "\tTiempo de iteración: %d, Memoria requerida: %dkB, hilos en paralelo: %d\n" -#: src/cryptsetup.c:3568 +#: src/cryptsetup.c:3567 #, c-format msgid "" "\n" @@ -3113,122 +3108,126 @@ msgstr "" "\tsin cifrado: %s, Clave: %d bits, Contraseña «hashing»: %s\n" "\tLUKS: %s, Clave: %d bits, «hashing» de la cabecera LUKS: %s, Generador de números aleatorios: %s\n" -#: src/cryptsetup.c:3577 +#: src/cryptsetup.c:3576 msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: El tamaño de clave predefinido con modo XTS (dos claves internas) va a ser duplicado.\n" -#: src/cryptsetup.c:3595 src/veritysetup.c:647 src/integritysetup.c:730 +#: src/cryptsetup.c:3594 src/veritysetup.c:647 src/integritysetup.c:739 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: necesita %s como argumentos" -#: src/cryptsetup.c:3635 src/utils_reencrypt_luks1.c:1143 +#: src/cryptsetup.c:3634 src/utils_reencrypt_luks1.c:1143 msgid "Key slot is invalid." msgstr "La ranura de claves no es válida." -#: src/cryptsetup.c:3663 +#: src/cryptsetup.c:3662 msgid "Device size must be multiple of 512 bytes sector." msgstr "El tamaño del dispositivo debe ser múltiplo de sectores de 512 bytes." -#: src/cryptsetup.c:3668 +#: src/cryptsetup.c:3667 msgid "Invalid max reencryption hotzone size specification." msgstr "La especificación del tamaño máximo de zona activa del dispositivo no es válida." -#: src/cryptsetup.c:3682 src/cryptsetup.c:3699 src/cryptsetup.c:3711 +#: src/cryptsetup.c:3681 src/cryptsetup.c:3698 src/cryptsetup.c:3710 msgid "Key size must be a multiple of 8 bits" msgstr "El tamaño de clave debe ser un múltiplo de 8 bits" -#: src/cryptsetup.c:3689 +#: src/cryptsetup.c:3688 msgid "At most 2 key size specifications can be supplied." msgstr "Como mucho pueden suministrarse 2 especificaciones de tamaño de clave." -#: src/cryptsetup.c:3718 src/cryptsetup.c:3729 +#: src/cryptsetup.c:3717 src/cryptsetup.c:3728 #, c-format msgid "At most %d volume key specifications can be supplied." msgstr "Como mucho pueden suministrarse %d especificaciones de claves de volumen." -#: src/cryptsetup.c:3741 +#: src/cryptsetup.c:3740 #, c-format msgid "At most %d keyring link specifications can be supplied." msgstr "Como mucho pueden suministrarse %d especificaciones de vínculos de llavero." -#: src/cryptsetup.c:3750 +#: src/cryptsetup.c:3749 msgid "Maximum device reduce size is 1 GiB." msgstr "El tamaño máximo de reducción del dispositivo es de 1 GiB." -#: src/cryptsetup.c:3753 +#: src/cryptsetup.c:3752 msgid "Reduce size must be multiple of 512 bytes sector." msgstr "El tamaño de reducción debe ser múltiplo de sectores de 512 bytes." -#: src/cryptsetup.c:3770 +#: src/cryptsetup.c:3769 msgid "Option --priority can be only ignore/normal/prefer." msgstr "La opción --priority solo puede ser ignore/normal/prefer." -#: src/cryptsetup.c:3789 src/veritysetup.c:568 src/integritysetup.c:650 +#: src/cryptsetup.c:3774 +msgid "Invalid maximal tries specification." +msgstr "La especificación de máximos intentos no es válida." + +#: src/cryptsetup.c:3793 src/veritysetup.c:568 src/integritysetup.c:659 msgid "Show this help message" msgstr "Mostrar este mensaje de ayuda" -#: src/cryptsetup.c:3790 src/veritysetup.c:569 src/integritysetup.c:651 +#: src/cryptsetup.c:3794 src/veritysetup.c:569 src/integritysetup.c:660 msgid "Display brief usage" msgstr "Mostrar brevemente cómo se usa" -#: src/cryptsetup.c:3791 src/veritysetup.c:570 src/integritysetup.c:652 +#: src/cryptsetup.c:3795 src/veritysetup.c:570 src/integritysetup.c:661 msgid "Print package version" msgstr "Imprimir versión del paquete" -#: src/cryptsetup.c:3802 src/veritysetup.c:581 src/integritysetup.c:663 +#: src/cryptsetup.c:3806 src/veritysetup.c:581 src/integritysetup.c:672 msgid "Help options:" msgstr "Opciones de ayuda:" -#: src/cryptsetup.c:3825 src/veritysetup.c:602 src/integritysetup.c:683 +#: src/cryptsetup.c:3829 src/veritysetup.c:602 src/integritysetup.c:692 msgid "[OPTION...] " msgstr "[OPCIÓN...] " -#: src/cryptsetup.c:3834 src/veritysetup.c:611 src/integritysetup.c:694 +#: src/cryptsetup.c:3838 src/veritysetup.c:611 src/integritysetup.c:703 msgid "Argument missing." msgstr "El argumento no se ha proporcionado." -#: src/cryptsetup.c:3913 src/veritysetup.c:642 src/integritysetup.c:725 +#: src/cryptsetup.c:3917 src/veritysetup.c:642 src/integritysetup.c:734 msgid "Unknown action." msgstr "Acción desconocida." -#: src/cryptsetup.c:3931 +#: src/cryptsetup.c:3935 msgid "Option --key-file takes precedence over specified key file argument." msgstr "La opción --key-file tiene precedencia sobre el argumento de fichero de claves especificado." -#: src/cryptsetup.c:3937 +#: src/cryptsetup.c:3941 msgid "Only one --key-file argument is allowed." msgstr "Solo se permite un argumento --key-file." -#: src/cryptsetup.c:3942 +#: src/cryptsetup.c:3946 msgid "Password-based key derivation function (PBKDF) can be only pbkdf2 or argon2i/argon2id." msgstr "La función de derivación de clave basada en contraseña (PBKDF) solo puede ser pbkdf2 o argon2i/argon2id." -#: src/cryptsetup.c:3947 +#: src/cryptsetup.c:3951 msgid "PBKDF forced iterations cannot be combined with iteration time option." msgstr "Las iteraciones forzadas de PBKDF no pueden combinarse con la opción de tiempo de iteración." -#: src/cryptsetup.c:3952 +#: src/cryptsetup.c:3956 msgid "Cannot link volume key to a keyring when keyring is disabled." msgstr "No se puede vincular la clave del volumen a un llavero cuando el llavero está desactivado." -#: src/cryptsetup.c:3957 +#: src/cryptsetup.c:3961 msgid "Cannot use keyring key description when keyring is disabled." msgstr "No se puede utilizar descripción de clave de llavero cuando el llavero está desactivado." -#: src/cryptsetup.c:3962 +#: src/cryptsetup.c:3966 msgid "Inline integrity must be used together with --integrity option." msgstr "La integridad en línea tiene que utilizarse conjuntamente con la opción --integrity." -#: src/cryptsetup.c:3973 +#: src/cryptsetup.c:3977 msgid "Options --keyslot-cipher and --keyslot-key-size must be used together." msgstr "Las opciones --keyslot-cipher y --keyslot-key-size deben utilizarse juntas." -#: src/cryptsetup.c:3981 +#: src/cryptsetup.c:3985 msgid "No action taken. Invoked with --test-args option.\n" msgstr "No se ha realizado ninguna acción. Invocado con la opción --test-args.\n" -#: src/cryptsetup.c:3994 +#: src/cryptsetup.c:3998 msgid "Cannot disable metadata locking." msgstr "No se puede desactivar el bloqueo de metadatos." @@ -3293,7 +3292,7 @@ msgstr "Esta orden necesita <«hash»_raíz> o la opción --root-hash-file como msgid " " msgstr " " -#: src/veritysetup.c:485 src/integritysetup.c:550 +#: src/veritysetup.c:485 src/integritysetup.c:559 msgid "format device" msgstr "dar formato al dispositivo" @@ -3309,7 +3308,7 @@ msgstr "verificar dispositivo" msgid " []" msgstr " [<«hash»_raíz>]" -#: src/veritysetup.c:489 src/integritysetup.c:553 +#: src/veritysetup.c:489 src/integritysetup.c:562 msgid "show active device status" msgstr "mostrar el estado del dispositivo activo" @@ -3317,7 +3316,7 @@ msgstr "mostrar el estado del dispositivo activo" msgid "" msgstr "" -#: src/veritysetup.c:490 src/integritysetup.c:554 +#: src/veritysetup.c:490 src/integritysetup.c:563 msgid "show on-disk information" msgstr "mostrar información sobre el disco" @@ -3359,7 +3358,7 @@ msgstr "Las opciones --panic-on-corruption y --restart-on-corruption no pueden u msgid "Option --error-as-corruption must be used with --panic-on-corruption or --restart-on-corruption." msgstr "La opción error-as-corruption tiene que utilizarse con --panic-on-corruption o --restart-on-corruption." -#: src/integritysetup.c:168 +#: src/integritysetup.c:169 #, c-format msgid "" "This will overwrite data on %s and %s irrevocably.\n" @@ -3368,33 +3367,33 @@ msgstr "" "Esto sobreescribirá los datos en %s y %s irrevocablemente.\n" "Para preservar el dispositivo de datos utilice la opción --no-wipe (y luego actívelo con --integrity-recalculate)." -#: src/integritysetup.c:213 +#: src/integritysetup.c:215 #, c-format msgid "Formatted with tag size %u%s, internal integrity %s.\n" msgstr "Formato dado con tamaño de etiqueta %u%s, integridad interna %s.\n" -#: src/integritysetup.c:214 +#: src/integritysetup.c:216 msgid " (inline hw tags)" msgstr " (etiquetas hw en línea)" -#: src/integritysetup.c:297 +#: src/integritysetup.c:305 msgid "Setting recalculate flag is not supported, you may consider using --wipe instead." msgstr "No se puede poner la opción de recalcular; valore la alternativa de utilizar --wipe." -#: src/integritysetup.c:374 src/integritysetup.c:537 +#: src/integritysetup.c:382 src/integritysetup.c:546 #, c-format msgid "Device %s is not a valid INTEGRITY device." msgstr "El dispositivo %s no es un dispositivo INTEGRITY válido." -#: src/integritysetup.c:550 src/integritysetup.c:554 +#: src/integritysetup.c:559 src/integritysetup.c:563 msgid "" msgstr "" -#: src/integritysetup.c:551 +#: src/integritysetup.c:560 msgid " " msgstr " " -#: src/integritysetup.c:574 +#: src/integritysetup.c:583 #, c-format msgid "" "\n" @@ -3405,7 +3404,7 @@ msgstr "" " es el dispositivo que se va a crear bajo %s\n" " es el dispositivo que contiene datos con etiquetas de integridad\n" -#: src/integritysetup.c:579 +#: src/integritysetup.c:588 #, c-format msgid "" "\n" @@ -3418,48 +3417,48 @@ msgstr "" "\tAlgoritmo de la suma de comprobación: %s\n" "\tTamaño máximo del fichero de claves: %dkB\n" -#: src/integritysetup.c:636 +#: src/integritysetup.c:645 #, c-format msgid "Invalid --%s size. Maximum is %u bytes." msgstr "Tamaño de --%s no válido. El máximo es %u bytes." -#: src/integritysetup.c:739 +#: src/integritysetup.c:748 msgid "Both key file and key size options must be specified." msgstr "Deben especificarse las opciones tanto de fichero de claves como tamaño de clave." -#: src/integritysetup.c:743 +#: src/integritysetup.c:752 msgid "Both journal integrity key file and key size options must be specified." msgstr "Deben especificarse la opción del fichero de clave de integridad del diario y la del tamaño de la clave." -#: src/integritysetup.c:746 +#: src/integritysetup.c:755 msgid "Journal integrity algorithm must be specified if journal integrity key is used." msgstr "Debe especificarse el algoritmo de integridad del diario si va a utilizarse la clave de integridad del diario." -#: src/integritysetup.c:750 +#: src/integritysetup.c:759 msgid "Both journal encryption key file and key size options must be specified." msgstr "Deben especificarse la opción del fichero de la clave de cifrado del diario y la del tamaño de la clave." -#: src/integritysetup.c:753 +#: src/integritysetup.c:762 msgid "Journal encryption algorithm must be specified if journal encryption key is used." msgstr "Debe especificarse el algoritmo de cifrado del diario si va a utilizarse la clave de cifrado del diario." -#: src/integritysetup.c:757 +#: src/integritysetup.c:766 msgid "Recovery and bitmap mode options are mutually exclusive." msgstr "Las opciones de recuperación y de modo mapa de bits son mutuamente excluyentes." -#: src/integritysetup.c:764 +#: src/integritysetup.c:773 msgid "Journal options cannot be used in bitmap mode." msgstr "Las opciones de diario no pueden utilizarse en modo mapa de bits." -#: src/integritysetup.c:769 +#: src/integritysetup.c:778 msgid "Bitmap options can be used only in bitmap mode." msgstr "Las opciones de mapa de bits solo pueden utilizarse en el modo mapa de bits." -#: src/integritysetup.c:775 +#: src/integritysetup.c:784 msgid "Inline mode cannot be combined with journal or bitmap options." msgstr "El modo en línea no puede combinarse con las opciones de diario ni de bitmap." -#: src/integritysetup.c:779 +#: src/integritysetup.c:788 msgid "Inline mode cannot be combined with separate data device." msgstr "El modo en línea no puede combinarse con un dispositivo de datos independiente." @@ -3814,32 +3813,32 @@ msgstr "El dispositivo no está en descifrado LUKS2. Opción conflictiva --decry msgid "Device is in reencryption using datashift resilience. Requested --resilience option cannot be applied." msgstr "El dispositivo está en recifrado utilizando resiliencia ante desplazamiento de datos. No se puede aplicar la opción -resilience solicitada." -#: src/utils_reencrypt.c:282 src/utils_reencrypt.c:1924 +#: src/utils_reencrypt.c:283 src/utils_reencrypt.c:1927 msgid "Cannot determine volume key size for LUKS without keyslots, please use --new-key-size option." msgstr "No se puede determinar el tamaño de la clave del volumen para LUKS sin ranuras de claves; utilice la opción --new-key-size." -#: src/utils_reencrypt.c:436 +#: src/utils_reencrypt.c:438 msgid "Device requires reencryption recovery. Run repair first." msgstr "El dispositivo necesita recuperación del recifrado. Primero ejecute una reparación." -#: src/utils_reencrypt.c:450 +#: src/utils_reencrypt.c:452 #, c-format msgid "Device %s is already in LUKS2 reencryption. Do you wish to resume previously initialised operation?" msgstr "El dispositivo %s ya está en recifrado LUKS2. ¿Desea reanudar la operación iniciada anteriormente?" -#: src/utils_reencrypt.c:561 +#: src/utils_reencrypt.c:563 msgid "Legacy LUKS2 reencryption is no longer supported." msgstr "Ya no se admite el recifrado LUKS2 antiguo." -#: src/utils_reencrypt.c:566 +#: src/utils_reencrypt.c:568 msgid "Can not reencrypt LUKS2 device configured to use OPAL." msgstr "No se puede recifrar el dispositivo LUKS2 configurado para utilizar OPAL." -#: src/utils_reencrypt.c:572 +#: src/utils_reencrypt.c:574 msgid "Reencryption of device with integrity profile is not supported." msgstr "El recifrado de dispositivo con perfil de integridad no está admitido." -#: src/utils_reencrypt.c:609 +#: src/utils_reencrypt.c:611 #, c-format msgid "" "Requested --sector-size % is incompatible with %s superblock\n" @@ -3848,110 +3847,110 @@ msgstr "" "La solicitud --sector-size % es incompatible con el superbloque %s\n" "(tamaño de bloque: % «bytes») detectado en el dispositivo %s." -#: src/utils_reencrypt.c:678 src/utils_reencrypt.c:2204 +#: src/utils_reencrypt.c:680 src/utils_reencrypt.c:2207 msgid "Encryption without detached header (--header) is not possible without data device size reduction (--reduce-device-size)." msgstr "El cifrado sin cabecera separada (--header) no es posible sin reducción del tamaño del dispositivo de datos (--reduce-device-size)." -#: src/utils_reencrypt.c:687 +#: src/utils_reencrypt.c:689 msgid "Requested data offset must be less than or equal to half of --reduce-device-size parameter." msgstr "El desplazamiento de datos solicitado debe ser menor o igual que la mitad del parámetro --reduce-device-size." -#: src/utils_reencrypt.c:697 +#: src/utils_reencrypt.c:699 #, c-format msgid "Adjusting --reduce-device-size value to twice the --offset % (sectors).\n" msgstr "Ajustando el valor de --reduce-device-size al doble de --offset % (sectores).\n" -#: src/utils_reencrypt.c:727 +#: src/utils_reencrypt.c:729 #, c-format msgid "Temporary header file %s already exists. Aborting." msgstr "El fichero de cabecera temporal %s ya existe. Se aborta." -#: src/utils_reencrypt.c:729 src/utils_reencrypt.c:736 +#: src/utils_reencrypt.c:731 src/utils_reencrypt.c:738 #, c-format msgid "Cannot create temporary header file %s." msgstr "No se puede crear el fichero de cabecera temporal %s." -#: src/utils_reencrypt.c:761 +#: src/utils_reencrypt.c:763 msgid "LUKS2 metadata size is larger than data shift value." msgstr "El tamaño de los metadatos LUKS2 es mayor que el valor del desplazamiento de los datos." -#: src/utils_reencrypt.c:800 +#: src/utils_reencrypt.c:802 #, c-format msgid "Failed to place new header at head of device %s." msgstr "No se ha podido colocar la nueva cabecera en la cabeza del dispositivo %s." -#: src/utils_reencrypt.c:813 +#: src/utils_reencrypt.c:815 #, c-format msgid "%s/%s is now active and ready for online encryption.\n" msgstr "%s/%s ahora está activo y preparado para cifrado «online».\n" -#: src/utils_reencrypt.c:850 +#: src/utils_reencrypt.c:852 #, c-format msgid "Active device %s is not LUKS2." msgstr "El dispositivo activo %s no es LUKS2." -#: src/utils_reencrypt.c:878 +#: src/utils_reencrypt.c:880 msgid "Restoring original LUKS2 header." msgstr "Restaurando la cabecera LUKS2 original." -#: src/utils_reencrypt.c:886 +#: src/utils_reencrypt.c:888 msgid "Original LUKS2 header restore failed." msgstr "La restauración de la cabecera LUKS2 original ha fallado." -#: src/utils_reencrypt.c:918 +#: src/utils_reencrypt.c:920 #, c-format msgid "Header file %s does not exist. Do you want to initialize LUKS2 decryption of device %s and export LUKS2 header to file %s?" msgstr "El fichero de cabecera %s no existe. ¿Dese inicializar descifrado LUKS2 del dispositivo %s y exportar la cabecera LUKS2 al fichero %s?" -#: src/utils_reencrypt.c:961 +#: src/utils_reencrypt.c:963 msgid "Failed to add read/write permissions to exported header file." msgstr "No se ha podido añadir permisos de lectura/escritura al fichero de cabecera exportado." -#: src/utils_reencrypt.c:1015 +#: src/utils_reencrypt.c:1017 #, c-format msgid "Reencryption initialization failed. Header backup is available in %s." msgstr "La inicialización del recifrado ha fallado. La copia de seguridad de la cabecera está disponible en %s." -#: src/utils_reencrypt.c:1043 +#: src/utils_reencrypt.c:1045 msgid "LUKS2 decryption is supported with detached header device only (with data offset set to 0)." msgstr "El descifrado LUKS2 solo admite dispositivo con cabecera separada (con desplazamiento de datos puesto a 0)." -#: src/utils_reencrypt.c:1487 +#: src/utils_reencrypt.c:1490 msgid "No token could unlock the device." msgstr "Ningún «token» ha podido desbloquear el dispositivo." -#: src/utils_reencrypt.c:1519 src/utils_reencrypt.c:1528 +#: src/utils_reencrypt.c:1522 src/utils_reencrypt.c:1531 msgid "Not enough free keyslots for reencryption." msgstr "No hay suficientes ranuras de claves para el recifrado." -#: src/utils_reencrypt.c:1559 +#: src/utils_reencrypt.c:1562 msgid "Key file or keyring key description can be used only with --key-slot or with exactly one key slot active." msgstr "El fichero de claves o la descripción de clave del llavero solo pueden usarse con --key-slot o con una sola ranura de claves activa exactamente." -#: src/utils_reencrypt.c:1566 src/utils_reencrypt.c:1579 +#: src/utils_reencrypt.c:1569 src/utils_reencrypt.c:1582 #: src/utils_reencrypt_luks1.c:1092 src/utils_reencrypt_luks1.c:1103 #, c-format msgid "Enter passphrase for key slot %d: " msgstr "Introduzca la frase contraseña para la ranura de claves %d: " -#: src/utils_reencrypt.c:1876 +#: src/utils_reencrypt.c:1879 #, c-format msgid "Switching data encryption cipher to %s.\n" msgstr "Cambiando el algoritmo de cifrado de datos a %s.\n" -#: src/utils_reencrypt.c:1977 src/utils_reencrypt.c:1998 +#: src/utils_reencrypt.c:1980 src/utils_reencrypt.c:2001 msgid "Use --force-no-keyslots to reencrypt device with active keyslots by passing volume keys directly." msgstr "Utilice --force-no-keyslots para recifrar el dispositivo con las ranuras de clave activas pasando las claves del volumen directamente." -#: src/utils_reencrypt.c:1993 +#: src/utils_reencrypt.c:1996 msgid "Option --new-volume-key-file must be paired with --new-key-size" msgstr "La opción --new-volume-key-file tiene que ir emparejada con --new-key-size" -#: src/utils_reencrypt.c:2035 +#: src/utils_reencrypt.c:2038 msgid "No data segment parameters changed. Reencryption aborted." msgstr "No ha cambiado ningún parámetro del segmento de datos. Recifrado abortado." -#: src/utils_reencrypt.c:2072 +#: src/utils_reencrypt.c:2075 msgid "" "Encryption sector size increase on offline device is not supported.\n" "Activate the device first or use --force-offline-reencrypt option (dangerous!)." @@ -3959,7 +3958,7 @@ msgstr "" "No se admite incrementar el tamaño de sector de cifrado en dispositivo «offline».\n" "Primero active el dispositivo o utilice la opción --force-offline-reencrypt (¡peligroso!)" -#: src/utils_reencrypt.c:2114 src/utils_reencrypt_luks1.c:688 +#: src/utils_reencrypt.c:2117 src/utils_reencrypt_luks1.c:688 #: src/utils_reencrypt_luks1.c:759 msgid "" "\n" @@ -3968,58 +3967,58 @@ msgstr "" "\n" "Recifrado interrumpido." -#: src/utils_reencrypt.c:2119 +#: src/utils_reencrypt.c:2122 msgid "Resuming LUKS reencryption in forced offline mode.\n" msgstr "Reanudando recifrado LUKS en modo «offline» forzado.\n" -#: src/utils_reencrypt.c:2142 +#: src/utils_reencrypt.c:2145 #, c-format msgid "Device %s contains broken LUKS metadata. Aborting operation." msgstr "El dispositivo %s contiene metadatos LUKS deteriorados. Se aborta la operación." -#: src/utils_reencrypt.c:2158 src/utils_reencrypt.c:2180 +#: src/utils_reencrypt.c:2161 src/utils_reencrypt.c:2183 #, c-format msgid "Device %s is already LUKS device. Aborting operation." msgstr "El dispositivo %s ya es un dispositivo LUKS. Se aborta la operación." -#: src/utils_reencrypt.c:2186 +#: src/utils_reencrypt.c:2189 #, c-format msgid "Device %s is already in LUKS reencryption. Aborting operation." msgstr "El dispositivo %s ya está en recifrado LUKS. Se aborta la operación." -#: src/utils_reencrypt.c:2269 +#: src/utils_reencrypt.c:2272 msgid "LUKS2 decryption requires --header option." msgstr "El descifrado LUKS2 requiere la opción --header." -#: src/utils_reencrypt.c:2317 +#: src/utils_reencrypt.c:2320 msgid "Command requires device as argument." msgstr "Esta orden necesita un dispositivo como argumento." -#: src/utils_reencrypt.c:2330 +#: src/utils_reencrypt.c:2333 #, c-format msgid "Conflicting versions. Device %s is LUKS1." msgstr "Versiones en conflicto. El dispositivo %s es LUKS1." -#: src/utils_reencrypt.c:2336 +#: src/utils_reencrypt.c:2339 #, c-format msgid "Conflicting versions. Device %s is in LUKS1 reencryption." msgstr "Versiones en conflicto. El dispositivo %s está en recifrado LUKS1." -#: src/utils_reencrypt.c:2342 +#: src/utils_reencrypt.c:2345 #, c-format msgid "Conflicting versions. Device %s is LUKS2." msgstr "Versiones en conflicto. El dispositivo %s es LUKS2." -#: src/utils_reencrypt.c:2348 +#: src/utils_reencrypt.c:2351 #, c-format msgid "Conflicting versions. Device %s is in LUKS2 reencryption." msgstr "Versiones en conflicto. El dispositivo %s está en recifrado LUKS2." -#: src/utils_reencrypt.c:2354 +#: src/utils_reencrypt.c:2357 msgid "LUKS2 reencryption already initialized. Aborting operation." msgstr "El recifrado LUKS2 ya está inicializado. Se aborta la operación." -#: src/utils_reencrypt.c:2361 +#: src/utils_reencrypt.c:2364 msgid "Device reencryption not in progress." msgstr "El recifrado del dispositivo no está en proceso." @@ -4417,6 +4416,16 @@ msgstr "El método de autenticación de clave pública no está permitido en el msgid "Public key authentication error: " msgstr "Error de autenticación de clave pública: " +#~ msgid "Required kernel crypto interface not available." +#~ msgstr "La interfaz de cifrado del núcleo requerida no está disponible." + +#~ msgid "Ensure you have algif_skcipher kernel module loaded." +#~ msgstr "Asegúrese de que el módulo del núcleo algof_skcipher está cargado." + +#, c-format +#~ msgid "Failed to read or validate BITLK FVE metadata copy #%d from %s." +#~ msgstr "No se ha podido leer o validar la copia de los metadatos BITLK FVE #%d desde %s." + #~ msgid "Activation of BITLK device with clear key protection is not supported." #~ msgstr "La activación del dispositivo BITLK con protección de clave en claro no está disponible." @@ -5022,9 +5031,6 @@ msgstr "Error de autenticación de clave pública: " #~ msgid "Options --journal-size, --interleave-sectors, --sector-size, --tag-size and --no-wipe can be used only for format action." #~ msgstr "Las opciones --journal-size, --interleave-sectors, --sector-size, --tag-size y --no-wipe solo pueden utilizarse para la acción de dar formato." -#~ msgid "Invalid journal size specification." -#~ msgstr "La especificación del tamaño del diario no es válida." - #~ msgid "Reencryption block size" #~ msgstr "Tamaño de bloque de recifrado" From 56ec9000e9c21482031abc9375265ee9a56cc489 Mon Sep 17 00:00:00 2001 From: Xinting Zhou Date: Wed, 2 Sep 2026 15:06:30 +0200 Subject: [PATCH 204/244] po: update zh_CN.po (from translationproject.org) --- po/zh_CN.po | 2628 +++++++++++++++++++++++++++------------------------ 1 file changed, 1379 insertions(+), 1249 deletions(-) diff --git a/po/zh_CN.po b/po/zh_CN.po index 391a87666..4ea550bea 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -4,14 +4,15 @@ # Mingcong Bai , 2015. # Mingye Wang , 2015. # Boyuan Yang <073plan@gmail.com>, 2018, 2023. +# Xinting Zhou , 2026. # msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.7.3-rc0\n" +"Project-Id-Version: cryptsetup 2.8.7-rc2\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2024-06-06 22:11+0200\n" -"PO-Revision-Date: 2024-09-21 10:41+0800\n" -"Last-Translator: Mingye Wang (Artoria2e5) \n" +"POT-Creation-Date: 2026-07-09 10:46+0200\n" +"PO-Revision-Date: 2026-08-17 17:04+0800\n" +"Last-Translator: Xinting Zhou \n" "Language-Team: Chinese (simplified) \n" "Language: zh_CN\n" "MIME-Version: 1.0\n" @@ -19,72 +20,80 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -"X-Generator: Poedit 3.5\n" +"X-Generator: Poedit 3.9\n" -#: lib/libdevmapper.c:406 +#: lib/libdevmapper.c:419 msgid "Cannot initialize device-mapper, running as non-root user." msgstr "无法初始化设备映射器,正作为非 root 用户运行。" -#: lib/libdevmapper.c:409 +#: lib/libdevmapper.c:422 msgid "Cannot initialize device-mapper. Is dm_mod kernel module loaded?" msgstr "无法初始化设备映射器。dm_mod 内核模块装载了吗?" -#: lib/libdevmapper.c:1090 +#: lib/libdevmapper.c:1125 msgid "Requested deferred flag is not supported." msgstr "不支持请求的推迟(deferred)标记。" -#: lib/libdevmapper.c:1159 +#: lib/libdevmapper.c:1194 #, c-format msgid "DM-UUID for device %s was truncated." msgstr "设备 %s 的 DM-UUID 被截断。" -#: lib/libdevmapper.c:1497 +#: lib/libdevmapper.c:1598 msgid "Unknown dm target type." msgstr "未知的 dm 目标类型。" -#: lib/libdevmapper.c:1616 lib/libdevmapper.c:1622 lib/libdevmapper.c:1725 -#: lib/libdevmapper.c:1728 +#: lib/libdevmapper.c:1725 lib/libdevmapper.c:1731 lib/libdevmapper.c:1850 +#: lib/libdevmapper.c:1853 msgid "Requested dm-crypt performance options are not supported." msgstr "不支持请求的 dm-crypt 性能选项。" -#: lib/libdevmapper.c:1631 lib/libdevmapper.c:1643 +#: lib/libdevmapper.c:1740 lib/libdevmapper.c:1746 lib/libdevmapper.c:1758 msgid "Requested dm-verity data corruption handling options are not supported." msgstr "不支持请求的 dm-verity 数据损坏处理选项。" -#: lib/libdevmapper.c:1637 +#: lib/libdevmapper.c:1752 msgid "Requested dm-verity tasklets option is not supported." msgstr "不支持请求的 dm-verity FEC 选项。" -#: lib/libdevmapper.c:1649 +#: lib/libdevmapper.c:1764 msgid "Requested dm-verity FEC options are not supported." msgstr "不支持请求的 dm-verity FEC 选项。" -#: lib/libdevmapper.c:1655 +#: lib/libdevmapper.c:1770 msgid "Requested data integrity options are not supported." msgstr "不支持请求的数据完整性选项。" -#: lib/libdevmapper.c:1659 +#: lib/libdevmapper.c:1774 msgid "Requested sector_size option is not supported." msgstr "不支持请求的 sector_size 选项。" -#: lib/libdevmapper.c:1664 +#: lib/libdevmapper.c:1779 msgid "The device size is not multiple of the requested sector size." msgstr "设备大小不是请求的扇区大小的倍数。" -#: lib/libdevmapper.c:1671 lib/libdevmapper.c:1677 +#: lib/libdevmapper.c:1783 +msgid "Requested integrity_key_size option is not supported." +msgstr "不支持请求的 integrity_key_size 选项。" + +#: lib/libdevmapper.c:1790 lib/libdevmapper.c:1796 msgid "Requested automatic recalculation of integrity tags is not supported." msgstr "不支持请求的自动重新计算完整性标记。" -#: lib/libdevmapper.c:1683 lib/libdevmapper.c:1731 lib/libdevmapper.c:1734 -#: lib/luks2/luks2_json_metadata.c:2741 +#: lib/libdevmapper.c:1802 lib/libdevmapper.c:1856 lib/libdevmapper.c:1859 +#: lib/luks2/luks2_json_metadata.c:2799 msgid "Discard/TRIM is not supported." msgstr "不支持 Discard/TRIM。" -#: lib/libdevmapper.c:1689 +#: lib/libdevmapper.c:1808 msgid "Requested dm-integrity bitmap mode is not supported." msgstr "不支持请求的 dm-integrity 位图模式。" -#: lib/libdevmapper.c:2725 +#: lib/libdevmapper.c:1814 +msgid "Requested dm-integrity inline mode is not supported." +msgstr "不支持请求的 dm-integrity 内联模式。" + +#: lib/libdevmapper.c:2870 #, c-format msgid "Failed to query dm-%s segment." msgstr "未能查询 dm-%s 段。" @@ -118,748 +127,783 @@ msgstr "未知的随机数生成器质量请求。" msgid "Error reading from RNG." msgstr "从随机数生成器(RNG)读取时出错。" -#: lib/setup.c:249 +#: lib/setup.c:251 msgid "OPAL support is disabled in libcryptsetup." msgstr "OPAL 支持在 libcryptsetup 中被禁用。" -#: lib/setup.c:251 +#: lib/setup.c:253 #, c-format msgid "Device %s or kernel does not support OPAL encryption." msgstr "设备 %s 或内核不支持 OPAL 加密。" -#: lib/setup.c:267 +#: lib/setup.c:269 msgid "Cannot initialize crypto RNG backend." msgstr "无法初始化加密随机数生成器后端。" -#: lib/setup.c:273 +#: lib/setup.c:275 msgid "Cannot initialize crypto backend." msgstr "无法初始化加密后端。" -#: lib/setup.c:305 lib/setup.c:2786 lib/verity/verity.c:109 +#: lib/setup.c:308 lib/setup.c:2769 lib/verity/verity.c:109 #, c-format msgid "Hash algorithm %s not supported." msgstr "不支持哈希算法 %s。" -#: lib/setup.c:308 lib/loopaes/loopaes.c:77 +#: lib/setup.c:311 lib/loopaes/loopaes.c:78 #, c-format msgid "Key processing error (using hash %s)." msgstr "密钥处理错误(使用散列 %s)。" -#: lib/setup.c:379 lib/setup.c:416 +#: lib/setup.c:392 lib/setup.c:429 msgid "Cannot determine device type. Incompatible activation of device?" msgstr "无法确定设备类型。不兼容的设备激活?" -#: lib/setup.c:385 lib/setup.c:3981 +#: lib/setup.c:398 lib/setup.c:4177 msgid "This operation is supported only for LUKS device." msgstr "此操作只适用 LUKS 设备。" -#: lib/setup.c:422 +#: lib/setup.c:435 msgid "This operation is supported only for LUKS2 device." msgstr "此操作只适用 LUKS2 设备。" -#: lib/setup.c:479 lib/luks2/luks2_reencrypt.c:3058 +#: lib/setup.c:492 lib/luks2/luks2_reencrypt.c:3102 msgid "All key slots full." msgstr "密钥槽全都满了。" -#: lib/setup.c:490 +#: lib/setup.c:503 #, c-format msgid "Key slot %d is invalid, please select between 0 and %d." msgstr "密钥槽 %d 无效,请选择 0 到 %d 间的数字。" -#: lib/setup.c:496 +#: lib/setup.c:509 #, c-format msgid "Key slot %d is full, please select another one." msgstr "密钥槽 %d 满了,请选择另一个。" -#: lib/setup.c:607 lib/setup.c:3681 +#: lib/setup.c:534 lib/setup.c:3878 msgid "Device size is not aligned to device logical block size." msgstr "设备的大小没有和设备逻辑块大小对齐。" -#: lib/setup.c:705 +#: lib/setup.c:631 #, c-format msgid "Header detected but device %s is too small." msgstr "检测到标头但设备 %s 太小。" -#: lib/setup.c:746 lib/setup.c:3572 lib/setup.c:5360 lib/setup.c:5380 -#: lib/luks2/luks2_reencrypt.c:3850 lib/luks2/luks2_reencrypt.c:4307 +#: lib/setup.c:672 lib/setup.c:3763 lib/setup.c:5272 +#: lib/luks2/luks2_reencrypt.c:3949 lib/luks2/luks2_reencrypt.c:4438 msgid "This operation is not supported for this device type." msgstr "不支持在这类设备上执行此操作。" -#: lib/setup.c:751 +#: lib/setup.c:677 msgid "Illegal operation with reencryption in-progress." msgstr "正在进行重加密中的非法操作。" -#: lib/setup.c:883 +#: lib/setup.c:809 msgid "Failed to rollback LUKS2 metadata in memory." msgstr "未能回滚内存中的 LUKS2 元数据。" -#: lib/setup.c:970 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 -#: lib/luks2/luks2_json_metadata.c:1361 src/cryptsetup.c:1874 -#: src/cryptsetup.c:2055 src/cryptsetup.c:2110 src/cryptsetup.c:2315 -#: src/cryptsetup.c:2485 src/cryptsetup.c:2766 src/cryptsetup.c:3073 -#: src/cryptsetup.c:3141 src/utils_reencrypt.c:1485 -#: src/utils_reencrypt_luks1.c:1139 tokens/ssh/cryptsetup-ssh.c:72 +#: lib/setup.c:896 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 +#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 +#: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 +#: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2954 +#: src/cryptsetup.c:3022 src/utils_reencrypt.c:2284 +#: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." msgstr "%s 不是有效的 LUKS 设备。" -#: lib/setup.c:973 lib/luks1/keymanage.c:517 +#: lib/setup.c:899 lib/luks1/keymanage.c:517 #, c-format msgid "Unsupported LUKS version %d." msgstr "不支持的 LUKS 版本 %d。" -#: lib/setup.c:1346 +#: lib/setup.c:1273 #, c-format msgid "No known cipher specification pattern detected for active device %s." msgstr "未在活动设备 %s 上探测到已知的加密方法标记特征。" -#: lib/setup.c:1592 lib/setup.c:3326 lib/setup.c:3408 lib/setup.c:3420 -#: lib/setup.c:3590 lib/setup.c:6004 +#: lib/setup.c:1518 lib/setup.c:3510 lib/setup.c:3602 lib/setup.c:3614 +#: lib/setup.c:3786 lib/setup.c:5850 #, c-format msgid "Device %s is not active." msgstr "设备 %s 未激活。" -#: lib/setup.c:1609 +#: lib/setup.c:1535 #, c-format msgid "Underlying device for crypt device %s disappeared." msgstr "加密设备 %s 下层的设备消失了。" -#: lib/setup.c:1691 +#: lib/setup.c:1617 msgid "Invalid plain crypt parameters." msgstr "无效的纯加密选项。" -#: lib/setup.c:1696 lib/setup.c:2689 +#: lib/setup.c:1622 lib/setup.c:2672 msgid "Invalid key size." msgstr "无效的密钥大小。" -#: lib/setup.c:1701 lib/setup.c:2694 lib/setup.c:2897 +#: lib/setup.c:1627 lib/setup.c:2677 lib/setup.c:2882 msgid "UUID is not supported for this crypt type." msgstr "此加密类型不支持 UUID。" -#: lib/setup.c:1706 lib/setup.c:2699 +#: lib/setup.c:1632 lib/setup.c:2682 msgid "Detached metadata device is not supported for this crypt type." msgstr "此 crypt 类型不支持分开的元数据设备。" -#: lib/setup.c:1716 lib/setup.c:1957 lib/luks2/luks2_reencrypt.c:3014 -#: src/cryptsetup.c:1471 src/cryptsetup.c:3842 +#: lib/setup.c:1642 lib/setup.c:1890 lib/luks2/luks2_reencrypt.c:3035 +#: src/cryptsetup.c:1492 src/cryptsetup.c:3761 msgid "Unsupported encryption sector size." msgstr "不支持的加密扇区大小。" -#: lib/setup.c:1724 lib/setup.c:1986 lib/setup.c:3675 +#: lib/setup.c:1650 lib/setup.c:1919 lib/setup.c:3872 msgid "Device size is not aligned to requested sector size." msgstr "设备的大小没有和请求的扇区大小对齐。" -#: lib/setup.c:1776 lib/setup.c:2019 lib/setup.c:2365 +#: lib/setup.c:1702 lib/setup.c:1954 lib/setup.c:2331 msgid "Can't format LUKS without device." msgstr "无法在没有设备的情况下格式化 LUKS。" -#: lib/setup.c:1781 lib/setup.c:2024 +#: lib/setup.c:1707 lib/setup.c:1959 #, c-format msgid "Zoned device %s cannot be used for LUKS header." msgstr "分区 zoned 设备 %s 不能用于 LUKS 标头。" -#: lib/setup.c:1788 lib/setup.c:2031 lib/setup.c:2371 +#: lib/setup.c:1714 lib/setup.c:1966 lib/setup.c:2337 msgid "Requested data alignment is not compatible with data offset." msgstr "请求的数据对齐量与数据偏移量不兼容。" -#: lib/setup.c:1828 lib/setup.c:2049 +#: lib/setup.c:1754 lib/setup.c:1984 msgid "WARNING: DAX device can corrupt data as it does not guarantee atomic sector updates.\n" msgstr "警告:DAX 设备可能会损坏数据,因为它不保证原子扇区更新。\n" -#: lib/setup.c:1866 lib/setup.c:2144 lib/setup.c:2165 lib/setup.c:2549 -#: lib/setup.c:2596 lib/setup.c:2909 +#: lib/setup.c:1792 lib/setup.c:2091 lib/setup.c:2112 lib/setup.c:2520 +#: lib/setup.c:2567 lib/setup.c:2899 #, c-format msgid "Cannot wipe header on device %s." msgstr "无法将设备 %s 上的标头擦除。" -#: lib/setup.c:1879 lib/setup.c:2204 +#: lib/setup.c:1805 lib/setup.c:2164 #, c-format msgid "Device %s is too small for activation, there is no remaining space for data.\n" msgstr "设备%s太小而无法激活:没有剩下空间给数据。\n" -#: lib/setup.c:1919 +#: lib/setup.c:1846 msgid "Volume key is too small for encryption with integrity extensions." msgstr "卷密钥对于带完整性校验扩展的加密而言过小。" -#: lib/setup.c:1928 +#: lib/setup.c:1850 +msgid "Integrity key size is too small." +msgstr "完整性校验密钥大小过小。" + +#: lib/setup.c:1859 #, c-format msgid "Cipher %s-%s (key size %zd bits) is not available." msgstr "加密方法 %s-%s(%zd 位密钥)不可用。" -#: lib/setup.c:1967 +#: lib/setup.c:1900 msgid "WARNING: The device activation will fail, dm-crypt is missing support for requested encryption sector size.\n" msgstr "警告:设备激活将会失败,dm-crypt 不支持请求的加密扇区大小。\n" -#: lib/setup.c:2147 lib/setup.c:2492 lib/setup.c:2552 lib/utils_device.c:904 -#: lib/luks1/keyencryption.c:242 lib/luks2/luks2_reencrypt.c:3082 -#: lib/luks2/luks2_reencrypt.c:4367 +#: lib/setup.c:2094 lib/setup.c:2461 lib/setup.c:2523 lib/utils_device.c:906 +#: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3074 +#: lib/luks2/luks2_reencrypt.c:4498 #, c-format msgid "Device %s is too small." msgstr "设备 %s 太小。" -#: lib/setup.c:2158 lib/setup.c:2184 lib/setup.c:2589 lib/setup.c:2635 +#: lib/setup.c:2105 lib/setup.c:2144 lib/setup.c:2560 lib/setup.c:2618 #, c-format msgid "Cannot format device %s in use." msgstr "无法格式化正在使用的设备 %s。" -#: lib/setup.c:2161 lib/setup.c:2187 lib/setup.c:2592 lib/setup.c:2638 +#: lib/setup.c:2108 lib/setup.c:2147 lib/setup.c:2563 lib/setup.c:2621 #, c-format msgid "Cannot format device %s, permission denied." msgstr "无法格式化设备 %s,权限被拒绝。" -#: lib/setup.c:2173 lib/setup.c:2609 lib/setup.c:2969 +#: lib/setup.c:2132 lib/setup.c:2590 lib/setup.c:2972 #, c-format msgid "Cannot format integrity for device %s." msgstr "无法格式化设备 %s 的完整性。" -#: lib/setup.c:2191 lib/setup.c:2646 +#: lib/setup.c:2151 lib/setup.c:2629 #, c-format msgid "Cannot format device %s." msgstr "无法格式化设备 %s。" -#: lib/setup.c:2234 +#: lib/setup.c:2194 msgid "Cannot get OPAL alignment parameters." msgstr "无法获取 OPAL 对齐参数。" -#: lib/setup.c:2246 +#: lib/setup.c:2206 msgid "Bogus OPAL logical block size." msgstr "伪造的 OPAL 逻辑块大小。" -#: lib/setup.c:2251 lib/luks2/hw_opal/hw_opal.c:299 +#: lib/setup.c:2211 lib/luks2/hw_opal/hw_opal.c:305 msgid "Bogus OPAL logical block size differs from device block size." msgstr "伪造的 OPAL 逻辑块大小与设备块大小不同。" -#: lib/setup.c:2257 +#: lib/setup.c:2217 msgid "Requested data offset is not compatible with OPAL block size." msgstr "请求的数据偏移量与 OPAL 块大小不兼容。" -#: lib/setup.c:2264 +#: lib/setup.c:2224 msgid "Requested data alignment is not compatible with OPAL alignment." msgstr "请求的数据对齐量与 OPAL 对齐量不兼容。" -#: lib/setup.c:2284 +#: lib/setup.c:2244 msgid "Data offset does not satisfy OPAL alignment requirements." msgstr "数据偏移量不满足 OPAL 对齐要求。" -#: lib/setup.c:2297 +#: lib/setup.c:2257 msgid "Requested data alignment does not satisfy locking range alignment requirements." msgstr "请求的数据对齐量不满足锁定范围对齐要求。" -#: lib/setup.c:2502 +#: lib/setup.c:2471 #, c-format msgid "Compensating device size by % sectors to align it with OPAL alignment granularity." msgstr "将设备大小补偿%,以和OPAL对齐量达成一致。" -#: lib/setup.c:2560 lib/setup.c:4078 lib/setup.c:4261 lib/utils_wipe.c:355 -#: lib/luks2/luks2_json_metadata.c:2690 lib/luks2/luks2_json_metadata.c:2942 +#: lib/setup.c:2531 lib/setup.c:4260 lib/setup.c:4466 lib/utils_wipe.c:356 +#: lib/luks2/luks2_json_metadata.c:2742 lib/luks2/luks2_json_metadata.c:3017 #, c-format msgid "Failed to acquire OPAL lock on device %s." msgstr "未能获取设备 %s 上的 OPAL 锁。" -#: lib/setup.c:2570 +#: lib/setup.c:2541 msgid "Incorrect OPAL Admin key." msgstr "OPAL 管理员密钥不正确。" -#: lib/setup.c:2572 +#: lib/setup.c:2543 msgid "Cannot setup OPAL segment." msgstr "无法设置 OPAL 段。" -#: lib/setup.c:2642 +#: lib/setup.c:2625 #, c-format msgid "Cannot format device %s, OPAL device seems to be fully write-protected now." msgstr "无法格式化设备%s。OPAL 设备现在似乎完全写保护。" -#: lib/setup.c:2644 +#: lib/setup.c:2627 msgid "This is perhaps a bug in firmware. Run OPAL PSID reset and reconnect for recovery." msgstr "这可能是固件中的一个设计错误。运行 OPAL PSID reset(重置)并重新连接以进行恢复。" -#: lib/setup.c:2664 +#: lib/setup.c:2647 #, c-format msgid "Locking range %d reset on device %s failed." msgstr "在设备 %2$s 上重置锁定范围 %1$d 失败。" -#: lib/setup.c:2684 +#: lib/setup.c:2667 msgid "Can't format LOOPAES without device." msgstr "无法在没有设备的情况下格式化 LOOPAES。" -#: lib/setup.c:2729 +#: lib/setup.c:2712 msgid "Can't format VERITY without device." msgstr "无法在没有设备的情况下格式化 VERIFY。" -#: lib/setup.c:2740 lib/verity/verity.c:88 +#: lib/setup.c:2723 lib/verity/verity.c:88 #, c-format msgid "Unsupported VERITY hash type %d." msgstr "不支持的 VERITY 哈希类型 %d。" -#: lib/setup.c:2746 lib/verity/verity.c:96 +#: lib/setup.c:2729 lib/verity/verity.c:96 msgid "Unsupported VERITY block size." msgstr "不支持的 VERITY 块大小。" -#: lib/setup.c:2751 lib/verity/verity.c:61 +#: lib/setup.c:2734 lib/verity/verity.c:61 msgid "Unsupported VERITY hash offset." msgstr "不支持的 VERITY 哈希偏移量。" -#: lib/setup.c:2756 +#: lib/setup.c:2739 msgid "Unsupported VERITY FEC offset." msgstr "不支持的 VERITY 哈希偏移量。" -#: lib/setup.c:2780 +#: lib/setup.c:2763 msgid "Data area overlaps with hash area." msgstr "数据区域重叠覆盖了哈希区域。" -#: lib/setup.c:2805 +#: lib/setup.c:2788 msgid "Hash area overlaps with FEC area." msgstr "哈希区域重叠覆盖了 FEC 区域。" -#: lib/setup.c:2812 +#: lib/setup.c:2795 msgid "Data area overlaps with FEC area." msgstr "数据区域重叠覆盖了 FEC 区域。" -#: lib/setup.c:2948 +#: lib/setup.c:2887 +msgid "Integrity key size mismatch." +msgstr "完整性校验密钥大小不匹配。" + +#: lib/setup.c:2938 #, c-format msgid "WARNING: Requested tag size %d bytes differs from %s size output (%d bytes).\n" msgstr "警告:请求的标签大小 %d 字节与 %s 大小输出(%d 字节)不同。\n" -#: lib/setup.c:3027 +#: lib/setup.c:3051 lib/setup.c:3153 #, c-format -msgid "Unknown crypt device type %s requested." -msgstr "请求了未知的加密设备类型 %s。" +msgid "Unknown or unsupported device type %s requested." +msgstr "请求了未知或不支持的设备类型 %s。" -#: lib/setup.c:3334 lib/setup.c:3413 lib/setup.c:3426 +#: lib/setup.c:3067 +#, c-format +msgid "Device %s does not provide inline integrity data fields." +msgstr "设备 %s 未提供内联完整性数据字段。" + +#: lib/setup.c:3073 +#, c-format +msgid "Inline tag size % [bytes] is larger than % provided by device %s." +msgstr "内联标签大小 %1$ [字节] 大于设备 %3$s 提供的 %2$。" + +#: lib/setup.c:3088 +#, c-format +msgid "Sector must be the same as device hardware sector (%zu bytes)." +msgstr "扇区必须与设备硬件扇区(%zu 字节)一致。" + +#: lib/setup.c:3518 lib/setup.c:3607 lib/setup.c:3620 #, c-format msgid "Unsupported parameters on device %s." msgstr "不支持设备 %s 上的参数。" -#: lib/setup.c:3340 lib/setup.c:3433 lib/luks2/luks2_reencrypt.c:2910 -#: lib/luks2/luks2_reencrypt.c:3147 lib/luks2/luks2_reencrypt.c:3542 +#: lib/setup.c:3524 lib/setup.c:3627 lib/luks2/luks2_reencrypt.c:2929 +#: lib/luks2/luks2_reencrypt.c:3198 lib/luks2/luks2_reencrypt.c:3595 #, c-format msgid "Mismatching parameters on device %s." msgstr "设备 %s 上的参数不匹配。" -#: lib/setup.c:3457 +#: lib/setup.c:3650 msgid "Crypt devices mismatch." msgstr "Crypt(加密)设备不匹配。" -#: lib/setup.c:3494 lib/setup.c:3499 lib/luks2/luks2_reencrypt.c:2392 -#: lib/luks2/luks2_reencrypt.c:2926 lib/luks2/luks2_reencrypt.c:4111 +#: lib/setup.c:3682 lib/setup.c:3687 lib/luks2/luks2_reencrypt.c:2413 +#: lib/luks2/luks2_reencrypt.c:2945 lib/luks2/luks2_reencrypt.c:4237 #, c-format msgid "Failed to reload device %s." msgstr "重新加载设备 %s 失败。" -#: lib/setup.c:3505 lib/setup.c:3511 lib/luks2/luks2_reencrypt.c:2363 -#: lib/luks2/luks2_reencrypt.c:2370 lib/luks2/luks2_reencrypt.c:2940 +#: lib/setup.c:3693 lib/setup.c:3699 lib/luks2/luks2_reencrypt.c:2383 +#: lib/luks2/luks2_reencrypt.c:2390 lib/luks2/luks2_reencrypt.c:2959 #, c-format msgid "Failed to suspend device %s." msgstr "挂起设备 %s 失败。" -#: lib/setup.c:3517 lib/luks2/luks2_reencrypt.c:2377 -#: lib/luks2/luks2_reencrypt.c:2961 lib/luks2/luks2_reencrypt.c:4024 -#: lib/luks2/luks2_reencrypt.c:4115 +#: lib/setup.c:3705 lib/luks2/luks2_reencrypt.c:2397 +#: lib/luks2/luks2_reencrypt.c:2980 lib/luks2/luks2_reencrypt.c:4150 +#: lib/luks2/luks2_reencrypt.c:4241 #, c-format msgid "Failed to resume device %s." msgstr "恢复设备 %s 失败。" -#: lib/setup.c:3532 +#: lib/setup.c:3720 #, c-format msgid "Fatal error while reloading device %s (on top of device %s)." msgstr "重新加载设备 %s(在设备 %s 之上)时出现致命错误。" -#: lib/setup.c:3535 lib/setup.c:3537 +#: lib/setup.c:3723 lib/setup.c:3725 #, c-format msgid "Failed to switch device %s to dm-error." msgstr "未能将设备 %s 切换到 dm-error。" -#: lib/setup.c:3577 +#: lib/setup.c:3768 msgid "Can not resize LUKS2 device with static size." msgstr "无法用静态大小改变 LUKS2 设备的大小。" -#: lib/setup.c:3622 +#: lib/setup.c:3773 +msgid "Resize of LUKS2 device with integrity protection is not supported." +msgstr "不支持调整带完整性保护的 LUKS2 设备的大小。" + +#: lib/setup.c:3819 msgid "Cannot resize loop device." msgstr "无法改变回环设备大小。" -#: lib/setup.c:3666 +#: lib/setup.c:3863 msgid "WARNING: Maximum size already set or kernel doesn't support resize.\n" msgstr "警告:已设置到最大大小或内核不支持调整大小。\n" -#: lib/setup.c:3732 +#: lib/setup.c:3929 msgid "Resize failed, the kernel doesn't support it." msgstr "改变大小失败,内核不支持此操作。" -#: lib/setup.c:3764 +#: lib/setup.c:3961 msgid "Do you really want to change UUID of device?" msgstr "你真的想改变设备的 UUID 吗?" -#: lib/setup.c:3856 +#: lib/setup.c:4053 msgid "Header backup file does not contain compatible LUKS header." msgstr "标头备份文件不包含兼容的 LUKS 标头。" -#: lib/setup.c:3966 +#: lib/setup.c:4160 #, c-format msgid "Volume %s is not active." msgstr "卷 %s 未激活。" -#: lib/setup.c:4032 +#: lib/setup.c:4215 #, c-format msgid "Volume %s is already suspended." msgstr "卷 %s 已挂起。" -#: lib/setup.c:4060 +#: lib/setup.c:4241 #, c-format msgid "Suspend is not supported for device %s." msgstr "设备 %s 不支持挂起。" -#: lib/setup.c:4062 lib/setup.c:4070 +#: lib/setup.c:4243 lib/setup.c:4251 #, c-format msgid "Error during suspending device %s." msgstr "挂起设备 %s 时出错。" -#: lib/setup.c:4084 +#: lib/setup.c:4266 #, c-format msgid "Device %s was suspended but hardware OPAL device cannot be locked." msgstr "设备 %s 已挂起,但无法锁定硬件 OPAL 设备。" -#: lib/setup.c:4116 lib/setup.c:4288 +#: lib/setup.c:4297 lib/setup.c:4491 #, c-format msgid "Resume is not supported for device %s." msgstr "设备 %s 不支持恢复。" -#: lib/setup.c:4118 lib/setup.c:4279 lib/setup.c:4290 +#: lib/setup.c:4299 lib/setup.c:4481 lib/setup.c:4493 #, c-format msgid "Error during resuming device %s." msgstr "恢复设备 %s 时出错。" -#: lib/setup.c:4137 +#: lib/setup.c:4335 msgid "Failed to unlink volume key from user specified keyring." msgstr "未能在用户指定的密钥环移除卷密钥链接。" -#: lib/setup.c:4252 lib/setup.c:4974 lib/setup.c:5796 +#: lib/setup.c:4457 lib/setup.c:5637 msgid "Failed to link volume key in user defined keyring." msgstr "未能在用户指定的密钥环链入卷密钥。" -#: lib/setup.c:4353 src/cryptsetup.c:2848 +#: lib/setup.c:4556 src/cryptsetup.c:2722 #, c-format msgid "Volume %s is not suspended." msgstr "卷 %s 未挂起。" -#: lib/setup.c:4454 lib/setup.c:5114 lib/setup.c:5532 lib/setup.c:5551 -#: lib/setup.c:7425 lib/setup.c:7447 lib/setup.c:7496 src/cryptsetup.c:2358 +#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1856 +#: src/cryptsetup.c:2260 src/cryptsetup.c:2278 src/utils_reencrypt.c:306 +#: src/utils_reencrypt.c:1969 msgid "Volume key does not match the volume." msgstr "卷密钥与卷不匹配。" -#: lib/setup.c:4608 +#: lib/setup.c:4821 msgid "Failed to swap new key slot." msgstr "交换新密钥槽失败。" -#: lib/setup.c:4706 +#: lib/setup.c:4919 #, c-format msgid "Key slot %d is invalid." msgstr "密钥槽 %d 无效。" -#: lib/setup.c:4712 src/cryptsetup.c:2068 src/cryptsetup.c:2560 -#: src/cryptsetup.c:3241 src/cryptsetup.c:3301 +#: lib/setup.c:4925 src/cryptsetup.c:1977 src/cryptsetup.c:2437 +#: src/cryptsetup.c:3122 src/cryptsetup.c:3182 #, c-format msgid "Keyslot %d is not active." msgstr "密钥槽 %d 未激活。" -#: lib/setup.c:4731 +#: lib/setup.c:4944 msgid "Device header overlaps with data area." msgstr "设备标头与数据区域重叠。" -#: lib/setup.c:5084 lib/setup.c:5184 +#: lib/setup.c:5165 msgid "Reencryption in-progress. Cannot activate device." msgstr "正在重新加密。无法激活设备。" -#: lib/setup.c:5086 lib/setup.c:5186 lib/luks2/luks2_json_metadata.c:2848 -#: lib/luks2/luks2_reencrypt.c:3648 +#: lib/setup.c:5167 lib/luks2/luks2_json_metadata.c:2913 +#: lib/luks2/luks2_reencrypt.c:3726 msgid "Failed to get reencryption lock." msgstr "获取重加密锁失败。" -#: lib/setup.c:5098 +#: lib/setup.c:5189 msgid "LUKS2 reencryption recovery using volume key(s) failed." msgstr "使用卷密钥进行 LUKS2 重加密恢复失败。" -#: lib/setup.c:5150 lib/setup.c:5240 -msgid "Failed to link volume keys in user defined keyring." -msgstr "在内核密钥环中链入密钥失败。" - -#: lib/setup.c:5199 lib/luks2/luks2_reencrypt.c:3667 -msgid "LUKS2 reencryption recovery failed." -msgstr "LUKS2 重加密恢复失败。" - -#: lib/setup.c:5448 lib/setup.c:5562 lib/setup.c:5619 -msgid "Device type is not properly initialized." -msgstr "设备类型未正确初始化。" - -#: lib/setup.c:5503 +#: lib/setup.c:5325 #, c-format msgid "Device %s already exists." msgstr "设备 %s 已存在。" -#: lib/setup.c:5510 +#: lib/setup.c:5332 #, c-format msgid "Cannot use device %s, name is invalid or still in use." msgstr "无法使用设备 %s,名称无效或它正被使用。" -#: lib/setup.c:5528 +#: lib/setup.c:5344 +msgid "Reencryption volume keys do not match the volume." +msgstr "重新加密卷密钥与卷不匹配。" + +#: lib/setup.c:5361 msgid "Incorrect volume key specified for plain device." msgstr "为普通设备指定的卷密钥有误。" -#: lib/setup.c:5542 -msgid "Reencryption volume keys do not match the volume." -msgstr "重新加密卷密钥与卷不匹配。" +#: lib/setup.c:5387 lib/setup.c:5448 +msgid "Device type is not properly initialized." +msgstr "设备类型未正确初始化。" -#: lib/setup.c:5655 +#: lib/setup.c:5486 msgid "Kernel keyring is not supported by the kernel." msgstr "该内核不支持内核密钥环。" -#: lib/setup.c:5659 +#: lib/setup.c:5490 msgid "Kernel keyring missing: required for passing signature to kernel." msgstr "缺少内核密钥环:此为将签名传递给内核所必需。" -#: lib/setup.c:5917 +#: lib/setup.c:5545 +#, c-format +msgid "Cannot use keyring key %s." +msgstr "无法使用密钥环密钥 %s。" + +#: lib/setup.c:5758 msgid "Incorrect root hash specified for verity device." msgstr "为 verity 设备指定的根 hash 不正确。" -#: lib/setup.c:5960 +#: lib/setup.c:5799 lib/setup.c:5824 msgid "OPAL does not support deferred deactivation." msgstr "OPAL 不支持延迟停用。" -#: lib/setup.c:5976 -#, c-format -msgid "Could not cancel deferred remove from device %s." -msgstr "无法取消从设备 %s 的延迟删除。" - -#: lib/setup.c:5983 lib/setup.c:5999 lib/luks2/luks2_json_metadata.c:2902 -#: src/utils_reencrypt.c:103 +#: lib/setup.c:5814 lib/setup.c:5845 lib/luks2/luks2_json_metadata.c:2978 +#: src/utils_reencrypt.c:89 #, c-format msgid "Device %s is still in use." msgstr "设备 %s 仍在使用。" -#: lib/setup.c:6008 +#: lib/setup.c:5832 +#, c-format +msgid "Could not cancel deferred remove from device %s." +msgstr "无法取消从设备 %s 的延迟删除。" + +#: lib/setup.c:5854 #, c-format msgid "Invalid device %s." msgstr "设备 %s 无效。" -#: lib/setup.c:6148 +#: lib/setup.c:6001 msgid "Volume key buffer too small." msgstr "卷密钥缓冲区太小。" -#: lib/setup.c:6165 +#: lib/setup.c:6012 msgid "Cannot retrieve volume key for LUKS2 device." msgstr "无法获取 LUKS2 设备的卷密钥。" -#: lib/setup.c:6174 +#: lib/setup.c:6021 msgid "Cannot retrieve volume key for LUKS1 device." msgstr "无法获取 LUKS1 普通设备的卷密钥。" -#: lib/setup.c:6184 +#: lib/setup.c:6035 msgid "Cannot retrieve volume key for plain device." msgstr "无法获取普通(plain)设备的卷密钥。" -#: lib/setup.c:6192 +#: lib/setup.c:6043 msgid "Cannot retrieve root hash for verity device." msgstr "无法获取 verity 设备的根哈希。" -#: lib/setup.c:6199 +#: lib/setup.c:6052 msgid "Cannot retrieve volume key for BITLK device." msgstr "无法获取 BITLK 设备的卷密钥。" -#: lib/setup.c:6204 +#: lib/setup.c:6057 msgid "Cannot retrieve volume key for FVAULT2 device." msgstr "无法获取 FVAULT2 设备的卷密钥。" -#: lib/setup.c:6206 +#: lib/setup.c:6059 #, c-format msgid "This operation is not supported for %s crypt device." msgstr "不支持在 %s 加密设备上执行此操作。" -#: lib/setup.c:6390 lib/setup.c:6401 +#: lib/setup.c:6244 lib/setup.c:6255 msgid "Dump operation is not supported for this device type." msgstr "不支持在此类设备上执行导出操作。" -#: lib/setup.c:6760 +#: lib/setup.c:6635 #, c-format msgid "Data offset is not multiple of %u bytes." msgstr "数据偏移量不是 %u 个字节的倍数。" -#: lib/setup.c:7068 +#: lib/setup.c:6943 #, c-format msgid "Cannot convert device %s which is still in use." msgstr "无法转换正在使用的设备 %s。" -#: lib/setup.c:7366 lib/setup.c:7505 +#: lib/setup.c:7251 lib/setup.c:7406 #, c-format msgid "Failed to assign keyslot %u as the new volume key." msgstr "将密钥槽 %u 指定为新卷密钥的操作失败。" -#: lib/setup.c:7390 +#: lib/setup.c:7275 msgid "Failed to initialize default LUKS2 keyslot parameters." msgstr "初始化默认 LUKS2 密钥槽参数失败。" -#: lib/setup.c:7396 +#: lib/setup.c:7281 #, c-format msgid "Failed to assign keyslot %d to digest." msgstr "未能将密钥槽 %d 分配给摘要。" -#: lib/setup.c:7621 +#: lib/setup.c:7523 msgid "Cannot add key slot, all slots disabled and no volume key provided." msgstr "无法添加密钥槽,所有密钥槽已禁用且未提供卷密钥。" -#: lib/setup.c:7690 lib/verity/verity.c:330 +#: lib/setup.c:7611 lib/setup.c:7626 lib/verity/verity.c:333 msgid "Failed to load key in kernel keyring." msgstr "在内核密钥环中加载密钥失败。" -#: lib/setup.c:7808 -msgid "Failed to unlink volume key from thread keyring." -msgstr "在内核密钥环中断联卷密钥失败。" - -#: lib/setup.c:7852 +#: lib/setup.c:7807 #, c-format msgid "Could not find keyring described by \"%s\"." msgstr "找不到“%s”描述的密钥环。" -#: lib/setup.c:7917 +#: lib/setup.c:7872 msgid "Failed to acquire global memory-hard access serialization lock." msgstr "未能获取全局内存困难访问序列化锁。" -#: lib/utils.c:202 lib/tcrypt/tcrypt.c:490 +#: lib/utils.c:205 lib/tcrypt/tcrypt.c:488 msgid "Failed to open key file." msgstr "打开 (open) 密钥文件失败。" -#: lib/utils.c:207 +#: lib/utils.c:213 msgid "Cannot read keyfile from a terminal." msgstr "无法从终端读取密钥文件。" # stat() 主要就是出来一个各种文件信息…… -#: lib/utils.c:223 +#: lib/utils.c:229 msgid "Failed to stat key file." msgstr "获取 (stat) 密钥文件信息失败。" -#: lib/utils.c:231 lib/utils.c:252 +#: lib/utils.c:237 lib/utils.c:258 msgid "Cannot seek to requested keyfile offset." msgstr "无法寻找 (seek) 到请求的密钥文件偏移量。" -#: lib/utils.c:246 lib/utils.c:261 src/utils_password.c:216 -#: src/utils_password.c:228 +#: lib/utils.c:252 lib/utils.c:267 src/utils_password.c:219 +#: src/utils_password.c:231 msgid "Out of memory while reading passphrase." msgstr "读取密码时内存耗尽。" -#: lib/utils.c:281 +#: lib/utils.c:287 msgid "Error reading passphrase." msgstr "读取口令出错。" -#: lib/utils.c:298 +#: lib/utils.c:304 msgid "Nothing to read on input." msgstr "输入上没有可读的内容。" -#: lib/utils.c:305 +#: lib/utils.c:311 msgid "Maximum keyfile size exceeded." msgstr "超出最大密钥文件大小。" -#: lib/utils.c:310 +#: lib/utils.c:316 msgid "Cannot read requested amount of data." msgstr "无法读取请求量的数据。" -#: lib/utils_device.c:200 lib/utils_storage_wrappers.c:97 -#: lib/luks1/keyencryption.c:78 src/utils_reencrypt.c:1458 +#: lib/utils_device.c:207 lib/utils_storage_wrappers.c:99 +#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2257 #, c-format msgid "Device %s does not exist or access denied." msgstr "设备 %s 不存在或访问被拒绝。" -#: lib/utils_device.c:210 +#: lib/utils_device.c:217 #, c-format msgid "Device %s is not compatible." msgstr "设备 %s 不兼容。" -#: lib/utils_device.c:554 +#: lib/utils_device.c:546 #, c-format msgid "Ignoring bogus optimal-io size for data device (%u bytes)." msgstr "忽略数据设备的虚假最佳 IO 大小(%u 字节)。" -#: lib/utils_device.c:715 +#: lib/utils_device.c:711 +#, c-format +msgid "Cannot grow %s to % bytes (%s)." +msgstr "无法将 %s 增大到 % 字节(%s)。" + +#: lib/utils_device.c:717 #, c-format msgid "Device %s is too small. Need at least % bytes." msgstr "设备 %s 过小。(需要至少 % 字节。)" -#: lib/utils_device.c:796 +#: lib/utils_device.c:798 #, c-format msgid "Cannot use device %s which is in use (already mapped or mounted)." msgstr "无法使用正被使用的设备 %s(已被映射或挂载)。" -#: lib/utils_device.c:800 +#: lib/utils_device.c:802 #, c-format msgid "Cannot use device %s, permission denied." msgstr "无法使用设备 %s,权限被拒绝。" -#: lib/utils_device.c:803 +#: lib/utils_device.c:805 #, c-format msgid "Cannot get info about device %s." msgstr "无法获取有关设备 %s 的信息。" -#: lib/utils_device.c:826 +#: lib/utils_device.c:828 msgid "Cannot use a loopback device, running as non-root user." msgstr "无法使用回环设备,正作为非 root 用户运行。" -#: lib/utils_device.c:837 +#: lib/utils_device.c:839 msgid "Attaching loopback device failed (loop device with autoclear flag is required)." msgstr "连接回环设备失败(需要有 autoclear 旗标的回环设备)。" -#: lib/utils_device.c:885 +#: lib/utils_device.c:887 #, c-format msgid "Requested offset is beyond real size of device %s." msgstr "请求的偏移量超出设备 %s 的真实大小。" -#: lib/utils_device.c:893 +#: lib/utils_device.c:895 #, c-format msgid "Device %s has zero size." msgstr "设备 %s 大小为零。" -#: lib/utils_pbkdf.c:103 +#: lib/utils_pbkdf.c:105 msgid "Requested PBKDF target time cannot be zero." msgstr "请求的 PBKDF 目标时间不能为零。" -#: lib/utils_pbkdf.c:109 +#: lib/utils_pbkdf.c:111 #, c-format msgid "Unknown PBKDF type %s." msgstr "未知的 PBKDF 类型 %s。" -#: lib/utils_pbkdf.c:114 +#: lib/utils_pbkdf.c:116 #, c-format msgid "Requested hash %s is not supported." msgstr "不支持请求的哈希 %s。" -#: lib/utils_pbkdf.c:125 +#: lib/utils_pbkdf.c:127 msgid "Requested PBKDF type is not supported for LUKS1." msgstr "请求的 PBKDF 类型不被 LUKS1 支持。" -#: lib/utils_pbkdf.c:131 +#: lib/utils_pbkdf.c:133 msgid "PBKDF max memory or parallel threads must not be set with pbkdf2." msgstr "pbkdf2 不可以设置最大内存和并行线程。" -#: lib/utils_pbkdf.c:136 lib/utils_pbkdf.c:146 +#: lib/utils_pbkdf.c:138 lib/utils_pbkdf.c:148 #, c-format msgid "Forced iteration count is too low for %s (minimum is %u)." msgstr "强制迭代计数对于%s来说太低(最小值为 %u)。" -#: lib/utils_pbkdf.c:151 +#: lib/utils_pbkdf.c:153 #, c-format msgid "Forced memory cost is too low for %s (minimum is %u kilobytes)." msgstr "强制内存成本对于%s来说太低(最小值为 %u KB)。" -#: lib/utils_pbkdf.c:158 +#: lib/utils_pbkdf.c:160 #, c-format msgid "Requested maximum PBKDF memory cost is too high (maximum is %d kilobytes)." msgstr "请求的最大 PBKDF 内存开销过大(最大为 %d 千字节)。" -#: lib/utils_pbkdf.c:163 +#: lib/utils_pbkdf.c:165 +msgid "Requested maximum PBKDF memory cost is too high (limited by the integer maximal size)." +msgstr "请求的最大 PBKDF 内存开销过大(受整数最大值限制)。" + +#: lib/utils_pbkdf.c:169 msgid "Requested maximum PBKDF memory cannot be zero." msgstr "请求的最大 PBKDF 内存不能为零。" -#: lib/utils_pbkdf.c:167 +#: lib/utils_pbkdf.c:173 +#, c-format +msgid "Requested maximum PBKDF parallel cost is too high (maximum is %d)." +msgstr "请求的最大 PBKDF 并行开销过大(最大为 %d)。" + +#: lib/utils_pbkdf.c:178 msgid "Requested PBKDF parallel threads cannot be zero." msgstr "请求的 PBKDF 并行线程数不能为零。" -#: lib/utils_pbkdf.c:187 +#: lib/utils_pbkdf.c:198 msgid "Only PBKDF2 is supported in FIPS mode." msgstr "FIPS 模式仅支持 PBKDF2。" @@ -886,25 +930,25 @@ msgstr "锁定中止。锁定路径 %s/%s 不可用(不是一个目录或缺 msgid "Locking aborted. The locking path %s/%s is unusable (%s is not a directory)." msgstr "锁定中止。锁定路径 %s/%s 不可用(%s 不是目录)。" -#: lib/utils_wipe.c:143 lib/utils_wipe.c:214 src/utils_reencrypt_luks1.c:702 -#: src/utils_reencrypt_luks1.c:795 +#: lib/utils_wipe.c:143 lib/utils_wipe.c:218 src/utils_reencrypt_luks1.c:700 +#: src/utils_reencrypt_luks1.c:793 msgid "Cannot seek to device offset." msgstr "无法寻找到设备偏移位置。" -#: lib/utils_wipe.c:236 +#: lib/utils_wipe.c:240 #, c-format msgid "Device wipe error, offset %." msgstr "设备擦除错误,偏移量%。" -#: lib/utils_wipe.c:331 +#: lib/utils_wipe.c:332 msgid "Incorrect OPAL PSID." msgstr "不正确的 OPAL PSID。" -#: lib/utils_wipe.c:333 +#: lib/utils_wipe.c:334 msgid "Cannot erase OPAL device." msgstr "无法擦除 OPAL 设备。" -#: lib/luks1/keyencryption.c:26 +#: lib/luks1/keyencryption.c:27 #, c-format msgid "" "Failed to setup dm-crypt key mapping for device %s.\n" @@ -913,47 +957,47 @@ msgstr "" "为设备 %s 配置 dm-crypt 键映射失败。\n" "请确认内核支持 %s 加密(查看系统日志 (syslog) 以获取更多信息)。" -#: lib/luks1/keyencryption.c:31 +#: lib/luks1/keyencryption.c:32 msgid "Key size in XTS mode must be 256 or 512 bits." msgstr "XTS 模式的密钥大小必须是 256 或 512 位。" -#: lib/luks1/keyencryption.c:33 +#: lib/luks1/keyencryption.c:34 msgid "Cipher specification should be in [cipher]-[mode]-[iv] format." msgstr "加密算法表示应采用 [cipher]-[mode]-[iv] 格式。" -#: lib/luks1/keyencryption.c:84 lib/luks1/keymanage.c:353 -#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1119 -#: lib/luks2/luks2_json_metadata.c:1515 lib/luks2/luks2_keyslot.c:709 +#: lib/luks1/keyencryption.c:85 lib/luks1/keymanage.c:353 +#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1132 +#: lib/luks2/luks2_json_metadata.c:1518 lib/luks2/luks2_keyslot.c:711 #, c-format msgid "Cannot write to device %s, permission denied." msgstr "无法写入到设备 %s,访问被拒绝。" -#: lib/luks1/keyencryption.c:107 +#: lib/luks1/keyencryption.c:108 msgid "Failed to open temporary keystore device." msgstr "打开临时密钥存储设备失败。" -#: lib/luks1/keyencryption.c:114 +#: lib/luks1/keyencryption.c:115 msgid "Failed to access temporary keystore device." msgstr "访问临时密钥存储设备失败。" -#: lib/luks1/keyencryption.c:187 lib/luks2/luks2_keyslot_luks2.c:49 -#: lib/luks2/luks2_keyslot_luks2.c:67 lib/luks2/luks2_keyslot_reenc.c:184 +#: lib/luks1/keyencryption.c:189 lib/luks2/luks2_keyslot_luks2.c:47 +#: lib/luks2/luks2_keyslot_reenc.c:184 msgid "IO error while encrypting keyslot." msgstr "加密密钥槽时发生输入输出错误。" -#: lib/luks1/keyencryption.c:233 lib/luks1/keymanage.c:356 -#: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:668 -#: lib/fvault2/fvault2.c:864 lib/verity/verity.c:67 lib/verity/verity.c:183 -#: lib/verity/verity_hash.c:307 lib/verity/verity_hash.c:316 -#: lib/verity/verity_hash.c:336 lib/verity/verity_fec.c:247 +#: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:356 +#: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:659 +#: lib/fvault2/fvault2.c:872 lib/verity/verity.c:67 lib/verity/verity.c:183 +#: lib/verity/verity_hash.c:312 lib/verity/verity_hash.c:321 +#: lib/verity/verity_hash.c:350 lib/verity/verity_fec.c:247 #: lib/verity/verity_fec.c:259 lib/verity/verity_fec.c:264 -#: lib/luks2/luks2_json_metadata.c:1518 src/utils_reencrypt_luks1.c:108 +#: lib/luks2/luks2_json_metadata.c:1521 src/utils_reencrypt_luks1.c:108 #: src/utils_reencrypt_luks1.c:120 #, c-format msgid "Cannot open device %s." msgstr "无法打开设备 %s。" -#: lib/luks1/keyencryption.c:244 lib/luks2/luks2_keyslot_luks2.c:126 +#: lib/luks1/keyencryption.c:247 lib/luks2/luks2_keyslot_luks2.c:85 msgid "IO error while decrypting keyslot." msgstr "解密密钥槽时发生输入输出错误。" @@ -969,32 +1013,32 @@ msgstr "设备 %s 过小。(LUKS1 需要至少 % 字节。)" msgid "LUKS keyslot %u is invalid." msgstr "LUKS 密钥槽 %u 无效。" -#: lib/luks1/keymanage.c:254 lib/luks2/luks2_json_metadata.c:1378 +#: lib/luks1/keymanage.c:254 lib/luks2/luks2_json_metadata.c:1382 #, c-format msgid "Requested header backup file %s already exists." msgstr "请求的标头备份文件 %s 已存在。" -#: lib/luks1/keymanage.c:256 lib/luks2/luks2_json_metadata.c:1380 +#: lib/luks1/keymanage.c:256 lib/luks2/luks2_json_metadata.c:1384 #, c-format msgid "Cannot create header backup file %s." msgstr "无法创建标头备份文件 %s。" -#: lib/luks1/keymanage.c:263 lib/luks2/luks2_json_metadata.c:1387 +#: lib/luks1/keymanage.c:263 lib/luks2/luks2_json_metadata.c:1391 #, c-format msgid "Cannot write header backup file %s." msgstr "无法写入标头备份文件 %s。" -#: lib/luks1/keymanage.c:295 lib/luks2/luks2_json_metadata.c:1424 +#: lib/luks1/keymanage.c:295 lib/luks2/luks2_json_metadata.c:1428 msgid "Backup file does not contain valid LUKS header." msgstr "备份文件不包含有效 LUKS 标头。" #: lib/luks1/keymanage.c:308 lib/luks1/keymanage.c:580 -#: lib/luks2/luks2_json_metadata.c:1445 +#: lib/luks2/luks2_json_metadata.c:1450 #, c-format msgid "Cannot open header backup file %s." msgstr "无法打开备份标头文件 %s。" -#: lib/luks1/keymanage.c:316 lib/luks2/luks2_json_metadata.c:1453 +#: lib/luks1/keymanage.c:316 lib/luks2/luks2_json_metadata.c:1458 #, c-format msgid "Cannot read header backup file %s." msgstr "无法读取标头备份文件 %s。" @@ -1016,7 +1060,7 @@ msgstr "不包含 LUKS 标头。替换标头可能损毁设备上的数据。" msgid "already contains LUKS header. Replacing header will destroy existing keyslots." msgstr "已包含 LUKS 标头。替换标头将损毁已存在的密钥槽。" -#: lib/luks1/keymanage.c:337 lib/luks2/luks2_json_metadata.c:1487 +#: lib/luks1/keymanage.c:337 lib/luks2/luks2_json_metadata.c:1490 msgid "" "\n" "WARNING: real device header has different UUID than backup!" @@ -1043,7 +1087,7 @@ msgid "Cipher hash repaired to lowercase (%s)." msgstr "密码哈希修复为小写(%s)。" #: lib/luks1/keymanage.c:417 lib/luks1/keymanage.c:523 -#: lib/luks1/keymanage.c:779 +#: lib/luks1/keymanage.c:756 #, c-format msgid "Requested LUKS hash %s is not supported." msgstr "不支持请求的 LUKS 哈希 %s。" @@ -1090,7 +1134,7 @@ msgstr "LUKS 加密模式 %s 无效。" msgid "LUKS hash %s is invalid." msgstr "LUKS 哈希值 %s 无效。" -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1356 +#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 msgid "No known problems detected for LUKS header." msgstr "未在 LUKS 标头发现已知问题。" @@ -1104,247 +1148,263 @@ msgstr "更新设备 %s 上的 LUKS 标头时出错。" msgid "Error re-reading LUKS header after update on device %s." msgstr "在更新设备 %s 后重新读取 LUKS 标头失败。" -#: lib/luks1/keymanage.c:773 +#: lib/luks1/keymanage.c:750 msgid "Data offset for LUKS header must be either 0 or higher than header size." msgstr "LUKS 标头的数据偏移量必须为 0 或大于标头大小。" -#: lib/luks1/keymanage.c:784 lib/luks1/keymanage.c:853 -#: lib/luks2/luks2_json_format.c:230 lib/luks2/luks2_json_metadata.c:1261 -#: src/utils_reencrypt.c:541 +#: lib/luks1/keymanage.c:761 lib/luks1/keymanage.c:832 +#: lib/luks2/luks2_json_format.c:231 lib/luks2/luks2_json_metadata.c:1261 +#: src/utils_reencrypt.c:703 msgid "Wrong LUKS UUID format provided." msgstr "提供了错误的 LUKS UUID 格式。" -#: lib/luks1/keymanage.c:806 +#: lib/luks1/keymanage.c:783 msgid "Cannot create LUKS header: reading random salt failed." msgstr "无法创建 LUKS 标头:读取随机盐失败。" -#: lib/luks1/keymanage.c:832 +#: lib/luks1/keymanage.c:811 #, c-format msgid "Cannot create LUKS header: header digest failed (using hash %s)." msgstr "无法创建 LUKS 标头:标头摘要失败(正在使用哈希 %s)。" -#: lib/luks1/keymanage.c:876 +#: lib/luks1/keymanage.c:856 #, c-format msgid "Key slot %d active, purge first." msgstr "密钥槽 %d 已激活,请先清除。" -#: lib/luks1/keymanage.c:882 +#: lib/luks1/keymanage.c:862 #, c-format msgid "Key slot %d material includes too few stripes. Header manipulation?" msgstr "密钥槽 %d 条带数过少。标头被修改过?" -#: lib/luks1/keymanage.c:918 lib/luks2/luks2_keyslot_luks2.c:257 +#: lib/luks1/keymanage.c:900 lib/luks2/luks2_keyslot_luks2.c:217 msgid "PBKDF2 iteration value overflow." msgstr "PBKDF2 迭代值溢出。" -#: lib/luks1/keymanage.c:1027 +#: lib/luks1/keymanage.c:1022 #, c-format msgid "Cannot open keyslot (using hash %s)." msgstr "密钥处理错误(使用散列 %s)。" -#: lib/luks1/keymanage.c:1105 +#: lib/luks1/keymanage.c:1118 #, c-format msgid "Key slot %d is invalid, please select keyslot between 0 and %d." msgstr "这是微软拼音中文模式的结果。密钥槽 %d 无效,请选择标号 0 到 %d 间的密钥槽。" -#: lib/luks1/keymanage.c:1123 lib/luks2/luks2_keyslot.c:713 +#: lib/luks1/keymanage.c:1136 lib/luks2/luks2_keyslot.c:715 #, c-format msgid "Cannot wipe device %s." msgstr "无法擦除设备 %s。" -#: lib/loopaes/loopaes.c:133 +#: lib/loopaes/loopaes.c:140 msgid "Detected not yet supported GPG encrypted keyfile." msgstr "探测到未支持的 GPG 加密密钥文件。" -#: lib/loopaes/loopaes.c:134 +#: lib/loopaes/loopaes.c:141 msgid "Please use gpg --decrypt | cryptsetup --keyfile=- ...\n" msgstr "请使用 gpg --decrypt <密钥文件> | cryptsetup --keyfile=- ...\n" -#: lib/loopaes/loopaes.c:155 lib/loopaes/loopaes.c:175 +#: lib/loopaes/loopaes.c:162 lib/loopaes/loopaes.c:182 msgid "Incompatible loop-AES keyfile detected." msgstr "探测到不兼容的 loop-AES 密钥文件。" -#: lib/loopaes/loopaes.c:232 +#: lib/loopaes/loopaes.c:238 msgid "Kernel does not support loop-AES compatible mapping." msgstr "内核不支持 loop-AES 兼容映射。" -#: lib/tcrypt/tcrypt.c:497 +#: lib/tcrypt/tcrypt.c:495 #, c-format msgid "Error reading keyfile %s." msgstr "读取密钥文件 %s 出错。" -#: lib/tcrypt/tcrypt.c:547 +#: lib/tcrypt/tcrypt.c:549 #, c-format msgid "Maximum TCRYPT passphrase length (%zu) exceeded." msgstr "超出 TCRYPT 口令最大长度限制 (%zu)。" -#: lib/tcrypt/tcrypt.c:589 +#: lib/tcrypt/tcrypt.c:591 #, c-format msgid "PBKDF2 hash algorithm %s not available, skipping." msgstr "PBKDF2 哈希算法 %s 不可用,将跳过。" -#: lib/tcrypt/tcrypt.c:608 src/cryptsetup.c:1231 -msgid "Required kernel crypto interface not available." -msgstr "未能找到所需的内核加密接口。" - -#: lib/tcrypt/tcrypt.c:610 src/cryptsetup.c:1233 -msgid "Ensure you have algif_skcipher kernel module loaded." -msgstr "请确定您已载入内核模块 algif_skcipher。" - -#: lib/tcrypt/tcrypt.c:751 +#: lib/tcrypt/tcrypt.c:743 #, c-format msgid "Activation is not supported for %d sector size." msgstr "扇区大小为 %d 时不支持激活。" -#: lib/tcrypt/tcrypt.c:757 +#: lib/tcrypt/tcrypt.c:749 msgid "Kernel does not support activation for this TCRYPT legacy mode." msgstr "内核不支持激活此种 TCRYPT 传统模式。" -#: lib/tcrypt/tcrypt.c:788 +#: lib/tcrypt/tcrypt.c:804 #, c-format msgid "Activating TCRYPT system encryption for partition %s." msgstr "正在为分区 %s 激活 TCRYPT 系统加密。" -#: lib/tcrypt/tcrypt.c:871 +#: lib/tcrypt/tcrypt.c:819 +msgid "Cannot determine TCRYPT system partition offset, activating whole encrypted area." +msgstr "无法确定 TCRYPT 系统分区的偏移量,正在激活整个加密区域。" + +#: lib/tcrypt/tcrypt.c:828 +msgid "Cannot determine TCRYPT system partition offset, activating device as a system partition." +msgstr "无法确定 TCRYPT 系统分区的偏移量,正在将该设备作为系统分区激活。" + +#: lib/tcrypt/tcrypt.c:908 msgid "Kernel does not support TCRYPT compatible mapping." msgstr "内核不支持 TCRYPT 兼容映射。" -#: lib/tcrypt/tcrypt.c:1090 +#: lib/tcrypt/tcrypt.c:1137 msgid "This function is not supported without TCRYPT header load." msgstr "未载入 TCRYPT 标头时不支持此功能。" -#: lib/bitlk/bitlk.c:265 +#: lib/bitlk/bitlk.c:293 #, c-format msgid "Unexpected metadata entry type '%u' found when parsing supported Volume Master Key." msgstr "在解析支持的卷主密钥时发现意外的元数据条目类型“%u”。" -#: lib/bitlk/bitlk.c:327 +#: lib/bitlk/bitlk.c:351 msgid "Invalid string found when parsing Volume Master Key." msgstr "解析卷主密钥时发现无效字符串。" -#: lib/bitlk/bitlk.c:331 +#: lib/bitlk/bitlk.c:355 #, c-format msgid "Unexpected string ('%s') found when parsing supported Volume Master Key." msgstr "在解析支持的卷主密钥时发现意外字符串 ('%s')。" -#: lib/bitlk/bitlk.c:351 +#: lib/bitlk/bitlk.c:375 #, c-format msgid "Unexpected metadata entry value '%u' found when parsing supported Volume Master Key." msgstr "在解析支持的卷主密钥时发现意外的元数据条目值“%u”。" -#: lib/bitlk/bitlk.c:453 +#: lib/bitlk/bitlk.c:528 msgid "BITLK version 1 is currently not supported." msgstr "目前不支持 BITLK 版本 1。" -#: lib/bitlk/bitlk.c:459 +#: lib/bitlk/bitlk.c:534 msgid "Invalid or unknown boot signature for BITLK device." msgstr "BITLK 设备的启动签名无效或未知。" -#: lib/bitlk/bitlk.c:471 +#: lib/bitlk/bitlk.c:546 #, c-format msgid "Unsupported sector size %." msgstr "不支持的扇区大小 %。" -#: lib/bitlk/bitlk.c:479 +#: lib/bitlk/bitlk.c:554 #, c-format msgid "Failed to read BITLK header from %s." msgstr "未能从 %s 读取 BITLK 标头。" -#: lib/bitlk/bitlk.c:504 +#: lib/bitlk/bitlk.c:603 +#, c-format +msgid "Failed to read and validate BITLK FVE metadata from %s." +msgstr "未能从 %s 读取并校验 BITLK FVE 元数据。" + +#: lib/bitlk/bitlk.c:610 +#, c-format +msgid "Failed to validate the location of BITLK FVE metadata from %s." +msgstr "未能校验来自 %s 的 BITLK FVE 元数据的位置。" + +#: lib/bitlk/bitlk.c:621 +#, c-format +msgid "BITLK FVE metadata changed between reads from %s." +msgstr "两次从 %s 读取之间,BITLK FVE 元数据发生了变化。" + +#: lib/bitlk/bitlk.c:628 +#, c-format +msgid "Failed to hash BITLK FVE metadata read from %s." +msgstr "未能对从 %s 读取的 BITLK FVE 元数据进行哈希计算。" + +#: lib/bitlk/bitlk.c:644 #, c-format -msgid "Failed to read BITLK FVE metadata from %s." -msgstr "未能从 %s 读取 BITLK FVE 元数据。" +msgid "Failed to parse BITLK FVE validation metadata from %s." +msgstr "未能解析来自 %s 的 BITLK FVE 校验元数据。" -#: lib/bitlk/bitlk.c:555 +#: lib/bitlk/bitlk.c:695 msgid "Unknown or unsupported encryption type." msgstr "未知或不支持的加密类型。" -#: lib/bitlk/bitlk.c:595 +#: lib/bitlk/bitlk.c:733 #, c-format -msgid "Failed to read BITLK metadata entries from %s." -msgstr "未能从 %s 读取 BITLK 元数据条目。" +msgid "Failed to check BITLK metadata entries previously read from %s." +msgstr "未能检查先前从 %s 读取的 BITLK 元数据条目。" -#: lib/bitlk/bitlk.c:712 +#: lib/bitlk/bitlk.c:853 msgid "Failed to convert BITLK volume description" msgstr "未能转换 BITLK 卷描述" -#: lib/bitlk/bitlk.c:877 +#: lib/bitlk/bitlk.c:1018 #, c-format msgid "Unexpected metadata entry type '%u' found when parsing external key." msgstr "解析外部键时发现意外的元数据条目类型“%u”。" -#: lib/bitlk/bitlk.c:900 +#: lib/bitlk/bitlk.c:1041 #, c-format msgid "BEK file GUID '%s' does not match GUID of the volume." msgstr "BEK 文件 GUID“%s”与卷的 GUID 不匹配。" -#: lib/bitlk/bitlk.c:904 +#: lib/bitlk/bitlk.c:1045 #, c-format msgid "Unexpected metadata entry value '%u' found when parsing external key." msgstr "解析外部键时发现意外的元数据条目值“%u”。" -#: lib/bitlk/bitlk.c:943 +#: lib/bitlk/bitlk.c:1084 #, c-format msgid "Unsupported BEK metadata version %" msgstr "不支持的 BEK 元数据版本 %" -#: lib/bitlk/bitlk.c:948 +#: lib/bitlk/bitlk.c:1089 #, c-format msgid "Unexpected BEK metadata size % does not match BEK file length" msgstr "意外的 BEK 元数据大小 % 与 BEK 文件长度不匹配" -#: lib/bitlk/bitlk.c:974 +#: lib/bitlk/bitlk.c:1115 msgid "Unexpected metadata entry found when parsing startup key." msgstr "解析启动密钥时发现意外的元数据条目。" -#: lib/bitlk/bitlk.c:1069 +#: lib/bitlk/bitlk.c:1218 msgid "This operation is not supported." msgstr "不支持此操作。" -#: lib/bitlk/bitlk.c:1077 +#: lib/bitlk/bitlk.c:1226 msgid "Unexpected key data size." msgstr "意外的密钥数据大小。" -#: lib/bitlk/bitlk.c:1203 +#: lib/bitlk/bitlk.c:1442 msgid "This BITLK device is in an unsupported state and cannot be activated." msgstr "此 BITLK 设备处于不受支持的状态,无法激活。" -#: lib/bitlk/bitlk.c:1208 +#: lib/bitlk/bitlk.c:1447 #, c-format msgid "BITLK devices with type '%s' cannot be activated." msgstr "未能激活类型为“%s”的 BITLK 设备。" -#: lib/bitlk/bitlk.c:1215 -msgid "Activation of partially decrypted BITLK device is not supported." -msgstr "不支持激活部分解密的 BITLK 设备。" - -#: lib/bitlk/bitlk.c:1256 +#: lib/bitlk/bitlk.c:1486 #, c-format msgid "WARNING: BitLocker volume size % does not match the underlying device size %" msgstr "警告:BitLocker 卷大小 % 与下层设备大小 % 不匹配" -#: lib/bitlk/bitlk.c:1383 +#: lib/bitlk/bitlk.c:1613 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK IV." msgstr "无法激活设备,内核 dm-crypt 缺少对 BITLK IV 的支持。" -#: lib/bitlk/bitlk.c:1387 +#: lib/bitlk/bitlk.c:1617 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK Elephant diffuser." msgstr "无法激活设备,内核 dm-crypt 缺少对 BITLK Elephant 扩散器(diffuser)的支持。" -#: lib/bitlk/bitlk.c:1391 +#: lib/bitlk/bitlk.c:1621 msgid "Cannot activate device, kernel dm-crypt is missing support for large sector size." msgstr "无法激活设备,内核 dm-crypt 缺少对大扇区大小的支持。" -#: lib/bitlk/bitlk.c:1395 +#: lib/bitlk/bitlk.c:1625 msgid "Cannot activate device, kernel dm-zero module is missing." msgstr "无法激活设备,内核 dm-zero 模块缺失。" -#: lib/fvault2/fvault2.c:529 +#: lib/fvault2/fvault2.c:532 #, c-format msgid "Could not read %u bytes of volume header." msgstr "未能读取卷头的 %u 字节。" -#: lib/fvault2/fvault2.c:541 +#: lib/fvault2/fvault2.c:544 #, c-format msgid "Unsupported FVAULT2 version %." msgstr "不支持的 FVAULT2 版本 %。" @@ -1381,24 +1441,24 @@ msgstr "不支持根哈希签名验证。" msgid "Root hash signature required." msgstr "需要根哈希签名。" -#: lib/verity/verity.c:281 +#: lib/verity/verity.c:282 msgid "Errors cannot be repaired with FEC device." msgstr "未能使用 FEC 设备修复错误。" -#: lib/verity/verity.c:283 +#: lib/verity/verity.c:284 #, c-format msgid "Found %u repairable errors with FEC device." msgstr "用 FEC 设备发现了 %u 个可修复的错误。" -#: lib/verity/verity.c:364 +#: lib/verity/verity.c:368 msgid "Kernel does not support dm-verity mapping." msgstr "内核不支持 dm-verity 映射。" -#: lib/verity/verity.c:368 +#: lib/verity/verity.c:372 msgid "Kernel does not support dm-verity signature option." msgstr "内核不支持 dm-verity 签名选项。" -#: lib/verity/verity.c:379 +#: lib/verity/verity.c:383 msgid "Verity device detected corruption after activation." msgstr "在 VERITY 设备激活后探测到损坏。" @@ -1421,23 +1481,23 @@ msgstr "在 % 上发生检验错误。" msgid "Hash area overflow." msgstr "哈希区域溢出。" -#: lib/verity/verity_hash.c:367 +#: lib/verity/verity_hash.c:381 msgid "Verification of data area failed." msgstr "数据区检验失败。" -#: lib/verity/verity_hash.c:372 +#: lib/verity/verity_hash.c:386 msgid "Verification of root hash failed." msgstr "根哈希值检验失败。" -#: lib/verity/verity_hash.c:378 +#: lib/verity/verity_hash.c:392 msgid "Input/output error while creating hash area." msgstr "创建哈希数据区时发生输入/输出错误。" -#: lib/verity/verity_hash.c:380 +#: lib/verity/verity_hash.c:394 msgid "Creation of hash area failed." msgstr "创建哈希区失败。" -#: lib/verity/verity_hash.c:415 +#: lib/verity/verity_hash.c:429 #, c-format msgid "WARNING: Kernel cannot activate device if data block size exceeds page size (%u)." msgstr "警告:如数据块大小超过内存分页大小,内核将无法激活设备 (%u)。" @@ -1488,34 +1548,38 @@ msgstr "无效的 FEC 段长度。" msgid "Failed to determine size for device %s." msgstr "未能确定设备 %s 的大小。" -#: lib/integrity/integrity.c:44 +#: lib/integrity/integrity.c:50 #, c-format msgid "Incompatible kernel dm-integrity metadata (version %u) detected on %s." msgstr "在 %2$s 上检测到不兼容的内核 dm-integrity 元数据(版本 %1$u)。" -#: lib/integrity/integrity.c:264 lib/integrity/integrity.c:441 +#: lib/integrity/integrity.c:308 lib/integrity/integrity.c:492 msgid "Kernel does not support dm-integrity mapping." msgstr "内核不支持 dm-integrity 映射。" -#: lib/integrity/integrity.c:270 +#: lib/integrity/integrity.c:314 msgid "Kernel does not support dm-integrity fixed metadata alignment." msgstr "内核不支持 dm-integrity 固定元数据对齐。" -#: lib/integrity/integrity.c:279 +#: lib/integrity/integrity.c:323 msgid "Kernel refuses to activate insecure recalculate option (see legacy activation options to override)." msgstr "内核拒绝激活不安全的重新计算选项(请参阅“旧版激活选项”以强制激活)。" -#: lib/luks2/luks2_disk_metadata.c:379 lib/luks2/luks2_json_metadata.c:1184 -#: lib/luks2/luks2_json_metadata.c:1507 +#: lib/integrity/integrity.c:329 +msgid "Kernel does not support dm-integrity inline mode." +msgstr "内核不支持 dm-integrity 内联模式。" + +#: lib/luks2/luks2_disk_metadata.c:382 lib/luks2/luks2_json_metadata.c:1184 +#: lib/luks2/luks2_json_metadata.c:1510 #, c-format msgid "Failed to acquire write lock on device %s." msgstr "未能获取设备 %s 上的写入锁。" -#: lib/luks2/luks2_disk_metadata.c:388 +#: lib/luks2/luks2_disk_metadata.c:391 msgid "Detected attempt for concurrent LUKS2 metadata update. Aborting operation." msgstr "检测到正在尝试并发更新 LUKS2 元数据。中止操作。" -#: lib/luks2/luks2_disk_metadata.c:697 lib/luks2/luks2_disk_metadata.c:718 +#: lib/luks2/luks2_disk_metadata.c:726 lib/luks2/luks2_disk_metadata.c:747 msgid "" "Device contains ambiguous signatures, cannot auto-recover LUKS2.\n" "Please run \"cryptsetup repair\" for recovery." @@ -1523,59 +1587,62 @@ msgstr "" "设备包含不明确的签名,无法自动恢复 LUKS2。\n" "请运行 “cryptsetup repair” 进行恢复。" -#: lib/luks2/luks2_json_format.c:218 +#: lib/luks2/luks2_json_format.c:219 #, c-format msgid "WARNING: keyslots area (% bytes) is very small, available LUKS2 keyslot count is very limited.\n" msgstr "警告:密钥槽区域(% 字节)非常小,可用的 LUKS2 密钥槽数量非常有限。\n" -#: lib/luks2/luks2_json_format.c:417 +#: lib/luks2/luks2_json_format.c:418 msgid "Requested data offset is too small." msgstr "请求的数据偏移量太小。" -#: lib/luks2/luks2_json_format.c:458 +#: lib/luks2/luks2_json_format.c:459 #, c-format msgid "WARNING: LUKS2 metadata size changed to % bytes.\n" msgstr "警告:LUKS2 元数据大小已更改为 % 字节。\n" -#: lib/luks2/luks2_json_format.c:462 +#: lib/luks2/luks2_json_format.c:463 #, c-format msgid "WARNING: LUKS2 keyslots area size changed to % bytes.\n" msgstr "警告:LUKS2 密钥槽区域大小已更改为 % 字节。\n" -#: lib/luks2/luks2_json_metadata.c:1171 lib/luks2/luks2_json_metadata.c:1353 -#: lib/luks2/luks2_json_metadata.c:1413 lib/luks2/luks2_keyslot_luks2.c:81 -#: lib/luks2/luks2_keyslot_luks2.c:103 +#: lib/luks2/luks2_json_metadata.c:1171 lib/luks2/luks2_json_metadata.c:1357 +#: lib/luks2/luks2_json_metadata.c:1417 lib/luks2/luks2_keyslot_luks2.c:71 #, c-format msgid "Failed to acquire read lock on device %s." msgstr "未能获取设备 %s 的读取锁。" -#: lib/luks2/luks2_json_metadata.c:1430 +#: lib/luks2/luks2_json_metadata.c:1277 +msgid "Label is too long." +msgstr "标签过长。" + +#: lib/luks2/luks2_json_metadata.c:1435 #, c-format msgid "Forbidden LUKS2 requirements detected in backup %s." msgstr "在备份 %s 中检测到禁止的 LUKS2 要求。" -#: lib/luks2/luks2_json_metadata.c:1471 +#: lib/luks2/luks2_json_metadata.c:1474 msgid "Data offset differ on device and backup, restore failed." msgstr "源设备和备份上的数据偏移或密钥大小不符,恢复失败。" -#: lib/luks2/luks2_json_metadata.c:1477 +#: lib/luks2/luks2_json_metadata.c:1480 msgid "Binary header with keyslot areas size differ on device and backup, restore failed." msgstr "源设备和备份上的数据偏移或密钥大小不符,恢复失败。" -#: lib/luks2/luks2_json_metadata.c:1484 +#: lib/luks2/luks2_json_metadata.c:1487 #, c-format msgid "Device %s %s%s%s%s" msgstr "设备 %s %s%s%s%s" -#: lib/luks2/luks2_json_metadata.c:1485 +#: lib/luks2/luks2_json_metadata.c:1488 msgid "does not contain LUKS2 header. Replacing header can destroy data on that device." msgstr "不包含 LUKS 标头。替换标头可能损毁设备上的数据。" -#: lib/luks2/luks2_json_metadata.c:1486 +#: lib/luks2/luks2_json_metadata.c:1489 msgid "already contains LUKS2 header. Replacing header will destroy existing keyslots." msgstr "已包含 LUKS 标头。替换标头将损毁已存在的密钥槽。" -#: lib/luks2/luks2_json_metadata.c:1488 +#: lib/luks2/luks2_json_metadata.c:1491 msgid "" "\n" "WARNING: unknown LUKS2 requirements detected in real device header!\n" @@ -1585,7 +1652,7 @@ msgstr "" "警告:在实际设备标头中检测到未知的 LUKS2 要求!\n" "将标头替换为备份可能会损坏该设备上的数据!" -#: lib/luks2/luks2_json_metadata.c:1490 +#: lib/luks2/luks2_json_metadata.c:1493 msgid "" "\n" "WARNING: Unfinished offline reencryption detected on the device!\n" @@ -1595,113 +1662,113 @@ msgstr "" "警告:在设备上检测到未完成的离线重新加密!\n" "将标头替换为备份可能会损坏数据。" -#: lib/luks2/luks2_json_metadata.c:1587 +#: lib/luks2/luks2_json_metadata.c:1591 #, c-format msgid "Ignored unknown flag %s." msgstr "已忽略未知旗标 %s。" -#: lib/luks2/luks2_json_metadata.c:2512 lib/luks2/luks2_reencrypt.c:2092 +#: lib/luks2/luks2_json_metadata.c:2563 lib/luks2/luks2_reencrypt.c:2110 #, c-format msgid "Missing key for dm-crypt segment %u" msgstr "缺少 dm-crypt 段 %u 的密钥" # stat() 主要就是出来一个各种文件信息…… -#: lib/luks2/luks2_json_metadata.c:2524 lib/luks2/luks2_reencrypt.c:2106 +#: lib/luks2/luks2_json_metadata.c:2575 lib/luks2/luks2_reencrypt.c:2123 msgid "Failed to set dm-crypt segment." msgstr "设置 dm-crypt 段失败。" # stat() 主要就是出来一个各种文件信息…… -#: lib/luks2/luks2_json_metadata.c:2530 lib/luks2/luks2_reencrypt.c:2112 +#: lib/luks2/luks2_json_metadata.c:2581 lib/luks2/luks2_reencrypt.c:2129 msgid "Failed to set dm-linear segment." msgstr "设置 dm-linear 段失败。" -#: lib/luks2/luks2_json_metadata.c:2649 src/utils_reencrypt.c:420 +#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:580 msgid "No known cipher specification pattern detected in LUKS2 header." msgstr "未探测到已知的加密方法特征。" -#: lib/luks2/luks2_json_metadata.c:2657 +#: lib/luks2/luks2_json_metadata.c:2709 msgid "OPAL device must have static device size." msgstr "OPAL 设备必须有静态大小。" -#: lib/luks2/luks2_json_metadata.c:2677 +#: lib/luks2/luks2_json_metadata.c:2729 msgid "Encrypted OPAL device with integrity must be smaller than locking range." msgstr "具有完整性的加密 OPAL 设备必须小于锁定范围。" -#: lib/luks2/luks2_json_metadata.c:2682 +#: lib/luks2/luks2_json_metadata.c:2734 msgid "OPAL device must have same size as locking range." msgstr "OPAL 设备必须与锁定范围相同。" -#: lib/luks2/luks2_json_metadata.c:2702 +#: lib/luks2/luks2_json_metadata.c:2754 #, c-format msgid "OPAL device is %s already unlocked.\n" msgstr "OPAL 设备%s已解锁过。\n" -#: lib/luks2/luks2_json_metadata.c:2735 +#: lib/luks2/luks2_json_metadata.c:2793 msgid "Unsupported device integrity configuration." msgstr "不支持的设备完整性配置。" -#: lib/luks2/luks2_json_metadata.c:2751 +#: lib/luks2/luks2_json_metadata.c:2809 msgid "Underlying dm-integrity device with unexpected provided data sectors." msgstr "下层 dm-integrity 设备意外提供了数据扇区。" -#: lib/luks2/luks2_json_metadata.c:2846 +#: lib/luks2/luks2_json_metadata.c:2911 msgid "Reencryption in-progress. Cannot deactivate device." msgstr "正在重新加密。无法停用设备。" -#: lib/luks2/luks2_json_metadata.c:2857 lib/luks2/luks2_reencrypt.c:4161 +#: lib/luks2/luks2_json_metadata.c:2922 lib/luks2/luks2_reencrypt.c:4287 #, c-format msgid "Failed to replace suspended device %s with dm-error target." msgstr "无法用 dm-error 目标替换挂起的设备 %s。" -#: lib/luks2/luks2_json_metadata.c:2926 lib/luks2/luks2_json_metadata.c:2948 +#: lib/luks2/luks2_json_metadata.c:3001 lib/luks2/luks2_json_metadata.c:3023 #, c-format msgid "Device %s was deactivated but hardware OPAL device cannot be locked." msgstr "设备 %s 已停用,但无法锁定硬件 OPAL 设备。" -#: lib/luks2/luks2_json_metadata.c:2967 -msgid "Failed to read LUKS2 requirements." -msgstr "读取 LUKS2 需求时失败。" - -#: lib/luks2/luks2_json_metadata.c:2974 +#: lib/luks2/luks2_json_metadata.c:3045 msgid "Unmet LUKS2 requirements detected." msgstr "探测到未满足的 LUKS2 需求。" -#: lib/luks2/luks2_json_metadata.c:2982 +#: lib/luks2/luks2_json_metadata.c:3053 msgid "Operation incompatible with device marked for legacy reencryption. Aborting." msgstr "操作与标记准备旧版重新加密的设备不兼容。中止。" -#: lib/luks2/luks2_json_metadata.c:2984 +#: lib/luks2/luks2_json_metadata.c:3055 msgid "Operation incompatible with device marked for LUKS2 reencryption. Aborting." msgstr "操作与标记准备 LUKS2 重新加密的设备不兼容。中止。" -#: lib/luks2/luks2_json_metadata.c:2986 +#: lib/luks2/luks2_json_metadata.c:3057 msgid "Operation incompatible with device using OPAL. Aborting." msgstr "操作与使用 OPAL 的设备不兼容。中止。" -#: lib/luks2/luks2_keyslot.c:560 lib/luks2/luks2_keyslot.c:599 +#: lib/luks2/luks2_json_metadata.c:3059 +msgid "Operation incompatible with device using inline HW tags. Aborting." +msgstr "操作与使用内联硬件标签的设备不兼容。中止。" + +#: lib/luks2/luks2_keyslot.c:543 lib/luks2/luks2_keyslot.c:601 msgid "Not enough available memory to open a keyslot." msgstr "没有足够的可用内存来打开密钥槽。" -#: lib/luks2/luks2_keyslot.c:562 lib/luks2/luks2_keyslot.c:601 +#: lib/luks2/luks2_keyslot.c:545 lib/luks2/luks2_keyslot.c:603 msgid "Keyslot open failed." msgstr "密钥槽打开失败。" -#: lib/luks2/luks2_keyslot_luks2.c:42 lib/luks2/luks2_keyslot_luks2.c:97 +#: lib/luks2/luks2_keyslot_luks2.c:40 lib/luks2/luks2_keyslot_luks2.c:77 #, c-format -msgid "Cannot use %s-%s cipher for keyslot encryption." -msgstr "不能将 %s-%s 加密算法用于密钥槽加密。" +msgid "Cannot use %s cipher for keyslot encryption." +msgstr "不能将 %s 加密算法用于密钥槽加密。" -#: lib/luks2/luks2_keyslot_luks2.c:272 lib/luks2/luks2_keyslot_luks2.c:391 -#: lib/luks2/luks2_keyslot_reenc.c:434 lib/luks2/luks2_reencrypt.c:2716 +#: lib/luks2/luks2_keyslot_luks2.c:219 +msgid "Not enough memory for keyslot key derivation." +msgstr "内存不足,无法进行密钥槽的密钥派生。" + +#: lib/luks2/luks2_keyslot_luks2.c:233 lib/luks2/luks2_keyslot_luks2.c:358 +#: lib/luks2/luks2_keyslot_reenc.c:434 lib/luks2/luks2_reencrypt.c:2734 #, c-format msgid "Hash algorithm %s is not available." msgstr "哈希算法 %s 不可用。" -#: lib/luks2/luks2_keyslot_luks2.c:358 -msgid "Warning: keyslot operation could fail as it requires more than available memory.\n" -msgstr "警告:密钥槽操作可能会失败,因为它需要的内存超过可用内存。\n" - -#: lib/luks2/luks2_keyslot_luks2.c:507 +#: lib/luks2/luks2_keyslot_luks2.c:475 msgid "No space for new keyslot." msgstr "没有空间放置新的密钥槽。" @@ -1718,611 +1785,580 @@ msgstr "无法更新韧性(resilience)类型。新类型仅提供 % msgid "Failed to refresh reencryption verification digest." msgstr "无法刷新重新加密验证摘要。" -#: lib/luks2/luks2_luks1_convert.c:532 +#: lib/luks2/luks2_luks1_convert.c:498 #, c-format msgid "Cannot check status of device with uuid: %s." msgstr "无法检查 uuid 为 %s 的设备的状态。" -#: lib/luks2/luks2_luks1_convert.c:558 +#: lib/luks2/luks2_luks1_convert.c:524 msgid "Unable to convert header with LUKSMETA additional metadata." msgstr "无法转换有额外 LUKSMETA 元数据的标头。" -#: lib/luks2/luks2_luks1_convert.c:589 lib/luks2/luks2_reencrypt.c:3797 +#: lib/luks2/luks2_luks1_convert.c:556 lib/luks2/luks2_reencrypt.c:3894 #, c-format msgid "Unable to use cipher specification %s-%s for LUKS2." msgstr "无法对 LUKS2 使用加密算法规范 %s-%s。" -#: lib/luks2/luks2_luks1_convert.c:604 +#: lib/luks2/luks2_luks1_convert.c:565 +#, c-format +msgid "Unable to use cipher specification %s-%s for LUKS2 keyslot." +msgstr "无法将加密算法规范 %s-%s 用于 LUKS2 密钥槽。" + +#: lib/luks2/luks2_luks1_convert.c:580 msgid "Unable to move keyslot area. Not enough space." msgstr "无法移动密钥槽区域。空间不足。" -#: lib/luks2/luks2_luks1_convert.c:643 +#: lib/luks2/luks2_luks1_convert.c:619 msgid "Cannot convert to LUKS2 format - invalid metadata." msgstr "无法转换为 LUKS2 格式 - 元数据无效。" -#: lib/luks2/luks2_luks1_convert.c:660 +#: lib/luks2/luks2_luks1_convert.c:636 msgid "Unable to move keyslot area. LUKS2 keyslots area too small." msgstr "无法移动密钥槽区域。LUKS2 密钥槽区域太小。" -#: lib/luks2/luks2_luks1_convert.c:666 lib/luks2/luks2_luks1_convert.c:960 +#: lib/luks2/luks2_luks1_convert.c:642 lib/luks2/luks2_luks1_convert.c:972 msgid "Unable to move keyslot area." msgstr "无法移动密钥槽区域。" -#: lib/luks2/luks2_luks1_convert.c:756 +#: lib/luks2/luks2_luks1_convert.c:757 msgid "Cannot convert to LUKS1 format - default segment encryption sector size is not 512 bytes." msgstr "无法转换为 LUKS1 格式 - 默认段的加密扇区大小不是 512 字节。" -#: lib/luks2/luks2_luks1_convert.c:764 +#: lib/luks2/luks2_luks1_convert.c:765 msgid "Cannot convert to LUKS1 format - key slot digests are not LUKS1 compatible." msgstr "无法转换为 LUKS1 格式 - 密钥槽摘要与 LUKS1 不兼容。" -#: lib/luks2/luks2_luks1_convert.c:776 +#: lib/luks2/luks2_luks1_convert.c:779 #, c-format msgid "Cannot convert to LUKS1 format - device uses wrapped key cipher %s." msgstr "无法转换为 LUKS1 格式 - 设备的加密算法%s使用包装密钥。" -#: lib/luks2/luks2_luks1_convert.c:781 +#: lib/luks2/luks2_luks1_convert.c:784 msgid "Cannot convert to LUKS1 format - device uses more segments." msgstr "无法转换为 LUKS1 格式 - 设备使用更多段。" -#: lib/luks2/luks2_luks1_convert.c:789 +#: lib/luks2/luks2_luks1_convert.c:792 #, c-format msgid "Cannot convert to LUKS1 format - LUKS2 header contains %u token(s)." msgstr "无法转换为 LUKS1 格式 - LUKS2 标头包含 %u 个令牌。" -#: lib/luks2/luks2_luks1_convert.c:803 +#: lib/luks2/luks2_luks1_convert.c:798 +msgid "Cannot convert to LUKS1 format - there are no active keyslots." +msgstr "无法转换为 LUKS1 格式 - 没有活动的密钥槽。" + +#: lib/luks2/luks2_luks1_convert.c:810 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is in invalid state." msgstr "无法转换为 LUKS1 格式 - 密钥槽 %u 处于无效状态。" -#: lib/luks2/luks2_luks1_convert.c:808 +#: lib/luks2/luks2_luks1_convert.c:815 +#, c-format +msgid "Cannot convert to LUKS1 format - keyslot %u is unbound." +msgstr "无法转换为 LUKS1 格式 - 密钥槽 %u 未绑定。" + +#: lib/luks2/luks2_luks1_convert.c:820 #, c-format msgid "Cannot convert to LUKS1 format - slot %u (over maximum slots) is still active." msgstr "无法转换为 LUKS1 格式 - 槽 %u(超过最大槽数)仍处于活动状态。" -#: lib/luks2/luks2_luks1_convert.c:813 +#: lib/luks2/luks2_luks1_convert.c:825 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is not LUKS1 compatible." msgstr "无法转换为 LUKS1 格式 - 密钥槽 %u 与 LUKS1 不兼容。" -#: lib/luks2/luks2_reencrypt.c:1183 +#: lib/luks2/luks2_reencrypt.c:1199 #, c-format msgid "Hotzone size must be multiple of calculated zone alignment (%zu bytes)." msgstr "热区大小必须是计算出的区域对齐量(%zu 字节)的倍数。" -#: lib/luks2/luks2_reencrypt.c:1188 +#: lib/luks2/luks2_reencrypt.c:1204 #, c-format msgid "Device size must be multiple of calculated zone alignment (%zu bytes)." msgstr "设备大小必须是计算出的区域对齐量(%zu 字节)的倍数。" -#: lib/luks2/luks2_reencrypt.c:1395 lib/luks2/luks2_reencrypt.c:1582 -#: lib/luks2/luks2_reencrypt.c:1665 lib/luks2/luks2_reencrypt.c:1707 -#: lib/luks2/luks2_reencrypt.c:3956 +#: lib/luks2/luks2_reencrypt.c:1411 lib/luks2/luks2_reencrypt.c:1597 +#: lib/luks2/luks2_reencrypt.c:1680 lib/luks2/luks2_reencrypt.c:1722 +#: lib/luks2/luks2_reencrypt.c:4081 msgid "Failed to initialize old segment storage wrapper." msgstr "未能初始化旧的 segment storage wrapper。" -#: lib/luks2/luks2_reencrypt.c:1409 lib/luks2/luks2_reencrypt.c:1560 +#: lib/luks2/luks2_reencrypt.c:1425 lib/luks2/luks2_reencrypt.c:1575 msgid "Failed to initialize new segment storage wrapper." msgstr "未能初始化新的 segment storage wrapper。" -#: lib/luks2/luks2_reencrypt.c:1536 lib/luks2/luks2_reencrypt.c:3968 +#: lib/luks2/luks2_reencrypt.c:1551 lib/luks2/luks2_reencrypt.c:4093 msgid "Failed to initialize hotzone protection." msgstr "未能初始化热区保护。" -#: lib/luks2/luks2_reencrypt.c:1609 +#: lib/luks2/luks2_reencrypt.c:1624 msgid "Failed to read checksums for current hotzone." msgstr "未能读取当前热区的校验和。" -#: lib/luks2/luks2_reencrypt.c:1616 lib/luks2/luks2_reencrypt.c:3982 +#: lib/luks2/luks2_reencrypt.c:1631 lib/luks2/luks2_reencrypt.c:4108 #, c-format msgid "Failed to read hotzone area starting at %." msgstr "未能读取从 % 开始的热区区域。" # stat() 主要就是出来一个各种文件信息…… -#: lib/luks2/luks2_reencrypt.c:1635 +#: lib/luks2/luks2_reencrypt.c:1650 #, c-format msgid "Failed to decrypt sector %zu." msgstr "未能解密扇区 %zu。" -#: lib/luks2/luks2_reencrypt.c:1641 +#: lib/luks2/luks2_reencrypt.c:1656 #, c-format msgid "Failed to recover sector %zu." msgstr "未能恢复扇区 %zu。" -#: lib/luks2/luks2_reencrypt.c:2205 +#: lib/luks2/luks2_reencrypt.c:2209 #, c-format msgid "Source and target device sizes don't match. Source %, target: %." msgstr "源设备和目标设备大小不匹配。源:%,目标:%。" -#: lib/luks2/luks2_reencrypt.c:2303 +#: lib/luks2/luks2_reencrypt.c:2311 #, c-format msgid "Failed to activate hotzone device %s." msgstr "无法激活热区设备 %s。" -#: lib/luks2/luks2_reencrypt.c:2320 +#: lib/luks2/luks2_reencrypt.c:2323 +#, c-format +msgid "Failed to allocate hotzone device %s." +msgstr "未能分配热区设备 %s。" + +#: lib/luks2/luks2_reencrypt.c:2340 #, c-format msgid "Failed to activate overlay device %s with actual origin table." -msgstr "" +msgstr "使用实际的原始(origin)表激活覆盖(overlay)设备 %s 失败。" -#: lib/luks2/luks2_reencrypt.c:2327 +#: lib/luks2/luks2_reencrypt.c:2347 #, c-format msgid "Failed to load new mapping for device %s." msgstr "未能为设备 %s 加载新映射。" -#: lib/luks2/luks2_reencrypt.c:2398 -#, fuzzy -#| msgid "Failed to acquire read lock on device %s." +#: lib/luks2/luks2_reencrypt.c:2419 msgid "Failed to refresh reencryption devices stack." -msgstr "未能获取设备 %s 的读取锁。" +msgstr "未能刷新重新加密设备栈。" -#: lib/luks2/luks2_reencrypt.c:2598 -#, fuzzy -#| msgid "Failed to swap new key slot." +#: lib/luks2/luks2_reencrypt.c:2616 msgid "Failed to set new keyslots area size." -msgstr "交换新密钥槽失败。" +msgstr "未能设置新的密钥槽区域大小。" -#: lib/luks2/luks2_reencrypt.c:2734 -#, fuzzy, c-format -#| msgid "Device %s size is not aligned to requested sector size (%u bytes)." +#: lib/luks2/luks2_reencrypt.c:2752 +#, c-format msgid "Data shift value is not aligned to encryption sector size (% bytes)." -msgstr "设备 %s 的大小没有和请求的扇区大小对齐(%u 字节)。" +msgstr "数据移位值未按加密扇区大小(% 字节)对齐。" -#: lib/luks2/luks2_reencrypt.c:2771 src/utils_reencrypt.c:176 -#, fuzzy, c-format -#| msgid "Unsupported LUKS version %d." +#: lib/luks2/luks2_reencrypt.c:2789 src/utils_reencrypt.c:162 +#, c-format msgid "Unsupported resilience mode %s" -msgstr "不支持的 LUKS 版本 %d。" +msgstr "不支持的韧性(resilience)模式 %s" -#: lib/luks2/luks2_reencrypt.c:2808 +#: lib/luks2/luks2_reencrypt.c:2825 msgid "Moved segment size can not be greater than data shift value." -msgstr "" +msgstr "移动的段大小不能大于数据移位(data shift)值。" -#: lib/luks2/luks2_reencrypt.c:2850 -#, fuzzy -#| msgid "Invalid plain crypt parameters." +#: lib/luks2/luks2_reencrypt.c:2867 msgid "Invalid reencryption resilience parameters." -msgstr "无效的纯加密选项。" +msgstr "无效的重新加密韧性(resilience)参数。" -#: lib/luks2/luks2_reencrypt.c:2872 +#: lib/luks2/luks2_reencrypt.c:2889 #, c-format msgid "Moved segment too large. Requested size %, available space for: %." -msgstr "" +msgstr "移动的段过大。请求的大小为 %,可用空间为:%。" # stat() 主要就是出来一个各种文件信息…… -#: lib/luks2/luks2_reencrypt.c:2959 +#: lib/luks2/luks2_reencrypt.c:2978 msgid "Failed to clear table." msgstr "无法清除表。" -#: lib/luks2/luks2_reencrypt.c:3045 +#: lib/luks2/luks2_reencrypt.c:3064 +#, c-format +msgid "Data shift (% sectors) is less than future data offset (% sectors)." +msgstr "数据移位(% 个扇区)小于将来的数据偏移量(% 个扇区)。" + +#: lib/luks2/luks2_reencrypt.c:3079 lib/luks2/luks2_reencrypt.c:3086 msgid "Reduced data size is larger than real device size." -msgstr "" +msgstr "缩减的数据大小大于实际设备大小。" -#: lib/luks2/luks2_reencrypt.c:3052 +#: lib/luks2/luks2_reencrypt.c:3096 #, c-format msgid "Data device is not aligned to encryption sector size (% bytes)." msgstr "设备大小没有和请求的扇区大小对齐(% 字节)。" -#: lib/luks2/luks2_reencrypt.c:3086 -#, c-format -msgid "Data shift (% sectors) is less than future data offset (% sectors)." -msgstr "" - -#: lib/luks2/luks2_reencrypt.c:3093 lib/luks2/luks2_reencrypt.c:3591 -#: lib/luks2/luks2_reencrypt.c:3612 +#: lib/luks2/luks2_reencrypt.c:3126 lib/luks2/luks2_reencrypt.c:3644 +#: lib/luks2/luks2_reencrypt.c:3665 #, c-format msgid "Failed to open %s in exclusive mode (already mapped or mounted)." msgstr "无法在独占模式下打开 %s(已映射或挂载)。" -#: lib/luks2/luks2_reencrypt.c:3282 +#: lib/luks2/luks2_reencrypt.c:3333 msgid "Device not marked for LUKS2 reencryption." -msgstr "" +msgstr "设备未被标记为准备 LUKS2 重新加密。" -#: lib/luks2/luks2_reencrypt.c:3299 lib/luks2/luks2_reencrypt.c:4273 -#, fuzzy -#| msgid "Failed to open key file.\n" +#: lib/luks2/luks2_reencrypt.c:3350 lib/luks2/luks2_reencrypt.c:4404 msgid "Failed to load LUKS2 reencryption context." -msgstr "打开 (open) 密钥文件失败。\n" +msgstr "未能加载 LUKS2 重新加密上下文。" -#: lib/luks2/luks2_reencrypt.c:3389 -#, fuzzy -#| msgid "Failed to open key file.\n" -msgid "Failed to get reencryption state." -msgstr "打开 (open) 密钥文件失败。\n" - -#: lib/luks2/luks2_reencrypt.c:3393 lib/luks2/luks2_reencrypt.c:3707 -#, fuzzy -#| msgid "Device %s is not active." +#: lib/luks2/luks2_reencrypt.c:3445 lib/luks2/luks2_reencrypt.c:3785 msgid "Device is not in reencryption." -msgstr "设备 %s 未激活。" +msgstr "设备未处于重新加密过程中。" -#: lib/luks2/luks2_reencrypt.c:3400 lib/luks2/luks2_reencrypt.c:3714 -#, fuzzy -#| msgid "Reencryption already in-progress." +#: lib/luks2/luks2_reencrypt.c:3452 lib/luks2/luks2_reencrypt.c:3792 msgid "Reencryption process is already running." -msgstr "重加密已在进行中。" +msgstr "重新加密进程已在运行。" -#: lib/luks2/luks2_reencrypt.c:3402 lib/luks2/luks2_reencrypt.c:3716 -#, fuzzy -#| msgid "Failed to acquire write device lock." +#: lib/luks2/luks2_reencrypt.c:3454 lib/luks2/luks2_reencrypt.c:3794 msgid "Failed to acquire reencryption lock." -msgstr "未能获取写入设备锁。" +msgstr "未能获取重新加密锁。" -#: lib/luks2/luks2_reencrypt.c:3420 +#: lib/luks2/luks2_reencrypt.c:3472 msgid "Cannot proceed with reencryption. Run reencryption recovery first." -msgstr "" +msgstr "无法继续重新加密。请先运行重新加密恢复。" -#: lib/luks2/luks2_reencrypt.c:3555 +#: lib/luks2/luks2_reencrypt.c:3608 msgid "Active device size and requested reencryption size don't match." -msgstr "" +msgstr "激活的设备大小与请求的重新加密大小不匹配。" -#: lib/luks2/luks2_reencrypt.c:3569 +#: lib/luks2/luks2_reencrypt.c:3622 msgid "Illegal device size requested in reencryption parameters." -msgstr "" +msgstr "重新加密参数中请求的设备大小非法。" -#: lib/luks2/luks2_reencrypt.c:3646 -#, fuzzy -#| msgid "Reencryption already in-progress." +#: lib/luks2/luks2_reencrypt.c:3724 msgid "Reencryption in-progress. Cannot perform recovery." -msgstr "重加密已在进行中。" +msgstr "重新加密正在进行中。无法执行恢复。" -#: lib/luks2/luks2_reencrypt.c:3814 +#: lib/luks2/luks2_reencrypt.c:3745 +msgid "LUKS2 reencryption recovery failed." +msgstr "LUKS2 重加密恢复失败。" + +#: lib/luks2/luks2_reencrypt.c:3878 lib/luks2/luks2_reencrypt.c:4357 +msgid "Failed to initialize reencryption device stack." +msgstr "未能初始化重新加密设备栈。" + +#: lib/luks2/luks2_reencrypt.c:3911 msgid "LUKS2 reencryption already initialized in metadata." -msgstr "" +msgstr "元数据中已初始化 LUKS2 重新加密。" -#: lib/luks2/luks2_reencrypt.c:3821 -#, fuzzy -#| msgid "Failed to initialise default LUKS2 keyslot parameters." +#: lib/luks2/luks2_reencrypt.c:3919 msgid "Failed to initialize LUKS2 reencryption in metadata." -msgstr "初始化默认 LUKS2 密钥槽参数失败。" +msgstr "未能在元数据中初始化 LUKS2 重新加密。" -#: lib/luks2/luks2_reencrypt.c:3874 lib/luks2/luks2_reencrypt.c:3909 -#, fuzzy -#| msgid "This operation is not supported for %s crypt device." +#: lib/luks2/luks2_reencrypt.c:3972 lib/luks2/luks2_reencrypt.c:4004 +#: lib/luks2/luks2_reencrypt.c:4034 msgid "Reencryption is not supported for DAX (persistent memory) devices." -msgstr "不支持在 %s 加密设备上执行此操作。" - -#: lib/luks2/luks2_reencrypt.c:3881 -#, fuzzy -#| msgid "Failed to read passphrase from keyring (error %d)." -msgid "Failed to read passphrase from keyring." -msgstr "从密钥环读取口令失败(错误 %d)。" +msgstr "不支持对 DAX(持久内存)设备进行重新加密。" -#: lib/luks2/luks2_reencrypt.c:3938 +#: lib/luks2/luks2_reencrypt.c:4063 msgid "Failed to set device segments for next reencryption hotzone." -msgstr "" +msgstr "未能为下一个重新加密热区设置设备段。" -#: lib/luks2/luks2_reencrypt.c:3990 -#, fuzzy -#| msgid "Failed to write activation flags to new header." +#: lib/luks2/luks2_reencrypt.c:4116 msgid "Failed to write reencryption resilience metadata." -msgstr "向新表头写入活动旗标失败。" +msgstr "未能写入重新加密韧性(resilience)元数据。" -#: lib/luks2/luks2_reencrypt.c:3997 +#: lib/luks2/luks2_reencrypt.c:4123 msgid "Decryption failed." msgstr "解密失败。" -#: lib/luks2/luks2_reencrypt.c:4002 -#, fuzzy, c-format -#| msgid "Failed to access temporary keystore device.\n" +#: lib/luks2/luks2_reencrypt.c:4128 +#, c-format msgid "Failed to write hotzone area starting at %." -msgstr "未能访问临时密钥存储设备。\n" +msgstr "未能写入从 % 开始的热区区域。" # stat() 主要就是出来一个各种文件信息…… -#: lib/luks2/luks2_reencrypt.c:4007 -#, fuzzy -#| msgid "Failed to stat key file." +#: lib/luks2/luks2_reencrypt.c:4133 msgid "Failed to sync data." -msgstr "获取 (stat) 密钥文件信息失败。" +msgstr "未能同步数据。" -#: lib/luks2/luks2_reencrypt.c:4015 +#: lib/luks2/luks2_reencrypt.c:4141 msgid "Failed to update metadata after current reencryption hotzone completed." -msgstr "" +msgstr "当前重新加密热区完成后更新元数据失败。" -#: lib/luks2/luks2_reencrypt.c:4104 -#, fuzzy -#| msgid "Failed to read LUKS2 requirements." +#: lib/luks2/luks2_reencrypt.c:4230 msgid "Failed to write LUKS2 metadata." -msgstr "读取 LUKS2 需求时失败。" +msgstr "未能写入 LUKS2 元数据。" -#: lib/luks2/luks2_reencrypt.c:4127 -#, fuzzy -#| msgid "Failed to open temporary keystore device.\n" +#: lib/luks2/luks2_reencrypt.c:4253 msgid "Failed to wipe unused data device area." -msgstr "打开临时密钥存储设备失败。\n" +msgstr "未能擦除数据设备上未使用的区域。" -#: lib/luks2/luks2_reencrypt.c:4133 -#, fuzzy, c-format -#| msgid "Failed to open key file.\n" +#: lib/luks2/luks2_reencrypt.c:4259 +#, c-format msgid "Failed to remove unused (unbound) keyslot %d." -msgstr "打开 (open) 密钥文件失败。\n" +msgstr "未能移除未使用的(未绑定的)密钥槽 %d。" -#: lib/luks2/luks2_reencrypt.c:4143 -#, fuzzy -#| msgid "Failed to open key file.\n" +#: lib/luks2/luks2_reencrypt.c:4269 msgid "Failed to remove reencryption keyslot." -msgstr "打开 (open) 密钥文件失败。\n" +msgstr "未能移除重新加密密钥槽。" -#: lib/luks2/luks2_reencrypt.c:4153 +#: lib/luks2/luks2_reencrypt.c:4279 #, c-format msgid "Fatal error while reencrypting chunk starting at %, % sectors long." -msgstr "" +msgstr "重新加密从 % 开始、长 % 个扇区的数据块时发生致命错误。" -#: lib/luks2/luks2_reencrypt.c:4157 -#, fuzzy -#| msgid "Cannot read reencryption log file." +#: lib/luks2/luks2_reencrypt.c:4283 msgid "Online reencryption failed." -msgstr "未能读取重加密日志文件。" +msgstr "在线重新加密失败。" -#: lib/luks2/luks2_reencrypt.c:4162 +#: lib/luks2/luks2_reencrypt.c:4288 msgid "Do not resume the device unless replaced with error target manually." -msgstr "" +msgstr "除非已手动替换为 error 目标,否则请勿恢复(resume)该设备。" -#: lib/luks2/luks2_reencrypt.c:4214 +#: lib/luks2/luks2_reencrypt.c:4340 msgid "Cannot proceed with reencryption. Unexpected reencryption status." -msgstr "" +msgstr "无法继续重新加密。重新加密状态异常。" -#: lib/luks2/luks2_reencrypt.c:4220 +#: lib/luks2/luks2_reencrypt.c:4346 msgid "Missing or invalid reencrypt context." -msgstr "" - -#: lib/luks2/luks2_reencrypt.c:4227 -#, fuzzy -#| msgid "Failed to acquire read lock on device %s." -msgid "Failed to initialize reencryption device stack." -msgstr "未能获取设备 %s 的读取锁。" +msgstr "重新加密上下文缺失或无效。" -#: lib/luks2/luks2_reencrypt.c:4249 lib/luks2/luks2_reencrypt.c:4286 -#, fuzzy -#| msgid "Failed to open key file.\n" +#: lib/luks2/luks2_reencrypt.c:4380 lib/luks2/luks2_reencrypt.c:4417 msgid "Failed to update reencryption context." -msgstr "打开 (open) 密钥文件失败。\n" +msgstr "未能更新重新加密上下文。" -#: lib/luks2/luks2_reencrypt_digest.c:408 +#: lib/luks2/luks2_reencrypt_digest.c:402 msgid "Reencryption metadata is invalid." msgstr "重加密元数据无效。" -#: lib/luks2/hw_opal/hw_opal.c:328 +#: lib/luks2/hw_opal/hw_opal.c:335 #, c-format msgid "OPAL range %d offset % does not match expected values %." -msgstr "" +msgstr "OPAL 锁定范围 %d 的偏移量 % 与预期值 % 不匹配。" -#: lib/luks2/hw_opal/hw_opal.c:335 +#: lib/luks2/hw_opal/hw_opal.c:342 #, c-format msgid "OPAL range %d length % does not match device length %." -msgstr "" +msgstr "OPAL 锁定范围 %d 的长度 % 与设备长度 % 不匹配。" -#: lib/luks2/hw_opal/hw_opal.c:341 +#: lib/luks2/hw_opal/hw_opal.c:348 #, c-format msgid "OPAL range %d locking is disabled." -msgstr "" +msgstr "OPAL 锁定范围 %d 的锁定已被禁用。" -#: lib/luks2/hw_opal/hw_opal.c:351 lib/luks2/hw_opal/hw_opal.c:358 +#: lib/luks2/hw_opal/hw_opal.c:358 lib/luks2/hw_opal/hw_opal.c:365 #, c-format msgid "Unexpected OPAL range %d lock state." -msgstr "" +msgstr "OPAL 锁定范围 %d 的锁定状态异常。" -#: src/cryptsetup.c:80 -#, fuzzy -#| msgid "This operation is supported only for LUKS2 device." +#: src/cryptsetup.c:87 msgid "Keyslot encryption parameters can be set only for LUKS2 device." -msgstr "此操作只适用 LUKS2 设备。" +msgstr "密钥槽加密参数只能为 LUKS2 设备设置。" -#: src/cryptsetup.c:123 src/cryptsetup.c:2238 -#, c-format -msgid "Enter token PIN: " -msgstr "输入令牌 PIN:" - -#: src/cryptsetup.c:125 src/cryptsetup.c:2240 -#, c-format -msgid "Enter token %d PIN: " -msgstr "输入令牌 %d PIN:" +#: src/cryptsetup.c:93 +msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encryption." +msgstr "密钥槽加密参数与 LUKS2 密钥槽加密不兼容。" -#: src/cryptsetup.c:183 src/cryptsetup.c:1169 src/cryptsetup.c:1519 -#: src/utils_reencrypt.c:1133 src/utils_reencrypt_luks1.c:504 -#: src/utils_reencrypt_luks1.c:567 +#: src/cryptsetup.c:150 src/cryptsetup.c:1180 src/cryptsetup.c:1545 +#: src/utils_reencrypt.c:1890 src/utils_reencrypt_luks1.c:502 +#: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." msgstr "未探测到已知的加密方法特征。" -#: src/cryptsetup.c:193 +#: src/cryptsetup.c:160 #, c-format msgid "WARNING: Using default options for cipher (%s-%s, key size %u bits) that could be incompatible with older versions." msgstr "警告:给加密算法(%s-%s,密钥大小 %u 位)使用的默认选项可能与旧版本不兼容。" -#: src/cryptsetup.c:198 +#: src/cryptsetup.c:165 #, c-format msgid "WARNING: Using default options for hash (%s) that could be incompatible with older versions." msgstr "警告:给哈希算法(%s)使用的默认选项可能与旧版本不兼容。" -#: src/cryptsetup.c:202 -msgid "For plain mode, always use options --cipher, --key-size and if no keyfile is used, then also --hash." -msgstr "对于纯模式,请始终使用选项 --cipher、--key-size;如果未使用密钥文件,请也使用 --hash。" +#: src/cryptsetup.c:169 +msgid "For plain mode, always use options --cipher, --key-size and if no keyfile or keyring is used, then also --hash." +msgstr "对于纯(plain)模式,请始终使用 --cipher 和 --key-size 选项;如果未使用密钥文件或密钥环,还需使用 --hash。" -#: src/cryptsetup.c:208 +#: src/cryptsetup.c:175 msgid "WARNING: The --hash parameter is being ignored in plain mode with keyfile specified.\n" msgstr "警告:在纯文本模式下指定密钥文件时将忽略参数 --hash。\n" -#: src/cryptsetup.c:216 +#: src/cryptsetup.c:189 msgid "WARNING: The --keyfile-size option is being ignored, the read size is the same as the encryption key size.\n" msgstr "警告:将忽略参数 --keyfile-size,读取大小应与加密密钥大小一致。\n" -#: src/cryptsetup.c:253 src/cryptsetup.c:1364 src/cryptsetup.c:1562 -#: src/integritysetup.c:184 src/utils_reencrypt.c:1342 +#: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 +#: src/integritysetup.c:189 src/utils_reencrypt.c:2141 #, c-format msgid "Blkid scan failed for %s." msgstr "%s 的 blkid 扫描失败。" -#: src/cryptsetup.c:259 +#: src/cryptsetup.c:232 #, c-format msgid "Detected device signature(s) on %s. Proceeding further may damage existing data." msgstr "在 %s 上检测到设备签名。继续操作可能会损坏现有数据。" -#: src/cryptsetup.c:265 src/cryptsetup.c:1252 src/cryptsetup.c:1300 -#: src/cryptsetup.c:1371 src/cryptsetup.c:1496 src/cryptsetup.c:1574 -#: src/cryptsetup.c:2618 src/cryptsetup.c:3044 src/integritysetup.c:174 -#: src/utils_reencrypt.c:125 src/utils_reencrypt.c:301 -#: src/utils_reencrypt.c:759 +#: src/cryptsetup.c:238 src/cryptsetup.c:1261 src/cryptsetup.c:1309 +#: src/cryptsetup.c:1382 src/cryptsetup.c:1522 src/cryptsetup.c:1610 +#: src/cryptsetup.c:2495 src/cryptsetup.c:2925 src/integritysetup.c:179 +#: src/utils_reencrypt.c:111 src/utils_reencrypt.c:459 +#: src/utils_reencrypt.c:927 msgid "Operation aborted.\n" msgstr "操作中止。\n" -#: src/cryptsetup.c:338 +#: src/cryptsetup.c:323 msgid "Option --key-file is required." msgstr "需要选项 --key-file。" -#: src/cryptsetup.c:389 +#: src/cryptsetup.c:378 msgid "Enter VeraCrypt PIM: " msgstr "输入 VeraCrypt PIM: " -#: src/cryptsetup.c:398 +#: src/cryptsetup.c:387 msgid "Invalid PIM value: parse error." msgstr "无效的 PIM 值:解析错误。" -#: src/cryptsetup.c:401 +#: src/cryptsetup.c:390 msgid "Invalid PIM value: 0." msgstr "无效的 PIM 值:0。" -#: src/cryptsetup.c:404 +#: src/cryptsetup.c:393 msgid "Invalid PIM value: outside of range." msgstr "无效的 PIM 值:超出范围。" -#: src/cryptsetup.c:427 +#: src/cryptsetup.c:416 msgid "No device header detected with this passphrase." msgstr "未能用此密码探测到设备标头。" -#: src/cryptsetup.c:500 src/cryptsetup.c:676 +#: src/cryptsetup.c:493 src/cryptsetup.c:678 #, c-format msgid "Device %s is not a valid BITLK device." msgstr "%s 不是有效的 BITLK 设备。" -#: src/cryptsetup.c:508 +#: src/cryptsetup.c:501 msgid "Cannot determine volume key size for BITLK, please use --key-size option." msgstr "无法确定 BITLK 的卷密钥大小,请使用 --key-size 选项。" -#: src/cryptsetup.c:550 +#: src/cryptsetup.c:547 msgid "" "Header dump with volume key is sensitive information\n" "which allows access to encrypted partition without passphrase.\n" "This dump should be always stored encrypted on safe place." msgstr "" +"包含卷密钥的标头导出属于敏感信息,\n" +"它使得无需口令即可访问加密分区。\n" +"此类导出应始终以加密形式存放在安全的位置。" -#: src/cryptsetup.c:617 src/cryptsetup.c:698 src/cryptsetup.c:2643 +#: src/cryptsetup.c:614 src/cryptsetup.c:700 src/cryptsetup.c:2520 msgid "" "The header dump with volume key is sensitive information\n" "that allows access to encrypted partition without a passphrase.\n" "This dump should be stored encrypted in a safe place." msgstr "" +"包含卷密钥的标头导出属于敏感信息,\n" +"它使得无需口令即可访问加密分区。\n" +"此类导出应以加密形式存放在安全的位置。" -#: src/cryptsetup.c:753 src/cryptsetup.c:783 +#: src/cryptsetup.c:755 src/cryptsetup.c:787 #, c-format msgid "Device %s is not a valid FVAULT2 device." msgstr "%s 不是有效的 FVAULT2 设备。" -#: src/cryptsetup.c:791 +#: src/cryptsetup.c:795 msgid "Cannot determine volume key size for FVAULT2, please use --key-size option." msgstr "无法确定 FVAULT2 的卷密钥大小,请使用 --key-size 选项。" -#: src/cryptsetup.c:845 src/veritysetup.c:310 src/integritysetup.c:396 +#: src/cryptsetup.c:849 src/veritysetup.c:317 src/integritysetup.c:422 #, c-format msgid "Device %s is still active and scheduled for deferred removal.\n" -msgstr "" +msgstr "设备 %s 仍处于激活状态,且已计划延迟删除。\n" # stat() 主要就是出来一个各种文件信息…… -#: src/cryptsetup.c:879 src/cryptsetup.c:1899 src/cryptsetup.c:2173 -#: src/cryptsetup.c:2327 src/cryptsetup.c:2774 src/cryptsetup.c:2856 -#: src/cryptsetup.c:3382 -#, fuzzy, c-format -#| msgid "Failed to stat key file.\n" +#: src/cryptsetup.c:882 src/cryptsetup.c:1808 src/cryptsetup.c:2082 +#: src/cryptsetup.c:2229 src/cryptsetup.c:2648 src/cryptsetup.c:2730 +#: src/cryptsetup.c:3263 +#, c-format msgid "Failed to set external tokens path %s." -msgstr "获取 (stat) 密钥文件统计数据失败。\n" +msgstr "未能设置外部令牌路径 %s。" -#: src/cryptsetup.c:888 +#: src/cryptsetup.c:891 msgid "Resize of active device requires volume key in keyring but --disable-keyring option is set." -msgstr "" +msgstr "调整激活设备的大小需要密钥环中的卷密钥,但已设置 --disable-keyring 选项。" -#: src/cryptsetup.c:1048 +#: src/cryptsetup.c:1058 msgid "Benchmark interrupted." msgstr "基准测试已中断。" -#: src/cryptsetup.c:1069 +#: src/cryptsetup.c:1079 #, c-format msgid "PBKDF2-%-9s N/A\n" msgstr "PBKDF2-%-9s N/A\n" -#: src/cryptsetup.c:1071 +#: src/cryptsetup.c:1081 #, c-format msgid "PBKDF2-%-9s %7u iterations per second for %zu-bit key\n" msgstr "PBKDF2-%-9s %7u 迭代/秒,对于 %zu 位密钥\n" -#: src/cryptsetup.c:1085 +#: src/cryptsetup.c:1095 #, c-format msgid "%-10s N/A\n" msgstr "%-10s N/A\n" -#: src/cryptsetup.c:1087 +#: src/cryptsetup.c:1097 #, c-format msgid "%-10s %4u iterations, %5u memory, %1u parallel threads (CPUs) for %zu-bit key (requested %u ms time)\n" msgstr "%-10s %4u 次迭代、%5u 内存、%1u 并行线程(CPU),对于 %zu 位密钥(请求了 %u 毫秒时间)\n" -#: src/cryptsetup.c:1111 +#: src/cryptsetup.c:1121 msgid "Result of benchmark is not reliable." msgstr "基准测试结果不可靠。" -#: src/cryptsetup.c:1161 +#: src/cryptsetup.c:1172 msgid "# Tests are approximate using memory only (no storage IO).\n" msgstr "# 测试仅使用内存(无存储 IO)。\n" #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1186 +#: src/cryptsetup.c:1197 #, c-format msgid "#%*s Algorithm | Key | Encryption | Decryption\n" msgstr "#%*s算法 | 密钥 | 加密 | 解密\n" -#: src/cryptsetup.c:1194 +#: src/cryptsetup.c:1205 #, c-format msgid "Cipher %s (with %i bits key) is not available." msgstr "加密方法 %s(%i 位密钥)不可用。" #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1213 +#: src/cryptsetup.c:1226 msgid "# Algorithm | Key | Encryption | Decryption\n" msgstr "# 算法 | 密钥 | 加密 | 解密\n" -#: src/cryptsetup.c:1224 +#: src/cryptsetup.c:1239 msgid "N/A" msgstr "不可用" -#: src/cryptsetup.c:1249 +#: src/cryptsetup.c:1242 +msgid "# Cipher speed test is not available.\n" +msgstr "# 加密算法速度测试不可用。\n" + +#: src/cryptsetup.c:1258 msgid "" "Unprotected LUKS2 reencryption metadata detected. Please verify the reencryption operation is desirable (see luksDump output)\n" "and continue (upgrade metadata) only if you acknowledge the operation as genuine." msgstr "" +"检测到未受保护的 LUKS2 重新加密元数据。请确认此重新加密操作确为您所需(参见 luksDump 输出),\n" +"只有在您确认该操作确实由您发起时才继续(升级元数据)。" -#: src/cryptsetup.c:1255 -#, fuzzy -#| msgid "Enter passphrase to be deleted: " +#: src/cryptsetup.c:1264 msgid "Enter passphrase to protect and upgrade reencryption metadata: " -msgstr "输入要移除的口令: " +msgstr "输入用于保护并升级重新加密元数据的口令: " -#: src/cryptsetup.c:1299 +#: src/cryptsetup.c:1308 msgid "Really proceed with LUKS2 reencryption recovery?" -msgstr "" +msgstr "确定要继续进行 LUKS2 重新加密恢复吗?" -#: src/cryptsetup.c:1308 -#, fuzzy -#| msgid "Enter passphrase to be deleted: " +#: src/cryptsetup.c:1317 msgid "Enter passphrase to verify reencryption metadata digest: " -msgstr "输入要移除的口令: " +msgstr "输入用于校验重新加密元数据摘要的口令: " -#: src/cryptsetup.c:1310 -#, fuzzy -#| msgid "Enter passphrase for key slot %u: " +#: src/cryptsetup.c:1319 msgid "Enter passphrase for reencryption recovery: " -msgstr "输入密钥槽 %u 的密码:" +msgstr "输入用于重新加密恢复的口令: " -#: src/cryptsetup.c:1370 +#: src/cryptsetup.c:1381 msgid "Really try to repair LUKS device header?" msgstr "确定要尝试修复 LUKS 设备标头吗?" -#: src/cryptsetup.c:1394 src/integritysetup.c:76 src/integritysetup.c:234 +#: src/cryptsetup.c:1409 src/integritysetup.c:76 src/integritysetup.c:246 msgid "" "\n" "Wipe interrupted." @@ -2330,240 +2366,229 @@ msgstr "" "\n" "擦除被打断。" -#: src/cryptsetup.c:1399 src/integritysetup.c:81 src/integritysetup.c:271 +#: src/cryptsetup.c:1414 src/integritysetup.c:81 src/integritysetup.c:291 msgid "" "Wiping device to initialize integrity checksum.\n" "You can interrupt this by pressing CTRL+c (rest of not wiped device will contain invalid checksum).\n" msgstr "" +"正在擦除设备以初始化完整性校验和。\n" +"您可以按 CTRL+c 中断此操作(设备中未被擦除的部分将含有无效的校验和)。\n" -#: src/cryptsetup.c:1421 src/integritysetup.c:103 -#, fuzzy, c-format -#| msgid "Cannot open temporary LUKS device.\n" +#: src/cryptsetup.c:1436 src/integritysetup.c:103 +#, c-format msgid "Cannot deactivate temporary device %s." -msgstr "无法打开临时 LUKS 设备。\n" +msgstr "无法停用临时设备 %s。" + +#: src/cryptsetup.c:1484 +msgid "OPAL hw-only encryption does not support --cipher and --key-size, options ignored." +msgstr "OPAL 纯硬件加密不支持 --cipher 和 --key-size,已忽略这些选项。" -#: src/cryptsetup.c:1476 +#: src/cryptsetup.c:1497 msgid "Integrity option can be used only for LUKS2 format." -msgstr "" +msgstr "数据完整性选项只能用于 LUKS2 格式。" -#: src/cryptsetup.c:1481 src/cryptsetup.c:1546 -#, fuzzy -#| msgid "Unsupported LUKS version %d." +#: src/cryptsetup.c:1502 src/cryptsetup.c:1582 msgid "Unsupported LUKS2 metadata size options." -msgstr "不支持的 LUKS 版本 %d。" +msgstr "不支持的 LUKS2 元数据大小选项。" -#: src/cryptsetup.c:1486 -#, fuzzy -#| msgid "This operation is supported only for LUKS2 device." +#: src/cryptsetup.c:1507 msgid "OPAL is supported only for LUKS2 format." -msgstr "此操作只适用 LUKS2 设备。" +msgstr "只有 LUKS2 格式支持 OPAL。" -#: src/cryptsetup.c:1495 +#: src/cryptsetup.c:1512 +msgid "Inline hw tags are supported only for LUKS2 format." +msgstr "只有 LUKS2 格式支持内联硬件标签。" + +#: src/cryptsetup.c:1521 msgid "Header file does not exist, do you want to create it?" msgstr "标头文件不存在,是否要创建它?" -#: src/cryptsetup.c:1503 +#: src/cryptsetup.c:1529 #, c-format msgid "Cannot create header file %s." msgstr "无法创建标头文件 %s。" -#: src/cryptsetup.c:1526 src/integritysetup.c:131 src/integritysetup.c:139 -#: src/integritysetup.c:148 src/integritysetup.c:311 src/integritysetup.c:319 -#: src/integritysetup.c:329 -#, fuzzy -#| msgid "No known cipher specification pattern detected.\n" +#: src/cryptsetup.c:1555 src/integritysetup.c:127 src/integritysetup.c:142 +#: src/integritysetup.c:151 src/integritysetup.c:330 src/integritysetup.c:338 +#: src/integritysetup.c:348 msgid "No known integrity specification pattern detected." -msgstr "未探测到已知的加密方法特征。\n" +msgstr "未探测到已知的完整性校验规格特征。" -#: src/cryptsetup.c:1539 +#: src/cryptsetup.c:1557 +msgid "Cannot use specified integrity key size." +msgstr "无法使用指定的完整性校验密钥大小。" + +#: src/cryptsetup.c:1575 #, c-format msgid "Cannot use %s as on-disk header." msgstr "无法将 %s 作为磁盘上的标头使用。" -#: src/cryptsetup.c:1568 src/integritysetup.c:168 +#: src/cryptsetup.c:1604 src/integritysetup.c:173 #, c-format msgid "This will overwrite data on %s irrevocably." msgstr "这将覆盖 %s 上的数据,该动作不可取消。" -#: src/cryptsetup.c:1605 +#: src/cryptsetup.c:1641 msgid "OPAL Admin password cannot be empty." -msgstr "" +msgstr "OPAL 管理员密码不能为空。" # stat() 主要就是出来一个各种文件信息…… -#: src/cryptsetup.c:1619 src/cryptsetup.c:2190 src/cryptsetup.c:2340 -#: src/cryptsetup.c:2500 src/cryptsetup.c:2566 src/utils_reencrypt_luks1.c:430 +#: src/cryptsetup.c:1655 src/cryptsetup.c:2099 src/cryptsetup.c:2242 +#: src/cryptsetup.c:2377 src/cryptsetup.c:2443 src/utils_reencrypt_luks1.c:428 msgid "Failed to set pbkdf parameters." msgstr "设置 pbkdf 参数失败。" -#: src/cryptsetup.c:1751 -msgid "Type specification in --link-vk-to-keyring keyring specification is ignored." -msgstr "" - -#: src/cryptsetup.c:1816 -msgid "Key types have to be the same for both volume keys." -msgstr "" - -#: src/cryptsetup.c:1821 -#, fuzzy -#| msgid "Failed to load key in kernel keyring." -msgid "Both volume keys have to be linked to the same keyring." -msgstr "在内核密钥环中加载密钥失败。" - -#: src/cryptsetup.c:1831 -msgid "You need to supply more key names." -msgstr "" - -#: src/cryptsetup.c:1835 -msgid "Invalid --link-vk-to-keyring value." -msgstr "" - -#: src/cryptsetup.c:1880 -#, fuzzy -#| msgid "Reduced data offset is allowed only for detached LUKS header.\n" +#: src/cryptsetup.c:1786 msgid "Reduced data offset is allowed only for detached LUKS header." -msgstr "仅已脱离的 LUKS 数据头可以使用缩减的数据偏移。\n" +msgstr "只有分离的 LUKS 标头才允许使用缩减的数据偏移量。" -#: src/cryptsetup.c:1887 +#: src/cryptsetup.c:1793 #, c-format msgid "LUKS file container %s is too small for activation, there is no remaining space for data." -msgstr "" +msgstr "LUKS 文件容器 %s 太小,无法激活,没有剩余空间存放数据。" -#: src/cryptsetup.c:1914 src/cryptsetup.c:2346 +#: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:278 +#: src/utils_reencrypt.c:371 src/utils_reencrypt.c:1910 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." -msgstr "" +msgstr "无法确定不含密钥槽的 LUKS 的卷密钥大小,请使用 --key-size 选项。" + +#: src/cryptsetup.c:1854 src/utils_reencrypt.c:304 +msgid "Device requires two volume keys." +msgstr "设备需要两个卷密钥。" + +#: src/cryptsetup.c:1889 +msgid "Some specified activation parameters were ignored with OPAL hw-only encryption." +msgstr "在 OPAL 纯硬件加密下,部分指定的激活参数已被忽略。" -#: src/cryptsetup.c:1981 +#: src/cryptsetup.c:1894 msgid "Device activated but cannot make flags persistent." -msgstr "" +msgstr "设备已激活,但无法将旗标设为持久。" -#: src/cryptsetup.c:2065 src/cryptsetup.c:2133 -#, fuzzy, c-format -#| msgid "Key slot %d selected for deletion.\n" +#: src/cryptsetup.c:1974 src/cryptsetup.c:2042 +#, c-format msgid "Keyslot %d is selected for deletion." -msgstr "已选中密钥槽 %d 以删除。\n" +msgstr "已选中密钥槽 %d 进行删除。" -#: src/cryptsetup.c:2077 src/cryptsetup.c:2137 +#: src/cryptsetup.c:1986 src/cryptsetup.c:2046 msgid "This is the last keyslot. Device will become unusable after purging this key." msgstr "这是最后一个密钥槽。设备在清空此密钥后将不可用。" -#: src/cryptsetup.c:2078 +#: src/cryptsetup.c:1987 msgid "Enter any remaining passphrase: " msgstr "输入任意剩余的口令: " -#: src/cryptsetup.c:2079 src/cryptsetup.c:2139 +#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 msgid "Operation aborted, the keyslot was NOT wiped.\n" msgstr "操作中止,密钥槽【未被】擦除。\n" -#: src/cryptsetup.c:2115 +#: src/cryptsetup.c:2024 msgid "Enter passphrase to be deleted: " msgstr "输入要移除的口令: " -#: src/cryptsetup.c:2165 src/cryptsetup.c:2549 src/cryptsetup.c:3206 -#: src/cryptsetup.c:3373 +#: src/cryptsetup.c:2074 src/cryptsetup.c:2426 src/cryptsetup.c:3087 +#: src/cryptsetup.c:3254 #, c-format msgid "Device %s is not a valid LUKS2 device." msgstr "设备 %s 不是有效的 LUKS2 设备。" -#: src/cryptsetup.c:2204 src/cryptsetup.c:2423 +#: src/cryptsetup.c:2113 src/cryptsetup.c:2312 msgid "Enter new passphrase for key slot: " msgstr "输入密钥槽的新口令: " -#: src/cryptsetup.c:2306 -#, fuzzy -#| msgid "WARNING: The --hash parameter is being ignored in plain mode with keyfile specified.\n" +#: src/cryptsetup.c:2147 src/utils_luks.c:342 +#, c-format +msgid "Enter token PIN: " +msgstr "输入令牌 PIN:" + +#: src/cryptsetup.c:2149 src/utils_luks.c:344 +#, c-format +msgid "Enter token %d PIN: " +msgstr "输入令牌 %d PIN:" + +#: src/cryptsetup.c:2208 msgid "WARNING: The --key-slot parameter is used for new keyslot number.\n" -msgstr "警告:在纯文本模式下指定密钥文件时将忽略参数 --hash。\n" +msgstr "警告:--key-slot 参数用于指定新的密钥槽编号。\n" -#: src/cryptsetup.c:2379 src/utils_reencrypt_luks1.c:1096 +#: src/cryptsetup.c:2285 src/utils_reencrypt_luks1.c:1094 #, c-format msgid "Enter any existing passphrase: " msgstr "输入任意已存在的口令: " -#: src/cryptsetup.c:2504 +#: src/cryptsetup.c:2381 msgid "Enter passphrase to be changed: " msgstr "输入要更改的口令: " -#: src/cryptsetup.c:2520 src/utils_reencrypt_luks1.c:1082 +#: src/cryptsetup.c:2397 src/utils_reencrypt_luks1.c:1080 msgid "Enter new passphrase: " msgstr "输入新口令: " -#: src/cryptsetup.c:2570 -#, fuzzy -#| msgid "Enter passphrase for key slot %u: " +#: src/cryptsetup.c:2447 msgid "Enter passphrase for keyslot to be converted: " -msgstr "输入密钥槽 %u 的密码:" +msgstr "输入待转换密钥槽的口令: " -#: src/cryptsetup.c:2594 -#, fuzzy -#| msgid "Only one device argument for isLuks operation is supported.\n" +#: src/cryptsetup.c:2471 msgid "Only one device argument for isLuks operation is supported." -msgstr "isLuks 操作仅支持一个设备参数。\n" +msgstr "isLuks 操作仅支持一个设备参数。" -#: src/cryptsetup.c:2702 -#, fuzzy, c-format -#| msgid "Key slot %d is not used.\n" +#: src/cryptsetup.c:2576 +#, c-format msgid "Keyslot %d does not contain unbound key." -msgstr "密钥槽 %d 未使用。\n" +msgstr "密钥槽 %d 不含未绑定的密钥。" -#: src/cryptsetup.c:2707 +#: src/cryptsetup.c:2581 msgid "" "The header dump with unbound key is sensitive information.\n" "This dump should be stored encrypted in a safe place." msgstr "" +"包含未绑定密钥的标头导出属于敏感信息。\n" +"此类导出应以加密形式存放在安全的位置。" -#: src/cryptsetup.c:2802 src/cryptsetup.c:2839 -#, fuzzy, c-format -#| msgid "show active device status" +#: src/cryptsetup.c:2676 src/cryptsetup.c:2713 +#, c-format msgid "%s is not active %s device name." -msgstr "显示已激活的设备信息" +msgstr "%s 不是已激活的 %s 设备名称。" -#: src/cryptsetup.c:2834 +#: src/cryptsetup.c:2708 #, c-format msgid "%s is not active LUKS device name or header is missing." -msgstr "" +msgstr "%s 不是已激活的 LUKS 设备名称,或者标头缺失。" -#: src/cryptsetup.c:2912 src/cryptsetup.c:2931 +#: src/cryptsetup.c:2785 src/cryptsetup.c:2804 msgid "Option --header-backup-file is required." msgstr "必须指定 --header-backup-file 选项。" -#: src/cryptsetup.c:2962 +#: src/cryptsetup.c:2835 #, c-format msgid "%s is not cryptsetup managed device." -msgstr "" +msgstr "%s 不是 cryptsetup 所管理的设备。" -#: src/cryptsetup.c:2973 -#, fuzzy, c-format -#| msgid "Resume is not supported for device %s." +#: src/cryptsetup.c:2846 +#, c-format msgid "Refresh is not supported for device type %s" -msgstr "设备 %s 不支持恢复。" +msgstr "设备类型 %s 不支持刷新" -#: src/cryptsetup.c:3023 -#, fuzzy, c-format -#| msgid "Unrecognized metadata device type %s.\n" +#: src/cryptsetup.c:2896 +#, c-format msgid "Unrecognized metadata device type %s." -msgstr "未能识别的元数据设备类型 %s。\n" +msgstr "未能识别的元数据设备类型 %s。" -#: src/cryptsetup.c:3025 -#, fuzzy -#| msgid "Command requires device and mapped name as arguments.\n" +#: src/cryptsetup.c:2898 msgid "Command requires device and mapped name as arguments." -msgstr "命令需要设备及映射名作为参数。\n" +msgstr "命令需要设备及映射名作为参数。" -#: src/cryptsetup.c:3035 +#: src/cryptsetup.c:2916 msgid "Enter OPAL PSID: " msgstr "输入 OPAL PSID:" -#: src/cryptsetup.c:3035 -#, fuzzy -#| msgid "Enter new passphrase: " +#: src/cryptsetup.c:2916 msgid "Enter OPAL Admin password: " -msgstr "输入新口令: " +msgstr "输入 OPAL 管理员密码: " -#: src/cryptsetup.c:3043 +#: src/cryptsetup.c:2924 msgid "WARNING: WHOLE disk will be factory reset and all data will be lost! Continue?" -msgstr "" +msgstr "警告:整个磁盘将恢复出厂设置,所有数据都会丢失!是否继续?" -#: src/cryptsetup.c:3086 +#: src/cryptsetup.c:2967 #, c-format msgid "" "This operation will erase all keyslots on device %s.\n" @@ -2572,373 +2597,365 @@ msgstr "" "该操作将清空设备 %s 上所有的密钥槽。\n" "设备在此操作后将不可用。" -#: src/cryptsetup.c:3093 +#: src/cryptsetup.c:2974 msgid "Operation aborted, keyslots were NOT wiped.\n" msgstr "操作已中止,密钥槽没有被擦除。\n" -#: src/cryptsetup.c:3132 +#: src/cryptsetup.c:3013 msgid "Invalid LUKS type, only luks1 and luks2 are supported." -msgstr "" +msgstr "无效的 LUKS 类型,只支持 luks1 和 luks2。" -#: src/cryptsetup.c:3148 +#: src/cryptsetup.c:3029 #, c-format msgid "Device is already %s type." msgstr "设备已为 %s 类型。" -#: src/cryptsetup.c:3155 -#, fuzzy, c-format -#| msgid "This operation is not supported for %s crypt device.\n" +#: src/cryptsetup.c:3036 +#, c-format msgid "This operation will convert %s to %s format.\n" -msgstr "不支持在 %s 加密设备上执行此操作。\n" +msgstr "此操作会将 %s 转换为 %s 格式。\n" -#: src/cryptsetup.c:3158 +#: src/cryptsetup.c:3039 msgid "Operation aborted, device was NOT converted.\n" -msgstr "" +msgstr "操作已中止,设备未被转换。\n" -#: src/cryptsetup.c:3198 +#: src/cryptsetup.c:3079 msgid "Option --priority, --label or --subsystem is missing." msgstr "选项 --priority、--label 或 --subsystem 缺失。" -#: src/cryptsetup.c:3232 src/cryptsetup.c:3272 src/cryptsetup.c:3292 +#: src/cryptsetup.c:3113 src/cryptsetup.c:3153 src/cryptsetup.c:3173 #, c-format msgid "Token %d is invalid." msgstr "令牌 %d 无效。" -#: src/cryptsetup.c:3235 src/cryptsetup.c:3295 +#: src/cryptsetup.c:3116 src/cryptsetup.c:3176 #, c-format msgid "Token %d in use." msgstr "令牌 %d 正在使用中。" # stat() 主要就是出来一个各种文件信息…… -#: src/cryptsetup.c:3247 -#, fuzzy, c-format -#| msgid "Failed to stat key file.\n" +#: src/cryptsetup.c:3128 +#, c-format msgid "Failed to add luks2-keyring token %d." -msgstr "获取 (stat) 密钥文件统计数据失败。\n" +msgstr "未能添加 luks2-keyring 令牌 %d。" -#: src/cryptsetup.c:3258 src/cryptsetup.c:3321 -#, fuzzy, c-format -#| msgid "Failed to swap new key slot.\n" +#: src/cryptsetup.c:3139 src/cryptsetup.c:3202 +#, c-format msgid "Failed to assign token %d to keyslot %d." -msgstr "交换新密钥槽失败。\n" +msgstr "未能将令牌 %d 分配给密钥槽 %d。" -#: src/cryptsetup.c:3275 +#: src/cryptsetup.c:3156 #, c-format msgid "Token %d is not in use." msgstr "令牌 %d 未使用。" -#: src/cryptsetup.c:3312 -#, fuzzy -#| msgid "Failed to open key file." +#: src/cryptsetup.c:3193 msgid "Failed to import token from file." -msgstr "打开 (open) 密钥文件失败。" +msgstr "未能从文件导入令牌。" -#: src/cryptsetup.c:3337 -#, fuzzy, c-format -#| msgid "Failed to swap new key slot.\n" +#: src/cryptsetup.c:3218 +#, c-format msgid "Failed to get token %d for export." -msgstr "交换新密钥槽失败。\n" +msgstr "未能获取要导出的令牌 %d。" -#: src/cryptsetup.c:3350 -#, fuzzy, c-format -#| msgid "Failed to swap new key slot.\n" +#: src/cryptsetup.c:3231 +#, c-format msgid "Token %d is not assigned to keyslot %d." -msgstr "交换新密钥槽失败。\n" +msgstr "令牌 %d 未分配给密钥槽 %d。" -#: src/cryptsetup.c:3352 src/cryptsetup.c:3359 -#, fuzzy, c-format -#| msgid "Failed to swap new key slot.\n" +#: src/cryptsetup.c:3233 src/cryptsetup.c:3240 +#, c-format msgid "Failed to unassign token %d from keyslot %d." -msgstr "交换新密钥槽失败。\n" +msgstr "未能将令牌 %d 从密钥槽 %d 解除分配。" -#: src/cryptsetup.c:3418 +#: src/cryptsetup.c:3299 msgid "Option --tcrypt-hidden, --tcrypt-system or --tcrypt-backup is supported only for TCRYPT device." msgstr "选项 --tcrypt-hidden, --tcrypt-system 或 --tcrypt-backup 只支持 TCRYPT 设备。" -#: src/cryptsetup.c:3421 +#: src/cryptsetup.c:3302 msgid "Option --veracrypt or --disable-veracrypt is supported only for TCRYPT device type." msgstr "选项 --veracrypt、--disable-veracrypt 只支持 TCRYPT 设备类型。" -#: src/cryptsetup.c:3424 +#: src/cryptsetup.c:3305 msgid "Option --veracrypt-pim is supported only for VeraCrypt compatible devices." msgstr "选项 --veracrypt-pim 只支持兼容 VeraCrypt 的设备。" -#: src/cryptsetup.c:3428 +#: src/cryptsetup.c:3309 msgid "Option --veracrypt-query-pim is supported only for VeraCrypt compatible devices." msgstr "选项 --veracrypt-query-pim 只支持兼容 VeraCrypt 的设备。" -#: src/cryptsetup.c:3430 +#: src/cryptsetup.c:3311 msgid "The options --veracrypt-pim and --veracrypt-query-pim are mutually exclusive." msgstr "选项 --veracrypt-pim、--veracrypt-query-pim 互斥。" -#: src/cryptsetup.c:3439 +#: src/cryptsetup.c:3320 msgid "Option --persistent is not allowed with --test-passphrase." msgstr "不允许将选项 --persistent 与 --test-passphrase 一起使用。" -#: src/cryptsetup.c:3442 +#: src/cryptsetup.c:3323 msgid "Options --refresh and --test-passphrase are mutually exclusive." msgstr "选项 --refresh、--test-passphrase 互斥。" -#: src/cryptsetup.c:3445 +#: src/cryptsetup.c:3326 msgid "Option --shared is allowed only for open of plain device." msgstr "选项 --shared 只适用于打开纯(plain)设备。" -#: src/cryptsetup.c:3448 +#: src/cryptsetup.c:3329 msgid "Option --skip is supported only for open of plain and loopaes devices." msgstr "选项 --skip 只适用于打开纯(plain)设备和 loopaes 设备。" -#: src/cryptsetup.c:3451 +#: src/cryptsetup.c:3332 msgid "Option --offset with open action is only supported for plain and loopaes devices." msgstr "选项 --offset 只适用于打开纯(plain)设备和 loopaes 设备。" -#: src/cryptsetup.c:3454 +#: src/cryptsetup.c:3335 msgid "Option --tcrypt-hidden cannot be combined with --allow-discards." msgstr "选项 --tcrypt-hidden 不能与 --allow-discards 共用。" -#: src/cryptsetup.c:3458 +#: src/cryptsetup.c:3339 msgid "Sector size option with open action is supported only for plain devices." msgstr "只有纯(plain)设备可以在打开时指定扇区大小。" -#: src/cryptsetup.c:3462 +#: src/cryptsetup.c:3343 msgid "Large IV sectors option is supported only for opening plain type device with sector size larger than 512 bytes." msgstr "只有扇区大小超过512字节的纯(plain)设备可以使用大IV扇区选项。" -#: src/cryptsetup.c:3467 +#: src/cryptsetup.c:3348 msgid "Option --test-passphrase is allowed only for open of LUKS, TCRYPT, BITLK and FVAULT2 devices." msgstr "选项 --test-passphrase 只能用于打开 LUKS、TCRYPT、BITLK、FVAULT2 设备。" -#: src/cryptsetup.c:3470 src/cryptsetup.c:3493 +#: src/cryptsetup.c:3351 src/cryptsetup.c:3381 msgid "Options --device-size and --size cannot be combined." msgstr "选项 --device-size 和 --size 不能组合使用。" -#: src/cryptsetup.c:3473 -#, fuzzy -#| msgid "Option --shared is allowed only for open of plain device.\n" +#: src/cryptsetup.c:3354 msgid "Option --unbound is allowed only for open of luks device." -msgstr "选项 --shared 只适用于打开纯(plain)设备。\n" +msgstr "选项 --unbound 只适用于打开 luks 设备。" -#: src/cryptsetup.c:3476 -#, fuzzy -#| msgid "Option --new cannot be used together with --decrypt." +#: src/cryptsetup.c:3357 msgid "Option --unbound cannot be used without --test-passphrase." -msgstr "选项 --new 不可与 --decrypt 共用。" +msgstr "选项 --unbound 不能在没有 --test-passphrase 的情况下使用。" -#: src/cryptsetup.c:3485 src/veritysetup.c:658 src/integritysetup.c:754 -msgid "Options --cancel-deferred and --deferred cannot be used at the same time." -msgstr "" +#: src/cryptsetup.c:3361 +msgid "Option --volume-key-keyring cannot be combined with --hash or --volume-key-file." +msgstr "选项 --volume-key-keyring 不能与 --hash 或 --volume-key-file 组合使用。" -#: src/cryptsetup.c:3501 -msgid "Options --reduce-device-size and --device-size cannot be combined." -msgstr "" +#: src/cryptsetup.c:3364 +msgid "Both --volume-key-file options must be paired with respective --key-size options." +msgstr "两个 --volume-key-file 选项都必须与各自对应的 --key-size 选项配对使用。" -#: src/cryptsetup.c:3504 -#, fuzzy -#| msgid "This operation is supported only for LUKS2 device." +#: src/cryptsetup.c:3373 src/veritysetup.c:673 src/integritysetup.c:793 +msgid "Options --cancel-deferred and --deferred cannot be used at the same time." +msgstr "选项 --cancel-deferred 和 --deferred 不能一起使用。" + +#: src/cryptsetup.c:3389 msgid "Option --active-name can be set only for LUKS2 device." -msgstr "此操作只适用 LUKS2 设备。" +msgstr "选项 --active-name 只能为 LUKS2 设备设置。" -#: src/cryptsetup.c:3507 +#: src/cryptsetup.c:3392 msgid "Options --active-name and --force-offline-reencrypt cannot be combined." -msgstr "" +msgstr "选项 --active-name 和 --force-offline-reencrypt 不能组合使用。" -#: src/cryptsetup.c:3515 src/cryptsetup.c:3545 +#: src/cryptsetup.c:3395 +msgid "Options --new-volume-key-file and --keep-key cannot be combined." +msgstr "选项 --new-volume-key-file 和 --keep-key 不能组合使用。" + +#: src/cryptsetup.c:3398 +msgid "Options --new-volume-key-keyring and --keep-key cannot be combined." +msgstr "选项 --new-volume-key-keyring 和 --keep-key 不能组合使用。" + +#: src/cryptsetup.c:3406 src/cryptsetup.c:3436 msgid "Keyslot specification is required." -msgstr "" +msgstr "必须指定密钥槽。" -#: src/cryptsetup.c:3523 -#, fuzzy -#| msgid "Option --align-payload is allowed only for luksFormat." +#: src/cryptsetup.c:3414 msgid "Options --align-payload and --offset cannot be combined." -msgstr "选项 --align-payload 只允许用于 luksFormat。" +msgstr "选项 --align-payload 和 --offset 不能组合使用。" -#: src/cryptsetup.c:3526 +#: src/cryptsetup.c:3417 msgid "Option --integrity-no-wipe can be used only for format action with integrity extension." -msgstr "" +msgstr "选项 --integrity-no-wipe 只能用于带完整性校验扩展的 format 动作。" -#: src/cryptsetup.c:3529 +#: src/cryptsetup.c:3420 msgid "Only one of --use-[u]random options is allowed." msgstr "--use-[u]random 选项只能用一处。" -#: src/cryptsetup.c:3537 +#: src/cryptsetup.c:3428 msgid "Key size is required with --unbound option." -msgstr "" +msgstr "使用 --unbound 选项时必须指定密钥大小。" -#: src/cryptsetup.c:3557 -#, fuzzy -#| msgid "Invalid device %s.\n" +#: src/cryptsetup.c:3448 msgid "Invalid token action." -msgstr "设备 %s 无效。\n" +msgstr "无效的令牌动作。" -#: src/cryptsetup.c:3560 +#: src/cryptsetup.c:3451 msgid "--key-description parameter is mandatory for token add action." -msgstr "" +msgstr "对于 token add 动作,--key-description 参数是必需的。" -#: src/cryptsetup.c:3564 src/cryptsetup.c:3577 +#: src/cryptsetup.c:3455 src/cryptsetup.c:3468 msgid "Action requires specific token. Use --token-id parameter." -msgstr "" +msgstr "此动作需要指定具体的令牌。请使用 --token-id 参数。" -#: src/cryptsetup.c:3568 -#, fuzzy -#| msgid "Option --new cannot be used together with --decrypt." +#: src/cryptsetup.c:3459 msgid "Option --unbound is valid only with token add action." -msgstr "选项 --new 不可与 --decrypt 共用。" +msgstr "选项 --unbound 仅在 token add 动作中有效。" -#: src/cryptsetup.c:3570 +#: src/cryptsetup.c:3461 msgid "Options --key-slot and --unbound cannot be combined." -msgstr "" +msgstr "选项 --key-slot 和 --unbound 不能组合使用。" -#: src/cryptsetup.c:3575 +#: src/cryptsetup.c:3466 msgid "Action requires specific keyslot. Use --key-slot parameter." -msgstr "" +msgstr "此动作需要指定具体的密钥槽。请使用 --key-slot 参数。" -#: src/cryptsetup.c:3591 +#: src/cryptsetup.c:3482 msgid " [--type ] []" msgstr "<设备> [--type <类型>] [<名称>]" -#: src/cryptsetup.c:3591 src/veritysetup.c:478 src/integritysetup.c:531 +#: src/cryptsetup.c:3482 src/veritysetup.c:487 src/integritysetup.c:560 msgid "open device as " msgstr "以 <名称> 打开设备" -#: src/cryptsetup.c:3592 src/cryptsetup.c:3593 src/cryptsetup.c:3594 -#: src/veritysetup.c:479 src/veritysetup.c:480 src/integritysetup.c:532 -#: src/integritysetup.c:533 src/integritysetup.c:535 +#: src/cryptsetup.c:3483 src/cryptsetup.c:3484 src/cryptsetup.c:3485 +#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:561 +#: src/integritysetup.c:562 src/integritysetup.c:564 msgid "" msgstr "<名称>" -#: src/cryptsetup.c:3592 src/veritysetup.c:479 src/integritysetup.c:532 +#: src/cryptsetup.c:3483 src/veritysetup.c:488 src/integritysetup.c:561 msgid "close device (remove mapping)" msgstr "关闭设备(移除映射)" -#: src/cryptsetup.c:3593 src/integritysetup.c:535 +#: src/cryptsetup.c:3484 src/integritysetup.c:564 msgid "resize active device" msgstr "改变活动设备大小" -#: src/cryptsetup.c:3594 +#: src/cryptsetup.c:3485 msgid "show device status" msgstr "显示设备状态" -#: src/cryptsetup.c:3595 +#: src/cryptsetup.c:3486 msgid "[--cipher ]" -msgstr "" +msgstr "[--cipher <加密算法>]" -#: src/cryptsetup.c:3595 +#: src/cryptsetup.c:3486 msgid "benchmark cipher" msgstr "基准测试加密方法" -#: src/cryptsetup.c:3596 src/cryptsetup.c:3597 src/cryptsetup.c:3598 -#: src/cryptsetup.c:3599 src/cryptsetup.c:3600 src/cryptsetup.c:3607 -#: src/cryptsetup.c:3608 src/cryptsetup.c:3609 src/cryptsetup.c:3610 -#: src/cryptsetup.c:3611 src/cryptsetup.c:3612 src/cryptsetup.c:3613 -#: src/cryptsetup.c:3614 src/cryptsetup.c:3615 src/cryptsetup.c:3616 +#: src/cryptsetup.c:3487 src/cryptsetup.c:3488 src/cryptsetup.c:3489 +#: src/cryptsetup.c:3490 src/cryptsetup.c:3491 src/cryptsetup.c:3498 +#: src/cryptsetup.c:3499 src/cryptsetup.c:3500 src/cryptsetup.c:3501 +#: src/cryptsetup.c:3502 src/cryptsetup.c:3503 src/cryptsetup.c:3504 +#: src/cryptsetup.c:3505 src/cryptsetup.c:3506 src/cryptsetup.c:3507 msgid "" msgstr "<设备>" -#: src/cryptsetup.c:3596 +#: src/cryptsetup.c:3487 msgid "try to repair on-disk metadata" msgstr "尝试修复磁盘上的元数据" -#: src/cryptsetup.c:3597 +#: src/cryptsetup.c:3488 msgid "reencrypt LUKS2 device" msgstr "重加密 LUKS2 设备" -#: src/cryptsetup.c:3598 +#: src/cryptsetup.c:3489 msgid "erase all keyslots (remove encryption key)" msgstr "清空所有密钥槽(移除加密密钥)" -#: src/cryptsetup.c:3599 +#: src/cryptsetup.c:3490 msgid "convert LUKS from/to LUKS2 format" msgstr "在 LUKS 和 LUKS2 格式之间转换" -#: src/cryptsetup.c:3600 +#: src/cryptsetup.c:3491 msgid "set permanent configuration options for LUKS2" msgstr "为 LUKS2 设置永久配置选项" -#: src/cryptsetup.c:3601 src/cryptsetup.c:3602 +#: src/cryptsetup.c:3492 src/cryptsetup.c:3493 msgid " []" msgstr "<设备> [<新密钥文件>]" -#: src/cryptsetup.c:3601 +#: src/cryptsetup.c:3492 msgid "formats a LUKS device" msgstr "格式化一个 LUKS 设备" -#: src/cryptsetup.c:3602 +#: src/cryptsetup.c:3493 msgid "add key to LUKS device" msgstr "向 LUKS 设备添加密钥" -#: src/cryptsetup.c:3603 src/cryptsetup.c:3604 src/cryptsetup.c:3605 +#: src/cryptsetup.c:3494 src/cryptsetup.c:3495 src/cryptsetup.c:3496 msgid " []" msgstr "<设备> [<密钥文件>]" -#: src/cryptsetup.c:3603 +#: src/cryptsetup.c:3494 msgid "removes supplied key or key file from LUKS device" msgstr "移除 LUKS 设备中指定的密钥或密钥文件" -#: src/cryptsetup.c:3604 +#: src/cryptsetup.c:3495 msgid "changes supplied key or key file of LUKS device" msgstr "更改 LUKS 设备中指定的密钥或密钥文件" # stat() 主要就是出来一个各种文件信息…… -#: src/cryptsetup.c:3605 +#: src/cryptsetup.c:3496 msgid "converts a key to new pbkdf parameters" msgstr "将密钥转换到新的 pbkdf 参数" -#: src/cryptsetup.c:3606 +#: src/cryptsetup.c:3497 msgid " " msgstr "<设备> <密钥槽>" -#: src/cryptsetup.c:3606 +#: src/cryptsetup.c:3497 msgid "wipes key with number from LUKS device" msgstr "从 LUKS 设备清理标号为 的密钥" -#: src/cryptsetup.c:3607 +#: src/cryptsetup.c:3498 msgid "print UUID of LUKS device" msgstr "输出 LUKS 设备的 UUID(唯一标识符)" -#: src/cryptsetup.c:3608 +#: src/cryptsetup.c:3499 msgid "tests for LUKS partition header" msgstr "从 <设备> 探测 LUKS 分区标头" -#: src/cryptsetup.c:3609 +#: src/cryptsetup.c:3500 msgid "dump LUKS partition information" msgstr "调出 LUKS 分区信息" -#: src/cryptsetup.c:3610 +#: src/cryptsetup.c:3501 msgid "dump TCRYPT device information" msgstr "调出 TCRYPT 设备信息" -#: src/cryptsetup.c:3611 +#: src/cryptsetup.c:3502 msgid "dump BITLK device information" msgstr "调出 BITLK 设备信息" -#: src/cryptsetup.c:3612 +#: src/cryptsetup.c:3503 msgid "dump FVAULT2 device information" msgstr "调出 FVAULT2 设备信息" -#: src/cryptsetup.c:3613 +#: src/cryptsetup.c:3504 msgid "Suspend LUKS device and wipe key (all IOs are frozen)" msgstr "挂起 LUKS 设备并清除密钥(冻结所有 IO 操作)" -#: src/cryptsetup.c:3614 +#: src/cryptsetup.c:3505 msgid "Resume suspended LUKS device" msgstr "恢复已挂起的 LUKS 设备" -#: src/cryptsetup.c:3615 +#: src/cryptsetup.c:3506 msgid "Backup LUKS device header and keyslots" msgstr "备份 LUKS 设备标头和密钥槽" -#: src/cryptsetup.c:3616 +#: src/cryptsetup.c:3507 msgid "Restore LUKS device header and keyslots" msgstr "恢复 LUKS 设备标头和密钥槽" -#: src/cryptsetup.c:3617 +#: src/cryptsetup.c:3508 msgid " " msgstr " <设备>" -#: src/cryptsetup.c:3617 +#: src/cryptsetup.c:3508 msgid "Manipulate LUKS2 tokens" msgstr "操作 LUKS2 令牌" -#: src/cryptsetup.c:3636 src/veritysetup.c:496 src/integritysetup.c:550 +#: src/cryptsetup.c:3527 src/veritysetup.c:505 src/integritysetup.c:579 msgid "" "\n" " is one of:\n" @@ -2946,7 +2963,7 @@ msgstr "" "\n" "<动作> 为其中之一:\n" -#: src/cryptsetup.c:3642 +#: src/cryptsetup.c:3533 msgid "" "\n" "You can also use old syntax aliases:\n" @@ -2958,7 +2975,7 @@ msgstr "" "\topen: create (plainOpen), luksOpen, loopaesOpen, tcryptOpen, bitlkOpen, fvault2Open\n" "\tclose: remove (plainClose), luksClose, loopaesClose, tcryptClose, bitlkClose, fvault2Close\n" -#: src/cryptsetup.c:3646 +#: src/cryptsetup.c:3537 #, c-format msgid "" "\n" @@ -2973,31 +2990,37 @@ msgstr "" " 为需要更改的 LUKS 密钥槽\n" " 提供给 luksAddKey 动作的密钥文件\n" -#: src/cryptsetup.c:3653 +#: src/cryptsetup.c:3544 #, c-format msgid "" "\n" "Default compiled-in metadata format is %s (for luksFormat action).\n" msgstr "" +"\n" +"编译时内置的默认元数据格式为 %s(用于 luksFormat 动作)。\n" -#: src/cryptsetup.c:3658 +#: src/cryptsetup.c:3549 msgid "" "\n" "LUKS2 external token plugin support is enabled.\n" msgstr "" +"\n" +"已启用 LUKS2 外部令牌插件支持。\n" -#: src/cryptsetup.c:3659 +#: src/cryptsetup.c:3550 #, c-format msgid "LUKS2 external token plugin path: %s.\n" -msgstr "" +msgstr "LUKS2 外部令牌插件路径:%s。\n" -#: src/cryptsetup.c:3661 +#: src/cryptsetup.c:3552 msgid "" "\n" "LUKS2 external token plugin support is disabled.\n" msgstr "" +"\n" +"已禁用 LUKS2 外部令牌插件支持。\n" -#: src/cryptsetup.c:3665 +#: src/cryptsetup.c:3556 #, c-format msgid "" "\n" @@ -3015,7 +3038,7 @@ msgstr "" "\t迭代时间:%d,内存需求:%dkB,线程数:%d\n" "\n" -#: src/cryptsetup.c:3676 +#: src/cryptsetup.c:3567 #, c-format msgid "" "\n" @@ -3030,113 +3053,126 @@ msgstr "" "\tplain:%s, 密钥:%d 位, 密码哈希:%s\n" "\tLUKS1:%s, 密钥:%d bits, LUKS 数据头哈希:%s, RNG:%s\n" -#: src/cryptsetup.c:3685 +#: src/cryptsetup.c:3576 msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" -msgstr "" +msgstr "\tLUKS:XTS 模式(两个内部密钥)下的默认密钥大小将翻倍。\n" -#: src/cryptsetup.c:3703 src/veritysetup.c:638 src/integritysetup.c:710 +#: src/cryptsetup.c:3594 src/veritysetup.c:647 src/integritysetup.c:739 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: 需要 %s 作为参数" -#: src/cryptsetup.c:3743 src/utils_reencrypt_luks1.c:1145 +#: src/cryptsetup.c:3634 src/utils_reencrypt_luks1.c:1143 msgid "Key slot is invalid." msgstr "密钥槽无效。" -#: src/cryptsetup.c:3771 +#: src/cryptsetup.c:3662 msgid "Device size must be multiple of 512 bytes sector." msgstr "设备大小必须为 512 字节扇区的倍数。" -#: src/cryptsetup.c:3776 -#, fuzzy -#| msgid "Invalid device size specification." +#: src/cryptsetup.c:3667 msgid "Invalid max reencryption hotzone size specification." -msgstr "无效的设备大小指标。" +msgstr "无效的最大重新加密热区大小指标。" -#: src/cryptsetup.c:3790 src/cryptsetup.c:3802 +#: src/cryptsetup.c:3681 src/cryptsetup.c:3698 src/cryptsetup.c:3710 msgid "Key size must be a multiple of 8 bits" msgstr "密钥尺寸必须是 8 的倍数" -#: src/cryptsetup.c:3809 +#: src/cryptsetup.c:3688 +msgid "At most 2 key size specifications can be supplied." +msgstr "最多只能提供 2 个密钥大小规格。" + +#: src/cryptsetup.c:3717 src/cryptsetup.c:3728 #, c-format msgid "At most %d volume key specifications can be supplied." -msgstr "" +msgstr "最多只能提供 %d 个卷密钥规格。" -#: src/cryptsetup.c:3821 +#: src/cryptsetup.c:3740 #, c-format msgid "At most %d keyring link specifications can be supplied." -msgstr "" +msgstr "最多只能提供 %d 个密钥环链接规格。" -#: src/cryptsetup.c:3830 +#: src/cryptsetup.c:3749 msgid "Maximum device reduce size is 1 GiB." msgstr "最大设备缩减大小为 1 GiB。" -#: src/cryptsetup.c:3833 +#: src/cryptsetup.c:3752 msgid "Reduce size must be multiple of 512 bytes sector." msgstr "缩减大小必须为 512 字节扇区的倍数。" -#: src/cryptsetup.c:3850 +#: src/cryptsetup.c:3769 msgid "Option --priority can be only ignore/normal/prefer." -msgstr "" +msgstr "选项 --priority 只能为 ignore/normal/prefer。" + +#: src/cryptsetup.c:3774 +msgid "Invalid maximal tries specification." +msgstr "无效的最大尝试次数指标。" -#: src/cryptsetup.c:3869 src/veritysetup.c:559 src/integritysetup.c:630 +#: src/cryptsetup.c:3793 src/veritysetup.c:568 src/integritysetup.c:659 msgid "Show this help message" msgstr "显示此帮助" -#: src/cryptsetup.c:3870 src/veritysetup.c:560 src/integritysetup.c:631 +#: src/cryptsetup.c:3794 src/veritysetup.c:569 src/integritysetup.c:660 msgid "Display brief usage" msgstr "显示简短用法" -#: src/cryptsetup.c:3871 src/veritysetup.c:561 src/integritysetup.c:632 +#: src/cryptsetup.c:3795 src/veritysetup.c:570 src/integritysetup.c:661 msgid "Print package version" msgstr "打印软件包版本" -#: src/cryptsetup.c:3882 src/veritysetup.c:572 src/integritysetup.c:643 +#: src/cryptsetup.c:3806 src/veritysetup.c:581 src/integritysetup.c:672 msgid "Help options:" msgstr "帮助选项:" -#: src/cryptsetup.c:3905 src/veritysetup.c:593 src/integritysetup.c:663 +#: src/cryptsetup.c:3829 src/veritysetup.c:602 src/integritysetup.c:692 msgid "[OPTION...] " msgstr "[选项…] <动作> <动作特定参数>" -#: src/cryptsetup.c:3914 src/veritysetup.c:602 src/integritysetup.c:674 +#: src/cryptsetup.c:3838 src/veritysetup.c:611 src/integritysetup.c:703 msgid "Argument missing." msgstr "缺失参数 <动作>。" -#: src/cryptsetup.c:3993 src/veritysetup.c:633 src/integritysetup.c:705 +#: src/cryptsetup.c:3917 src/veritysetup.c:642 src/integritysetup.c:734 msgid "Unknown action." msgstr "未知动作。" -#: src/cryptsetup.c:4011 -#, fuzzy +#: src/cryptsetup.c:3935 msgid "Option --key-file takes precedence over specified key file argument." -msgstr "选项 --key-file 优先使用指定的密钥文件参数。" +msgstr "选项 --key-file 的优先级高于指定的密钥文件参数。" -#: src/cryptsetup.c:4017 +#: src/cryptsetup.c:3941 msgid "Only one --key-file argument is allowed." msgstr "只允许存在一个 --key-file 选项。" -#: src/cryptsetup.c:4022 +#: src/cryptsetup.c:3946 msgid "Password-based key derivation function (PBKDF) can be only pbkdf2 or argon2i/argon2id." -msgstr "" +msgstr "基于口令的密钥派生函数(PBKDF)只能是 pbkdf2 或 argon2i/argon2id。" -#: src/cryptsetup.c:4027 +#: src/cryptsetup.c:3951 msgid "PBKDF forced iterations cannot be combined with iteration time option." -msgstr "" +msgstr "PBKDF 强制迭代次数不能与迭代时间选项组合使用。" -#: src/cryptsetup.c:4032 +#: src/cryptsetup.c:3956 msgid "Cannot link volume key to a keyring when keyring is disabled." -msgstr "" +msgstr "密钥环已禁用时无法将卷密钥链入密钥环。" -#: src/cryptsetup.c:4043 +#: src/cryptsetup.c:3961 +msgid "Cannot use keyring key description when keyring is disabled." +msgstr "密钥环已禁用时无法使用密钥环的密钥描述。" + +#: src/cryptsetup.c:3966 +msgid "Inline integrity must be used together with --integrity option." +msgstr "内联完整性校验必须与 --integrity 选项一同使用。" + +#: src/cryptsetup.c:3977 msgid "Options --keyslot-cipher and --keyslot-key-size must be used together." -msgstr "" +msgstr "选项 --keyslot-cipher 和 --keyslot-key-size 必须一起使用。" -#: src/cryptsetup.c:4051 +#: src/cryptsetup.c:3985 msgid "No action taken. Invoked with --test-args option.\n" -msgstr "" +msgstr "未执行任何动作。调用时带有 --test-args 选项。\n" -#: src/cryptsetup.c:4064 +#: src/cryptsetup.c:3998 msgid "Cannot disable metadata locking." msgstr "无法禁用元数据锁定。" @@ -3164,72 +3200,72 @@ msgstr "无法为创建根哈希文件 %s 以供写入。" msgid "Cannot write to root hash file %s." msgstr "无法写入根哈希文件 %s。" -#: src/veritysetup.c:185 src/veritysetup.c:463 +#: src/veritysetup.c:189 src/veritysetup.c:472 #, c-format msgid "Device %s is not a valid VERITY device." msgstr "%s 不是有效的 VERITY 设备。" -#: src/veritysetup.c:202 src/veritysetup.c:219 +#: src/veritysetup.c:206 src/veritysetup.c:223 #, c-format msgid "Cannot read root hash file %s." msgstr "无法读取根哈希文件 %s。" -#: src/veritysetup.c:207 +#: src/veritysetup.c:211 #, c-format msgid "Invalid root hash file %s." msgstr "无效的根哈希值文件 %s。" -#: src/veritysetup.c:228 +#: src/veritysetup.c:232 msgid "Invalid root hash string specified." msgstr "指定了无效的根哈希值字串。" -#: src/veritysetup.c:236 +#: src/veritysetup.c:240 #, c-format msgid "Invalid signature file %s." msgstr "签名文件 %s 无效。" -#: src/veritysetup.c:243 +#: src/veritysetup.c:247 #, c-format msgid "Cannot read signature file %s." msgstr "无法读取签名文件 %s。" -#: src/veritysetup.c:266 src/veritysetup.c:280 +#: src/veritysetup.c:270 src/veritysetup.c:287 msgid "Command requires or --root-hash-file option as argument." -msgstr "" +msgstr "此命令需要 <根哈希> 或 --root-hash-file 选项作为参数。" -#: src/veritysetup.c:476 +#: src/veritysetup.c:485 msgid " " msgstr "<数据设备> <哈希设备>" -#: src/veritysetup.c:476 src/integritysetup.c:530 +#: src/veritysetup.c:485 src/integritysetup.c:559 msgid "format device" msgstr "格式化设备" -#: src/veritysetup.c:477 +#: src/veritysetup.c:486 msgid " []" msgstr "<数据设备> <哈希设备> [<根哈希值>]" -#: src/veritysetup.c:477 +#: src/veritysetup.c:486 msgid "verify device" msgstr "验证设备" -#: src/veritysetup.c:478 +#: src/veritysetup.c:487 msgid " []" msgstr "<数据设备> <名称> <哈希设备> [<根哈希值>]" -#: src/veritysetup.c:480 src/integritysetup.c:533 +#: src/veritysetup.c:489 src/integritysetup.c:562 msgid "show active device status" msgstr "显示已激活的设备信息" -#: src/veritysetup.c:481 +#: src/veritysetup.c:490 msgid "" msgstr "<哈希设备>" -#: src/veritysetup.c:481 src/integritysetup.c:534 +#: src/veritysetup.c:490 src/integritysetup.c:563 msgid "show on-disk information" msgstr "显示磁盘上的信息" -#: src/veritysetup.c:500 +#: src/veritysetup.c:509 #, c-format msgid "" "\n" @@ -3244,7 +3280,7 @@ msgstr "" "<哈希设备> 是含有验证信息的设备\n" "<根哈希值> 是 <哈希设备> 根节点的哈希值\n" -#: src/veritysetup.c:507 +#: src/veritysetup.c:516 #, c-format msgid "" "\n" @@ -3255,75 +3291,66 @@ msgstr "" "编译时决定的默认 dm-verify 参数:\n" "\t哈希: %s, 数据块 (字节): %u, 哈希块 (字节): %u, 盐大小: %u, 哈希格式: %u\n" -#: src/veritysetup.c:648 -#, fuzzy -#| msgid "Option --allow-discards is allowed only for open operation.\n" +#: src/veritysetup.c:657 msgid "Option --ignore-corruption and --restart-on-corruption cannot be used together." -msgstr "选项 --allow-discards 只适用于打开操作。\n" +msgstr "选项 --ignore-corruption 和 --restart-on-corruption 不能一起使用。" -#: src/veritysetup.c:653 -#, fuzzy -#| msgid "Option --allow-discards is allowed only for open operation.\n" +#: src/veritysetup.c:662 msgid "Option --panic-on-corruption and --restart-on-corruption cannot be used together." -msgstr "选项 --allow-discards 只适用于打开操作。\n" +msgstr "选项 --panic-on-corruption 和 --restart-on-corruption 不能一起使用。" -#: src/integritysetup.c:164 +#: src/veritysetup.c:668 +msgid "Option --error-as-corruption must be used with --panic-on-corruption or --restart-on-corruption." +msgstr "选项 --error-as-corruption 必须与 --panic-on-corruption 或 --restart-on-corruption 一起使用。" + +#: src/integritysetup.c:169 #, c-format msgid "" "This will overwrite data on %s and %s irrevocably.\n" "To preserve data device use --no-wipe option (and then activate with --integrity-recalculate)." msgstr "" +"这将覆盖 %s 和 %s 上的数据,该动作不可取消。\n" +"若要保留数据设备,请使用 --no-wipe 选项(随后用 --integrity-recalculate 激活)。" -#: src/integritysetup.c:204 +#: src/integritysetup.c:215 #, c-format -msgid "Formatted with tag size %u, internal integrity %s.\n" -msgstr "" +msgid "Formatted with tag size %u%s, internal integrity %s.\n" +msgstr "已格式化,标签大小为 %u%s,内部完整性校验为 %s。\n" -#: src/integritysetup.c:285 +#: src/integritysetup.c:216 +msgid " (inline hw tags)" +msgstr "(内联硬件标签)" + +#: src/integritysetup.c:305 msgid "Setting recalculate flag is not supported, you may consider using --wipe instead." -msgstr "" +msgstr "不支持设置重新计算旗标,您可以考虑改用 --wipe。" -#: src/integritysetup.c:360 src/integritysetup.c:517 -#, fuzzy, c-format -#| msgid "Device %s is not a valid VERITY device." +#: src/integritysetup.c:382 src/integritysetup.c:546 +#, c-format msgid "Device %s is not a valid INTEGRITY device." -msgstr "%s 不是有效的 VERITY 设备。" +msgstr "设备 %s 不是有效的 INTEGRITY 设备。" -#: src/integritysetup.c:530 src/integritysetup.c:534 -#, fuzzy -#| msgid "verify device" +#: src/integritysetup.c:559 src/integritysetup.c:563 msgid "" -msgstr "验证设备" +msgstr "<完整性设备>" -#: src/integritysetup.c:531 +#: src/integritysetup.c:560 msgid " " -msgstr "" +msgstr "<完整性设备> <名称>" -#: src/integritysetup.c:554 -#, fuzzy, c-format -#| msgid "" -#| "\n" -#| " is the device to create under %s\n" -#| " is the data device\n" -#| " is the device containing verification data\n" -#| " hash of the root node on \n" +#: src/integritysetup.c:583 +#, c-format msgid "" "\n" " is the device to create under %s\n" " is the device containing data with integrity tags\n" msgstr "" "\n" -"<名称> 是在 %s 下要创建的设备\n" -"<数据设备> 就是数据设备\n" -"<哈希设备> 是含有验证信息的设备\n" -"<根哈希值> 是 <哈希设备> 根节点的哈希值\n" +"<名称> 为要在 %s 下创建的设备\n" +"<完整性设备> 为含有完整性标签数据的设备\n" -#: src/integritysetup.c:559 -#, fuzzy, c-format -#| msgid "" -#| "\n" -#| "Default compiled-in dm-verity parameters:\n" -#| "\tHash: %s, Data block (bytes): %u, Hash block (bytes): %u, Salt size: %u, Hash format: %u\n" +#: src/integritysetup.c:588 +#, c-format msgid "" "\n" "Default compiled-in dm-integrity parameters:\n" @@ -3331,45 +3358,54 @@ msgid "" "\tMaximum keyfile size: %dkB\n" msgstr "" "\n" -"编译时决定的默认 dm-verify 参数:\n" -"\t哈希: %s, 数据块 (字节): %u, 哈希块 (字节): %u, 盐大小: %u, 哈希格式: %u\n" +"编译时内置的默认 dm-integrity 参数:\n" +"\t校验和算法:%s\n" +"\t密钥文件的最大大小:%dkB\n" -#: src/integritysetup.c:616 +#: src/integritysetup.c:645 #, c-format msgid "Invalid --%s size. Maximum is %u bytes." -msgstr "" +msgstr "--%s 的大小无效。最大为 %u 字节。" -#: src/integritysetup.c:719 +#: src/integritysetup.c:748 msgid "Both key file and key size options must be specified." msgstr "密钥文件和密钥大小选项均必须指定。" -#: src/integritysetup.c:723 +#: src/integritysetup.c:752 msgid "Both journal integrity key file and key size options must be specified." -msgstr "" +msgstr "日志完整性校验密钥文件和密钥大小选项均必须指定。" -#: src/integritysetup.c:726 +#: src/integritysetup.c:755 msgid "Journal integrity algorithm must be specified if journal integrity key is used." msgstr "如果使用了日志加密密钥,则必须指定日志完整性校验算法。" -#: src/integritysetup.c:730 +#: src/integritysetup.c:759 msgid "Both journal encryption key file and key size options must be specified." msgstr "日志加密密钥文件和密钥大小选项均必须指定。" -#: src/integritysetup.c:733 +#: src/integritysetup.c:762 msgid "Journal encryption algorithm must be specified if journal encryption key is used." msgstr "如果使用了日志加密密钥,则必须指定日志加密算法。" -#: src/integritysetup.c:737 +#: src/integritysetup.c:766 msgid "Recovery and bitmap mode options are mutually exclusive." -msgstr "" +msgstr "恢复模式与位图模式选项互斥。" -#: src/integritysetup.c:744 +#: src/integritysetup.c:773 msgid "Journal options cannot be used in bitmap mode." -msgstr "" +msgstr "位图模式下不能使用日志选项。" -#: src/integritysetup.c:749 +#: src/integritysetup.c:778 msgid "Bitmap options can be used only in bitmap mode." -msgstr "" +msgstr "位图选项只能在位图模式下使用。" + +#: src/integritysetup.c:784 +msgid "Inline mode cannot be combined with journal or bitmap options." +msgstr "内联模式不能与日志或位图选项组合使用。" + +#: src/integritysetup.c:788 +msgid "Inline mode cannot be combined with separate data device." +msgstr "内联模式不能与独立的数据设备组合使用。" #: src/utils_tools.c:105 msgid "" @@ -3389,6 +3425,9 @@ msgid "" "\n" "Are you sure? (Type 'yes' in capital letters): " msgstr "" +"%s\n" +"\n" +"您确定吗?(请输入大写的 'yes'): " #: src/utils_tools.c:113 msgid "Error reading response from terminal." @@ -3454,7 +3493,7 @@ msgstr "令牌 %i 已移除。" #: src/utils_tools.c:268 msgid "No token could be unlocked with this PIN." -msgstr "" +msgstr "没有令牌能用此 PIN 解锁。" #: src/utils_tools.c:270 #, c-format @@ -3464,36 +3503,36 @@ msgstr "令牌 %i 需要 PIN。" #: src/utils_tools.c:272 #, c-format msgid "Token (type %s) requires PIN." -msgstr "" +msgstr "令牌(类型 %s)需要 PIN。" #: src/utils_tools.c:275 #, c-format msgid "Token %i cannot unlock assigned keyslot(s) (wrong keyslot passphrase)." -msgstr "" +msgstr "令牌 %i 无法解锁所分配的密钥槽(密钥槽口令错误)。" #: src/utils_tools.c:277 #, c-format msgid "Token (type %s) cannot unlock assigned keyslot(s) (wrong keyslot passphrase)." -msgstr "" +msgstr "令牌(类型 %s)无法解锁所分配的密钥槽(密钥槽口令错误)。" #: src/utils_tools.c:280 #, c-format msgid "Token %i requires additional missing resource." -msgstr "" +msgstr "令牌 %i 需要额外的资源,但该资源缺失。" #: src/utils_tools.c:282 #, c-format msgid "Token (type %s) requires additional missing resource." -msgstr "" +msgstr "令牌(类型 %s)需要额外的资源,但该资源缺失。" #: src/utils_tools.c:285 #, c-format msgid "No usable token (type %s) is available." -msgstr "" +msgstr "没有可用的令牌(类型 %s)。" #: src/utils_tools.c:287 msgid "No usable token is available." -msgstr "" +msgstr "没有可用的令牌。" #: src/utils_tools.c:380 #, c-format @@ -3515,30 +3554,38 @@ msgstr "无法打开密钥文件 %s 以供写入。" msgid "Cannot write to keyfile %s." msgstr "无法写入密钥文件 %s。" +#: src/utils_tools.c:468 +msgid "Name is too long." +msgstr "名称过长。" + +#: src/utils_tools.c:471 +msgid "Name must not contain '/' character." +msgstr "名称不能包含“/”字符。" + #: src/utils_progress.c:61 #, c-format msgid "%02m%02s" -msgstr "" +msgstr "%02分%02秒" #: src/utils_progress.c:63 #, c-format msgid "%02h%02m%02s" -msgstr "" +msgstr "%02时%02分%02秒" #: src/utils_progress.c:65 #, c-format msgid "%02 days" -msgstr "" +msgstr "%02 天" #: src/utils_progress.c:92 src/utils_progress.c:125 #, c-format msgid "%4 %s written" -msgstr "" +msgstr "已写入 %4 %s" #: src/utils_progress.c:96 src/utils_progress.c:129 #, c-format msgid "speed %5.1f %s/s" -msgstr "" +msgstr "速度 %5.1f %s/s" #. TRANSLATORS: 'time', 'written' and 'speed' string are supposed #. to get translated as well. 'eol' is always new-line or empty. @@ -3547,7 +3594,7 @@ msgstr "" #: src/utils_progress.c:105 #, c-format msgid "Progress: %5.1f%%, ETA %s, %s, %s%s" -msgstr "" +msgstr "进度:%5.1f%%,预计剩余 %s,%s,%s%s" #. TRANSLATORS: 'time', 'written' and 'speed' string are supposed #. to get translated as well. See above @@ -3555,7 +3602,7 @@ msgstr "" #: src/utils_progress.c:137 #, c-format msgid "Finished, time %s, %s, %s\n" -msgstr "" +msgstr "已完成,用时 %s,%s,%s\n" #: src/utils_password.c:28 src/utils_password.c:59 #, c-format @@ -3576,58 +3623,62 @@ msgstr "" msgid "Password quality check failed: Bad passphrase (%s)" msgstr "密码质量检查失败:无效密码 (%s)" -#: src/utils_password.c:221 src/utils_password.c:235 +#: src/utils_password.c:197 +msgid "Read stopped at maximal interactive input length, passphrase can be trimmed." +msgstr "已在交互式输入的最大长度处停止读取,口令可能被截断。" + +#: src/utils_password.c:224 src/utils_password.c:238 msgid "Error reading passphrase from terminal." msgstr "从终端读取口令时出错。" -#: src/utils_password.c:233 +#: src/utils_password.c:236 msgid "Verify passphrase: " msgstr "确认密码:" -#: src/utils_password.c:240 +#: src/utils_password.c:243 msgid "Passphrases do not match." msgstr "口令不匹配。" -#: src/utils_password.c:278 +#: src/utils_password.c:281 msgid "Cannot use offset with terminal input." msgstr "不能将偏移量用于终端输入。" -#: src/utils_password.c:282 +#: src/utils_password.c:285 #, c-format msgid "Enter passphrase: " msgstr "输入口令:" -#: src/utils_password.c:285 +#: src/utils_password.c:288 #, c-format msgid "Enter passphrase for %s: " msgstr "输入 %s 的口令:" -#: src/utils_password.c:319 +#: src/utils_password.c:322 msgid "No key available with this passphrase." msgstr "此口令无可用的密钥。" -#: src/utils_password.c:321 +#: src/utils_password.c:324 msgid "No usable keyslot is available." -msgstr "" +msgstr "没有可用的密钥槽。" #: src/utils_luks.c:55 msgid "Can't do passphrase verification on non-tty inputs." msgstr "无法从非 TTY 输入验证密码。" -#: src/utils_luks.c:173 +#: src/utils_luks.c:179 #, c-format msgid "Failed to open file %s in read-only mode." msgstr "以只读模式打开文件 %s 失败。" -#: src/utils_luks.c:186 +#: src/utils_luks.c:193 msgid "Provide valid LUKS2 token JSON:\n" -msgstr "" +msgstr "请提供有效的 LUKS2 令牌 JSON:\n" -#: src/utils_luks.c:193 +#: src/utils_luks.c:200 msgid "Failed to read JSON file." msgstr "读取 JSON 文件失败。" -#: src/utils_luks.c:198 +#: src/utils_luks.c:205 msgid "" "\n" "Read interrupted." @@ -3635,12 +3686,12 @@ msgstr "" "\n" "读取被打断。" -#: src/utils_luks.c:239 +#: src/utils_luks.c:246 #, c-format msgid "Failed to open file %s in write mode." msgstr "未能打开文件 %s 以供写入。" -#: src/utils_luks.c:248 +#: src/utils_luks.c:255 msgid "" "\n" "Write interrupted." @@ -3648,27 +3699,26 @@ msgstr "" "\n" "写入被打断。" -#: src/utils_luks.c:252 +#: src/utils_luks.c:259 msgid "Failed to write JSON file." msgstr "写入 JSON 文件失败。" -#: src/utils_reencrypt.c:107 +#: src/utils_reencrypt.c:93 #, c-format msgid "Auto-detected active dm device '%s' for data device %s.\n" -msgstr "" +msgstr "已为数据设备 %2$s 自动检测到激活的 dm 设备“%1$s”。\n" -#: src/utils_reencrypt.c:111 -#, fuzzy, c-format -#| msgid "Failed to acquire write lock on device %s." +#: src/utils_reencrypt.c:97 +#, c-format msgid "Failed to auto-detect device %s holders." -msgstr "未能获取设备 %s 上的写入锁。" +msgstr "未能自动检测设备 %s 的持有者。" -#: src/utils_reencrypt.c:117 +#: src/utils_reencrypt.c:103 #, c-format msgid "Device %s is not a block device.\n" msgstr "设备 %s 不是块设备。\n" -#: src/utils_reencrypt.c:119 +#: src/utils_reencrypt.c:105 #, c-format msgid "" "Unable to decide if device %s is activated or not.\n" @@ -3676,174 +3726,184 @@ msgid "" "It may lead to data corruption if the device is actually activated.\n" "To run reencryption in online mode, use --active-name parameter instead.\n" msgstr "" +"无法判断设备 %s 是否已激活。\n" +"您确定要以离线模式继续重新加密吗?\n" +"如果该设备实际处于激活状态,这可能导致数据损坏。\n" +"若要以在线模式运行重新加密,请改用 --active-name 参数。\n" -#: src/utils_reencrypt.c:128 src/utils_reencrypt.c:261 +#: src/utils_reencrypt.c:114 src/utils_reencrypt.c:247 #, c-format msgid "" "Device %s is not a block device. Can not auto-detect if it is active or not.\n" "Use --force-offline-reencrypt to bypass the check and run in offline mode (dangerous!)." msgstr "" +"设备 %s 不是块设备。无法自动检测它是否处于激活状态。\n" +"请使用 --force-offline-reencrypt 跳过此检查并以离线模式运行(危险!)。" -#: src/utils_reencrypt.c:165 src/utils_reencrypt.c:208 -#: src/utils_reencrypt.c:218 +#: src/utils_reencrypt.c:151 src/utils_reencrypt.c:194 +#: src/utils_reencrypt.c:204 msgid "Requested --resilience option cannot be applied to current reencryption operation." -msgstr "" +msgstr "请求的 --resilience 选项无法应用于当前的重新加密操作。" -#: src/utils_reencrypt.c:190 +#: src/utils_reencrypt.c:176 msgid "Device is not in LUKS2 encryption. Conflicting option --encrypt." -msgstr "" +msgstr "设备未处于 LUKS2 加密过程中。选项 --encrypt 冲突。" -#: src/utils_reencrypt.c:195 +#: src/utils_reencrypt.c:181 msgid "Device is not in LUKS2 decryption. Conflicting option --decrypt." -msgstr "" +msgstr "设备未处于 LUKS2 解密过程中。选项 --decrypt 冲突。" -#: src/utils_reencrypt.c:202 +#: src/utils_reencrypt.c:188 msgid "Device is in reencryption using datashift resilience. Requested --resilience option cannot be applied." -msgstr "" +msgstr "设备正在使用 datashift 韧性(resilience)模式进行重新加密。请求的 --resilience 选项无法应用。" + +#: src/utils_reencrypt.c:283 src/utils_reencrypt.c:1927 +msgid "Cannot determine volume key size for LUKS without keyslots, please use --new-key-size option." +msgstr "无法确定不含密钥槽的 LUKS 的卷密钥大小,请使用 --new-key-size 选项。" -#: src/utils_reencrypt.c:280 +#: src/utils_reencrypt.c:438 msgid "Device requires reencryption recovery. Run repair first." -msgstr "" +msgstr "设备需要进行重新加密恢复。请先运行 repair。" -#: src/utils_reencrypt.c:294 +#: src/utils_reencrypt.c:452 #, c-format msgid "Device %s is already in LUKS2 reencryption. Do you wish to resume previously initialised operation?" -msgstr "" +msgstr "设备 %s 已处于 LUKS2 重新加密过程中。您希望恢复先前已初始化的操作吗?" -#: src/utils_reencrypt.c:403 +#: src/utils_reencrypt.c:563 msgid "Legacy LUKS2 reencryption is no longer supported." -msgstr "" +msgstr "不再支持旧版 LUKS2 重新加密。" -#: src/utils_reencrypt.c:408 +#: src/utils_reencrypt.c:568 msgid "Can not reencrypt LUKS2 device configured to use OPAL." -msgstr "" +msgstr "无法对配置为使用 OPAL 的 LUKS2 设备进行重新加密。" -#: src/utils_reencrypt.c:414 +#: src/utils_reencrypt.c:574 msgid "Reencryption of device with integrity profile is not supported." msgstr "不支持带有完整性 profile 信息的设备的重加密。" -#: src/utils_reencrypt.c:451 +#: src/utils_reencrypt.c:611 #, c-format msgid "" "Requested --sector-size % is incompatible with %s superblock\n" "(block size: % bytes) detected on device %s." msgstr "" +"请求的 --sector-size %1$ 与设备 %4$s 上检测到的 %2$s 超级块\n" +"(块大小:%3$ 字节)不兼容。" -#: src/utils_reencrypt.c:520 src/utils_reencrypt.c:1408 +#: src/utils_reencrypt.c:680 src/utils_reencrypt.c:2207 msgid "Encryption without detached header (--header) is not possible without data device size reduction (--reduce-device-size)." -msgstr "" +msgstr "若不缩减数据设备的大小(--reduce-device-size),则无法在没有分离标头(--header)的情况下进行加密。" -#: src/utils_reencrypt.c:527 +#: src/utils_reencrypt.c:689 msgid "Requested data offset must be less than or equal to half of --reduce-device-size parameter." -msgstr "" +msgstr "请求的数据偏移量必须小于或等于 --reduce-device-size 参数的一半。" -#: src/utils_reencrypt.c:537 +#: src/utils_reencrypt.c:699 #, c-format msgid "Adjusting --reduce-device-size value to twice the --offset % (sectors).\n" -msgstr "" +msgstr "正在将 --reduce-device-size 的值调整为 --offset %(扇区)的两倍。\n" -#: src/utils_reencrypt.c:567 -#, fuzzy, c-format -#| msgid "Requested header backup file %s already exists." +#: src/utils_reencrypt.c:729 +#, c-format msgid "Temporary header file %s already exists. Aborting." -msgstr "请求的标头备份文件 %s 已存在。" +msgstr "临时标头文件 %s 已存在。中止。" -#: src/utils_reencrypt.c:569 src/utils_reencrypt.c:576 -#, fuzzy, c-format -#| msgid "Cannot create header file %s." +#: src/utils_reencrypt.c:731 src/utils_reencrypt.c:738 +#, c-format msgid "Cannot create temporary header file %s." -msgstr "无法创建标头文件 %s。" +msgstr "无法创建临时标头文件 %s。" -#: src/utils_reencrypt.c:601 +#: src/utils_reencrypt.c:763 msgid "LUKS2 metadata size is larger than data shift value." -msgstr "" +msgstr "LUKS2 元数据大小大于数据移位(data shift)值。" -#: src/utils_reencrypt.c:638 -#, fuzzy, c-format -#| msgid "Failed to acquire read lock on device %s." +#: src/utils_reencrypt.c:802 +#, c-format msgid "Failed to place new header at head of device %s." -msgstr "未能获取设备 %s 的读取锁。" +msgstr "未能将新标头放置在设备 %s 的头部。" -#: src/utils_reencrypt.c:648 +#: src/utils_reencrypt.c:815 #, c-format msgid "%s/%s is now active and ready for online encryption.\n" -msgstr "" +msgstr "%s/%s 现已激活,可以进行在线加密。\n" -#: src/utils_reencrypt.c:684 -#, fuzzy, c-format -#| msgid "Device %s is not active." +#: src/utils_reencrypt.c:852 +#, c-format msgid "Active device %s is not LUKS2." -msgstr "设备 %s 未激活。" +msgstr "激活的设备 %s 不是 LUKS2。" -#: src/utils_reencrypt.c:712 +#: src/utils_reencrypt.c:880 msgid "Restoring original LUKS2 header." -msgstr "" +msgstr "正在恢复原始的 LUKS2 标头。" -#: src/utils_reencrypt.c:720 -#, fuzzy -#| msgid "Writing LUKS header to disk." +#: src/utils_reencrypt.c:888 msgid "Original LUKS2 header restore failed." -msgstr "正在将 LUKS 标头写入磁盘。" +msgstr "原始 LUKS2 标头恢复失败。" -#: src/utils_reencrypt.c:752 +#: src/utils_reencrypt.c:920 #, c-format msgid "Header file %s does not exist. Do you want to initialize LUKS2 decryption of device %s and export LUKS2 header to file %s?" -msgstr "" +msgstr "标头文件 %s 不存在。您想要初始化设备 %s 的 LUKS2 解密,并将 LUKS2 标头导出到文件 %s 吗?" -#: src/utils_reencrypt.c:802 -#, fuzzy -#| msgid "Failed to write activation flags to new header." +#: src/utils_reencrypt.c:963 msgid "Failed to add read/write permissions to exported header file." -msgstr "向新表头写入活动旗标失败。" +msgstr "未能为导出的标头文件添加读/写权限。" -#: src/utils_reencrypt.c:856 +#: src/utils_reencrypt.c:1017 #, c-format msgid "Reencryption initialization failed. Header backup is available in %s." -msgstr "" +msgstr "重新加密初始化失败。标头备份位于 %s。" -#: src/utils_reencrypt.c:884 +#: src/utils_reencrypt.c:1045 msgid "LUKS2 decryption is supported with detached header device only (with data offset set to 0)." -msgstr "" +msgstr "LUKS2 解密仅支持分离标头设备(且数据偏移量设为 0)。" -#: src/utils_reencrypt.c:1019 src/utils_reencrypt.c:1028 -#, fuzzy -#| msgid "Do not change key, no data area reencryption" -msgid "Not enough free keyslots for reencryption." -msgstr "不要更改密钥,无数据区重加密" +#: src/utils_reencrypt.c:1490 +msgid "No token could unlock the device." +msgstr "没有令牌能解锁该设备。" -#: src/utils_reencrypt.c:1049 src/utils_reencrypt_luks1.c:1047 -msgid "Key file can be used only with --key-slot or with exactly one key slot active." -msgstr "密钥文件只能在指定 --key-slot 时或有且只有一个槽启用时使用。" +#: src/utils_reencrypt.c:1522 src/utils_reencrypt.c:1531 +msgid "Not enough free keyslots for reencryption." +msgstr "没有足够的空闲密钥槽用于重新加密。" -#: src/utils_reencrypt.c:1058 src/utils_reencrypt_luks1.c:1094 -#: src/utils_reencrypt_luks1.c:1105 -#, fuzzy, c-format -#| msgid "Enter passphrase for key slot %u: " -msgid "Enter passphrase for key slot %d: " -msgstr "输入密钥槽 %u 的口令: " +#: src/utils_reencrypt.c:1562 +msgid "Key file or keyring key description can be used only with --key-slot or with exactly one key slot active." +msgstr "密钥文件或密钥环密钥描述只能在指定 --key-slot 时、或有且只有一个密钥槽处于活动状态时使用。" -#: src/utils_reencrypt.c:1070 +#: src/utils_reencrypt.c:1569 src/utils_reencrypt.c:1582 +#: src/utils_reencrypt_luks1.c:1092 src/utils_reencrypt_luks1.c:1103 #, c-format -msgid "Enter passphrase for key slot %u: " -msgstr "输入密钥槽 %u 的口令: " +msgid "Enter passphrase for key slot %d: " +msgstr "输入密钥槽 %d 的口令: " -#: src/utils_reencrypt.c:1122 +#: src/utils_reencrypt.c:1879 #, c-format msgid "Switching data encryption cipher to %s.\n" msgstr "将数据加密方法切换为 %s。\n" -#: src/utils_reencrypt.c:1176 +#: src/utils_reencrypt.c:1980 src/utils_reencrypt.c:2001 +msgid "Use --force-no-keyslots to reencrypt device with active keyslots by passing volume keys directly." +msgstr "若要通过直接传入卷密钥来重新加密带有活动密钥槽的设备,请使用 --force-no-keyslots。" + +#: src/utils_reencrypt.c:1996 +msgid "Option --new-volume-key-file must be paired with --new-key-size" +msgstr "选项 --new-volume-key-file 必须与 --new-key-size 配对使用" + +#: src/utils_reencrypt.c:2038 msgid "No data segment parameters changed. Reencryption aborted." -msgstr "" +msgstr "数据段参数没有变化。重新加密已中止。" -#: src/utils_reencrypt.c:1278 +#: src/utils_reencrypt.c:2075 msgid "" "Encryption sector size increase on offline device is not supported.\n" "Activate the device first or use --force-offline-reencrypt option (dangerous!)." msgstr "" +"不支持在离线设备上增大加密扇区大小。\n" +"请先激活该设备,或使用 --force-offline-reencrypt 选项(危险!)。" -#: src/utils_reencrypt.c:1318 src/utils_reencrypt_luks1.c:690 -#: src/utils_reencrypt_luks1.c:761 +#: src/utils_reencrypt.c:2117 src/utils_reencrypt_luks1.c:688 +#: src/utils_reencrypt_luks1.c:759 msgid "" "\n" "Reencryption interrupted." @@ -3851,67 +3911,67 @@ msgstr "" "\n" "重加密被中断。" -#: src/utils_reencrypt.c:1323 +#: src/utils_reencrypt.c:2122 msgid "Resuming LUKS reencryption in forced offline mode.\n" msgstr "正在强制脱机模式下恢复 LUKS 重新加密。\n" -#: src/utils_reencrypt.c:1346 +#: src/utils_reencrypt.c:2145 #, c-format msgid "Device %s contains broken LUKS metadata. Aborting operation." msgstr "设备 %s 包含损坏的 LUKS 元数据。中止操作。" -#: src/utils_reencrypt.c:1362 src/utils_reencrypt.c:1384 +#: src/utils_reencrypt.c:2161 src/utils_reencrypt.c:2183 #, c-format msgid "Device %s is already LUKS device. Aborting operation." msgstr "设备 %s 已经是 LUKS 设备。中止操作。" -#: src/utils_reencrypt.c:1390 +#: src/utils_reencrypt.c:2189 #, c-format msgid "Device %s is already in LUKS reencryption. Aborting operation." msgstr "设备 %s 已处于 LUKS 重新加密状态。中止操作。" -#: src/utils_reencrypt.c:1473 +#: src/utils_reencrypt.c:2272 msgid "LUKS2 decryption requires --header option." msgstr "LUKS2 解密需要 --header 选项。" -#: src/utils_reencrypt.c:1521 +#: src/utils_reencrypt.c:2320 msgid "Command requires device as argument." msgstr "命令需要设备及映射名作为参数。" -#: src/utils_reencrypt.c:1534 +#: src/utils_reencrypt.c:2333 #, c-format msgid "Conflicting versions. Device %s is LUKS1." msgstr "版本冲突。设备 %s 为 LUKS1。" -#: src/utils_reencrypt.c:1540 +#: src/utils_reencrypt.c:2339 #, c-format msgid "Conflicting versions. Device %s is in LUKS1 reencryption." msgstr "版本冲突。设备 %s 处于 LUKS1 重新加密状态。" -#: src/utils_reencrypt.c:1546 +#: src/utils_reencrypt.c:2345 #, c-format msgid "Conflicting versions. Device %s is LUKS2." msgstr "版本冲突。设备 %s 是 LUKS2。" -#: src/utils_reencrypt.c:1552 +#: src/utils_reencrypt.c:2351 #, c-format msgid "Conflicting versions. Device %s is in LUKS2 reencryption." msgstr "版本冲突。设备 %s 处于 LUKS2 重新加密状态。" -#: src/utils_reencrypt.c:1558 +#: src/utils_reencrypt.c:2357 msgid "LUKS2 reencryption already initialized. Aborting operation." msgstr "LUKS2 重新加密过程已初始化。正在中止操作。" -#: src/utils_reencrypt.c:1565 +#: src/utils_reencrypt.c:2364 msgid "Device reencryption not in progress." msgstr "未在进行设备重加密。" -#: src/utils_reencrypt_luks1.c:116 src/utils_blockdev.c:282 +#: src/utils_reencrypt_luks1.c:116 src/utils_blockdev.c:285 #, c-format msgid "Cannot exclusively open %s, device in use." msgstr "无法独占打开 %s,设备正在使用中。" -#: src/utils_reencrypt_luks1.c:130 src/utils_reencrypt_luks1.c:885 +#: src/utils_reencrypt_luks1.c:130 src/utils_reencrypt_luks1.c:883 msgid "Allocation of aligned memory failed." msgstr "分配对齐内存失败。" @@ -3934,11 +3994,11 @@ msgstr "无法写入设备 %s。" msgid "Cannot write reencryption log file." msgstr "无法写入重加密日志文件。" -#: src/utils_reencrypt_luks1.c:269 +#: src/utils_reencrypt_luks1.c:268 msgid "Cannot read reencryption log file." msgstr "无法读取重加密日志文件。" -#: src/utils_reencrypt_luks1.c:280 +#: src/utils_reencrypt_luks1.c:279 msgid "Wrong log format." msgstr "错误的日志格式。" @@ -3947,161 +4007,199 @@ msgstr "错误的日志格式。" msgid "Log file %s exists, resuming reencryption.\n" msgstr "日志文件 %s 存在,继续重加密。\n" -#: src/utils_reencrypt_luks1.c:356 +#: src/utils_reencrypt_luks1.c:354 msgid "Activating temporary device using old LUKS header." msgstr "正使用旧 LUKS 标头激活临时设备。" -#: src/utils_reencrypt_luks1.c:366 +#: src/utils_reencrypt_luks1.c:364 msgid "Activating temporary device using new LUKS header." msgstr "正使用新 LUKS 标头激活临时设备。" -#: src/utils_reencrypt_luks1.c:376 +#: src/utils_reencrypt_luks1.c:374 msgid "Activation of temporary devices failed." msgstr "激活临时设备失败。" # stat() 主要就是出来一个各种文件信息…… -#: src/utils_reencrypt_luks1.c:436 +#: src/utils_reencrypt_luks1.c:434 msgid "Failed to set data offset." msgstr "数据偏移设置失败。" # stat() 主要就是出来一个各种文件信息…… -#: src/utils_reencrypt_luks1.c:442 +#: src/utils_reencrypt_luks1.c:440 msgid "Failed to set metadata size." msgstr "元数据大小设置失败。" -#: src/utils_reencrypt_luks1.c:450 +#: src/utils_reencrypt_luks1.c:448 #, c-format msgid "New LUKS header for device %s created." msgstr "已创建设备 %s 的新 LUKS 标头。" -#: src/utils_reencrypt_luks1.c:487 +#: src/utils_reencrypt_luks1.c:485 #, c-format msgid "%s header backup of device %s created." msgstr "已创建 %s 标头备份(对应设备 %s)。" -#: src/utils_reencrypt_luks1.c:543 +#: src/utils_reencrypt_luks1.c:541 msgid "Creation of LUKS backup headers failed." msgstr "LUKS 备份标头创建失败。" -#: src/utils_reencrypt_luks1.c:672 +#: src/utils_reencrypt_luks1.c:670 #, c-format msgid "Cannot restore %s header on device %s." msgstr "无法恢复 %s 标头(在设备 %s 上)。" -#: src/utils_reencrypt_luks1.c:674 +#: src/utils_reencrypt_luks1.c:672 #, c-format msgid "%s header on device %s restored." msgstr "已恢复 %s 标头(在设备 %s 上)。" -#: src/utils_reencrypt_luks1.c:857 src/utils_reencrypt_luks1.c:863 +#: src/utils_reencrypt_luks1.c:855 src/utils_reencrypt_luks1.c:861 msgid "Cannot open temporary LUKS device." msgstr "无法打开临时 LUKS 设备。" -#: src/utils_reencrypt_luks1.c:868 src/utils_reencrypt_luks1.c:873 +#: src/utils_reencrypt_luks1.c:866 src/utils_reencrypt_luks1.c:871 msgid "Cannot get device size." msgstr "无法获取设备大小。" -#: src/utils_reencrypt_luks1.c:915 +#: src/utils_reencrypt_luks1.c:913 msgid "IO error during reencryption." msgstr "重加密时发生 IO 错误。" -#: src/utils_reencrypt_luks1.c:945 +#: src/utils_reencrypt_luks1.c:943 msgid "Provided UUID is invalid." msgstr "提供的 UUID 无效。" -#: src/utils_reencrypt_luks1.c:1171 +#: src/utils_reencrypt_luks1.c:1045 +msgid "Key file can be used only with --key-slot or with exactly one key slot active." +msgstr "密钥文件只能在指定 --key-slot 时或有且只有一个槽启用时使用。" + +#: src/utils_reencrypt_luks1.c:1169 msgid "Cannot open reencryption log file." msgstr "无法打开重加密日志文件。" -#: src/utils_reencrypt_luks1.c:1177 +#: src/utils_reencrypt_luks1.c:1175 msgid "No decryption in progress, provided UUID can be used only to resume suspended decryption process." msgstr "没有正在进行中的解密操作,提供的 UUID 仅能用于继续已挂起的解密操作。" -#: src/utils_reencrypt_luks1.c:1233 +#: src/utils_reencrypt_luks1.c:1231 #, c-format msgid "Reencryption will change: %s%s%s%s%s%s." msgstr "重加密会改变:%s%s%s%s%s%s。" -#: src/utils_reencrypt_luks1.c:1234 +#: src/utils_reencrypt_luks1.c:1232 msgid "volume key" msgstr "卷密钥" -#: src/utils_reencrypt_luks1.c:1236 +#: src/utils_reencrypt_luks1.c:1234 msgid "set hash to " msgstr "设置哈希值为 " -#: src/utils_reencrypt_luks1.c:1237 +#: src/utils_reencrypt_luks1.c:1235 msgid ", set cipher to " msgstr ",设定加密方法为 " -#: src/utils_blockdev.c:176 +#: src/utils_blockdev.c:179 #, c-format msgid "WARNING: Device %s already contains a '%s' partition signature.\n" msgstr "警告:设备%s已包含“%s”分区签名。\n" -#: src/utils_blockdev.c:184 +#: src/utils_blockdev.c:187 #, c-format msgid "WARNING: Device %s already contains a '%s' superblock signature.\n" msgstr "警告:设备%s已包含“%s”超级块签名。\n" -#: src/utils_blockdev.c:206 src/utils_blockdev.c:289 src/utils_blockdev.c:341 -#, fuzzy -#| msgid "Failed to initialise default LUKS2 keyslot parameters." +#: src/utils_blockdev.c:209 src/utils_blockdev.c:292 src/utils_blockdev.c:344 msgid "Failed to initialize device signature probes." -msgstr "初始化默认 LUKS2 密钥槽参数失败。" +msgstr "未能初始化设备签名探测。" # stat() 主要就是出来一个各种文件信息…… -#: src/utils_blockdev.c:269 -#, fuzzy, c-format -#| msgid "Failed to stat key file." +#: src/utils_blockdev.c:272 +#, c-format msgid "Failed to stat device %s." -msgstr "获取 (stat) 密钥文件信息失败。" +msgstr "获取 (stat) 设备 %s 的信息失败。" -#: src/utils_blockdev.c:284 -#, fuzzy, c-format -#| msgid "Cannot open keyfile %s for write." +#: src/utils_blockdev.c:287 +#, c-format msgid "Failed to open file %s in read/write mode." -msgstr "未能打开密钥文件 %s 以供写入。" +msgstr "以读/写模式打开文件 %s 失败。" -#: src/utils_blockdev.c:304 +#: src/utils_blockdev.c:307 #, c-format msgid "Existing '%s' partition signature on device %s will be wiped." -msgstr "" +msgstr "现有的“%1$s”分区签名(位于设备 %2$s 上)将被擦除。" -#: src/utils_blockdev.c:307 +#: src/utils_blockdev.c:310 #, c-format msgid "Existing '%s' superblock signature on device %s will be wiped." -msgstr "" +msgstr "现有的“%1$s”超级块签名(位于设备 %2$s 上)将被擦除。" -#: src/utils_blockdev.c:310 -#, fuzzy -#| msgid "Failed to acquire write device lock." +#: src/utils_blockdev.c:313 msgid "Failed to wipe device signature." -msgstr "未能获取写入设备锁。" +msgstr "擦除设备签名失败。" -#: src/utils_blockdev.c:317 +#: src/utils_blockdev.c:320 #, c-format msgid "Failed to probe device %s for a signature." -msgstr "" +msgstr "探测设备 %s 上的签名失败。" #: src/utils_args.c:52 -#, fuzzy, c-format -#| msgid "Invalid device size specification." +#, c-format msgid "Invalid size specification in parameter --%s." -msgstr "无效的设备大小指标。" +msgstr "参数 --%s 中的大小指标无效。" #: src/utils_args.c:112 -#, fuzzy, c-format -#| msgid "Option --allow-discards is allowed only for open operation.\n" +#, c-format msgid "Option --%s is not allowed with %s action." -msgstr "选项 --allow-discards 只适用于打开操作。\n" +msgstr "选项 --%s 不允许用于 %s 动作。" + +#: src/utils_key_description.c:66 +msgid "Type specification in --link-vk-to-keyring keyring specification is ignored." +msgstr "--link-vk-to-keyring 的密钥环规格中指定的类型将被忽略。" + +#: src/utils_key_description.c:131 +msgid "Key types have to be the same for both volume keys." +msgstr "两个卷密钥的密钥类型必须相同。" + +#: src/utils_key_description.c:136 +msgid "Both volume keys have to be linked to the same keyring." +msgstr "两个卷密钥必须链入同一个密钥环。" + +#: src/utils_key_description.c:146 +msgid "You need to supply more key names." +msgstr "您需要提供更多的密钥名称。" + +#: src/utils_key_description.c:150 +msgid "Invalid --link-vk-to-keyring value." +msgstr "--link-vk-to-keyring 的值无效。" + +#: src/utils_keyslot_check.c:114 +#, c-format +msgid "Keyslot %d binary data could be corrupted.\n" +msgstr "密钥槽 %d 的二进制数据可能已损坏。\n" + +#: src/utils_keyslot_check.c:124 +#, c-format +msgid " Suspected offset: 0x%\n" +msgstr " 可疑的偏移量:0x%\n" + +#: src/utils_keyslot_check.c:127 +msgid " Subsequent suspected offsets are suppressed.\n" +msgstr " 后续的可疑偏移量已省略。\n" + +#: src/utils_keyslot_check.c:178 src/utils_keyslot_check.c:183 +#, c-format +msgid "Keyslot %d cannot be read from the device." +msgstr "无法从设备读取密钥槽 %d。" + +#: src/utils_keyslot_check.c:194 +#, c-format +msgid "You can use hexdump -v -C -n 128 -s \"%s\" to inspect the data.\n" +msgstr "您可以使用 hexdump -v -C -n 128 -s \"%s\" 来检查数据。\n" # stat() 主要就是出来一个各种文件信息…… #: tokens/ssh/cryptsetup-ssh.c:110 -#, fuzzy -#| msgid "Failed to stat key file.\n" msgid "Failed to write ssh token json." -msgstr "获取 (stat) 密钥文件统计数据失败。\n" +msgstr "未能写入 ssh 令牌 json。" #: tokens/ssh/cryptsetup-ssh.c:128 msgid "" @@ -4112,6 +4210,12 @@ msgid "" "\n" "Note: The information provided when adding the token (SSH server address, user and paths) will be stored in the LUKS2 header in plaintext." msgstr "" +"用于借助连接到 SSH 服务器的令牌解锁 LUKS2 设备的实验性 cryptsetup 插件\v此插件目前只允许向已有的密钥槽添加令牌。\n" +"\n" +"指定的 SSH 服务器上,指定路径处必须存在一个密钥文件,其中含有设备上某个已有密钥槽的口令。\n" +"cryptsetup 将使用所提供的凭据,在用该令牌打开设备时获取密码。\n" +"\n" +"注意:添加令牌时提供的信息(SSH 服务器地址、用户和路径)将以明文形式存储在 LUKS2 标头中。" #: tokens/ssh/cryptsetup-ssh.c:138 msgid " " @@ -4261,6 +4365,41 @@ msgstr "主机上不允许使用公钥身份验证方法。\n" msgid "Public key authentication error: " msgstr "公钥认证错误:" +#~ msgid "Failed to link volume keys in user defined keyring." +#~ msgstr "在内核密钥环中链入密钥失败。" + +#~ msgid "Failed to unlink volume key from thread keyring." +#~ msgstr "在内核密钥环中断联卷密钥失败。" + +#~ msgid "Required kernel crypto interface not available." +#~ msgstr "未能找到所需的内核加密接口。" + +#~ msgid "Ensure you have algif_skcipher kernel module loaded." +#~ msgstr "请确定您已载入内核模块 algif_skcipher。" + +#~ msgid "Activation of partially decrypted BITLK device is not supported." +#~ msgstr "不支持激活部分解密的 BITLK 设备。" + +#~ msgid "Failed to read LUKS2 requirements." +#~ msgstr "读取 LUKS2 需求时失败。" + +#~ msgid "Warning: keyslot operation could fail as it requires more than available memory.\n" +#~ msgstr "警告:密钥槽操作可能会失败,因为它需要的内存超过可用内存。\n" + +#, fuzzy +#~| msgid "Failed to open key file.\n" +#~ msgid "Failed to get reencryption state." +#~ msgstr "打开 (open) 密钥文件失败。\n" + +#, fuzzy +#~| msgid "Failed to read passphrase from keyring (error %d)." +#~ msgid "Failed to read passphrase from keyring." +#~ msgstr "从密钥环读取口令失败(错误 %d)。" + +#, c-format +#~ msgid "Enter passphrase for key slot %u: " +#~ msgstr "输入密钥槽 %u 的口令: " + #, c-format #~ msgid "Cannot format device %s which is still in use." #~ msgstr "未能格式化正在使用的设备 %s。" @@ -4375,9 +4514,6 @@ msgstr "公钥认证错误:" #~ msgid "secs" #~ msgstr "秒" -#~ msgid "How often the input of the passphrase can be retried" -#~ msgstr "输入密码的最大重试频率" - #~ msgid "Align payload at sector boundaries - for luksFormat" #~ msgstr "于 个扇区边界处对其载荷数据 - 供 luks 格式用" @@ -4654,9 +4790,6 @@ msgstr "公钥认证错误:" #~ msgid "Read the journal encryption key from a file" #~ msgstr "从文件读取密钥。" -#~ msgid "Invalid journal size specification." -#~ msgstr "无效的日志大小指标。" - #, c-format #~ msgid "Setting LUKS2 offline reencrypt flag on device %s." #~ msgstr "正在设备 %s 上设定 LUKS2 离线重加密旗标。" @@ -4734,9 +4867,6 @@ msgstr "公钥认证错误:" #~ msgid "Only values between 1 MiB and 64 MiB allowed for reencryption block size." #~ msgstr "重加密块大小只能是 1 MiB 到 64 MiB 之间的值。" -#~ msgid "Option --new must be used together with --reduce-device-size or --header." -#~ msgstr "选项 --new 必须与 --reduce-device-size 或 --header 共用。" - #~ msgid "Option --keep-key can be used only with --hash, --iter-time or --pbkdf-force-iterations." #~ msgstr "选项 --keep-key 只能与 --hash、--iter-time 或 --pbkdf-force-iterations 共用。" From 4132165ffa1abc6021eda9713efd9ea8a0e72ca6 Mon Sep 17 00:00:00 2001 From: Petr Pisar Date: Fri, 4 Sep 2026 18:57:03 +0200 Subject: [PATCH 205/244] po: update cs.po (from translationproject.org) --- po/cs.po | 657 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 331 insertions(+), 326 deletions(-) diff --git a/po/cs.po b/po/cs.po index 4718425b3..8c650b82a 100644 --- a/po/cs.po +++ b/po/cs.po @@ -33,10 +33,10 @@ # msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.7-rc2\n" +"Project-Id-Version: cryptsetup 2.8.8-rc0\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2026-07-09 10:46+0200\n" -"PO-Revision-Date: 2026-07-11 17:03+02:00\n" +"POT-Creation-Date: 2026-09-02 13:18+0200\n" +"PO-Revision-Date: 2026-09-02 21:02+02:00\n" "Last-Translator: Petr Pisar \n" "Language-Team: Czech \n" "Language: cs\n" @@ -46,78 +46,78 @@ msgstr "" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: lib/libdevmapper.c:419 +#: lib/libdevmapper.c:422 msgid "Cannot initialize device-mapper, running as non-root user." msgstr "Nelze inicializovat device-mapper, nespuštěno superuživatelem." -#: lib/libdevmapper.c:422 +#: lib/libdevmapper.c:425 msgid "Cannot initialize device-mapper. Is dm_mod kernel module loaded?" msgstr "Nelze inicializovat device-mapper. Je jaderný modul dm_mod zaveden?" -#: lib/libdevmapper.c:1125 +#: lib/libdevmapper.c:1129 msgid "Requested deferred flag is not supported." msgstr "Požadovaný příznak odložení není podporován." -#: lib/libdevmapper.c:1194 +#: lib/libdevmapper.c:1198 #, c-format msgid "DM-UUID for device %s was truncated." msgstr "DM-UUID pro zařízení %s bylo zkráceno." -#: lib/libdevmapper.c:1598 +#: lib/libdevmapper.c:1602 msgid "Unknown dm target type." msgstr "Neznámý druh cíle DM." -#: lib/libdevmapper.c:1725 lib/libdevmapper.c:1731 lib/libdevmapper.c:1850 -#: lib/libdevmapper.c:1853 +#: lib/libdevmapper.c:1729 lib/libdevmapper.c:1735 lib/libdevmapper.c:1854 +#: lib/libdevmapper.c:1857 msgid "Requested dm-crypt performance options are not supported." msgstr "Požadované výkonnostní volby dm-cryptu nejsou podporovány." -#: lib/libdevmapper.c:1740 lib/libdevmapper.c:1746 lib/libdevmapper.c:1758 +#: lib/libdevmapper.c:1744 lib/libdevmapper.c:1750 lib/libdevmapper.c:1762 msgid "Requested dm-verity data corruption handling options are not supported." msgstr "Požadované volby, jak zacházet s poškozením dat dm-verity, nejsou podporovány." -#: lib/libdevmapper.c:1752 +#: lib/libdevmapper.c:1756 msgid "Requested dm-verity tasklets option is not supported." msgstr "Požadovaná volba taskletu dm-cryptu není podporována." -#: lib/libdevmapper.c:1764 +#: lib/libdevmapper.c:1768 msgid "Requested dm-verity FEC options are not supported." msgstr "Požadované FEC volby dm-cryptu nejsou podporovány." -#: lib/libdevmapper.c:1770 +#: lib/libdevmapper.c:1774 msgid "Requested data integrity options are not supported." msgstr "Požadované volby integrity dat nejsou podporovány." -#: lib/libdevmapper.c:1774 +#: lib/libdevmapper.c:1778 msgid "Requested sector_size option is not supported." msgstr "Požadovaná volba sector_size není podporována." -#: lib/libdevmapper.c:1779 +#: lib/libdevmapper.c:1783 msgid "The device size is not multiple of the requested sector size." msgstr "Velikost zařízení není násobkem požadované velikosti sektoru." -#: lib/libdevmapper.c:1783 +#: lib/libdevmapper.c:1787 msgid "Requested integrity_key_size option is not supported." msgstr "Požadovaná volba integrity_key_size není podporována." -#: lib/libdevmapper.c:1790 lib/libdevmapper.c:1796 +#: lib/libdevmapper.c:1794 lib/libdevmapper.c:1800 msgid "Requested automatic recalculation of integrity tags is not supported." msgstr "Požadovaný automatický přepočet značek integrity není podporován." -#: lib/libdevmapper.c:1802 lib/libdevmapper.c:1856 lib/libdevmapper.c:1859 -#: lib/luks2/luks2_json_metadata.c:2799 +#: lib/libdevmapper.c:1806 lib/libdevmapper.c:1860 lib/libdevmapper.c:1863 +#: lib/luks2/luks2_json_metadata.c:2791 msgid "Discard/TRIM is not supported." msgstr "Zahazování (TRIM) není podporováno." -#: lib/libdevmapper.c:1808 +#: lib/libdevmapper.c:1812 msgid "Requested dm-integrity bitmap mode is not supported." msgstr "Požadovaný režim bitmapy integrity DM není podporován." -#: lib/libdevmapper.c:1814 +#: lib/libdevmapper.c:1818 msgid "Requested dm-integrity inline mode is not supported." msgstr "Požadovaný režim inline integrity DM není podporován." -#: lib/libdevmapper.c:2870 +#: lib/libdevmapper.c:2877 #, c-format msgid "Failed to query dm-%s segment." msgstr "Dotaz na část dm-%s selhal." @@ -169,7 +169,7 @@ msgstr "Implementaci šifrovacího generátoru náhodných čísel nelze inicial msgid "Cannot initialize crypto backend." msgstr "Implementaci šifrování nelze inicializovat." -#: lib/setup.c:308 lib/setup.c:2769 lib/verity/verity.c:109 +#: lib/setup.c:308 lib/setup.c:2779 lib/verity/verity.c:109 #, c-format msgid "Hash algorithm %s not supported." msgstr "Hašovací algoritmus %s není podporován." @@ -183,7 +183,7 @@ msgstr "Chyba zpracování klíče (za použití haše %s)." msgid "Cannot determine device type. Incompatible activation of device?" msgstr "Druh zařízení nelze určit. Nekompatibilní aktivace zařízení?" -#: lib/setup.c:398 lib/setup.c:4177 +#: lib/setup.c:398 lib/setup.c:4193 msgid "This operation is supported only for LUKS device." msgstr "Tato operace je podporována jen u zařízení LUKS." @@ -205,7 +205,7 @@ msgstr "Pozice klíče %d není platná, prosím, vyberte číslo mezi 0 a %d." msgid "Key slot %d is full, please select another one." msgstr "Pozice klíče %d je obsazena, prosím, vyberte jinou." -#: lib/setup.c:534 lib/setup.c:3878 +#: lib/setup.c:534 lib/setup.c:3888 msgid "Device size is not aligned to device logical block size." msgstr "Velikost zařízení není zarovnaná na velikost logického sektoru zařízení." @@ -214,7 +214,7 @@ msgstr "Velikost zařízení není zarovnaná na velikost logického sektoru za msgid "Header detected but device %s is too small." msgstr "Nalezena hlavička, ale zařízení %s je příliš malé." -#: lib/setup.c:672 lib/setup.c:3763 lib/setup.c:5272 +#: lib/setup.c:672 lib/setup.c:3773 lib/setup.c:5288 #: lib/luks2/luks2_reencrypt.c:3949 lib/luks2/luks2_reencrypt.c:4438 msgid "This operation is not supported for this device type." msgstr "Tato operace není na zařízení tohoto typu podporována." @@ -227,557 +227,557 @@ msgstr "Zakázaná operace spolu s probíhajícím přešifrování." msgid "Failed to rollback LUKS2 metadata in memory." msgstr "Nahrání původních metadat LUKS2 do paměti selhalo." -#: lib/setup.c:896 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 +#: lib/setup.c:896 lib/luks1/keymanage.c:241 lib/luks1/keymanage.c:519 #: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 #: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 #: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2954 -#: src/cryptsetup.c:3022 src/utils_reencrypt.c:2284 +#: src/cryptsetup.c:3022 src/utils_reencrypt.c:2310 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." msgstr "Zařízení %s není platným zařízením LUKS." -#: lib/setup.c:899 lib/luks1/keymanage.c:517 +#: lib/setup.c:899 lib/luks1/keymanage.c:522 #, c-format msgid "Unsupported LUKS version %d." msgstr "Nepodporovaná verze LUKS %d." -#: lib/setup.c:1273 +#: lib/setup.c:1279 #, c-format msgid "No known cipher specification pattern detected for active device %s." msgstr "Na aktivním zařízení %s nebyl nalezen žádný známý vzorek určující šifrování." -#: lib/setup.c:1518 lib/setup.c:3510 lib/setup.c:3602 lib/setup.c:3614 -#: lib/setup.c:3786 lib/setup.c:5850 +#: lib/setup.c:1528 lib/setup.c:3520 lib/setup.c:3612 lib/setup.c:3624 +#: lib/setup.c:3796 lib/setup.c:5866 #, c-format msgid "Device %s is not active." msgstr "Zařízení %s není aktivní." -#: lib/setup.c:1535 +#: lib/setup.c:1545 #, c-format msgid "Underlying device for crypt device %s disappeared." msgstr "Zařízení nižší úrovně pod šifrovaným zařízením %s zmizelo." -#: lib/setup.c:1617 +#: lib/setup.c:1627 msgid "Invalid plain crypt parameters." msgstr "Neplatné parametry plain šifry." -#: lib/setup.c:1622 lib/setup.c:2672 +#: lib/setup.c:1632 lib/setup.c:2682 msgid "Invalid key size." msgstr "Neplatná velikost klíče." -#: lib/setup.c:1627 lib/setup.c:2677 lib/setup.c:2882 +#: lib/setup.c:1637 lib/setup.c:2687 lib/setup.c:2892 msgid "UUID is not supported for this crypt type." msgstr "UUID není na šifře tohoto typu podporováno." -#: lib/setup.c:1632 lib/setup.c:2682 +#: lib/setup.c:1642 lib/setup.c:2692 msgid "Detached metadata device is not supported for this crypt type." msgstr "Zařízení s oddělenými metadaty není na šifře tohoto typu podporováno." -#: lib/setup.c:1642 lib/setup.c:1890 lib/luks2/luks2_reencrypt.c:3035 +#: lib/setup.c:1652 lib/setup.c:1900 lib/luks2/luks2_reencrypt.c:3035 #: src/cryptsetup.c:1492 src/cryptsetup.c:3761 msgid "Unsupported encryption sector size." msgstr "Nepodporovaná velikost šifrovaného sektoru." -#: lib/setup.c:1650 lib/setup.c:1919 lib/setup.c:3872 +#: lib/setup.c:1660 lib/setup.c:1929 lib/setup.c:3882 msgid "Device size is not aligned to requested sector size." msgstr "Velikost zařízení není zarovnaná na požadovanou velikost sektoru." -#: lib/setup.c:1702 lib/setup.c:1954 lib/setup.c:2331 +#: lib/setup.c:1712 lib/setup.c:1964 lib/setup.c:2341 msgid "Can't format LUKS without device." msgstr "LUKS nelze bez zařízení naformátovat." -#: lib/setup.c:1707 lib/setup.c:1959 +#: lib/setup.c:1717 lib/setup.c:1969 #, c-format msgid "Zoned device %s cannot be used for LUKS header." msgstr "Zónové zařízení %s nelze použít pro hlavičku LUKS." -#: lib/setup.c:1714 lib/setup.c:1966 lib/setup.c:2337 +#: lib/setup.c:1724 lib/setup.c:1976 lib/setup.c:2347 msgid "Requested data alignment is not compatible with data offset." msgstr "Požadované zarovnání dat není slučitelné s polohou dat." -#: lib/setup.c:1754 lib/setup.c:1984 +#: lib/setup.c:1764 lib/setup.c:1994 msgid "WARNING: DAX device can corrupt data as it does not guarantee atomic sector updates.\n" msgstr "POZOR: Zařízené DAX může poškodit data, protože nezaručuje atomické aktualizace sektorů.\n" -#: lib/setup.c:1792 lib/setup.c:2091 lib/setup.c:2112 lib/setup.c:2520 -#: lib/setup.c:2567 lib/setup.c:2899 +#: lib/setup.c:1802 lib/setup.c:2101 lib/setup.c:2122 lib/setup.c:2530 +#: lib/setup.c:2577 lib/setup.c:2909 #, c-format msgid "Cannot wipe header on device %s." msgstr "Ze zařízení %s nelze odstranit hlavičku." -#: lib/setup.c:1805 lib/setup.c:2164 +#: lib/setup.c:1815 lib/setup.c:2174 #, c-format msgid "Device %s is too small for activation, there is no remaining space for data.\n" msgstr "Zařízení %s je na aktivaci příliš malé. Nezbývá žádné místo pro data.\n" -#: lib/setup.c:1846 +#: lib/setup.c:1856 msgid "Volume key is too small for encryption with integrity extensions." msgstr "Klíč svazku je příliš malý na šifrovaní s rozšířeními pro integritu." -#: lib/setup.c:1850 +#: lib/setup.c:1860 msgid "Integrity key size is too small." msgstr "Velikost klíče integrity je příliš malý." -#: lib/setup.c:1859 +#: lib/setup.c:1869 #, c-format msgid "Cipher %s-%s (key size %zd bits) is not available." msgstr "Šifra %s-%s (velikost klíče %zd bitů) není dostupná." -#: lib/setup.c:1900 +#: lib/setup.c:1910 msgid "WARNING: The device activation will fail, dm-crypt is missing support for requested encryption sector size.\n" msgstr "POZOR: Aktivace zařízení selže, dm-crypt nepodporuje požadovanou velikost šifrovaného sektoru.\n" -#: lib/setup.c:2094 lib/setup.c:2461 lib/setup.c:2523 lib/utils_device.c:906 +#: lib/setup.c:2104 lib/setup.c:2471 lib/setup.c:2533 lib/utils_device.c:906 #: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3074 #: lib/luks2/luks2_reencrypt.c:4498 #, c-format msgid "Device %s is too small." msgstr "Zařízení %s je příliš malé." -#: lib/setup.c:2105 lib/setup.c:2144 lib/setup.c:2560 lib/setup.c:2618 +#: lib/setup.c:2115 lib/setup.c:2154 lib/setup.c:2570 lib/setup.c:2628 #, c-format msgid "Cannot format device %s in use." msgstr "Zařízení %s, které se používá, nelze formátovat." -#: lib/setup.c:2108 lib/setup.c:2147 lib/setup.c:2563 lib/setup.c:2621 +#: lib/setup.c:2118 lib/setup.c:2157 lib/setup.c:2573 lib/setup.c:2631 #, c-format msgid "Cannot format device %s, permission denied." msgstr "Zařízení %s nelze formátovat, povolení zamítnuto." # FIXME "format integrity" is nonsense -#: lib/setup.c:2132 lib/setup.c:2590 lib/setup.c:2972 +#: lib/setup.c:2142 lib/setup.c:2600 lib/setup.c:2982 #, c-format msgid "Cannot format integrity for device %s." msgstr "Zařízení %s není možné formátovat integritu." -#: lib/setup.c:2151 lib/setup.c:2629 +#: lib/setup.c:2161 lib/setup.c:2639 #, c-format msgid "Cannot format device %s." msgstr "Zařízení %s nelze formátovat." -#: lib/setup.c:2194 +#: lib/setup.c:2204 msgid "Cannot get OPAL alignment parameters." msgstr "Parametry zarovnání Opal nelze získat." -#: lib/setup.c:2206 +#: lib/setup.c:2216 msgid "Bogus OPAL logical block size." msgstr "Chybná velikost logického bloku Opal." -#: lib/setup.c:2211 lib/luks2/hw_opal/hw_opal.c:305 +#: lib/setup.c:2221 lib/luks2/hw_opal/hw_opal.c:305 msgid "Bogus OPAL logical block size differs from device block size." msgstr "Chybná velikost logického bloku Opal se liší od velikosti bloku zařízení." -#: lib/setup.c:2217 +#: lib/setup.c:2227 msgid "Requested data offset is not compatible with OPAL block size." msgstr "Požadovaná poloha dat není slučitelná s velikostí bloku Opal." -#: lib/setup.c:2224 +#: lib/setup.c:2234 msgid "Requested data alignment is not compatible with OPAL alignment." msgstr "Požadované zarovnání dat není slučitelné se zarovnáním Opal." -#: lib/setup.c:2244 +#: lib/setup.c:2254 msgid "Data offset does not satisfy OPAL alignment requirements." msgstr "Poloha dat nesplňuje požadavky Opal na zarovnání." -#: lib/setup.c:2257 +#: lib/setup.c:2267 msgid "Requested data alignment does not satisfy locking range alignment requirements." msgstr "Požadované zarovnání dat nesplňuje požadavky na zarovnání uzamykatelné oblasti." # TODO: Pluralize -#: lib/setup.c:2471 +#: lib/setup.c:2481 #, c-format msgid "Compensating device size by % sectors to align it with OPAL alignment granularity." msgstr "Velikost zařízení byla dorovnána % sektory, aby lícovala s granularitou zarovnání Opal." -#: lib/setup.c:2531 lib/setup.c:4260 lib/setup.c:4466 lib/utils_wipe.c:356 -#: lib/luks2/luks2_json_metadata.c:2742 lib/luks2/luks2_json_metadata.c:3017 +#: lib/setup.c:2541 lib/setup.c:4276 lib/setup.c:4482 lib/utils_wipe.c:356 +#: lib/luks2/luks2_json_metadata.c:2734 lib/luks2/luks2_json_metadata.c:3009 #, c-format msgid "Failed to acquire OPAL lock on device %s." msgstr "Získání zámku Opal na zařízení %s selhalo." -#: lib/setup.c:2541 +#: lib/setup.c:2551 msgid "Incorrect OPAL Admin key." msgstr "Nesprávný klíč správce Opal." -#: lib/setup.c:2543 +#: lib/setup.c:2553 msgid "Cannot setup OPAL segment." msgstr "Část Opal nelze nastavit." -#: lib/setup.c:2625 +#: lib/setup.c:2635 #, c-format msgid "Cannot format device %s, OPAL device seems to be fully write-protected now." msgstr "Zařízení %s nelze formátovat, zařízení Opal je asi zcela chráněno proti zápisu." -#: lib/setup.c:2627 +#: lib/setup.c:2637 msgid "This is perhaps a bug in firmware. Run OPAL PSID reset and reconnect for recovery." msgstr "Toto je snad chyba ve firmwaru. Resetujte Opal zařízení pomocí PSID a znovu jej zapojte." -#: lib/setup.c:2647 +#: lib/setup.c:2657 #, c-format msgid "Locking range %d reset on device %s failed." msgstr "Reset uzamykatelné oblasti %d na zařízení %s selhal." -#: lib/setup.c:2667 +#: lib/setup.c:2677 msgid "Can't format LOOPAES without device." msgstr "LOOPAES nelze bez zařízení naformátovat." -#: lib/setup.c:2712 +#: lib/setup.c:2722 msgid "Can't format VERITY without device." msgstr "VERITY nelze bez zařízení naformátovat." -#: lib/setup.c:2723 lib/verity/verity.c:88 +#: lib/setup.c:2733 lib/verity/verity.c:88 #, c-format msgid "Unsupported VERITY hash type %d." msgstr "Nepodporovaný druh VERITY haše %d." -#: lib/setup.c:2729 lib/verity/verity.c:96 +#: lib/setup.c:2739 lib/verity/verity.c:96 msgid "Unsupported VERITY block size." msgstr "Nepodporovaná velikost bloku VERITY." -#: lib/setup.c:2734 lib/verity/verity.c:61 +#: lib/setup.c:2744 lib/verity/verity.c:61 msgid "Unsupported VERITY hash offset." msgstr "Nepodporovaná poloha haše VERITY." -#: lib/setup.c:2739 +#: lib/setup.c:2749 msgid "Unsupported VERITY FEC offset." msgstr "Nepodporovaná poloha VERITY FEC." -#: lib/setup.c:2763 +#: lib/setup.c:2773 msgid "Data area overlaps with hash area." msgstr "Oblast dat se překrývá s oblastí haše." -#: lib/setup.c:2788 +#: lib/setup.c:2798 msgid "Hash area overlaps with FEC area." msgstr "Oblast FEC se překrývá s oblastí haše." -#: lib/setup.c:2795 +#: lib/setup.c:2805 msgid "Data area overlaps with FEC area." msgstr "Oblast dat se překrývá s oblastí FEC." -#: lib/setup.c:2887 +#: lib/setup.c:2897 msgid "Integrity key size mismatch." msgstr "Velikost klíče integrity neodpovídá." -#: lib/setup.c:2938 +#: lib/setup.c:2948 #, c-format msgid "WARNING: Requested tag size %d bytes differs from %s size output (%d bytes).\n" msgstr "POZOR: Požadovaná velikost značky %d bajtů se liší od výstupu velikosti %s (%d bajtů).\n" -#: lib/setup.c:3051 lib/setup.c:3153 +#: lib/setup.c:3061 lib/setup.c:3163 #, c-format msgid "Unknown or unsupported device type %s requested." msgstr "Požadován neznámý nebo nepodporovaný typ zařízení %s." -#: lib/setup.c:3067 +#: lib/setup.c:3077 #, c-format msgid "Device %s does not provide inline integrity data fields." msgstr "Zařízení %s neposkytuje položky pro inline integritu dat." -#: lib/setup.c:3073 +#: lib/setup.c:3083 #, c-format msgid "Inline tag size % [bytes] is larger than % provided by device %s." msgstr "Velikost inline značky % bajtů je větší než % poskytovaných zařízením %s." -#: lib/setup.c:3088 +#: lib/setup.c:3098 #, c-format msgid "Sector must be the same as device hardware sector (%zu bytes)." msgstr "Sektor musí být stejný jako hardwarový sektor zařízení (%zu bajtů)." -#: lib/setup.c:3518 lib/setup.c:3607 lib/setup.c:3620 +#: lib/setup.c:3528 lib/setup.c:3617 lib/setup.c:3630 #, c-format msgid "Unsupported parameters on device %s." msgstr "Nepodporované parametry na zařízení %s." -#: lib/setup.c:3524 lib/setup.c:3627 lib/luks2/luks2_reencrypt.c:2929 +#: lib/setup.c:3534 lib/setup.c:3637 lib/luks2/luks2_reencrypt.c:2929 #: lib/luks2/luks2_reencrypt.c:3198 lib/luks2/luks2_reencrypt.c:3595 #, c-format msgid "Mismatching parameters on device %s." msgstr "Neodpovídající parametry na zařízení %s." -#: lib/setup.c:3650 +#: lib/setup.c:3660 msgid "Crypt devices mismatch." msgstr "Zařízení dmcryptu si neodpovídají." -#: lib/setup.c:3682 lib/setup.c:3687 lib/luks2/luks2_reencrypt.c:2413 +#: lib/setup.c:3692 lib/setup.c:3697 lib/luks2/luks2_reencrypt.c:2413 #: lib/luks2/luks2_reencrypt.c:2945 lib/luks2/luks2_reencrypt.c:4237 #, c-format msgid "Failed to reload device %s." msgstr "Zařízení %s nebylo možné znovu zavést." -#: lib/setup.c:3693 lib/setup.c:3699 lib/luks2/luks2_reencrypt.c:2383 +#: lib/setup.c:3703 lib/setup.c:3709 lib/luks2/luks2_reencrypt.c:2383 #: lib/luks2/luks2_reencrypt.c:2390 lib/luks2/luks2_reencrypt.c:2959 #, c-format msgid "Failed to suspend device %s." msgstr "Zařízení %s nebylo možné pozastavit." -#: lib/setup.c:3705 lib/luks2/luks2_reencrypt.c:2397 +#: lib/setup.c:3715 lib/luks2/luks2_reencrypt.c:2397 #: lib/luks2/luks2_reencrypt.c:2980 lib/luks2/luks2_reencrypt.c:4150 #: lib/luks2/luks2_reencrypt.c:4241 #, c-format msgid "Failed to resume device %s." msgstr "Zařízení %s nebylo možné probudit." -#: lib/setup.c:3720 +#: lib/setup.c:3730 #, c-format msgid "Fatal error while reloading device %s (on top of device %s)." msgstr "Nepřekonatelná chyba při zavádění zařízení %s (nad zařízením %s)." -#: lib/setup.c:3723 lib/setup.c:3725 +#: lib/setup.c:3733 lib/setup.c:3735 #, c-format msgid "Failed to switch device %s to dm-error." msgstr "Zařízení %s nebylo možné přepnout do dm-error." -#: lib/setup.c:3768 +#: lib/setup.c:3778 msgid "Can not resize LUKS2 device with static size." msgstr "Zařízení LUKS2 se statickou velikostí nelze změnit velikost." -#: lib/setup.c:3773 +#: lib/setup.c:3783 msgid "Resize of LUKS2 device with integrity protection is not supported." msgstr "Změna velikosti zařízení LUKS2 s ochranou integrity není podporována." -#: lib/setup.c:3819 +#: lib/setup.c:3829 msgid "Cannot resize loop device." msgstr "Zařízení zpětné smyčky nelze změnit velikost." -#: lib/setup.c:3863 +#: lib/setup.c:3873 msgid "WARNING: Maximum size already set or kernel doesn't support resize.\n" msgstr "" "POZOR: Maximální velikost je již nastavena nebo změna velikosti není jádrem\n" "podporována.\n" -#: lib/setup.c:3929 +#: lib/setup.c:3939 msgid "Resize failed, the kernel doesn't support it." msgstr "Změna velikosti selhala, jádro ji nepodporuje." -#: lib/setup.c:3961 +#: lib/setup.c:3971 msgid "Do you really want to change UUID of device?" msgstr "Opravdu chcete změnit UUID zařízení?" -#: lib/setup.c:4053 +#: lib/setup.c:4061 lib/setup.c:4069 msgid "Header backup file does not contain compatible LUKS header." msgstr "Soubor se zálohou hlavičky neobsahuje kompatibilní hlavičku LUKS." -#: lib/setup.c:4160 +#: lib/setup.c:4176 #, c-format msgid "Volume %s is not active." msgstr "Svazek %s není aktivní." -#: lib/setup.c:4215 +#: lib/setup.c:4231 #, c-format msgid "Volume %s is already suspended." msgstr "Svazek %s je již uspán." -#: lib/setup.c:4241 +#: lib/setup.c:4257 #, c-format msgid "Suspend is not supported for device %s." msgstr "Uspání není na zařízení %s podporováno." -#: lib/setup.c:4243 lib/setup.c:4251 +#: lib/setup.c:4259 lib/setup.c:4267 #, c-format msgid "Error during suspending device %s." msgstr "Chyba při uspávání zařízení %s." -#: lib/setup.c:4266 +#: lib/setup.c:4282 #, c-format msgid "Device %s was suspended but hardware OPAL device cannot be locked." msgstr "Zařízení %s bylo uspáno, ale hardwarové zařízení Opal nelze uzamknout." -#: lib/setup.c:4297 lib/setup.c:4491 +#: lib/setup.c:4313 lib/setup.c:4507 #, c-format msgid "Resume is not supported for device %s." msgstr "Probuzení není na zařízení %s podporováno." -#: lib/setup.c:4299 lib/setup.c:4481 lib/setup.c:4493 +#: lib/setup.c:4315 lib/setup.c:4497 lib/setup.c:4509 #, c-format msgid "Error during resuming device %s." msgstr "Chyba při probouzení zařízení %s." -#: lib/setup.c:4335 +#: lib/setup.c:4351 msgid "Failed to unlink volume key from user specified keyring." msgstr "Z klíčenky zadané uživatelem se nepodařilo odpojit klíč svazku." -#: lib/setup.c:4457 lib/setup.c:5637 +#: lib/setup.c:4473 lib/setup.c:5653 msgid "Failed to link volume key in user defined keyring." msgstr "Do uživatelem zadané klíčenky se nepodařilo přidat klíč svazku." -#: lib/setup.c:4556 src/cryptsetup.c:2722 +#: lib/setup.c:4572 src/cryptsetup.c:2722 #, c-format msgid "Volume %s is not suspended." msgstr "Svazek %s není uspán." -#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1856 +#: lib/setup.c:4683 lib/setup.c:7326 lib/setup.c:7348 src/cryptsetup.c:1856 #: src/cryptsetup.c:2260 src/cryptsetup.c:2278 src/utils_reencrypt.c:306 -#: src/utils_reencrypt.c:1969 +#: src/utils_reencrypt.c:1995 msgid "Volume key does not match the volume." msgstr "Heslo svazku neodpovídá svazku." -#: lib/setup.c:4821 +#: lib/setup.c:4837 msgid "Failed to swap new key slot." msgstr "Záměna novou pozicí klíče se nezdařila." -#: lib/setup.c:4919 +#: lib/setup.c:4935 #, c-format msgid "Key slot %d is invalid." msgstr "Pozice klíče %d je neplatná." -#: lib/setup.c:4925 src/cryptsetup.c:1977 src/cryptsetup.c:2437 +#: lib/setup.c:4941 src/cryptsetup.c:1977 src/cryptsetup.c:2437 #: src/cryptsetup.c:3122 src/cryptsetup.c:3182 #, c-format msgid "Keyslot %d is not active." msgstr "Pozice klíče %d není aktivní." -#: lib/setup.c:4944 +#: lib/setup.c:4960 msgid "Device header overlaps with data area." msgstr "Hlavička zařízení se překrývá s datovou oblastí." -#: lib/setup.c:5165 +#: lib/setup.c:5181 msgid "Reencryption in-progress. Cannot activate device." msgstr "Přešifrování již probíhá. Zařízení nelze aktivovat." -#: lib/setup.c:5167 lib/luks2/luks2_json_metadata.c:2913 +#: lib/setup.c:5183 lib/luks2/luks2_json_metadata.c:2905 #: lib/luks2/luks2_reencrypt.c:3726 msgid "Failed to get reencryption lock." msgstr "Získání zámku pro přešifrování selhalo." -#: lib/setup.c:5189 +#: lib/setup.c:5205 msgid "LUKS2 reencryption recovery using volume key(s) failed." msgstr "Obnova přešifrování LUKS2 pomocí klíčů svazku selhala." -#: lib/setup.c:5325 +#: lib/setup.c:5341 #, c-format msgid "Device %s already exists." msgstr "Zařízení %s již existuje." -#: lib/setup.c:5332 +#: lib/setup.c:5348 #, c-format msgid "Cannot use device %s, name is invalid or still in use." msgstr "Zařízení %s nelze použít. Název není platný nebo zařízení se stále používá." -#: lib/setup.c:5344 +#: lib/setup.c:5360 msgid "Reencryption volume keys do not match the volume." msgstr "Klíče pro přešifrování svazku neodpovídají svazku." -#: lib/setup.c:5361 +#: lib/setup.c:5377 msgid "Incorrect volume key specified for plain device." msgstr "Byl zadán neplatný klíč svazku." -#: lib/setup.c:5387 lib/setup.c:5448 +#: lib/setup.c:5403 lib/setup.c:5464 msgid "Device type is not properly initialized." msgstr "Typ zařízení není řádně inicializován." -#: lib/setup.c:5486 +#: lib/setup.c:5502 msgid "Kernel keyring is not supported by the kernel." msgstr "Jaderná klíčenka není jádrem podporována." -#: lib/setup.c:5490 +#: lib/setup.c:5506 msgid "Kernel keyring missing: required for passing signature to kernel." msgstr "Jaderná klíčenka chybí: je potřeba pro předání podpisu do jádra." -#: lib/setup.c:5545 +#: lib/setup.c:5561 #, c-format msgid "Cannot use keyring key %s." msgstr "Klíčem klíčenky %s nelze použít." -#: lib/setup.c:5758 +#: lib/setup.c:5774 msgid "Incorrect root hash specified for verity device." msgstr "K zařízení VERITY byl zadán neplatný kořenový haš." -#: lib/setup.c:5799 lib/setup.c:5824 +#: lib/setup.c:5815 lib/setup.c:5840 msgid "OPAL does not support deferred deactivation." msgstr "Opal nepodporuje odloženou deaktivaci." -#: lib/setup.c:5814 lib/setup.c:5845 lib/luks2/luks2_json_metadata.c:2978 +#: lib/setup.c:5830 lib/setup.c:5861 lib/luks2/luks2_json_metadata.c:2970 #: src/utils_reencrypt.c:89 #, c-format msgid "Device %s is still in use." msgstr "Zařízení %s se stále používá." -#: lib/setup.c:5832 +#: lib/setup.c:5848 #, c-format msgid "Could not cancel deferred remove from device %s." msgstr "Odložené odebrání zařízení %s nebylo možné zrušit." -#: lib/setup.c:5854 +#: lib/setup.c:5870 #, c-format msgid "Invalid device %s." msgstr "Neplatné zařízení %s." -#: lib/setup.c:6001 +#: lib/setup.c:6017 msgid "Volume key buffer too small." msgstr "Vyhrazená paměť pro klíč svazku je příliš malá." -#: lib/setup.c:6012 +#: lib/setup.c:6028 msgid "Cannot retrieve volume key for LUKS2 device." msgstr "Nelze získat klíč svazku pro zařízení LUKS2." -#: lib/setup.c:6021 +#: lib/setup.c:6037 msgid "Cannot retrieve volume key for LUKS1 device." msgstr "Nelze získat klíč svazku pro zařízení LUKS1." -#: lib/setup.c:6035 +#: lib/setup.c:6051 msgid "Cannot retrieve volume key for plain device." msgstr "Nelze získat klíč svazku pro otevřené zařízení." -#: lib/setup.c:6043 +#: lib/setup.c:6059 msgid "Cannot retrieve root hash for verity device." msgstr "K zařízení VERITY nelze získat kořenový otisk." -#: lib/setup.c:6052 +#: lib/setup.c:6068 msgid "Cannot retrieve volume key for BITLK device." msgstr "Nelze získat klíč svazku pro zařízení BITLK." -#: lib/setup.c:6057 +#: lib/setup.c:6073 msgid "Cannot retrieve volume key for FVAULT2 device." msgstr "Nelze získat klíč svazku pro zařízení FVAULT2." -#: lib/setup.c:6059 +#: lib/setup.c:6075 #, c-format msgid "This operation is not supported for %s crypt device." msgstr "Na šifrovaném zařízení %s není tato operace podporována." -#: lib/setup.c:6244 lib/setup.c:6255 +#: lib/setup.c:6260 lib/setup.c:6271 msgid "Dump operation is not supported for this device type." msgstr "Operace výpisu není na zařízení tohoto typu podporována." -#: lib/setup.c:6635 +#: lib/setup.c:6651 #, c-format msgid "Data offset is not multiple of %u bytes." msgstr "Počátek dat není násobkem %u bajtů." -#: lib/setup.c:6943 +#: lib/setup.c:6959 #, c-format msgid "Cannot convert device %s which is still in use." msgstr "Zařízení %s, které se stále používá, nelze konvertovat." -#: lib/setup.c:7251 lib/setup.c:7406 +#: lib/setup.c:7267 lib/setup.c:7422 #, c-format msgid "Failed to assign keyslot %u as the new volume key." msgstr "Přiřazení pozice klíče %u jakožto nového klíče svazku se nezdařilo." -#: lib/setup.c:7275 +#: lib/setup.c:7291 msgid "Failed to initialize default LUKS2 keyslot parameters." msgstr "Inicializace parametrů výchozí pozice klíče LUKS2 selhala." -#: lib/setup.c:7281 +#: lib/setup.c:7297 #, c-format msgid "Failed to assign keyslot %d to digest." msgstr "Přiřazení pozice klíče %d k otisku se nezdařilo." -#: lib/setup.c:7523 +#: lib/setup.c:7539 msgid "Cannot add key slot, all slots disabled and no volume key provided." msgstr "Nelze přidat pozici klíče, všechny pozice jsou zakázány a klíč svazku nebyl poskytnut." -#: lib/setup.c:7611 lib/setup.c:7626 lib/verity/verity.c:333 +#: lib/setup.c:7627 lib/setup.c:7642 lib/verity/verity.c:333 msgid "Failed to load key in kernel keyring." msgstr "Klíč se nepodařilo přidat do jaderné klíčenky." -#: lib/setup.c:7807 +#: lib/setup.c:7823 #, c-format msgid "Could not find keyring described by \"%s\"." msgstr "Klíčenku zadanou jako „%s“ nebylo možné nalézt." -#: lib/setup.c:7872 +#: lib/setup.c:7888 msgid "Failed to acquire global memory-hard access serialization lock." msgstr "Získání zámku pro tvrdý přístup do globální paměti selhalo." @@ -819,7 +819,7 @@ msgid "Cannot read requested amount of data." msgstr "Požadované množství dat nelze načíst." #: lib/utils_device.c:207 lib/utils_storage_wrappers.c:99 -#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2257 +#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2283 #, c-format msgid "Device %s does not exist or access denied." msgstr "Zařízení %s neexistuje nebo přístup byl zamítnut." @@ -937,16 +937,16 @@ msgstr "Požadovaný počet souběžných vláken PBKDF nemůže být nula." msgid "Only PBKDF2 is supported in FIPS mode." msgstr "V režimu FIPS je podporován jen PBKDF2." -#: lib/utils_benchmark.c:171 +#: lib/utils_benchmark.c:175 msgid "PBKDF benchmark disabled but iterations not set." msgstr "Porovnání výkonu PBKDF je zakázáno, ale počet iterací není nastaven." -#: lib/utils_benchmark.c:190 +#: lib/utils_benchmark.c:194 #, c-format msgid "Not compatible PBKDF2 options (using hash algorithm %s)." msgstr "Neslučitelné volby PBKDF2 (při použití hašovacího algoritmu %s)." -#: lib/utils_benchmark.c:210 +#: lib/utils_benchmark.c:214 msgid "Not compatible PBKDF options." msgstr "Neslučitelné volby PBKDF." @@ -995,9 +995,9 @@ msgstr "V režimu XTS musí být velikost klíče 256 nebo 512 bitů." msgid "Cipher specification should be in [cipher]-[mode]-[iv] format." msgstr "Zápis šifry by měl být ve tvaru [šifra]-[režim]-[iv]." -#: lib/luks1/keyencryption.c:85 lib/luks1/keymanage.c:353 -#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1132 -#: lib/luks2/luks2_json_metadata.c:1518 lib/luks2/luks2_keyslot.c:711 +#: lib/luks1/keyencryption.c:85 lib/luks1/keymanage.c:358 +#: lib/luks1/keymanage.c:665 lib/luks1/keymanage.c:1133 +#: lib/luks2/luks2_json_metadata.c:1510 lib/luks2/luks2_keyslot.c:711 #, c-format msgid "Cannot write to device %s, permission denied." msgstr "Na zařízení %s nelze zapsat, povolení zamítnuto." @@ -1015,13 +1015,13 @@ msgstr "Přístup do dočasného zařízení s úložištěm klíče selhal." msgid "IO error while encrypting keyslot." msgstr "Chyba vstupu/výstupu při šifrování pozice klíče." -#: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:356 -#: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:659 +#: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:361 +#: lib/luks1/keymanage.c:619 lib/luks1/keymanage.c:668 lib/tcrypt/tcrypt.c:659 #: lib/fvault2/fvault2.c:872 lib/verity/verity.c:67 lib/verity/verity.c:183 #: lib/verity/verity_hash.c:312 lib/verity/verity_hash.c:321 #: lib/verity/verity_hash.c:350 lib/verity/verity_fec.c:247 #: lib/verity/verity_fec.c:259 lib/verity/verity_fec.c:264 -#: lib/luks2/luks2_json_metadata.c:1521 src/utils_reencrypt_luks1.c:108 +#: lib/luks2/luks2_json_metadata.c:1513 src/utils_reencrypt_luks1.c:108 #: src/utils_reencrypt_luks1.c:120 #, c-format msgid "Cannot open device %s." @@ -1036,61 +1036,61 @@ msgstr "Chyba vstupu/výstupu při dešifrování pozice klíče." msgid "Device %s is too small. (LUKS1 requires at least % bytes.)" msgstr "Zařízení %s je příliš malé. (LUKS1 vyžaduje alespoň % bajtů.)" -#: lib/luks1/keymanage.c:138 lib/luks1/keymanage.c:146 -#: lib/luks1/keymanage.c:158 lib/luks1/keymanage.c:169 -#: lib/luks1/keymanage.c:181 +#: lib/luks1/keymanage.c:143 lib/luks1/keymanage.c:151 +#: lib/luks1/keymanage.c:163 lib/luks1/keymanage.c:174 +#: lib/luks1/keymanage.c:186 #, c-format msgid "LUKS keyslot %u is invalid." msgstr "Pozice %u klíče LUKS není platná." -#: lib/luks1/keymanage.c:254 lib/luks2/luks2_json_metadata.c:1382 +#: lib/luks1/keymanage.c:259 lib/luks2/luks2_json_metadata.c:1382 #, c-format msgid "Requested header backup file %s already exists." msgstr "Požadovaný soubor se zálohou hlavičky %s již existuje." -#: lib/luks1/keymanage.c:256 lib/luks2/luks2_json_metadata.c:1384 +#: lib/luks1/keymanage.c:261 lib/luks2/luks2_json_metadata.c:1384 #, c-format msgid "Cannot create header backup file %s." msgstr "Soubor se zálohou hlavičky %s nelze vytvořit." -#: lib/luks1/keymanage.c:263 lib/luks2/luks2_json_metadata.c:1391 +#: lib/luks1/keymanage.c:268 lib/luks2/luks2_json_metadata.c:1391 #, c-format msgid "Cannot write header backup file %s." msgstr "Nelze zapsat soubor %s se zálohou hlavičky." -#: lib/luks1/keymanage.c:295 lib/luks2/luks2_json_metadata.c:1428 +#: lib/luks1/keymanage.c:300 lib/luks2/luks2_json_metadata.c:1420 msgid "Backup file does not contain valid LUKS header." msgstr "Záložní soubor neobsahuje platnou hlavičku LUKS." -#: lib/luks1/keymanage.c:308 lib/luks1/keymanage.c:580 -#: lib/luks2/luks2_json_metadata.c:1450 +#: lib/luks1/keymanage.c:313 lib/luks1/keymanage.c:585 +#: lib/luks2/luks2_json_metadata.c:1442 #, c-format msgid "Cannot open header backup file %s." msgstr "Nelze otevřít soubor se zálohou hlavičky %s." -#: lib/luks1/keymanage.c:316 lib/luks2/luks2_json_metadata.c:1458 +#: lib/luks1/keymanage.c:321 lib/luks2/luks2_json_metadata.c:1450 #, c-format msgid "Cannot read header backup file %s." msgstr "Soubor se zálohou hlavičky %s nelze načíst." -#: lib/luks1/keymanage.c:326 +#: lib/luks1/keymanage.c:331 msgid "Data offset or key size differs on device and backup, restore failed." msgstr "Počátek dat nebo velikost klíče se liší mezi zařízením a zálohou, obnova se nezdařila." -#: lib/luks1/keymanage.c:334 +#: lib/luks1/keymanage.c:339 #, c-format msgid "Device %s %s%s" msgstr "Zařízení %s %s%s" -#: lib/luks1/keymanage.c:335 +#: lib/luks1/keymanage.c:340 msgid "does not contain LUKS header. Replacing header can destroy data on that device." msgstr "neobsahuje hlavičku LUKS. Nahrazení hlavičky může zničit data na daném zařízení." -#: lib/luks1/keymanage.c:336 +#: lib/luks1/keymanage.c:341 msgid "already contains LUKS header. Replacing header will destroy existing keyslots." msgstr "již obsahuje hlavičku LUKS. Nahrazení hlavičky zničí existující pozice s klíči." -#: lib/luks1/keymanage.c:337 lib/luks2/luks2_json_metadata.c:1490 +#: lib/luks1/keymanage.c:342 lib/luks2/luks2_json_metadata.c:1482 msgid "" "\n" "WARNING: real device header has different UUID than backup!" @@ -1098,131 +1098,131 @@ msgstr "" "\n" "POZOR: hlavička ve skutečném zařízení má jiné UUID než záloha!" -#: lib/luks1/keymanage.c:385 +#: lib/luks1/keymanage.c:390 msgid "Non standard key size, manual repair required." msgstr "Nestandardní velikost klíče, je třeba ruční opravy." -#: lib/luks1/keymanage.c:395 +#: lib/luks1/keymanage.c:400 msgid "Non standard keyslots alignment, manual repair required." msgstr "Nestandardní zarovnání pozice klíče, je třeba ruční opravy." -#: lib/luks1/keymanage.c:404 +#: lib/luks1/keymanage.c:409 #, c-format msgid "Cipher mode repaired (%s -> %s)." msgstr "Režim šifry opraven (%s → %s)." -#: lib/luks1/keymanage.c:415 +#: lib/luks1/keymanage.c:420 #, c-format msgid "Cipher hash repaired to lowercase (%s)." msgstr "Haš šifry opraven na malý písmena (%s)." -#: lib/luks1/keymanage.c:417 lib/luks1/keymanage.c:523 -#: lib/luks1/keymanage.c:756 +#: lib/luks1/keymanage.c:422 lib/luks1/keymanage.c:528 +#: lib/luks1/keymanage.c:757 #, c-format msgid "Requested LUKS hash %s is not supported." msgstr "Požadovaný haš LUKSu %s není podporován." -#: lib/luks1/keymanage.c:431 +#: lib/luks1/keymanage.c:436 msgid "Repairing keyslots." msgstr "Opravují se pozice klíčů." -#: lib/luks1/keymanage.c:450 +#: lib/luks1/keymanage.c:455 #, c-format msgid "Keyslot %i: offset repaired (%u -> %u)." msgstr "Pozice klíče %i: poloha opravena (%u → %u)." -#: lib/luks1/keymanage.c:458 +#: lib/luks1/keymanage.c:463 #, c-format msgid "Keyslot %i: stripes repaired (%u -> %u)." msgstr "Pozice klíče %i: proklad opraven (%u → %u)." -#: lib/luks1/keymanage.c:467 +#: lib/luks1/keymanage.c:472 #, c-format msgid "Keyslot %i: bogus partition signature." msgstr "Pozice klíče %i: chybná značka oddílu." -#: lib/luks1/keymanage.c:472 +#: lib/luks1/keymanage.c:477 #, c-format msgid "Keyslot %i: salt wiped." msgstr "Pozice klíče %i: sůl vymazána." -#: lib/luks1/keymanage.c:489 +#: lib/luks1/keymanage.c:494 msgid "Writing LUKS header to disk." msgstr "Hlavička LUKS se zapisuje na disk." -#: lib/luks1/keymanage.c:494 +#: lib/luks1/keymanage.c:499 msgid "Repair failed." msgstr "Oprava selhala." -#: lib/luks1/keymanage.c:549 +#: lib/luks1/keymanage.c:554 #, c-format msgid "LUKS cipher mode %s is invalid." msgstr "Režim LUKS šifry %s není platný." -#: lib/luks1/keymanage.c:554 +#: lib/luks1/keymanage.c:559 #, c-format msgid "LUKS hash %s is invalid." msgstr "LUKS haš %s není platný." -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 +#: lib/luks1/keymanage.c:566 src/cryptsetup.c:1367 msgid "No known problems detected for LUKS header." msgstr "V hlavičce LUKS nenalezen žádný známý problém." -#: lib/luks1/keymanage.c:689 +#: lib/luks1/keymanage.c:690 #, c-format msgid "Error during update of LUKS header on device %s." msgstr "Chyba při aktualizaci hlavičky LUKS na zařízení %s." -#: lib/luks1/keymanage.c:697 +#: lib/luks1/keymanage.c:698 #, c-format msgid "Error re-reading LUKS header after update on device %s." msgstr "Chyba při opakovaném čtení hlavičky LUKS po aktualizaci zařízení %s." # TODO: Pluralize -#: lib/luks1/keymanage.c:750 +#: lib/luks1/keymanage.c:751 msgid "Data offset for LUKS header must be either 0 or higher than header size." msgstr "Poloha dat u hlavičky LUKS musí být buď 0 nebo více než velikost hlavičky." -#: lib/luks1/keymanage.c:761 lib/luks1/keymanage.c:832 -#: lib/luks2/luks2_json_format.c:231 lib/luks2/luks2_json_metadata.c:1261 +#: lib/luks1/keymanage.c:762 lib/luks1/keymanage.c:833 +#: lib/luks2/luks2_json_format.c:240 lib/luks2/luks2_json_metadata.c:1261 #: src/utils_reencrypt.c:703 msgid "Wrong LUKS UUID format provided." msgstr "Poskytnut UUID LUKSu ve špatném tvaru." -#: lib/luks1/keymanage.c:783 +#: lib/luks1/keymanage.c:784 msgid "Cannot create LUKS header: reading random salt failed." msgstr "Hlavičku LUKS nelze vytvořit: čtení náhodné soli selhalo." -#: lib/luks1/keymanage.c:811 +#: lib/luks1/keymanage.c:812 #, c-format msgid "Cannot create LUKS header: header digest failed (using hash %s)." msgstr "Hlavičku LUKS nelze vytvořit: výpočet otisku hlavičky (haš %s) selhal." -#: lib/luks1/keymanage.c:856 +#: lib/luks1/keymanage.c:857 #, c-format msgid "Key slot %d active, purge first." msgstr "Pozice klíče %d je aktivní, nejprve ji uvolněte." -#: lib/luks1/keymanage.c:862 +#: lib/luks1/keymanage.c:863 #, c-format msgid "Key slot %d material includes too few stripes. Header manipulation?" msgstr "Pozice klíče %d obsahuje příliš málo útržků. Manipulace s hlavičkou?" -#: lib/luks1/keymanage.c:900 lib/luks2/luks2_keyslot_luks2.c:217 +#: lib/luks1/keymanage.c:901 lib/luks2/luks2_keyslot_luks2.c:217 msgid "PBKDF2 iteration value overflow." msgstr "Čítač opakování PBKDF2 přetekl." -#: lib/luks1/keymanage.c:1022 +#: lib/luks1/keymanage.c:1023 #, c-format msgid "Cannot open keyslot (using hash %s)." msgstr "Pozici s klíčem nezle otevřít (za použití haše %s)." -#: lib/luks1/keymanage.c:1118 +#: lib/luks1/keymanage.c:1119 #, c-format msgid "Key slot %d is invalid, please select keyslot between 0 and %d." msgstr "Pozice klíče %d není platná, prosím, vyberte pozici mezi 0 a %d." -#: lib/luks1/keymanage.c:1136 lib/luks2/luks2_keyslot.c:715 +#: lib/luks1/keymanage.c:1137 lib/luks2/luks2_keyslot.c:715 #, c-format msgid "Cannot wipe device %s." msgstr "Zařízení %s není možné smazat." @@ -1400,33 +1400,33 @@ msgstr "Tato operace není podporována." msgid "Unexpected key data size." msgstr "Nečekaná velikost údajů o klíči." -#: lib/bitlk/bitlk.c:1442 +#: lib/bitlk/bitlk.c:1448 msgid "This BITLK device is in an unsupported state and cannot be activated." msgstr "Toto zařízení BITLK je v nepodporovaném stavu a nelze jej aktivovat." -#: lib/bitlk/bitlk.c:1447 +#: lib/bitlk/bitlk.c:1453 #, c-format msgid "BITLK devices with type '%s' cannot be activated." msgstr "Zařízení BITLK s typem „%s“ nelze aktivovat." -#: lib/bitlk/bitlk.c:1486 +#: lib/bitlk/bitlk.c:1492 #, c-format msgid "WARNING: BitLocker volume size % does not match the underlying device size %" msgstr "POZOR: Velikost svazku BitLockeru % neodpovídá velikosti zařízení ve zpod %" -#: lib/bitlk/bitlk.c:1613 +#: lib/bitlk/bitlk.c:1634 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK IV." msgstr "Zařízení nelze aktivovat. Jaderný dm-crypt postrádá podporu inicializačního vektoru BITLK." -#: lib/bitlk/bitlk.c:1617 +#: lib/bitlk/bitlk.c:1638 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK Elephant diffuser." msgstr "Zařízení nelze aktivovat. Jaderný dm-crypt postrádá podporu difuzéru Elephant BITLK." -#: lib/bitlk/bitlk.c:1621 +#: lib/bitlk/bitlk.c:1642 msgid "Cannot activate device, kernel dm-crypt is missing support for large sector size." msgstr "Zařízení nelze aktivovat. Jaderný dm-crypt postrádá podporu velikostí velkých sektorů." -#: lib/bitlk/bitlk.c:1625 +#: lib/bitlk/bitlk.c:1646 msgid "Cannot activate device, kernel dm-zero module is missing." msgstr "Zařízení nelze aktivovat. Chybí jaderný modul dm-zero." @@ -1585,26 +1585,26 @@ msgstr "Velikost zařízení %s se nepodařilo určit." msgid "Incompatible kernel dm-integrity metadata (version %u) detected on %s." msgstr "Neslučitelná metadata jaderného dm-integrity (verze %u) byla nalezena na %s." -#: lib/integrity/integrity.c:308 lib/integrity/integrity.c:492 +#: lib/integrity/integrity.c:309 lib/integrity/integrity.c:493 msgid "Kernel does not support dm-integrity mapping." msgstr "Jádro nepodporuje mapování dm-integrity." # Fixed metadata means fix_padding attribute of dm-integrity target # documented as "use a smaller padding". -#: lib/integrity/integrity.c:314 +#: lib/integrity/integrity.c:315 msgid "Kernel does not support dm-integrity fixed metadata alignment." msgstr "Jádro nepodporuje drobné zarovnání metadat dm-integrity." -#: lib/integrity/integrity.c:323 +#: lib/integrity/integrity.c:324 msgid "Kernel refuses to activate insecure recalculate option (see legacy activation options to override)." msgstr "Jádro odmítá aktivovat volbu nebezpečného přepočtu (pro přebití vizte zastaralé volby aktivace)" -#: lib/integrity/integrity.c:329 +#: lib/integrity/integrity.c:330 msgid "Kernel does not support dm-integrity inline mode." msgstr "Jádro nepodporuje mapování dm-integrity s inline režimem." #: lib/luks2/luks2_disk_metadata.c:382 lib/luks2/luks2_json_metadata.c:1184 -#: lib/luks2/luks2_json_metadata.c:1510 +#: lib/luks2/luks2_json_metadata.c:1502 #, c-format msgid "Failed to acquire write lock on device %s." msgstr "Získání zámku pro zápis do zařízení %s selhalo." @@ -1627,22 +1627,22 @@ msgstr "" msgid "WARNING: keyslots area (% bytes) is very small, available LUKS2 keyslot count is very limited.\n" msgstr "POZOR: oblast s pozicemi klíčů (% bajtů) je příliš malá, dostupný počet pozic klíčů LUKS2 je značně omezen.\n" -#: lib/luks2/luks2_json_format.c:418 +#: lib/luks2/luks2_json_format.c:427 msgid "Requested data offset is too small." msgstr "Požadovaná poloha dat je příliš nízká." -#: lib/luks2/luks2_json_format.c:459 +#: lib/luks2/luks2_json_format.c:468 #, c-format msgid "WARNING: LUKS2 metadata size changed to % bytes.\n" msgstr "POZOR: Metadata LUKS2 změnila velikost na % bajtů.\n" -#: lib/luks2/luks2_json_format.c:463 +#: lib/luks2/luks2_json_format.c:472 #, c-format msgid "WARNING: LUKS2 keyslots area size changed to % bytes.\n" msgstr "POZOR: Oblast s pozicemi klíčů pro LUKS2 změnila velikost na % bajtů.\n" #: lib/luks2/luks2_json_metadata.c:1171 lib/luks2/luks2_json_metadata.c:1357 -#: lib/luks2/luks2_json_metadata.c:1417 lib/luks2/luks2_keyslot_luks2.c:71 +#: lib/luks2/luks2_json_metadata.c:1412 lib/luks2/luks2_keyslot_luks2.c:71 #, c-format msgid "Failed to acquire read lock on device %s." msgstr "Získání zámku pro čtení ze zařízení %s selhalo." @@ -1651,33 +1651,33 @@ msgstr "Získání zámku pro čtení ze zařízení %s selhalo." msgid "Label is too long." msgstr "Jmenovka je příliš dlouhá." -#: lib/luks2/luks2_json_metadata.c:1435 +#: lib/luks2/luks2_json_metadata.c:1427 #, c-format msgid "Forbidden LUKS2 requirements detected in backup %s." msgstr "V záloze %s byly zjištěny zakázané požadavky na LUKS2." -#: lib/luks2/luks2_json_metadata.c:1474 +#: lib/luks2/luks2_json_metadata.c:1466 msgid "Data offset differ on device and backup, restore failed." msgstr "Počátek dat se liší mezi zařízením a zálohou, obnova se nezdařila." -#: lib/luks2/luks2_json_metadata.c:1480 +#: lib/luks2/luks2_json_metadata.c:1472 msgid "Binary header with keyslot areas size differ on device and backup, restore failed." msgstr "Velikost binární hlavičky s oblastí pro pozice klíčů se liší mezi zařízením a zálohou, obnova se nezdařila." -#: lib/luks2/luks2_json_metadata.c:1487 +#: lib/luks2/luks2_json_metadata.c:1479 #, c-format msgid "Device %s %s%s%s%s" msgstr "Zařízení %s %s%s%s%s" -#: lib/luks2/luks2_json_metadata.c:1488 +#: lib/luks2/luks2_json_metadata.c:1480 msgid "does not contain LUKS2 header. Replacing header can destroy data on that device." msgstr "neobsahuje hlavičku LUKS2. Nahrazení hlavičky může zničit data na daném zařízení." -#: lib/luks2/luks2_json_metadata.c:1489 +#: lib/luks2/luks2_json_metadata.c:1481 msgid "already contains LUKS2 header. Replacing header will destroy existing keyslots." msgstr "již obsahuje hlavičku LUKS2. Nahrazení hlavičky zničí existující pozice s klíči." -#: lib/luks2/luks2_json_metadata.c:1491 +#: lib/luks2/luks2_json_metadata.c:1483 msgid "" "\n" "WARNING: unknown LUKS2 requirements detected in real device header!\n" @@ -1687,7 +1687,7 @@ msgstr "" "POZOR: Ve skutečné hlavičce zařízení byly objeveny neznámé požadavky na LUKS2!\n" "Nahrazení hlavičky zálohou může zničit data na zařízení!" -#: lib/luks2/luks2_json_metadata.c:1493 +#: lib/luks2/luks2_json_metadata.c:1485 msgid "" "\n" "WARNING: Unfinished offline reencryption detected on the device!\n" @@ -1697,84 +1697,84 @@ msgstr "" "POZOR: Na zařízení bylo objeveno nedokončené offline přešifrování!\n" "Nahrazení hlavičky zálohou může zničit data." -#: lib/luks2/luks2_json_metadata.c:1591 +#: lib/luks2/luks2_json_metadata.c:1583 #, c-format msgid "Ignored unknown flag %s." msgstr "Neznámý příznak %s ignorován." -#: lib/luks2/luks2_json_metadata.c:2563 lib/luks2/luks2_reencrypt.c:2110 +#: lib/luks2/luks2_json_metadata.c:2555 lib/luks2/luks2_reencrypt.c:2110 #, c-format msgid "Missing key for dm-crypt segment %u" msgstr "Chybí klíč pro dm-crypt část %u." -#: lib/luks2/luks2_json_metadata.c:2575 lib/luks2/luks2_reencrypt.c:2123 +#: lib/luks2/luks2_json_metadata.c:2567 lib/luks2/luks2_reencrypt.c:2123 msgid "Failed to set dm-crypt segment." msgstr "Nastavení části dm-crypt selhalo." -#: lib/luks2/luks2_json_metadata.c:2581 lib/luks2/luks2_reencrypt.c:2129 +#: lib/luks2/luks2_json_metadata.c:2573 lib/luks2/luks2_reencrypt.c:2129 msgid "Failed to set dm-linear segment." msgstr "Nastavení části dm-linear selhalo." -#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:580 +#: lib/luks2/luks2_json_metadata.c:2693 src/utils_reencrypt.c:580 msgid "No known cipher specification pattern detected in LUKS2 header." msgstr "V hlavičce LUKS2 nebyl nalezen žádný známý vzorek určující šifru." -#: lib/luks2/luks2_json_metadata.c:2709 +#: lib/luks2/luks2_json_metadata.c:2701 msgid "OPAL device must have static device size." msgstr "Zařízení Opal musí mít statickou velikost zařízení." -#: lib/luks2/luks2_json_metadata.c:2729 +#: lib/luks2/luks2_json_metadata.c:2721 msgid "Encrypted OPAL device with integrity must be smaller than locking range." msgstr "Šifrované zařízení Opal zajišťující neporušenost musí být menší než uzamykatelná oblast." -#: lib/luks2/luks2_json_metadata.c:2734 +#: lib/luks2/luks2_json_metadata.c:2726 msgid "OPAL device must have same size as locking range." msgstr "Zařízení Opal musí mít stejnou velikost jako uzamykatelná oblast." -#: lib/luks2/luks2_json_metadata.c:2754 +#: lib/luks2/luks2_json_metadata.c:2746 #, c-format msgid "OPAL device is %s already unlocked.\n" msgstr "Opal zařízení %s je již odemknuto.\n" -#: lib/luks2/luks2_json_metadata.c:2793 +#: lib/luks2/luks2_json_metadata.c:2785 msgid "Unsupported device integrity configuration." msgstr "Nepodporovaná konfigurace integrity zařízení." -#: lib/luks2/luks2_json_metadata.c:2809 +#: lib/luks2/luks2_json_metadata.c:2801 msgid "Underlying dm-integrity device with unexpected provided data sectors." msgstr "Dm-integrity zařízení nižší úrovně poskytlo nečekané datové sektory." -#: lib/luks2/luks2_json_metadata.c:2911 +#: lib/luks2/luks2_json_metadata.c:2903 msgid "Reencryption in-progress. Cannot deactivate device." msgstr "Probíhá přešifrování. Zařízení nelze deaktivovat." -#: lib/luks2/luks2_json_metadata.c:2922 lib/luks2/luks2_reencrypt.c:4287 +#: lib/luks2/luks2_json_metadata.c:2914 lib/luks2/luks2_reencrypt.c:4287 #, c-format msgid "Failed to replace suspended device %s with dm-error target." msgstr "Výměna pozastaveného zařízení %s za cíl dm-error selhala." -#: lib/luks2/luks2_json_metadata.c:3001 lib/luks2/luks2_json_metadata.c:3023 +#: lib/luks2/luks2_json_metadata.c:2993 lib/luks2/luks2_json_metadata.c:3015 #, c-format msgid "Device %s was deactivated but hardware OPAL device cannot be locked." msgstr "Zařízení %s bylo deaktivováno, avšak hardwarové zařízené Opal nelze uzamknout." -#: lib/luks2/luks2_json_metadata.c:3045 +#: lib/luks2/luks2_json_metadata.c:3037 msgid "Unmet LUKS2 requirements detected." msgstr "Zjištěny nesplněné požadavky na LUKS2." -#: lib/luks2/luks2_json_metadata.c:3053 +#: lib/luks2/luks2_json_metadata.c:3045 msgid "Operation incompatible with device marked for legacy reencryption. Aborting." msgstr "Operace se neslučuje se zařízením označeným pro zastaralé přešifrování. Operace se ruší." -#: lib/luks2/luks2_json_metadata.c:3055 +#: lib/luks2/luks2_json_metadata.c:3047 msgid "Operation incompatible with device marked for LUKS2 reencryption. Aborting." msgstr "Operace se neslučuje se zařízením označeným pro přešifrování LUKS2. Operace se ruší." -#: lib/luks2/luks2_json_metadata.c:3057 +#: lib/luks2/luks2_json_metadata.c:3049 msgid "Operation incompatible with device using OPAL. Aborting." msgstr "Operace se neslučuje se zařízením používajícím Opal. Operace se ruší." -#: lib/luks2/luks2_json_metadata.c:3059 +#: lib/luks2/luks2_json_metadata.c:3051 msgid "Operation incompatible with device using inline HW tags. Aborting." msgstr "Operace se neslučuje se zařízením používajícím inline hardwarové značky. Operace se ruší." @@ -1841,61 +1841,61 @@ msgstr "Pozice s klíčem LUKS2 neumožňuje použít šifru zadanou jako %s-%s. msgid "Unable to move keyslot area. Not enough space." msgstr "Oblast s pozicemi klíčů nelze přesunout. Nedostatek místa." -#: lib/luks2/luks2_luks1_convert.c:619 +#: lib/luks2/luks2_luks1_convert.c:627 msgid "Cannot convert to LUKS2 format - invalid metadata." msgstr "Nelze převést do formátu LUKS2 – neplatná metadata." -#: lib/luks2/luks2_luks1_convert.c:636 +#: lib/luks2/luks2_luks1_convert.c:644 msgid "Unable to move keyslot area. LUKS2 keyslots area too small." msgstr "Oblast s pozicemi klíčů nelze přesunout. Oblast s pozicemi klíčů LUKS2 je příliš malá." -#: lib/luks2/luks2_luks1_convert.c:642 lib/luks2/luks2_luks1_convert.c:972 +#: lib/luks2/luks2_luks1_convert.c:650 lib/luks2/luks2_luks1_convert.c:980 msgid "Unable to move keyslot area." msgstr "Oblast s pozicemi klíčů nelze přesunout." -#: lib/luks2/luks2_luks1_convert.c:757 +#: lib/luks2/luks2_luks1_convert.c:765 msgid "Cannot convert to LUKS1 format - default segment encryption sector size is not 512 bytes." msgstr "Nelze převést do formátu LUKS1 – výchozí velikost sektoru šifrování části není 512 bajtů." -#: lib/luks2/luks2_luks1_convert.c:765 +#: lib/luks2/luks2_luks1_convert.c:773 msgid "Cannot convert to LUKS1 format - key slot digests are not LUKS1 compatible." msgstr "Nelze převést do formátu LUKS1 – otisky v pozicích s klíči nejsou slučitelné s LUKS1." -#: lib/luks2/luks2_luks1_convert.c:779 +#: lib/luks2/luks2_luks1_convert.c:787 #, c-format msgid "Cannot convert to LUKS1 format - device uses wrapped key cipher %s." msgstr "Nelze převést do formátu LUKS1 – zařízení používá šifru se zabaleným klíčem %s." -#: lib/luks2/luks2_luks1_convert.c:784 +#: lib/luks2/luks2_luks1_convert.c:792 msgid "Cannot convert to LUKS1 format - device uses more segments." msgstr "Nelze převést do formátu LUKS1 – zařízení používá více částí." # TODO: Pluralize -#: lib/luks2/luks2_luks1_convert.c:792 +#: lib/luks2/luks2_luks1_convert.c:800 #, c-format msgid "Cannot convert to LUKS1 format - LUKS2 header contains %u token(s)." msgstr "Nelze převést do formátu LUKS1 – hlavička LUKS2 obsahuje %u token(ů)." -#: lib/luks2/luks2_luks1_convert.c:798 +#: lib/luks2/luks2_luks1_convert.c:806 msgid "Cannot convert to LUKS1 format - there are no active keyslots." msgstr "Nelze převést do formátu LUKS1 – žádná pozice s klíčem není aktivní." -#: lib/luks2/luks2_luks1_convert.c:810 +#: lib/luks2/luks2_luks1_convert.c:818 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is in invalid state." msgstr "Nelze převést do formátu LUKS1 – pozice s klíčem %u je v nesprávném stavu." -#: lib/luks2/luks2_luks1_convert.c:815 +#: lib/luks2/luks2_luks1_convert.c:823 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is unbound." msgstr "Nelze převést do formátu LUKS1 – pozice s klíčem %u není přiřazena." -#: lib/luks2/luks2_luks1_convert.c:820 +#: lib/luks2/luks2_luks1_convert.c:828 #, c-format msgid "Cannot convert to LUKS1 format - slot %u (over maximum slots) is still active." msgstr "Nelze převést do formátu LUKS1 – pozice s klíčem %u (nad maximem pozic) je stále aktivní." -#: lib/luks2/luks2_luks1_convert.c:825 +#: lib/luks2/luks2_luks1_convert.c:833 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is not LUKS1 compatible." msgstr "Nelze převést do formátu LUKS1 – pozice s klíčem %u není slučitelná s LUKS1." @@ -2180,7 +2180,7 @@ msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encry msgstr "Parametry pro šifrování pozice s klíčem se neslučují s šifrováním pozice s klíčem LUKS2." #: src/cryptsetup.c:150 src/cryptsetup.c:1180 src/cryptsetup.c:1545 -#: src/utils_reencrypt.c:1890 src/utils_reencrypt_luks1.c:502 +#: src/utils_reencrypt.c:1916 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." msgstr "Nelze najít žádný známý vzorek se specifikaci šifry." @@ -2208,7 +2208,7 @@ msgid "WARNING: The --keyfile-size option is being ignored, the read size is the msgstr "POZOR: Přepínač --keyfile-size se ignoruje, velikost pro čtení je stejná jako velikosti šifrovacího klíče.\n" #: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 -#: src/integritysetup.c:189 src/utils_reencrypt.c:2141 +#: src/integritysetup.c:189 src/utils_reencrypt.c:2167 #, c-format msgid "Blkid scan failed for %s." msgstr "Prohledávání blkid selhalo u %s." @@ -2288,7 +2288,7 @@ msgstr "Zařízení %s není platným zařízením FVAULT2." msgid "Cannot determine volume key size for FVAULT2, please use --key-size option." msgstr "Nelze určit velikost klíče svazku pro FVAULT2. Prosím, použijte přepínač --key-size." -#: src/cryptsetup.c:849 src/veritysetup.c:317 src/integritysetup.c:422 +#: src/cryptsetup.c:849 src/veritysetup.c:317 src/integritysetup.c:424 #, c-format msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "Zařízení %s je stále aktivní a naplánováno pro odložené odstranění.\n" @@ -2480,7 +2480,7 @@ msgid "LUKS file container %s is too small for activation, there is no remaining msgstr "Souborový kontejner LUKS %s je na aktivaci příliš malý. Nezbývá žádné místo pro data." #: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:278 -#: src/utils_reencrypt.c:371 src/utils_reencrypt.c:1910 +#: src/utils_reencrypt.c:371 src/utils_reencrypt.c:1936 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "Bez pozic pro klíče nelze určit velikost LUKS klíče svazku. Prosím, použijte přepínač --key-size." @@ -2778,7 +2778,7 @@ msgstr "Přepínač --volume-key-keyring nelze použít s přepínači --hash a msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "Oba přepínače --volume-key-file musí být ve dvojici s odpovídajícími přepínači --key-size." -#: src/cryptsetup.c:3373 src/veritysetup.c:673 src/integritysetup.c:793 +#: src/cryptsetup.c:3373 src/veritysetup.c:673 src/integritysetup.c:800 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "Přepínače --cancel-deferred a --deferred se vzájemně vylučují." @@ -2846,21 +2846,21 @@ msgstr "Akce vyžaduje určitou pozici klíče. Použijte parametr --key-slot." msgid " [--type ] []" msgstr " [--type ] []" -#: src/cryptsetup.c:3482 src/veritysetup.c:487 src/integritysetup.c:560 +#: src/cryptsetup.c:3482 src/veritysetup.c:487 src/integritysetup.c:563 msgid "open device as " msgstr "otevře zařízení jako " #: src/cryptsetup.c:3483 src/cryptsetup.c:3484 src/cryptsetup.c:3485 -#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:561 -#: src/integritysetup.c:562 src/integritysetup.c:564 +#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:564 +#: src/integritysetup.c:565 src/integritysetup.c:567 msgid "" msgstr "" -#: src/cryptsetup.c:3483 src/veritysetup.c:488 src/integritysetup.c:561 +#: src/cryptsetup.c:3483 src/veritysetup.c:488 src/integritysetup.c:564 msgid "close device (remove mapping)" msgstr "zavře zařízení (odstraní mapování)" -#: src/cryptsetup.c:3484 src/integritysetup.c:564 +#: src/cryptsetup.c:3484 src/integritysetup.c:567 msgid "resize active device" msgstr "změní velikost aktivního zařízení" @@ -2992,7 +2992,7 @@ msgstr " " msgid "Manipulate LUKS2 tokens" msgstr "Zachází s tokeny LUKS2" -#: src/cryptsetup.c:3527 src/veritysetup.c:505 src/integritysetup.c:579 +#: src/cryptsetup.c:3527 src/veritysetup.c:505 src/integritysetup.c:582 msgid "" "\n" " is one of:\n" @@ -3093,7 +3093,7 @@ msgstr "" msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: V režimu XTS (dva vnitřní klíče) bude výchozí velikost klíče zdvojnásobena.\n" -#: src/cryptsetup.c:3594 src/veritysetup.c:647 src/integritysetup.c:739 +#: src/cryptsetup.c:3594 src/veritysetup.c:647 src/integritysetup.c:742 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: vyžaduje %s jako argumenty" @@ -3145,31 +3145,31 @@ msgstr "Přepínač --priority smí mít pouze argument ignore, normal a prefer. msgid "Invalid maximal tries specification." msgstr "Zadáno neplatné maximum pokusů." -#: src/cryptsetup.c:3793 src/veritysetup.c:568 src/integritysetup.c:659 +#: src/cryptsetup.c:3793 src/veritysetup.c:568 src/integritysetup.c:662 msgid "Show this help message" msgstr "Zobrazí tuto nápovědu" -#: src/cryptsetup.c:3794 src/veritysetup.c:569 src/integritysetup.c:660 +#: src/cryptsetup.c:3794 src/veritysetup.c:569 src/integritysetup.c:663 msgid "Display brief usage" msgstr "Zobrazí stručný návod na použití" -#: src/cryptsetup.c:3795 src/veritysetup.c:570 src/integritysetup.c:661 +#: src/cryptsetup.c:3795 src/veritysetup.c:570 src/integritysetup.c:664 msgid "Print package version" msgstr "Vypíše verzi balíku" -#: src/cryptsetup.c:3806 src/veritysetup.c:581 src/integritysetup.c:672 +#: src/cryptsetup.c:3806 src/veritysetup.c:581 src/integritysetup.c:675 msgid "Help options:" msgstr "Přepínače nápovědy:" -#: src/cryptsetup.c:3829 src/veritysetup.c:602 src/integritysetup.c:692 +#: src/cryptsetup.c:3829 src/veritysetup.c:602 src/integritysetup.c:695 msgid "[OPTION...] " msgstr "[PŘEPÍNAČ…] " -#: src/cryptsetup.c:3838 src/veritysetup.c:611 src/integritysetup.c:703 +#: src/cryptsetup.c:3838 src/veritysetup.c:611 src/integritysetup.c:706 msgid "Argument missing." msgstr "Chybí argument ." -#: src/cryptsetup.c:3917 src/veritysetup.c:642 src/integritysetup.c:734 +#: src/cryptsetup.c:3917 src/veritysetup.c:642 src/integritysetup.c:737 msgid "Unknown action." msgstr "Neznámá akce." @@ -3274,7 +3274,7 @@ msgstr "Příkaz vyžaduje argument nebo přepínač --root-ha msgid " " msgstr " " -#: src/veritysetup.c:485 src/integritysetup.c:559 +#: src/veritysetup.c:485 src/integritysetup.c:562 msgid "format device" msgstr "naformátuje zařízení" @@ -3290,7 +3290,7 @@ msgstr "ověří zařízení" msgid " []" msgstr " []" -#: src/veritysetup.c:489 src/integritysetup.c:562 +#: src/veritysetup.c:489 src/integritysetup.c:565 msgid "show active device status" msgstr "zobrazí stav aktivního zařízení" @@ -3298,7 +3298,7 @@ msgstr "zobrazí stav aktivního zařízení" msgid "" msgstr "" -#: src/veritysetup.c:490 src/integritysetup.c:563 +#: src/veritysetup.c:490 src/integritysetup.c:566 msgid "show on-disk information" msgstr "zobrazí údaje z disku" @@ -3363,20 +3363,20 @@ msgstr " (inline hardwarové značky)" msgid "Setting recalculate flag is not supported, you may consider using --wipe instead." msgstr "Nastavení příznaku přepočtu není podporováno, místo toho zvažte použití --wipe." -#: src/integritysetup.c:382 src/integritysetup.c:546 +#: src/integritysetup.c:382 src/integritysetup.c:549 #, c-format msgid "Device %s is not a valid INTEGRITY device." msgstr "Zařízení %s není platným zařízením INTEGRITY." -#: src/integritysetup.c:559 src/integritysetup.c:563 +#: src/integritysetup.c:562 src/integritysetup.c:566 msgid "" msgstr "" -#: src/integritysetup.c:560 +#: src/integritysetup.c:563 msgid " " msgstr " " -#: src/integritysetup.c:583 +#: src/integritysetup.c:586 #, c-format msgid "" "\n" @@ -3387,7 +3387,7 @@ msgstr "" " je zařízení, které bude vytvořeno pod %s\n" " je zařízení obsahující data se značkami integrity\n" -#: src/integritysetup.c:588 +#: src/integritysetup.c:591 #, c-format msgid "" "\n" @@ -3401,51 +3401,55 @@ msgstr "" "\tMaximální velikost souboru s klíčem: %d kB\n" # TODO: Pluralize -#: src/integritysetup.c:645 +#: src/integritysetup.c:648 #, c-format msgid "Invalid --%s size. Maximum is %u bytes." msgstr "Neplatná velikost --%s. Maximální je %u bajtů." -#: src/integritysetup.c:748 +#: src/integritysetup.c:751 msgid "Both key file and key size options must be specified." msgstr "Musí být zadány oba přepínače pro soubor s klíčem a velikostí klíče." -#: src/integritysetup.c:752 +#: src/integritysetup.c:755 msgid "Both journal integrity key file and key size options must be specified." msgstr "Musí být zadány oba přepínače pro soubor s klíčem žurnálu a velikostí klíče." -#: src/integritysetup.c:755 +#: src/integritysetup.c:758 msgid "Journal integrity algorithm must be specified if journal integrity key is used." msgstr "Je-li použit klíč integrity žurnálu, musí být zadán algoritmus integrity žurnálu." -#: src/integritysetup.c:759 +#: src/integritysetup.c:762 msgid "Both journal encryption key file and key size options must be specified." msgstr "Musí být zadány oba přepínače pro soubor s šifrovacím klíčem žurnálu a velikostí klíče." -#: src/integritysetup.c:762 +#: src/integritysetup.c:765 msgid "Journal encryption algorithm must be specified if journal encryption key is used." msgstr "Je-li použit šifrovací klíč žurnálu, musí být zadán algoritmus šifrování žurnálu." -#: src/integritysetup.c:766 +#: src/integritysetup.c:769 msgid "Recovery and bitmap mode options are mutually exclusive." msgstr "Přepínače režimu bitmapy a obnovení se vzájemně vylučují." -#: src/integritysetup.c:773 +#: src/integritysetup.c:776 msgid "Journal options cannot be used in bitmap mode." msgstr "Přepínače žurnálu nelze použití spolu s režimem bitmapy." -#: src/integritysetup.c:778 +#: src/integritysetup.c:781 msgid "Bitmap options can be used only in bitmap mode." msgstr "Přepínače bitmapy lze použít jen při režimu bitmapy." -#: src/integritysetup.c:784 +#: src/integritysetup.c:787 msgid "Inline mode cannot be combined with journal or bitmap options." msgstr "Režim inline nelze kombinovat s možnostmi žurnálu a bitmapy." -#: src/integritysetup.c:788 +#: src/integritysetup.c:791 msgid "Inline mode cannot be combined with separate data device." msgstr "Režim inline nelze kombinovat se odděleným zařízením pro data." +#: src/integritysetup.c:795 +msgid "Keyed discards can be enabled only with keyed algorithms like HMAC." +msgstr "Zahazování s klíčem lze zapnout jen s algoritmy s klíčem jako je HMAC." + #: src/utils_tools.c:105 msgid "" "\n" @@ -3799,7 +3803,7 @@ msgstr "Zařízení není ve stavu dešifrování LUKS2. Neslučitelný přepín msgid "Device is in reencryption using datashift resilience. Requested --resilience option cannot be applied." msgstr "Zařízení je ve stavu přešifrování pomocí odolnosti posunu dat. Požadovaný přepínač --resilience nelze použít." -#: src/utils_reencrypt.c:283 src/utils_reencrypt.c:1927 +#: src/utils_reencrypt.c:283 src/utils_reencrypt.c:1953 msgid "Cannot determine volume key size for LUKS without keyslots, please use --new-key-size option." msgstr "Bez pozic pro klíče nelze určit velikost klíče svazku LUKS. Prosím, použijte přepínač --new-key-size." @@ -3833,7 +3837,7 @@ msgstr "" "Požadovaný --sector-size % není slučitelný se superblokem %s\n" "(velikost bloku % bajtů) nalezeném na zařízení %s." -#: src/utils_reencrypt.c:680 src/utils_reencrypt.c:2207 +#: src/utils_reencrypt.c:680 src/utils_reencrypt.c:2233 msgid "Encryption without detached header (--header) is not possible without data device size reduction (--reduce-device-size)." msgstr "Přešifrování bez oddělené hlavičky (--header) není možné bez zmenšení velikosti datového zařízení (--reduce-device-size)." @@ -3901,42 +3905,43 @@ msgstr "Inicializace přešifrování selhala. Záloha hlavičky je dostupná v msgid "LUKS2 decryption is supported with detached header device only (with data offset set to 0)." msgstr "Dešifrování LUKS2 je podporováno jen u zařízení s oddělenou hlavičkou (počátek dat na 0)." -#: src/utils_reencrypt.c:1490 -msgid "No token could unlock the device." -msgstr "Toto zařízení nebylo možné odemknout žádným tokenem." - -#: src/utils_reencrypt.c:1522 src/utils_reencrypt.c:1531 +#: src/utils_reencrypt.c:1506 src/utils_reencrypt.c:1531 +#: src/utils_reencrypt.c:1548 src/utils_reencrypt.c:1557 msgid "Not enough free keyslots for reencryption." msgstr "Nedostatek pozic s klíči pro přešifrování." -#: src/utils_reencrypt.c:1562 +#: src/utils_reencrypt.c:1513 +msgid "No token could unlock the device." +msgstr "Toto zařízení nebylo možné odemknout žádným tokenem." + +#: src/utils_reencrypt.c:1588 msgid "Key file or keyring key description can be used only with --key-slot or with exactly one key slot active." msgstr "Soubor s klíčem a popis klíče v klíčence lze použít jen s přepínačem --key-slot nebo s právě jednou aktivní pozicí klíče." -#: src/utils_reencrypt.c:1569 src/utils_reencrypt.c:1582 +#: src/utils_reencrypt.c:1595 src/utils_reencrypt.c:1608 #: src/utils_reencrypt_luks1.c:1092 src/utils_reencrypt_luks1.c:1103 #, c-format msgid "Enter passphrase for key slot %d: " msgstr "Zadejte heslo pro pozici klíče %d: " -#: src/utils_reencrypt.c:1879 +#: src/utils_reencrypt.c:1905 #, c-format msgid "Switching data encryption cipher to %s.\n" msgstr "Přepíná se algoritmus šifrování dat na %s.\n" -#: src/utils_reencrypt.c:1980 src/utils_reencrypt.c:2001 +#: src/utils_reencrypt.c:2006 src/utils_reencrypt.c:2027 msgid "Use --force-no-keyslots to reencrypt device with active keyslots by passing volume keys directly." msgstr "Pro přešifrování zařízení s aktivními pozicemi klíče přímým předáním klíčů svazku použijte --force-no-keyslots." -#: src/utils_reencrypt.c:1996 +#: src/utils_reencrypt.c:2022 msgid "Option --new-volume-key-file must be paired with --new-key-size" msgstr "Přepínač --new-volume-key-file musí být ve dvojici s --new-key-size." -#: src/utils_reencrypt.c:2038 +#: src/utils_reencrypt.c:2064 msgid "No data segment parameters changed. Reencryption aborted." msgstr "Žádné parametry oblasti s daty nebyly změněny. Přešifrování zrušeno." -#: src/utils_reencrypt.c:2075 +#: src/utils_reencrypt.c:2101 msgid "" "Encryption sector size increase on offline device is not supported.\n" "Activate the device first or use --force-offline-reencrypt option (dangerous!)." @@ -3945,7 +3950,7 @@ msgstr "" "podporováno. Nejprve zařízení aktivujte, nebo použijte přepínač\n" "--force-offline-reencrypt (nebezpečné!)." -#: src/utils_reencrypt.c:2117 src/utils_reencrypt_luks1.c:688 +#: src/utils_reencrypt.c:2143 src/utils_reencrypt_luks1.c:688 #: src/utils_reencrypt_luks1.c:759 msgid "" "\n" @@ -3954,58 +3959,58 @@ msgstr "" "\n" "Přešifrování přerušeno." -#: src/utils_reencrypt.c:2122 +#: src/utils_reencrypt.c:2148 msgid "Resuming LUKS reencryption in forced offline mode.\n" msgstr "Dokončuje se přešifrování LUKS ve vynuceném režimu offline.\n" -#: src/utils_reencrypt.c:2145 +#: src/utils_reencrypt.c:2171 #, c-format msgid "Device %s contains broken LUKS metadata. Aborting operation." msgstr "Zařízení %s obsahuje porušená metadata LUKS. Operace se ruší." -#: src/utils_reencrypt.c:2161 src/utils_reencrypt.c:2183 +#: src/utils_reencrypt.c:2187 src/utils_reencrypt.c:2209 #, c-format msgid "Device %s is already LUKS device. Aborting operation." msgstr "Zařízení %s je již zařízením LUKS. Operace se ruší." -#: src/utils_reencrypt.c:2189 +#: src/utils_reencrypt.c:2215 #, c-format msgid "Device %s is already in LUKS reencryption. Aborting operation." msgstr "Zařízení %s je již ve stavu přešifrování LUKS. Operace se ruší." -#: src/utils_reencrypt.c:2272 +#: src/utils_reencrypt.c:2298 msgid "LUKS2 decryption requires --header option." msgstr "Dešifrování LUKS2 vyžaduje přepínač --header." -#: src/utils_reencrypt.c:2320 +#: src/utils_reencrypt.c:2346 msgid "Command requires device as argument." msgstr "Příkaz vyžaduje jako argument zařízení." -#: src/utils_reencrypt.c:2333 +#: src/utils_reencrypt.c:2359 #, c-format msgid "Conflicting versions. Device %s is LUKS1." msgstr "Neslučitelné verze. Zařízení %s je LUKS1." -#: src/utils_reencrypt.c:2339 +#: src/utils_reencrypt.c:2365 #, c-format msgid "Conflicting versions. Device %s is in LUKS1 reencryption." msgstr "Neslučitelné verze. Zařízení %s je ve stavu přešifrování LUKS1." -#: src/utils_reencrypt.c:2345 +#: src/utils_reencrypt.c:2371 #, c-format msgid "Conflicting versions. Device %s is LUKS2." msgstr "Neslučitelné verze. Zařízení %s je LUKS2." -#: src/utils_reencrypt.c:2351 +#: src/utils_reencrypt.c:2377 #, c-format msgid "Conflicting versions. Device %s is in LUKS2 reencryption." msgstr "Neslučitelné verze. Zařízení %s je ve stavu přešifrování LUKS2." -#: src/utils_reencrypt.c:2357 +#: src/utils_reencrypt.c:2383 msgid "LUKS2 reencryption already initialized. Aborting operation." msgstr "Přešifrování LUKS2 je již inicializováno. Operace se ruší." -#: src/utils_reencrypt.c:2364 +#: src/utils_reencrypt.c:2390 msgid "Device reencryption not in progress." msgstr "Neprobíhá žádné přešifrování zařízení." From 1644f5194b12227dae25e88d0dc2eff2729ff062 Mon Sep 17 00:00:00 2001 From: Roland Illig Date: Fri, 4 Sep 2026 18:57:03 +0200 Subject: [PATCH 206/244] po: update de.po (from translationproject.org) --- po/de.po | 657 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 331 insertions(+), 326 deletions(-) diff --git a/po/de.po b/po/de.po index 869758916..7e71d4634 100644 --- a/po/de.po +++ b/po/de.po @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.7-rc2\n" +"Project-Id-Version: cryptsetup 2.8.8-rc0\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2026-07-09 10:46+0200\n" -"PO-Revision-Date: 2026-07-12 12:19+0200\n" +"POT-Creation-Date: 2026-09-02 13:18+0200\n" +"PO-Revision-Date: 2026-09-02 20:42+0200\n" "Last-Translator: Roland Illig \n" "Language-Team: German \n" "Language: de\n" @@ -19,78 +19,78 @@ msgstr "" "X-Bugs: Report translation errors to the Language-Team address.\n" "X-Generator: Poedit 3.9\n" -#: lib/libdevmapper.c:419 +#: lib/libdevmapper.c:422 msgid "Cannot initialize device-mapper, running as non-root user." msgstr "Das Kernelmodul »device-mapper« kann nicht initialisiert werden, da das Programm nicht mit Root-Rechten läuft." -#: lib/libdevmapper.c:422 +#: lib/libdevmapper.c:425 msgid "Cannot initialize device-mapper. Is dm_mod kernel module loaded?" msgstr "Das Kernelmodul »device-mapper« kann nicht initialisiert werden. Ist das Kernelmodul »dm_mod« geladen?" -#: lib/libdevmapper.c:1125 +#: lib/libdevmapper.c:1129 msgid "Requested deferred flag is not supported." msgstr "Verlangter »deferred«-Schalter wird nicht unterstützt." -#: lib/libdevmapper.c:1194 +#: lib/libdevmapper.c:1198 #, c-format msgid "DM-UUID for device %s was truncated." msgstr "DM-UUID für Gerät »%s« wurde verkürzt." -#: lib/libdevmapper.c:1598 +#: lib/libdevmapper.c:1602 msgid "Unknown dm target type." msgstr "Unbekannte Art des dm-Ziels." -#: lib/libdevmapper.c:1725 lib/libdevmapper.c:1731 lib/libdevmapper.c:1850 -#: lib/libdevmapper.c:1853 +#: lib/libdevmapper.c:1729 lib/libdevmapper.c:1735 lib/libdevmapper.c:1854 +#: lib/libdevmapper.c:1857 msgid "Requested dm-crypt performance options are not supported." msgstr "Die verlangten dm-crypt-Performance-Optionen werden nicht unterstützt." -#: lib/libdevmapper.c:1740 lib/libdevmapper.c:1746 lib/libdevmapper.c:1758 +#: lib/libdevmapper.c:1744 lib/libdevmapper.c:1750 lib/libdevmapper.c:1762 msgid "Requested dm-verity data corruption handling options are not supported." msgstr "Die verlangten dm-verity-Datenbeschädigungs-Optionen werden nicht unterstützt." -#: lib/libdevmapper.c:1752 +#: lib/libdevmapper.c:1756 msgid "Requested dm-verity tasklets option is not supported." msgstr "Die verlangte dm-verity-Tasklet-Option wird nicht unterstützt." -#: lib/libdevmapper.c:1764 +#: lib/libdevmapper.c:1768 msgid "Requested dm-verity FEC options are not supported." msgstr "Die verlangten dm-verity-FEC-Optionen werden nicht unterstützt." -#: lib/libdevmapper.c:1770 +#: lib/libdevmapper.c:1774 msgid "Requested data integrity options are not supported." msgstr "Die verlangten Datenintegritäts-Optionen werden nicht unterstützt." -#: lib/libdevmapper.c:1774 +#: lib/libdevmapper.c:1778 msgid "Requested sector_size option is not supported." msgstr "Die verlangte sector_size-Option wird nicht unterstützt." -#: lib/libdevmapper.c:1779 +#: lib/libdevmapper.c:1783 msgid "The device size is not multiple of the requested sector size." msgstr "Gerätegröße ist kein Vielfaches der gewünschten Sektorgröße." -#: lib/libdevmapper.c:1783 +#: lib/libdevmapper.c:1787 msgid "Requested integrity_key_size option is not supported." msgstr "Die verlangte integrity_key_size-Option wird nicht unterstützt." -#: lib/libdevmapper.c:1790 lib/libdevmapper.c:1796 +#: lib/libdevmapper.c:1794 lib/libdevmapper.c:1800 msgid "Requested automatic recalculation of integrity tags is not supported." msgstr "Die verlangte automatische Berechnung der Integritätsangaben wird nicht unterstützt." -#: lib/libdevmapper.c:1802 lib/libdevmapper.c:1856 lib/libdevmapper.c:1859 -#: lib/luks2/luks2_json_metadata.c:2799 +#: lib/libdevmapper.c:1806 lib/libdevmapper.c:1860 lib/libdevmapper.c:1863 +#: lib/luks2/luks2_json_metadata.c:2791 msgid "Discard/TRIM is not supported." msgstr "»Discard/TRIM« wird nicht unterstützt." -#: lib/libdevmapper.c:1808 +#: lib/libdevmapper.c:1812 msgid "Requested dm-integrity bitmap mode is not supported." msgstr "Der verlangte Bitmap-Modus für dm-Integrität wird nicht unterstützt." -#: lib/libdevmapper.c:1814 +#: lib/libdevmapper.c:1818 msgid "Requested dm-integrity inline mode is not supported." msgstr "Der verlangte Inline-Modus für dm-Integrität wird nicht unterstützt." -#: lib/libdevmapper.c:2870 +#: lib/libdevmapper.c:2877 #, c-format msgid "Failed to query dm-%s segment." msgstr "Fehler beim Abfragen des »dm-%s«-Segments." @@ -141,7 +141,7 @@ msgstr "Fehler beim Initialisieren des Krypto-Zufallszahlengenerator-Backends." msgid "Cannot initialize crypto backend." msgstr "Fehler beim Initialisieren des Krypto-Backends." -#: lib/setup.c:308 lib/setup.c:2769 lib/verity/verity.c:109 +#: lib/setup.c:308 lib/setup.c:2779 lib/verity/verity.c:109 #, c-format msgid "Hash algorithm %s not supported." msgstr "Hash-Algorithmus »%s« wird nicht unterstützt." @@ -155,7 +155,7 @@ msgstr "Fehler beim Verarbeiten des Schlüssels (mit Hash-Algorithmus »%s«)." msgid "Cannot determine device type. Incompatible activation of device?" msgstr "Geräte-Art kann nicht bestimmt werden. Inkompatible Aktivierung des Geräts?" -#: lib/setup.c:398 lib/setup.c:4177 +#: lib/setup.c:398 lib/setup.c:4193 msgid "This operation is supported only for LUKS device." msgstr "Diese Operation wird nur für LUKS-Geräte unterstützt." @@ -177,7 +177,7 @@ msgstr "Schlüsselfach %d ist ungültig, bitte wählen Sie eins zwischen 0 und % msgid "Key slot %d is full, please select another one." msgstr "Schlüsselfach %d ist voll, bitte wählen Sie ein anderes." -#: lib/setup.c:534 lib/setup.c:3878 +#: lib/setup.c:534 lib/setup.c:3888 msgid "Device size is not aligned to device logical block size." msgstr "Gerätegröße ist nicht an logischer Sektorgröße ausgerichtet." @@ -186,7 +186,7 @@ msgstr "Gerätegröße ist nicht an logischer Sektorgröße ausgerichtet." msgid "Header detected but device %s is too small." msgstr "Header gefunden, aber Gerät »%s« ist zu klein." -#: lib/setup.c:672 lib/setup.c:3763 lib/setup.c:5272 +#: lib/setup.c:672 lib/setup.c:3773 lib/setup.c:5288 #: lib/luks2/luks2_reencrypt.c:3949 lib/luks2/luks2_reencrypt.c:4438 msgid "This operation is not supported for this device type." msgstr "Diese Operation wird für diese Geräteart nicht unterstützt." @@ -199,553 +199,553 @@ msgstr "Ungültige Operation, während die Wiederverschlüsselung läuft." msgid "Failed to rollback LUKS2 metadata in memory." msgstr "Fehler beim Rückabwickeln der LUKS2-Metadaten im Speicher." -#: lib/setup.c:896 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 +#: lib/setup.c:896 lib/luks1/keymanage.c:241 lib/luks1/keymanage.c:519 #: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 #: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 #: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2954 -#: src/cryptsetup.c:3022 src/utils_reencrypt.c:2284 +#: src/cryptsetup.c:3022 src/utils_reencrypt.c:2310 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." msgstr "Gerät »%s« ist kein gültiges LUKS-Gerät." -#: lib/setup.c:899 lib/luks1/keymanage.c:517 +#: lib/setup.c:899 lib/luks1/keymanage.c:522 #, c-format msgid "Unsupported LUKS version %d." msgstr "Nicht unterstützte LUKS-Version %d." -#: lib/setup.c:1273 +#: lib/setup.c:1279 #, c-format msgid "No known cipher specification pattern detected for active device %s." msgstr "Kein bekanntes Verschlüsselungsmuster für aktives Gerät »%s« entdeckt." -#: lib/setup.c:1518 lib/setup.c:3510 lib/setup.c:3602 lib/setup.c:3614 -#: lib/setup.c:3786 lib/setup.c:5850 +#: lib/setup.c:1528 lib/setup.c:3520 lib/setup.c:3612 lib/setup.c:3624 +#: lib/setup.c:3796 lib/setup.c:5866 #, c-format msgid "Device %s is not active." msgstr "Gerät »%s« ist nicht aktiv." -#: lib/setup.c:1535 +#: lib/setup.c:1545 #, c-format msgid "Underlying device for crypt device %s disappeared." msgstr "Zugrundeliegendes Gerät für das Kryptogerät »%s« ist verschwunden." -#: lib/setup.c:1617 +#: lib/setup.c:1627 msgid "Invalid plain crypt parameters." msgstr "Ungültige Parameter für Plain-Verschlüsselung." -#: lib/setup.c:1622 lib/setup.c:2672 +#: lib/setup.c:1632 lib/setup.c:2682 msgid "Invalid key size." msgstr "Ungültige Schlüsselgröße." -#: lib/setup.c:1627 lib/setup.c:2677 lib/setup.c:2882 +#: lib/setup.c:1637 lib/setup.c:2687 lib/setup.c:2892 msgid "UUID is not supported for this crypt type." msgstr "UUID wird für diese Verschlüsselungsart nicht unterstützt." -#: lib/setup.c:1632 lib/setup.c:2682 +#: lib/setup.c:1642 lib/setup.c:2692 msgid "Detached metadata device is not supported for this crypt type." msgstr "Gerät für separierte Metadaten wird für diese Verschlüsselungsart nicht unterstützt." -#: lib/setup.c:1642 lib/setup.c:1890 lib/luks2/luks2_reencrypt.c:3035 +#: lib/setup.c:1652 lib/setup.c:1900 lib/luks2/luks2_reencrypt.c:3035 #: src/cryptsetup.c:1492 src/cryptsetup.c:3761 msgid "Unsupported encryption sector size." msgstr "Nicht unterstützte Sektorengröße für Verschlüsselung." -#: lib/setup.c:1650 lib/setup.c:1919 lib/setup.c:3872 +#: lib/setup.c:1660 lib/setup.c:1929 lib/setup.c:3882 msgid "Device size is not aligned to requested sector size." msgstr "Gerätegröße ist nicht an verlangter Sektorgröße ausgerichtet." -#: lib/setup.c:1702 lib/setup.c:1954 lib/setup.c:2331 +#: lib/setup.c:1712 lib/setup.c:1964 lib/setup.c:2341 msgid "Can't format LUKS without device." msgstr "Ohne Gerät kann LUKS nicht formatiert werden." -#: lib/setup.c:1707 lib/setup.c:1959 +#: lib/setup.c:1717 lib/setup.c:1969 #, c-format msgid "Zoned device %s cannot be used for LUKS header." msgstr "Gezontes Gerät »%s« kann nicht für einen LUKS-Kopfbereich verwendet werden." -#: lib/setup.c:1714 lib/setup.c:1966 lib/setup.c:2337 +#: lib/setup.c:1724 lib/setup.c:1976 lib/setup.c:2347 msgid "Requested data alignment is not compatible with data offset." msgstr "Die angeforderte Datenausrichtung ist nicht mit dem Datenoffset kompatibel." -#: lib/setup.c:1754 lib/setup.c:1984 +#: lib/setup.c:1764 lib/setup.c:1994 msgid "WARNING: DAX device can corrupt data as it does not guarantee atomic sector updates.\n" msgstr "Warnung: DAX-Gerät kann Daten beschädigen, da es nicht garantiert, dass Sektoren atomar aktualisiert werden.\n" -#: lib/setup.c:1792 lib/setup.c:2091 lib/setup.c:2112 lib/setup.c:2520 -#: lib/setup.c:2567 lib/setup.c:2899 +#: lib/setup.c:1802 lib/setup.c:2101 lib/setup.c:2122 lib/setup.c:2530 +#: lib/setup.c:2577 lib/setup.c:2909 #, c-format msgid "Cannot wipe header on device %s." msgstr "Fehler beim Auslöschen des Headers auf Gerät »%s«." -#: lib/setup.c:1805 lib/setup.c:2164 +#: lib/setup.c:1815 lib/setup.c:2174 #, c-format msgid "Device %s is too small for activation, there is no remaining space for data.\n" msgstr "Gerät %s ist zu klein für die Aktivierung, es ist kein Platz mehr für Daten vorhanden.\n" -#: lib/setup.c:1846 +#: lib/setup.c:1856 msgid "Volume key is too small for encryption with integrity extensions." msgstr "Laufwerksschlüssel ist zu klein für die Verschlüsselung mit Integritätserweiterungen." -#: lib/setup.c:1850 +#: lib/setup.c:1860 msgid "Integrity key size is too small." msgstr "Integritäts-Schlüsselgröße ist zu klein." -#: lib/setup.c:1859 +#: lib/setup.c:1869 #, c-format msgid "Cipher %s-%s (key size %zd bits) is not available." msgstr "Verschlüsselung »%s-%s« (Schlüsselgröße %zd Bits) ist nicht verfügbar." -#: lib/setup.c:1900 +#: lib/setup.c:1910 msgid "WARNING: The device activation will fail, dm-crypt is missing support for requested encryption sector size.\n" msgstr "WARNUNG: Die Geräteaktivierung wird fehlschlagen, dm-crypt fehlt die Unterstützung für die angeforderte Verschlüsselungsgröße.\n" -#: lib/setup.c:2094 lib/setup.c:2461 lib/setup.c:2523 lib/utils_device.c:906 +#: lib/setup.c:2104 lib/setup.c:2471 lib/setup.c:2533 lib/utils_device.c:906 #: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3074 #: lib/luks2/luks2_reencrypt.c:4498 #, c-format msgid "Device %s is too small." msgstr "Gerät »%s« ist zu klein." -#: lib/setup.c:2105 lib/setup.c:2144 lib/setup.c:2560 lib/setup.c:2618 +#: lib/setup.c:2115 lib/setup.c:2154 lib/setup.c:2570 lib/setup.c:2628 #, c-format msgid "Cannot format device %s in use." msgstr "Gerät »%s« kann nicht formatiert werden, da es gerade benutzt wird." -#: lib/setup.c:2108 lib/setup.c:2147 lib/setup.c:2563 lib/setup.c:2621 +#: lib/setup.c:2118 lib/setup.c:2157 lib/setup.c:2573 lib/setup.c:2631 #, c-format msgid "Cannot format device %s, permission denied." msgstr "Gerät »%s« kann nicht formatiert werden, Zugriff verweigert." -#: lib/setup.c:2132 lib/setup.c:2590 lib/setup.c:2972 +#: lib/setup.c:2142 lib/setup.c:2600 lib/setup.c:2982 #, c-format msgid "Cannot format integrity for device %s." msgstr "Fehler beim Formatieren der Integrität auf Gerät »%s«." -#: lib/setup.c:2151 lib/setup.c:2629 +#: lib/setup.c:2161 lib/setup.c:2639 #, c-format msgid "Cannot format device %s." msgstr "Gerät »%s« kann nicht formatiert werden." -#: lib/setup.c:2194 +#: lib/setup.c:2204 msgid "Cannot get OPAL alignment parameters." msgstr "Fehler beim Ermitteln der OPAL-Ausrichtungs-Parameter." -#: lib/setup.c:2206 +#: lib/setup.c:2216 msgid "Bogus OPAL logical block size." msgstr "Falsche Größe für logischen OPAL-Block." -#: lib/setup.c:2211 lib/luks2/hw_opal/hw_opal.c:305 +#: lib/setup.c:2221 lib/luks2/hw_opal/hw_opal.c:305 msgid "Bogus OPAL logical block size differs from device block size." msgstr "Falsche Größe für logischen OPAL-Block, weicht von der Geräte-Blockgröße ab." -#: lib/setup.c:2217 +#: lib/setup.c:2227 msgid "Requested data offset is not compatible with OPAL block size." msgstr "Der gewünschte Datenoffset ist nicht mit der OPAL-Blockgröße kompatibel." -#: lib/setup.c:2224 +#: lib/setup.c:2234 msgid "Requested data alignment is not compatible with OPAL alignment." msgstr "Die gewünschte Datenausrichtung ist nicht mit der OPAL-Ausrichtung kompatibel." -#: lib/setup.c:2244 +#: lib/setup.c:2254 msgid "Data offset does not satisfy OPAL alignment requirements." msgstr "Der Datenoffset erfüllt die OPAL-Ausrichtungsbedingungen nicht." -#: lib/setup.c:2257 +#: lib/setup.c:2267 msgid "Requested data alignment does not satisfy locking range alignment requirements." msgstr "Die gewünschte Datenausrichtung erfüllt die Anforderungen an die Ausrichtung des Sperrbereichs nicht." -#: lib/setup.c:2471 +#: lib/setup.c:2481 #, c-format msgid "Compensating device size by % sectors to align it with OPAL alignment granularity." msgstr "Gerätegröße wird um % Sektoren angepasst, um zur Granularität der OPAL-Ausrichtung zu passen." -#: lib/setup.c:2531 lib/setup.c:4260 lib/setup.c:4466 lib/utils_wipe.c:356 -#: lib/luks2/luks2_json_metadata.c:2742 lib/luks2/luks2_json_metadata.c:3017 +#: lib/setup.c:2541 lib/setup.c:4276 lib/setup.c:4482 lib/utils_wipe.c:356 +#: lib/luks2/luks2_json_metadata.c:2734 lib/luks2/luks2_json_metadata.c:3009 #, c-format msgid "Failed to acquire OPAL lock on device %s." msgstr "Fehler beim Zugriff auf die OPAL-Sperre für das Gerät »%s«." -#: lib/setup.c:2541 +#: lib/setup.c:2551 msgid "Incorrect OPAL Admin key." msgstr "Falscher OPAL-Admin-Schlüssel." -#: lib/setup.c:2543 +#: lib/setup.c:2553 msgid "Cannot setup OPAL segment." msgstr "Fehler beim Einrichten des OPAL-Segments." -#: lib/setup.c:2625 +#: lib/setup.c:2635 #, c-format msgid "Cannot format device %s, OPAL device seems to be fully write-protected now." msgstr "Gerät »%s« kann nicht formatiert werden, OPAL-Gerät scheint jetzt komplett schreibgeschützt zu sein." -#: lib/setup.c:2627 +#: lib/setup.c:2637 msgid "This is perhaps a bug in firmware. Run OPAL PSID reset and reconnect for recovery." msgstr "Das könnte ein Fehler in der Firmware sein. Lassen Sie »OPAL PSID reset und reconnect« zur Wiederherstellung." -#: lib/setup.c:2647 +#: lib/setup.c:2657 #, c-format msgid "Locking range %d reset on device %s failed." msgstr "Fehler beim Zurücksetzen des Sperrbereichs %d auf Gerät »%s«." -#: lib/setup.c:2667 +#: lib/setup.c:2677 msgid "Can't format LOOPAES without device." msgstr "Ohne Gerät kann LOOPAES nicht formatiert werden." -#: lib/setup.c:2712 +#: lib/setup.c:2722 msgid "Can't format VERITY without device." msgstr "Ohne Gerät kann VERITY nicht formatiert werden." -#: lib/setup.c:2723 lib/verity/verity.c:88 +#: lib/setup.c:2733 lib/verity/verity.c:88 #, c-format msgid "Unsupported VERITY hash type %d." msgstr "Nicht unterstützte VERITY-Hash-Art %d." -#: lib/setup.c:2729 lib/verity/verity.c:96 +#: lib/setup.c:2739 lib/verity/verity.c:96 msgid "Unsupported VERITY block size." msgstr "Nicht unterstützte VERITY-Blockgröße." -#: lib/setup.c:2734 lib/verity/verity.c:61 +#: lib/setup.c:2744 lib/verity/verity.c:61 msgid "Unsupported VERITY hash offset." msgstr "Nicht unterstützter VERITY-Hash-Offset." -#: lib/setup.c:2739 +#: lib/setup.c:2749 msgid "Unsupported VERITY FEC offset." msgstr "Nicht unterstützter VERITY-FEC-Offset." -#: lib/setup.c:2763 +#: lib/setup.c:2773 msgid "Data area overlaps with hash area." msgstr "Datenbereich und Hashbereich überlappen sich." -#: lib/setup.c:2788 +#: lib/setup.c:2798 msgid "Hash area overlaps with FEC area." msgstr "Hashbereich und FEC-Bereich überlappen sich." -#: lib/setup.c:2795 +#: lib/setup.c:2805 msgid "Data area overlaps with FEC area." msgstr "Datenbereich und FEC-Bereich überlappen sich." -#: lib/setup.c:2887 +#: lib/setup.c:2897 msgid "Integrity key size mismatch." msgstr "Größen der Integritätsschlüssel passen nicht zusammen." -#: lib/setup.c:2938 +#: lib/setup.c:2948 #, c-format msgid "WARNING: Requested tag size %d bytes differs from %s size output (%d bytes).\n" msgstr "WARNUNG: Angeforderte Taggröße mit %d Bytes unterscheidet sich von der Ausgabe der Größe %s (%d Bytes).\n" -#: lib/setup.c:3051 lib/setup.c:3153 +#: lib/setup.c:3061 lib/setup.c:3163 #, c-format msgid "Unknown or unsupported device type %s requested." msgstr "Unbekannte oder nicht unterstützte Art des Verschlüsselungsgeräts »%s« verlangt." -#: lib/setup.c:3067 +#: lib/setup.c:3077 #, c-format msgid "Device %s does not provide inline integrity data fields." msgstr "Gerät »%s« bietet keine Datenfelder für Inline-Integrität." -#: lib/setup.c:3073 +#: lib/setup.c:3083 #, c-format msgid "Inline tag size % [bytes] is larger than % provided by device %s." msgstr "Die Inline-Tag-Größe % [Bytes] ist größer als die % vom Gerät %s bereitgestellte." -#: lib/setup.c:3088 +#: lib/setup.c:3098 #, c-format msgid "Sector must be the same as device hardware sector (%zu bytes)." msgstr "Der Sektor muss mit dem Hardware-Sektor des Geräts übereinstimmen (%zu Bytes)." -#: lib/setup.c:3518 lib/setup.c:3607 lib/setup.c:3620 +#: lib/setup.c:3528 lib/setup.c:3617 lib/setup.c:3630 #, c-format msgid "Unsupported parameters on device %s." msgstr "Nicht unterstützte Parameter für Gerät %s." -#: lib/setup.c:3524 lib/setup.c:3627 lib/luks2/luks2_reencrypt.c:2929 +#: lib/setup.c:3534 lib/setup.c:3637 lib/luks2/luks2_reencrypt.c:2929 #: lib/luks2/luks2_reencrypt.c:3198 lib/luks2/luks2_reencrypt.c:3595 #, c-format msgid "Mismatching parameters on device %s." msgstr "Parameter für Gerät %s sind durcheinander." -#: lib/setup.c:3650 +#: lib/setup.c:3660 msgid "Crypt devices mismatch." msgstr "Verschlüsselungsgeräte passen nicht zusammen." -#: lib/setup.c:3682 lib/setup.c:3687 lib/luks2/luks2_reencrypt.c:2413 +#: lib/setup.c:3692 lib/setup.c:3697 lib/luks2/luks2_reencrypt.c:2413 #: lib/luks2/luks2_reencrypt.c:2945 lib/luks2/luks2_reencrypt.c:4237 #, c-format msgid "Failed to reload device %s." msgstr "Gerät »%s« konnte nicht neugeladen werden." -#: lib/setup.c:3693 lib/setup.c:3699 lib/luks2/luks2_reencrypt.c:2383 +#: lib/setup.c:3703 lib/setup.c:3709 lib/luks2/luks2_reencrypt.c:2383 #: lib/luks2/luks2_reencrypt.c:2390 lib/luks2/luks2_reencrypt.c:2959 #, c-format msgid "Failed to suspend device %s." msgstr "Gerät »%s« konnte nicht stillgelegt werden." -#: lib/setup.c:3705 lib/luks2/luks2_reencrypt.c:2397 +#: lib/setup.c:3715 lib/luks2/luks2_reencrypt.c:2397 #: lib/luks2/luks2_reencrypt.c:2980 lib/luks2/luks2_reencrypt.c:4150 #: lib/luks2/luks2_reencrypt.c:4241 #, c-format msgid "Failed to resume device %s." msgstr "Gerät »%s« konnte nicht fortgesetzt werden." -#: lib/setup.c:3720 +#: lib/setup.c:3730 #, c-format msgid "Fatal error while reloading device %s (on top of device %s)." msgstr "Schwerwiegender Fehler beim Neuladen von Gerät »%s« (über Gerät »%s«)." -#: lib/setup.c:3723 lib/setup.c:3725 +#: lib/setup.c:3733 lib/setup.c:3735 #, c-format msgid "Failed to switch device %s to dm-error." msgstr "Gerät »%s« konnte nicht auf dm-error umgeschaltet werden." -#: lib/setup.c:3768 +#: lib/setup.c:3778 msgid "Can not resize LUKS2 device with static size." msgstr "Größe des LUKS2-Geräts kann nicht geändert werden, da sie statisch ist." -#: lib/setup.c:3773 +#: lib/setup.c:3783 msgid "Resize of LUKS2 device with integrity protection is not supported." msgstr "Die Größenänderung eines LUKS2-Geräts mit Integritätsschutz wird nicht unterstützt." -#: lib/setup.c:3819 +#: lib/setup.c:3829 msgid "Cannot resize loop device." msgstr "Fehler beim Ändern der Größe des Loopback-Geräts." -#: lib/setup.c:3863 +#: lib/setup.c:3873 msgid "WARNING: Maximum size already set or kernel doesn't support resize.\n" msgstr "WARNUNG: Die maximale Größe ist bereits eingestellt oder der Kernel unterstützt die Größenänderung nicht.\n" -#: lib/setup.c:3929 +#: lib/setup.c:3939 msgid "Resize failed, the kernel doesn't support it." msgstr "Fehler bei Größenänderung, der Kernel unterstützt sie nicht." -#: lib/setup.c:3961 +#: lib/setup.c:3971 msgid "Do you really want to change UUID of device?" msgstr "Wollen Sie wirklich die UUID des Geräts ändern?" -#: lib/setup.c:4053 +#: lib/setup.c:4061 lib/setup.c:4069 msgid "Header backup file does not contain compatible LUKS header." msgstr "Header-Backupdatei enthält keinen kompatiblen LUKS-Header." -#: lib/setup.c:4160 +#: lib/setup.c:4176 #, c-format msgid "Volume %s is not active." msgstr "Laufwerk »%s« ist nicht aktiv." -#: lib/setup.c:4215 +#: lib/setup.c:4231 #, c-format msgid "Volume %s is already suspended." msgstr "Laufwerk »%s« ist bereits im Ruhezustand." -#: lib/setup.c:4241 +#: lib/setup.c:4257 #, c-format msgid "Suspend is not supported for device %s." msgstr "Das Gerät »%s« unterstützt keinen Ruhezustand." -#: lib/setup.c:4243 lib/setup.c:4251 +#: lib/setup.c:4259 lib/setup.c:4267 #, c-format msgid "Error during suspending device %s." msgstr "Das Gerät »%s« kann nicht in den Ruhezustand versetzt werden." -#: lib/setup.c:4266 +#: lib/setup.c:4282 #, c-format msgid "Device %s was suspended but hardware OPAL device cannot be locked." msgstr "Gerät »%s« ist im Ruhezustand, aber das Hardware-OPAL-Gerät kann nicht gesperrt werden." -#: lib/setup.c:4297 lib/setup.c:4491 +#: lib/setup.c:4313 lib/setup.c:4507 #, c-format msgid "Resume is not supported for device %s." msgstr "Das Gerät »%s« kann nicht aus dem Ruhezustand aufgeweckt werden." -#: lib/setup.c:4299 lib/setup.c:4481 lib/setup.c:4493 +#: lib/setup.c:4315 lib/setup.c:4497 lib/setup.c:4509 #, c-format msgid "Error during resuming device %s." msgstr "Fehler beim Aufwecken von Gerät »%s« aus dem Ruhezustand." -#: lib/setup.c:4335 +#: lib/setup.c:4351 msgid "Failed to unlink volume key from user specified keyring." msgstr "Fehler beim Ablösen des Laufwerkschlüssels vom benutzerspezifischen Schlüsselbund." -#: lib/setup.c:4457 lib/setup.c:5637 +#: lib/setup.c:4473 lib/setup.c:5653 msgid "Failed to link volume key in user defined keyring." msgstr "Fehler beim Verknüpfen des Laufwerkschlüssels im benutzerspezifischen Schlüsselbund." -#: lib/setup.c:4556 src/cryptsetup.c:2722 +#: lib/setup.c:4572 src/cryptsetup.c:2722 #, c-format msgid "Volume %s is not suspended." msgstr "Laufwerk »%s« ist nicht im Ruhezustand." -#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1856 +#: lib/setup.c:4683 lib/setup.c:7326 lib/setup.c:7348 src/cryptsetup.c:1856 #: src/cryptsetup.c:2260 src/cryptsetup.c:2278 src/utils_reencrypt.c:306 -#: src/utils_reencrypt.c:1969 +#: src/utils_reencrypt.c:1995 msgid "Volume key does not match the volume." msgstr "Der Laufwerksschlüssel passt nicht zum Laufwerk." -#: lib/setup.c:4821 +#: lib/setup.c:4837 msgid "Failed to swap new key slot." msgstr "Neues Schlüsselfach konnte nicht ausgewechselt werden." -#: lib/setup.c:4919 +#: lib/setup.c:4935 #, c-format msgid "Key slot %d is invalid." msgstr "Schlüsselfach %d ist ungültig." -#: lib/setup.c:4925 src/cryptsetup.c:1977 src/cryptsetup.c:2437 +#: lib/setup.c:4941 src/cryptsetup.c:1977 src/cryptsetup.c:2437 #: src/cryptsetup.c:3122 src/cryptsetup.c:3182 #, c-format msgid "Keyslot %d is not active." msgstr "Schlüsselfach %d ist nicht aktiv." -#: lib/setup.c:4944 +#: lib/setup.c:4960 msgid "Device header overlaps with data area." msgstr "Geräteheader und Datenbereich überlappen sich." -#: lib/setup.c:5165 +#: lib/setup.c:5181 msgid "Reencryption in-progress. Cannot activate device." msgstr "Wiederverschlüsselung läuft bereits. Das Gerät kann nicht aktiviert werden." -#: lib/setup.c:5167 lib/luks2/luks2_json_metadata.c:2913 +#: lib/setup.c:5183 lib/luks2/luks2_json_metadata.c:2905 #: lib/luks2/luks2_reencrypt.c:3726 msgid "Failed to get reencryption lock." msgstr "Fehler beim Zugriff auf die Sperre zur Wiederverschlüsselung." -#: lib/setup.c:5189 +#: lib/setup.c:5205 msgid "LUKS2 reencryption recovery using volume key(s) failed." msgstr "Fehler beim Wiederherstellen der LUKS2-Wiederverschlüsselung mittels Laufwerksschlüssel(n)." -#: lib/setup.c:5325 +#: lib/setup.c:5341 #, c-format msgid "Device %s already exists." msgstr "Das Gerät »%s« existiert bereits." -#: lib/setup.c:5332 +#: lib/setup.c:5348 #, c-format msgid "Cannot use device %s, name is invalid or still in use." msgstr "Gerät »%s« kann nicht verwendet werden, da es gerade benutzt wird oder der Name ungültig ist." -#: lib/setup.c:5344 +#: lib/setup.c:5360 msgid "Reencryption volume keys do not match the volume." msgstr "Die Laufwerksschlüssel für die Wiederverschlüsselung passen nicht zum Laufwerk." -#: lib/setup.c:5361 +#: lib/setup.c:5377 msgid "Incorrect volume key specified for plain device." msgstr "Falscher Laufwerksschlüssel für Plain-Gerät angegeben." -#: lib/setup.c:5387 lib/setup.c:5448 +#: lib/setup.c:5403 lib/setup.c:5464 msgid "Device type is not properly initialized." msgstr "Geräteart ist nicht richtig initialisiert." -#: lib/setup.c:5486 +#: lib/setup.c:5502 msgid "Kernel keyring is not supported by the kernel." msgstr "Der Kernel-Schlüsselbund wird vom Kernel nicht unterstützt." -#: lib/setup.c:5490 +#: lib/setup.c:5506 msgid "Kernel keyring missing: required for passing signature to kernel." msgstr "Der Kernel-Schlüsselbund fehlt. Wird benötigt, um die Signatur zum Kernel zu übergeben." -#: lib/setup.c:5545 +#: lib/setup.c:5561 #, c-format msgid "Cannot use keyring key %s." msgstr "Schlüsselringschlüssel »%s« kann nicht verwendet werden." -#: lib/setup.c:5758 +#: lib/setup.c:5774 msgid "Incorrect root hash specified for verity device." msgstr "Falscher Root-Hash-Schlüssel für VERITY-Gerät angegeben." -#: lib/setup.c:5799 lib/setup.c:5824 +#: lib/setup.c:5815 lib/setup.c:5840 msgid "OPAL does not support deferred deactivation." msgstr "OPAL unterstützt verzögertes Deaktivieren nicht." -#: lib/setup.c:5814 lib/setup.c:5845 lib/luks2/luks2_json_metadata.c:2978 +#: lib/setup.c:5830 lib/setup.c:5861 lib/luks2/luks2_json_metadata.c:2970 #: src/utils_reencrypt.c:89 #, c-format msgid "Device %s is still in use." msgstr "Gerät »%s« wird gerade benutzt." -#: lib/setup.c:5832 +#: lib/setup.c:5848 #, c-format msgid "Could not cancel deferred remove from device %s." msgstr "Fehler beim Abbrechen des verzögerten Löschens von Gerät »%s«." -#: lib/setup.c:5854 +#: lib/setup.c:5870 #, c-format msgid "Invalid device %s." msgstr "Ungültiges Gerät »%s«." -#: lib/setup.c:6001 +#: lib/setup.c:6017 msgid "Volume key buffer too small." msgstr "Laufwerks-Schlüsselpuffer zu klein." -#: lib/setup.c:6012 +#: lib/setup.c:6028 msgid "Cannot retrieve volume key for LUKS2 device." msgstr "Fehler beim Ermitteln des Laufwerksschlüssels für LUKS2-Gerät." -#: lib/setup.c:6021 +#: lib/setup.c:6037 msgid "Cannot retrieve volume key for LUKS1 device." msgstr "Fehler beim Ermitteln des Laufwerksschlüssels für LUKS1-Gerät." -#: lib/setup.c:6035 +#: lib/setup.c:6051 msgid "Cannot retrieve volume key for plain device." msgstr "Fehler beim Ermitteln des Laufwerksschlüssels für Plain-Gerät." -#: lib/setup.c:6043 +#: lib/setup.c:6059 msgid "Cannot retrieve root hash for verity device." msgstr "Root-Hash für Verity-Gerät kann nicht ermittelt werden." -#: lib/setup.c:6052 +#: lib/setup.c:6068 msgid "Cannot retrieve volume key for BITLK device." msgstr "Fehler beim Ermitteln des Laufwerksschlüssels für BITLK-Gerät." -#: lib/setup.c:6057 +#: lib/setup.c:6073 msgid "Cannot retrieve volume key for FVAULT2 device." msgstr "Fehler beim Ermitteln des Laufwerksschlüssels für FVAULT2-Gerät." -#: lib/setup.c:6059 +#: lib/setup.c:6075 #, c-format msgid "This operation is not supported for %s crypt device." msgstr "Diese Operation wird für Kryptogerät »%s« nicht unterstützt." -#: lib/setup.c:6244 lib/setup.c:6255 +#: lib/setup.c:6260 lib/setup.c:6271 msgid "Dump operation is not supported for this device type." msgstr "Die Dump-Operation wird für diese Geräteart nicht unterstützt." -#: lib/setup.c:6635 +#: lib/setup.c:6651 #, c-format msgid "Data offset is not multiple of %u bytes." msgstr "Datenoffset ist kein Vielfaches von %u Bytes." -#: lib/setup.c:6943 +#: lib/setup.c:6959 #, c-format msgid "Cannot convert device %s which is still in use." msgstr "Gerät »%s« kann nicht konvertiert werden, da es gerade benutzt wird." -#: lib/setup.c:7251 lib/setup.c:7406 +#: lib/setup.c:7267 lib/setup.c:7422 #, c-format msgid "Failed to assign keyslot %u as the new volume key." msgstr "Schlüsselfach %u konnte nicht dem Laufwerksschlüssel zugeordnet werden." -#: lib/setup.c:7275 +#: lib/setup.c:7291 msgid "Failed to initialize default LUKS2 keyslot parameters." msgstr "Fehler beim Initialisieren der LUKS2-Schlüsselfach-Parameter." -#: lib/setup.c:7281 +#: lib/setup.c:7297 #, c-format msgid "Failed to assign keyslot %d to digest." msgstr "Schlüsselfach %d konnte nicht dem Digest zugeordnet werden." -#: lib/setup.c:7523 +#: lib/setup.c:7539 msgid "Cannot add key slot, all slots disabled and no volume key provided." msgstr "Schlüsselfach kann nicht hinzugefügt werden, da alle Fächer deaktiviert sind und kein Laufwerksschlüssel angegeben wurde." -#: lib/setup.c:7611 lib/setup.c:7626 lib/verity/verity.c:333 +#: lib/setup.c:7627 lib/setup.c:7642 lib/verity/verity.c:333 msgid "Failed to load key in kernel keyring." msgstr "Fehler beim Laden des Schlüssels im Kernel-Schlüsselbund." -#: lib/setup.c:7807 +#: lib/setup.c:7823 #, c-format msgid "Could not find keyring described by \"%s\"." msgstr "Schlüsselbund mit der Beschreibung »%s« nicht gefunden." -#: lib/setup.c:7872 +#: lib/setup.c:7888 msgid "Failed to acquire global memory-hard access serialization lock." msgstr "Globale Speicherzugriffsserialisierungssperre konnte nicht angefordert werden." @@ -787,7 +787,7 @@ msgid "Cannot read requested amount of data." msgstr "Die gewünschte Menge an Daten kann nicht eingelesen werden." #: lib/utils_device.c:207 lib/utils_storage_wrappers.c:99 -#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2257 +#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2283 #, c-format msgid "Device %s does not exist or access denied." msgstr "Gerät »%s« existiert nicht oder Zugriff verweigert." @@ -903,16 +903,16 @@ msgstr "Die Anzahl der verlangten parallelen Threads für PBKDF darf nicht 0 sei msgid "Only PBKDF2 is supported in FIPS mode." msgstr "Im FIPS-Modus wird ausschließlich PBKDF2 unterstützt." -#: lib/utils_benchmark.c:171 +#: lib/utils_benchmark.c:175 msgid "PBKDF benchmark disabled but iterations not set." msgstr "PBKDF-Benchmark deaktiviert, aber Anzahl der Iterationen nicht angegeben." -#: lib/utils_benchmark.c:190 +#: lib/utils_benchmark.c:194 #, c-format msgid "Not compatible PBKDF2 options (using hash algorithm %s)." msgstr "Inkompatible PBKDF2-Optionen (mit Hash-Algorithmus »%s«)." -#: lib/utils_benchmark.c:210 +#: lib/utils_benchmark.c:214 msgid "Not compatible PBKDF options." msgstr "Inkompatible PBKDF2-Optionen." @@ -962,9 +962,9 @@ msgstr "Schlüsselgröße im XTS-Modus muss entweder 256 oder 512 Bits sein." msgid "Cipher specification should be in [cipher]-[mode]-[iv] format." msgstr "Verschlüsselungsverfahren sollte im Format [Verfahren]-[Modus]-[IV] sein." -#: lib/luks1/keyencryption.c:85 lib/luks1/keymanage.c:353 -#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1132 -#: lib/luks2/luks2_json_metadata.c:1518 lib/luks2/luks2_keyslot.c:711 +#: lib/luks1/keyencryption.c:85 lib/luks1/keymanage.c:358 +#: lib/luks1/keymanage.c:665 lib/luks1/keymanage.c:1133 +#: lib/luks2/luks2_json_metadata.c:1510 lib/luks2/luks2_keyslot.c:711 #, c-format msgid "Cannot write to device %s, permission denied." msgstr "Fehler beim Schreiben auf Gerät »%s«, Zugriff verweigert." @@ -982,13 +982,13 @@ msgstr "Fehler beim Zugriff auf das temporäre Schlüsselspeichergerät." msgid "IO error while encrypting keyslot." msgstr "E/A-Fehler beim Verschlüsseln des Schlüsselfachs." -#: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:356 -#: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:659 +#: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:361 +#: lib/luks1/keymanage.c:619 lib/luks1/keymanage.c:668 lib/tcrypt/tcrypt.c:659 #: lib/fvault2/fvault2.c:872 lib/verity/verity.c:67 lib/verity/verity.c:183 #: lib/verity/verity_hash.c:312 lib/verity/verity_hash.c:321 #: lib/verity/verity_hash.c:350 lib/verity/verity_fec.c:247 #: lib/verity/verity_fec.c:259 lib/verity/verity_fec.c:264 -#: lib/luks2/luks2_json_metadata.c:1521 src/utils_reencrypt_luks1.c:108 +#: lib/luks2/luks2_json_metadata.c:1513 src/utils_reencrypt_luks1.c:108 #: src/utils_reencrypt_luks1.c:120 #, c-format msgid "Cannot open device %s." @@ -1003,61 +1003,61 @@ msgstr "E/A-Fehler beim Entschlüsseln des Schlüsselfachs." msgid "Device %s is too small. (LUKS1 requires at least % bytes.)" msgstr "Gerät »%s« ist zu klein. (LUKS1 benötigt mindestens % Bytes.)" -#: lib/luks1/keymanage.c:138 lib/luks1/keymanage.c:146 -#: lib/luks1/keymanage.c:158 lib/luks1/keymanage.c:169 -#: lib/luks1/keymanage.c:181 +#: lib/luks1/keymanage.c:143 lib/luks1/keymanage.c:151 +#: lib/luks1/keymanage.c:163 lib/luks1/keymanage.c:174 +#: lib/luks1/keymanage.c:186 #, c-format msgid "LUKS keyslot %u is invalid." msgstr "LUKS-Schlüsselfach %u ist ungültig." -#: lib/luks1/keymanage.c:254 lib/luks2/luks2_json_metadata.c:1382 +#: lib/luks1/keymanage.c:259 lib/luks2/luks2_json_metadata.c:1382 #, c-format msgid "Requested header backup file %s already exists." msgstr "Angeforderte Header-Backupdatei »%s« existiert bereits." -#: lib/luks1/keymanage.c:256 lib/luks2/luks2_json_metadata.c:1384 +#: lib/luks1/keymanage.c:261 lib/luks2/luks2_json_metadata.c:1384 #, c-format msgid "Cannot create header backup file %s." msgstr "Fehler beim Anlegen der Header-Backupdatei »%s«." -#: lib/luks1/keymanage.c:263 lib/luks2/luks2_json_metadata.c:1391 +#: lib/luks1/keymanage.c:268 lib/luks2/luks2_json_metadata.c:1391 #, c-format msgid "Cannot write header backup file %s." msgstr "Fehler beim Speichern der Header-Backupdatei »%s«." -#: lib/luks1/keymanage.c:295 lib/luks2/luks2_json_metadata.c:1428 +#: lib/luks1/keymanage.c:300 lib/luks2/luks2_json_metadata.c:1420 msgid "Backup file does not contain valid LUKS header." msgstr "Backupdatei enthält keinen gültigen LUKS-Header." -#: lib/luks1/keymanage.c:308 lib/luks1/keymanage.c:580 -#: lib/luks2/luks2_json_metadata.c:1450 +#: lib/luks1/keymanage.c:313 lib/luks1/keymanage.c:585 +#: lib/luks2/luks2_json_metadata.c:1442 #, c-format msgid "Cannot open header backup file %s." msgstr "Fehler beim Öffnen der Header-Backupdatei »%s«." -#: lib/luks1/keymanage.c:316 lib/luks2/luks2_json_metadata.c:1458 +#: lib/luks1/keymanage.c:321 lib/luks2/luks2_json_metadata.c:1450 #, c-format msgid "Cannot read header backup file %s." msgstr "Fehler beim Einlesen der Header-Backupdatei »%s«." -#: lib/luks1/keymanage.c:326 +#: lib/luks1/keymanage.c:331 msgid "Data offset or key size differs on device and backup, restore failed." msgstr "Unterschiedlicher Offset oder Schlüsselgröße zwischen Gerät und Backup. Wiederherstellung fehlgeschlagen." -#: lib/luks1/keymanage.c:334 +#: lib/luks1/keymanage.c:339 #, c-format msgid "Device %s %s%s" msgstr "Gerät »%s« %s%s" -#: lib/luks1/keymanage.c:335 +#: lib/luks1/keymanage.c:340 msgid "does not contain LUKS header. Replacing header can destroy data on that device." msgstr "enthält keinen LUKS-Header. Das Ersetzen des Headers kann Daten auf dem Gerät zerstören." -#: lib/luks1/keymanage.c:336 +#: lib/luks1/keymanage.c:341 msgid "already contains LUKS header. Replacing header will destroy existing keyslots." msgstr "enthält bereits einen LUKS-Header. Das Ersetzen des Headers wird bestehende Schlüsselfächer zerstören." -#: lib/luks1/keymanage.c:337 lib/luks2/luks2_json_metadata.c:1490 +#: lib/luks1/keymanage.c:342 lib/luks2/luks2_json_metadata.c:1482 msgid "" "\n" "WARNING: real device header has different UUID than backup!" @@ -1065,132 +1065,132 @@ msgstr "" "\n" "WARNUNG: Der Header des echten Geräts hat eine andere UUID als das Backup!" -#: lib/luks1/keymanage.c:385 +#: lib/luks1/keymanage.c:390 msgid "Non standard key size, manual repair required." msgstr "Ungewöhnliche Schlüsselgröße, manuelles Reparieren erforderlich." -#: lib/luks1/keymanage.c:395 +#: lib/luks1/keymanage.c:400 msgid "Non standard keyslots alignment, manual repair required." msgstr "Ungewöhnliche Ausrichtung der Schlüsselfächer, manuelles Reparieren erforderlich." -#: lib/luks1/keymanage.c:404 +#: lib/luks1/keymanage.c:409 #, c-format msgid "Cipher mode repaired (%s -> %s)." msgstr "Verschlüsselungsmodus repariert (%s -> %s)." -#: lib/luks1/keymanage.c:415 +#: lib/luks1/keymanage.c:420 #, c-format msgid "Cipher hash repaired to lowercase (%s)." msgstr "Chiffre-Hash in Kleinbuchstaben umgewandelt (%s)." -#: lib/luks1/keymanage.c:417 lib/luks1/keymanage.c:523 -#: lib/luks1/keymanage.c:756 +#: lib/luks1/keymanage.c:422 lib/luks1/keymanage.c:528 +#: lib/luks1/keymanage.c:757 #, c-format msgid "Requested LUKS hash %s is not supported." msgstr "Verlangter LUKS-Hash »%s« wird nicht unterstützt." -#: lib/luks1/keymanage.c:431 +#: lib/luks1/keymanage.c:436 msgid "Repairing keyslots." msgstr "Schlüsselfächer werden repariert." -#: lib/luks1/keymanage.c:450 +#: lib/luks1/keymanage.c:455 #, c-format msgid "Keyslot %i: offset repaired (%u -> %u)." msgstr "Schlüsselfach %i: Offset repariert (%u -> %u)." -#: lib/luks1/keymanage.c:458 +#: lib/luks1/keymanage.c:463 #, c-format msgid "Keyslot %i: stripes repaired (%u -> %u)." msgstr "Schlüsselfach %i: Streifen repariert (%u -> %u)." # XXX -#: lib/luks1/keymanage.c:467 +#: lib/luks1/keymanage.c:472 #, c-format msgid "Keyslot %i: bogus partition signature." msgstr "Schlüsselfach %i: schwindlerische Partitions-Signatur." -#: lib/luks1/keymanage.c:472 +#: lib/luks1/keymanage.c:477 #, c-format msgid "Keyslot %i: salt wiped." msgstr "Schlüsselfach %i: Salt gelöscht." -#: lib/luks1/keymanage.c:489 +#: lib/luks1/keymanage.c:494 msgid "Writing LUKS header to disk." msgstr "LUKS-Header wird auf den Datenträger geschrieben." -#: lib/luks1/keymanage.c:494 +#: lib/luks1/keymanage.c:499 msgid "Repair failed." msgstr "Fehler beim Reparieren." -#: lib/luks1/keymanage.c:549 +#: lib/luks1/keymanage.c:554 #, c-format msgid "LUKS cipher mode %s is invalid." msgstr "LUKS-Verschlüsselungsmodus %s ist ungültig." -#: lib/luks1/keymanage.c:554 +#: lib/luks1/keymanage.c:559 #, c-format msgid "LUKS hash %s is invalid." msgstr "LUKS-Hash %s ist ungültig." -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 +#: lib/luks1/keymanage.c:566 src/cryptsetup.c:1367 msgid "No known problems detected for LUKS header." msgstr "Keine bekannten Probleme im LUKS-Header erkannt." -#: lib/luks1/keymanage.c:689 +#: lib/luks1/keymanage.c:690 #, c-format msgid "Error during update of LUKS header on device %s." msgstr "Fehler beim Aktualisieren des LUKS-Headers auf Gerät »%s«." -#: lib/luks1/keymanage.c:697 +#: lib/luks1/keymanage.c:698 #, c-format msgid "Error re-reading LUKS header after update on device %s." msgstr "Fehler beim Neueinlesen des LUKS-Headers nach dem Aktualisieren auf Gerät »%s«." -#: lib/luks1/keymanage.c:750 +#: lib/luks1/keymanage.c:751 msgid "Data offset for LUKS header must be either 0 or higher than header size." msgstr "Daten-Offset für LUKS-Header muss entweder 0 sein oder mehr als die Headergröße." -#: lib/luks1/keymanage.c:761 lib/luks1/keymanage.c:832 -#: lib/luks2/luks2_json_format.c:231 lib/luks2/luks2_json_metadata.c:1261 +#: lib/luks1/keymanage.c:762 lib/luks1/keymanage.c:833 +#: lib/luks2/luks2_json_format.c:240 lib/luks2/luks2_json_metadata.c:1261 #: src/utils_reencrypt.c:703 msgid "Wrong LUKS UUID format provided." msgstr "Falsches LUKS-UUID-Format angegeben." -#: lib/luks1/keymanage.c:783 +#: lib/luks1/keymanage.c:784 msgid "Cannot create LUKS header: reading random salt failed." msgstr "LUKS-Header kann nicht angelegt werden: Fehler beim Einlesen des zufälligen Salts." # XXX -#: lib/luks1/keymanage.c:811 +#: lib/luks1/keymanage.c:812 #, c-format msgid "Cannot create LUKS header: header digest failed (using hash %s)." msgstr "LUKS-Header kann nicht angelegt werden: Fehler beim Hashen des Headers (mit Hash-Algorithmus »%s«)." -#: lib/luks1/keymanage.c:856 +#: lib/luks1/keymanage.c:857 #, c-format msgid "Key slot %d active, purge first." msgstr "Schlüsselfach %d aktiv, löschen Sie es erst." -#: lib/luks1/keymanage.c:862 +#: lib/luks1/keymanage.c:863 #, c-format msgid "Key slot %d material includes too few stripes. Header manipulation?" msgstr "Material für Schlüsselfach %d enthält zu wenige Streifen. Manipulation des Headers?" -#: lib/luks1/keymanage.c:900 lib/luks2/luks2_keyslot_luks2.c:217 +#: lib/luks1/keymanage.c:901 lib/luks2/luks2_keyslot_luks2.c:217 msgid "PBKDF2 iteration value overflow." msgstr "Überlauf im Iterationswert von PBKDF2." -#: lib/luks1/keymanage.c:1022 +#: lib/luks1/keymanage.c:1023 #, c-format msgid "Cannot open keyslot (using hash %s)." msgstr "Schlüsselfach kann nicht geöffnet werden (mit Hash-Algorithmus »%s«)." -#: lib/luks1/keymanage.c:1118 +#: lib/luks1/keymanage.c:1119 #, c-format msgid "Key slot %d is invalid, please select keyslot between 0 and %d." msgstr "Schlüsselfach %d ist ungültig, bitte wählen Sie ein Schlüsselfach zwischen 0 und %d." -#: lib/luks1/keymanage.c:1136 lib/luks2/luks2_keyslot.c:715 +#: lib/luks1/keymanage.c:1137 lib/luks2/luks2_keyslot.c:715 #, c-format msgid "Cannot wipe device %s." msgstr "Gerät »%s« kann nicht ausgelöscht werden." @@ -1368,33 +1368,33 @@ msgstr "Diese Operation wird nicht unterstützt." msgid "Unexpected key data size." msgstr "Unerwartete Größe des Datenschlüssels." -#: lib/bitlk/bitlk.c:1442 +#: lib/bitlk/bitlk.c:1448 msgid "This BITLK device is in an unsupported state and cannot be activated." msgstr "Dieses BITLK-Gerät ist in einem nicht unterstützten Zustand und kann daher nicht aktiviert werden." -#: lib/bitlk/bitlk.c:1447 +#: lib/bitlk/bitlk.c:1453 #, c-format msgid "BITLK devices with type '%s' cannot be activated." msgstr "BITLK-Geräte der Art »%s« können nicht aktiviert werden." -#: lib/bitlk/bitlk.c:1486 +#: lib/bitlk/bitlk.c:1492 #, c-format msgid "WARNING: BitLocker volume size % does not match the underlying device size %" msgstr "WARNUNG: BitLocker-Datenträgergröße % stimmt nicht mit der zugrunde liegenden Gerätegröße % überein" -#: lib/bitlk/bitlk.c:1613 +#: lib/bitlk/bitlk.c:1634 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK IV." msgstr "Gerät kann nicht aktiviert werden, dem Kernelmodul dm-crypt fehlt die Unterstützung für BITLK-IV." -#: lib/bitlk/bitlk.c:1617 +#: lib/bitlk/bitlk.c:1638 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK Elephant diffuser." msgstr "Gerät kann nicht aktiviert werden, da dem Kernelmodul dm-crypt die Unterstützung für BITLK-Elephant-Verschleierer fehlt." -#: lib/bitlk/bitlk.c:1621 +#: lib/bitlk/bitlk.c:1642 msgid "Cannot activate device, kernel dm-crypt is missing support for large sector size." msgstr "Gerät kann nicht aktiviert werden, dem Kernelmodul dm-crypt fehlt die Unterstützung für große Sektoren." -#: lib/bitlk/bitlk.c:1625 +#: lib/bitlk/bitlk.c:1646 msgid "Cannot activate device, kernel dm-zero module is missing." msgstr "Gerät kann nicht aktiviert werden, das Kernelmodul dm-crypt existiert nicht." @@ -1551,24 +1551,24 @@ msgstr "Fehler beim Ermitteln der Größe von Gerät »%s«." msgid "Incompatible kernel dm-integrity metadata (version %u) detected on %s." msgstr "Inkompatible Metadaten des Kernelmoduls dm-integrity (Version %u) auf %s entdeckt." -#: lib/integrity/integrity.c:308 lib/integrity/integrity.c:492 +#: lib/integrity/integrity.c:309 lib/integrity/integrity.c:493 msgid "Kernel does not support dm-integrity mapping." msgstr "Kernel unterstützt dm-integrity-Zuordnung nicht." -#: lib/integrity/integrity.c:314 +#: lib/integrity/integrity.c:315 msgid "Kernel does not support dm-integrity fixed metadata alignment." msgstr "Kernel unterstützt feste Ausrichtung der Metadaten für dm-integrity nicht." -#: lib/integrity/integrity.c:323 +#: lib/integrity/integrity.c:324 msgid "Kernel refuses to activate insecure recalculate option (see legacy activation options to override)." msgstr "Der Kernel weigert sich, die unsichere Neuberechnungs-Option zu aktivieren. Um dies zu übersteuern, können Sie die veralteten Aktivierungsoptionen nutzen." -#: lib/integrity/integrity.c:329 +#: lib/integrity/integrity.c:330 msgid "Kernel does not support dm-integrity inline mode." msgstr "Kernel unterstützt dm-integrity-Inlinemodus nicht." #: lib/luks2/luks2_disk_metadata.c:382 lib/luks2/luks2_json_metadata.c:1184 -#: lib/luks2/luks2_json_metadata.c:1510 +#: lib/luks2/luks2_json_metadata.c:1502 #, c-format msgid "Failed to acquire write lock on device %s." msgstr "Fehler beim exklusiven Schreibzugriff auf Gerät »%s«." @@ -1590,22 +1590,22 @@ msgstr "" msgid "WARNING: keyslots area (% bytes) is very small, available LUKS2 keyslot count is very limited.\n" msgstr "WARNING: Der Schlüsselfach-Bereich (% Bytes) ist sehr klein, die LUKS2-Schlüsselfachanzahl ist sehr begrenzt.\n" -#: lib/luks2/luks2_json_format.c:418 +#: lib/luks2/luks2_json_format.c:427 msgid "Requested data offset is too small." msgstr "Verlangter Daten-Offset ist zu klein." -#: lib/luks2/luks2_json_format.c:459 +#: lib/luks2/luks2_json_format.c:468 #, c-format msgid "WARNING: LUKS2 metadata size changed to % bytes.\n" msgstr "Warnung: Größe der LUKS2-Metadaten wurde auf % geändert.\n" -#: lib/luks2/luks2_json_format.c:463 +#: lib/luks2/luks2_json_format.c:472 #, c-format msgid "WARNING: LUKS2 keyslots area size changed to % bytes.\n" msgstr "Warnung: Größe des LUKS2-Schlüsselfachbereichs wurde auf % Bytes geändert.\n" #: lib/luks2/luks2_json_metadata.c:1171 lib/luks2/luks2_json_metadata.c:1357 -#: lib/luks2/luks2_json_metadata.c:1417 lib/luks2/luks2_keyslot_luks2.c:71 +#: lib/luks2/luks2_json_metadata.c:1412 lib/luks2/luks2_keyslot_luks2.c:71 #, c-format msgid "Failed to acquire read lock on device %s." msgstr "Fehler beim Zugriff auf die Lesesperre für das Gerät »%s«." @@ -1614,33 +1614,33 @@ msgstr "Fehler beim Zugriff auf die Lesesperre für das Gerät »%s«." msgid "Label is too long." msgstr "Etikett ist zu lang." -#: lib/luks2/luks2_json_metadata.c:1435 +#: lib/luks2/luks2_json_metadata.c:1427 #, c-format msgid "Forbidden LUKS2 requirements detected in backup %s." msgstr "Verbotene LUKS2-Anforderungen in Backup »%s« entdeckt." -#: lib/luks2/luks2_json_metadata.c:1474 +#: lib/luks2/luks2_json_metadata.c:1466 msgid "Data offset differ on device and backup, restore failed." msgstr "Unterschiedliche Datenoffsets auf Gerät und Backup. Wiederherstellung fehlgeschlagen." -#: lib/luks2/luks2_json_metadata.c:1480 +#: lib/luks2/luks2_json_metadata.c:1472 msgid "Binary header with keyslot areas size differ on device and backup, restore failed." msgstr "Unterschiedliche Größe der Binärheader mit Schlüsselfach-Bereichen zwischen Gerät und Backup. Wiederherstellung fehlgeschlagen." -#: lib/luks2/luks2_json_metadata.c:1487 +#: lib/luks2/luks2_json_metadata.c:1479 #, c-format msgid "Device %s %s%s%s%s" msgstr "Gerät »%s« %s%s%s%s" -#: lib/luks2/luks2_json_metadata.c:1488 +#: lib/luks2/luks2_json_metadata.c:1480 msgid "does not contain LUKS2 header. Replacing header can destroy data on that device." msgstr "enthält keinen LUKS2-Header. Das Ersetzen des Headers kann Daten auf dem Gerät zerstören." -#: lib/luks2/luks2_json_metadata.c:1489 +#: lib/luks2/luks2_json_metadata.c:1481 msgid "already contains LUKS2 header. Replacing header will destroy existing keyslots." msgstr "enthält bereits einen LUKS2-Header. Das Ersetzen des Headers wird bestehende Schlüsselfächer zerstören." -#: lib/luks2/luks2_json_metadata.c:1491 +#: lib/luks2/luks2_json_metadata.c:1483 msgid "" "\n" "WARNING: unknown LUKS2 requirements detected in real device header!\n" @@ -1650,7 +1650,7 @@ msgstr "" "WARNUNG: Unbekannte LUKS2-Anforderungen im echten Geräteheader entdeckt!\n" "Das Ersetzen des Headers mit dem Backup kann zu Datenverlust auf dem Gerät führen!" -#: lib/luks2/luks2_json_metadata.c:1493 +#: lib/luks2/luks2_json_metadata.c:1485 msgid "" "\n" "WARNING: Unfinished offline reencryption detected on the device!\n" @@ -1660,84 +1660,84 @@ msgstr "" "WARNUNG: Unvollendete Offline-Wiederverschlüsselung auf dem Gerät entdeckt!\n" "Das Ersetzen des Headers mit dem Backup kann zu Datenverlust auf dem Gerät führen." -#: lib/luks2/luks2_json_metadata.c:1591 +#: lib/luks2/luks2_json_metadata.c:1583 #, c-format msgid "Ignored unknown flag %s." msgstr "Unbekannter Schalter »%s« wird ignoriert." -#: lib/luks2/luks2_json_metadata.c:2563 lib/luks2/luks2_reencrypt.c:2110 +#: lib/luks2/luks2_json_metadata.c:2555 lib/luks2/luks2_reencrypt.c:2110 #, c-format msgid "Missing key for dm-crypt segment %u" msgstr "Fehlender Schlüssel für dm-crypt-Segment %u" -#: lib/luks2/luks2_json_metadata.c:2575 lib/luks2/luks2_reencrypt.c:2123 +#: lib/luks2/luks2_json_metadata.c:2567 lib/luks2/luks2_reencrypt.c:2123 msgid "Failed to set dm-crypt segment." msgstr "Fehler beim Festlegen des »dm-crypt«-Segments." -#: lib/luks2/luks2_json_metadata.c:2581 lib/luks2/luks2_reencrypt.c:2129 +#: lib/luks2/luks2_json_metadata.c:2573 lib/luks2/luks2_reencrypt.c:2129 msgid "Failed to set dm-linear segment." msgstr "Fehler beim Festlegen des »dm-linear«-Segments." -#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:580 +#: lib/luks2/luks2_json_metadata.c:2693 src/utils_reencrypt.c:580 msgid "No known cipher specification pattern detected in LUKS2 header." msgstr "Kein bekanntes Verschlüsselungsmuster in LUKS2-Kopfbereich entdeckt." -#: lib/luks2/luks2_json_metadata.c:2709 +#: lib/luks2/luks2_json_metadata.c:2701 msgid "OPAL device must have static device size." msgstr "OPAL-Gerät muss statische Gerätegröße haben." -#: lib/luks2/luks2_json_metadata.c:2729 +#: lib/luks2/luks2_json_metadata.c:2721 msgid "Encrypted OPAL device with integrity must be smaller than locking range." msgstr "Verschlüsseltes OPAL-Gerät mit Integrität muss kleiner als der Sperrbereich sein." -#: lib/luks2/luks2_json_metadata.c:2734 +#: lib/luks2/luks2_json_metadata.c:2726 msgid "OPAL device must have same size as locking range." msgstr "OPAL-Gerät muss dieselbe Größe wie der Sperrbereich haben." -#: lib/luks2/luks2_json_metadata.c:2754 +#: lib/luks2/luks2_json_metadata.c:2746 #, c-format msgid "OPAL device is %s already unlocked.\n" msgstr "Das OPAL-Gerät »%s« ist bereits entsperrt.\n" -#: lib/luks2/luks2_json_metadata.c:2793 +#: lib/luks2/luks2_json_metadata.c:2785 msgid "Unsupported device integrity configuration." msgstr "Nicht unterstützte Konfiguration für Geräteintegrität." -#: lib/luks2/luks2_json_metadata.c:2809 +#: lib/luks2/luks2_json_metadata.c:2801 msgid "Underlying dm-integrity device with unexpected provided data sectors." msgstr "Das zugrundeliegende dm-integrity-Gerät hat unerwartete Datensektoren bereitgestellt." -#: lib/luks2/luks2_json_metadata.c:2911 +#: lib/luks2/luks2_json_metadata.c:2903 msgid "Reencryption in-progress. Cannot deactivate device." msgstr "Wiederverschlüsselung läuft gerade. Das Gerät kann nicht deaktiviert werden." -#: lib/luks2/luks2_json_metadata.c:2922 lib/luks2/luks2_reencrypt.c:4287 +#: lib/luks2/luks2_json_metadata.c:2914 lib/luks2/luks2_reencrypt.c:4287 #, c-format msgid "Failed to replace suspended device %s with dm-error target." msgstr "Das stillgelegte Gerät »%s« mit dm-error-Ziel konnte nicht in den Fehlerzustand gesetzt werden." -#: lib/luks2/luks2_json_metadata.c:3001 lib/luks2/luks2_json_metadata.c:3023 +#: lib/luks2/luks2_json_metadata.c:2993 lib/luks2/luks2_json_metadata.c:3015 #, c-format msgid "Device %s was deactivated but hardware OPAL device cannot be locked." msgstr "Gerät »%s« wurde deaktiviert, aber das Hardware-OPAL-Gerät kann nicht gesperrt werden." -#: lib/luks2/luks2_json_metadata.c:3045 +#: lib/luks2/luks2_json_metadata.c:3037 msgid "Unmet LUKS2 requirements detected." msgstr "Unerfüllte LUKS2-Anforderungen entdeckt." -#: lib/luks2/luks2_json_metadata.c:3053 +#: lib/luks2/luks2_json_metadata.c:3045 msgid "Operation incompatible with device marked for legacy reencryption. Aborting." msgstr "Diese Operation kann nicht mit einem Gerät durchgeführt werden, das für Altlasten-Wiederverschlüsselung markiert ist. Wird abgebrochen." -#: lib/luks2/luks2_json_metadata.c:3055 +#: lib/luks2/luks2_json_metadata.c:3047 msgid "Operation incompatible with device marked for LUKS2 reencryption. Aborting." msgstr "Diese Operation kann nicht mit einem Gerät durchgeführt werden, das für LUKS2-Wiederverschlüsselung markiert ist. Wird abgebrochen." -#: lib/luks2/luks2_json_metadata.c:3057 +#: lib/luks2/luks2_json_metadata.c:3049 msgid "Operation incompatible with device using OPAL. Aborting." msgstr "Diese Operation kann nicht mit einem Gerät durchgeführt werden, das OPAL verwendet. Wird abgebrochen." -#: lib/luks2/luks2_json_metadata.c:3059 +#: lib/luks2/luks2_json_metadata.c:3051 msgid "Operation incompatible with device using inline HW tags. Aborting." msgstr "Der Vorgang ist nicht kompatibel mit einem Gerät, das Inline-HW-Tags verwendet. Abbruch." @@ -1804,60 +1804,60 @@ msgstr "Die Verschlüsselungsangabe %s-%s kann für LUKS2-Schlüsselfach nicht v msgid "Unable to move keyslot area. Not enough space." msgstr "Fehler beim Verschieben des Schlüsselfach-Bereichs. Nicht genug Speicherplatz." -#: lib/luks2/luks2_luks1_convert.c:619 +#: lib/luks2/luks2_luks1_convert.c:627 msgid "Cannot convert to LUKS2 format - invalid metadata." msgstr "Fehler beim Konvertieren ins LUKS2-Format: ungültige Metadaten." -#: lib/luks2/luks2_luks1_convert.c:636 +#: lib/luks2/luks2_luks1_convert.c:644 msgid "Unable to move keyslot area. LUKS2 keyslots area too small." msgstr "Fehler beim Verschieben des Schlüsselfach-Bereichs. Bereich für die LUKS2-Schlüsselfächer ist zu klein." -#: lib/luks2/luks2_luks1_convert.c:642 lib/luks2/luks2_luks1_convert.c:972 +#: lib/luks2/luks2_luks1_convert.c:650 lib/luks2/luks2_luks1_convert.c:980 msgid "Unable to move keyslot area." msgstr "Fehler beim Verschieben des Schlüsselfach-Bereichs." -#: lib/luks2/luks2_luks1_convert.c:757 +#: lib/luks2/luks2_luks1_convert.c:765 msgid "Cannot convert to LUKS1 format - default segment encryption sector size is not 512 bytes." msgstr "Fehler beim Konvertieren ins LUKS1-Format: Standardgröße für Verschlüsselungssektoren ist nicht 512 Bytes." -#: lib/luks2/luks2_luks1_convert.c:765 +#: lib/luks2/luks2_luks1_convert.c:773 msgid "Cannot convert to LUKS1 format - key slot digests are not LUKS1 compatible." msgstr "Fehler beim Konvertieren ins LUKS1-Format: Schlüsselfach-Digeste sind nicht zu LUKS1 kompatibel." -#: lib/luks2/luks2_luks1_convert.c:779 +#: lib/luks2/luks2_luks1_convert.c:787 #, c-format msgid "Cannot convert to LUKS1 format - device uses wrapped key cipher %s." msgstr "Fehler beim Konvertieren ins LUKS1-Format: Gerät verwendet eingepacktes Verschlüsselungsverfahren %s." -#: lib/luks2/luks2_luks1_convert.c:784 +#: lib/luks2/luks2_luks1_convert.c:792 msgid "Cannot convert to LUKS1 format - device uses more segments." msgstr "Fehler beim Konvertieren ins LUKS1-Format: Gerät verwendet mehr Segmente." -#: lib/luks2/luks2_luks1_convert.c:792 +#: lib/luks2/luks2_luks1_convert.c:800 #, c-format msgid "Cannot convert to LUKS1 format - LUKS2 header contains %u token(s)." msgstr "Fehler beim Konvertieren ins LUKS1-Format: LUKS2-Header enthält %u Token." -#: lib/luks2/luks2_luks1_convert.c:798 +#: lib/luks2/luks2_luks1_convert.c:806 msgid "Cannot convert to LUKS1 format - there are no active keyslots." msgstr "Fehler beim Konvertieren ins LUKS1-Format: Es gibt keine aktiven Schlüsselfächer." -#: lib/luks2/luks2_luks1_convert.c:810 +#: lib/luks2/luks2_luks1_convert.c:818 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is in invalid state." msgstr "Fehler beim Konvertieren ins LUKS1-Format: Schlüsselfach %u ist in ungültigem Zustand." -#: lib/luks2/luks2_luks1_convert.c:815 +#: lib/luks2/luks2_luks1_convert.c:823 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is unbound." msgstr "Fehler beim Konvertieren ins LUKS1-Format: Schlüsselfach %u ist unbegrenzt." -#: lib/luks2/luks2_luks1_convert.c:820 +#: lib/luks2/luks2_luks1_convert.c:828 #, c-format msgid "Cannot convert to LUKS1 format - slot %u (over maximum slots) is still active." msgstr "Fehler beim Konvertieren in LUKS1-Format: Schlüsselfach %u (über Maximalfach) ist noch aktiv." -#: lib/luks2/luks2_luks1_convert.c:825 +#: lib/luks2/luks2_luks1_convert.c:833 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is not LUKS1 compatible." msgstr "Fehler beim Konvertieren in LUKS1-Format: Schlüsselfach %u ist nicht zu LUKS1 kompatibel." @@ -2142,7 +2142,7 @@ msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encry msgstr "Verschlüsselungsparameter für Schlüsselfach sind nicht mit LUKS2-Schlüsselfach-Verschlüsselung kompatibel." #: src/cryptsetup.c:150 src/cryptsetup.c:1180 src/cryptsetup.c:1545 -#: src/utils_reencrypt.c:1890 src/utils_reencrypt_luks1.c:502 +#: src/utils_reencrypt.c:1916 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." msgstr "Kein bekanntes Verschlüsselungsmuster entdeckt." @@ -2170,7 +2170,7 @@ msgid "WARNING: The --keyfile-size option is being ignored, the read size is the msgstr "WARNUNG: Die Option --keyfile-size wird ignoriert, da die Lesegröße die gleiche ist wie die Verschlüsselungsschlüsselgröße ist.\n" #: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 -#: src/integritysetup.c:189 src/utils_reencrypt.c:2141 +#: src/integritysetup.c:189 src/utils_reencrypt.c:2167 #, c-format msgid "Blkid scan failed for %s." msgstr "Fehler beim Blkid-Scan für %s." @@ -2254,7 +2254,7 @@ msgstr "Gerät »%s« ist kein gültiges FVAULT2-Gerät." msgid "Cannot determine volume key size for FVAULT2, please use --key-size option." msgstr "Die Größe des Laufwerksschlüssels für FVAULT2 kann nicht ermittelt werden, bitte nutzen Sie die Option »--key-size«." -#: src/cryptsetup.c:849 src/veritysetup.c:317 src/integritysetup.c:422 +#: src/cryptsetup.c:849 src/veritysetup.c:317 src/integritysetup.c:424 #, c-format msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "Gerät »%s« ist noch aktiv und zum verzögerten Entfernen eingeplant.\n" @@ -2449,7 +2449,7 @@ msgid "LUKS file container %s is too small for activation, there is no remaining msgstr "LUKS-Datei-Container %s ist zu klein für die Aktivierung, es ist kein Platz mehr für Daten vorhanden." #: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:278 -#: src/utils_reencrypt.c:371 src/utils_reencrypt.c:1910 +#: src/utils_reencrypt.c:371 src/utils_reencrypt.c:1936 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "Die Größe des Laufwerksschlüssels erfordert Schlüsselfächer, bitte nutzen Sie dazu die Option »--key-size«." @@ -2745,7 +2745,7 @@ msgstr "Die Option --volume-key-keyring kann nicht mit --hash oder --volume-key- msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "Beide --volume-key-file-Optionen müssen mit den entsprechenden --key-size-Optionen paarweise auftreten." -#: src/cryptsetup.c:3373 src/veritysetup.c:673 src/integritysetup.c:793 +#: src/cryptsetup.c:3373 src/veritysetup.c:673 src/integritysetup.c:800 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "Die Optionen --cancel-deferred und --deferred können nicht kombiniert werden." @@ -2813,21 +2813,21 @@ msgstr "Die Aktion erfordert ein bestimmtes Schlüsselfach. Verwenden Sie den Pa msgid " [--type ] []" msgstr " [--type ] []" -#: src/cryptsetup.c:3482 src/veritysetup.c:487 src/integritysetup.c:560 +#: src/cryptsetup.c:3482 src/veritysetup.c:487 src/integritysetup.c:563 msgid "open device as " msgstr "Gerät als öffnen" #: src/cryptsetup.c:3483 src/cryptsetup.c:3484 src/cryptsetup.c:3485 -#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:561 -#: src/integritysetup.c:562 src/integritysetup.c:564 +#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:564 +#: src/integritysetup.c:565 src/integritysetup.c:567 msgid "" msgstr "" -#: src/cryptsetup.c:3483 src/veritysetup.c:488 src/integritysetup.c:561 +#: src/cryptsetup.c:3483 src/veritysetup.c:488 src/integritysetup.c:564 msgid "close device (remove mapping)" msgstr "Gerät schließen (Zuordnung entfernen)" -#: src/cryptsetup.c:3484 src/integritysetup.c:564 +#: src/cryptsetup.c:3484 src/integritysetup.c:567 msgid "resize active device" msgstr "Größe des aktiven Geräts ändern" @@ -2955,7 +2955,7 @@ msgstr " " msgid "Manipulate LUKS2 tokens" msgstr "LUKS2-Token manipulieren" -#: src/cryptsetup.c:3527 src/veritysetup.c:505 src/integritysetup.c:579 +#: src/cryptsetup.c:3527 src/veritysetup.c:505 src/integritysetup.c:582 msgid "" "\n" " is one of:\n" @@ -3056,7 +3056,7 @@ msgstr "" msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: Standard-Schlüsselgröße mit XTS-Modus (zwei interne Schlüssel) wird verdoppelt.\n" -#: src/cryptsetup.c:3594 src/veritysetup.c:647 src/integritysetup.c:739 +#: src/cryptsetup.c:3594 src/veritysetup.c:647 src/integritysetup.c:742 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: Benötigt %s als Argumente" @@ -3107,31 +3107,31 @@ msgstr "Die Option --priority kann nur »ignore/normal/prefer« sein." msgid "Invalid maximal tries specification." msgstr "Ungültige Angabe der maximalen Versuche." -#: src/cryptsetup.c:3793 src/veritysetup.c:568 src/integritysetup.c:659 +#: src/cryptsetup.c:3793 src/veritysetup.c:568 src/integritysetup.c:662 msgid "Show this help message" msgstr "Diese Hilfe anzeigen" -#: src/cryptsetup.c:3794 src/veritysetup.c:569 src/integritysetup.c:660 +#: src/cryptsetup.c:3794 src/veritysetup.c:569 src/integritysetup.c:663 msgid "Display brief usage" msgstr "Kurze Aufrufsyntax anzeigen" -#: src/cryptsetup.c:3795 src/veritysetup.c:570 src/integritysetup.c:661 +#: src/cryptsetup.c:3795 src/veritysetup.c:570 src/integritysetup.c:664 msgid "Print package version" msgstr "Paketversion ausgeben" -#: src/cryptsetup.c:3806 src/veritysetup.c:581 src/integritysetup.c:672 +#: src/cryptsetup.c:3806 src/veritysetup.c:581 src/integritysetup.c:675 msgid "Help options:" msgstr "Hilfe-Optionen:" -#: src/cryptsetup.c:3829 src/veritysetup.c:602 src/integritysetup.c:692 +#: src/cryptsetup.c:3829 src/veritysetup.c:602 src/integritysetup.c:695 msgid "[OPTION...] " msgstr "[OPTION...] " -#: src/cryptsetup.c:3838 src/veritysetup.c:611 src/integritysetup.c:703 +#: src/cryptsetup.c:3838 src/veritysetup.c:611 src/integritysetup.c:706 msgid "Argument missing." msgstr "Argument fehlt." -#: src/cryptsetup.c:3917 src/veritysetup.c:642 src/integritysetup.c:734 +#: src/cryptsetup.c:3917 src/veritysetup.c:642 src/integritysetup.c:737 msgid "Unknown action." msgstr "Unbekannte Aktion." @@ -3236,7 +3236,7 @@ msgstr "Der Befehl erfordert die Option oder --root-hash-file als Ar msgid " " msgstr " " -#: src/veritysetup.c:485 src/integritysetup.c:559 +#: src/veritysetup.c:485 src/integritysetup.c:562 msgid "format device" msgstr "Gerät formatieren" @@ -3252,7 +3252,7 @@ msgstr "Gerät verifizieren" msgid " []" msgstr " []" -#: src/veritysetup.c:489 src/integritysetup.c:562 +#: src/veritysetup.c:489 src/integritysetup.c:565 msgid "show active device status" msgstr "Status der aktiven Geräte anzeigen" @@ -3260,7 +3260,7 @@ msgstr "Status der aktiven Geräte anzeigen" msgid "" msgstr "" -#: src/veritysetup.c:490 src/integritysetup.c:563 +#: src/veritysetup.c:490 src/integritysetup.c:566 msgid "show on-disk information" msgstr "Auf dem Datenträger gespeicherte Informationen anzeigen" @@ -3324,20 +3324,20 @@ msgstr " (Inline-Hardware-Etiketten)" msgid "Setting recalculate flag is not supported, you may consider using --wipe instead." msgstr "Das Setzen der Option »recalculate« wird nicht unterstützt, Sie können stattdessen »--wipe« erwägen." -#: src/integritysetup.c:382 src/integritysetup.c:546 +#: src/integritysetup.c:382 src/integritysetup.c:549 #, c-format msgid "Device %s is not a valid INTEGRITY device." msgstr "Gerät »%s« ist kein gültiges INTEGRITY-Gerät." -#: src/integritysetup.c:559 src/integritysetup.c:563 +#: src/integritysetup.c:562 src/integritysetup.c:566 msgid "" msgstr "" -#: src/integritysetup.c:560 +#: src/integritysetup.c:563 msgid " " msgstr " " -#: src/integritysetup.c:583 +#: src/integritysetup.c:586 #, c-format msgid "" "\n" @@ -3348,7 +3348,7 @@ msgstr "" " ist das Gerät, das unter »%s« angelegt werden soll\n" " ist das Gerät, das die Daten mit Integritätsangaben enthält\n" -#: src/integritysetup.c:588 +#: src/integritysetup.c:591 #, c-format msgid "" "\n" @@ -3361,51 +3361,55 @@ msgstr "" "\tPrüfalgorithmus: %s\n" "\tMaximalgröße der Schlüsseldatei: %d kB\n" -#: src/integritysetup.c:645 +#: src/integritysetup.c:648 #, c-format msgid "Invalid --%s size. Maximum is %u bytes." msgstr "Ungültige Größe für --%s. Maximum ist %u Bytes." -#: src/integritysetup.c:748 +#: src/integritysetup.c:751 msgid "Both key file and key size options must be specified." msgstr "Sowohl die Schlüsseldatei als auch die Schlüsselgröße müssen angegeben werden." -#: src/integritysetup.c:752 +#: src/integritysetup.c:755 msgid "Both journal integrity key file and key size options must be specified." msgstr "Sowohl die Schlüsseldatei als auch die Schlüsselgröße müssen für die Journalintegrität angegeben werden." -#: src/integritysetup.c:755 +#: src/integritysetup.c:758 msgid "Journal integrity algorithm must be specified if journal integrity key is used." msgstr "Wenn ein Integritätsschlüssel für das Journal verwendet wird, muss auch der Integritätsalgorithmus angegeben werden." -#: src/integritysetup.c:759 +#: src/integritysetup.c:762 msgid "Both journal encryption key file and key size options must be specified." msgstr "Sowohl der Verschlüsselungsschlüssel als auch die Schlüsselgröße müssen für die Journalverschlüsselung angegeben werden." -#: src/integritysetup.c:762 +#: src/integritysetup.c:765 msgid "Journal encryption algorithm must be specified if journal encryption key is used." msgstr "Wenn ein Verschlüsselungsschlüssel für das Journal verwendet wird, muss auch der Verschlüsselungsalgorithmus angegeben werden." -#: src/integritysetup.c:766 +#: src/integritysetup.c:769 msgid "Recovery and bitmap mode options are mutually exclusive." msgstr "Die Modi Wiederherstellung und Bitmap schließen sich gegenseitig aus." -#: src/integritysetup.c:773 +#: src/integritysetup.c:776 msgid "Journal options cannot be used in bitmap mode." msgstr "Die Journal-Optionen können nicht im Bitmap-Modus verwendet werden." -#: src/integritysetup.c:778 +#: src/integritysetup.c:781 msgid "Bitmap options can be used only in bitmap mode." msgstr "Die Bitmapoptionen können nur im Bitmapmodus verwendet werden." -#: src/integritysetup.c:784 +#: src/integritysetup.c:787 msgid "Inline mode cannot be combined with journal or bitmap options." msgstr "Der Inline-Modus kann nicht mit den Optionen Journal oder Bitmap kombiniert werden." -#: src/integritysetup.c:788 +#: src/integritysetup.c:791 msgid "Inline mode cannot be combined with separate data device." msgstr "Der Inline-Modus kann nicht mit einem separaten Datengerät kombiniert werden." +#: src/integritysetup.c:795 +msgid "Keyed discards can be enabled only with keyed algorithms like HMAC." +msgstr "Schlüsselbasierte Verwerfungen können nur mit schlüsselbasierten Algorithmen wie HMAC aktiviert werden." + #: src/utils_tools.c:105 msgid "" "\n" @@ -3756,7 +3760,7 @@ msgstr "Das Gerät ist nicht der LUKS2-Entschlüsselung. Die Option »--encrypt msgid "Device is in reencryption using datashift resilience. Requested --resilience option cannot be applied." msgstr "Das Gerät befindet sich in der Wiederverschlüsselung mit Datashift-Resilienz. Die angeforderte Option --resilience kann nicht angewendet werden." -#: src/utils_reencrypt.c:283 src/utils_reencrypt.c:1927 +#: src/utils_reencrypt.c:283 src/utils_reencrypt.c:1953 msgid "Cannot determine volume key size for LUKS without keyslots, please use --new-key-size option." msgstr "Die Größe des Laufwerksschlüssels kann für LUKS ohne Schlüsselfächer nicht bestimmt werden, bitte verwenden Sie die Option --new-key-size." @@ -3790,7 +3794,7 @@ msgstr "" "Angeforderte --sector-size % ist nicht kompatibel mit dem %s-Superblock\n" "(Blockgröße: %Bytes), der auf dem Gerät %s erkannt wurde." -#: src/utils_reencrypt.c:680 src/utils_reencrypt.c:2207 +#: src/utils_reencrypt.c:680 src/utils_reencrypt.c:2233 msgid "Encryption without detached header (--header) is not possible without data device size reduction (--reduce-device-size)." msgstr "Verschlüsselung ohne separaten Kopfbereich (--header) ist nur möglich, wenn die Größe des Hauptgeräts reduziert wird (--reduce-device-size)." @@ -3858,42 +3862,43 @@ msgstr "Fehler beim Initialisieren der Wiederverschlüsselung. Eine Sicherungsko msgid "LUKS2 decryption is supported with detached header device only (with data offset set to 0)." msgstr "LUKS2-Entschlüsselung wird nur mit losgelöstem Headergerät unterstützt (mit Datenoffset auf 0 gesetzt)." -#: src/utils_reencrypt.c:1490 -msgid "No token could unlock the device." -msgstr "Kein Token konnte das Gerät entsperren." - -#: src/utils_reencrypt.c:1522 src/utils_reencrypt.c:1531 +#: src/utils_reencrypt.c:1506 src/utils_reencrypt.c:1531 +#: src/utils_reencrypt.c:1548 src/utils_reencrypt.c:1557 msgid "Not enough free keyslots for reencryption." msgstr "Nicht genügend freie Schlüsselfächer für Wiederverschlüsselung." -#: src/utils_reencrypt.c:1562 +#: src/utils_reencrypt.c:1513 +msgid "No token could unlock the device." +msgstr "Kein Token konnte das Gerät entsperren." + +#: src/utils_reencrypt.c:1588 msgid "Key file or keyring key description can be used only with --key-slot or with exactly one key slot active." msgstr "Schlüsseldatei oder Schlüsselbund kann nur mit --key-slot oder mit genau einem aktiven Schlüsselfach benutzt werden." -#: src/utils_reencrypt.c:1569 src/utils_reencrypt.c:1582 +#: src/utils_reencrypt.c:1595 src/utils_reencrypt.c:1608 #: src/utils_reencrypt_luks1.c:1092 src/utils_reencrypt_luks1.c:1103 #, c-format msgid "Enter passphrase for key slot %d: " msgstr "Geben Sie die Passphrase für Schlüsselfach %d ein: " -#: src/utils_reencrypt.c:1879 +#: src/utils_reencrypt.c:1905 #, c-format msgid "Switching data encryption cipher to %s.\n" msgstr "Der Verschlüsselungsalgorithmus wird auf %s geändert.\n" -#: src/utils_reencrypt.c:1980 src/utils_reencrypt.c:2001 +#: src/utils_reencrypt.c:2006 src/utils_reencrypt.c:2027 msgid "Use --force-no-keyslots to reencrypt device with active keyslots by passing volume keys directly." msgstr "Verwenden Sie --force-no-keyslots, um Geräte mit aktiven Schlüsselfach neu zu verschlüsseln, indem Sie Laufwerksschlüssel direkt übergeben." -#: src/utils_reencrypt.c:1996 +#: src/utils_reencrypt.c:2022 msgid "Option --new-volume-key-file must be paired with --new-key-size" msgstr "Die Option --new-volume-key-file muss mit --new-key-size paarweise auftreten" -#: src/utils_reencrypt.c:2038 +#: src/utils_reencrypt.c:2064 msgid "No data segment parameters changed. Reencryption aborted." msgstr "Keine Datensegmentparameter geändert. Wiederverschlüsselung abgebrochen." -#: src/utils_reencrypt.c:2075 +#: src/utils_reencrypt.c:2101 msgid "" "Encryption sector size increase on offline device is not supported.\n" "Activate the device first or use --force-offline-reencrypt option (dangerous!)." @@ -3901,7 +3906,7 @@ msgstr "" "Die Zunahme der Größe des Verschlüsselungssektors auf einem Offline-Gerät wird nicht unterstützt.\n" "Aktivieren Sie das Gerät zuerst oder verwenden Sie die Option »--force-offline-reencrypt« (gefährlich!)." -#: src/utils_reencrypt.c:2117 src/utils_reencrypt_luks1.c:688 +#: src/utils_reencrypt.c:2143 src/utils_reencrypt_luks1.c:688 #: src/utils_reencrypt_luks1.c:759 msgid "" "\n" @@ -3910,58 +3915,58 @@ msgstr "" "\n" "Wiederverschlüsselung unterbrochen." -#: src/utils_reencrypt.c:2122 +#: src/utils_reencrypt.c:2148 msgid "Resuming LUKS reencryption in forced offline mode.\n" msgstr "LUKS-Wiederverschlüsselung wird im erzwungenen Offline-Modus fortgesetzt.\n" -#: src/utils_reencrypt.c:2145 +#: src/utils_reencrypt.c:2171 #, c-format msgid "Device %s contains broken LUKS metadata. Aborting operation." msgstr "Das Gerät %s enthält fehlerhafte LUKS-Metadaten. Vorgang wird abgebrochen." -#: src/utils_reencrypt.c:2161 src/utils_reencrypt.c:2183 +#: src/utils_reencrypt.c:2187 src/utils_reencrypt.c:2209 #, c-format msgid "Device %s is already LUKS device. Aborting operation." msgstr "Gerät %s ist bereits ein LUKS-Gerät. Vorgang wird abgebrochen." -#: src/utils_reencrypt.c:2189 +#: src/utils_reencrypt.c:2215 #, c-format msgid "Device %s is already in LUKS reencryption. Aborting operation." msgstr "Gerät %s befindet sich bereits in der LUKS-Wiederverschlüsselung. Vorgang wird abgebrochen." -#: src/utils_reencrypt.c:2272 +#: src/utils_reencrypt.c:2298 msgid "LUKS2 decryption requires --header option." msgstr "LUKS2-Entschlüsselung erfordert die Option »--header«." -#: src/utils_reencrypt.c:2320 +#: src/utils_reencrypt.c:2346 msgid "Command requires device as argument." msgstr "Dieser Befehl benötigt den Gerätenamen als Argument." -#: src/utils_reencrypt.c:2333 +#: src/utils_reencrypt.c:2359 #, c-format msgid "Conflicting versions. Device %s is LUKS1." msgstr "Widersprüchliche Versionen. Gerät %s ist LUKS1." -#: src/utils_reencrypt.c:2339 +#: src/utils_reencrypt.c:2365 #, c-format msgid "Conflicting versions. Device %s is in LUKS1 reencryption." msgstr "Widersprüchliche Versionen. Gerät %s befindet sich in der LUKS1-Wiederverschlüsselung." -#: src/utils_reencrypt.c:2345 +#: src/utils_reencrypt.c:2371 #, c-format msgid "Conflicting versions. Device %s is LUKS2." msgstr "Widersprüchliche Versionen. Gerät %s ist LUKS2." -#: src/utils_reencrypt.c:2351 +#: src/utils_reencrypt.c:2377 #, c-format msgid "Conflicting versions. Device %s is in LUKS2 reencryption." msgstr "Widersprüchliche Versionen. Gerät %s befindet sich in LUKS2-Wiederverschlüsselung." -#: src/utils_reencrypt.c:2357 +#: src/utils_reencrypt.c:2383 msgid "LUKS2 reencryption already initialized. Aborting operation." msgstr "Die LUKS2-Wiederverschlüsselung wurde bereits begonnen. Die Operation wird abgebrochen." -#: src/utils_reencrypt.c:2364 +#: src/utils_reencrypt.c:2390 msgid "Device reencryption not in progress." msgstr "Derzeit läuft keine Wiederverschlüsselung." From b0916732068890fa547819b8b92174a74b214c96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Marchal?= Date: Fri, 4 Sep 2026 18:57:03 +0200 Subject: [PATCH 207/244] po: update fr.po (from translationproject.org) --- po/fr.po | 657 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 331 insertions(+), 326 deletions(-) diff --git a/po/fr.po b/po/fr.po index eb433ad46..0249ab1ec 100644 --- a/po/fr.po +++ b/po/fr.po @@ -7,10 +7,10 @@ # Frédéric Marchal , 2026. msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.7-rc2\n" +"Project-Id-Version: cryptsetup 2.8.8-rc0\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2026-07-09 10:46+0200\n" -"PO-Revision-Date: 2026-07-13 17:34+0200\n" +"POT-Creation-Date: 2026-09-02 13:18+0200\n" +"PO-Revision-Date: 2026-09-02 16:16+0200\n" "Last-Translator: Frédéric Marchal \n" "Language-Team: French \n" "Language: fr\n" @@ -20,78 +20,78 @@ msgstr "" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n >= 2);\n" -#: lib/libdevmapper.c:419 +#: lib/libdevmapper.c:422 msgid "Cannot initialize device-mapper, running as non-root user." msgstr "Impossible d'initialiser le gestionnaire « device-mapper ». Exécution comme un utilisateur non-root." -#: lib/libdevmapper.c:422 +#: lib/libdevmapper.c:425 msgid "Cannot initialize device-mapper. Is dm_mod kernel module loaded?" msgstr "Impossible d'initialiser le gestionnaire « device-mapper ». Le module noyau dm_mod est-il chargé ?" -#: lib/libdevmapper.c:1125 +#: lib/libdevmapper.c:1129 msgid "Requested deferred flag is not supported." msgstr "Le fanion différé demandé n'est pas supporté." -#: lib/libdevmapper.c:1194 +#: lib/libdevmapper.c:1198 #, c-format msgid "DM-UUID for device %s was truncated." msgstr "Le DM-UUID du périphérique %s a été tronqué." -#: lib/libdevmapper.c:1598 +#: lib/libdevmapper.c:1602 msgid "Unknown dm target type." msgstr "Type de cible dm inconnu." -#: lib/libdevmapper.c:1725 lib/libdevmapper.c:1731 lib/libdevmapper.c:1850 -#: lib/libdevmapper.c:1853 +#: lib/libdevmapper.c:1729 lib/libdevmapper.c:1735 lib/libdevmapper.c:1854 +#: lib/libdevmapper.c:1857 msgid "Requested dm-crypt performance options are not supported." msgstr "Les options de performance dm-crypt demandées ne sont pas supportées." -#: lib/libdevmapper.c:1740 lib/libdevmapper.c:1746 lib/libdevmapper.c:1758 +#: lib/libdevmapper.c:1744 lib/libdevmapper.c:1750 lib/libdevmapper.c:1762 msgid "Requested dm-verity data corruption handling options are not supported." msgstr "Les options demandées de gestion de corruption des données dm-verity ne sont pas supportées." -#: lib/libdevmapper.c:1752 +#: lib/libdevmapper.c:1756 msgid "Requested dm-verity tasklets option is not supported." msgstr "L'option dm-verity tasklets demandée n'est pas supportée." -#: lib/libdevmapper.c:1764 +#: lib/libdevmapper.c:1768 msgid "Requested dm-verity FEC options are not supported." msgstr "Les options dm-verity FEC demandées ne sont pas supportées." -#: lib/libdevmapper.c:1770 +#: lib/libdevmapper.c:1774 msgid "Requested data integrity options are not supported." msgstr "Les options d'intégrité de données demandées ne sont pas supportées." -#: lib/libdevmapper.c:1774 +#: lib/libdevmapper.c:1778 msgid "Requested sector_size option is not supported." msgstr "L'option sector_size demandée n'est pas supportée." -#: lib/libdevmapper.c:1779 +#: lib/libdevmapper.c:1783 msgid "The device size is not multiple of the requested sector size." msgstr "La taille du périphérique n'est pas un multiple de la taille de secteur demandée." -#: lib/libdevmapper.c:1783 +#: lib/libdevmapper.c:1787 msgid "Requested integrity_key_size option is not supported." msgstr "L'option integrity_key_size demandée n'est pas supportée." -#: lib/libdevmapper.c:1790 lib/libdevmapper.c:1796 +#: lib/libdevmapper.c:1794 lib/libdevmapper.c:1800 msgid "Requested automatic recalculation of integrity tags is not supported." msgstr "Le recalcule automatique des balises de sécurité demandés n'est pas supporté." -#: lib/libdevmapper.c:1802 lib/libdevmapper.c:1856 lib/libdevmapper.c:1859 -#: lib/luks2/luks2_json_metadata.c:2799 +#: lib/libdevmapper.c:1806 lib/libdevmapper.c:1860 lib/libdevmapper.c:1863 +#: lib/luks2/luks2_json_metadata.c:2791 msgid "Discard/TRIM is not supported." msgstr "Discard/TRIM n'est pas supporté." -#: lib/libdevmapper.c:1808 +#: lib/libdevmapper.c:1812 msgid "Requested dm-integrity bitmap mode is not supported." msgstr "Le mode de carte de bits d'intégrité dm demandé n'est pas supporté." -#: lib/libdevmapper.c:1814 +#: lib/libdevmapper.c:1818 msgid "Requested dm-integrity inline mode is not supported." msgstr "Le mode en ligne d'intégrité dm demandé n'est pas supporté." -#: lib/libdevmapper.c:2870 +#: lib/libdevmapper.c:2877 #, c-format msgid "Failed to query dm-%s segment." msgstr "Échec lors de l'interrogation du segment dm-%s." @@ -142,7 +142,7 @@ msgstr "Impossible d'initialiser le moteur aléatoire RNG pour le chiffrement." msgid "Cannot initialize crypto backend." msgstr "Impossible d'initialiser le moteur de chiffrement." -#: lib/setup.c:308 lib/setup.c:2769 lib/verity/verity.c:109 +#: lib/setup.c:308 lib/setup.c:2779 lib/verity/verity.c:109 #, c-format msgid "Hash algorithm %s not supported." msgstr "L'algorithme de hachage %s n'est pas supporté." @@ -156,7 +156,7 @@ msgstr "Erreur de traitement de clé (valeur hachage %s)." msgid "Cannot determine device type. Incompatible activation of device?" msgstr "Impossible de déterminer le type de périphérique. Activation du périphérique incompatible ?" -#: lib/setup.c:398 lib/setup.c:4177 +#: lib/setup.c:398 lib/setup.c:4193 msgid "This operation is supported only for LUKS device." msgstr "Cette opération n'est possible que pour les périphériques LUKS." @@ -178,7 +178,7 @@ msgstr "L'emplacement de clé %d n'est pas valide, merci d'en choisir un entre 0 msgid "Key slot %d is full, please select another one." msgstr "L'emplacement de clé %d est utilisé, merci d'en sélectionner un autre." -#: lib/setup.c:534 lib/setup.c:3878 +#: lib/setup.c:534 lib/setup.c:3888 msgid "Device size is not aligned to device logical block size." msgstr "La taille du périphérique n'est pas alignée avec la taille d'un bloc logique du périphérique." @@ -187,7 +187,7 @@ msgstr "La taille du périphérique n'est pas alignée avec la taille d'un bloc msgid "Header detected but device %s is too small." msgstr "En-tête détecté mais le périphérique %s est trop petit." -#: lib/setup.c:672 lib/setup.c:3763 lib/setup.c:5272 +#: lib/setup.c:672 lib/setup.c:3773 lib/setup.c:5288 #: lib/luks2/luks2_reencrypt.c:3949 lib/luks2/luks2_reencrypt.c:4438 msgid "This operation is not supported for this device type." msgstr "Cette opération n'est pas supportée pour ce type de périphérique." @@ -200,553 +200,553 @@ msgstr "Opération illégale avec une re-chiffrement en cours." msgid "Failed to rollback LUKS2 metadata in memory." msgstr "Échec lors du retour en arrière des métadonnées LUKS2 en mémoire." -#: lib/setup.c:896 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 +#: lib/setup.c:896 lib/luks1/keymanage.c:241 lib/luks1/keymanage.c:519 #: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 #: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 #: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2954 -#: src/cryptsetup.c:3022 src/utils_reencrypt.c:2284 +#: src/cryptsetup.c:3022 src/utils_reencrypt.c:2310 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." msgstr "%s n'est pas un périphérique LUKS valide." -#: lib/setup.c:899 lib/luks1/keymanage.c:517 +#: lib/setup.c:899 lib/luks1/keymanage.c:522 #, c-format msgid "Unsupported LUKS version %d." msgstr "La version %d de LUKS n'est pas supportée." -#: lib/setup.c:1273 +#: lib/setup.c:1279 #, c-format msgid "No known cipher specification pattern detected for active device %s." msgstr "Aucun motif connu d'algorithme de chiffrement n'a été détecté pour le périphérique actif %s." -#: lib/setup.c:1518 lib/setup.c:3510 lib/setup.c:3602 lib/setup.c:3614 -#: lib/setup.c:3786 lib/setup.c:5850 +#: lib/setup.c:1528 lib/setup.c:3520 lib/setup.c:3612 lib/setup.c:3624 +#: lib/setup.c:3796 lib/setup.c:5866 #, c-format msgid "Device %s is not active." msgstr "Le périphérique %s n'est pas activé." -#: lib/setup.c:1535 +#: lib/setup.c:1545 #, c-format msgid "Underlying device for crypt device %s disappeared." msgstr "Le périphérique sous-jacent pour le périphérique chiffré %s a disparu." -#: lib/setup.c:1617 +#: lib/setup.c:1627 msgid "Invalid plain crypt parameters." msgstr "Paramètres de chiffrement non valides." -#: lib/setup.c:1622 lib/setup.c:2672 +#: lib/setup.c:1632 lib/setup.c:2682 msgid "Invalid key size." msgstr "La taille de la clé n'est pas valide." -#: lib/setup.c:1627 lib/setup.c:2677 lib/setup.c:2882 +#: lib/setup.c:1637 lib/setup.c:2687 lib/setup.c:2892 msgid "UUID is not supported for this crypt type." msgstr "le UUID n'est pas supporté avec ce type de chiffrement." -#: lib/setup.c:1632 lib/setup.c:2682 +#: lib/setup.c:1642 lib/setup.c:2692 msgid "Detached metadata device is not supported for this crypt type." msgstr "Un périphérique avec des métadonnées détachées n'est pas supporté avec ce type de chiffrement." -#: lib/setup.c:1642 lib/setup.c:1890 lib/luks2/luks2_reencrypt.c:3035 +#: lib/setup.c:1652 lib/setup.c:1900 lib/luks2/luks2_reencrypt.c:3035 #: src/cryptsetup.c:1492 src/cryptsetup.c:3761 msgid "Unsupported encryption sector size." msgstr "Taille de secteur de chiffrement non supportée." -#: lib/setup.c:1650 lib/setup.c:1919 lib/setup.c:3872 +#: lib/setup.c:1660 lib/setup.c:1929 lib/setup.c:3882 msgid "Device size is not aligned to requested sector size." msgstr "La taille du périphérique n'est pas alignée avec la taille de secteur demandée." -#: lib/setup.c:1702 lib/setup.c:1954 lib/setup.c:2331 +#: lib/setup.c:1712 lib/setup.c:1964 lib/setup.c:2341 msgid "Can't format LUKS without device." msgstr "Impossible de formater en LUKS sans périphérique." -#: lib/setup.c:1707 lib/setup.c:1959 +#: lib/setup.c:1717 lib/setup.c:1969 #, c-format msgid "Zoned device %s cannot be used for LUKS header." msgstr "Le périphérique Zoned %s ne peut pas être utilisé pour l'en-tête LUKS." -#: lib/setup.c:1714 lib/setup.c:1966 lib/setup.c:2337 +#: lib/setup.c:1724 lib/setup.c:1976 lib/setup.c:2347 msgid "Requested data alignment is not compatible with data offset." msgstr "L'alignement de données demandé n'est pas compatible avec le décalage des données." -#: lib/setup.c:1754 lib/setup.c:1984 +#: lib/setup.c:1764 lib/setup.c:1994 msgid "WARNING: DAX device can corrupt data as it does not guarantee atomic sector updates.\n" msgstr "ATTENTION : Un périphérique DAX peut corrompre les données car il ne garanti pas la mise à jour atomique des secteurs.\n" -#: lib/setup.c:1792 lib/setup.c:2091 lib/setup.c:2112 lib/setup.c:2520 -#: lib/setup.c:2567 lib/setup.c:2899 +#: lib/setup.c:1802 lib/setup.c:2101 lib/setup.c:2122 lib/setup.c:2530 +#: lib/setup.c:2577 lib/setup.c:2909 #, c-format msgid "Cannot wipe header on device %s." msgstr "Impossible d'effacer l'en-tête du périphérique %s." -#: lib/setup.c:1805 lib/setup.c:2164 +#: lib/setup.c:1815 lib/setup.c:2174 #, c-format msgid "Device %s is too small for activation, there is no remaining space for data.\n" msgstr "Le périphérique %s est trop petit pour l'activation, il ne reste pas d'espace pour les données.\n" -#: lib/setup.c:1846 +#: lib/setup.c:1856 msgid "Volume key is too small for encryption with integrity extensions." msgstr "La clé de volume est trop petite pour chiffrer avec les extensions d'intégrité." -#: lib/setup.c:1850 +#: lib/setup.c:1860 msgid "Integrity key size is too small." msgstr "La taille de la clé d'intégrité est trop petite." -#: lib/setup.c:1859 +#: lib/setup.c:1869 #, c-format msgid "Cipher %s-%s (key size %zd bits) is not available." msgstr "Le chiffrement %s-%s (clé de %zd bits) n'est pas disponible." -#: lib/setup.c:1900 +#: lib/setup.c:1910 msgid "WARNING: The device activation will fail, dm-crypt is missing support for requested encryption sector size.\n" msgstr "AVERTISSEMENT: L'activation du périphérique va échouer, dm-crypt ne supporte pas la taille de secteur de chiffrement demandée.\n" -#: lib/setup.c:2094 lib/setup.c:2461 lib/setup.c:2523 lib/utils_device.c:906 +#: lib/setup.c:2104 lib/setup.c:2471 lib/setup.c:2533 lib/utils_device.c:906 #: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3074 #: lib/luks2/luks2_reencrypt.c:4498 #, c-format msgid "Device %s is too small." msgstr "Le périphérique %s est trop petit." -#: lib/setup.c:2105 lib/setup.c:2144 lib/setup.c:2560 lib/setup.c:2618 +#: lib/setup.c:2115 lib/setup.c:2154 lib/setup.c:2570 lib/setup.c:2628 #, c-format msgid "Cannot format device %s in use." msgstr "Impossible de formater le périphérique %s qui est en cours d'utilisation." -#: lib/setup.c:2108 lib/setup.c:2147 lib/setup.c:2563 lib/setup.c:2621 +#: lib/setup.c:2118 lib/setup.c:2157 lib/setup.c:2573 lib/setup.c:2631 #, c-format msgid "Cannot format device %s, permission denied." msgstr "Impossible de formater le périphérique %s. Permission refusée." -#: lib/setup.c:2132 lib/setup.c:2590 lib/setup.c:2972 +#: lib/setup.c:2142 lib/setup.c:2600 lib/setup.c:2982 #, c-format msgid "Cannot format integrity for device %s." msgstr "Impossible de formater l'intégrité du périphérique %s." -#: lib/setup.c:2151 lib/setup.c:2629 +#: lib/setup.c:2161 lib/setup.c:2639 #, c-format msgid "Cannot format device %s." msgstr "Impossible de formater le périphérique %s" -#: lib/setup.c:2194 +#: lib/setup.c:2204 msgid "Cannot get OPAL alignment parameters." msgstr "Impossible d'obtenir les paramètres d'alignement de OPAL." -#: lib/setup.c:2206 +#: lib/setup.c:2216 msgid "Bogus OPAL logical block size." msgstr "Taille de bloc logique OPAL incorrecte." -#: lib/setup.c:2211 lib/luks2/hw_opal/hw_opal.c:305 +#: lib/setup.c:2221 lib/luks2/hw_opal/hw_opal.c:305 msgid "Bogus OPAL logical block size differs from device block size." msgstr "La taille de bloc logique OPAL est différentes de la taille de bloc du périphérique." -#: lib/setup.c:2217 +#: lib/setup.c:2227 msgid "Requested data offset is not compatible with OPAL block size." msgstr "L'offset de données demandé n'est pas compatible avec la taille de bloc de OPAL." -#: lib/setup.c:2224 +#: lib/setup.c:2234 msgid "Requested data alignment is not compatible with OPAL alignment." msgstr "L'alignement de données demandé n'est pas compatible avec l'alignement de OPAL." -#: lib/setup.c:2244 +#: lib/setup.c:2254 msgid "Data offset does not satisfy OPAL alignment requirements." msgstr "L'offset de données ne satisfait pas les exigences d'alignement de OPAL." -#: lib/setup.c:2257 +#: lib/setup.c:2267 msgid "Requested data alignment does not satisfy locking range alignment requirements." msgstr "L'alignement de données demandé les exigences de la plage d'alignement du verrouillage." -#: lib/setup.c:2471 +#: lib/setup.c:2481 #, c-format msgid "Compensating device size by % sectors to align it with OPAL alignment granularity." msgstr "La taille du périphérique est compensée avec % secteurs pour l'aligner avec la granularité de l'alignement de OPAL." -#: lib/setup.c:2531 lib/setup.c:4260 lib/setup.c:4466 lib/utils_wipe.c:356 -#: lib/luks2/luks2_json_metadata.c:2742 lib/luks2/luks2_json_metadata.c:3017 +#: lib/setup.c:2541 lib/setup.c:4276 lib/setup.c:4482 lib/utils_wipe.c:356 +#: lib/luks2/luks2_json_metadata.c:2734 lib/luks2/luks2_json_metadata.c:3009 #, c-format msgid "Failed to acquire OPAL lock on device %s." msgstr "Impossible d'acquérir le verrou OPAL sur le périphérique %s." -#: lib/setup.c:2541 +#: lib/setup.c:2551 msgid "Incorrect OPAL Admin key." msgstr "Clé admin OPAL incorrecte." -#: lib/setup.c:2543 +#: lib/setup.c:2553 msgid "Cannot setup OPAL segment." msgstr "Impossible de configurer le segment OPAL." -#: lib/setup.c:2625 +#: lib/setup.c:2635 #, c-format msgid "Cannot format device %s, OPAL device seems to be fully write-protected now." msgstr "Impossible de formater le périphérique %s. Le périphérique OPAL semble maintenant être complètement protégé contre l'écriture." -#: lib/setup.c:2627 +#: lib/setup.c:2637 msgid "This is perhaps a bug in firmware. Run OPAL PSID reset and reconnect for recovery." msgstr "Il s'agit peut-être d'un bogue du micro logiciel. Exécutez une réinitialisation PSID OPAL et reconnectez pour récupération." -#: lib/setup.c:2647 +#: lib/setup.c:2657 #, c-format msgid "Locking range %d reset on device %s failed." msgstr "La réinitialisation de la plage %d de verrouillage du périphérique %s a échouée." -#: lib/setup.c:2667 +#: lib/setup.c:2677 msgid "Can't format LOOPAES without device." msgstr "Impossible de formater LOOPAES sans périphérique." -#: lib/setup.c:2712 +#: lib/setup.c:2722 msgid "Can't format VERITY without device." msgstr "Impossible de formater VERITY sans périphérique." -#: lib/setup.c:2723 lib/verity/verity.c:88 +#: lib/setup.c:2733 lib/verity/verity.c:88 #, c-format msgid "Unsupported VERITY hash type %d." msgstr "Type de hachage VERITY %d non supporté." -#: lib/setup.c:2729 lib/verity/verity.c:96 +#: lib/setup.c:2739 lib/verity/verity.c:96 msgid "Unsupported VERITY block size." msgstr "Taille de bloc VERITY non supportée." -#: lib/setup.c:2734 lib/verity/verity.c:61 +#: lib/setup.c:2744 lib/verity/verity.c:61 msgid "Unsupported VERITY hash offset." msgstr "Décalage de hachage VERITY non supporté." -#: lib/setup.c:2739 +#: lib/setup.c:2749 msgid "Unsupported VERITY FEC offset." msgstr "Décalage VERITY FEC non supporté." -#: lib/setup.c:2763 +#: lib/setup.c:2773 msgid "Data area overlaps with hash area." msgstr "La zone de données recouvre la zone de hachage." -#: lib/setup.c:2788 +#: lib/setup.c:2798 msgid "Hash area overlaps with FEC area." msgstr "La zone de hachage recouvre la zone FEC." -#: lib/setup.c:2795 +#: lib/setup.c:2805 msgid "Data area overlaps with FEC area." msgstr "La zone de données recouvre la zone FEC." -#: lib/setup.c:2887 +#: lib/setup.c:2897 msgid "Integrity key size mismatch." msgstr "Désaccord avec la taille de la clé." -#: lib/setup.c:2938 +#: lib/setup.c:2948 #, c-format msgid "WARNING: Requested tag size %d bytes differs from %s size output (%d bytes).\n" msgstr "ATTENTION : La taille %d demandée pour l'étiquette est différente de la taille de sortie de %s (%d octets).\n" -#: lib/setup.c:3051 lib/setup.c:3153 +#: lib/setup.c:3061 lib/setup.c:3163 #, c-format msgid "Unknown or unsupported device type %s requested." msgstr "Type de périphérique %s demandé inconnu ou non supporté." -#: lib/setup.c:3067 +#: lib/setup.c:3077 #, c-format msgid "Device %s does not provide inline integrity data fields." msgstr "Le périphérique %s ne fourni pas de champs de données d'intégrité en ligne." -#: lib/setup.c:3073 +#: lib/setup.c:3083 #, c-format msgid "Inline tag size % [bytes] is larger than % provided by device %s." msgstr "La taille d'étiquette en ligne % [octets] est plus grande que % fournie par le périphérique %s." -#: lib/setup.c:3088 +#: lib/setup.c:3098 #, c-format msgid "Sector must be the same as device hardware sector (%zu bytes)." msgstr "Le secteur doit être le même que le secteur matériel du périphérique (%zu octets)." -#: lib/setup.c:3518 lib/setup.c:3607 lib/setup.c:3620 +#: lib/setup.c:3528 lib/setup.c:3617 lib/setup.c:3630 #, c-format msgid "Unsupported parameters on device %s." msgstr "Paramètres non supportés sur le périphérique %s." -#: lib/setup.c:3524 lib/setup.c:3627 lib/luks2/luks2_reencrypt.c:2929 +#: lib/setup.c:3534 lib/setup.c:3637 lib/luks2/luks2_reencrypt.c:2929 #: lib/luks2/luks2_reencrypt.c:3198 lib/luks2/luks2_reencrypt.c:3595 #, c-format msgid "Mismatching parameters on device %s." msgstr "Paramètres non concordants sur le périphérique %s." -#: lib/setup.c:3650 +#: lib/setup.c:3660 msgid "Crypt devices mismatch." msgstr "Désaccord entre les périphériques crypt." -#: lib/setup.c:3682 lib/setup.c:3687 lib/luks2/luks2_reencrypt.c:2413 +#: lib/setup.c:3692 lib/setup.c:3697 lib/luks2/luks2_reencrypt.c:2413 #: lib/luks2/luks2_reencrypt.c:2945 lib/luks2/luks2_reencrypt.c:4237 #, c-format msgid "Failed to reload device %s." msgstr "Impossible de recharger le périphérique %s." -#: lib/setup.c:3693 lib/setup.c:3699 lib/luks2/luks2_reencrypt.c:2383 +#: lib/setup.c:3703 lib/setup.c:3709 lib/luks2/luks2_reencrypt.c:2383 #: lib/luks2/luks2_reencrypt.c:2390 lib/luks2/luks2_reencrypt.c:2959 #, c-format msgid "Failed to suspend device %s." msgstr "Impossible de suspendre le périphérique %s." -#: lib/setup.c:3705 lib/luks2/luks2_reencrypt.c:2397 +#: lib/setup.c:3715 lib/luks2/luks2_reencrypt.c:2397 #: lib/luks2/luks2_reencrypt.c:2980 lib/luks2/luks2_reencrypt.c:4150 #: lib/luks2/luks2_reencrypt.c:4241 #, c-format msgid "Failed to resume device %s." msgstr "Impossible de redémarrer le périphérique %s." -#: lib/setup.c:3720 +#: lib/setup.c:3730 #, c-format msgid "Fatal error while reloading device %s (on top of device %s)." msgstr "Erreur fatale en rechargeant le périphérique %s (au dessus du périphérique %s)" -#: lib/setup.c:3723 lib/setup.c:3725 +#: lib/setup.c:3733 lib/setup.c:3735 #, c-format msgid "Failed to switch device %s to dm-error." msgstr "Impossible de basculer le périphérique %s en dm-error." -#: lib/setup.c:3768 +#: lib/setup.c:3778 msgid "Can not resize LUKS2 device with static size." msgstr "Impossible de redimensionner le périphérique LUKS2 avec une taille statique." -#: lib/setup.c:3773 +#: lib/setup.c:3783 msgid "Resize of LUKS2 device with integrity protection is not supported." msgstr "Le redimensionnement d'un périphérique LUKS2 avec un protection d'intégrité n'est pas supporté." -#: lib/setup.c:3819 +#: lib/setup.c:3829 msgid "Cannot resize loop device." msgstr "Impossible de redimensionner le périphérique loopback." -#: lib/setup.c:3863 +#: lib/setup.c:3873 msgid "WARNING: Maximum size already set or kernel doesn't support resize.\n" msgstr "ATTENTION: La taille maximale est déjà définie ou le noyau ne supporte pas le redimensionnement.\n" -#: lib/setup.c:3929 +#: lib/setup.c:3939 msgid "Resize failed, the kernel doesn't support it." msgstr "Le redimensionnement a échoué, le noyau ne le supporte pas." -#: lib/setup.c:3961 +#: lib/setup.c:3971 msgid "Do you really want to change UUID of device?" msgstr "Voulez vous réellement changer l'UUID du périphérique ?" -#: lib/setup.c:4053 +#: lib/setup.c:4061 lib/setup.c:4069 msgid "Header backup file does not contain compatible LUKS header." msgstr "Le fichier de sauvegarde de l'en-tête ne contient pas d'en-tête compatible LUKS." -#: lib/setup.c:4160 +#: lib/setup.c:4176 #, c-format msgid "Volume %s is not active." msgstr "Le volume %s n'est pas actif." -#: lib/setup.c:4215 +#: lib/setup.c:4231 #, c-format msgid "Volume %s is already suspended." msgstr "Le volume %s est déjà suspendu." -#: lib/setup.c:4241 +#: lib/setup.c:4257 #, c-format msgid "Suspend is not supported for device %s." msgstr "Le périphérique %s ne supporte pas la suspension." -#: lib/setup.c:4243 lib/setup.c:4251 +#: lib/setup.c:4259 lib/setup.c:4267 #, c-format msgid "Error during suspending device %s." msgstr "Erreur lors de la suspension du périphérique %s." -#: lib/setup.c:4266 +#: lib/setup.c:4282 #, c-format msgid "Device %s was suspended but hardware OPAL device cannot be locked." msgstr "Le périphérique %s a été suspendu mais le périphérique matériel OPAL ne sait pas être verrouillé." -#: lib/setup.c:4297 lib/setup.c:4491 +#: lib/setup.c:4313 lib/setup.c:4507 #, c-format msgid "Resume is not supported for device %s." msgstr "Le périphérique %s ne supporte pas la remise en service." -#: lib/setup.c:4299 lib/setup.c:4481 lib/setup.c:4493 +#: lib/setup.c:4315 lib/setup.c:4497 lib/setup.c:4509 #, c-format msgid "Error during resuming device %s." msgstr "Erreur lors de la remise en service du périphérique %s." -#: lib/setup.c:4335 +#: lib/setup.c:4351 msgid "Failed to unlink volume key from user specified keyring." msgstr "Impossible de délier la clé du porte-clé utilisateur spécifié." -#: lib/setup.c:4457 lib/setup.c:5637 +#: lib/setup.c:4473 lib/setup.c:5653 msgid "Failed to link volume key in user defined keyring." msgstr "Impossible de lier la clé de volume dans le porte-clé utilisateur." -#: lib/setup.c:4556 src/cryptsetup.c:2722 +#: lib/setup.c:4572 src/cryptsetup.c:2722 #, c-format msgid "Volume %s is not suspended." msgstr "Le volume %s n'est pas suspendu." -#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1856 +#: lib/setup.c:4683 lib/setup.c:7326 lib/setup.c:7348 src/cryptsetup.c:1856 #: src/cryptsetup.c:2260 src/cryptsetup.c:2278 src/utils_reencrypt.c:306 -#: src/utils_reencrypt.c:1969 +#: src/utils_reencrypt.c:1995 msgid "Volume key does not match the volume." msgstr "Ceci n'est pas la clé du volume." -#: lib/setup.c:4821 +#: lib/setup.c:4837 msgid "Failed to swap new key slot." msgstr "Nouvel emplacement de clé impossible à échanger." -#: lib/setup.c:4919 +#: lib/setup.c:4935 #, c-format msgid "Key slot %d is invalid." msgstr "L'emplacement de clé %d n'est pas valide." -#: lib/setup.c:4925 src/cryptsetup.c:1977 src/cryptsetup.c:2437 +#: lib/setup.c:4941 src/cryptsetup.c:1977 src/cryptsetup.c:2437 #: src/cryptsetup.c:3122 src/cryptsetup.c:3182 #, c-format msgid "Keyslot %d is not active." msgstr "L'emplacement de clé %d n'est pas actif." -#: lib/setup.c:4944 +#: lib/setup.c:4960 msgid "Device header overlaps with data area." msgstr "L'en-tête du périphérique recouvre la zone de données." -#: lib/setup.c:5165 +#: lib/setup.c:5181 msgid "Reencryption in-progress. Cannot activate device." msgstr "Re-chiffrement en cours. Impossible d'activer le périphérique." -#: lib/setup.c:5167 lib/luks2/luks2_json_metadata.c:2913 +#: lib/setup.c:5183 lib/luks2/luks2_json_metadata.c:2905 #: lib/luks2/luks2_reencrypt.c:3726 msgid "Failed to get reencryption lock." msgstr "Impossible d'obtenir le verrou de re-chiffrement." -#: lib/setup.c:5189 +#: lib/setup.c:5205 msgid "LUKS2 reencryption recovery using volume key(s) failed." msgstr "La récupération du rechiffrement LUKS2 avec la/les clé(s) de volume a échoué." -#: lib/setup.c:5325 +#: lib/setup.c:5341 #, c-format msgid "Device %s already exists." msgstr "Le périphérique %s existe déjà." -#: lib/setup.c:5332 +#: lib/setup.c:5348 #, c-format msgid "Cannot use device %s, name is invalid or still in use." msgstr "Impossible d'utiliser le périphérique %s, le nom est invalide ou est toujours utilisé." -#: lib/setup.c:5344 +#: lib/setup.c:5360 msgid "Reencryption volume keys do not match the volume." msgstr "Les clés de rechiffrement du volume ne correspondent pas au volume." -#: lib/setup.c:5361 +#: lib/setup.c:5377 msgid "Incorrect volume key specified for plain device." msgstr "Clé de volume incorrecte pour le périphérique en clair." -#: lib/setup.c:5387 lib/setup.c:5448 +#: lib/setup.c:5403 lib/setup.c:5464 msgid "Device type is not properly initialized." msgstr "Type de périphérique improprement initialisé." -#: lib/setup.c:5486 +#: lib/setup.c:5502 msgid "Kernel keyring is not supported by the kernel." msgstr "Le porte-clé du noyau n'est pas supporté par ce noyau." -#: lib/setup.c:5490 +#: lib/setup.c:5506 msgid "Kernel keyring missing: required for passing signature to kernel." msgstr "Le porte-clé du noyau est manquant : il est requis pour passer une signature au noyau." -#: lib/setup.c:5545 +#: lib/setup.c:5561 #, c-format msgid "Cannot use keyring key %s." msgstr "Impossible d'utiliser la clé %s du porte clé." -#: lib/setup.c:5758 +#: lib/setup.c:5774 msgid "Incorrect root hash specified for verity device." msgstr "Hachage racine incorrect spécifié pour le périphérique verity." -#: lib/setup.c:5799 lib/setup.c:5824 +#: lib/setup.c:5815 lib/setup.c:5840 msgid "OPAL does not support deferred deactivation." msgstr "OPAL ne supporte pas la désactivation différée." -#: lib/setup.c:5814 lib/setup.c:5845 lib/luks2/luks2_json_metadata.c:2978 +#: lib/setup.c:5830 lib/setup.c:5861 lib/luks2/luks2_json_metadata.c:2970 #: src/utils_reencrypt.c:89 #, c-format msgid "Device %s is still in use." msgstr "Le périphérique %s est toujours occupé." -#: lib/setup.c:5832 +#: lib/setup.c:5848 #, c-format msgid "Could not cancel deferred remove from device %s." msgstr "Impossible d'annuler la suppression différée du périphérique %s." -#: lib/setup.c:5854 +#: lib/setup.c:5870 #, c-format msgid "Invalid device %s." msgstr "Le périphérique %s n'est pas valide." -#: lib/setup.c:6001 +#: lib/setup.c:6017 msgid "Volume key buffer too small." msgstr "Le tampon de la clé du volume est trop petit." -#: lib/setup.c:6012 +#: lib/setup.c:6028 msgid "Cannot retrieve volume key for LUKS2 device." msgstr "Impossible de récupérer la clé du volume pour le périphérique LUKS2." -#: lib/setup.c:6021 +#: lib/setup.c:6037 msgid "Cannot retrieve volume key for LUKS1 device." msgstr "Impossible de récupérer la clé du volume pour le périphérique LUKS1." -#: lib/setup.c:6035 +#: lib/setup.c:6051 msgid "Cannot retrieve volume key for plain device." msgstr "Impossible de récupérer la clé du volume pour ce périphérique de type « plain »." -#: lib/setup.c:6043 +#: lib/setup.c:6059 msgid "Cannot retrieve root hash for verity device." msgstr "Impossible de récupérer le hachage racine pour le périphérique verity." -#: lib/setup.c:6052 +#: lib/setup.c:6068 msgid "Cannot retrieve volume key for BITLK device." msgstr "Impossible de récupérer la clé du volume pour le périphérique BITLK." -#: lib/setup.c:6057 +#: lib/setup.c:6073 msgid "Cannot retrieve volume key for FVAULT2 device." msgstr "Impossible de récupérer la clé du volume pour le périphérique FVAULT2." -#: lib/setup.c:6059 +#: lib/setup.c:6075 #, c-format msgid "This operation is not supported for %s crypt device." msgstr "Cette opération n'est pas possible pour le périphérique chiffré %s." -#: lib/setup.c:6244 lib/setup.c:6255 +#: lib/setup.c:6260 lib/setup.c:6271 msgid "Dump operation is not supported for this device type." msgstr "L'opération de vidage n'est pas supportée pour ce type de périphérique." -#: lib/setup.c:6635 +#: lib/setup.c:6651 #, c-format msgid "Data offset is not multiple of %u bytes." msgstr "Le décalage des données n'est pas un multiple de %u octets." -#: lib/setup.c:6943 +#: lib/setup.c:6959 #, c-format msgid "Cannot convert device %s which is still in use." msgstr "Impossible de convertir le périphérique %s qui est toujours en cours d'utilisation." -#: lib/setup.c:7251 lib/setup.c:7406 +#: lib/setup.c:7267 lib/setup.c:7422 #, c-format msgid "Failed to assign keyslot %u as the new volume key." msgstr "Échec de l'affectation de l'emplacement de clé %u pour la nouvelle clé de volume." -#: lib/setup.c:7275 +#: lib/setup.c:7291 msgid "Failed to initialize default LUKS2 keyslot parameters." msgstr "Échec de l'initialisation des paramètres par défaut des emplacement de clé LUKS2." -#: lib/setup.c:7281 +#: lib/setup.c:7297 #, c-format msgid "Failed to assign keyslot %d to digest." msgstr "Échec de l'affectation de l'emplacement de clé %d aux résumé." -#: lib/setup.c:7523 +#: lib/setup.c:7539 msgid "Cannot add key slot, all slots disabled and no volume key provided." msgstr "Impossible d'ajouter un emplacement de clé, tous les emplacements sont désactivés et aucune clé n'a été fournie pour ce volume." -#: lib/setup.c:7611 lib/setup.c:7626 lib/verity/verity.c:333 +#: lib/setup.c:7627 lib/setup.c:7642 lib/verity/verity.c:333 msgid "Failed to load key in kernel keyring." msgstr "Impossible de charger la clé dans le porte-clé du noyau." -#: lib/setup.c:7807 +#: lib/setup.c:7823 #, c-format msgid "Could not find keyring described by \"%s\"." msgstr "Impossible de trouver le porte-clé décrit par « %s »." -#: lib/setup.c:7872 +#: lib/setup.c:7888 msgid "Failed to acquire global memory-hard access serialization lock." msgstr "Erreur lors de l'acquisition du verrou global de sérialisation des accès strictes à la mémoire" @@ -788,7 +788,7 @@ msgid "Cannot read requested amount of data." msgstr "Impossible de lire la quantité de données demandée." #: lib/utils_device.c:207 lib/utils_storage_wrappers.c:99 -#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2257 +#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2283 #, c-format msgid "Device %s does not exist or access denied." msgstr "Le périphérique %s n'existe pas ou l'accès y est interdit." @@ -904,16 +904,16 @@ msgstr "Le nombre de threads parallèles PBKDF demandé ne peut pas être zéro. msgid "Only PBKDF2 is supported in FIPS mode." msgstr "Seul PBKDF2 est supporté en mode FIPS." -#: lib/utils_benchmark.c:171 +#: lib/utils_benchmark.c:175 msgid "PBKDF benchmark disabled but iterations not set." msgstr "L'étalon PBKDF est désactivé mais les itérations ne sont pas définies." -#: lib/utils_benchmark.c:190 +#: lib/utils_benchmark.c:194 #, c-format msgid "Not compatible PBKDF2 options (using hash algorithm %s)." msgstr "Options PBKDF2 incompatibles (en utilisant l'algorithme de hachage %s)." -#: lib/utils_benchmark.c:210 +#: lib/utils_benchmark.c:214 msgid "Not compatible PBKDF options." msgstr "Options PBKDF incompatibles." @@ -963,9 +963,9 @@ msgstr "La taille de la clé en mode XTS doit être un multiple de 256 ou 512 bi msgid "Cipher specification should be in [cipher]-[mode]-[iv] format." msgstr "La spécification du chiffrement devrait être au format [chiffrement]-[mode]-[iv]." -#: lib/luks1/keyencryption.c:85 lib/luks1/keymanage.c:353 -#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1132 -#: lib/luks2/luks2_json_metadata.c:1518 lib/luks2/luks2_keyslot.c:711 +#: lib/luks1/keyencryption.c:85 lib/luks1/keymanage.c:358 +#: lib/luks1/keymanage.c:665 lib/luks1/keymanage.c:1133 +#: lib/luks2/luks2_json_metadata.c:1510 lib/luks2/luks2_keyslot.c:711 #, c-format msgid "Cannot write to device %s, permission denied." msgstr "Impossible d'écrire sur le périphérique %s. Permission refusée." @@ -983,13 +983,13 @@ msgstr "Impossible d'accéder au périphérique de stockage temporaire de clés. msgid "IO error while encrypting keyslot." msgstr "Erreur E/S pendant le chiffrement de l'emplacement de clé." -#: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:356 -#: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:659 +#: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:361 +#: lib/luks1/keymanage.c:619 lib/luks1/keymanage.c:668 lib/tcrypt/tcrypt.c:659 #: lib/fvault2/fvault2.c:872 lib/verity/verity.c:67 lib/verity/verity.c:183 #: lib/verity/verity_hash.c:312 lib/verity/verity_hash.c:321 #: lib/verity/verity_hash.c:350 lib/verity/verity_fec.c:247 #: lib/verity/verity_fec.c:259 lib/verity/verity_fec.c:264 -#: lib/luks2/luks2_json_metadata.c:1521 src/utils_reencrypt_luks1.c:108 +#: lib/luks2/luks2_json_metadata.c:1513 src/utils_reencrypt_luks1.c:108 #: src/utils_reencrypt_luks1.c:120 #, c-format msgid "Cannot open device %s." @@ -1004,61 +1004,61 @@ msgstr "Erreur E/S pendant le déchiffrement de l'emplacement de clé." msgid "Device %s is too small. (LUKS1 requires at least % bytes.)" msgstr "Le périphérique %s est trop petit (LUKS1 a besoin d'au moins % octets)." -#: lib/luks1/keymanage.c:138 lib/luks1/keymanage.c:146 -#: lib/luks1/keymanage.c:158 lib/luks1/keymanage.c:169 -#: lib/luks1/keymanage.c:181 +#: lib/luks1/keymanage.c:143 lib/luks1/keymanage.c:151 +#: lib/luks1/keymanage.c:163 lib/luks1/keymanage.c:174 +#: lib/luks1/keymanage.c:186 #, c-format msgid "LUKS keyslot %u is invalid." msgstr "L'emplacement de clé LUKS %u n'est pas valide." -#: lib/luks1/keymanage.c:254 lib/luks2/luks2_json_metadata.c:1382 +#: lib/luks1/keymanage.c:259 lib/luks2/luks2_json_metadata.c:1382 #, c-format msgid "Requested header backup file %s already exists." msgstr "Le fichier de sauvegarde d'en-tête demandé %s existe déjà." -#: lib/luks1/keymanage.c:256 lib/luks2/luks2_json_metadata.c:1384 +#: lib/luks1/keymanage.c:261 lib/luks2/luks2_json_metadata.c:1384 #, c-format msgid "Cannot create header backup file %s." msgstr "Impossible de créer le fichier de sauvegarde d'en-tête %s." -#: lib/luks1/keymanage.c:263 lib/luks2/luks2_json_metadata.c:1391 +#: lib/luks1/keymanage.c:268 lib/luks2/luks2_json_metadata.c:1391 #, c-format msgid "Cannot write header backup file %s." msgstr "Impossible d'écrire le fichier de sauvegarde d'en-tête %s." -#: lib/luks1/keymanage.c:295 lib/luks2/luks2_json_metadata.c:1428 +#: lib/luks1/keymanage.c:300 lib/luks2/luks2_json_metadata.c:1420 msgid "Backup file does not contain valid LUKS header." msgstr "Le fichier de sauvegarde ne contient pas d'en-tête LUKS valide." -#: lib/luks1/keymanage.c:308 lib/luks1/keymanage.c:580 -#: lib/luks2/luks2_json_metadata.c:1450 +#: lib/luks1/keymanage.c:313 lib/luks1/keymanage.c:585 +#: lib/luks2/luks2_json_metadata.c:1442 #, c-format msgid "Cannot open header backup file %s." msgstr "Impossible d'ouvrir le fichier de sauvegarde d'en-tête %s." -#: lib/luks1/keymanage.c:316 lib/luks2/luks2_json_metadata.c:1458 +#: lib/luks1/keymanage.c:321 lib/luks2/luks2_json_metadata.c:1450 #, c-format msgid "Cannot read header backup file %s." msgstr "Impossible de lire le fichier de sauvegarde d'en-tête %s." -#: lib/luks1/keymanage.c:326 +#: lib/luks1/keymanage.c:331 msgid "Data offset or key size differs on device and backup, restore failed." msgstr "Le décalage des données (« offset ») ou la taille de la clé ne sont pas identiques dans le périphérique et la sauvegarde. La restauration a échouée." -#: lib/luks1/keymanage.c:334 +#: lib/luks1/keymanage.c:339 #, c-format msgid "Device %s %s%s" msgstr "Périphérique %s %s%s" -#: lib/luks1/keymanage.c:335 +#: lib/luks1/keymanage.c:340 msgid "does not contain LUKS header. Replacing header can destroy data on that device." msgstr "ne contient pas d'en-tête LUKS. Remplacer l'en-tête peut détruire les données de ce périphérique." -#: lib/luks1/keymanage.c:336 +#: lib/luks1/keymanage.c:341 msgid "already contains LUKS header. Replacing header will destroy existing keyslots." msgstr "contient déjà un en-tête LUKS. Remplacer l'en-tête détruira les emplacements de clés actuels." -#: lib/luks1/keymanage.c:337 lib/luks2/luks2_json_metadata.c:1490 +#: lib/luks1/keymanage.c:342 lib/luks2/luks2_json_metadata.c:1482 msgid "" "\n" "WARNING: real device header has different UUID than backup!" @@ -1066,130 +1066,130 @@ msgstr "" "\n" "ATTENTION : l'en-tête du périphérique a un UUID différent de celui de la sauvegarde !" -#: lib/luks1/keymanage.c:385 +#: lib/luks1/keymanage.c:390 msgid "Non standard key size, manual repair required." msgstr "Taille de clé non standard. Réparation manuelle requise." -#: lib/luks1/keymanage.c:395 +#: lib/luks1/keymanage.c:400 msgid "Non standard keyslots alignment, manual repair required." msgstr "Alignement non standard des emplacements de clé. Réparation manuelle requise." -#: lib/luks1/keymanage.c:404 +#: lib/luks1/keymanage.c:409 #, c-format msgid "Cipher mode repaired (%s -> %s)." msgstr "Mode de chiffrement réparé (%s -> %s)." -#: lib/luks1/keymanage.c:415 +#: lib/luks1/keymanage.c:420 #, c-format msgid "Cipher hash repaired to lowercase (%s)." msgstr "Valeur hachée du chiffrement réparée vers des minuscules (%s)." -#: lib/luks1/keymanage.c:417 lib/luks1/keymanage.c:523 -#: lib/luks1/keymanage.c:756 +#: lib/luks1/keymanage.c:422 lib/luks1/keymanage.c:528 +#: lib/luks1/keymanage.c:757 #, c-format msgid "Requested LUKS hash %s is not supported." msgstr "L'algorithme de hachage LUKS demandé (%s) n'est pas supporté." -#: lib/luks1/keymanage.c:431 +#: lib/luks1/keymanage.c:436 msgid "Repairing keyslots." msgstr "Réparation des emplacements de clé." -#: lib/luks1/keymanage.c:450 +#: lib/luks1/keymanage.c:455 #, c-format msgid "Keyslot %i: offset repaired (%u -> %u)." msgstr "Emplacement de clé %i : décalage réparé (%u -> %u)." -#: lib/luks1/keymanage.c:458 +#: lib/luks1/keymanage.c:463 #, c-format msgid "Keyslot %i: stripes repaired (%u -> %u)." msgstr "Emplacement de clé %i : bandes réparées (%u -> %u)." -#: lib/luks1/keymanage.c:467 +#: lib/luks1/keymanage.c:472 #, c-format msgid "Keyslot %i: bogus partition signature." msgstr "Emplacement de clé %i : signature de partition contrefaite." -#: lib/luks1/keymanage.c:472 +#: lib/luks1/keymanage.c:477 #, c-format msgid "Keyslot %i: salt wiped." msgstr "Emplacement de clé %i : aléa effacé." -#: lib/luks1/keymanage.c:489 +#: lib/luks1/keymanage.c:494 msgid "Writing LUKS header to disk." msgstr "Écriture de l'en-tête LUKS sur le disque." -#: lib/luks1/keymanage.c:494 +#: lib/luks1/keymanage.c:499 msgid "Repair failed." msgstr "Échec de la réparation." -#: lib/luks1/keymanage.c:549 +#: lib/luks1/keymanage.c:554 #, c-format msgid "LUKS cipher mode %s is invalid." msgstr "Le mode de chiffrement LUKS %s n'est pas valide." -#: lib/luks1/keymanage.c:554 +#: lib/luks1/keymanage.c:559 #, c-format msgid "LUKS hash %s is invalid." msgstr "La valeur hachée LUKS %s n'est pas valide." -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 +#: lib/luks1/keymanage.c:566 src/cryptsetup.c:1367 msgid "No known problems detected for LUKS header." msgstr "Aucun problème connu détecté pour l'en-tête LUKS." -#: lib/luks1/keymanage.c:689 +#: lib/luks1/keymanage.c:690 #, c-format msgid "Error during update of LUKS header on device %s." msgstr "Erreur lors de la mise à jour de l'en-tête LUKS sur le périphérique %s." -#: lib/luks1/keymanage.c:697 +#: lib/luks1/keymanage.c:698 #, c-format msgid "Error re-reading LUKS header after update on device %s." msgstr "Erreur lors de la relecture de l'en-tête LUKS après la mise à jour sur le périphérique %s." -#: lib/luks1/keymanage.c:750 +#: lib/luks1/keymanage.c:751 msgid "Data offset for LUKS header must be either 0 or higher than header size." msgstr "L'offset des données d'un en-tête LUKS doit être soit 0 ou soit plus grand que la taille de l'en-tête." -#: lib/luks1/keymanage.c:761 lib/luks1/keymanage.c:832 -#: lib/luks2/luks2_json_format.c:231 lib/luks2/luks2_json_metadata.c:1261 +#: lib/luks1/keymanage.c:762 lib/luks1/keymanage.c:833 +#: lib/luks2/luks2_json_format.c:240 lib/luks2/luks2_json_metadata.c:1261 #: src/utils_reencrypt.c:703 msgid "Wrong LUKS UUID format provided." msgstr "Mauvais format fourni pour le UUID LUKS." -#: lib/luks1/keymanage.c:783 +#: lib/luks1/keymanage.c:784 msgid "Cannot create LUKS header: reading random salt failed." msgstr "Impossible de créer un en-tête LUKS : échec lors de la lecture de l'aléa." -#: lib/luks1/keymanage.c:811 +#: lib/luks1/keymanage.c:812 #, c-format msgid "Cannot create LUKS header: header digest failed (using hash %s)." msgstr "Impossible de créer un en-tête LUKS : le résumé (« digest ») de l'en-tête a échoué (en utilisant l'algorithme de hachage %s)." -#: lib/luks1/keymanage.c:856 +#: lib/luks1/keymanage.c:857 #, c-format msgid "Key slot %d active, purge first." msgstr "L'emplacement de clé %d est activé, effacez le d'abord." -#: lib/luks1/keymanage.c:862 +#: lib/luks1/keymanage.c:863 #, c-format msgid "Key slot %d material includes too few stripes. Header manipulation?" msgstr "Le matériel de l'emplacement de clé %d a trop peu de bandes. L'en-tête a-t-il été modifié ?" -#: lib/luks1/keymanage.c:900 lib/luks2/luks2_keyslot_luks2.c:217 +#: lib/luks1/keymanage.c:901 lib/luks2/luks2_keyslot_luks2.c:217 msgid "PBKDF2 iteration value overflow." msgstr "Débordement de la valeur d'itération de PBKDF2." -#: lib/luks1/keymanage.c:1022 +#: lib/luks1/keymanage.c:1023 #, c-format msgid "Cannot open keyslot (using hash %s)." msgstr "Impossible d'ouvrir l'emplacement de clé (en utilisant le hachage %s)." -#: lib/luks1/keymanage.c:1118 +#: lib/luks1/keymanage.c:1119 #, c-format msgid "Key slot %d is invalid, please select keyslot between 0 and %d." msgstr "L'emplacement de clé %d n'est pas valide, merci de sélectionner un emplacement entre 0 et %d." -#: lib/luks1/keymanage.c:1136 lib/luks2/luks2_keyslot.c:715 +#: lib/luks1/keymanage.c:1137 lib/luks2/luks2_keyslot.c:715 #, c-format msgid "Cannot wipe device %s." msgstr "Impossible d'effacer de façon sécurisée le périphérique %s." @@ -1367,33 +1367,33 @@ msgstr "Cette opération n'est pas supportée." msgid "Unexpected key data size." msgstr "Taille inattendue pour les données de la clé." -#: lib/bitlk/bitlk.c:1442 +#: lib/bitlk/bitlk.c:1448 msgid "This BITLK device is in an unsupported state and cannot be activated." msgstr "Ce périphérique BITLK est dans un état non supporté et ne peut pas être activé." -#: lib/bitlk/bitlk.c:1447 +#: lib/bitlk/bitlk.c:1453 #, c-format msgid "BITLK devices with type '%s' cannot be activated." msgstr "Les périphériques BITLK avec le type « %s » ne peuvent pas être activés." -#: lib/bitlk/bitlk.c:1486 +#: lib/bitlk/bitlk.c:1492 #, c-format msgid "WARNING: BitLocker volume size % does not match the underlying device size %" msgstr "AVERTISSEMENT: La taille % du volume BitLocker ne correspond pas à la taille % du périphérique sous-jacent" -#: lib/bitlk/bitlk.c:1613 +#: lib/bitlk/bitlk.c:1634 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK IV." msgstr "Impossible d'activer le périphérique car dm-crypt dans le noyau ne supporte pas BITLK IV." -#: lib/bitlk/bitlk.c:1617 +#: lib/bitlk/bitlk.c:1638 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK Elephant diffuser." msgstr "Impossible d'activer le périphérique car dm-crypt dans le noyau ne supporte pas le diffuseur BITLK Elephant." -#: lib/bitlk/bitlk.c:1621 +#: lib/bitlk/bitlk.c:1642 msgid "Cannot activate device, kernel dm-crypt is missing support for large sector size." msgstr "Impossible d'activer le périphérique car dm-crypt dans le noyau ne supporte pas une grande taille de secteur." -#: lib/bitlk/bitlk.c:1625 +#: lib/bitlk/bitlk.c:1646 msgid "Cannot activate device, kernel dm-zero module is missing." msgstr "Impossible d'activer le périphérique car le module dm-zero est manquant dans le noyau." @@ -1550,24 +1550,24 @@ msgstr "Impossible de déterminer la taille du périphérique %s." msgid "Incompatible kernel dm-integrity metadata (version %u) detected on %s." msgstr "Métadonnées dm-integrity du noyau incompatible (version %u) détectée sur %s." -#: lib/integrity/integrity.c:308 lib/integrity/integrity.c:492 +#: lib/integrity/integrity.c:309 lib/integrity/integrity.c:493 msgid "Kernel does not support dm-integrity mapping." msgstr "Le noyau ne supporte pas les associations de type dm-integrity." -#: lib/integrity/integrity.c:314 +#: lib/integrity/integrity.c:315 msgid "Kernel does not support dm-integrity fixed metadata alignment." msgstr "Le noyau ne supporte pas les alignements de méta-données fixés de dm-integrity." -#: lib/integrity/integrity.c:323 +#: lib/integrity/integrity.c:324 msgid "Kernel refuses to activate insecure recalculate option (see legacy activation options to override)." msgstr "Le noyau refuse d'activer l'option de recalcul non sûre (voyez les options d'activation historique pour outrepasser)." -#: lib/integrity/integrity.c:329 +#: lib/integrity/integrity.c:330 msgid "Kernel does not support dm-integrity inline mode." msgstr "Le noyau ne supporte pas le mode en ligne de dm-integrity." #: lib/luks2/luks2_disk_metadata.c:382 lib/luks2/luks2_json_metadata.c:1184 -#: lib/luks2/luks2_json_metadata.c:1510 +#: lib/luks2/luks2_json_metadata.c:1502 #, c-format msgid "Failed to acquire write lock on device %s." msgstr "Impossible d'acquérir un verrou en écriture sur le périphérique %s." @@ -1589,22 +1589,22 @@ msgstr "" msgid "WARNING: keyslots area (% bytes) is very small, available LUKS2 keyslot count is very limited.\n" msgstr "ATTENTION: la zone des emplacements de clés (% octets) est très petite, le nombre d'emplacements de clés LUKS2 est très limité.\n" -#: lib/luks2/luks2_json_format.c:418 +#: lib/luks2/luks2_json_format.c:427 msgid "Requested data offset is too small." msgstr "Le décalage de données demandé est trop petit." -#: lib/luks2/luks2_json_format.c:459 +#: lib/luks2/luks2_json_format.c:468 #, c-format msgid "WARNING: LUKS2 metadata size changed to % bytes.\n" msgstr "ATTENTION: La taille des métadonnées LUKS2 est devenue % octets.\n" -#: lib/luks2/luks2_json_format.c:463 +#: lib/luks2/luks2_json_format.c:472 #, c-format msgid "WARNING: LUKS2 keyslots area size changed to % bytes.\n" msgstr "ATTENTION: La taille de la zone des emplacements de clés LUKS2 est devenue % octets.\n" #: lib/luks2/luks2_json_metadata.c:1171 lib/luks2/luks2_json_metadata.c:1357 -#: lib/luks2/luks2_json_metadata.c:1417 lib/luks2/luks2_keyslot_luks2.c:71 +#: lib/luks2/luks2_json_metadata.c:1412 lib/luks2/luks2_keyslot_luks2.c:71 #, c-format msgid "Failed to acquire read lock on device %s." msgstr "Impossible d'acquérir le verrou de lecture sur le périphérique %s." @@ -1613,33 +1613,33 @@ msgstr "Impossible d'acquérir le verrou de lecture sur le périphérique %s." msgid "Label is too long." msgstr "L'étiquette est trop longue." -#: lib/luks2/luks2_json_metadata.c:1435 +#: lib/luks2/luks2_json_metadata.c:1427 #, c-format msgid "Forbidden LUKS2 requirements detected in backup %s." msgstr "Des exigences LUKS2 interdites ont été détectées dans la sauvegarde %s." -#: lib/luks2/luks2_json_metadata.c:1474 +#: lib/luks2/luks2_json_metadata.c:1466 msgid "Data offset differ on device and backup, restore failed." msgstr "Les décalages des données ne sont pas identiques sur le périphérique et la sauvegarde, la restauration a échoué." -#: lib/luks2/luks2_json_metadata.c:1480 +#: lib/luks2/luks2_json_metadata.c:1472 msgid "Binary header with keyslot areas size differ on device and backup, restore failed." msgstr "Les en-têtes binaires avec des tailles de zones d'emplacements de clés sont différents sur le périphérique et la sauvegarde, la restauration a échouée." -#: lib/luks2/luks2_json_metadata.c:1487 +#: lib/luks2/luks2_json_metadata.c:1479 #, c-format msgid "Device %s %s%s%s%s" msgstr "Périphérique %s %s%s%s%s" -#: lib/luks2/luks2_json_metadata.c:1488 +#: lib/luks2/luks2_json_metadata.c:1480 msgid "does not contain LUKS2 header. Replacing header can destroy data on that device." msgstr "ne contient pas d'en-tête LUKS2. Remplacer l'en-tête peut détruire les données de ce périphérique." -#: lib/luks2/luks2_json_metadata.c:1489 +#: lib/luks2/luks2_json_metadata.c:1481 msgid "already contains LUKS2 header. Replacing header will destroy existing keyslots." msgstr "contient déjà un en-tête LUKS2. Remplacer l'en-tête détruira les emplacements de clés actuels." -#: lib/luks2/luks2_json_metadata.c:1491 +#: lib/luks2/luks2_json_metadata.c:1483 msgid "" "\n" "WARNING: unknown LUKS2 requirements detected in real device header!\n" @@ -1649,7 +1649,7 @@ msgstr "" "ATTENTION: des exigences LUKS2 inconnues ont été détectées sur l'en-tête du périphérique réel !\n" "Remplacer l'en-tête par la sauvegarde peut corrompre les données sur ce périphérique !" -#: lib/luks2/luks2_json_metadata.c:1493 +#: lib/luks2/luks2_json_metadata.c:1485 msgid "" "\n" "WARNING: Unfinished offline reencryption detected on the device!\n" @@ -1659,84 +1659,84 @@ msgstr "" "ATTENTION: Un rechiffrement hors-ligne non terminé a été détecté sur le périphérique !\n" "Remplacer l'en-tête par la sauvegarde peut corrompre les données." -#: lib/luks2/luks2_json_metadata.c:1591 +#: lib/luks2/luks2_json_metadata.c:1583 #, c-format msgid "Ignored unknown flag %s." msgstr "Fanion inconnu %s ignoré." -#: lib/luks2/luks2_json_metadata.c:2563 lib/luks2/luks2_reencrypt.c:2110 +#: lib/luks2/luks2_json_metadata.c:2555 lib/luks2/luks2_reencrypt.c:2110 #, c-format msgid "Missing key for dm-crypt segment %u" msgstr "Clé manquante pour le segment %u de dm-crypt" -#: lib/luks2/luks2_json_metadata.c:2575 lib/luks2/luks2_reencrypt.c:2123 +#: lib/luks2/luks2_json_metadata.c:2567 lib/luks2/luks2_reencrypt.c:2123 msgid "Failed to set dm-crypt segment." msgstr "Impossible de définir le segment dm-crypt." -#: lib/luks2/luks2_json_metadata.c:2581 lib/luks2/luks2_reencrypt.c:2129 +#: lib/luks2/luks2_json_metadata.c:2573 lib/luks2/luks2_reencrypt.c:2129 msgid "Failed to set dm-linear segment." msgstr "Impossible de définir le segment dm-linear." -#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:580 +#: lib/luks2/luks2_json_metadata.c:2693 src/utils_reencrypt.c:580 msgid "No known cipher specification pattern detected in LUKS2 header." msgstr "Aucun motif connu d'algorithme de chiffrement n'a été détecté dans l'en-tête LUKS2." -#: lib/luks2/luks2_json_metadata.c:2709 +#: lib/luks2/luks2_json_metadata.c:2701 msgid "OPAL device must have static device size." msgstr "Un périphérique OPAL doit avoir une taille de périphérique statique." -#: lib/luks2/luks2_json_metadata.c:2729 +#: lib/luks2/luks2_json_metadata.c:2721 msgid "Encrypted OPAL device with integrity must be smaller than locking range." msgstr "Un périphérique OPAL chiffré avec intégrité doit être plus petit que la plage de verrouillage." -#: lib/luks2/luks2_json_metadata.c:2734 +#: lib/luks2/luks2_json_metadata.c:2726 msgid "OPAL device must have same size as locking range." msgstr "Un périphérique OPAL doit avoir la même taille que la plage de verrouillage." -#: lib/luks2/luks2_json_metadata.c:2754 +#: lib/luks2/luks2_json_metadata.c:2746 #, c-format msgid "OPAL device is %s already unlocked.\n" msgstr "Le périphérique OPAL %s est déjà déverrouillé.\n" -#: lib/luks2/luks2_json_metadata.c:2793 +#: lib/luks2/luks2_json_metadata.c:2785 msgid "Unsupported device integrity configuration." msgstr "Configuration d'intégrité du périphérique non supportée." -#: lib/luks2/luks2_json_metadata.c:2809 +#: lib/luks2/luks2_json_metadata.c:2801 msgid "Underlying dm-integrity device with unexpected provided data sectors." msgstr "Les secteurs de données fournis sont inattendus pour le périphérique dm-integrity sous-jacent." -#: lib/luks2/luks2_json_metadata.c:2911 +#: lib/luks2/luks2_json_metadata.c:2903 msgid "Reencryption in-progress. Cannot deactivate device." msgstr "Re-chiffrement en cours. Le périphérique ne peut être désactivé." -#: lib/luks2/luks2_json_metadata.c:2922 lib/luks2/luks2_reencrypt.c:4287 +#: lib/luks2/luks2_json_metadata.c:2914 lib/luks2/luks2_reencrypt.c:4287 #, c-format msgid "Failed to replace suspended device %s with dm-error target." msgstr "Échec du remplacement du périphérique suspendu %s avec la cible dm-error." -#: lib/luks2/luks2_json_metadata.c:3001 lib/luks2/luks2_json_metadata.c:3023 +#: lib/luks2/luks2_json_metadata.c:2993 lib/luks2/luks2_json_metadata.c:3015 #, c-format msgid "Device %s was deactivated but hardware OPAL device cannot be locked." msgstr "Le périphérique %s a été désactivé mais le périphérique matériel OPAL ne sait pas être verrouillé." -#: lib/luks2/luks2_json_metadata.c:3045 +#: lib/luks2/luks2_json_metadata.c:3037 msgid "Unmet LUKS2 requirements detected." msgstr "Des exigences LUKS2 non rencontrées ont été détectées." -#: lib/luks2/luks2_json_metadata.c:3053 +#: lib/luks2/luks2_json_metadata.c:3045 msgid "Operation incompatible with device marked for legacy reencryption. Aborting." msgstr "Opération incompatible avec un périphérique marqué pour le rechiffrement historique. Abandon." -#: lib/luks2/luks2_json_metadata.c:3055 +#: lib/luks2/luks2_json_metadata.c:3047 msgid "Operation incompatible with device marked for LUKS2 reencryption. Aborting." msgstr "Opération incompatible avec un périphérique marqué pour le rechiffrement LUKS2. Abandon." -#: lib/luks2/luks2_json_metadata.c:3057 +#: lib/luks2/luks2_json_metadata.c:3049 msgid "Operation incompatible with device using OPAL. Aborting." msgstr "Opération incompatible avec un périphérique utilisant OPAL. Abandon." -#: lib/luks2/luks2_json_metadata.c:3059 +#: lib/luks2/luks2_json_metadata.c:3051 msgid "Operation incompatible with device using inline HW tags. Aborting." msgstr "Opération incompatible avec un périphérique utilisant les étiquettes HW. Abandon." @@ -1803,60 +1803,60 @@ msgstr "Impossible d'utiliser la spécification de chiffrement %s-%s pour un emp msgid "Unable to move keyslot area. Not enough space." msgstr "Impossible de déplacer la zone des emplacements de clés. Pas assez d'espace." -#: lib/luks2/luks2_luks1_convert.c:619 +#: lib/luks2/luks2_luks1_convert.c:627 msgid "Cannot convert to LUKS2 format - invalid metadata." msgstr "Impossible de convertir au format LUKS2 – métadonnées invalides." -#: lib/luks2/luks2_luks1_convert.c:636 +#: lib/luks2/luks2_luks1_convert.c:644 msgid "Unable to move keyslot area. LUKS2 keyslots area too small." msgstr "Impossible de déplacer la zone des emplacements de clés. Les emplacements de clés LULS2 sont trop petits." -#: lib/luks2/luks2_luks1_convert.c:642 lib/luks2/luks2_luks1_convert.c:972 +#: lib/luks2/luks2_luks1_convert.c:650 lib/luks2/luks2_luks1_convert.c:980 msgid "Unable to move keyslot area." msgstr "Impossible de déplacer la zone des emplacements de clés." -#: lib/luks2/luks2_luks1_convert.c:757 +#: lib/luks2/luks2_luks1_convert.c:765 msgid "Cannot convert to LUKS1 format - default segment encryption sector size is not 512 bytes." msgstr "Impossible de convertir au format LUKS1 – la taille du secteur de chiffrement du segment par défaut n'est pas 512 octets." -#: lib/luks2/luks2_luks1_convert.c:765 +#: lib/luks2/luks2_luks1_convert.c:773 msgid "Cannot convert to LUKS1 format - key slot digests are not LUKS1 compatible." msgstr "Impossible de convertir au format LUKS1 – les résumés des emplacements de clés ne sont pas compatibles avec LUKS1." -#: lib/luks2/luks2_luks1_convert.c:779 +#: lib/luks2/luks2_luks1_convert.c:787 #, c-format msgid "Cannot convert to LUKS1 format - device uses wrapped key cipher %s." msgstr "Impossible de convertir au format LUKS1 – le périphérique utilise des clés de chiffrement %s emballées." -#: lib/luks2/luks2_luks1_convert.c:784 +#: lib/luks2/luks2_luks1_convert.c:792 msgid "Cannot convert to LUKS1 format - device uses more segments." msgstr "Impossible de convertir au format LUKS1 – le périphérique utilise plus de segments." -#: lib/luks2/luks2_luks1_convert.c:792 +#: lib/luks2/luks2_luks1_convert.c:800 #, c-format msgid "Cannot convert to LUKS1 format - LUKS2 header contains %u token(s)." msgstr "Impossible de convertir au format LUKS1 – l'en-tête LUKS2 contient %u jeton(s)." -#: lib/luks2/luks2_luks1_convert.c:798 +#: lib/luks2/luks2_luks1_convert.c:806 msgid "Cannot convert to LUKS1 format - there are no active keyslots." msgstr "Impossible de convertir au format LUKS1 – il n'y a pas d'emplacements de clés actifs." -#: lib/luks2/luks2_luks1_convert.c:810 +#: lib/luks2/luks2_luks1_convert.c:818 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is in invalid state." msgstr "Impossible de convertir au format LUKS1 – l'emplacement de clé %u est dans un état invalide." -#: lib/luks2/luks2_luks1_convert.c:815 +#: lib/luks2/luks2_luks1_convert.c:823 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is unbound." msgstr "Impossible de convertir au format LUKS1 – l'emplacement de clé %u n'est pas lié." -#: lib/luks2/luks2_luks1_convert.c:820 +#: lib/luks2/luks2_luks1_convert.c:828 #, c-format msgid "Cannot convert to LUKS1 format - slot %u (over maximum slots) is still active." msgstr "Impossible de convertir au format LUKS1 – l'emplacement %u (sur les emplacements maximum) est toujours actif." -#: lib/luks2/luks2_luks1_convert.c:825 +#: lib/luks2/luks2_luks1_convert.c:833 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is not LUKS1 compatible." msgstr "Impossible de convertir au format LUKS1 – l'emplacement de clé %u n'est pas compatible avec LUKS1." @@ -2142,7 +2142,7 @@ msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encry msgstr "Les paramètres de chiffrement des emplacement de clés ne sont pas compatibles avec le chiffrement des emplacements de LUKS2." #: src/cryptsetup.c:150 src/cryptsetup.c:1180 src/cryptsetup.c:1545 -#: src/utils_reencrypt.c:1890 src/utils_reencrypt_luks1.c:502 +#: src/utils_reencrypt.c:1916 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." msgstr "Aucun motif connu d'algorithme de chiffrement n'a été détecté." @@ -2170,7 +2170,7 @@ msgid "WARNING: The --keyfile-size option is being ignored, the read size is the msgstr "ATTENTION: L'option --keyfile-size est ignorée. La taille de lecture est la même que la taille de la clé de chiffrement.\n" #: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 -#: src/integritysetup.c:189 src/utils_reencrypt.c:2141 +#: src/integritysetup.c:189 src/utils_reencrypt.c:2167 #, c-format msgid "Blkid scan failed for %s." msgstr "L'analyse de blkid a échouée pour %s." @@ -2250,7 +2250,7 @@ msgstr "Le périphérique %s n'est pas un périphérique FVAULT2 valide." msgid "Cannot determine volume key size for FVAULT2, please use --key-size option." msgstr "Impossible de déterminer la taille de la clé de volume pour FVAULT2, veuillez utiliser l'option --key-size." -#: src/cryptsetup.c:849 src/veritysetup.c:317 src/integritysetup.c:422 +#: src/cryptsetup.c:849 src/veritysetup.c:317 src/integritysetup.c:424 #, c-format msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "Le périphérique %s est toujours actif et prévu pour une suppression différée.\n" @@ -2440,7 +2440,7 @@ msgid "LUKS file container %s is too small for activation, there is no remaining msgstr "Le container %s du fichier LUKS est trop petit pour l'activation, il ne reste pas d'espace pour les données." #: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:278 -#: src/utils_reencrypt.c:371 src/utils_reencrypt.c:1910 +#: src/utils_reencrypt.c:371 src/utils_reencrypt.c:1936 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "Impossible de déterminer la taille de la clé de volume pour LUKS sans emplacement de clé, veuillez utiliser l'option --key-size." @@ -2735,7 +2735,7 @@ msgstr "L'option --volume-key-keyring ne peut pas être combinée avec --hash ou msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "Les deux options --volume-key-file doivent être appariées avec les options --key-size respectives." -#: src/cryptsetup.c:3373 src/veritysetup.c:673 src/integritysetup.c:793 +#: src/cryptsetup.c:3373 src/veritysetup.c:673 src/integritysetup.c:800 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "Les options --cancel-deferred et --deferred ne peuvent pas être utilisées en même temps." @@ -2803,21 +2803,21 @@ msgstr "L'action requiert un jeton spécifique. Utilisez le paramètre --key-slo msgid " [--type ] []" msgstr " [--type ] []" -#: src/cryptsetup.c:3482 src/veritysetup.c:487 src/integritysetup.c:560 +#: src/cryptsetup.c:3482 src/veritysetup.c:487 src/integritysetup.c:563 msgid "open device as " msgstr "ouvrir le périphérique comme " #: src/cryptsetup.c:3483 src/cryptsetup.c:3484 src/cryptsetup.c:3485 -#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:561 -#: src/integritysetup.c:562 src/integritysetup.c:564 +#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:564 +#: src/integritysetup.c:565 src/integritysetup.c:567 msgid "" msgstr "" -#: src/cryptsetup.c:3483 src/veritysetup.c:488 src/integritysetup.c:561 +#: src/cryptsetup.c:3483 src/veritysetup.c:488 src/integritysetup.c:564 msgid "close device (remove mapping)" msgstr "fermeture du périphérique (supprime le « mapping »)" -#: src/cryptsetup.c:3484 src/integritysetup.c:564 +#: src/cryptsetup.c:3484 src/integritysetup.c:567 msgid "resize active device" msgstr "redimensionner le périphérique actif" @@ -2945,7 +2945,7 @@ msgstr " " msgid "Manipulate LUKS2 tokens" msgstr "Manipuler les jetons LUKS2" -#: src/cryptsetup.c:3527 src/veritysetup.c:505 src/integritysetup.c:579 +#: src/cryptsetup.c:3527 src/veritysetup.c:505 src/integritysetup.c:582 msgid "" "\n" " is one of:\n" @@ -3046,7 +3046,7 @@ msgstr "" msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: La taille de clé par défaut en mode XTS (deux clés internes) sera doublée.\n" -#: src/cryptsetup.c:3594 src/veritysetup.c:647 src/integritysetup.c:739 +#: src/cryptsetup.c:3594 src/veritysetup.c:647 src/integritysetup.c:742 #, c-format msgid "%s: requires %s as arguments" msgstr "%s : exige %s comme arguments." @@ -3097,31 +3097,31 @@ msgstr "L'option --priority peut uniquement être ignore/normal/prefer." msgid "Invalid maximal tries specification." msgstr "La spécification du nombre maximal de tentatives est invalide." -#: src/cryptsetup.c:3793 src/veritysetup.c:568 src/integritysetup.c:659 +#: src/cryptsetup.c:3793 src/veritysetup.c:568 src/integritysetup.c:662 msgid "Show this help message" msgstr "Afficher ce message d'aide" -#: src/cryptsetup.c:3794 src/veritysetup.c:569 src/integritysetup.c:660 +#: src/cryptsetup.c:3794 src/veritysetup.c:569 src/integritysetup.c:663 msgid "Display brief usage" msgstr "Afficher, en résumé, la syntaxe d'invocation" -#: src/cryptsetup.c:3795 src/veritysetup.c:570 src/integritysetup.c:661 +#: src/cryptsetup.c:3795 src/veritysetup.c:570 src/integritysetup.c:664 msgid "Print package version" msgstr "Afficher la version du paquet" -#: src/cryptsetup.c:3806 src/veritysetup.c:581 src/integritysetup.c:672 +#: src/cryptsetup.c:3806 src/veritysetup.c:581 src/integritysetup.c:675 msgid "Help options:" msgstr "Options d'aide :" -#: src/cryptsetup.c:3829 src/veritysetup.c:602 src/integritysetup.c:692 +#: src/cryptsetup.c:3829 src/veritysetup.c:602 src/integritysetup.c:695 msgid "[OPTION...] " msgstr "[OPTION...] " -#: src/cryptsetup.c:3838 src/veritysetup.c:611 src/integritysetup.c:703 +#: src/cryptsetup.c:3838 src/veritysetup.c:611 src/integritysetup.c:706 msgid "Argument missing." msgstr "Il manque l'argument ." -#: src/cryptsetup.c:3917 src/veritysetup.c:642 src/integritysetup.c:734 +#: src/cryptsetup.c:3917 src/veritysetup.c:642 src/integritysetup.c:737 msgid "Unknown action." msgstr "Action inconnue." @@ -3226,7 +3226,7 @@ msgstr "La commande exige ou l'option --root-hash-file comme ar msgid " " msgstr " " -#: src/veritysetup.c:485 src/integritysetup.c:559 +#: src/veritysetup.c:485 src/integritysetup.c:562 msgid "format device" msgstr "formater le périphérique" @@ -3242,7 +3242,7 @@ msgstr "vérifier le périphérique" msgid " []" msgstr " []" -#: src/veritysetup.c:489 src/integritysetup.c:562 +#: src/veritysetup.c:489 src/integritysetup.c:565 msgid "show active device status" msgstr "afficher le statut du périphérique actif" @@ -3250,7 +3250,7 @@ msgstr "afficher le statut du périphérique actif" msgid "" msgstr "" -#: src/veritysetup.c:490 src/integritysetup.c:563 +#: src/veritysetup.c:490 src/integritysetup.c:566 msgid "show on-disk information" msgstr "afficher les informations sur le disque" @@ -3314,20 +3314,20 @@ msgstr " (étiquettes HW en ligne)" msgid "Setting recalculate flag is not supported, you may consider using --wipe instead." msgstr "Définir le fanion pour le recalcul n'est pas supporté, envisagez plutôt d'utiliser --wipe." -#: src/integritysetup.c:382 src/integritysetup.c:546 +#: src/integritysetup.c:382 src/integritysetup.c:549 #, c-format msgid "Device %s is not a valid INTEGRITY device." msgstr "Le périphérique %s n'est pas un périphérique INTEGRITY valable." -#: src/integritysetup.c:559 src/integritysetup.c:563 +#: src/integritysetup.c:562 src/integritysetup.c:566 msgid "" msgstr "" -#: src/integritysetup.c:560 +#: src/integritysetup.c:563 msgid " " msgstr " " -#: src/integritysetup.c:583 +#: src/integritysetup.c:586 #, c-format msgid "" "\n" @@ -3338,7 +3338,7 @@ msgstr "" " est le périphérique à créer sous %s\n" " est le périphérique contenant les données avec les balises d'intégrité\n" -#: src/integritysetup.c:588 +#: src/integritysetup.c:591 #, c-format msgid "" "\n" @@ -3351,51 +3351,55 @@ msgstr "" "\tAlgorithme de somme de contrôle : %s\n" "\tTaille maximale du fichier de clé : %dko\n" -#: src/integritysetup.c:645 +#: src/integritysetup.c:648 #, c-format msgid "Invalid --%s size. Maximum is %u bytes." msgstr "La taille --%s n'est pas valide. Le maximum est %u octets." -#: src/integritysetup.c:748 +#: src/integritysetup.c:751 msgid "Both key file and key size options must be specified." msgstr "Les options du fichier de clé et de la taille de la clé doivent être spécifiées toutes les deux." -#: src/integritysetup.c:752 +#: src/integritysetup.c:755 msgid "Both journal integrity key file and key size options must be specified." msgstr "Les options du fichier de clé de l'intégrité du journal et de la taille de la clé doivent être spécifiées toutes les deux." -#: src/integritysetup.c:755 +#: src/integritysetup.c:758 msgid "Journal integrity algorithm must be specified if journal integrity key is used." msgstr "L'algorithme d'intégrité du journal doit être spécifié si la clé d'intégrité du journal est utilisée." -#: src/integritysetup.c:759 +#: src/integritysetup.c:762 msgid "Both journal encryption key file and key size options must be specified." msgstr "Les options du fichier de clé de chiffrement du journal et de la taille de la clé doivent être spécifiées toutes les deux." -#: src/integritysetup.c:762 +#: src/integritysetup.c:765 msgid "Journal encryption algorithm must be specified if journal encryption key is used." msgstr "L'algorithme de chiffrement du journal doit être spécifié si la clé de chiffrement du journal est utilisée." -#: src/integritysetup.c:766 +#: src/integritysetup.c:769 msgid "Recovery and bitmap mode options are mutually exclusive." msgstr "Les options de mode récupération et champ de bits sont mutuellement exclusives." -#: src/integritysetup.c:773 +#: src/integritysetup.c:776 msgid "Journal options cannot be used in bitmap mode." msgstr "Les options de journal ne peuvent pas être utilisées en mode champ de bits." -#: src/integritysetup.c:778 +#: src/integritysetup.c:781 msgid "Bitmap options can be used only in bitmap mode." msgstr "Les options de champ de bits peuvent uniquement être utilisées en mode champ de bits." -#: src/integritysetup.c:784 +#: src/integritysetup.c:787 msgid "Inline mode cannot be combined with journal or bitmap options." msgstr "Le mode en ligne ne peut pas être combiné avec les options de journal ou de carte de bits." -#: src/integritysetup.c:788 +#: src/integritysetup.c:791 msgid "Inline mode cannot be combined with separate data device." msgstr "Le mode en ligne ne peut pas être combiné avec un périphérique qui a des données séparées." +#: src/integritysetup.c:795 +msgid "Keyed discards can be enabled only with keyed algorithms like HMAC." +msgstr "L'élimination par clé peut uniquement être activée avec des algorithmes à clés comme HMAC." + #: src/utils_tools.c:105 msgid "" "\n" @@ -3746,7 +3750,7 @@ msgstr "Le périphérique n'est pas en cours de déchiffrement LUKS2. Option --d msgid "Device is in reencryption using datashift resilience. Requested --resilience option cannot be applied." msgstr "Le périphérique est en cours de rechiffrement en utilisant la résilience datashift. L'option --resilience demandée ne peut pas être appliquée." -#: src/utils_reencrypt.c:283 src/utils_reencrypt.c:1927 +#: src/utils_reencrypt.c:283 src/utils_reencrypt.c:1953 msgid "Cannot determine volume key size for LUKS without keyslots, please use --new-key-size option." msgstr "Impossible de déterminer la taille de la clé de volume pour LUKS sans emplacement de clé, veuillez utiliser l'option --new-key-size." @@ -3780,7 +3784,7 @@ msgstr "" "La taille de secteur demandée avec --sector-size % est incompatible avec le superbloc %s\n" "(taille de bloc : % octets) détecté sur le périphérique %s." -#: src/utils_reencrypt.c:680 src/utils_reencrypt.c:2207 +#: src/utils_reencrypt.c:680 src/utils_reencrypt.c:2233 msgid "Encryption without detached header (--header) is not possible without data device size reduction (--reduce-device-size)." msgstr "Le chiffrement sans en-tête détaché (--header) n'est pas possible sans une réduction de la taille du périphérique de données (--reduce-device-size)" @@ -3848,42 +3852,43 @@ msgstr "L'initialisation du rechiffrement a échoué. La sauvegarde de l'en-têt msgid "LUKS2 decryption is supported with detached header device only (with data offset set to 0)." msgstr "Le déchiffrement LUKS2 est uniquement supporté avec un périphérique à l'en-tête détaché (avec l'offset de données défini à 0)." -#: src/utils_reencrypt.c:1490 -msgid "No token could unlock the device." -msgstr "Aucun jeton n'a pu déverrouiller ce périphérique." - -#: src/utils_reencrypt.c:1522 src/utils_reencrypt.c:1531 +#: src/utils_reencrypt.c:1506 src/utils_reencrypt.c:1531 +#: src/utils_reencrypt.c:1548 src/utils_reencrypt.c:1557 msgid "Not enough free keyslots for reencryption." msgstr "Pas assez d'emplacements de clés libres pour le rechiffrement." -#: src/utils_reencrypt.c:1562 +#: src/utils_reencrypt.c:1513 +msgid "No token could unlock the device." +msgstr "Aucun jeton n'a pu déverrouiller ce périphérique." + +#: src/utils_reencrypt.c:1588 msgid "Key file or keyring key description can be used only with --key-slot or with exactly one key slot active." msgstr "Le fichier de clé ou le porte clé peut uniquement être utilisé avec --key-slot ou avec exactement un seul emplacement de clé actif." -#: src/utils_reencrypt.c:1569 src/utils_reencrypt.c:1582 +#: src/utils_reencrypt.c:1595 src/utils_reencrypt.c:1608 #: src/utils_reencrypt_luks1.c:1092 src/utils_reencrypt_luks1.c:1103 #, c-format msgid "Enter passphrase for key slot %d: " msgstr "Entrez la phrase secrète pour l'emplacement de clé %d : " -#: src/utils_reencrypt.c:1879 +#: src/utils_reencrypt.c:1905 #, c-format msgid "Switching data encryption cipher to %s.\n" msgstr "Basculement de l'algorithme de chiffrement de données vers %s.\n" -#: src/utils_reencrypt.c:1980 src/utils_reencrypt.c:2001 +#: src/utils_reencrypt.c:2006 src/utils_reencrypt.c:2027 msgid "Use --force-no-keyslots to reencrypt device with active keyslots by passing volume keys directly." msgstr "Utilise --force-no-keyslots pour rechiffrer le périphérique avec les emplacements de clé actifs en passant directement les clés du volume." -#: src/utils_reencrypt.c:1996 +#: src/utils_reencrypt.c:2022 msgid "Option --new-volume-key-file must be paired with --new-key-size" msgstr "L'option --new-volume-key-file doit être appariée avec --new-key-size" -#: src/utils_reencrypt.c:2038 +#: src/utils_reencrypt.c:2064 msgid "No data segment parameters changed. Reencryption aborted." msgstr "Aucun paramètre de segment de donnée changé. Rechiffrement abandonné." -#: src/utils_reencrypt.c:2075 +#: src/utils_reencrypt.c:2101 msgid "" "Encryption sector size increase on offline device is not supported.\n" "Activate the device first or use --force-offline-reencrypt option (dangerous!)." @@ -3891,7 +3896,7 @@ msgstr "" "L'augmentation de la taille du secteur de chiffrement n'est pas supportée sur un périphérique hors-ligne.\n" "Activez d'abord le périphérique ou utilisez l'option --force-offline-reencrypt (dangereux !)." -#: src/utils_reencrypt.c:2117 src/utils_reencrypt_luks1.c:688 +#: src/utils_reencrypt.c:2143 src/utils_reencrypt_luks1.c:688 #: src/utils_reencrypt_luks1.c:759 msgid "" "\n" @@ -3900,58 +3905,58 @@ msgstr "" "\n" "Rechiffrement interrompu." -#: src/utils_reencrypt.c:2122 +#: src/utils_reencrypt.c:2148 msgid "Resuming LUKS reencryption in forced offline mode.\n" msgstr "Redémarrage du rechiffrement LUKS en mode hors-ligne forcé.\n" -#: src/utils_reencrypt.c:2145 +#: src/utils_reencrypt.c:2171 #, c-format msgid "Device %s contains broken LUKS metadata. Aborting operation." msgstr "Le périphérique %s contient des métadonnées LUKS endommagées. L'opération est abandonnée." -#: src/utils_reencrypt.c:2161 src/utils_reencrypt.c:2183 +#: src/utils_reencrypt.c:2187 src/utils_reencrypt.c:2209 #, c-format msgid "Device %s is already LUKS device. Aborting operation." msgstr "Le périphérique %s est déjà un périphérique LUKS. L'opération est abandonnée." -#: src/utils_reencrypt.c:2189 +#: src/utils_reencrypt.c:2215 #, c-format msgid "Device %s is already in LUKS reencryption. Aborting operation." msgstr "Le périphérique %s est déjà en cours de rechiffrement LUKS. L'opération est abandonnée." -#: src/utils_reencrypt.c:2272 +#: src/utils_reencrypt.c:2298 msgid "LUKS2 decryption requires --header option." msgstr "Le déchiffrement LUKS2 requiert l'option --header." -#: src/utils_reencrypt.c:2320 +#: src/utils_reencrypt.c:2346 msgid "Command requires device as argument." msgstr "La commande exige un périphérique comme argument." -#: src/utils_reencrypt.c:2333 +#: src/utils_reencrypt.c:2359 #, c-format msgid "Conflicting versions. Device %s is LUKS1." msgstr "Versions conflictuelles. Le périphérique %s est LUKS1." -#: src/utils_reencrypt.c:2339 +#: src/utils_reencrypt.c:2365 #, c-format msgid "Conflicting versions. Device %s is in LUKS1 reencryption." msgstr "Versions conflictuelles. Le périphérique %s est en cours de rechiffrement LUKS1." -#: src/utils_reencrypt.c:2345 +#: src/utils_reencrypt.c:2371 #, c-format msgid "Conflicting versions. Device %s is LUKS2." msgstr "Versions conflictuelle. Le périphérique %s est LUKS2" -#: src/utils_reencrypt.c:2351 +#: src/utils_reencrypt.c:2377 #, c-format msgid "Conflicting versions. Device %s is in LUKS2 reencryption." msgstr "Versions conflictuelles. Le périphérique %s est en cours de rechiffrement LUKS2." -#: src/utils_reencrypt.c:2357 +#: src/utils_reencrypt.c:2383 msgid "LUKS2 reencryption already initialized. Aborting operation." msgstr "Rechiffrement LUKS2 déjà initialisé. Abandon de l'opération." -#: src/utils_reencrypt.c:2364 +#: src/utils_reencrypt.c:2390 msgid "Device reencryption not in progress." msgstr "Le rechiffrement du périphérique n'est pas en cours." From cdec34bc3cad4db464aeb8e3152deda788d25633 Mon Sep 17 00:00:00 2001 From: Hiroshi Takekawa Date: Fri, 4 Sep 2026 18:57:03 +0200 Subject: [PATCH 208/244] po: update ja.po (from translationproject.org) --- po/ja.po | 657 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 331 insertions(+), 326 deletions(-) diff --git a/po/ja.po b/po/ja.po index 6f18abbd7..45b5444af 100644 --- a/po/ja.po +++ b/po/ja.po @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.7-rc2\n" +"Project-Id-Version: cryptsetup 2.8.8-rc0\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2026-07-09 10:46+0200\n" -"PO-Revision-Date: 2026-07-11 23:24+0900\n" +"POT-Creation-Date: 2026-09-02 13:18+0200\n" +"PO-Revision-Date: 2026-09-03 08:32+0900\n" "Last-Translator: Hiroshi Takekawa \n" "Language-Team: Japanese \n" "Language: ja\n" @@ -17,78 +17,78 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -#: lib/libdevmapper.c:419 +#: lib/libdevmapper.c:422 msgid "Cannot initialize device-mapper, running as non-root user." msgstr "device-mapper を初期化できません、non-root で実行します。" -#: lib/libdevmapper.c:422 +#: lib/libdevmapper.c:425 msgid "Cannot initialize device-mapper. Is dm_mod kernel module loaded?" msgstr "device-mapper を初期化できません。dm_mod モジュールはロードされてますか?" -#: lib/libdevmapper.c:1125 +#: lib/libdevmapper.c:1129 msgid "Requested deferred flag is not supported." msgstr "指定された延期フラグはサポートされていません。" -#: lib/libdevmapper.c:1194 +#: lib/libdevmapper.c:1198 #, c-format msgid "DM-UUID for device %s was truncated." msgstr "デバイス %s の DM-UUID は短縮されています。" -#: lib/libdevmapper.c:1598 +#: lib/libdevmapper.c:1602 msgid "Unknown dm target type." msgstr "不明な dm target タイプです。" -#: lib/libdevmapper.c:1725 lib/libdevmapper.c:1731 lib/libdevmapper.c:1850 -#: lib/libdevmapper.c:1853 +#: lib/libdevmapper.c:1729 lib/libdevmapper.c:1735 lib/libdevmapper.c:1854 +#: lib/libdevmapper.c:1857 msgid "Requested dm-crypt performance options are not supported." msgstr "指定された dm-crypt パフォーマンスオプションはサポートされていません。" -#: lib/libdevmapper.c:1740 lib/libdevmapper.c:1746 lib/libdevmapper.c:1758 +#: lib/libdevmapper.c:1744 lib/libdevmapper.c:1750 lib/libdevmapper.c:1762 msgid "Requested dm-verity data corruption handling options are not supported." msgstr "指定された dm-verity のデータ破壊時の対応についてのオプションはサポートされていません。" -#: lib/libdevmapper.c:1752 +#: lib/libdevmapper.c:1756 msgid "Requested dm-verity tasklets option is not supported." msgstr "指定された dm-verity のタスクレットオプションはサポートされていません。" -#: lib/libdevmapper.c:1764 +#: lib/libdevmapper.c:1768 msgid "Requested dm-verity FEC options are not supported." msgstr "指定された dm-verity の誤り訂正(FEC)オプションはサポートされていません。" -#: lib/libdevmapper.c:1770 +#: lib/libdevmapper.c:1774 msgid "Requested data integrity options are not supported." msgstr "指定されたデータの整合性のオプションはサポートされていません。" -#: lib/libdevmapper.c:1774 +#: lib/libdevmapper.c:1778 msgid "Requested sector_size option is not supported." msgstr "指定された sector_size オプションはサポートされていません。" -#: lib/libdevmapper.c:1779 +#: lib/libdevmapper.c:1783 msgid "The device size is not multiple of the requested sector size." msgstr "デバイスサイズが要求されたセクタサイズのアライメントに合いません。" -#: lib/libdevmapper.c:1783 +#: lib/libdevmapper.c:1787 msgid "Requested integrity_key_size option is not supported." msgstr "指定された integrity_key_size オプションはサポートされていません。" -#: lib/libdevmapper.c:1790 lib/libdevmapper.c:1796 +#: lib/libdevmapper.c:1794 lib/libdevmapper.c:1800 msgid "Requested automatic recalculation of integrity tags is not supported." msgstr "指定された改ざん確認タグの自動再計算はサポートされていません。" -#: lib/libdevmapper.c:1802 lib/libdevmapper.c:1856 lib/libdevmapper.c:1859 -#: lib/luks2/luks2_json_metadata.c:2799 +#: lib/libdevmapper.c:1806 lib/libdevmapper.c:1860 lib/libdevmapper.c:1863 +#: lib/luks2/luks2_json_metadata.c:2791 msgid "Discard/TRIM is not supported." msgstr "Discard/TRIM はサポートしていません。" -#: lib/libdevmapper.c:1808 +#: lib/libdevmapper.c:1812 msgid "Requested dm-integrity bitmap mode is not supported." msgstr "要求された dm-integrity のビットマップモードはサポートされていません。" -#: lib/libdevmapper.c:1814 +#: lib/libdevmapper.c:1818 msgid "Requested dm-integrity inline mode is not supported." msgstr "要求された dm-integrity のインラインモードはサポートされていません。" -#: lib/libdevmapper.c:2870 +#: lib/libdevmapper.c:2877 #, c-format msgid "Failed to query dm-%s segment." msgstr "dm-%s のクエリーに失敗しました。" @@ -139,7 +139,7 @@ msgstr "暗号向けRNG(乱数生成器)バックエンドの初期化ができ msgid "Cannot initialize crypto backend." msgstr "暗号バックエンドの初期化ができません。" -#: lib/setup.c:308 lib/setup.c:2769 lib/verity/verity.c:109 +#: lib/setup.c:308 lib/setup.c:2779 lib/verity/verity.c:109 #, c-format msgid "Hash algorithm %s not supported." msgstr "ハッシュアルゴリズム %s がサポートされていません。" @@ -153,7 +153,7 @@ msgstr "鍵の処理でエラー (ハッシュ %s を使用)。" msgid "Cannot determine device type. Incompatible activation of device?" msgstr "デバイスタイプがわかりません。互換性のないデバイスのアクティベーションをしようとしていませんか?" -#: lib/setup.c:398 lib/setup.c:4177 +#: lib/setup.c:398 lib/setup.c:4193 msgid "This operation is supported only for LUKS device." msgstr "この操作は LUKS デバイスでしかサポートされていません。" @@ -175,7 +175,7 @@ msgstr "キースロット %d は不正です。0 から %d の間を選んで msgid "Key slot %d is full, please select another one." msgstr "キースロット %d は使われています。別の番号を選んでください。" -#: lib/setup.c:534 lib/setup.c:3878 +#: lib/setup.c:534 lib/setup.c:3888 msgid "Device size is not aligned to device logical block size." msgstr "デバイスサイズが論理ブロックサイズのアライメントに合いません。" @@ -184,7 +184,7 @@ msgstr "デバイスサイズが論理ブロックサイズのアライメント msgid "Header detected but device %s is too small." msgstr "ヘッダが検出されましたがデバイス %s が小さすぎます。" -#: lib/setup.c:672 lib/setup.c:3763 lib/setup.c:5272 +#: lib/setup.c:672 lib/setup.c:3773 lib/setup.c:5288 #: lib/luks2/luks2_reencrypt.c:3949 lib/luks2/luks2_reencrypt.c:4438 msgid "This operation is not supported for this device type." msgstr "この操作はこのデバイスタイプではサポートされていません。" @@ -197,553 +197,553 @@ msgstr "オフラインでの再暗号化中です。中止します。" msgid "Failed to rollback LUKS2 metadata in memory." msgstr "メモリ上の LUKS2 メタデータのロールバックに失敗しました。" -#: lib/setup.c:896 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 +#: lib/setup.c:896 lib/luks1/keymanage.c:241 lib/luks1/keymanage.c:519 #: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 #: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 #: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2954 -#: src/cryptsetup.c:3022 src/utils_reencrypt.c:2284 +#: src/cryptsetup.c:3022 src/utils_reencrypt.c:2310 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." msgstr "デバイス %s は有効な LUKS デバイスではありません。" -#: lib/setup.c:899 lib/luks1/keymanage.c:517 +#: lib/setup.c:899 lib/luks1/keymanage.c:522 #, c-format msgid "Unsupported LUKS version %d." msgstr "LUKS バージョン %d はサポートされていません。" -#: lib/setup.c:1273 +#: lib/setup.c:1279 #, c-format msgid "No known cipher specification pattern detected for active device %s." msgstr "アクティブなデバイス %s に既知の暗号スペックパターンが検出されませんでした。" -#: lib/setup.c:1518 lib/setup.c:3510 lib/setup.c:3602 lib/setup.c:3614 -#: lib/setup.c:3786 lib/setup.c:5850 +#: lib/setup.c:1528 lib/setup.c:3520 lib/setup.c:3612 lib/setup.c:3624 +#: lib/setup.c:3796 lib/setup.c:5866 #, c-format msgid "Device %s is not active." msgstr "デバイス %s はアクティブではありません。" -#: lib/setup.c:1535 +#: lib/setup.c:1545 #, c-format msgid "Underlying device for crypt device %s disappeared." msgstr "暗号化されたデバイス %s の元になるデバイスが消滅しました。" -#: lib/setup.c:1617 +#: lib/setup.c:1627 msgid "Invalid plain crypt parameters." msgstr "不正な plain crypt のパラメータ。" -#: lib/setup.c:1622 lib/setup.c:2672 +#: lib/setup.c:1632 lib/setup.c:2682 msgid "Invalid key size." msgstr "不正なキーサイズ。" -#: lib/setup.c:1627 lib/setup.c:2677 lib/setup.c:2882 +#: lib/setup.c:1637 lib/setup.c:2687 lib/setup.c:2892 msgid "UUID is not supported for this crypt type." msgstr "UUID はこの暗号タイプではサポートされていません。" -#: lib/setup.c:1632 lib/setup.c:2682 +#: lib/setup.c:1642 lib/setup.c:2692 msgid "Detached metadata device is not supported for this crypt type." msgstr "分離したメタデータデバイスはこの暗号タイプではサポートされていません。" -#: lib/setup.c:1642 lib/setup.c:1890 lib/luks2/luks2_reencrypt.c:3035 +#: lib/setup.c:1652 lib/setup.c:1900 lib/luks2/luks2_reencrypt.c:3035 #: src/cryptsetup.c:1492 src/cryptsetup.c:3761 msgid "Unsupported encryption sector size." msgstr "サポートされていない暗号化セクタサイズです。" -#: lib/setup.c:1650 lib/setup.c:1919 lib/setup.c:3872 +#: lib/setup.c:1660 lib/setup.c:1929 lib/setup.c:3882 msgid "Device size is not aligned to requested sector size." msgstr "デバイスサイズが要求されたセクタサイズのアライメントに合いません。" -#: lib/setup.c:1702 lib/setup.c:1954 lib/setup.c:2331 +#: lib/setup.c:1712 lib/setup.c:1964 lib/setup.c:2341 msgid "Can't format LUKS without device." msgstr "デバイスなしには LUKS 形式にフォーマットできません。" -#: lib/setup.c:1707 lib/setup.c:1959 +#: lib/setup.c:1717 lib/setup.c:1969 #, c-format msgid "Zoned device %s cannot be used for LUKS header." msgstr "Zonedy デバイス %s は LUKS ヘッダに使えません。" -#: lib/setup.c:1714 lib/setup.c:1966 lib/setup.c:2337 +#: lib/setup.c:1724 lib/setup.c:1976 lib/setup.c:2347 msgid "Requested data alignment is not compatible with data offset." msgstr "要求されたデータアライメントとデータオフセットが合いません。" -#: lib/setup.c:1754 lib/setup.c:1984 +#: lib/setup.c:1764 lib/setup.c:1994 msgid "WARNING: DAX device can corrupt data as it does not guarantee atomic sector updates.\n" msgstr "警告: DAX デバイスはアトミックなセクタ更新を保証しないためデータが壊れることがあります。\n" -#: lib/setup.c:1792 lib/setup.c:2091 lib/setup.c:2112 lib/setup.c:2520 -#: lib/setup.c:2567 lib/setup.c:2899 +#: lib/setup.c:1802 lib/setup.c:2101 lib/setup.c:2122 lib/setup.c:2530 +#: lib/setup.c:2577 lib/setup.c:2909 #, c-format msgid "Cannot wipe header on device %s." msgstr "デバイス %s のヘッダを消し去れません。" -#: lib/setup.c:1805 lib/setup.c:2164 +#: lib/setup.c:1815 lib/setup.c:2174 #, c-format msgid "Device %s is too small for activation, there is no remaining space for data.\n" msgstr "デバイス %s はアクティベートするのに小さすぎます。データ用のスペースがありません。\n" -#: lib/setup.c:1846 +#: lib/setup.c:1856 msgid "Volume key is too small for encryption with integrity extensions." msgstr "ボリュームキーは整合性拡張のため暗号には鍵長が小さすぎます。" -#: lib/setup.c:1850 +#: lib/setup.c:1860 msgid "Integrity key size is too small." msgstr "整合性キーのサイズが小さすぎます。" -#: lib/setup.c:1859 +#: lib/setup.c:1869 #, c-format msgid "Cipher %s-%s (key size %zd bits) is not available." msgstr "暗号 %s-%s (キーサイズ %zd ビット) は利用できません。" -#: lib/setup.c:1900 +#: lib/setup.c:1910 msgid "WARNING: The device activation will fail, dm-crypt is missing support for requested encryption sector size.\n" msgstr "警告: デバイスアクティベーションが失敗しました。dm-crypt が要求された暗号セクタサイズをサポートしていません。\n" -#: lib/setup.c:2094 lib/setup.c:2461 lib/setup.c:2523 lib/utils_device.c:906 +#: lib/setup.c:2104 lib/setup.c:2471 lib/setup.c:2533 lib/utils_device.c:906 #: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3074 #: lib/luks2/luks2_reencrypt.c:4498 #, c-format msgid "Device %s is too small." msgstr "デバイス %s のサイズが小さすぎます。" -#: lib/setup.c:2105 lib/setup.c:2144 lib/setup.c:2560 lib/setup.c:2618 +#: lib/setup.c:2115 lib/setup.c:2154 lib/setup.c:2570 lib/setup.c:2628 #, c-format msgid "Cannot format device %s in use." msgstr "デバイス %s は使用中のためフォーマットできません。" -#: lib/setup.c:2108 lib/setup.c:2147 lib/setup.c:2563 lib/setup.c:2621 +#: lib/setup.c:2118 lib/setup.c:2157 lib/setup.c:2573 lib/setup.c:2631 #, c-format msgid "Cannot format device %s, permission denied." msgstr "デバイス %s は権限がないためフォーマットできません。" -#: lib/setup.c:2132 lib/setup.c:2590 lib/setup.c:2972 +#: lib/setup.c:2142 lib/setup.c:2600 lib/setup.c:2982 #, c-format msgid "Cannot format integrity for device %s." msgstr "デバイス %s を整合性確認ができるようフォーマットできません。" -#: lib/setup.c:2151 lib/setup.c:2629 +#: lib/setup.c:2161 lib/setup.c:2639 #, c-format msgid "Cannot format device %s." msgstr "デバイス %s をフォーマットできません。" -#: lib/setup.c:2194 +#: lib/setup.c:2204 msgid "Cannot get OPAL alignment parameters." msgstr "OPAL アライメントパラメータを取得できません。" -#: lib/setup.c:2206 +#: lib/setup.c:2216 msgid "Bogus OPAL logical block size." msgstr "OPAL 論理ブロックサイズがおかしいです。" -#: lib/setup.c:2211 lib/luks2/hw_opal/hw_opal.c:305 +#: lib/setup.c:2221 lib/luks2/hw_opal/hw_opal.c:305 msgid "Bogus OPAL logical block size differs from device block size." msgstr "OPAL 論理ブロックサイズがデバイスブロックサイズと違っておかしいです。" -#: lib/setup.c:2217 +#: lib/setup.c:2227 msgid "Requested data offset is not compatible with OPAL block size." msgstr "要求されたデータオフセットが OPAL ブロックサイズと互換性がありません。" -#: lib/setup.c:2224 +#: lib/setup.c:2234 msgid "Requested data alignment is not compatible with OPAL alignment." msgstr "要求されたデータアライメントが OPAL アライメントと互換性がありません。" -#: lib/setup.c:2244 +#: lib/setup.c:2254 msgid "Data offset does not satisfy OPAL alignment requirements." msgstr "データオフセットが OPAL アライメント制約を満たしていません。" -#: lib/setup.c:2257 +#: lib/setup.c:2267 msgid "Requested data alignment does not satisfy locking range alignment requirements." msgstr "要求されたデータアライメントはロックレンジアライメントに対する要求を満たしません。" -#: lib/setup.c:2471 +#: lib/setup.c:2481 #, c-format msgid "Compensating device size by % sectors to align it with OPAL alignment granularity." msgstr "OPAL のアライメント粒度に合わせるためにデバイスサイズが % セクタ少なくなります。" -#: lib/setup.c:2531 lib/setup.c:4260 lib/setup.c:4466 lib/utils_wipe.c:356 -#: lib/luks2/luks2_json_metadata.c:2742 lib/luks2/luks2_json_metadata.c:3017 +#: lib/setup.c:2541 lib/setup.c:4276 lib/setup.c:4482 lib/utils_wipe.c:356 +#: lib/luks2/luks2_json_metadata.c:2734 lib/luks2/luks2_json_metadata.c:3009 #, c-format msgid "Failed to acquire OPAL lock on device %s." msgstr "デバイス %s の OPAL ロックを取得できませんでした。" -#: lib/setup.c:2541 +#: lib/setup.c:2551 msgid "Incorrect OPAL Admin key." msgstr "OPAL 管理者キーが正しくありません。" -#: lib/setup.c:2543 +#: lib/setup.c:2553 msgid "Cannot setup OPAL segment." msgstr "OPAL セグメントを設定できません。" -#: lib/setup.c:2625 +#: lib/setup.c:2635 #, c-format msgid "Cannot format device %s, OPAL device seems to be fully write-protected now." msgstr "デバイス %s をフォーマットできません。OPAL デバイスは完全に書き込み禁止になっているようです。" -#: lib/setup.c:2627 +#: lib/setup.c:2637 msgid "This is perhaps a bug in firmware. Run OPAL PSID reset and reconnect for recovery." msgstr "おそらくファームウェアのバグです。OPAL PSID リセットをして復旧のために再接続してください。" -#: lib/setup.c:2647 +#: lib/setup.c:2657 #, c-format msgid "Locking range %d reset on device %s failed." msgstr "ロックレンジ %d のリセットをデバイス %s に試みましたが失敗しました。" -#: lib/setup.c:2667 +#: lib/setup.c:2677 msgid "Can't format LOOPAES without device." msgstr "LOOPAES としてフォーマットするにはデバイスが必要です。" -#: lib/setup.c:2712 +#: lib/setup.c:2722 msgid "Can't format VERITY without device." msgstr "VERITY としてフォーマットするにはデバイスが必要です。" -#: lib/setup.c:2723 lib/verity/verity.c:88 +#: lib/setup.c:2733 lib/verity/verity.c:88 #, c-format msgid "Unsupported VERITY hash type %d." msgstr "VERITY ハッシュタイプ %d はサポートしていません。" -#: lib/setup.c:2729 lib/verity/verity.c:96 +#: lib/setup.c:2739 lib/verity/verity.c:96 msgid "Unsupported VERITY block size." msgstr "サポートしていない VERITY ブロックサイズです。" -#: lib/setup.c:2734 lib/verity/verity.c:61 +#: lib/setup.c:2744 lib/verity/verity.c:61 msgid "Unsupported VERITY hash offset." msgstr "サポートしていない VERITY ハッシュオフセットです。" -#: lib/setup.c:2739 +#: lib/setup.c:2749 msgid "Unsupported VERITY FEC offset." msgstr "サポートしていない VERITY FEC オフセットです。" -#: lib/setup.c:2763 +#: lib/setup.c:2773 msgid "Data area overlaps with hash area." msgstr "データ領域がハッシュ領域と重なっています。" -#: lib/setup.c:2788 +#: lib/setup.c:2798 msgid "Hash area overlaps with FEC area." msgstr "ハッシュ領域が FEC 領域と重なっています。" -#: lib/setup.c:2795 +#: lib/setup.c:2805 msgid "Data area overlaps with FEC area." msgstr "データ領域が FEC 領域と重なっています。" -#: lib/setup.c:2887 +#: lib/setup.c:2897 msgid "Integrity key size mismatch." msgstr "整合性キーのサイズが一致しません。" -#: lib/setup.c:2938 +#: lib/setup.c:2948 #, c-format msgid "WARNING: Requested tag size %d bytes differs from %s size output (%d bytes).\n" msgstr "警告: 指定されたタグのサイズ %d バイトが %s の出力サイズと異なります (%d バイト)。\n" -#: lib/setup.c:3051 lib/setup.c:3153 +#: lib/setup.c:3061 lib/setup.c:3163 #, c-format msgid "Unknown or unsupported device type %s requested." msgstr "不明もしくはサポートされていないデバイスタイプ %s が指定されました。" -#: lib/setup.c:3067 +#: lib/setup.c:3077 #, c-format msgid "Device %s does not provide inline integrity data fields." msgstr "デバイス %s はインライン整合性データフィールドを提供しません。" -#: lib/setup.c:3073 +#: lib/setup.c:3083 #, c-format msgid "Inline tag size % [bytes] is larger than % provided by device %s." msgstr "インラインタグサイズ % [bytes] が % (デバイス %s より取得)より大きいです。" -#: lib/setup.c:3088 +#: lib/setup.c:3098 #, c-format msgid "Sector must be the same as device hardware sector (%zu bytes)." msgstr "セクタはデバイスハードウェアセクタ (%zu bytes) と同じでなければなりません。" -#: lib/setup.c:3518 lib/setup.c:3607 lib/setup.c:3620 +#: lib/setup.c:3528 lib/setup.c:3617 lib/setup.c:3630 #, c-format msgid "Unsupported parameters on device %s." msgstr "デバイス %s のパラメータはサポートしていません。" -#: lib/setup.c:3524 lib/setup.c:3627 lib/luks2/luks2_reencrypt.c:2929 +#: lib/setup.c:3534 lib/setup.c:3637 lib/luks2/luks2_reencrypt.c:2929 #: lib/luks2/luks2_reencrypt.c:3198 lib/luks2/luks2_reencrypt.c:3595 #, c-format msgid "Mismatching parameters on device %s." msgstr "デバイス %s のパラメータがミスマッチしています。" -#: lib/setup.c:3650 +#: lib/setup.c:3660 msgid "Crypt devices mismatch." msgstr "Crypt デバイスが一致しません。" -#: lib/setup.c:3682 lib/setup.c:3687 lib/luks2/luks2_reencrypt.c:2413 +#: lib/setup.c:3692 lib/setup.c:3697 lib/luks2/luks2_reencrypt.c:2413 #: lib/luks2/luks2_reencrypt.c:2945 lib/luks2/luks2_reencrypt.c:4237 #, c-format msgid "Failed to reload device %s." msgstr "デバイス %s のリロードに失敗しました。" -#: lib/setup.c:3693 lib/setup.c:3699 lib/luks2/luks2_reencrypt.c:2383 +#: lib/setup.c:3703 lib/setup.c:3709 lib/luks2/luks2_reencrypt.c:2383 #: lib/luks2/luks2_reencrypt.c:2390 lib/luks2/luks2_reencrypt.c:2959 #, c-format msgid "Failed to suspend device %s." msgstr "デバイス %s のサスペンドに失敗しました。" -#: lib/setup.c:3705 lib/luks2/luks2_reencrypt.c:2397 +#: lib/setup.c:3715 lib/luks2/luks2_reencrypt.c:2397 #: lib/luks2/luks2_reencrypt.c:2980 lib/luks2/luks2_reencrypt.c:4150 #: lib/luks2/luks2_reencrypt.c:4241 #, c-format msgid "Failed to resume device %s." msgstr "デバイス %s のリジュームに失敗しました。" -#: lib/setup.c:3720 +#: lib/setup.c:3730 #, c-format msgid "Fatal error while reloading device %s (on top of device %s)." msgstr "デバイス %s のリロード中に致命的なエラー(デバイス %s の上で)。" -#: lib/setup.c:3723 lib/setup.c:3725 +#: lib/setup.c:3733 lib/setup.c:3735 #, c-format msgid "Failed to switch device %s to dm-error." msgstr "デバイス %s を dm-error にスイッチできません。" -#: lib/setup.c:3768 +#: lib/setup.c:3778 msgid "Can not resize LUKS2 device with static size." msgstr "静的サイズの LUKS2 デバイスはリサイズできません。" -#: lib/setup.c:3773 +#: lib/setup.c:3783 msgid "Resize of LUKS2 device with integrity protection is not supported." msgstr "整合性プロテクションつきのLUKS2デバイスのリサイズはサポートされていません。" -#: lib/setup.c:3819 +#: lib/setup.c:3829 msgid "Cannot resize loop device." msgstr "ループデバイスはリサイズできません。" -#: lib/setup.c:3863 +#: lib/setup.c:3873 msgid "WARNING: Maximum size already set or kernel doesn't support resize.\n" msgstr "警告: 最大サイズが既に設定済かカーネルがリサイズをサポートしていません。\n" -#: lib/setup.c:3929 +#: lib/setup.c:3939 msgid "Resize failed, the kernel doesn't support it." msgstr "リサイズに失敗しました。カーネルがサポートしていません。" -#: lib/setup.c:3961 +#: lib/setup.c:3971 msgid "Do you really want to change UUID of device?" msgstr "デバイスの UUID を本当に変更してもいいですか?" -#: lib/setup.c:4053 +#: lib/setup.c:4061 lib/setup.c:4069 msgid "Header backup file does not contain compatible LUKS header." msgstr "ヘッダのバックアップファイルの中味が LUKS ヘッダと互換性がありません。" -#: lib/setup.c:4160 +#: lib/setup.c:4176 #, c-format msgid "Volume %s is not active." msgstr "ボリューム %s はアクティブではありません。" -#: lib/setup.c:4215 +#: lib/setup.c:4231 #, c-format msgid "Volume %s is already suspended." msgstr "ボリューム %s は既に停止されています。" -#: lib/setup.c:4241 +#: lib/setup.c:4257 #, c-format msgid "Suspend is not supported for device %s." msgstr "デバイス %s の停止はサポートされていません。" -#: lib/setup.c:4243 lib/setup.c:4251 +#: lib/setup.c:4259 lib/setup.c:4267 #, c-format msgid "Error during suspending device %s." msgstr "デバイス %s 停止中にエラー。" -#: lib/setup.c:4266 +#: lib/setup.c:4282 #, c-format msgid "Device %s was suspended but hardware OPAL device cannot be locked." msgstr "デバイス %s は停止されましたが、ハードウェア OPAL デバイスはロックできません。" -#: lib/setup.c:4297 lib/setup.c:4491 +#: lib/setup.c:4313 lib/setup.c:4507 #, c-format msgid "Resume is not supported for device %s." msgstr "デバイス %s は再開をサポートしていません。" -#: lib/setup.c:4299 lib/setup.c:4481 lib/setup.c:4493 +#: lib/setup.c:4315 lib/setup.c:4497 lib/setup.c:4509 #, c-format msgid "Error during resuming device %s." msgstr "デバイス %s の再開中にエラー。" -#: lib/setup.c:4335 +#: lib/setup.c:4351 msgid "Failed to unlink volume key from user specified keyring." msgstr "ボリュームキーを指定されたキーリングからアンリンクできません。" -#: lib/setup.c:4457 lib/setup.c:5637 +#: lib/setup.c:4473 lib/setup.c:5653 msgid "Failed to link volume key in user defined keyring." msgstr "ボリュームキーを指定されたキーリングにリンクできません。" -#: lib/setup.c:4556 src/cryptsetup.c:2722 +#: lib/setup.c:4572 src/cryptsetup.c:2722 #, c-format msgid "Volume %s is not suspended." msgstr "ボリューム %s は停止されていません。" -#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1856 +#: lib/setup.c:4683 lib/setup.c:7326 lib/setup.c:7348 src/cryptsetup.c:1856 #: src/cryptsetup.c:2260 src/cryptsetup.c:2278 src/utils_reencrypt.c:306 -#: src/utils_reencrypt.c:1969 +#: src/utils_reencrypt.c:1995 msgid "Volume key does not match the volume." msgstr "ボリュームキーがボリュームに合いません。" -#: lib/setup.c:4821 +#: lib/setup.c:4837 msgid "Failed to swap new key slot." msgstr "新しいキースロットを交換できませんでした。" -#: lib/setup.c:4919 +#: lib/setup.c:4935 #, c-format msgid "Key slot %d is invalid." msgstr "キースロット %d は不正です。" -#: lib/setup.c:4925 src/cryptsetup.c:1977 src/cryptsetup.c:2437 +#: lib/setup.c:4941 src/cryptsetup.c:1977 src/cryptsetup.c:2437 #: src/cryptsetup.c:3122 src/cryptsetup.c:3182 #, c-format msgid "Keyslot %d is not active." msgstr "キースロット %d は非アクティブです。" -#: lib/setup.c:4944 +#: lib/setup.c:4960 msgid "Device header overlaps with data area." msgstr "デバイスヘッダがデータ領域に重なっています。" -#: lib/setup.c:5165 +#: lib/setup.c:5181 msgid "Reencryption in-progress. Cannot activate device." msgstr "既に再暗号化中です。デバイスをアクティベートできません。" -#: lib/setup.c:5167 lib/luks2/luks2_json_metadata.c:2913 +#: lib/setup.c:5183 lib/luks2/luks2_json_metadata.c:2905 #: lib/luks2/luks2_reencrypt.c:3726 msgid "Failed to get reencryption lock." msgstr "再暗号化ロックを取得できません。" -#: lib/setup.c:5189 +#: lib/setup.c:5205 msgid "LUKS2 reencryption recovery using volume key(s) failed." msgstr "ボリュームキーを使った LUKS2 の再暗号化のリカバリに失敗しました。" -#: lib/setup.c:5325 +#: lib/setup.c:5341 #, c-format msgid "Device %s already exists." msgstr "デバイス %s は既に存在します。" -#: lib/setup.c:5332 +#: lib/setup.c:5348 #, c-format msgid "Cannot use device %s, name is invalid or still in use." msgstr "デバイス %s を使えません。名前が不正か使用中です。" -#: lib/setup.c:5344 +#: lib/setup.c:5360 msgid "Reencryption volume keys do not match the volume." msgstr "再暗号化ボリュームキーがボリュームに合いません。" -#: lib/setup.c:5361 +#: lib/setup.c:5377 msgid "Incorrect volume key specified for plain device." msgstr "正しくないボリュームキーがプレーンデバイスに指定されました。" -#: lib/setup.c:5387 lib/setup.c:5448 +#: lib/setup.c:5403 lib/setup.c:5464 msgid "Device type is not properly initialized." msgstr "デバイスタイプが正しく初期化されていません。" -#: lib/setup.c:5486 +#: lib/setup.c:5502 msgid "Kernel keyring is not supported by the kernel." msgstr "カーネルがカーネルキーリングをサポートしていません。" -#: lib/setup.c:5490 +#: lib/setup.c:5506 msgid "Kernel keyring missing: required for passing signature to kernel." msgstr "署名をカーネルに渡すのに必要なカーネルキーリングをカーネルがサポートしていません。" -#: lib/setup.c:5545 +#: lib/setup.c:5561 #, c-format msgid "Cannot use keyring key %s." msgstr "キーリングキー %s が使えません。" -#: lib/setup.c:5758 +#: lib/setup.c:5774 msgid "Incorrect root hash specified for verity device." msgstr "正しくないルートハッシュが verity デバイスに指定されました。" -#: lib/setup.c:5799 lib/setup.c:5824 +#: lib/setup.c:5815 lib/setup.c:5840 msgid "OPAL does not support deferred deactivation." msgstr "OPAL は遅延デアクティベーションをサポートしていません。" -#: lib/setup.c:5814 lib/setup.c:5845 lib/luks2/luks2_json_metadata.c:2978 +#: lib/setup.c:5830 lib/setup.c:5861 lib/luks2/luks2_json_metadata.c:2970 #: src/utils_reencrypt.c:89 #, c-format msgid "Device %s is still in use." msgstr "デバイス %s は使用中です。" -#: lib/setup.c:5832 +#: lib/setup.c:5848 #, c-format msgid "Could not cancel deferred remove from device %s." msgstr "デバイス %s からの遅延削除をキャンセルできませんでした。" -#: lib/setup.c:5854 +#: lib/setup.c:5870 #, c-format msgid "Invalid device %s." msgstr "デバイス %s は不正です。" -#: lib/setup.c:6001 +#: lib/setup.c:6017 msgid "Volume key buffer too small." msgstr "ボリュームキーのバッファが小さすぎます。" -#: lib/setup.c:6012 +#: lib/setup.c:6028 msgid "Cannot retrieve volume key for LUKS2 device." msgstr "LUKS2 デバイス向けのボリュームキーが取得できません。" -#: lib/setup.c:6021 +#: lib/setup.c:6037 msgid "Cannot retrieve volume key for LUKS1 device." msgstr "LUKS1 デバイス向けのボリュームキーが取得できません。" -#: lib/setup.c:6035 +#: lib/setup.c:6051 msgid "Cannot retrieve volume key for plain device." msgstr "プレーンデバイス向けのボリュームキーが取得できません。" -#: lib/setup.c:6043 +#: lib/setup.c:6059 msgid "Cannot retrieve root hash for verity device." msgstr "verity デバイスのルートハッシュが読み出せません。" -#: lib/setup.c:6052 +#: lib/setup.c:6068 msgid "Cannot retrieve volume key for BITLK device." msgstr "BITLK デバイス向けのボリュームキーが取得できません。" -#: lib/setup.c:6057 +#: lib/setup.c:6073 msgid "Cannot retrieve volume key for FVAULT2 device." msgstr "FVAULT2 デバイス向けのボリュームキーが取得できません。" -#: lib/setup.c:6059 +#: lib/setup.c:6075 #, c-format msgid "This operation is not supported for %s crypt device." msgstr "この操作は %s 暗号化デバイスではサポートされていません。" -#: lib/setup.c:6244 lib/setup.c:6255 +#: lib/setup.c:6260 lib/setup.c:6271 msgid "Dump operation is not supported for this device type." msgstr "このデバイスタイプはダンプ操作をサポートしていません。" -#: lib/setup.c:6635 +#: lib/setup.c:6651 #, c-format msgid "Data offset is not multiple of %u bytes." msgstr "データオフセットが %u バイトの倍数である必要があります。" -#: lib/setup.c:6943 +#: lib/setup.c:6959 #, c-format msgid "Cannot convert device %s which is still in use." msgstr "使用中のデバイス %s を変換できません。" -#: lib/setup.c:7251 lib/setup.c:7406 +#: lib/setup.c:7267 lib/setup.c:7422 #, c-format msgid "Failed to assign keyslot %u as the new volume key." msgstr "新しいボリュームキー向けのキースロット %u を確保できません。" -#: lib/setup.c:7275 +#: lib/setup.c:7291 msgid "Failed to initialize default LUKS2 keyslot parameters." msgstr "デフォルト LUKS2 キースロットパラメータを初期化できません。" -#: lib/setup.c:7281 +#: lib/setup.c:7297 #, c-format msgid "Failed to assign keyslot %d to digest." msgstr "ダイジェストするためのキースロット %d が確保できません。" -#: lib/setup.c:7523 +#: lib/setup.c:7539 msgid "Cannot add key slot, all slots disabled and no volume key provided." msgstr "キースロットを追加できません。全てのスロットが無効でボリュームキーが渡されませんでした。" -#: lib/setup.c:7611 lib/setup.c:7626 lib/verity/verity.c:333 +#: lib/setup.c:7627 lib/setup.c:7642 lib/verity/verity.c:333 msgid "Failed to load key in kernel keyring." msgstr "キーをカーネルキーリングにロードできません。" -#: lib/setup.c:7807 +#: lib/setup.c:7823 #, c-format msgid "Could not find keyring described by \"%s\"." msgstr "キーリング \"%s\" が見つかりませんでした。" -#: lib/setup.c:7872 +#: lib/setup.c:7888 msgid "Failed to acquire global memory-hard access serialization lock." msgstr "グローバル memory-hard アクセス直列化ロックが取れません。" @@ -785,7 +785,7 @@ msgid "Cannot read requested amount of data." msgstr "指定されたサイズのデータを読み込めません。" #: lib/utils_device.c:207 lib/utils_storage_wrappers.c:99 -#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2257 +#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2283 #, c-format msgid "Device %s does not exist or access denied." msgstr "デバイス %s は存在しないかアクセスが拒否されました。" @@ -901,16 +901,16 @@ msgstr "要求された PBKDF 並列スレッド数は 0 ではいけません msgid "Only PBKDF2 is supported in FIPS mode." msgstr "FIPS モードでは PBKDF2 しかサポートしていません。" -#: lib/utils_benchmark.c:171 +#: lib/utils_benchmark.c:175 msgid "PBKDF benchmark disabled but iterations not set." msgstr "PBKDF ベンチマークが無効ですが繰り返し回数が設定されていません。" -#: lib/utils_benchmark.c:190 +#: lib/utils_benchmark.c:194 #, c-format msgid "Not compatible PBKDF2 options (using hash algorithm %s)." msgstr "PBKDF2 と互換性のないオプションです (ハッシュアルゴリズム %s)。" -#: lib/utils_benchmark.c:210 +#: lib/utils_benchmark.c:214 msgid "Not compatible PBKDF options." msgstr "互換性のない PBKDF オプションです。" @@ -959,9 +959,9 @@ msgstr "XTS モードのキーサイズは 256 か 512 ビットでなければ msgid "Cipher specification should be in [cipher]-[mode]-[iv] format." msgstr "暗号の指定は [暗号]-[モード]-[初期ベクタ] という形式であるべきです。" -#: lib/luks1/keyencryption.c:85 lib/luks1/keymanage.c:353 -#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1132 -#: lib/luks2/luks2_json_metadata.c:1518 lib/luks2/luks2_keyslot.c:711 +#: lib/luks1/keyencryption.c:85 lib/luks1/keymanage.c:358 +#: lib/luks1/keymanage.c:665 lib/luks1/keymanage.c:1133 +#: lib/luks2/luks2_json_metadata.c:1510 lib/luks2/luks2_keyslot.c:711 #, c-format msgid "Cannot write to device %s, permission denied." msgstr "デバイス %s に書き込めません。パーミッションがありません。" @@ -979,13 +979,13 @@ msgstr "一時的なキーストアデバイスにアクセスできません。 msgid "IO error while encrypting keyslot." msgstr "キースロットを暗号化中にI/Oエラーが発生しました。" -#: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:356 -#: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:659 +#: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:361 +#: lib/luks1/keymanage.c:619 lib/luks1/keymanage.c:668 lib/tcrypt/tcrypt.c:659 #: lib/fvault2/fvault2.c:872 lib/verity/verity.c:67 lib/verity/verity.c:183 #: lib/verity/verity_hash.c:312 lib/verity/verity_hash.c:321 #: lib/verity/verity_hash.c:350 lib/verity/verity_fec.c:247 #: lib/verity/verity_fec.c:259 lib/verity/verity_fec.c:264 -#: lib/luks2/luks2_json_metadata.c:1521 src/utils_reencrypt_luks1.c:108 +#: lib/luks2/luks2_json_metadata.c:1513 src/utils_reencrypt_luks1.c:108 #: src/utils_reencrypt_luks1.c:120 #, c-format msgid "Cannot open device %s." @@ -1000,61 +1000,61 @@ msgstr "キースロットを復号化中にI/Oエラーが発生しました。 msgid "Device %s is too small. (LUKS1 requires at least % bytes.)" msgstr "デバイス %s が小さすぎます。(LUKS1 は最低でも % バイト必要です。)" -#: lib/luks1/keymanage.c:138 lib/luks1/keymanage.c:146 -#: lib/luks1/keymanage.c:158 lib/luks1/keymanage.c:169 -#: lib/luks1/keymanage.c:181 +#: lib/luks1/keymanage.c:143 lib/luks1/keymanage.c:151 +#: lib/luks1/keymanage.c:163 lib/luks1/keymanage.c:174 +#: lib/luks1/keymanage.c:186 #, c-format msgid "LUKS keyslot %u is invalid." msgstr "LUKS キースロット %u は不正です。" -#: lib/luks1/keymanage.c:254 lib/luks2/luks2_json_metadata.c:1382 +#: lib/luks1/keymanage.c:259 lib/luks2/luks2_json_metadata.c:1382 #, c-format msgid "Requested header backup file %s already exists." msgstr "要求されたヘッダバックアップファイル %s は既に存在しています。" -#: lib/luks1/keymanage.c:256 lib/luks2/luks2_json_metadata.c:1384 +#: lib/luks1/keymanage.c:261 lib/luks2/luks2_json_metadata.c:1384 #, c-format msgid "Cannot create header backup file %s." msgstr "ヘッダバックアップファイル %s が作成できません。" -#: lib/luks1/keymanage.c:263 lib/luks2/luks2_json_metadata.c:1391 +#: lib/luks1/keymanage.c:268 lib/luks2/luks2_json_metadata.c:1391 #, c-format msgid "Cannot write header backup file %s." msgstr "ヘッダバックアップファイル %s に書き込めません。" -#: lib/luks1/keymanage.c:295 lib/luks2/luks2_json_metadata.c:1428 +#: lib/luks1/keymanage.c:300 lib/luks2/luks2_json_metadata.c:1420 msgid "Backup file does not contain valid LUKS header." msgstr "バックアップファイルが有効な LUKS ヘッダを含んでいません。" -#: lib/luks1/keymanage.c:308 lib/luks1/keymanage.c:580 -#: lib/luks2/luks2_json_metadata.c:1450 +#: lib/luks1/keymanage.c:313 lib/luks1/keymanage.c:585 +#: lib/luks2/luks2_json_metadata.c:1442 #, c-format msgid "Cannot open header backup file %s." msgstr "ヘッダバックアップファイル %s をオープンできません。" -#: lib/luks1/keymanage.c:316 lib/luks2/luks2_json_metadata.c:1458 +#: lib/luks1/keymanage.c:321 lib/luks2/luks2_json_metadata.c:1450 #, c-format msgid "Cannot read header backup file %s." msgstr "ヘッダバックアップファイル %s を読めません。" -#: lib/luks1/keymanage.c:326 +#: lib/luks1/keymanage.c:331 msgid "Data offset or key size differs on device and backup, restore failed." msgstr "データオフセットかキーサイズがデバイスとバックアップで異なるのでリストアできません。" -#: lib/luks1/keymanage.c:334 +#: lib/luks1/keymanage.c:339 #, c-format msgid "Device %s %s%s" msgstr "デバイス %s %s%s" -#: lib/luks1/keymanage.c:335 +#: lib/luks1/keymanage.c:340 msgid "does not contain LUKS header. Replacing header can destroy data on that device." msgstr "LUKS ヘッダが含まれていません。ヘッダを置き換えるとデバイスのデータを破壊する恐れがあります。" -#: lib/luks1/keymanage.c:336 +#: lib/luks1/keymanage.c:341 msgid "already contains LUKS header. Replacing header will destroy existing keyslots." msgstr "LUKS ヘッダを既に含んでいます。ヘッダを置き換えると既にあるキースロットを破壊します。" -#: lib/luks1/keymanage.c:337 lib/luks2/luks2_json_metadata.c:1490 +#: lib/luks1/keymanage.c:342 lib/luks2/luks2_json_metadata.c:1482 msgid "" "\n" "WARNING: real device header has different UUID than backup!" @@ -1062,130 +1062,130 @@ msgstr "" "\n" "警告: 実デバイスのヘッダはバックアップとUUIDが異なります!" -#: lib/luks1/keymanage.c:385 +#: lib/luks1/keymanage.c:390 msgid "Non standard key size, manual repair required." msgstr "標準的でないキーサイズなので、手動の修復が必要です。" -#: lib/luks1/keymanage.c:395 +#: lib/luks1/keymanage.c:400 msgid "Non standard keyslots alignment, manual repair required." msgstr "標準的でないキースロットアライメントなので、手動の修復が必要です。" -#: lib/luks1/keymanage.c:404 +#: lib/luks1/keymanage.c:409 #, c-format msgid "Cipher mode repaired (%s -> %s)." msgstr "暗号モードを修復しました (%s -> %s)。" -#: lib/luks1/keymanage.c:415 +#: lib/luks1/keymanage.c:420 #, c-format msgid "Cipher hash repaired to lowercase (%s)." msgstr "暗号ハッシュを小文字に修復しました (%s)。" -#: lib/luks1/keymanage.c:417 lib/luks1/keymanage.c:523 -#: lib/luks1/keymanage.c:756 +#: lib/luks1/keymanage.c:422 lib/luks1/keymanage.c:528 +#: lib/luks1/keymanage.c:757 #, c-format msgid "Requested LUKS hash %s is not supported." msgstr "要求された LUKS ハッシュ %s はサポートしていません。" -#: lib/luks1/keymanage.c:431 +#: lib/luks1/keymanage.c:436 msgid "Repairing keyslots." msgstr "キースロットを修復中です。" -#: lib/luks1/keymanage.c:450 +#: lib/luks1/keymanage.c:455 #, c-format msgid "Keyslot %i: offset repaired (%u -> %u)." msgstr "キースロット %i: オフセットを修復 (%u -> %u)." -#: lib/luks1/keymanage.c:458 +#: lib/luks1/keymanage.c:463 #, c-format msgid "Keyslot %i: stripes repaired (%u -> %u)." msgstr "キースロット %i: のストライプを修復 (%u -> %u)." -#: lib/luks1/keymanage.c:467 +#: lib/luks1/keymanage.c:472 #, c-format msgid "Keyslot %i: bogus partition signature." msgstr "キースロット %i: パーティションの印(signature)がおかしいです。" -#: lib/luks1/keymanage.c:472 +#: lib/luks1/keymanage.c:477 #, c-format msgid "Keyslot %i: salt wiped." msgstr "キースロット %i: ソルトを消しました。" -#: lib/luks1/keymanage.c:489 +#: lib/luks1/keymanage.c:494 msgid "Writing LUKS header to disk." msgstr "LUKS ヘッダを書きこんでいます。" -#: lib/luks1/keymanage.c:494 +#: lib/luks1/keymanage.c:499 msgid "Repair failed." msgstr "修復に失敗しました。" -#: lib/luks1/keymanage.c:549 +#: lib/luks1/keymanage.c:554 #, c-format msgid "LUKS cipher mode %s is invalid." msgstr "LUKS 暗号モード %s は不正です。" -#: lib/luks1/keymanage.c:554 +#: lib/luks1/keymanage.c:559 #, c-format msgid "LUKS hash %s is invalid." msgstr "LUKS ハッシュ %s は不正です。" -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 +#: lib/luks1/keymanage.c:566 src/cryptsetup.c:1367 msgid "No known problems detected for LUKS header." msgstr "LUKS ヘッダに既知の不具合は検出されませんでした。" -#: lib/luks1/keymanage.c:689 +#: lib/luks1/keymanage.c:690 #, c-format msgid "Error during update of LUKS header on device %s." msgstr "デバイス %s の LUKS ヘッダを更新中にエラーが発生しました。" -#: lib/luks1/keymanage.c:697 +#: lib/luks1/keymanage.c:698 #, c-format msgid "Error re-reading LUKS header after update on device %s." msgstr "デバイス %s の LUKS ヘッダを更新後の再読み込み中にエラーが発生しました。" -#: lib/luks1/keymanage.c:750 +#: lib/luks1/keymanage.c:751 msgid "Data offset for LUKS header must be either 0 or higher than header size." msgstr "LUKS ヘッダのデータへのオフセットは 0 かヘッダサイズより大きくなければいけません。" -#: lib/luks1/keymanage.c:761 lib/luks1/keymanage.c:832 -#: lib/luks2/luks2_json_format.c:231 lib/luks2/luks2_json_metadata.c:1261 +#: lib/luks1/keymanage.c:762 lib/luks1/keymanage.c:833 +#: lib/luks2/luks2_json_format.c:240 lib/luks2/luks2_json_metadata.c:1261 #: src/utils_reencrypt.c:703 msgid "Wrong LUKS UUID format provided." msgstr "LUKS UUID の形式が間違っています。" -#: lib/luks1/keymanage.c:783 +#: lib/luks1/keymanage.c:784 msgid "Cannot create LUKS header: reading random salt failed." msgstr "LUKS ヘッダを作成できません: ランダムなソルトを読み込めません。" -#: lib/luks1/keymanage.c:811 +#: lib/luks1/keymanage.c:812 #, c-format msgid "Cannot create LUKS header: header digest failed (using hash %s)." msgstr "LUKS ヘッダを作成できません: ヘッダのハッシュが求められません (ハッシュには %s を使用)。" -#: lib/luks1/keymanage.c:856 +#: lib/luks1/keymanage.c:857 #, c-format msgid "Key slot %d active, purge first." msgstr "キースロット %d が使用中なので、パージしてください。" -#: lib/luks1/keymanage.c:862 +#: lib/luks1/keymanage.c:863 #, c-format msgid "Key slot %d material includes too few stripes. Header manipulation?" msgstr "キースロット %d のストライプが少なすぎます。ヘッダを細工でもしましたか?" -#: lib/luks1/keymanage.c:900 lib/luks2/luks2_keyslot_luks2.c:217 +#: lib/luks1/keymanage.c:901 lib/luks2/luks2_keyslot_luks2.c:217 msgid "PBKDF2 iteration value overflow." msgstr "PBKDF2 イテレーション回数がオーバーフローしました。" -#: lib/luks1/keymanage.c:1022 +#: lib/luks1/keymanage.c:1023 #, c-format msgid "Cannot open keyslot (using hash %s)." msgstr "キースロットをオープンできません (ハッシュ %s を使用)。" -#: lib/luks1/keymanage.c:1118 +#: lib/luks1/keymanage.c:1119 #, c-format msgid "Key slot %d is invalid, please select keyslot between 0 and %d." msgstr "キースロット %d は不正です。0 から %d の間を選んでください。" -#: lib/luks1/keymanage.c:1136 lib/luks2/luks2_keyslot.c:715 +#: lib/luks1/keymanage.c:1137 lib/luks2/luks2_keyslot.c:715 #, c-format msgid "Cannot wipe device %s." msgstr "デバイス %s をワイプできません。" @@ -1363,33 +1363,33 @@ msgstr "この操作はサポートされていません。" msgid "Unexpected key data size." msgstr "予期しないキーデータサイズです。" -#: lib/bitlk/bitlk.c:1442 +#: lib/bitlk/bitlk.c:1448 msgid "This BITLK device is in an unsupported state and cannot be activated." msgstr "この BITLK デバイスはサポートされてない状態にあるためアクティベートできません。" -#: lib/bitlk/bitlk.c:1447 +#: lib/bitlk/bitlk.c:1453 #, c-format msgid "BITLK devices with type '%s' cannot be activated." msgstr "タイプ '%s' の BITLK デバイスはアクティベートできません。" -#: lib/bitlk/bitlk.c:1486 +#: lib/bitlk/bitlk.c:1492 #, c-format msgid "WARNING: BitLocker volume size % does not match the underlying device size %" msgstr "警告: BitLocker ボリュームサイズ % がデバイスサイズ % と一致しません" -#: lib/bitlk/bitlk.c:1613 +#: lib/bitlk/bitlk.c:1634 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK IV." msgstr "カーネルの dm-crypt が BITLK IV をサポートしていないためデバイスをアクティベートできません。" -#: lib/bitlk/bitlk.c:1617 +#: lib/bitlk/bitlk.c:1638 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK Elephant diffuser." msgstr "カーネルの dm-crypt が BITLK Elephant diffuser をサポートしていないためデバイスをアクティベートできません。" -#: lib/bitlk/bitlk.c:1621 +#: lib/bitlk/bitlk.c:1642 msgid "Cannot activate device, kernel dm-crypt is missing support for large sector size." msgstr "カーネルの dm-crypt がラージセクタサイズをサポートしていないためデバイスをアクティベートできません。" -#: lib/bitlk/bitlk.c:1625 +#: lib/bitlk/bitlk.c:1646 msgid "Cannot activate device, kernel dm-zero module is missing." msgstr "カーネルの dm-zero モジュールがないためデバイスをアクティベートできません。" @@ -1546,24 +1546,24 @@ msgstr "デバイス %s のサイズが不明です。" msgid "Incompatible kernel dm-integrity metadata (version %u) detected on %s." msgstr "互換性のないカーネルの dm-integrity のメタデータ (バージョン %u) が %s に検出されました。" -#: lib/integrity/integrity.c:308 lib/integrity/integrity.c:492 +#: lib/integrity/integrity.c:309 lib/integrity/integrity.c:493 msgid "Kernel does not support dm-integrity mapping." msgstr "カーネルが dm-integrity マッピングをサポートしていません。" -#: lib/integrity/integrity.c:314 +#: lib/integrity/integrity.c:315 msgid "Kernel does not support dm-integrity fixed metadata alignment." msgstr "カーネルが dm-integrity 固定メタデータアラインメントをサポートしていません。" -#: lib/integrity/integrity.c:323 +#: lib/integrity/integrity.c:324 msgid "Kernel refuses to activate insecure recalculate option (see legacy activation options to override)." msgstr "カーネルが安全でない再計算オプションを拒否しました (レガジーアクティベーションオプションでオーバーライドできます)。" -#: lib/integrity/integrity.c:329 +#: lib/integrity/integrity.c:330 msgid "Kernel does not support dm-integrity inline mode." msgstr "カーネルが dm-integrity インラインモードをサポートしていません。" #: lib/luks2/luks2_disk_metadata.c:382 lib/luks2/luks2_json_metadata.c:1184 -#: lib/luks2/luks2_json_metadata.c:1510 +#: lib/luks2/luks2_json_metadata.c:1502 #, c-format msgid "Failed to acquire write lock on device %s." msgstr "デバイス %s の書き込みのためのロックを取得できませんでした。" @@ -1585,22 +1585,22 @@ msgstr "" msgid "WARNING: keyslots area (% bytes) is very small, available LUKS2 keyslot count is very limited.\n" msgstr "警告: キースロット領域 (% バイト) がとても小さいため、利用可能な LUKS2 キースロット数が制限されます。\n" -#: lib/luks2/luks2_json_format.c:418 +#: lib/luks2/luks2_json_format.c:427 msgid "Requested data offset is too small." msgstr "要求されたデータオフセットが小さすぎます。" -#: lib/luks2/luks2_json_format.c:459 +#: lib/luks2/luks2_json_format.c:468 #, c-format msgid "WARNING: LUKS2 metadata size changed to % bytes.\n" msgstr "警告: LUKS2 メタデータサイズが % バイトに変更されました。\n" -#: lib/luks2/luks2_json_format.c:463 +#: lib/luks2/luks2_json_format.c:472 #, c-format msgid "WARNING: LUKS2 keyslots area size changed to % bytes.\n" msgstr "警告: LUKS2 キースロット領域サイズが % バイトに変更されました。\n" #: lib/luks2/luks2_json_metadata.c:1171 lib/luks2/luks2_json_metadata.c:1357 -#: lib/luks2/luks2_json_metadata.c:1417 lib/luks2/luks2_keyslot_luks2.c:71 +#: lib/luks2/luks2_json_metadata.c:1412 lib/luks2/luks2_keyslot_luks2.c:71 #, c-format msgid "Failed to acquire read lock on device %s." msgstr "デバイス %s の読み込みのためのロックを取得できませんでした。" @@ -1609,33 +1609,33 @@ msgstr "デバイス %s の読み込みのためのロックを取得できま msgid "Label is too long." msgstr "ラベルが長すぎます。" -#: lib/luks2/luks2_json_metadata.c:1435 +#: lib/luks2/luks2_json_metadata.c:1427 #, c-format msgid "Forbidden LUKS2 requirements detected in backup %s." msgstr "禁止された LUKS2 要求がバックアップ %s に検出されました。" -#: lib/luks2/luks2_json_metadata.c:1474 +#: lib/luks2/luks2_json_metadata.c:1466 msgid "Data offset differ on device and backup, restore failed." msgstr "データオフセットがデバイスとバックアップと異なるため修復できません。" -#: lib/luks2/luks2_json_metadata.c:1480 +#: lib/luks2/luks2_json_metadata.c:1472 msgid "Binary header with keyslot areas size differ on device and backup, restore failed." msgstr "キースロット領域のあるバイナリヘッダのサイズがデバイスとバックアップで異なるため修復できません。" -#: lib/luks2/luks2_json_metadata.c:1487 +#: lib/luks2/luks2_json_metadata.c:1479 #, c-format msgid "Device %s %s%s%s%s" msgstr "デバイス %s %s%s%s%s" -#: lib/luks2/luks2_json_metadata.c:1488 +#: lib/luks2/luks2_json_metadata.c:1480 msgid "does not contain LUKS2 header. Replacing header can destroy data on that device." msgstr "LUKS2 ヘッダが含まれていません。ヘッダを置き換えるとデータを破壊しかねません。" -#: lib/luks2/luks2_json_metadata.c:1489 +#: lib/luks2/luks2_json_metadata.c:1481 msgid "already contains LUKS2 header. Replacing header will destroy existing keyslots." msgstr "既に LUKS2 ヘッダがあります。ヘッダを置き換えると既にあるキースロットを破壊します。" -#: lib/luks2/luks2_json_metadata.c:1491 +#: lib/luks2/luks2_json_metadata.c:1483 msgid "" "\n" "WARNING: unknown LUKS2 requirements detected in real device header!\n" @@ -1645,7 +1645,7 @@ msgstr "" "警告: 不明な LUKS2 への要求がリアルデバイスヘッダにあります!\n" "ヘッダをバックアップで置き換えるとデータを破壊する恐れがあります!" -#: lib/luks2/luks2_json_metadata.c:1493 +#: lib/luks2/luks2_json_metadata.c:1485 msgid "" "\n" "WARNING: Unfinished offline reencryption detected on the device!\n" @@ -1655,84 +1655,84 @@ msgstr "" "警告: オフラインの再暗号化が終了していません!\n" "ヘッダを置き換えるとデータを破壊しかねません。" -#: lib/luks2/luks2_json_metadata.c:1591 +#: lib/luks2/luks2_json_metadata.c:1583 #, c-format msgid "Ignored unknown flag %s." msgstr "不明なフラグ %s を無視しました。" -#: lib/luks2/luks2_json_metadata.c:2563 lib/luks2/luks2_reencrypt.c:2110 +#: lib/luks2/luks2_json_metadata.c:2555 lib/luks2/luks2_reencrypt.c:2110 #, c-format msgid "Missing key for dm-crypt segment %u" msgstr "dm-crypt セグメント %u にキーがありません" -#: lib/luks2/luks2_json_metadata.c:2575 lib/luks2/luks2_reencrypt.c:2123 +#: lib/luks2/luks2_json_metadata.c:2567 lib/luks2/luks2_reencrypt.c:2123 msgid "Failed to set dm-crypt segment." msgstr "dm-crypt セグメントの設定に失敗しました。" -#: lib/luks2/luks2_json_metadata.c:2581 lib/luks2/luks2_reencrypt.c:2129 +#: lib/luks2/luks2_json_metadata.c:2573 lib/luks2/luks2_reencrypt.c:2129 msgid "Failed to set dm-linear segment." msgstr "dm-linear セグメントの設定に失敗しました。" -#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:580 +#: lib/luks2/luks2_json_metadata.c:2693 src/utils_reencrypt.c:580 msgid "No known cipher specification pattern detected in LUKS2 header." msgstr "LUKS2 ヘッダに既知の暗号スペックパターンを検出できませんでした。" -#: lib/luks2/luks2_json_metadata.c:2709 +#: lib/luks2/luks2_json_metadata.c:2701 msgid "OPAL device must have static device size." msgstr "OPAL デバイスは固定デバイスサイズでなければなりません。" -#: lib/luks2/luks2_json_metadata.c:2729 +#: lib/luks2/luks2_json_metadata.c:2721 msgid "Encrypted OPAL device with integrity must be smaller than locking range." msgstr "整合性が有効な暗号化 OPAL デバイスはロックレンジより小さくなければなりません。" -#: lib/luks2/luks2_json_metadata.c:2734 +#: lib/luks2/luks2_json_metadata.c:2726 msgid "OPAL device must have same size as locking range." msgstr "OPAL デバイスはロックレンジと同じサイズでなければなりません。" -#: lib/luks2/luks2_json_metadata.c:2754 +#: lib/luks2/luks2_json_metadata.c:2746 #, c-format msgid "OPAL device is %s already unlocked.\n" msgstr "OPAL デバイス %s は既にアンロックされています。\n" -#: lib/luks2/luks2_json_metadata.c:2793 +#: lib/luks2/luks2_json_metadata.c:2785 msgid "Unsupported device integrity configuration." msgstr "サポートしていないデバイス整合性設定です。" -#: lib/luks2/luks2_json_metadata.c:2809 +#: lib/luks2/luks2_json_metadata.c:2801 msgid "Underlying dm-integrity device with unexpected provided data sectors." msgstr "dm-integrity デバイスがデータセクタに対して期待通りではありません。" -#: lib/luks2/luks2_json_metadata.c:2911 +#: lib/luks2/luks2_json_metadata.c:2903 msgid "Reencryption in-progress. Cannot deactivate device." msgstr "再暗号化が実行中なのでデバイスのデアクティベートできません。. Cannot deactivate device." -#: lib/luks2/luks2_json_metadata.c:2922 lib/luks2/luks2_reencrypt.c:4287 +#: lib/luks2/luks2_json_metadata.c:2914 lib/luks2/luks2_reencrypt.c:4287 #, c-format msgid "Failed to replace suspended device %s with dm-error target." msgstr "サスペンドされたデバイス %s を dm-error ターゲットで置き換えられません。" -#: lib/luks2/luks2_json_metadata.c:3001 lib/luks2/luks2_json_metadata.c:3023 +#: lib/luks2/luks2_json_metadata.c:2993 lib/luks2/luks2_json_metadata.c:3015 #, c-format msgid "Device %s was deactivated but hardware OPAL device cannot be locked." msgstr "デバイス %s はデアクティベートされましたが、ハードウェア OPAL デバイスはロックできません。" -#: lib/luks2/luks2_json_metadata.c:3045 +#: lib/luks2/luks2_json_metadata.c:3037 msgid "Unmet LUKS2 requirements detected." msgstr "満たせない LUKS2 の必要条件があります。" -#: lib/luks2/luks2_json_metadata.c:3053 +#: lib/luks2/luks2_json_metadata.c:3045 msgid "Operation incompatible with device marked for legacy reencryption. Aborting." msgstr "操作がレガシー再暗号化とマークされたデバイスと互換性がありません。中止します。" -#: lib/luks2/luks2_json_metadata.c:3055 +#: lib/luks2/luks2_json_metadata.c:3047 msgid "Operation incompatible with device marked for LUKS2 reencryption. Aborting." msgstr "操作が LUKS2 再暗号化とマークされたデバイスと互換性がありません。中止します。" -#: lib/luks2/luks2_json_metadata.c:3057 +#: lib/luks2/luks2_json_metadata.c:3049 msgid "Operation incompatible with device using OPAL. Aborting." msgstr "操作が OPAL を用いたデバイスと互換性がありません。中止します。" -#: lib/luks2/luks2_json_metadata.c:3059 +#: lib/luks2/luks2_json_metadata.c:3051 msgid "Operation incompatible with device using inline HW tags. Aborting." msgstr "操作がインラインHWタグを用いたデバイスと互換性がありません。中止します。" @@ -1799,60 +1799,60 @@ msgstr "暗号スペック %s-%s は LUKS2 キースロットに使えません msgid "Unable to move keyslot area. Not enough space." msgstr "領域が足りないのでキースロット領域を動かせません。" -#: lib/luks2/luks2_luks1_convert.c:619 +#: lib/luks2/luks2_luks1_convert.c:627 msgid "Cannot convert to LUKS2 format - invalid metadata." msgstr "LUKS2 形式に変換できません - メタデータが不正です。" -#: lib/luks2/luks2_luks1_convert.c:636 +#: lib/luks2/luks2_luks1_convert.c:644 msgid "Unable to move keyslot area. LUKS2 keyslots area too small." msgstr "LUKS2 キースロット領域が足りないのでキースロット領域を動かせません。" -#: lib/luks2/luks2_luks1_convert.c:642 lib/luks2/luks2_luks1_convert.c:972 +#: lib/luks2/luks2_luks1_convert.c:650 lib/luks2/luks2_luks1_convert.c:980 msgid "Unable to move keyslot area." msgstr "キースロット領域を動かせません。" -#: lib/luks2/luks2_luks1_convert.c:757 +#: lib/luks2/luks2_luks1_convert.c:765 msgid "Cannot convert to LUKS1 format - default segment encryption sector size is not 512 bytes." msgstr "LUKS1 形式に変換できません - デフォルトの暗号セクタサイズが 512 バイトではありません。" -#: lib/luks2/luks2_luks1_convert.c:765 +#: lib/luks2/luks2_luks1_convert.c:773 msgid "Cannot convert to LUKS1 format - key slot digests are not LUKS1 compatible." msgstr "LUKS1 形式に変換できません - キースロットのハッシュ関数が LUKS1 互換ではありません。" -#: lib/luks2/luks2_luks1_convert.c:779 +#: lib/luks2/luks2_luks1_convert.c:787 #, c-format msgid "Cannot convert to LUKS1 format - device uses wrapped key cipher %s." msgstr "LUKS1 形式に変換できません - ラップされたキーの暗号に %s が使われています。" -#: lib/luks2/luks2_luks1_convert.c:784 +#: lib/luks2/luks2_luks1_convert.c:792 msgid "Cannot convert to LUKS1 format - device uses more segments." msgstr "LUKS1 形式に変換できません - デバイスが多くのセグメントを使っています。" -#: lib/luks2/luks2_luks1_convert.c:792 +#: lib/luks2/luks2_luks1_convert.c:800 #, c-format msgid "Cannot convert to LUKS1 format - LUKS2 header contains %u token(s)." msgstr "LUKS1 形式に変換できません - LUKS2 ヘッダ %u 個のトークンを含んでいます。" -#: lib/luks2/luks2_luks1_convert.c:798 +#: lib/luks2/luks2_luks1_convert.c:806 msgid "Cannot convert to LUKS1 format - there are no active keyslots." msgstr "LUKS1 形式に変換できません - アクティブなキースロットがありません。" -#: lib/luks2/luks2_luks1_convert.c:810 +#: lib/luks2/luks2_luks1_convert.c:818 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is in invalid state." msgstr "LUKS1 形式に変換できません - キースロット %u が不正な状態です。" -#: lib/luks2/luks2_luks1_convert.c:815 +#: lib/luks2/luks2_luks1_convert.c:823 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is unbound." msgstr "LUKS1 形式に変換できません - キースロット %u が unbound です。" -#: lib/luks2/luks2_luks1_convert.c:820 +#: lib/luks2/luks2_luks1_convert.c:828 #, c-format msgid "Cannot convert to LUKS1 format - slot %u (over maximum slots) is still active." msgstr "LUKS1 形式に変換できません - スロット %u が(最大個数を超過して)有効です。" -#: lib/luks2/luks2_luks1_convert.c:825 +#: lib/luks2/luks2_luks1_convert.c:833 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is not LUKS1 compatible." msgstr "LUKS1 形式に変換できません - キースロット %u が LUKS1 と互換ではありません。" @@ -2137,7 +2137,7 @@ msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encry msgstr "キースロットの暗号化パラメータは LUKS2 キースロット暗号化と互換性がありません。" #: src/cryptsetup.c:150 src/cryptsetup.c:1180 src/cryptsetup.c:1545 -#: src/utils_reencrypt.c:1890 src/utils_reencrypt_luks1.c:502 +#: src/utils_reencrypt.c:1916 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." msgstr "未知の暗号スペックです。" @@ -2165,7 +2165,7 @@ msgid "WARNING: The --keyfile-size option is being ignored, the read size is the msgstr "警告: --keyfile-size オプションは無視されて、読み込みサイズは暗号鍵のサイズと同じになります。\n" #: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 -#: src/integritysetup.c:189 src/utils_reencrypt.c:2141 +#: src/integritysetup.c:189 src/utils_reencrypt.c:2167 #, c-format msgid "Blkid scan failed for %s." msgstr "%s の Blkid スキャンが失敗しました。" @@ -2245,7 +2245,7 @@ msgstr "デバイス %s は有効な FVAULT2 デバイスではありません msgid "Cannot determine volume key size for FVAULT2, please use --key-size option." msgstr "FVAULT2 のボリュームキーサイズが決定できないので、--key-size を使ってください。" -#: src/cryptsetup.c:849 src/veritysetup.c:317 src/integritysetup.c:422 +#: src/cryptsetup.c:849 src/veritysetup.c:317 src/integritysetup.c:424 #, c-format msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "デバイス %s はまたアクティブで後から削除される予定になっています。.\n" @@ -2434,7 +2434,7 @@ msgid "LUKS file container %s is too small for activation, there is no remaining msgstr "LUKS ファイルコンテナ %s がアクティベートするには小さすぎます。データ用の領域に空きがありません。" #: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:278 -#: src/utils_reencrypt.c:371 src/utils_reencrypt.c:1910 +#: src/utils_reencrypt.c:371 src/utils_reencrypt.c:1936 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "キースロットのない LUKS のボリュームキーサイズが決定できないので、--key-size を使ってください。" @@ -2729,7 +2729,7 @@ msgstr "--volume-key-keyring オプションは --hash や --volume-key-file と msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "--volume-key-file オプションは対応する --key-size オプションとペアになる必要があります。" -#: src/cryptsetup.c:3373 src/veritysetup.c:673 src/integritysetup.c:793 +#: src/cryptsetup.c:3373 src/veritysetup.c:673 src/integritysetup.c:800 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "オプション --cancel-deferred と --deferred は同時に使えません。" @@ -2797,21 +2797,21 @@ msgstr "特定のキースロットを必要としています。--key-slot を msgid " [--type ] []" msgstr "<デバイス> [--type <タイプ>] [<名前>]" -#: src/cryptsetup.c:3482 src/veritysetup.c:487 src/integritysetup.c:560 +#: src/cryptsetup.c:3482 src/veritysetup.c:487 src/integritysetup.c:563 msgid "open device as " msgstr "デバイスを <名前> としてオープン" #: src/cryptsetup.c:3483 src/cryptsetup.c:3484 src/cryptsetup.c:3485 -#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:561 -#: src/integritysetup.c:562 src/integritysetup.c:564 +#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:564 +#: src/integritysetup.c:565 src/integritysetup.c:567 msgid "" msgstr "<名前>" -#: src/cryptsetup.c:3483 src/veritysetup.c:488 src/integritysetup.c:561 +#: src/cryptsetup.c:3483 src/veritysetup.c:488 src/integritysetup.c:564 msgid "close device (remove mapping)" msgstr "デバイスをクローズします (マッピングを削除します)" -#: src/cryptsetup.c:3484 src/integritysetup.c:564 +#: src/cryptsetup.c:3484 src/integritysetup.c:567 msgid "resize active device" msgstr "アクティブデバイスをリサイズ" @@ -2939,7 +2939,7 @@ msgstr " <デバイス>" msgid "Manipulate LUKS2 tokens" msgstr "LUKS2 トークンを操作します" -#: src/cryptsetup.c:3527 src/veritysetup.c:505 src/integritysetup.c:579 +#: src/cryptsetup.c:3527 src/veritysetup.c:505 src/integritysetup.c:582 msgid "" "\n" " is one of:\n" @@ -3040,7 +3040,7 @@ msgstr "" msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: XTS モードのデフォルトキーサイズは (2つの内部キーがあるため) 倍になります。\n" -#: src/cryptsetup.c:3594 src/veritysetup.c:647 src/integritysetup.c:739 +#: src/cryptsetup.c:3594 src/veritysetup.c:647 src/integritysetup.c:742 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: は %s を引数で与える必要があります" @@ -3091,31 +3091,31 @@ msgstr "--priority の引数は ignore/normal/prefer のいずれかのみです msgid "Invalid maximal tries specification." msgstr "最大試行回数の指定が不正です。" -#: src/cryptsetup.c:3793 src/veritysetup.c:568 src/integritysetup.c:659 +#: src/cryptsetup.c:3793 src/veritysetup.c:568 src/integritysetup.c:662 msgid "Show this help message" msgstr "このヘルプを表示します" -#: src/cryptsetup.c:3794 src/veritysetup.c:569 src/integritysetup.c:660 +#: src/cryptsetup.c:3794 src/veritysetup.c:569 src/integritysetup.c:663 msgid "Display brief usage" msgstr "コンパクトな使用法表示をします" -#: src/cryptsetup.c:3795 src/veritysetup.c:570 src/integritysetup.c:661 +#: src/cryptsetup.c:3795 src/veritysetup.c:570 src/integritysetup.c:664 msgid "Print package version" msgstr "パッケージのバージョンを表示" -#: src/cryptsetup.c:3806 src/veritysetup.c:581 src/integritysetup.c:672 +#: src/cryptsetup.c:3806 src/veritysetup.c:581 src/integritysetup.c:675 msgid "Help options:" msgstr "ヘルプオプション:" -#: src/cryptsetup.c:3829 src/veritysetup.c:602 src/integritysetup.c:692 +#: src/cryptsetup.c:3829 src/veritysetup.c:602 src/integritysetup.c:695 msgid "[OPTION...] " msgstr "[オプション...] <アクション> <アクション特有>" -#: src/cryptsetup.c:3838 src/veritysetup.c:611 src/integritysetup.c:703 +#: src/cryptsetup.c:3838 src/veritysetup.c:611 src/integritysetup.c:706 msgid "Argument missing." msgstr "<アクション> がありません。" -#: src/cryptsetup.c:3917 src/veritysetup.c:642 src/integritysetup.c:734 +#: src/cryptsetup.c:3917 src/veritysetup.c:642 src/integritysetup.c:737 msgid "Unknown action." msgstr "未知のアクションです。" @@ -3220,7 +3220,7 @@ msgstr "コマンドは か --root-hash-file オプションを引 msgid " " msgstr "<データデバイス> <ハッシュデバイス>" -#: src/veritysetup.c:485 src/integritysetup.c:559 +#: src/veritysetup.c:485 src/integritysetup.c:562 msgid "format device" msgstr "デバイスをフォーマット" @@ -3236,7 +3236,7 @@ msgstr "デバイスを検証" msgid " []" msgstr "<データデバイス> <名前> <ハッシュデバイス> [<ルートハッシュ>]" -#: src/veritysetup.c:489 src/integritysetup.c:562 +#: src/veritysetup.c:489 src/integritysetup.c:565 msgid "show active device status" msgstr "アクティブデバイスのステータスを表示" @@ -3244,7 +3244,7 @@ msgstr "アクティブデバイスのステータスを表示" msgid "" msgstr "<ハッシュデバイス>" -#: src/veritysetup.c:490 src/integritysetup.c:563 +#: src/veritysetup.c:490 src/integritysetup.c:566 msgid "show on-disk information" msgstr "ディスク上の情報を表示" @@ -3308,20 +3308,20 @@ msgstr " (インラインHWタグ)" msgid "Setting recalculate flag is not supported, you may consider using --wipe instead." msgstr "再計算フラグの設定はサポートされていません。代わりに --wipe を使うことを検討してください。" -#: src/integritysetup.c:382 src/integritysetup.c:546 +#: src/integritysetup.c:382 src/integritysetup.c:549 #, c-format msgid "Device %s is not a valid INTEGRITY device." msgstr "デバイス %s が有効な INTEGRITY デバイスではありません。" -#: src/integritysetup.c:559 src/integritysetup.c:563 +#: src/integritysetup.c:562 src/integritysetup.c:566 msgid "" msgstr "<整合性デバイス>" -#: src/integritysetup.c:560 +#: src/integritysetup.c:563 msgid " " msgstr "<整合性デバイス> <名前>" -#: src/integritysetup.c:583 +#: src/integritysetup.c:586 #, c-format msgid "" "\n" @@ -3332,7 +3332,7 @@ msgstr "" "<名前> は %s に作られるデバイス\n" "<整合性デバイス> は整合性タグを格納するデバイス\n" -#: src/integritysetup.c:588 +#: src/integritysetup.c:591 #, c-format msgid "" "\n" @@ -3345,51 +3345,55 @@ msgstr "" "\tチェックサムアルゴリズム: %s\n" " 最大キーファイルサイズ: %dkB\n" -#: src/integritysetup.c:645 +#: src/integritysetup.c:648 #, c-format msgid "Invalid --%s size. Maximum is %u bytes." msgstr "不正な --%s サイズです。最大は %u バイトです。" -#: src/integritysetup.c:748 +#: src/integritysetup.c:751 msgid "Both key file and key size options must be specified." msgstr "キーファイルとキーサイズの両方の指定が必要です。" -#: src/integritysetup.c:752 +#: src/integritysetup.c:755 msgid "Both journal integrity key file and key size options must be specified." msgstr "ジャーナル整合性キーファイルとキーサイズの両方の指定が必要です。" -#: src/integritysetup.c:755 +#: src/integritysetup.c:758 msgid "Journal integrity algorithm must be specified if journal integrity key is used." msgstr "ジャーナル整合性キーを使う場合はアルゴリズムの指定が必要です。" -#: src/integritysetup.c:759 +#: src/integritysetup.c:762 msgid "Both journal encryption key file and key size options must be specified." msgstr "ジャーナル暗号キーファイルとキーサイズの両方の指定が必要です。" -#: src/integritysetup.c:762 +#: src/integritysetup.c:765 msgid "Journal encryption algorithm must be specified if journal encryption key is used." msgstr "ジャーナル暗号キーを使う場合はアルゴリズムの指定が必要です。" -#: src/integritysetup.c:766 +#: src/integritysetup.c:769 msgid "Recovery and bitmap mode options are mutually exclusive." msgstr "リカバリと bitmap モードオプションは同時には使えません。" -#: src/integritysetup.c:773 +#: src/integritysetup.c:776 msgid "Journal options cannot be used in bitmap mode." msgstr "ジャーナルオプションは bitmap モードでは使えません。" -#: src/integritysetup.c:778 +#: src/integritysetup.c:781 msgid "Bitmap options can be used only in bitmap mode." msgstr "bitmap オプションは bitmap モードでしか使えません。" -#: src/integritysetup.c:784 +#: src/integritysetup.c:787 msgid "Inline mode cannot be combined with journal or bitmap options." msgstr "インラインモードは journal や bitmap オプションと一緒に使えません。" -#: src/integritysetup.c:788 +#: src/integritysetup.c:791 msgid "Inline mode cannot be combined with separate data device." msgstr "インラインモードは分離データデバイスと一緒には使えません。" +#: src/integritysetup.c:795 +msgid "Keyed discards can be enabled only with keyed algorithms like HMAC." +msgstr "キーありディスカードはHMACなどのキーを使ったアルゴリズムでのみ有効にできます。" + #: src/utils_tools.c:105 msgid "" "\n" @@ -3740,7 +3744,7 @@ msgstr "デバイスは LUKS2 復号状態にありません。オプション - msgid "Device is in reencryption using datashift resilience. Requested --resilience option cannot be applied." msgstr "デバイスはデータシフト耐性を使った再暗号化状態にあります。--resilience オプションは適用できません。" -#: src/utils_reencrypt.c:283 src/utils_reencrypt.c:1927 +#: src/utils_reencrypt.c:283 src/utils_reencrypt.c:1953 msgid "Cannot determine volume key size for LUKS without keyslots, please use --new-key-size option." msgstr "キースロットのない LUKS のボリュームキーサイズが決定できないので、--new-key-size を使ってください。" @@ -3774,7 +3778,7 @@ msgstr "" "要求された --sector-size % は %s superblock\n" "(ブロックサイズ: % バイト、デバイス %s)と互換性がありません。" -#: src/utils_reencrypt.c:680 src/utils_reencrypt.c:2207 +#: src/utils_reencrypt.c:680 src/utils_reencrypt.c:2233 msgid "Encryption without detached header (--header) is not possible without data device size reduction (--reduce-device-size)." msgstr "データデバイスサイズの縮小(--reduce-device-size)なしに分離ヘッダ(--header)による暗号化はできません。" @@ -3842,42 +3846,43 @@ msgstr "再暗号化の初期化に失敗しました。ヘッダのバックア msgid "LUKS2 decryption is supported with detached header device only (with data offset set to 0)." msgstr "LUKS2 復号は分離(detached)ヘッダデバイスしかサポートしていません(データへのオフセットが0)。" -#: src/utils_reencrypt.c:1490 -msgid "No token could unlock the device." -msgstr "デバイスをアンロックできるトークンがありません。" - -#: src/utils_reencrypt.c:1522 src/utils_reencrypt.c:1531 +#: src/utils_reencrypt.c:1506 src/utils_reencrypt.c:1531 +#: src/utils_reencrypt.c:1548 src/utils_reencrypt.c:1557 msgid "Not enough free keyslots for reencryption." msgstr "再暗号化に必要な空きキースロットがありません。" -#: src/utils_reencrypt.c:1562 +#: src/utils_reencrypt.c:1513 +msgid "No token could unlock the device." +msgstr "デバイスをアンロックできるトークンがありません。" + +#: src/utils_reencrypt.c:1588 msgid "Key file or keyring key description can be used only with --key-slot or with exactly one key slot active." msgstr "キーファイルやキーリングキー記述は --key-slot と使うか、1 つのキースロットだけアクティブの時にしか使えません。" -#: src/utils_reencrypt.c:1569 src/utils_reencrypt.c:1582 +#: src/utils_reencrypt.c:1595 src/utils_reencrypt.c:1608 #: src/utils_reencrypt_luks1.c:1092 src/utils_reencrypt_luks1.c:1103 #, c-format msgid "Enter passphrase for key slot %d: " msgstr "キースロット %d のパスフレーズを入力してください: " -#: src/utils_reencrypt.c:1879 +#: src/utils_reencrypt.c:1905 #, c-format msgid "Switching data encryption cipher to %s.\n" msgstr "データの暗号化用の暗号アルゴリズムを %s にします。\n" -#: src/utils_reencrypt.c:1980 src/utils_reencrypt.c:2001 +#: src/utils_reencrypt.c:2006 src/utils_reencrypt.c:2027 msgid "Use --force-no-keyslots to reencrypt device with active keyslots by passing volume keys directly." msgstr "アクティブキースロットがあるデバイスを再暗号化するには --force-no-keyslots を使いボリュームキーを直接渡してください。" -#: src/utils_reencrypt.c:1996 +#: src/utils_reencrypt.c:2022 msgid "Option --new-volume-key-file must be paired with --new-key-size" msgstr "--new-volume-key-file オプションは --new-key-size とペアにする必要があります。" -#: src/utils_reencrypt.c:2038 +#: src/utils_reencrypt.c:2064 msgid "No data segment parameters changed. Reencryption aborted." msgstr "データセグメントのパラメータが変わっていません。再暗号化を中止します。" -#: src/utils_reencrypt.c:2075 +#: src/utils_reencrypt.c:2101 msgid "" "Encryption sector size increase on offline device is not supported.\n" "Activate the device first or use --force-offline-reencrypt option (dangerous!)." @@ -3885,7 +3890,7 @@ msgstr "" "オフラインデバイスの暗号化セクタサイズの増加はサポートしていません。\n" "まずデバイスをアクティベートするか、--force-offline-reencrypt オプションを使ってください (ただし危険です!)。" -#: src/utils_reencrypt.c:2117 src/utils_reencrypt_luks1.c:688 +#: src/utils_reencrypt.c:2143 src/utils_reencrypt_luks1.c:688 #: src/utils_reencrypt_luks1.c:759 msgid "" "\n" @@ -3894,58 +3899,58 @@ msgstr "" "\n" "再暗号化が中断されました。" -#: src/utils_reencrypt.c:2122 +#: src/utils_reencrypt.c:2148 msgid "Resuming LUKS reencryption in forced offline mode.\n" msgstr "LUKS 再暗号化を強制オフラインモードで再開します。\n" -#: src/utils_reencrypt.c:2145 +#: src/utils_reencrypt.c:2171 #, c-format msgid "Device %s contains broken LUKS metadata. Aborting operation." msgstr "デバイス %s は壊れた LUKS メタデータを含んでいます。処理を中止します。" -#: src/utils_reencrypt.c:2161 src/utils_reencrypt.c:2183 +#: src/utils_reencrypt.c:2187 src/utils_reencrypt.c:2209 #, c-format msgid "Device %s is already LUKS device. Aborting operation." msgstr "デバイス %s は既に LUKS デバイスです。処理を中止します。" -#: src/utils_reencrypt.c:2189 +#: src/utils_reencrypt.c:2215 #, c-format msgid "Device %s is already in LUKS reencryption. Aborting operation." msgstr "デバイス %s は既に LUKS 再暗号化状態にあります。処理を中止します。" -#: src/utils_reencrypt.c:2272 +#: src/utils_reencrypt.c:2298 msgid "LUKS2 decryption requires --header option." msgstr "LUKS2 復号には --header オプションが必要です。" -#: src/utils_reencrypt.c:2320 +#: src/utils_reencrypt.c:2346 msgid "Command requires device as argument." msgstr "コマンドはデバイスを引数として必要とします。" -#: src/utils_reencrypt.c:2333 +#: src/utils_reencrypt.c:2359 #, c-format msgid "Conflicting versions. Device %s is LUKS1." msgstr "バージョンが衝突しています。デバイス %s は LUKS1 です。" -#: src/utils_reencrypt.c:2339 +#: src/utils_reencrypt.c:2365 #, c-format msgid "Conflicting versions. Device %s is in LUKS1 reencryption." msgstr "バージョンが衝突しています。デバイス %s は LUKS1 再暗号化状態にあります。" -#: src/utils_reencrypt.c:2345 +#: src/utils_reencrypt.c:2371 #, c-format msgid "Conflicting versions. Device %s is LUKS2." msgstr "バージョンが衝突しています。デバイス %s は LUKS2 です。" -#: src/utils_reencrypt.c:2351 +#: src/utils_reencrypt.c:2377 #, c-format msgid "Conflicting versions. Device %s is in LUKS2 reencryption." msgstr "バージョンが衝突しています。デバイス %s は LUKS2 再暗号化状態にあります。" -#: src/utils_reencrypt.c:2357 +#: src/utils_reencrypt.c:2383 msgid "LUKS2 reencryption already initialized. Aborting operation." msgstr "LUKS2 再暗号化が既に初期化済なので操作を中止します。" -#: src/utils_reencrypt.c:2364 +#: src/utils_reencrypt.c:2390 msgid "Device reencryption not in progress." msgstr "再暗号化処理を実行中ではありません。" From c8e72acaec5556294fa0c1397993b7176047c3d9 Mon Sep 17 00:00:00 2001 From: Seong-ho Cho Date: Fri, 4 Sep 2026 18:57:03 +0200 Subject: [PATCH 209/244] po: update ko.po (from translationproject.org) --- po/ko.po | 659 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 332 insertions(+), 327 deletions(-) diff --git a/po/ko.po b/po/ko.po index 68a9dca65..c4458dc1a 100644 --- a/po/ko.po +++ b/po/ko.po @@ -6,10 +6,10 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.7-rc2\n" +"Project-Id-Version: cryptsetup 2.8.8-rc0\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2026-07-09 10:46+0200\n" -"PO-Revision-Date: 2026-07-13 11:02+0900\n" +"POT-Creation-Date: 2026-09-02 13:18+0200\n" +"PO-Revision-Date: 2026-09-02 23:13+0900\n" "Last-Translator: Seong-ho Cho \n" "Language-Team: Korean \n" "Language: ko_KR\n" @@ -17,80 +17,80 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -"X-Generator: Poedit 3.6\n" +"X-Generator: Poedit 3.7\n" -#: lib/libdevmapper.c:419 +#: lib/libdevmapper.c:422 msgid "Cannot initialize device-mapper, running as non-root user." msgstr "device-mapper를 초기화할 수 없어, 일반 사용자로 실행합니다." -#: lib/libdevmapper.c:422 +#: lib/libdevmapper.c:425 msgid "Cannot initialize device-mapper. Is dm_mod kernel module loaded?" msgstr "device-mapper를 초기화할 수 없습니다. dm_mod 커널 모듈을 불러왔습니까?" -#: lib/libdevmapper.c:1125 +#: lib/libdevmapper.c:1129 msgid "Requested deferred flag is not supported." msgstr "요청한 유예 플래그는 지원하지 않습니다." -#: lib/libdevmapper.c:1194 +#: lib/libdevmapper.c:1198 #, c-format msgid "DM-UUID for device %s was truncated." msgstr "%s 장치의 DM-UUID가 잘렸습니다." -#: lib/libdevmapper.c:1598 +#: lib/libdevmapper.c:1602 msgid "Unknown dm target type." msgstr "알 수 없는 dm 대상 형식입니다." -#: lib/libdevmapper.c:1725 lib/libdevmapper.c:1731 lib/libdevmapper.c:1850 -#: lib/libdevmapper.c:1853 +#: lib/libdevmapper.c:1729 lib/libdevmapper.c:1735 lib/libdevmapper.c:1854 +#: lib/libdevmapper.c:1857 msgid "Requested dm-crypt performance options are not supported." msgstr "요청한 dm-crypt 성능 옵션을 지원하지 않습니다." -#: lib/libdevmapper.c:1740 lib/libdevmapper.c:1746 lib/libdevmapper.c:1758 +#: lib/libdevmapper.c:1744 lib/libdevmapper.c:1750 lib/libdevmapper.c:1762 msgid "Requested dm-verity data corruption handling options are not supported." msgstr "요청한 dm-verity 데이터 손상 처리 옵션을 지원하지 않습니다." -#: lib/libdevmapper.c:1752 +#: lib/libdevmapper.c:1756 msgid "Requested dm-verity tasklets option is not supported." msgstr "요청한 dm-verity 작업 처리 옵션을 지원하지 않습니다." -#: lib/libdevmapper.c:1764 +#: lib/libdevmapper.c:1768 msgid "Requested dm-verity FEC options are not supported." msgstr "요청한 dm-verity FEC 옵션을 지원하지 않습니다." -#: lib/libdevmapper.c:1770 +#: lib/libdevmapper.c:1774 msgid "Requested data integrity options are not supported." msgstr "요청한 데이터 무결성 옵션을 지원하지 않습니다." -#: lib/libdevmapper.c:1774 +#: lib/libdevmapper.c:1778 msgid "Requested sector_size option is not supported." msgstr "요청한 sector_size 옵션을 지원하지 않습니다." -#: lib/libdevmapper.c:1779 +#: lib/libdevmapper.c:1783 msgid "The device size is not multiple of the requested sector size." msgstr "장치 용량은 요청한 섹터 용량의 배수가 아닙니다." -#: lib/libdevmapper.c:1783 +#: lib/libdevmapper.c:1787 msgid "Requested integrity_key_size option is not supported." msgstr "요청한 integrity_key_size 옵션을 지원하지 않습니다." -#: lib/libdevmapper.c:1790 lib/libdevmapper.c:1796 +#: lib/libdevmapper.c:1794 lib/libdevmapper.c:1800 msgid "Requested automatic recalculation of integrity tags is not supported." msgstr "요청한 무결성 태그 자동 재계산을 지원하지 않습니다." -#: lib/libdevmapper.c:1802 lib/libdevmapper.c:1856 lib/libdevmapper.c:1859 -#: lib/luks2/luks2_json_metadata.c:2799 +#: lib/libdevmapper.c:1806 lib/libdevmapper.c:1860 lib/libdevmapper.c:1863 +#: lib/luks2/luks2_json_metadata.c:2791 msgid "Discard/TRIM is not supported." msgstr "버림/TRIM을 지원하지 않습니다." -#: lib/libdevmapper.c:1808 +#: lib/libdevmapper.c:1812 msgid "Requested dm-integrity bitmap mode is not supported." msgstr "요청한 dm-integrity 비트맵 모드를 지원하지 않습니다." -#: lib/libdevmapper.c:1814 +#: lib/libdevmapper.c:1818 msgid "Requested dm-integrity inline mode is not supported." msgstr "요청한 dm-integrity 인라인 모드를 지원하지 않습니다." -#: lib/libdevmapper.c:2870 +#: lib/libdevmapper.c:2877 #, c-format msgid "Failed to query dm-%s segment." msgstr "dm-%s 세그먼트 요청 실패." @@ -141,7 +141,7 @@ msgstr "암호화 RNG 백엔드를 초기화할 수 없습니다." msgid "Cannot initialize crypto backend." msgstr "암호화 백엔드를 초기화할 수 없습니다." -#: lib/setup.c:308 lib/setup.c:2769 lib/verity/verity.c:109 +#: lib/setup.c:308 lib/setup.c:2779 lib/verity/verity.c:109 #, c-format msgid "Hash algorithm %s not supported." msgstr "%s 해싱 알고리즘을 지원하지 않습니다." @@ -155,7 +155,7 @@ msgstr "키 처리 오류 (%s 해시 사용)." msgid "Cannot determine device type. Incompatible activation of device?" msgstr "장치 형식을 확인할 수 없습니다. 장치 활성 방식에 호환성이 없습니까?" -#: lib/setup.c:398 lib/setup.c:4177 +#: lib/setup.c:398 lib/setup.c:4193 msgid "This operation is supported only for LUKS device." msgstr "이 동작은 LUKS 장치에서만 지원합니다." @@ -177,7 +177,7 @@ msgstr "키 슬롯 번호 %d번이 적절하지 않습니다. 0과 %d 사이의 msgid "Key slot %d is full, please select another one." msgstr "키 슬롯 %d번이 가득 찼습니다. 다른 번호를 선택하십시오." -#: lib/setup.c:534 lib/setup.c:3878 +#: lib/setup.c:534 lib/setup.c:3888 msgid "Device size is not aligned to device logical block size." msgstr "장치 용량이 장치 논리 블록 용량에 맞지 않습니다." @@ -186,7 +186,7 @@ msgstr "장치 용량이 장치 논리 블록 용량에 맞지 않습니다." msgid "Header detected but device %s is too small." msgstr "헤더를 확인했지만 %s 장치 용량이 너무 작습니다." -#: lib/setup.c:672 lib/setup.c:3763 lib/setup.c:5272 +#: lib/setup.c:672 lib/setup.c:3773 lib/setup.c:5288 #: lib/luks2/luks2_reencrypt.c:3949 lib/luks2/luks2_reencrypt.c:4438 msgid "This operation is not supported for this device type." msgstr "이 동작은 이 장치 형식에서 지원하지 않습니다." @@ -199,553 +199,553 @@ msgstr "재 암호화 처리 과정에서 부적절한 동작을 확인했습니 msgid "Failed to rollback LUKS2 metadata in memory." msgstr "메모리에서 LUKS2 메타데이터 되돌리기 실패." -#: lib/setup.c:896 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 +#: lib/setup.c:896 lib/luks1/keymanage.c:241 lib/luks1/keymanage.c:519 #: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 #: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 #: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2954 -#: src/cryptsetup.c:3022 src/utils_reencrypt.c:2284 +#: src/cryptsetup.c:3022 src/utils_reencrypt.c:2310 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." msgstr "%s 장치는 올바른 LUKS 장치가 아닙니다." -#: lib/setup.c:899 lib/luks1/keymanage.c:517 +#: lib/setup.c:899 lib/luks1/keymanage.c:522 #, c-format msgid "Unsupported LUKS version %d." msgstr "지원하지 않는 %d 버전의 LUKS입니다." -#: lib/setup.c:1273 +#: lib/setup.c:1279 #, c-format msgid "No known cipher specification pattern detected for active device %s." msgstr "%s 활성 장치에서 알려진 암호화 명세 패턴이 없습니다." -#: lib/setup.c:1518 lib/setup.c:3510 lib/setup.c:3602 lib/setup.c:3614 -#: lib/setup.c:3786 lib/setup.c:5850 +#: lib/setup.c:1528 lib/setup.c:3520 lib/setup.c:3612 lib/setup.c:3624 +#: lib/setup.c:3796 lib/setup.c:5866 #, c-format msgid "Device %s is not active." msgstr "%s 장치는 동작 중이 아닙니다." -#: lib/setup.c:1535 +#: lib/setup.c:1545 #, c-format msgid "Underlying device for crypt device %s disappeared." msgstr "%s 암호화 장치의 기반 장치가 사라졌습니다." -#: lib/setup.c:1617 +#: lib/setup.c:1627 msgid "Invalid plain crypt parameters." msgstr "부적절한 평문 암호화 매개변수입니다." -#: lib/setup.c:1622 lib/setup.c:2672 +#: lib/setup.c:1632 lib/setup.c:2682 msgid "Invalid key size." msgstr "부적절한 키 크기입니다." -#: lib/setup.c:1627 lib/setup.c:2677 lib/setup.c:2882 +#: lib/setup.c:1637 lib/setup.c:2687 lib/setup.c:2892 msgid "UUID is not supported for this crypt type." msgstr "이 암호화 형식에서 UUID를 지원하지 않습니다." -#: lib/setup.c:1632 lib/setup.c:2682 +#: lib/setup.c:1642 lib/setup.c:2692 msgid "Detached metadata device is not supported for this crypt type." msgstr "이 암호화 형식에서 분리한 메타데이터 장치를 지원하지 않습니다." -#: lib/setup.c:1642 lib/setup.c:1890 lib/luks2/luks2_reencrypt.c:3035 +#: lib/setup.c:1652 lib/setup.c:1900 lib/luks2/luks2_reencrypt.c:3035 #: src/cryptsetup.c:1492 src/cryptsetup.c:3761 msgid "Unsupported encryption sector size." msgstr "지원하지 않는 암호화 섹터 크기입니다." -#: lib/setup.c:1650 lib/setup.c:1919 lib/setup.c:3872 +#: lib/setup.c:1660 lib/setup.c:1929 lib/setup.c:3882 msgid "Device size is not aligned to requested sector size." msgstr "장치 용량이 요청한 섹터 용량과 맞지 않습니다." -#: lib/setup.c:1702 lib/setup.c:1954 lib/setup.c:2331 +#: lib/setup.c:1712 lib/setup.c:1964 lib/setup.c:2341 msgid "Can't format LUKS without device." msgstr "장치가 없는 상황에서 LUKS를 포매팅할 수 없습니다." -#: lib/setup.c:1707 lib/setup.c:1959 +#: lib/setup.c:1717 lib/setup.c:1969 #, c-format msgid "Zoned device %s cannot be used for LUKS header." msgstr "%s 구역 지정 장치를 LUKS 헤더에 사용할 수 없습니다." -#: lib/setup.c:1714 lib/setup.c:1966 lib/setup.c:2337 +#: lib/setup.c:1724 lib/setup.c:1976 lib/setup.c:2347 msgid "Requested data alignment is not compatible with data offset." msgstr "요청한 데이터 정렬 동작은 데이터 오프셋과 호환성이 없습니다." -#: lib/setup.c:1754 lib/setup.c:1984 +#: lib/setup.c:1764 lib/setup.c:1994 msgid "WARNING: DAX device can corrupt data as it does not guarantee atomic sector updates.\n" msgstr "경고: DAX 장치는 최소 단위 섹터 갱신을 보증할 수 없으므로 데이터를 파괴할 수 있습니다.\n" -#: lib/setup.c:1792 lib/setup.c:2091 lib/setup.c:2112 lib/setup.c:2520 -#: lib/setup.c:2567 lib/setup.c:2899 +#: lib/setup.c:1802 lib/setup.c:2101 lib/setup.c:2122 lib/setup.c:2530 +#: lib/setup.c:2577 lib/setup.c:2909 #, c-format msgid "Cannot wipe header on device %s." msgstr "%s 장치의 헤더를 소거할 수 없습니다." -#: lib/setup.c:1805 lib/setup.c:2164 +#: lib/setup.c:1815 lib/setup.c:2174 #, c-format msgid "Device %s is too small for activation, there is no remaining space for data.\n" msgstr "%s 장치를 활성화하기에 너무 작습니다. 데이터를 둘 만한 여분 공간이 없습니다.\n" -#: lib/setup.c:1846 +#: lib/setup.c:1856 msgid "Volume key is too small for encryption with integrity extensions." msgstr "볼륨 키 크기가 무결성 확장을 동반한 암호화를 처리하기에 너무 작습니다." -#: lib/setup.c:1850 +#: lib/setup.c:1860 msgid "Integrity key size is too small." msgstr "무결성 키 크기가 너무 작습니다." -#: lib/setup.c:1859 +#: lib/setup.c:1869 #, c-format msgid "Cipher %s-%s (key size %zd bits) is not available." msgstr "암호화 알고리즘 %s-%s(%zd비트 키 크기)을(를) 사용할 수 없습니다." -#: lib/setup.c:1900 +#: lib/setup.c:1910 msgid "WARNING: The device activation will fail, dm-crypt is missing support for requested encryption sector size.\n" msgstr "경고: 장치 활성에 실패합니다. dm-crypt에 요청한 암호화 섹터 크기 지원이 빠졌습니다.\n" -#: lib/setup.c:2094 lib/setup.c:2461 lib/setup.c:2523 lib/utils_device.c:906 +#: lib/setup.c:2104 lib/setup.c:2471 lib/setup.c:2533 lib/utils_device.c:906 #: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3074 #: lib/luks2/luks2_reencrypt.c:4498 #, c-format msgid "Device %s is too small." msgstr "%s 장치 용량이 너무 작습니다." -#: lib/setup.c:2105 lib/setup.c:2144 lib/setup.c:2560 lib/setup.c:2618 +#: lib/setup.c:2115 lib/setup.c:2154 lib/setup.c:2570 lib/setup.c:2628 #, c-format msgid "Cannot format device %s in use." msgstr "사용 중인 %s 장치를 포매팅할 수 없습니다." -#: lib/setup.c:2108 lib/setup.c:2147 lib/setup.c:2563 lib/setup.c:2621 +#: lib/setup.c:2118 lib/setup.c:2157 lib/setup.c:2573 lib/setup.c:2631 #, c-format msgid "Cannot format device %s, permission denied." msgstr "%s 장치를 포매팅할 수 없습니다. 권한 거부함." -#: lib/setup.c:2132 lib/setup.c:2590 lib/setup.c:2972 +#: lib/setup.c:2142 lib/setup.c:2600 lib/setup.c:2982 #, c-format msgid "Cannot format integrity for device %s." msgstr "%s 장치의 무결성을 포매팅할 수 없습니다." -#: lib/setup.c:2151 lib/setup.c:2629 +#: lib/setup.c:2161 lib/setup.c:2639 #, c-format msgid "Cannot format device %s." msgstr "%s 장치를 포매팅할 수 없습니다." -#: lib/setup.c:2194 +#: lib/setup.c:2204 msgid "Cannot get OPAL alignment parameters." msgstr "OPAL 정렬 매개변수를 가져올 수 없습니다." -#: lib/setup.c:2206 +#: lib/setup.c:2216 msgid "Bogus OPAL logical block size." msgstr "위조한 OPAL 논리 블록 크기입니다." -#: lib/setup.c:2211 lib/luks2/hw_opal/hw_opal.c:305 +#: lib/setup.c:2221 lib/luks2/hw_opal/hw_opal.c:305 msgid "Bogus OPAL logical block size differs from device block size." msgstr "위조한 OPAL 논리 블록 크기가 장치 블록 크기와 다릅니다." -#: lib/setup.c:2217 +#: lib/setup.c:2227 msgid "Requested data offset is not compatible with OPAL block size." msgstr "요청한 데이터 오프셋의 호환성이 OPAL 블록 크기와 맞지 않습니다." -#: lib/setup.c:2224 +#: lib/setup.c:2234 msgid "Requested data alignment is not compatible with OPAL alignment." msgstr "요청한 데이터 정렬 호환성이 OPAL 정렬과 맞지 않습니다." -#: lib/setup.c:2244 +#: lib/setup.c:2254 msgid "Data offset does not satisfy OPAL alignment requirements." msgstr "데이터 오프셋이 OPAL 정렬 요구 사항을 만족하지 않습니다." -#: lib/setup.c:2257 +#: lib/setup.c:2267 msgid "Requested data alignment does not satisfy locking range alignment requirements." msgstr "요청한 데이터 정렬이 잠금 범위 정렬 요구 사항을 만족하지 않습니다." -#: lib/setup.c:2471 +#: lib/setup.c:2481 #, c-format msgid "Compensating device size by % sectors to align it with OPAL alignment granularity." msgstr "OPAL 정렬 분할성에 맞추기 위해 장치 용량을 % 섹터 보정합니다." -#: lib/setup.c:2531 lib/setup.c:4260 lib/setup.c:4466 lib/utils_wipe.c:356 -#: lib/luks2/luks2_json_metadata.c:2742 lib/luks2/luks2_json_metadata.c:3017 +#: lib/setup.c:2541 lib/setup.c:4276 lib/setup.c:4482 lib/utils_wipe.c:356 +#: lib/luks2/luks2_json_metadata.c:2734 lib/luks2/luks2_json_metadata.c:3009 #, c-format msgid "Failed to acquire OPAL lock on device %s." msgstr "%s 장치에서 OPAL 잠금 획득 실패." -#: lib/setup.c:2541 +#: lib/setup.c:2551 msgid "Incorrect OPAL Admin key." msgstr "올바르지 않은 OPAL 관리자 키입니다." -#: lib/setup.c:2543 +#: lib/setup.c:2553 msgid "Cannot setup OPAL segment." msgstr "OPAL 세그먼트를 설정할 수 없습니다." -#: lib/setup.c:2625 +#: lib/setup.c:2635 #, c-format msgid "Cannot format device %s, OPAL device seems to be fully write-protected now." msgstr "%s 장치를 포매팅할 수 없습니다. OPAL 장치가 완전히 쓰기 방지 상태인 것 같습니다." -#: lib/setup.c:2627 +#: lib/setup.c:2637 msgid "This is perhaps a bug in firmware. Run OPAL PSID reset and reconnect for recovery." msgstr "펌웨어 버그인 것 같습니다. 복원하려면 OPAL PSID를 초기화하고 다시 연결하십시오." -#: lib/setup.c:2647 +#: lib/setup.c:2657 #, c-format msgid "Locking range %d reset on device %s failed." msgstr "%2$s 장치 초기화 중 %1$d 범위 잠금 실패." -#: lib/setup.c:2667 +#: lib/setup.c:2677 msgid "Can't format LOOPAES without device." msgstr "장치 없이 LOOPAES를 포매팅할 수 없습니다." -#: lib/setup.c:2712 +#: lib/setup.c:2722 msgid "Can't format VERITY without device." msgstr "장치 없이 VERITY를 포매팅할 수 없습니다." -#: lib/setup.c:2723 lib/verity/verity.c:88 +#: lib/setup.c:2733 lib/verity/verity.c:88 #, c-format msgid "Unsupported VERITY hash type %d." msgstr "지원하지 않는 %d번 VERITY 해시 형식입니다." -#: lib/setup.c:2729 lib/verity/verity.c:96 +#: lib/setup.c:2739 lib/verity/verity.c:96 msgid "Unsupported VERITY block size." msgstr "지원하지 않는 VERITY 블록 크기입니다." -#: lib/setup.c:2734 lib/verity/verity.c:61 +#: lib/setup.c:2744 lib/verity/verity.c:61 msgid "Unsupported VERITY hash offset." msgstr "지원하지 않는 VERITY 해시 오프셋입니다." -#: lib/setup.c:2739 +#: lib/setup.c:2749 msgid "Unsupported VERITY FEC offset." msgstr "지원하지 않는 VERITY FEC 오프셋입니다." -#: lib/setup.c:2763 +#: lib/setup.c:2773 msgid "Data area overlaps with hash area." msgstr "데이터 영역이 해시 영역과 겹칩니다." -#: lib/setup.c:2788 +#: lib/setup.c:2798 msgid "Hash area overlaps with FEC area." msgstr "해시 영역이 FEC 영역과 겹칩니다." -#: lib/setup.c:2795 +#: lib/setup.c:2805 msgid "Data area overlaps with FEC area." msgstr "데이터 영역이 FEC 영역과 겹칩니다." -#: lib/setup.c:2887 +#: lib/setup.c:2897 msgid "Integrity key size mismatch." msgstr "무결성 키 크기가 일치하지 않습니다." -#: lib/setup.c:2938 +#: lib/setup.c:2948 #, c-format msgid "WARNING: Requested tag size %d bytes differs from %s size output (%d bytes).\n" msgstr "경고: 요청한 태그 크기 %d바이트가 %s의 크기 출력 (%d바이트)과 다릅니다.\n" -#: lib/setup.c:3051 lib/setup.c:3153 +#: lib/setup.c:3061 lib/setup.c:3163 #, c-format msgid "Unknown or unsupported device type %s requested." msgstr "알 수 없는 또는 지원하지 않는 %s 장치 형식을 요청했습니다." -#: lib/setup.c:3067 +#: lib/setup.c:3077 #, c-format msgid "Device %s does not provide inline integrity data fields." msgstr "%s 장치에서 인라인 무결성 데이터 필드를 제공하지 않습니다." -#: lib/setup.c:3073 +#: lib/setup.c:3083 #, c-format msgid "Inline tag size % [bytes] is larger than % provided by device %s." msgstr "%1$ [바이트] 인라인 태그 크기가 %3$s 장치에서 지정한 %2$ 값보다 큽니다." -#: lib/setup.c:3088 +#: lib/setup.c:3098 #, c-format msgid "Sector must be the same as device hardware sector (%zu bytes)." msgstr "섹터 값은 장치 하드웨어 섹터 값(%zu 바이트)과 같아야 합니다." -#: lib/setup.c:3518 lib/setup.c:3607 lib/setup.c:3620 +#: lib/setup.c:3528 lib/setup.c:3617 lib/setup.c:3630 #, c-format msgid "Unsupported parameters on device %s." msgstr "%s 장치에서 지원하지 않는 매개변수입니다." -#: lib/setup.c:3524 lib/setup.c:3627 lib/luks2/luks2_reencrypt.c:2929 +#: lib/setup.c:3534 lib/setup.c:3637 lib/luks2/luks2_reencrypt.c:2929 #: lib/luks2/luks2_reencrypt.c:3198 lib/luks2/luks2_reencrypt.c:3595 #, c-format msgid "Mismatching parameters on device %s." msgstr "%s 장치에서 일치하지 않는 매개변수입니다." -#: lib/setup.c:3650 +#: lib/setup.c:3660 msgid "Crypt devices mismatch." msgstr "암호화 장치가 일치하지 않습니다." -#: lib/setup.c:3682 lib/setup.c:3687 lib/luks2/luks2_reencrypt.c:2413 +#: lib/setup.c:3692 lib/setup.c:3697 lib/luks2/luks2_reencrypt.c:2413 #: lib/luks2/luks2_reencrypt.c:2945 lib/luks2/luks2_reencrypt.c:4237 #, c-format msgid "Failed to reload device %s." msgstr "%s 장치 다시 불러오기 실패." -#: lib/setup.c:3693 lib/setup.c:3699 lib/luks2/luks2_reencrypt.c:2383 +#: lib/setup.c:3703 lib/setup.c:3709 lib/luks2/luks2_reencrypt.c:2383 #: lib/luks2/luks2_reencrypt.c:2390 lib/luks2/luks2_reencrypt.c:2959 #, c-format msgid "Failed to suspend device %s." msgstr "%s 장치 대기 상태 전환 실패." -#: lib/setup.c:3705 lib/luks2/luks2_reencrypt.c:2397 +#: lib/setup.c:3715 lib/luks2/luks2_reencrypt.c:2397 #: lib/luks2/luks2_reencrypt.c:2980 lib/luks2/luks2_reencrypt.c:4150 #: lib/luks2/luks2_reencrypt.c:4241 #, c-format msgid "Failed to resume device %s." msgstr "%s 장치 상태 복귀 실패." -#: lib/setup.c:3720 +#: lib/setup.c:3730 #, c-format msgid "Fatal error while reloading device %s (on top of device %s)." msgstr "%s 장치(%s 장치 위)를 다시 불러오는 동안 치명적 오류가 있습니다." -#: lib/setup.c:3723 lib/setup.c:3725 +#: lib/setup.c:3733 lib/setup.c:3735 #, c-format msgid "Failed to switch device %s to dm-error." msgstr "%s 장치의 dm-error 전환 실패." -#: lib/setup.c:3768 +#: lib/setup.c:3778 msgid "Can not resize LUKS2 device with static size." msgstr "LUKS2 장치 크기를 정적 크기로 바꿀 수 없습니다." -#: lib/setup.c:3773 +#: lib/setup.c:3783 msgid "Resize of LUKS2 device with integrity protection is not supported." msgstr "무결성 보호 기능이 있는 LUKS2 장치의 크기 변경을 지원하지 않습니다." -#: lib/setup.c:3819 +#: lib/setup.c:3829 msgid "Cannot resize loop device." msgstr "루프 장치의 크기를 바꿀 수 없습니다." -#: lib/setup.c:3863 +#: lib/setup.c:3873 msgid "WARNING: Maximum size already set or kernel doesn't support resize.\n" msgstr "경고: 최대 크기를 이미 설정했거나 커널에서 크기 변경을 지원하지 않습니다.\n" -#: lib/setup.c:3929 +#: lib/setup.c:3939 msgid "Resize failed, the kernel doesn't support it." msgstr "크기 변경 실패. 커널에서 지원하지 않습니다." -#: lib/setup.c:3961 +#: lib/setup.c:3971 msgid "Do you really want to change UUID of device?" msgstr "정말로 장치 UUID를 바꾸시겠습니까?" -#: lib/setup.c:4053 +#: lib/setup.c:4061 lib/setup.c:4069 msgid "Header backup file does not contain compatible LUKS header." msgstr "헤더 백업 파일에 호환 LUKS 헤더가 없습니다." -#: lib/setup.c:4160 +#: lib/setup.c:4176 #, c-format msgid "Volume %s is not active." msgstr "%s 볼륨이 동작 중이 아닙니다." -#: lib/setup.c:4215 +#: lib/setup.c:4231 #, c-format msgid "Volume %s is already suspended." msgstr "%s 볼륨이 이미 대기 상태에 있습니다." -#: lib/setup.c:4241 +#: lib/setup.c:4257 #, c-format msgid "Suspend is not supported for device %s." msgstr "%s 장치에서 대기 상태 전환을 지원하지 않습니다." -#: lib/setup.c:4243 lib/setup.c:4251 +#: lib/setup.c:4259 lib/setup.c:4267 #, c-format msgid "Error during suspending device %s." msgstr "%s 장치 대기 상태 전환 중 오류가 있습니다." -#: lib/setup.c:4266 +#: lib/setup.c:4282 #, c-format msgid "Device %s was suspended but hardware OPAL device cannot be locked." msgstr "%s 장치를 대기 상태로 전환했으나 하드웨어 OPAL 장치를 잠글 수 없습니다." -#: lib/setup.c:4297 lib/setup.c:4491 +#: lib/setup.c:4313 lib/setup.c:4507 #, c-format msgid "Resume is not supported for device %s." msgstr "%s 장치에서 상태 복귀를 지원하지 않습니다." -#: lib/setup.c:4299 lib/setup.c:4481 lib/setup.c:4493 +#: lib/setup.c:4315 lib/setup.c:4497 lib/setup.c:4509 #, c-format msgid "Error during resuming device %s." msgstr "%s 장치 상태 복귀 중 오류가 있습니다." -#: lib/setup.c:4335 +#: lib/setup.c:4351 msgid "Failed to unlink volume key from user specified keyring." msgstr "사용자 지정 키 모음으로의 볼륨 키 연결 해제 실패." -#: lib/setup.c:4457 lib/setup.c:5637 +#: lib/setup.c:4473 lib/setup.c:5653 msgid "Failed to link volume key in user defined keyring." msgstr "사용자 지정 키 모음으로의 볼륨 키 연결 실패." -#: lib/setup.c:4556 src/cryptsetup.c:2722 +#: lib/setup.c:4572 src/cryptsetup.c:2722 #, c-format msgid "Volume %s is not suspended." msgstr "%s 볼륨은 대기 상태가 아닙니다." -#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1856 +#: lib/setup.c:4683 lib/setup.c:7326 lib/setup.c:7348 src/cryptsetup.c:1856 #: src/cryptsetup.c:2260 src/cryptsetup.c:2278 src/utils_reencrypt.c:306 -#: src/utils_reencrypt.c:1969 +#: src/utils_reencrypt.c:1995 msgid "Volume key does not match the volume." msgstr "볼륨 키가 볼륨과 맞지 않습니다." -#: lib/setup.c:4821 +#: lib/setup.c:4837 msgid "Failed to swap new key slot." msgstr "새 키 슬롯 교환 실패." -#: lib/setup.c:4919 +#: lib/setup.c:4935 #, c-format msgid "Key slot %d is invalid." msgstr "%d번 키 슬롯이 적절하지 않습니다." -#: lib/setup.c:4925 src/cryptsetup.c:1977 src/cryptsetup.c:2437 +#: lib/setup.c:4941 src/cryptsetup.c:1977 src/cryptsetup.c:2437 #: src/cryptsetup.c:3122 src/cryptsetup.c:3182 #, c-format msgid "Keyslot %d is not active." msgstr "%d번 키 슬롯은 동작 중이 아닙니다." -#: lib/setup.c:4944 +#: lib/setup.c:4960 msgid "Device header overlaps with data area." msgstr "장치 헤더가 데이터 영역과 겹칩니다." -#: lib/setup.c:5165 +#: lib/setup.c:5181 msgid "Reencryption in-progress. Cannot activate device." msgstr "재암호화를 진행 중입니다. 장치를 동작하게 할 수 없습니다." -#: lib/setup.c:5167 lib/luks2/luks2_json_metadata.c:2913 +#: lib/setup.c:5183 lib/luks2/luks2_json_metadata.c:2905 #: lib/luks2/luks2_reencrypt.c:3726 msgid "Failed to get reencryption lock." msgstr "재 암호화 잠금 가져오기 실패." -#: lib/setup.c:5189 +#: lib/setup.c:5205 msgid "LUKS2 reencryption recovery using volume key(s) failed." msgstr "볼륨 키를 활용한 LUKS2 재 암호화 복원 실패." -#: lib/setup.c:5325 +#: lib/setup.c:5341 #, c-format msgid "Device %s already exists." msgstr "%s 장치가 이미 있습니다." -#: lib/setup.c:5332 +#: lib/setup.c:5348 #, c-format msgid "Cannot use device %s, name is invalid or still in use." msgstr "%s 장치를 사용할 수 없습니다. 명칭이 부적절하거나 여전히 사용중입니다." -#: lib/setup.c:5344 +#: lib/setup.c:5360 msgid "Reencryption volume keys do not match the volume." msgstr "재암호화 볼륨 키가 볼륨과 일치하지 않습니다." -#: lib/setup.c:5361 +#: lib/setup.c:5377 msgid "Incorrect volume key specified for plain device." msgstr "원시 장치에 올바르지 않은 볼륨 키를 지정했습니다." -#: lib/setup.c:5387 lib/setup.c:5448 +#: lib/setup.c:5403 lib/setup.c:5464 msgid "Device type is not properly initialized." msgstr "장치 형식을 제대로 초기화하지 않았습니다." -#: lib/setup.c:5486 +#: lib/setup.c:5502 msgid "Kernel keyring is not supported by the kernel." msgstr "커널 키 모음은 커널에서 지원하지 않습니다." -#: lib/setup.c:5490 +#: lib/setup.c:5506 msgid "Kernel keyring missing: required for passing signature to kernel." msgstr "커널 키 모음 빠짐: 커널에 시그니처 전달에 필요합니다." -#: lib/setup.c:5545 +#: lib/setup.c:5561 #, c-format msgid "Cannot use keyring key %s." msgstr "%s 키 모음 키를 사용할 수 없습니다." -#: lib/setup.c:5758 +#: lib/setup.c:5774 msgid "Incorrect root hash specified for verity device." msgstr "검증 장치에 올바르지 않은 루트 해시를 지정했습니다." -#: lib/setup.c:5799 lib/setup.c:5824 +#: lib/setup.c:5815 lib/setup.c:5840 msgid "OPAL does not support deferred deactivation." msgstr "OPAL은 지연된 동작 상태 해제를 지원하지 않습니다." -#: lib/setup.c:5814 lib/setup.c:5845 lib/luks2/luks2_json_metadata.c:2978 +#: lib/setup.c:5830 lib/setup.c:5861 lib/luks2/luks2_json_metadata.c:2970 #: src/utils_reencrypt.c:89 #, c-format msgid "Device %s is still in use." msgstr "%s 장치를 여전히 사용중입니다." -#: lib/setup.c:5832 +#: lib/setup.c:5848 #, c-format msgid "Could not cancel deferred remove from device %s." msgstr "%s 장치에서 지연된 제거 동작을 취소할 수 없습니다." -#: lib/setup.c:5854 +#: lib/setup.c:5870 #, c-format msgid "Invalid device %s." msgstr "부적절한 %s 장치입니다." -#: lib/setup.c:6001 +#: lib/setup.c:6017 msgid "Volume key buffer too small." msgstr "볼륨 키 버퍼가 너무 작습니다." -#: lib/setup.c:6012 +#: lib/setup.c:6028 msgid "Cannot retrieve volume key for LUKS2 device." msgstr "LUKS2 장치에 볼륨 키를 넣을 수 없습니다." -#: lib/setup.c:6021 +#: lib/setup.c:6037 msgid "Cannot retrieve volume key for LUKS1 device." msgstr "LUKS1 장치에 볼륨 키를 넣을 수 없습니다." -#: lib/setup.c:6035 +#: lib/setup.c:6051 msgid "Cannot retrieve volume key for plain device." msgstr "원시 장치에 볼륨 키를 넣을 수 없습니다." -#: lib/setup.c:6043 +#: lib/setup.c:6059 msgid "Cannot retrieve root hash for verity device." msgstr "검증 장치에 루트 해시를 넣을 수 없습니다." -#: lib/setup.c:6052 +#: lib/setup.c:6068 msgid "Cannot retrieve volume key for BITLK device." msgstr "BITLK 장치에 볼륨 키를 넣을 수 없습니다." -#: lib/setup.c:6057 +#: lib/setup.c:6073 msgid "Cannot retrieve volume key for FVAULT2 device." msgstr "FVAULT2 장치에 볼륨 키를 넣을 수 없습니다." -#: lib/setup.c:6059 +#: lib/setup.c:6075 #, c-format msgid "This operation is not supported for %s crypt device." msgstr "이 동작은 %s 암호화 장치에서 지원하지 않습니다." -#: lib/setup.c:6244 lib/setup.c:6255 +#: lib/setup.c:6260 lib/setup.c:6271 msgid "Dump operation is not supported for this device type." msgstr "덤프 동작은 이 장치 형식에서 지원하지 않습니다." -#: lib/setup.c:6635 +#: lib/setup.c:6651 #, c-format msgid "Data offset is not multiple of %u bytes." msgstr "데이터 오프셋은 %u바이트의 배수가 아닙니다." -#: lib/setup.c:6943 +#: lib/setup.c:6959 #, c-format msgid "Cannot convert device %s which is still in use." msgstr "여전히 사용중인 %s 장치를 변환할 수 없습니다." -#: lib/setup.c:7251 lib/setup.c:7406 +#: lib/setup.c:7267 lib/setup.c:7422 #, c-format msgid "Failed to assign keyslot %u as the new volume key." msgstr "새 볼륨 키 %u번 키 슬롯 할당 실패." -#: lib/setup.c:7275 +#: lib/setup.c:7291 msgid "Failed to initialize default LUKS2 keyslot parameters." msgstr "기본 LUKS2 키 슬롯 매개변수 초기화 실패." -#: lib/setup.c:7281 +#: lib/setup.c:7297 #, c-format msgid "Failed to assign keyslot %d to digest." msgstr "키 슬롯 %d번 다이제스트 할당 실패." -#: lib/setup.c:7523 +#: lib/setup.c:7539 msgid "Cannot add key slot, all slots disabled and no volume key provided." msgstr "키 슬롯을 추가할 수 없습니다. 모든 슬롯을 사용할 수 없으며, 볼륨 키를 지정하지 않았습니다." -#: lib/setup.c:7611 lib/setup.c:7626 lib/verity/verity.c:333 +#: lib/setup.c:7627 lib/setup.c:7642 lib/verity/verity.c:333 msgid "Failed to load key in kernel keyring." msgstr "커널 키 모음에서 키 불러오기 실패." -#: lib/setup.c:7807 +#: lib/setup.c:7823 #, c-format msgid "Could not find keyring described by \"%s\"." msgstr "\"%s\"에서 설명하는 키 모음을 찾을 수 없습니다." -#: lib/setup.c:7872 +#: lib/setup.c:7888 msgid "Failed to acquire global memory-hard access serialization lock." msgstr "전역 메모리-하드 액세스 직렬화 잠금 취득 실패." @@ -787,7 +787,7 @@ msgid "Cannot read requested amount of data." msgstr "요청한 양의 데이터를 읽을 수 없습니다." #: lib/utils_device.c:207 lib/utils_storage_wrappers.c:99 -#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2257 +#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2283 #, c-format msgid "Device %s does not exist or access denied." msgstr "%s 장치가 없거나 접근이 막혔습니다." @@ -903,16 +903,16 @@ msgstr "요청한 PBKDF 병렬 처리 스레드 값은 0일 수 없습니다." msgid "Only PBKDF2 is supported in FIPS mode." msgstr "FIPS 모드에서는 PBKDF2만 지원합니다." -#: lib/utils_benchmark.c:171 +#: lib/utils_benchmark.c:175 msgid "PBKDF benchmark disabled but iterations not set." msgstr "PBKDF 벤치마킹은 동작하지 않지만 반복 횟수는 설정하지 않았습니다." -#: lib/utils_benchmark.c:190 +#: lib/utils_benchmark.c:194 #, c-format msgid "Not compatible PBKDF2 options (using hash algorithm %s)." msgstr "PBKDF2 옵션의 호환성이 없습니다 (%s 해시 알고리즘 활용)." -#: lib/utils_benchmark.c:210 +#: lib/utils_benchmark.c:214 msgid "Not compatible PBKDF options." msgstr "PBKDF 옵션 호환성이 없습니다." @@ -961,9 +961,9 @@ msgstr "XTS모드의 키 크기는 256비트 또는 512비트여야 합니다." msgid "Cipher specification should be in [cipher]-[mode]-[iv] format." msgstr "암호화 방식 명세는 [cipher]-[mode]-[iv] 형식이어야 합니다." -#: lib/luks1/keyencryption.c:85 lib/luks1/keymanage.c:353 -#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1132 -#: lib/luks2/luks2_json_metadata.c:1518 lib/luks2/luks2_keyslot.c:711 +#: lib/luks1/keyencryption.c:85 lib/luks1/keymanage.c:358 +#: lib/luks1/keymanage.c:665 lib/luks1/keymanage.c:1133 +#: lib/luks2/luks2_json_metadata.c:1510 lib/luks2/luks2_keyslot.c:711 #, c-format msgid "Cannot write to device %s, permission denied." msgstr "%s 장치에 기록할 수 없습니다. 권한 거부." @@ -981,13 +981,13 @@ msgstr "임시 키 스토어 장치 접근 실패." msgid "IO error while encrypting keyslot." msgstr "키 슬롯 암호화 중 입출력 오류." -#: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:356 -#: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:659 +#: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:361 +#: lib/luks1/keymanage.c:619 lib/luks1/keymanage.c:668 lib/tcrypt/tcrypt.c:659 #: lib/fvault2/fvault2.c:872 lib/verity/verity.c:67 lib/verity/verity.c:183 #: lib/verity/verity_hash.c:312 lib/verity/verity_hash.c:321 #: lib/verity/verity_hash.c:350 lib/verity/verity_fec.c:247 #: lib/verity/verity_fec.c:259 lib/verity/verity_fec.c:264 -#: lib/luks2/luks2_json_metadata.c:1521 src/utils_reencrypt_luks1.c:108 +#: lib/luks2/luks2_json_metadata.c:1513 src/utils_reencrypt_luks1.c:108 #: src/utils_reencrypt_luks1.c:120 #, c-format msgid "Cannot open device %s." @@ -1002,61 +1002,61 @@ msgstr "키 슬롯을 해독하는 중 입출력 오류." msgid "Device %s is too small. (LUKS1 requires at least % bytes.)" msgstr "%s 장치 크기가 너무 작습니다 (LUKS1 은 최소 % 바이트가 필요)." -#: lib/luks1/keymanage.c:138 lib/luks1/keymanage.c:146 -#: lib/luks1/keymanage.c:158 lib/luks1/keymanage.c:169 -#: lib/luks1/keymanage.c:181 +#: lib/luks1/keymanage.c:143 lib/luks1/keymanage.c:151 +#: lib/luks1/keymanage.c:163 lib/luks1/keymanage.c:174 +#: lib/luks1/keymanage.c:186 #, c-format msgid "LUKS keyslot %u is invalid." msgstr "LUKS 키 슬롯 %u번이 적절하지 않습니다." -#: lib/luks1/keymanage.c:254 lib/luks2/luks2_json_metadata.c:1382 +#: lib/luks1/keymanage.c:259 lib/luks2/luks2_json_metadata.c:1382 #, c-format msgid "Requested header backup file %s already exists." msgstr "요청한 %s 헤더 백업 파일이 이미 있습니다." -#: lib/luks1/keymanage.c:256 lib/luks2/luks2_json_metadata.c:1384 +#: lib/luks1/keymanage.c:261 lib/luks2/luks2_json_metadata.c:1384 #, c-format msgid "Cannot create header backup file %s." msgstr "%s 헤더 백업 파일을 만들 수 없습니다." -#: lib/luks1/keymanage.c:263 lib/luks2/luks2_json_metadata.c:1391 +#: lib/luks1/keymanage.c:268 lib/luks2/luks2_json_metadata.c:1391 #, c-format msgid "Cannot write header backup file %s." msgstr "%s 헤더 백업 파일을 기록할 수 없습니다." -#: lib/luks1/keymanage.c:295 lib/luks2/luks2_json_metadata.c:1428 +#: lib/luks1/keymanage.c:300 lib/luks2/luks2_json_metadata.c:1420 msgid "Backup file does not contain valid LUKS header." msgstr "백업 파일에 적절한 LUKS 헤더가 없습니다." -#: lib/luks1/keymanage.c:308 lib/luks1/keymanage.c:580 -#: lib/luks2/luks2_json_metadata.c:1450 +#: lib/luks1/keymanage.c:313 lib/luks1/keymanage.c:585 +#: lib/luks2/luks2_json_metadata.c:1442 #, c-format msgid "Cannot open header backup file %s." msgstr "%s 헤더 백업 파일을 열 수 없습니다." -#: lib/luks1/keymanage.c:316 lib/luks2/luks2_json_metadata.c:1458 +#: lib/luks1/keymanage.c:321 lib/luks2/luks2_json_metadata.c:1450 #, c-format msgid "Cannot read header backup file %s." msgstr "%s 헤더 백업 파일을 읽을 수 없습니다." -#: lib/luks1/keymanage.c:326 +#: lib/luks1/keymanage.c:331 msgid "Data offset or key size differs on device and backup, restore failed." msgstr "장치와 백업의 데이터 오프셋 또는 키 크기가 다릅니다. 복구 실패." -#: lib/luks1/keymanage.c:334 +#: lib/luks1/keymanage.c:339 #, c-format msgid "Device %s %s%s" msgstr "%s 장치 %s%s" -#: lib/luks1/keymanage.c:335 +#: lib/luks1/keymanage.c:340 msgid "does not contain LUKS header. Replacing header can destroy data on that device." msgstr "LUKS 헤더가 없습니다. 헤더를 교체하면 장치 데이터가 깨질 수 있습니다." -#: lib/luks1/keymanage.c:336 +#: lib/luks1/keymanage.c:341 msgid "already contains LUKS header. Replacing header will destroy existing keyslots." msgstr "LUKS 헤더가 이미 있습니다. 헤더를 교체하면 기존 키 슬롯이 깨질 수 있습니다." -#: lib/luks1/keymanage.c:337 lib/luks2/luks2_json_metadata.c:1490 +#: lib/luks1/keymanage.c:342 lib/luks2/luks2_json_metadata.c:1482 msgid "" "\n" "WARNING: real device header has different UUID than backup!" @@ -1064,130 +1064,130 @@ msgstr "" "\n" "경고: 실제 장치 헤더에 백업 때와 다른 UUID가 있습니다!" -#: lib/luks1/keymanage.c:385 +#: lib/luks1/keymanage.c:390 msgid "Non standard key size, manual repair required." msgstr "비 표준 키 길이, 직접 복구가 필요합니다." -#: lib/luks1/keymanage.c:395 +#: lib/luks1/keymanage.c:400 msgid "Non standard keyslots alignment, manual repair required." msgstr "비 표준 키 슬롯 정렬, 직접 복구가 필요합니다." -#: lib/luks1/keymanage.c:404 +#: lib/luks1/keymanage.c:409 #, c-format msgid "Cipher mode repaired (%s -> %s)." msgstr "암호화 방식 모드를 복구했습니다 (%s -> %s)." -#: lib/luks1/keymanage.c:415 +#: lib/luks1/keymanage.c:420 #, c-format msgid "Cipher hash repaired to lowercase (%s)." msgstr "암호화 방식 해시를 소문자로 복구했습니다 (%s)." -#: lib/luks1/keymanage.c:417 lib/luks1/keymanage.c:523 -#: lib/luks1/keymanage.c:756 +#: lib/luks1/keymanage.c:422 lib/luks1/keymanage.c:528 +#: lib/luks1/keymanage.c:757 #, c-format msgid "Requested LUKS hash %s is not supported." msgstr "요청한 %s LUKS 해시는 지원하지 않습니다." -#: lib/luks1/keymanage.c:431 +#: lib/luks1/keymanage.c:436 msgid "Repairing keyslots." msgstr "키 슬롯을 복원합니다." -#: lib/luks1/keymanage.c:450 +#: lib/luks1/keymanage.c:455 #, c-format msgid "Keyslot %i: offset repaired (%u -> %u)." msgstr "키 슬롯 %i: 오프셋을 복원했습니다 (%u -> %u)." -#: lib/luks1/keymanage.c:458 +#: lib/luks1/keymanage.c:463 #, c-format msgid "Keyslot %i: stripes repaired (%u -> %u)." msgstr "키 슬롯 %i: 스트라이프를 복원했습니다 (%u -> %u)." -#: lib/luks1/keymanage.c:467 +#: lib/luks1/keymanage.c:472 #, c-format msgid "Keyslot %i: bogus partition signature." msgstr "키 슬롯 %i: 위조한 분할 영역 시그니처입니다." -#: lib/luks1/keymanage.c:472 +#: lib/luks1/keymanage.c:477 #, c-format msgid "Keyslot %i: salt wiped." msgstr "키 슬롯 %i: 솔트 값을 소거했습니다." -#: lib/luks1/keymanage.c:489 +#: lib/luks1/keymanage.c:494 msgid "Writing LUKS header to disk." msgstr "LUKS 헤더를 디스크에 기록합니다." -#: lib/luks1/keymanage.c:494 +#: lib/luks1/keymanage.c:499 msgid "Repair failed." msgstr "복구 실패." -#: lib/luks1/keymanage.c:549 +#: lib/luks1/keymanage.c:554 #, c-format msgid "LUKS cipher mode %s is invalid." msgstr "LUKS 암호화 방식 모드 %s이(가) 적절하지 않습니다." -#: lib/luks1/keymanage.c:554 +#: lib/luks1/keymanage.c:559 #, c-format msgid "LUKS hash %s is invalid." msgstr "%s LUKS 해시가 적절하지 않습니다." -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 +#: lib/luks1/keymanage.c:566 src/cryptsetup.c:1367 msgid "No known problems detected for LUKS header." msgstr "LUKS 헤더에 알려진 문제가 없습니다." -#: lib/luks1/keymanage.c:689 +#: lib/luks1/keymanage.c:690 #, c-format msgid "Error during update of LUKS header on device %s." msgstr "%s 장치의 LUKS 헤더 업데이트 중 오류가 있습니다." -#: lib/luks1/keymanage.c:697 +#: lib/luks1/keymanage.c:698 #, c-format msgid "Error re-reading LUKS header after update on device %s." msgstr "%s 장치 업데이트 후 LUKS 헤더 다시 읽기 오류" -#: lib/luks1/keymanage.c:750 +#: lib/luks1/keymanage.c:751 msgid "Data offset for LUKS header must be either 0 or higher than header size." msgstr "LUKS 헤더용 데이터 오프셋은 0 또는 헤더 길이보다 더 큰 값이어야 합니다." -#: lib/luks1/keymanage.c:761 lib/luks1/keymanage.c:832 -#: lib/luks2/luks2_json_format.c:231 lib/luks2/luks2_json_metadata.c:1261 +#: lib/luks1/keymanage.c:762 lib/luks1/keymanage.c:833 +#: lib/luks2/luks2_json_format.c:240 lib/luks2/luks2_json_metadata.c:1261 #: src/utils_reencrypt.c:703 msgid "Wrong LUKS UUID format provided." msgstr "잘못된 LUKS UUID 형식을 지정했습니다." -#: lib/luks1/keymanage.c:783 +#: lib/luks1/keymanage.c:784 msgid "Cannot create LUKS header: reading random salt failed." msgstr "LUKS 헤더를 만들 수 없음: 임의 솔트 값 읽기 실패." -#: lib/luks1/keymanage.c:811 +#: lib/luks1/keymanage.c:812 #, c-format msgid "Cannot create LUKS header: header digest failed (using hash %s)." msgstr "LUKS 헤더를 만들 수 없음: 헤더 다이제스트 실패 (%s 해시 사용)." -#: lib/luks1/keymanage.c:856 +#: lib/luks1/keymanage.c:857 #, c-format msgid "Key slot %d active, purge first." msgstr "%d번 키 슬롯이 동작 중입니다. 우선 제거하십시오." -#: lib/luks1/keymanage.c:862 +#: lib/luks1/keymanage.c:863 #, c-format msgid "Key slot %d material includes too few stripes. Header manipulation?" msgstr "%d번 키 슬롯의 스트라이프가 너무 적습니다. 헤더를 조작했습니까?" -#: lib/luks1/keymanage.c:900 lib/luks2/luks2_keyslot_luks2.c:217 +#: lib/luks1/keymanage.c:901 lib/luks2/luks2_keyslot_luks2.c:217 msgid "PBKDF2 iteration value overflow." msgstr "PBKDF2 반복 값이 지정 범위를 넘었습니다." -#: lib/luks1/keymanage.c:1022 +#: lib/luks1/keymanage.c:1023 #, c-format msgid "Cannot open keyslot (using hash %s)." msgstr "키 슬롯을 열 수 없습니다 (%s 해시 사용)." -#: lib/luks1/keymanage.c:1118 +#: lib/luks1/keymanage.c:1119 #, c-format msgid "Key slot %d is invalid, please select keyslot between 0 and %d." msgstr "키 슬롯 번호 %d번이 적절하지 않습니다. 0에서 %d 사이 값 중 하나로 키 슬롯을 선택하십시오." -#: lib/luks1/keymanage.c:1136 lib/luks2/luks2_keyslot.c:715 +#: lib/luks1/keymanage.c:1137 lib/luks2/luks2_keyslot.c:715 #, c-format msgid "Cannot wipe device %s." msgstr "%s 장치를 소거할 수 없습니다." @@ -1365,33 +1365,33 @@ msgstr "이 동작은 지원하지 않습니다." msgid "Unexpected key data size." msgstr "예기치 않은 키 데이터 크기." -#: lib/bitlk/bitlk.c:1442 +#: lib/bitlk/bitlk.c:1448 msgid "This BITLK device is in an unsupported state and cannot be activated." msgstr "이 BITLK 장치는 지원하지 않는 상태이며, 동작을 시작할 수 없습니다." -#: lib/bitlk/bitlk.c:1447 +#: lib/bitlk/bitlk.c:1453 #, c-format msgid "BITLK devices with type '%s' cannot be activated." msgstr "'%s' 형식의 BITLK 장치의 동작을 시작할 수 없습니다." -#: lib/bitlk/bitlk.c:1486 +#: lib/bitlk/bitlk.c:1492 #, c-format msgid "WARNING: BitLocker volume size % does not match the underlying device size %" msgstr "경고: 비트로커 볼륨 크기 %가 하부 장치 크기 %와 일치하지 않습니다" -#: lib/bitlk/bitlk.c:1613 +#: lib/bitlk/bitlk.c:1634 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK IV." msgstr "장치 동작을 개시할 수 없습니다. 커널 dm-crypt 에 BITLK IV 지원이 빠졌습니다." -#: lib/bitlk/bitlk.c:1617 +#: lib/bitlk/bitlk.c:1638 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK Elephant diffuser." msgstr "장치 동작을 개시할 수 없습니다. 커널 dm-crypt에 BITLK 엘레펀트 diffuser 지원이 빠졌습니다." -#: lib/bitlk/bitlk.c:1621 +#: lib/bitlk/bitlk.c:1642 msgid "Cannot activate device, kernel dm-crypt is missing support for large sector size." msgstr "장치 동작을 개시할 수 없습니다. 커널 dm-crypt 에 거대 섹터 크기 지원이 빠졌습니다." -#: lib/bitlk/bitlk.c:1625 +#: lib/bitlk/bitlk.c:1646 msgid "Cannot activate device, kernel dm-zero module is missing." msgstr "장치 동작을 개시할 수 없습니다. 커널 dm-zero 모듈이 빠졌습니다." @@ -1548,24 +1548,24 @@ msgstr "%s 장치 크기 확인 실패." msgid "Incompatible kernel dm-integrity metadata (version %u) detected on %s." msgstr "%2$s에서 커널의 비호환 dm-integrity 메타데이터(버전 %1$u)를 찾았습니다." -#: lib/integrity/integrity.c:308 lib/integrity/integrity.c:492 +#: lib/integrity/integrity.c:309 lib/integrity/integrity.c:493 msgid "Kernel does not support dm-integrity mapping." msgstr "커널에서 dm-integrity 매핑을 지원하지 않습니다" -#: lib/integrity/integrity.c:314 +#: lib/integrity/integrity.c:315 msgid "Kernel does not support dm-integrity fixed metadata alignment." msgstr "커널에서 dm-integrity 고정 메타데이터 정렬을 지원하지 않습니다." -#: lib/integrity/integrity.c:323 +#: lib/integrity/integrity.c:324 msgid "Kernel refuses to activate insecure recalculate option (see legacy activation options to override)." msgstr "커널에서 안전하지 않은 재계산 옵션 동작 개시를 거부했습니다 (그래도 실행하려면 이전 동작 개시 옵션 참고)." -#: lib/integrity/integrity.c:329 +#: lib/integrity/integrity.c:330 msgid "Kernel does not support dm-integrity inline mode." msgstr "커널에서 dm-integrity 인라인 모드를 지원하지 않습니다." #: lib/luks2/luks2_disk_metadata.c:382 lib/luks2/luks2_json_metadata.c:1184 -#: lib/luks2/luks2_json_metadata.c:1510 +#: lib/luks2/luks2_json_metadata.c:1502 #, c-format msgid "Failed to acquire write lock on device %s." msgstr "%s 장치의 쓰기 잠금 획득 실패." @@ -1587,22 +1587,22 @@ msgstr "" msgid "WARNING: keyslots area (% bytes) is very small, available LUKS2 keyslot count is very limited.\n" msgstr "경고: 키 슬롯 영역(% 바이트)이 너무 작아서, 가능한 LUKS2 키 슬롯 수가 매우 제한적입니다.\n" -#: lib/luks2/luks2_json_format.c:418 +#: lib/luks2/luks2_json_format.c:427 msgid "Requested data offset is too small." msgstr "요청 데이터 오프셋 값이 너무 작습니다." -#: lib/luks2/luks2_json_format.c:459 +#: lib/luks2/luks2_json_format.c:468 #, c-format msgid "WARNING: LUKS2 metadata size changed to % bytes.\n" msgstr "경고: LUKS2 메타데이터 크기가 % 바이트로 바뀌었습니다.\n" -#: lib/luks2/luks2_json_format.c:463 +#: lib/luks2/luks2_json_format.c:472 #, c-format msgid "WARNING: LUKS2 keyslots area size changed to % bytes.\n" msgstr "경고: LUKS2 키 슬롯 영역 크기가 % 바이트로 바뀌었습니다.\n" #: lib/luks2/luks2_json_metadata.c:1171 lib/luks2/luks2_json_metadata.c:1357 -#: lib/luks2/luks2_json_metadata.c:1417 lib/luks2/luks2_keyslot_luks2.c:71 +#: lib/luks2/luks2_json_metadata.c:1412 lib/luks2/luks2_keyslot_luks2.c:71 #, c-format msgid "Failed to acquire read lock on device %s." msgstr "%s 장치의 잠금 읽기 획득 실패." @@ -1611,33 +1611,33 @@ msgstr "%s 장치의 잠금 읽기 획득 실패." msgid "Label is too long." msgstr "레이블이 너무 깁니다." -#: lib/luks2/luks2_json_metadata.c:1435 +#: lib/luks2/luks2_json_metadata.c:1427 #, c-format msgid "Forbidden LUKS2 requirements detected in backup %s." msgstr "%s 백업에서 금지하고 있는 LUKS2 요구 사항을 확인했습니다." -#: lib/luks2/luks2_json_metadata.c:1474 +#: lib/luks2/luks2_json_metadata.c:1466 msgid "Data offset differ on device and backup, restore failed." msgstr "장치와 백업 간 데이터 오프셋이 다릅니다. 복원 실패." -#: lib/luks2/luks2_json_metadata.c:1480 +#: lib/luks2/luks2_json_metadata.c:1472 msgid "Binary header with keyslot areas size differ on device and backup, restore failed." msgstr "장치와 백업간 키 슬롯 영역이 들어간 바이너리 헤더 크기가 다릅니다. 복구 실패." -#: lib/luks2/luks2_json_metadata.c:1487 +#: lib/luks2/luks2_json_metadata.c:1479 #, c-format msgid "Device %s %s%s%s%s" msgstr "%s 장치 %s%s%s%s" -#: lib/luks2/luks2_json_metadata.c:1488 +#: lib/luks2/luks2_json_metadata.c:1480 msgid "does not contain LUKS2 header. Replacing header can destroy data on that device." msgstr "LUKS2 헤더가 없습니다. 헤더 내용을 바꾸면 장치의 데이터가 깨질 수 있습니다." -#: lib/luks2/luks2_json_metadata.c:1489 +#: lib/luks2/luks2_json_metadata.c:1481 msgid "already contains LUKS2 header. Replacing header will destroy existing keyslots." msgstr "이미 LUKS2 헤더가 있습니다. 헤더 내용을 바꾸면 기존 키 슬롯이 깨집니다." -#: lib/luks2/luks2_json_metadata.c:1491 +#: lib/luks2/luks2_json_metadata.c:1483 msgid "" "\n" "WARNING: unknown LUKS2 requirements detected in real device header!\n" @@ -1647,7 +1647,7 @@ msgstr "" "경고: 알 수 없는 LUKS2 요구사항을 실제 장치 헤더에서 찾았습니다!\n" "헤더 내용을 바꾸면 해당 장치의 데이터가 깨질 수도 있습니다!" -#: lib/luks2/luks2_json_metadata.c:1493 +#: lib/luks2/luks2_json_metadata.c:1485 msgid "" "\n" "WARNING: Unfinished offline reencryption detected on the device!\n" @@ -1657,84 +1657,84 @@ msgstr "" "경고: 끝내지 않은 오프라인 재암호화를 장치에서 확인했습니다!\n" "헤더를 백업 내용으로 바뀌면 데이터가 깨잘 수도 있습니다." -#: lib/luks2/luks2_json_metadata.c:1591 +#: lib/luks2/luks2_json_metadata.c:1583 #, c-format msgid "Ignored unknown flag %s." msgstr "알 수 없는 %s 플래그를 무시했습니다." -#: lib/luks2/luks2_json_metadata.c:2563 lib/luks2/luks2_reencrypt.c:2110 +#: lib/luks2/luks2_json_metadata.c:2555 lib/luks2/luks2_reencrypt.c:2110 #, c-format msgid "Missing key for dm-crypt segment %u" msgstr "dm-crypt 세그먼트 %u번에 키 빠짐" -#: lib/luks2/luks2_json_metadata.c:2575 lib/luks2/luks2_reencrypt.c:2123 +#: lib/luks2/luks2_json_metadata.c:2567 lib/luks2/luks2_reencrypt.c:2123 msgid "Failed to set dm-crypt segment." msgstr "dm-crypt 세그먼트 설정 실패." -#: lib/luks2/luks2_json_metadata.c:2581 lib/luks2/luks2_reencrypt.c:2129 +#: lib/luks2/luks2_json_metadata.c:2573 lib/luks2/luks2_reencrypt.c:2129 msgid "Failed to set dm-linear segment." msgstr "dm-linear 세그먼트 설정 실패." -#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:580 +#: lib/luks2/luks2_json_metadata.c:2693 src/utils_reencrypt.c:580 msgid "No known cipher specification pattern detected in LUKS2 header." msgstr "LUKS2 헤더에서 찾은 알려진 암호화 방식 명세 패턴이 없습니다." -#: lib/luks2/luks2_json_metadata.c:2709 +#: lib/luks2/luks2_json_metadata.c:2701 msgid "OPAL device must have static device size." msgstr "OPAL 장치에 정적 장치 크기 정보가 들어가야 합니다." -#: lib/luks2/luks2_json_metadata.c:2729 +#: lib/luks2/luks2_json_metadata.c:2721 msgid "Encrypted OPAL device with integrity must be smaller than locking range." msgstr "무결성 정보를 지닌 암호화한 OPAL 장치는 잠금 범위보다 작아야 합니다." -#: lib/luks2/luks2_json_metadata.c:2734 +#: lib/luks2/luks2_json_metadata.c:2726 msgid "OPAL device must have same size as locking range." msgstr "OPAL 장치는 잠금 범위와 같은 크기를 지녀야 합니다." -#: lib/luks2/luks2_json_metadata.c:2754 +#: lib/luks2/luks2_json_metadata.c:2746 #, c-format msgid "OPAL device is %s already unlocked.\n" msgstr "OPAN 장치는 %s(이)며, 이미 잠금을 해제했습니다.\n" -#: lib/luks2/luks2_json_metadata.c:2793 +#: lib/luks2/luks2_json_metadata.c:2785 msgid "Unsupported device integrity configuration." msgstr "지원하지 않는 장치 무결성 설정." -#: lib/luks2/luks2_json_metadata.c:2809 +#: lib/luks2/luks2_json_metadata.c:2801 msgid "Underlying dm-integrity device with unexpected provided data sectors." msgstr "dm-integrity 장치 기저에 예기치 못한 지정 데이터 섹터가 있습니다." -#: lib/luks2/luks2_json_metadata.c:2911 +#: lib/luks2/luks2_json_metadata.c:2903 msgid "Reencryption in-progress. Cannot deactivate device." msgstr "재암호화 진행 중입니다. 장치 동작 상태를 해제할 수 없습니다." -#: lib/luks2/luks2_json_metadata.c:2922 lib/luks2/luks2_reencrypt.c:4287 +#: lib/luks2/luks2_json_metadata.c:2914 lib/luks2/luks2_reencrypt.c:4287 #, c-format msgid "Failed to replace suspended device %s with dm-error target." msgstr "대기 상태에 있는 %s 장치의 dm-error 타겟 전환 실패." -#: lib/luks2/luks2_json_metadata.c:3001 lib/luks2/luks2_json_metadata.c:3023 +#: lib/luks2/luks2_json_metadata.c:2993 lib/luks2/luks2_json_metadata.c:3015 #, c-format msgid "Device %s was deactivated but hardware OPAL device cannot be locked." msgstr "%s 장치의 동작 상태를 해제했지만 OPAL 장치 하드웨어를 잠글 수는 없습니다." -#: lib/luks2/luks2_json_metadata.c:3045 +#: lib/luks2/luks2_json_metadata.c:3037 msgid "Unmet LUKS2 requirements detected." msgstr "LUKS2 요구 사항의 불만족 요소를 확인했습니다." -#: lib/luks2/luks2_json_metadata.c:3053 +#: lib/luks2/luks2_json_metadata.c:3045 msgid "Operation incompatible with device marked for legacy reencryption. Aborting." msgstr "이전 재암호화 마킹한 장치의 동작 호환성이 없습니다. 멈춤." -#: lib/luks2/luks2_json_metadata.c:3055 +#: lib/luks2/luks2_json_metadata.c:3047 msgid "Operation incompatible with device marked for LUKS2 reencryption. Aborting." msgstr "LUKS2 재암호화 마킹한 장치의 동작 호환성이 없습니다. 멈춤." -#: lib/luks2/luks2_json_metadata.c:3057 +#: lib/luks2/luks2_json_metadata.c:3049 msgid "Operation incompatible with device using OPAL. Aborting." msgstr "OPAL을 활용하는 장치의 동작 호환성이 없습니다. 멈춤." -#: lib/luks2/luks2_json_metadata.c:3059 +#: lib/luks2/luks2_json_metadata.c:3051 msgid "Operation incompatible with device using inline HW tags. Aborting." msgstr "인라인 하드웨어 태그를 사용하는 장치의 동작 호환성이 없습니다. 멈춤." @@ -1801,60 +1801,60 @@ msgstr "LUKS2 키 슬롯에 %s-%s 암호화 방식 명세를 활용할 수 없 msgid "Unable to move keyslot area. Not enough space." msgstr "키 슬롯 영역을 이동할 수 없습니다. 공간이 부족함." -#: lib/luks2/luks2_luks1_convert.c:619 +#: lib/luks2/luks2_luks1_convert.c:627 msgid "Cannot convert to LUKS2 format - invalid metadata." msgstr "LUKS2 형식으로 변환할 수 없습니다 - 부적절한 메타데이터." -#: lib/luks2/luks2_luks1_convert.c:636 +#: lib/luks2/luks2_luks1_convert.c:644 msgid "Unable to move keyslot area. LUKS2 keyslots area too small." msgstr "키 슬롯 영역을 이동할 수 없습니다. LUKS2 키 슬롯 영역이 너무 작습니다." -#: lib/luks2/luks2_luks1_convert.c:642 lib/luks2/luks2_luks1_convert.c:972 +#: lib/luks2/luks2_luks1_convert.c:650 lib/luks2/luks2_luks1_convert.c:980 msgid "Unable to move keyslot area." msgstr "키 슬롯 영역을 옮길 수 없습니다." -#: lib/luks2/luks2_luks1_convert.c:757 +#: lib/luks2/luks2_luks1_convert.c:765 msgid "Cannot convert to LUKS1 format - default segment encryption sector size is not 512 bytes." msgstr "LUKS1 형식으로 변환할 수 없음 - 기본 세그먼트 암호화 섹터 크기가 512바이트가 아닙니다." -#: lib/luks2/luks2_luks1_convert.c:765 +#: lib/luks2/luks2_luks1_convert.c:773 msgid "Cannot convert to LUKS1 format - key slot digests are not LUKS1 compatible." msgstr "LUKS1 형식으로 변환할 수 없음 - 키 슬롯 다이제스트가 LUKS1과 호환성이 없습니다." -#: lib/luks2/luks2_luks1_convert.c:779 +#: lib/luks2/luks2_luks1_convert.c:787 #, c-format msgid "Cannot convert to LUKS1 format - device uses wrapped key cipher %s." msgstr "LUKS1 형식으로 변환할 수 없음 - 장치에서 래핑 키 암호화 방식 %s을(를) 사용하고 있습니다." -#: lib/luks2/luks2_luks1_convert.c:784 +#: lib/luks2/luks2_luks1_convert.c:792 msgid "Cannot convert to LUKS1 format - device uses more segments." msgstr "LUKS1 형식으로 변환할 수 없음 - 장치에서 더 많은 세그먼트가 있습니다." -#: lib/luks2/luks2_luks1_convert.c:792 +#: lib/luks2/luks2_luks1_convert.c:800 #, c-format msgid "Cannot convert to LUKS1 format - LUKS2 header contains %u token(s)." msgstr "LUKS1 형식으로 변환할 수 없음 - LUKS2 헤더에 토근 %u개가 있습니다." -#: lib/luks2/luks2_luks1_convert.c:798 +#: lib/luks2/luks2_luks1_convert.c:806 msgid "Cannot convert to LUKS1 format - there are no active keyslots." msgstr "LUKS1 형식으로 변환할 수 없음 - 동작 중인 키 슬롯이 없습니다." -#: lib/luks2/luks2_luks1_convert.c:810 +#: lib/luks2/luks2_luks1_convert.c:818 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is in invalid state." msgstr "LUKS1 형식으로 변환할 수 없음 - %u번 키 슬롯이 적절하지 않은 상태에 있습니다." -#: lib/luks2/luks2_luks1_convert.c:815 +#: lib/luks2/luks2_luks1_convert.c:823 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is unbound." msgstr "LUKS1 형식으로 변환할 수 없음 - %u번 키 슬롯이 범위 밖에 있습니다." -#: lib/luks2/luks2_luks1_convert.c:820 +#: lib/luks2/luks2_luks1_convert.c:828 #, c-format msgid "Cannot convert to LUKS1 format - slot %u (over maximum slots) is still active." msgstr "LUKS1 형식으로 변환할 수 없음 - %u번 슬롯(최대 슬롯 범위 밖)이 여전히 동작중입니다." -#: lib/luks2/luks2_luks1_convert.c:825 +#: lib/luks2/luks2_luks1_convert.c:833 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is not LUKS1 compatible." msgstr "LUKS1 형식으로 변환할 수 없음 - %u번 키 슬롯이 LUKS1과 호환성이 없습니다." @@ -2139,7 +2139,7 @@ msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encry msgstr "키 슬롯 암호화 매개변수는 LUKS2 키 슬롯 암호화 과정과 호환성이 없습니다." #: src/cryptsetup.c:150 src/cryptsetup.c:1180 src/cryptsetup.c:1545 -#: src/utils_reencrypt.c:1890 src/utils_reencrypt_luks1.c:502 +#: src/utils_reencrypt.c:1916 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." msgstr "확인한 암호화 방식 명세 패턴 중 알려진 항목이 없습니다." @@ -2167,7 +2167,7 @@ msgid "WARNING: The --keyfile-size option is being ignored, the read size is the msgstr "경고: 읽기 대상 크기가 암호화 키 크기와 동일한 상황에서는 --keyfile-size 옵션을 무시합니다.\n" #: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 -#: src/integritysetup.c:189 src/utils_reencrypt.c:2141 +#: src/integritysetup.c:189 src/utils_reencrypt.c:2167 #, c-format msgid "Blkid scan failed for %s." msgstr "%s의 blkid 검사 실패." @@ -2247,7 +2247,7 @@ msgstr "%s 장치는 적절한 FVAULT2 장치가 아닙니다." msgid "Cannot determine volume key size for FVAULT2, please use --key-size option." msgstr "FVAULT2 볼륨 키 크기를 확인할 수 없습니다. --key-size 옵션을 활용하십시오." -#: src/cryptsetup.c:849 src/veritysetup.c:317 src/integritysetup.c:422 +#: src/cryptsetup.c:849 src/veritysetup.c:317 src/integritysetup.c:424 #, c-format msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "%s 장치는 여전히 동작중이며 지연된 제거 동작에 따라 제거 예정입니다.\n" @@ -2436,7 +2436,7 @@ msgid "LUKS file container %s is too small for activation, there is no remaining msgstr "%s LUKS 파일 컨테이너의 동작을 개시하기에는 너무 작습니다. 데이터 저장에 필요한 여분 공간이 없습니다." #: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:278 -#: src/utils_reencrypt.c:371 src/utils_reencrypt.c:1910 +#: src/utils_reencrypt.c:371 src/utils_reencrypt.c:1936 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "키 슬롯을 누락한 상태에서 LUKS의 볼륨 키 크기를 알 수 없습니다. --key-size 옵션을 사용하십시오." @@ -2731,7 +2731,7 @@ msgstr "--volume-key-keyring 옵션은 --hash 옵션 또는 --volume-key-file msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "--volume-key-file 옵션 개별 지정에 따라 --key-size 옵션을 하나씩 짝으로 지정해야 합니다." -#: src/cryptsetup.c:3373 src/veritysetup.c:673 src/integritysetup.c:793 +#: src/cryptsetup.c:3373 src/veritysetup.c:673 src/integritysetup.c:800 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "--cancel-deferred 옵션과 --deferred 옵션은 혼용할 수 없습니다." @@ -2799,21 +2799,21 @@ msgstr "동작에 지정 키 슬롯이 필요합니다. --key-slot 매개변수 msgid " [--type ] []" msgstr "<장치> [--type <형식>] [<명칭>]" -#: src/cryptsetup.c:3482 src/veritysetup.c:487 src/integritysetup.c:560 +#: src/cryptsetup.c:3482 src/veritysetup.c:487 src/integritysetup.c:563 msgid "open device as " msgstr "<명칭> 으로 장치를 엽니다" #: src/cryptsetup.c:3483 src/cryptsetup.c:3484 src/cryptsetup.c:3485 -#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:561 -#: src/integritysetup.c:562 src/integritysetup.c:564 +#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:564 +#: src/integritysetup.c:565 src/integritysetup.c:567 msgid "" msgstr "<명칭>" -#: src/cryptsetup.c:3483 src/veritysetup.c:488 src/integritysetup.c:561 +#: src/cryptsetup.c:3483 src/veritysetup.c:488 src/integritysetup.c:564 msgid "close device (remove mapping)" msgstr "장치를 닫습니다 (매핑 제거)" -#: src/cryptsetup.c:3484 src/integritysetup.c:564 +#: src/cryptsetup.c:3484 src/integritysetup.c:567 msgid "resize active device" msgstr "활성 장치 크기를 조절합니다." @@ -2941,7 +2941,7 @@ msgstr " <장치>" msgid "Manipulate LUKS2 tokens" msgstr "LUKS2 토큰을 처리합니다" -#: src/cryptsetup.c:3527 src/veritysetup.c:505 src/integritysetup.c:579 +#: src/cryptsetup.c:3527 src/veritysetup.c:505 src/integritysetup.c:582 msgid "" "\n" " is one of:\n" @@ -3042,7 +3042,7 @@ msgstr "" msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: XTS 모드에서의 기본 키 크기(내부 키 2개)가 2배로 늘어납니다.\n" -#: src/cryptsetup.c:3594 src/veritysetup.c:647 src/integritysetup.c:739 +#: src/cryptsetup.c:3594 src/veritysetup.c:647 src/integritysetup.c:742 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: %s 인자 값이 필요합니다" @@ -3093,31 +3093,31 @@ msgstr "--priority 옵션은 ignore/normal/prefer 셋 중 한가지 값만 지 msgid "Invalid maximal tries specification." msgstr "부적절한 최대 시도 지정 값입니다." -#: src/cryptsetup.c:3793 src/veritysetup.c:568 src/integritysetup.c:659 +#: src/cryptsetup.c:3793 src/veritysetup.c:568 src/integritysetup.c:662 msgid "Show this help message" msgstr "이 도움말 메시지를 나타냅니다" -#: src/cryptsetup.c:3794 src/veritysetup.c:569 src/integritysetup.c:660 +#: src/cryptsetup.c:3794 src/veritysetup.c:569 src/integritysetup.c:663 msgid "Display brief usage" msgstr "간단한 사용법을 나타냅니다" -#: src/cryptsetup.c:3795 src/veritysetup.c:570 src/integritysetup.c:661 +#: src/cryptsetup.c:3795 src/veritysetup.c:570 src/integritysetup.c:664 msgid "Print package version" msgstr "패키지 버전을 출력합니다" -#: src/cryptsetup.c:3806 src/veritysetup.c:581 src/integritysetup.c:672 +#: src/cryptsetup.c:3806 src/veritysetup.c:581 src/integritysetup.c:675 msgid "Help options:" msgstr "도움말 옵션:" -#: src/cryptsetup.c:3829 src/veritysetup.c:602 src/integritysetup.c:692 +#: src/cryptsetup.c:3829 src/veritysetup.c:602 src/integritysetup.c:695 msgid "[OPTION...] " msgstr "[옵션...] <동작> <동작별_옵션>" -#: src/cryptsetup.c:3838 src/veritysetup.c:611 src/integritysetup.c:703 +#: src/cryptsetup.c:3838 src/veritysetup.c:611 src/integritysetup.c:706 msgid "Argument missing." msgstr "<동작> 인자가 빠졌습니다." -#: src/cryptsetup.c:3917 src/veritysetup.c:642 src/integritysetup.c:734 +#: src/cryptsetup.c:3917 src/veritysetup.c:642 src/integritysetup.c:737 msgid "Unknown action." msgstr "알 수 없는 동작." @@ -3222,7 +3222,7 @@ msgstr "명령에 <루트_해시> 또는 --root-hash-file 옵션 인자 값이 msgid " " msgstr "<데이터_장치> <해시_장치>" -#: src/veritysetup.c:485 src/integritysetup.c:559 +#: src/veritysetup.c:485 src/integritysetup.c:562 msgid "format device" msgstr "장치를 포매팅합니다" @@ -3238,7 +3238,7 @@ msgstr "장치를 검증합니다" msgid " []" msgstr "<데이터_장치> <명칭> <해시_장치> [<루트_해시>]" -#: src/veritysetup.c:489 src/integritysetup.c:562 +#: src/veritysetup.c:489 src/integritysetup.c:565 msgid "show active device status" msgstr "장치 동작 상황을 보여줍니다" @@ -3246,7 +3246,7 @@ msgstr "장치 동작 상황을 보여줍니다" msgid "" msgstr "<해시_장치>" -#: src/veritysetup.c:490 src/integritysetup.c:563 +#: src/veritysetup.c:490 src/integritysetup.c:566 msgid "show on-disk information" msgstr "디스크 정보를 보여줍니다" @@ -3310,20 +3310,20 @@ msgstr " (인라인 hw 태그)" msgid "Setting recalculate flag is not supported, you may consider using --wipe instead." msgstr "재계산 플래그 설정은 지원하지 않습니다. --wipe 옵션 사용을 대신 고려하십시오." -#: src/integritysetup.c:382 src/integritysetup.c:546 +#: src/integritysetup.c:382 src/integritysetup.c:549 #, c-format msgid "Device %s is not a valid INTEGRITY device." msgstr "%s 장치는 적절한 \"무결성\" 장치가 아닙니다." -#: src/integritysetup.c:559 src/integritysetup.c:563 +#: src/integritysetup.c:562 src/integritysetup.c:566 msgid "" msgstr "<무결성_장치>" -#: src/integritysetup.c:560 +#: src/integritysetup.c:563 msgid " " msgstr "<무결성_장치> <명칭>" -#: src/integritysetup.c:583 +#: src/integritysetup.c:586 #, c-format msgid "" "\n" @@ -3334,7 +3334,7 @@ msgstr "" "<명칭> 은 %s에 만들 장치\n" "<무결성_장치>는 무결성 태그와 데이터가 들어간 장치입니다\n" -#: src/integritysetup.c:588 +#: src/integritysetup.c:591 #, c-format msgid "" "\n" @@ -3347,51 +3347,55 @@ msgstr "" "\t체크섬 알고리즘: %s\n" "\t최대 키 파일 크기: %dkB\n" -#: src/integritysetup.c:645 +#: src/integritysetup.c:648 #, c-format msgid "Invalid --%s size. Maximum is %u bytes." msgstr "부적절한 --%s 크기 값입니다. 최대값은 %u 바이트입니다." -#: src/integritysetup.c:748 +#: src/integritysetup.c:751 msgid "Both key file and key size options must be specified." msgstr "키 파일과 키 크기 옵션을 함께 지정해야 합니다." -#: src/integritysetup.c:752 +#: src/integritysetup.c:755 msgid "Both journal integrity key file and key size options must be specified." msgstr "저널 무결성 키와 키 크키 옵션을 함께 지정해야 합니다." -#: src/integritysetup.c:755 +#: src/integritysetup.c:758 msgid "Journal integrity algorithm must be specified if journal integrity key is used." msgstr "저널 무결성 키를 사용한다면 저널 무결성 알고리즘은 지정해야 합니다." -#: src/integritysetup.c:759 +#: src/integritysetup.c:762 msgid "Both journal encryption key file and key size options must be specified." msgstr "저널 암호화 키 파일과 키 크기 옵션을 함께 지정해야 합니다." -#: src/integritysetup.c:762 +#: src/integritysetup.c:765 msgid "Journal encryption algorithm must be specified if journal encryption key is used." msgstr "저널 암호화 키를 사용할 경우 저널 암호화 알고리즘을 지정해야 합니다." -#: src/integritysetup.c:766 +#: src/integritysetup.c:769 msgid "Recovery and bitmap mode options are mutually exclusive." msgstr "복구 및 비트맵 모드 옵션은 혼용할 수 없습니다." -#: src/integritysetup.c:773 +#: src/integritysetup.c:776 msgid "Journal options cannot be used in bitmap mode." msgstr "저널 옵션은 비트맵 모드에서 사용할 수 없습니다." -#: src/integritysetup.c:778 +#: src/integritysetup.c:781 msgid "Bitmap options can be used only in bitmap mode." msgstr "비트맵 옵션은 비트맵 모드에서만 사용할 수 있습니다." -#: src/integritysetup.c:784 +#: src/integritysetup.c:787 msgid "Inline mode cannot be combined with journal or bitmap options." msgstr "인라인 모드는 저널 옵션 또는 비트맵 옵션과 혼용할 수 없습니다." -#: src/integritysetup.c:788 +#: src/integritysetup.c:791 msgid "Inline mode cannot be combined with separate data device." msgstr "인라인 모드는 개별 데이터 장치와 혼용할 수 없습니다." +#: src/integritysetup.c:795 +msgid "Keyed discards can be enabled only with keyed algorithms like HMAC." +msgstr "키 지정 상태에서의 버림 기능은 HMAC 유사 키 지정 알고리즘에서만 사용할 수 있습니다." + #: src/utils_tools.c:105 msgid "" "\n" @@ -3742,7 +3746,7 @@ msgstr "LUKS2 암호화 장치가 아닙니다. --decrypt 옵션의 사용이 msgid "Device is in reencryption using datashift resilience. Requested --resilience option cannot be applied." msgstr "데이터 쉬프트 복원 기능을 활용하여 장치를 재암호화중입니다. 요청한 --resilience 옵션을 적용할 수 없습니다." -#: src/utils_reencrypt.c:283 src/utils_reencrypt.c:1927 +#: src/utils_reencrypt.c:283 src/utils_reencrypt.c:1953 msgid "Cannot determine volume key size for LUKS without keyslots, please use --new-key-size option." msgstr "키 슬롯을 제외하고 LUKS 볼륨 키 크기를 확인할 수 없습니다. --new-key-size 옵션을 활용하십시오." @@ -3776,7 +3780,7 @@ msgstr "" "요청한 --sector-size %1$ 옵션은 %4$s 장치에서 찾은\n" "%2$s 수퍼블록(블록 크기: %3$바이트)과의 호환성이 없습니다." -#: src/utils_reencrypt.c:680 src/utils_reencrypt.c:2207 +#: src/utils_reencrypt.c:680 src/utils_reencrypt.c:2233 msgid "Encryption without detached header (--header) is not possible without data device size reduction (--reduce-device-size)." msgstr "분리 헤더(--header)를 제외한 암호화는 데이터 장치 용량을 줄이지 않고는(--reduce-device-size) 불가능합니다." @@ -3844,42 +3848,43 @@ msgstr "재엄호화 초기화 실패. 헤더 백업은 %s에 있습니다." msgid "LUKS2 decryption is supported with detached header device only (with data offset set to 0)." msgstr "분리한 헤더 장치에서만 LUKS2 해독을 지원합니다 (데이터 오프셋 0값으로)." -#: src/utils_reencrypt.c:1490 -msgid "No token could unlock the device." -msgstr "장치 잠금을 해제할 수 있는 토큰이 없습니다." - -#: src/utils_reencrypt.c:1522 src/utils_reencrypt.c:1531 +#: src/utils_reencrypt.c:1506 src/utils_reencrypt.c:1531 +#: src/utils_reencrypt.c:1548 src/utils_reencrypt.c:1557 msgid "Not enough free keyslots for reencryption." msgstr "재암호화에 활용할 여분의 키 슬롯이 부족합니다." -#: src/utils_reencrypt.c:1562 +#: src/utils_reencrypt.c:1513 +msgid "No token could unlock the device." +msgstr "장치 잠금을 해제할 수 있는 토큰이 없습니다." + +#: src/utils_reencrypt.c:1588 msgid "Key file or keyring key description can be used only with --key-slot or with exactly one key slot active." msgstr "키 파일 또는 키 모음의 키 설명은 --key-slot 옵션의 값으로 또는 정확히 하나의 동작하는 키 슬롯과 사용할 수 있습니다." -#: src/utils_reencrypt.c:1569 src/utils_reencrypt.c:1582 +#: src/utils_reencrypt.c:1595 src/utils_reencrypt.c:1608 #: src/utils_reencrypt_luks1.c:1092 src/utils_reencrypt_luks1.c:1103 #, c-format msgid "Enter passphrase for key slot %d: " msgstr "키 슬롯 %d번의 암호 입력: " -#: src/utils_reencrypt.c:1879 +#: src/utils_reencrypt.c:1905 #, c-format msgid "Switching data encryption cipher to %s.\n" msgstr "데이터 암호화 암호 알고리즘을 %s(으)로 전환합니다.\n" -#: src/utils_reencrypt.c:1980 src/utils_reencrypt.c:2001 +#: src/utils_reencrypt.c:2006 src/utils_reencrypt.c:2027 msgid "Use --force-no-keyslots to reencrypt device with active keyslots by passing volume keys directly." msgstr "볼륨 키를 직접 전달하여 동작하고 있는 키 슬롯으로 장치를 재암호화하려면 --force-no-keyslots 옵션을 사용하십시오." -#: src/utils_reencrypt.c:1996 +#: src/utils_reencrypt.c:2022 msgid "Option --new-volume-key-file must be paired with --new-key-size" msgstr "--new-volume-key-file 옵션은 --new-key-size 옵션과 함께 사용해야 합니다." -#: src/utils_reencrypt.c:2038 +#: src/utils_reencrypt.c:2064 msgid "No data segment parameters changed. Reencryption aborted." msgstr "바뀐 데이터 세그먼트 매개변수가 없습니다. 재암호화를 멈추었습니다." -#: src/utils_reencrypt.c:2075 +#: src/utils_reencrypt.c:2101 msgid "" "Encryption sector size increase on offline device is not supported.\n" "Activate the device first or use --force-offline-reencrypt option (dangerous!)." @@ -3887,7 +3892,7 @@ msgstr "" "오프라인 장치에서의 암호화 섹터 크기 증가는 지원하지 않습니다.\n" "우선 장치를 동작하게 만들거나 --force-offline-reencrypt 옵션(위험!)을 사용하십시오." -#: src/utils_reencrypt.c:2117 src/utils_reencrypt_luks1.c:688 +#: src/utils_reencrypt.c:2143 src/utils_reencrypt_luks1.c:688 #: src/utils_reencrypt_luks1.c:759 msgid "" "\n" @@ -3896,58 +3901,58 @@ msgstr "" "\n" "재암호화를 중단했습니다." -#: src/utils_reencrypt.c:2122 +#: src/utils_reencrypt.c:2148 msgid "Resuming LUKS reencryption in forced offline mode.\n" msgstr "강제 오프라인 모드에서 LUKS 재암호화 동작을 재개합니다.\n" -#: src/utils_reencrypt.c:2145 +#: src/utils_reencrypt.c:2171 #, c-format msgid "Device %s contains broken LUKS metadata. Aborting operation." msgstr "%s 장치에 망가진 LUKS 메타데이터가 있습니다. 동작을 멈춥니다." -#: src/utils_reencrypt.c:2161 src/utils_reencrypt.c:2183 +#: src/utils_reencrypt.c:2187 src/utils_reencrypt.c:2209 #, c-format msgid "Device %s is already LUKS device. Aborting operation." msgstr "%s 장치에 이미 LUKS 장치가 있습니다. 동작을 멈춥니다." -#: src/utils_reencrypt.c:2189 +#: src/utils_reencrypt.c:2215 #, c-format msgid "Device %s is already in LUKS reencryption. Aborting operation." msgstr "%s 장치가 이미 LUKS 재암호화 상태입니다. 동작을 멈춥니다." -#: src/utils_reencrypt.c:2272 +#: src/utils_reencrypt.c:2298 msgid "LUKS2 decryption requires --header option." msgstr "LUKS2 암호화 해제에 --header 옵션이 필요합니다." -#: src/utils_reencrypt.c:2320 +#: src/utils_reencrypt.c:2346 msgid "Command requires device as argument." msgstr "명쳥에 장치를 인자로 지정해야합니다." -#: src/utils_reencrypt.c:2333 +#: src/utils_reencrypt.c:2359 #, c-format msgid "Conflicting versions. Device %s is LUKS1." msgstr "버전이 맞지 않습니다. %s 장치는 LUKS1입니다." -#: src/utils_reencrypt.c:2339 +#: src/utils_reencrypt.c:2365 #, c-format msgid "Conflicting versions. Device %s is in LUKS1 reencryption." msgstr "버전이 맞지 않습니다. %s 장치는 LUKS1 재암호화 상태입니다." -#: src/utils_reencrypt.c:2345 +#: src/utils_reencrypt.c:2371 #, c-format msgid "Conflicting versions. Device %s is LUKS2." msgstr "버전이 맞지 않습니다. %s 장치는 LUKS2입니다." -#: src/utils_reencrypt.c:2351 +#: src/utils_reencrypt.c:2377 #, c-format msgid "Conflicting versions. Device %s is in LUKS2 reencryption." msgstr "버전이 맞지 않습니다. %s 장치는 LUKS2 재암호화 상태입니다." -#: src/utils_reencrypt.c:2357 +#: src/utils_reencrypt.c:2383 msgid "LUKS2 reencryption already initialized. Aborting operation." msgstr "LUKS2 재암호화를 이미 초기화했습니다. 동작을 멈줍니다." -#: src/utils_reencrypt.c:2364 +#: src/utils_reencrypt.c:2390 msgid "Device reencryption not in progress." msgstr "장치 재암호화를 진행하고 있지 않습니다." From b476cda4eb633678ff2b58421bfc56afba1a8af3 Mon Sep 17 00:00:00 2001 From: Jakub Bogusz Date: Fri, 4 Sep 2026 18:57:03 +0200 Subject: [PATCH 210/244] po: update pl.po (from translationproject.org) --- po/pl.po | 657 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 331 insertions(+), 326 deletions(-) diff --git a/po/pl.po b/po/pl.po index 8c4bc8031..352e97a90 100644 --- a/po/pl.po +++ b/po/pl.po @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.7-rc2\n" +"Project-Id-Version: cryptsetup 2.8.8-rc0\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2026-07-09 10:46+0200\n" -"PO-Revision-Date: 2026-07-11 18:45+0200\n" +"POT-Creation-Date: 2026-09-02 13:18+0200\n" +"PO-Revision-Date: 2026-09-02 18:14+0200\n" "Last-Translator: Jakub Bogusz \n" "Language-Team: Polish \n" "Language: pl\n" @@ -18,78 +18,78 @@ msgstr "" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -#: lib/libdevmapper.c:419 +#: lib/libdevmapper.c:422 msgid "Cannot initialize device-mapper, running as non-root user." msgstr "Nie można zainicjować device-mappera w czasie działania jako nie-root." -#: lib/libdevmapper.c:422 +#: lib/libdevmapper.c:425 msgid "Cannot initialize device-mapper. Is dm_mod kernel module loaded?" msgstr "Nie można zainicjować device-mappera. Czy moduł jądra dm_mod jest wczytany?" -#: lib/libdevmapper.c:1125 +#: lib/libdevmapper.c:1129 msgid "Requested deferred flag is not supported." msgstr "Żądana flaga odroczona nie jest obsługiwana." -#: lib/libdevmapper.c:1194 +#: lib/libdevmapper.c:1198 #, c-format msgid "DM-UUID for device %s was truncated." msgstr "DM-UUID dla urządzenia %s został skrócony." -#: lib/libdevmapper.c:1598 +#: lib/libdevmapper.c:1602 msgid "Unknown dm target type." msgstr "Nieznany typ celu dm." -#: lib/libdevmapper.c:1725 lib/libdevmapper.c:1731 lib/libdevmapper.c:1850 -#: lib/libdevmapper.c:1853 +#: lib/libdevmapper.c:1729 lib/libdevmapper.c:1735 lib/libdevmapper.c:1854 +#: lib/libdevmapper.c:1857 msgid "Requested dm-crypt performance options are not supported." msgstr "Żądane opcje dm-crypta dotyczące wydajności nie są obsługiwane." -#: lib/libdevmapper.c:1740 lib/libdevmapper.c:1746 lib/libdevmapper.c:1758 +#: lib/libdevmapper.c:1744 lib/libdevmapper.c:1750 lib/libdevmapper.c:1762 msgid "Requested dm-verity data corruption handling options are not supported." msgstr "Żądane opcje dm-verity dotyczące obsługi uszkodzenia danych nie są obsługiwane." -#: lib/libdevmapper.c:1752 +#: lib/libdevmapper.c:1756 msgid "Requested dm-verity tasklets option is not supported." msgstr "Żądana opcja taskletów dm-verity nie jest obsługiwana." -#: lib/libdevmapper.c:1764 +#: lib/libdevmapper.c:1768 msgid "Requested dm-verity FEC options are not supported." msgstr "Żądane opcje FEC dm-verity nie są obsługiwane." -#: lib/libdevmapper.c:1770 +#: lib/libdevmapper.c:1774 msgid "Requested data integrity options are not supported." msgstr "Żądane opcje integralności danych nie są obsługiwane." -#: lib/libdevmapper.c:1774 +#: lib/libdevmapper.c:1778 msgid "Requested sector_size option is not supported." msgstr "Żądana opcja sector_size nie jest obsługiwana." -#: lib/libdevmapper.c:1779 +#: lib/libdevmapper.c:1783 msgid "The device size is not multiple of the requested sector size." msgstr "Rozmiar urządzenia nie jest wielokrotnością żądanego rozmiaru sektura." -#: lib/libdevmapper.c:1783 +#: lib/libdevmapper.c:1787 msgid "Requested integrity_key_size option is not supported." msgstr "Żądana opcja integrity_key_size nie jest obsługiwana." -#: lib/libdevmapper.c:1790 lib/libdevmapper.c:1796 +#: lib/libdevmapper.c:1794 lib/libdevmapper.c:1800 msgid "Requested automatic recalculation of integrity tags is not supported." msgstr "Żądane automatyczne przeliczenie znaczników integralności nie jest obsługiwane." -#: lib/libdevmapper.c:1802 lib/libdevmapper.c:1856 lib/libdevmapper.c:1859 -#: lib/luks2/luks2_json_metadata.c:2799 +#: lib/libdevmapper.c:1806 lib/libdevmapper.c:1860 lib/libdevmapper.c:1863 +#: lib/luks2/luks2_json_metadata.c:2791 msgid "Discard/TRIM is not supported." msgstr "Porzucenie/TRIM nie jest obsługiwane." -#: lib/libdevmapper.c:1808 +#: lib/libdevmapper.c:1812 msgid "Requested dm-integrity bitmap mode is not supported." msgstr "Żądany tryb bitmapy dm-integrity nie jest obsługiwany." -#: lib/libdevmapper.c:1814 +#: lib/libdevmapper.c:1818 msgid "Requested dm-integrity inline mode is not supported." msgstr "Żądany tryb wbudowany dm-integrity nie jest obsługiwany." -#: lib/libdevmapper.c:2870 +#: lib/libdevmapper.c:2877 #, c-format msgid "Failed to query dm-%s segment." msgstr "Nie udało się odpytać segmentu dm-%s." @@ -140,7 +140,7 @@ msgstr "Nie można zainicjować backendu kryptograficznego RNG." msgid "Cannot initialize crypto backend." msgstr "Nie można zainicjować backendu kryptograficznego." -#: lib/setup.c:308 lib/setup.c:2769 lib/verity/verity.c:109 +#: lib/setup.c:308 lib/setup.c:2779 lib/verity/verity.c:109 #, c-format msgid "Hash algorithm %s not supported." msgstr "Algorytm skrótu %s nie jest obsługiwany." @@ -154,7 +154,7 @@ msgstr "Błąd przetwarzania klucza (użyto algorytmu skrótu %s)." msgid "Cannot determine device type. Incompatible activation of device?" msgstr "Nie można określić rodzaju urządzenia. Niezgodny sposób uaktywniania urządzenia?" -#: lib/setup.c:398 lib/setup.c:4177 +#: lib/setup.c:398 lib/setup.c:4193 msgid "This operation is supported only for LUKS device." msgstr "Ta operacja jest obsługiwana tylko dla urządzeń LUKS." @@ -176,7 +176,7 @@ msgstr "Numer klucza %d jest błędny, proszę wybrać wartość między 0 a %d. msgid "Key slot %d is full, please select another one." msgstr "Miejsce na klucz %d jest pełne, proszę wybrać inne." -#: lib/setup.c:534 lib/setup.c:3878 +#: lib/setup.c:534 lib/setup.c:3888 msgid "Device size is not aligned to device logical block size." msgstr "Rozmiar urządzenia nie jest wyrównany do rozmiaru bloku logicznego urządzenia." @@ -185,7 +185,7 @@ msgstr "Rozmiar urządzenia nie jest wyrównany do rozmiaru bloku logicznego urz msgid "Header detected but device %s is too small." msgstr "Wykryto nagłówek, ale urządzenie %s jest zbyt małe." -#: lib/setup.c:672 lib/setup.c:3763 lib/setup.c:5272 +#: lib/setup.c:672 lib/setup.c:3773 lib/setup.c:5288 #: lib/luks2/luks2_reencrypt.c:3949 lib/luks2/luks2_reencrypt.c:4438 msgid "This operation is not supported for this device type." msgstr "Ta operacja nie jest obsługiwana dla tego rodzaju urządzenia." @@ -198,553 +198,553 @@ msgstr "Niedozwolona operacja w trakcie ponownego szyfrowania." msgid "Failed to rollback LUKS2 metadata in memory." msgstr "Nie udało się wycofać zmian w metadanych LUKS2 w pamięci." -#: lib/setup.c:896 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 +#: lib/setup.c:896 lib/luks1/keymanage.c:241 lib/luks1/keymanage.c:519 #: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 #: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 #: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2954 -#: src/cryptsetup.c:3022 src/utils_reencrypt.c:2284 +#: src/cryptsetup.c:3022 src/utils_reencrypt.c:2310 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." msgstr "Urządzenie %s nie jest prawidłowym urządzeniem LUKS." -#: lib/setup.c:899 lib/luks1/keymanage.c:517 +#: lib/setup.c:899 lib/luks1/keymanage.c:522 #, c-format msgid "Unsupported LUKS version %d." msgstr "Nieobsługiwana wersja LUKS %d." -#: lib/setup.c:1273 +#: lib/setup.c:1279 #, c-format msgid "No known cipher specification pattern detected for active device %s." msgstr "Nie wykryto znanego wzorca określającego szyfr dla aktywnego urządzenia %s." -#: lib/setup.c:1518 lib/setup.c:3510 lib/setup.c:3602 lib/setup.c:3614 -#: lib/setup.c:3786 lib/setup.c:5850 +#: lib/setup.c:1528 lib/setup.c:3520 lib/setup.c:3612 lib/setup.c:3624 +#: lib/setup.c:3796 lib/setup.c:5866 #, c-format msgid "Device %s is not active." msgstr "Urządzenie %s nie jest aktywne." -#: lib/setup.c:1535 +#: lib/setup.c:1545 #, c-format msgid "Underlying device for crypt device %s disappeared." msgstr "Urządzenie stojące za urządzeniem szyfrowanym %s zniknęło." -#: lib/setup.c:1617 +#: lib/setup.c:1627 msgid "Invalid plain crypt parameters." msgstr "Błędne parametry szyfru plain." -#: lib/setup.c:1622 lib/setup.c:2672 +#: lib/setup.c:1632 lib/setup.c:2682 msgid "Invalid key size." msgstr "Błędny rozmiar klucza." -#: lib/setup.c:1627 lib/setup.c:2677 lib/setup.c:2882 +#: lib/setup.c:1637 lib/setup.c:2687 lib/setup.c:2892 msgid "UUID is not supported for this crypt type." msgstr "UUID nie jest obsługiwany dla tego rodzaju szyfrowania." -#: lib/setup.c:1632 lib/setup.c:2682 +#: lib/setup.c:1642 lib/setup.c:2692 msgid "Detached metadata device is not supported for this crypt type." msgstr "Osobne urządzenie metadanych nie jest obsługiwane dla tego rodzaju szyfrowania." -#: lib/setup.c:1642 lib/setup.c:1890 lib/luks2/luks2_reencrypt.c:3035 +#: lib/setup.c:1652 lib/setup.c:1900 lib/luks2/luks2_reencrypt.c:3035 #: src/cryptsetup.c:1492 src/cryptsetup.c:3761 msgid "Unsupported encryption sector size." msgstr "Nieobsługiwany rozmiar sektora szyfrowania." -#: lib/setup.c:1650 lib/setup.c:1919 lib/setup.c:3872 +#: lib/setup.c:1660 lib/setup.c:1929 lib/setup.c:3882 msgid "Device size is not aligned to requested sector size." msgstr "Rozmiar urządzenia nie jest wyrównany do żądanego rozmiaru sektura." -#: lib/setup.c:1702 lib/setup.c:1954 lib/setup.c:2331 +#: lib/setup.c:1712 lib/setup.c:1964 lib/setup.c:2341 msgid "Can't format LUKS without device." msgstr "Nie można sformatować LUKS-a bez urządzenia." -#: lib/setup.c:1707 lib/setup.c:1959 +#: lib/setup.c:1717 lib/setup.c:1969 #, c-format msgid "Zoned device %s cannot be used for LUKS header." msgstr "Urządzenie Zoned %s nie może być używane dla nagłówka LUKS." -#: lib/setup.c:1714 lib/setup.c:1966 lib/setup.c:2337 +#: lib/setup.c:1724 lib/setup.c:1976 lib/setup.c:2347 msgid "Requested data alignment is not compatible with data offset." msgstr "Żądane wyrównanie metadanych nie jest zgodne z offsetem danych." -#: lib/setup.c:1754 lib/setup.c:1984 +#: lib/setup.c:1764 lib/setup.c:1994 msgid "WARNING: DAX device can corrupt data as it does not guarantee atomic sector updates.\n" msgstr "UWAGA: urządzenie DAX może uszkodzić dane, ponieważ nie gwarantuje atomowych uaktualnień sektorów.\n" -#: lib/setup.c:1792 lib/setup.c:2091 lib/setup.c:2112 lib/setup.c:2520 -#: lib/setup.c:2567 lib/setup.c:2899 +#: lib/setup.c:1802 lib/setup.c:2101 lib/setup.c:2122 lib/setup.c:2530 +#: lib/setup.c:2577 lib/setup.c:2909 #, c-format msgid "Cannot wipe header on device %s." msgstr "Nie można wymazać nagłówka na urządzeniu %s." -#: lib/setup.c:1805 lib/setup.c:2164 +#: lib/setup.c:1815 lib/setup.c:2174 #, c-format msgid "Device %s is too small for activation, there is no remaining space for data.\n" msgstr "Urządzenie %s jest zbyt małe do uaktywnienia, nie ma miejsca pozostałego na dane.\n" -#: lib/setup.c:1846 +#: lib/setup.c:1856 msgid "Volume key is too small for encryption with integrity extensions." msgstr "Klucz wolumenu jest zbyt mały do szyfrowania z rozszerzeniami integralności." -#: lib/setup.c:1850 +#: lib/setup.c:1860 msgid "Integrity key size is too small." msgstr "Rozmiar klucza integralności jest zbyt mały." -#: lib/setup.c:1859 +#: lib/setup.c:1869 #, c-format msgid "Cipher %s-%s (key size %zd bits) is not available." msgstr "Szyfr %s-%s (rozmiar klucza w bitach: %zd) nie jest dostępny." -#: lib/setup.c:1900 +#: lib/setup.c:1910 msgid "WARNING: The device activation will fail, dm-crypt is missing support for requested encryption sector size.\n" msgstr "UWAGA: uaktywnienie urządzenia się nie powiedzie, dm-crypt nie ma obsługi żądanego rozmiaru sektora szyfrowania.\n" -#: lib/setup.c:2094 lib/setup.c:2461 lib/setup.c:2523 lib/utils_device.c:906 +#: lib/setup.c:2104 lib/setup.c:2471 lib/setup.c:2533 lib/utils_device.c:906 #: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3074 #: lib/luks2/luks2_reencrypt.c:4498 #, c-format msgid "Device %s is too small." msgstr "Urządzenie %s jest zbyt małe." -#: lib/setup.c:2105 lib/setup.c:2144 lib/setup.c:2560 lib/setup.c:2618 +#: lib/setup.c:2115 lib/setup.c:2154 lib/setup.c:2570 lib/setup.c:2628 #, c-format msgid "Cannot format device %s in use." msgstr "Nie można sformatować urządzenia %s, które jest w użyciu." -#: lib/setup.c:2108 lib/setup.c:2147 lib/setup.c:2563 lib/setup.c:2621 +#: lib/setup.c:2118 lib/setup.c:2157 lib/setup.c:2573 lib/setup.c:2631 #, c-format msgid "Cannot format device %s, permission denied." msgstr "Nie można sformatować urządzenia %s, brak uprawnień." -#: lib/setup.c:2132 lib/setup.c:2590 lib/setup.c:2972 +#: lib/setup.c:2142 lib/setup.c:2600 lib/setup.c:2982 #, c-format msgid "Cannot format integrity for device %s." msgstr "Nie można sformatować integralności dla urządzenia %s." -#: lib/setup.c:2151 lib/setup.c:2629 +#: lib/setup.c:2161 lib/setup.c:2639 #, c-format msgid "Cannot format device %s." msgstr "Nie można sformatować urządzenia %s." -#: lib/setup.c:2194 +#: lib/setup.c:2204 msgid "Cannot get OPAL alignment parameters." msgstr "Nie można pobrać parametrów wyrównania OPAL." -#: lib/setup.c:2206 +#: lib/setup.c:2216 msgid "Bogus OPAL logical block size." msgstr "Błędny rozmiar bloku logicznego OPAL." -#: lib/setup.c:2211 lib/luks2/hw_opal/hw_opal.c:305 +#: lib/setup.c:2221 lib/luks2/hw_opal/hw_opal.c:305 msgid "Bogus OPAL logical block size differs from device block size." msgstr "Błędny rozmiar bloku logicznego OPAL różni się od rozmiaru bloku urządzenia." -#: lib/setup.c:2217 +#: lib/setup.c:2227 msgid "Requested data offset is not compatible with OPAL block size." msgstr "Żądana pozycja danych nie jest zgodna z rozmiarem bloku OPAL." -#: lib/setup.c:2224 +#: lib/setup.c:2234 msgid "Requested data alignment is not compatible with OPAL alignment." msgstr "Żądane wyrównanie danych nie jest zgodne z wyrównaniem OPAL." -#: lib/setup.c:2244 +#: lib/setup.c:2254 msgid "Data offset does not satisfy OPAL alignment requirements." msgstr "Pozycja danych nie jest zgodna z wymaganiami wyrównania OPAL." -#: lib/setup.c:2257 +#: lib/setup.c:2267 msgid "Requested data alignment does not satisfy locking range alignment requirements." msgstr "Żądane wyrównanie danych nie jest zgodne z wymaganiami wyrównania zakresu blokowania." -#: lib/setup.c:2471 +#: lib/setup.c:2481 #, c-format msgid "Compensating device size by % sectors to align it with OPAL alignment granularity." msgstr "Kompensacja rozmiaru urządzenia o % sektorów, aby wyrównać do rozdzielczości wyrównania OPAL." -#: lib/setup.c:2531 lib/setup.c:4260 lib/setup.c:4466 lib/utils_wipe.c:356 -#: lib/luks2/luks2_json_metadata.c:2742 lib/luks2/luks2_json_metadata.c:3017 +#: lib/setup.c:2541 lib/setup.c:4276 lib/setup.c:4482 lib/utils_wipe.c:356 +#: lib/luks2/luks2_json_metadata.c:2734 lib/luks2/luks2_json_metadata.c:3009 #, c-format msgid "Failed to acquire OPAL lock on device %s." msgstr "Nie udało się uzyskać blokady OPAL na urządzeniu %s." -#: lib/setup.c:2541 +#: lib/setup.c:2551 msgid "Incorrect OPAL Admin key." msgstr "Niepoprawny klucz administratora OPAL." -#: lib/setup.c:2543 +#: lib/setup.c:2553 msgid "Cannot setup OPAL segment." msgstr "Nie można ustawić segmentu OPAL." -#: lib/setup.c:2625 +#: lib/setup.c:2635 #, c-format msgid "Cannot format device %s, OPAL device seems to be fully write-protected now." msgstr "Nie można sformatować urządzenia %s, urządzenie OPAL obecnie wygląda na w pełni zabezpieczone przed zapisem." -#: lib/setup.c:2627 +#: lib/setup.c:2637 msgid "This is perhaps a bug in firmware. Run OPAL PSID reset and reconnect for recovery." msgstr "To prawdopodobnie błąd w oprogramowaniu sprzętowym. W celu odtworzenia można zresetować PSID OPAL i połączyć ponownie." -#: lib/setup.c:2647 +#: lib/setup.c:2657 #, c-format msgid "Locking range %d reset on device %s failed." msgstr "Reset zakresu blokowania %d na urządzeniu %s nie powiódł się." -#: lib/setup.c:2667 +#: lib/setup.c:2677 msgid "Can't format LOOPAES without device." msgstr "Nie można sformatować urządzenia LUKSAES bez urządzenia." -#: lib/setup.c:2712 +#: lib/setup.c:2722 msgid "Can't format VERITY without device." msgstr "Nie można sformatować VERITY bez urządzenia." -#: lib/setup.c:2723 lib/verity/verity.c:88 +#: lib/setup.c:2733 lib/verity/verity.c:88 #, c-format msgid "Unsupported VERITY hash type %d." msgstr "Nieobsługiwany typ hasza VERITY %d." -#: lib/setup.c:2729 lib/verity/verity.c:96 +#: lib/setup.c:2739 lib/verity/verity.c:96 msgid "Unsupported VERITY block size." msgstr "Nieobsługiwany rozmiar bloku VERITY." -#: lib/setup.c:2734 lib/verity/verity.c:61 +#: lib/setup.c:2744 lib/verity/verity.c:61 msgid "Unsupported VERITY hash offset." msgstr "Nieobsługiwany offset hasza VERITY." -#: lib/setup.c:2739 +#: lib/setup.c:2749 msgid "Unsupported VERITY FEC offset." msgstr "Nieobsługiwany offset FEC VERITY." -#: lib/setup.c:2763 +#: lib/setup.c:2773 msgid "Data area overlaps with hash area." msgstr "Obszar danych zachodzi na obszar skrótów." -#: lib/setup.c:2788 +#: lib/setup.c:2798 msgid "Hash area overlaps with FEC area." msgstr "Obszar skrótu zachodzi na obszar FEC." -#: lib/setup.c:2795 +#: lib/setup.c:2805 msgid "Data area overlaps with FEC area." msgstr "Obszar danych zachodzi na obszar FEC." -#: lib/setup.c:2887 +#: lib/setup.c:2897 msgid "Integrity key size mismatch." msgstr "Niezgodność rozmiaru klucza integralności." -#: lib/setup.c:2938 +#: lib/setup.c:2948 #, c-format msgid "WARNING: Requested tag size %d bytes differs from %s size output (%d bytes).\n" msgstr "UWAGA: żądany rozmiar znacznika %d B różni się od rozmiaru wyjścia %s (%d B).\n" -#: lib/setup.c:3051 lib/setup.c:3153 +#: lib/setup.c:3061 lib/setup.c:3163 #, c-format msgid "Unknown or unsupported device type %s requested." msgstr "Żądany nieznany lub nieobsługiwany typ urządzenia %s." -#: lib/setup.c:3067 +#: lib/setup.c:3077 #, c-format msgid "Device %s does not provide inline integrity data fields." msgstr "Urządzenie %s nie zapewnia wbudowanych pól danych integralności." -#: lib/setup.c:3073 +#: lib/setup.c:3083 #, c-format msgid "Inline tag size % [bytes] is larger than % provided by device %s." msgstr "Rozmiar znacznika wbudowanego % B jest większy niż % zapewniany przez urządzenie %s." -#: lib/setup.c:3088 +#: lib/setup.c:3098 #, c-format msgid "Sector must be the same as device hardware sector (%zu bytes)." msgstr "Sektor musi być tego samego rozmiaru, co sektor sprzętowy urządzenia (%zu B)." -#: lib/setup.c:3518 lib/setup.c:3607 lib/setup.c:3620 +#: lib/setup.c:3528 lib/setup.c:3617 lib/setup.c:3630 #, c-format msgid "Unsupported parameters on device %s." msgstr "Nieobsługiwane parametry urządzenia %s." -#: lib/setup.c:3524 lib/setup.c:3627 lib/luks2/luks2_reencrypt.c:2929 +#: lib/setup.c:3534 lib/setup.c:3637 lib/luks2/luks2_reencrypt.c:2929 #: lib/luks2/luks2_reencrypt.c:3198 lib/luks2/luks2_reencrypt.c:3595 #, c-format msgid "Mismatching parameters on device %s." msgstr "Niezgodne parametry dla urządzenia %s." -#: lib/setup.c:3650 +#: lib/setup.c:3660 msgid "Crypt devices mismatch." msgstr "Urządzenia szyfrowane nie zgadzają się." -#: lib/setup.c:3682 lib/setup.c:3687 lib/luks2/luks2_reencrypt.c:2413 +#: lib/setup.c:3692 lib/setup.c:3697 lib/luks2/luks2_reencrypt.c:2413 #: lib/luks2/luks2_reencrypt.c:2945 lib/luks2/luks2_reencrypt.c:4237 #, c-format msgid "Failed to reload device %s." msgstr "Nie udało się przeładować urządzenia %s." -#: lib/setup.c:3693 lib/setup.c:3699 lib/luks2/luks2_reencrypt.c:2383 +#: lib/setup.c:3703 lib/setup.c:3709 lib/luks2/luks2_reencrypt.c:2383 #: lib/luks2/luks2_reencrypt.c:2390 lib/luks2/luks2_reencrypt.c:2959 #, c-format msgid "Failed to suspend device %s." msgstr "Nie udało się wstrzymać urządzenia %s." -#: lib/setup.c:3705 lib/luks2/luks2_reencrypt.c:2397 +#: lib/setup.c:3715 lib/luks2/luks2_reencrypt.c:2397 #: lib/luks2/luks2_reencrypt.c:2980 lib/luks2/luks2_reencrypt.c:4150 #: lib/luks2/luks2_reencrypt.c:4241 #, c-format msgid "Failed to resume device %s." msgstr "Nie udało wznowić urządzenia %s." -#: lib/setup.c:3720 +#: lib/setup.c:3730 #, c-format msgid "Fatal error while reloading device %s (on top of device %s)." msgstr "Błąd krytyczny przy przeładowywaniu urządzenia %s (w oparciu o urządzenie %s)." -#: lib/setup.c:3723 lib/setup.c:3725 +#: lib/setup.c:3733 lib/setup.c:3735 #, c-format msgid "Failed to switch device %s to dm-error." msgstr "Nie udało się przełączyć urządzenia %s na dm-error." -#: lib/setup.c:3768 +#: lib/setup.c:3778 msgid "Can not resize LUKS2 device with static size." msgstr "Nie można zmienić rozmiaru urządzenia LUKS2 o rozmiarze statycznym." -#: lib/setup.c:3773 +#: lib/setup.c:3783 msgid "Resize of LUKS2 device with integrity protection is not supported." msgstr "Zmiana rozmiaru urządzenia LUKS2 z ochroną integralności nie jest obsługiwana." -#: lib/setup.c:3819 +#: lib/setup.c:3829 msgid "Cannot resize loop device." msgstr "Nie można zmienić rozmiaru urządzenia loopback." -#: lib/setup.c:3863 +#: lib/setup.c:3873 msgid "WARNING: Maximum size already set or kernel doesn't support resize.\n" msgstr "UWAGA: maksymalny rozmiar jest już ustawiony lub jądro nie obsługuje zmiany rozmiaru.\n" -#: lib/setup.c:3929 +#: lib/setup.c:3939 msgid "Resize failed, the kernel doesn't support it." msgstr "Zmiana rozmiaru nie powiodła się, jądro tego nie obsługuje." -#: lib/setup.c:3961 +#: lib/setup.c:3971 msgid "Do you really want to change UUID of device?" msgstr "Czy na pewno zmienić UUID urządzenia?" -#: lib/setup.c:4053 +#: lib/setup.c:4061 lib/setup.c:4069 msgid "Header backup file does not contain compatible LUKS header." msgstr "Plik nagłówka kopii zapasowej nie zawiera zgodnego nagłówka LUKS." -#: lib/setup.c:4160 +#: lib/setup.c:4176 #, c-format msgid "Volume %s is not active." msgstr "Wolumen %s nie jest aktywny." -#: lib/setup.c:4215 +#: lib/setup.c:4231 #, c-format msgid "Volume %s is already suspended." msgstr "Wolumen %s już został wstrzymany." -#: lib/setup.c:4241 +#: lib/setup.c:4257 #, c-format msgid "Suspend is not supported for device %s." msgstr "Wstrzymywanie nie jest obsługiwane dla urządzenia %s." -#: lib/setup.c:4243 lib/setup.c:4251 +#: lib/setup.c:4259 lib/setup.c:4267 #, c-format msgid "Error during suspending device %s." msgstr "Błąd podczas wstrzymywania urządzenia %s." -#: lib/setup.c:4266 +#: lib/setup.c:4282 #, c-format msgid "Device %s was suspended but hardware OPAL device cannot be locked." msgstr "Urządzenie %s zostało wstrzymane, ale sprzętowe urządzenie OPAL nie może być zablokowane." -#: lib/setup.c:4297 lib/setup.c:4491 +#: lib/setup.c:4313 lib/setup.c:4507 #, c-format msgid "Resume is not supported for device %s." msgstr "Wznawianie nie jest obsługiwane dla urządzenia %s." -#: lib/setup.c:4299 lib/setup.c:4481 lib/setup.c:4493 +#: lib/setup.c:4315 lib/setup.c:4497 lib/setup.c:4509 #, c-format msgid "Error during resuming device %s." msgstr "Błąd podczas wznawiania urządzenia %s." -#: lib/setup.c:4335 +#: lib/setup.c:4351 msgid "Failed to unlink volume key from user specified keyring." msgstr "Nie udało się odłączyć klucza wolumenu z pęku kluczy podanego przez użytkownika." -#: lib/setup.c:4457 lib/setup.c:5637 +#: lib/setup.c:4473 lib/setup.c:5653 msgid "Failed to link volume key in user defined keyring." msgstr "Nie udało się dołączuć klucza wolumenu do pęku kluczy zdefiniowanego przez użytkownika." -#: lib/setup.c:4556 src/cryptsetup.c:2722 +#: lib/setup.c:4572 src/cryptsetup.c:2722 #, c-format msgid "Volume %s is not suspended." msgstr "Wolumen %s nie jest wstrzymany." -#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1856 +#: lib/setup.c:4683 lib/setup.c:7326 lib/setup.c:7348 src/cryptsetup.c:1856 #: src/cryptsetup.c:2260 src/cryptsetup.c:2278 src/utils_reencrypt.c:306 -#: src/utils_reencrypt.c:1969 +#: src/utils_reencrypt.c:1995 msgid "Volume key does not match the volume." msgstr "Klucz wolumenu nie pasuje do wolumenu." -#: lib/setup.c:4821 +#: lib/setup.c:4837 msgid "Failed to swap new key slot." msgstr "Nie udało się podstawić nowego klucza." -#: lib/setup.c:4919 +#: lib/setup.c:4935 #, c-format msgid "Key slot %d is invalid." msgstr "Numer klucza %d jest nieprawidłowy." -#: lib/setup.c:4925 src/cryptsetup.c:1977 src/cryptsetup.c:2437 +#: lib/setup.c:4941 src/cryptsetup.c:1977 src/cryptsetup.c:2437 #: src/cryptsetup.c:3122 src/cryptsetup.c:3182 #, c-format msgid "Keyslot %d is not active." msgstr "Klucz %d nie jest aktywny." -#: lib/setup.c:4944 +#: lib/setup.c:4960 msgid "Device header overlaps with data area." msgstr "Nagłówek urządzenia zachodzi na obszar danych." -#: lib/setup.c:5165 +#: lib/setup.c:5181 msgid "Reencryption in-progress. Cannot activate device." msgstr "Ponowne szyfrowanie trwa. Nie można uaktywnić urządzenia." -#: lib/setup.c:5167 lib/luks2/luks2_json_metadata.c:2913 +#: lib/setup.c:5183 lib/luks2/luks2_json_metadata.c:2905 #: lib/luks2/luks2_reencrypt.c:3726 msgid "Failed to get reencryption lock." msgstr "Nie udało się uzyskać blokady ponownego szyfrowania." -#: lib/setup.c:5189 +#: lib/setup.c:5205 msgid "LUKS2 reencryption recovery using volume key(s) failed." msgstr "Odtwarzanie ponownego szyfrowania LUKS2 przy użyciu kluczy wolumenu nie powiodło się." -#: lib/setup.c:5325 +#: lib/setup.c:5341 #, c-format msgid "Device %s already exists." msgstr "Urządzenie %s już istnieje." -#: lib/setup.c:5332 +#: lib/setup.c:5348 #, c-format msgid "Cannot use device %s, name is invalid or still in use." msgstr "Nie można użyć urządzenia %s, nazwa jest nieprawidłowa lub nadal w użyciu." -#: lib/setup.c:5344 +#: lib/setup.c:5360 msgid "Reencryption volume keys do not match the volume." msgstr "Klucze ponownego szyfrowania wolumenu nie pasują do wolumenu." -#: lib/setup.c:5361 +#: lib/setup.c:5377 msgid "Incorrect volume key specified for plain device." msgstr "Podano niewłaściwy klucz wolumenu dla zwykłego urządzenia." -#: lib/setup.c:5387 lib/setup.c:5448 +#: lib/setup.c:5403 lib/setup.c:5464 msgid "Device type is not properly initialized." msgstr "Typ urządzenia nie został właściwie zainicjalizowany." -#: lib/setup.c:5486 +#: lib/setup.c:5502 msgid "Kernel keyring is not supported by the kernel." msgstr "Pęk kluczy w jądrze nie jest obsługiwany przez jądro." -#: lib/setup.c:5490 +#: lib/setup.c:5506 msgid "Kernel keyring missing: required for passing signature to kernel." msgstr "Brak pęku kluczy w jądrze: wymagany do przekazania podpisu do jądra." -#: lib/setup.c:5545 +#: lib/setup.c:5561 #, c-format msgid "Cannot use keyring key %s." msgstr "Nie można użyć klucza pęku kluczy %s." -#: lib/setup.c:5758 +#: lib/setup.c:5774 msgid "Incorrect root hash specified for verity device." msgstr "Podano niewłaściwy hasz główny dla urządzenia VERITY." -#: lib/setup.c:5799 lib/setup.c:5824 +#: lib/setup.c:5815 lib/setup.c:5840 msgid "OPAL does not support deferred deactivation." msgstr "OPAL nie obsługuje odroczonej dezaktywacji." -#: lib/setup.c:5814 lib/setup.c:5845 lib/luks2/luks2_json_metadata.c:2978 +#: lib/setup.c:5830 lib/setup.c:5861 lib/luks2/luks2_json_metadata.c:2970 #: src/utils_reencrypt.c:89 #, c-format msgid "Device %s is still in use." msgstr "Urządzenie %s jest nadal w użyciu." -#: lib/setup.c:5832 +#: lib/setup.c:5848 #, c-format msgid "Could not cancel deferred remove from device %s." msgstr "Nie udało się anulować opóźnionego usuwania z urządzenia %s." -#: lib/setup.c:5854 +#: lib/setup.c:5870 #, c-format msgid "Invalid device %s." msgstr "Błędne urządzenie %s." -#: lib/setup.c:6001 +#: lib/setup.c:6017 msgid "Volume key buffer too small." msgstr "Bufor klucza wolumenu zbyt mały." -#: lib/setup.c:6012 +#: lib/setup.c:6028 msgid "Cannot retrieve volume key for LUKS2 device." msgstr "Nie można odtworzyć klucza wolumenu dla urządzenia LUKS2." -#: lib/setup.c:6021 +#: lib/setup.c:6037 msgid "Cannot retrieve volume key for LUKS1 device." msgstr "Nie można odtworzyć klucza wolumenu dla urządzenia LUKS1." -#: lib/setup.c:6035 +#: lib/setup.c:6051 msgid "Cannot retrieve volume key for plain device." msgstr "Nie można odtworzyć klucza wolumenu dla zwykłego urządzenia." -#: lib/setup.c:6043 +#: lib/setup.c:6059 msgid "Cannot retrieve root hash for verity device." msgstr "Nie można odtworzyć hasza głównego dla urządzenia VERITY." -#: lib/setup.c:6052 +#: lib/setup.c:6068 msgid "Cannot retrieve volume key for BITLK device." msgstr "Nie można odtworzyć klucza wolumenu dla urządzenia BITLK." -#: lib/setup.c:6057 +#: lib/setup.c:6073 msgid "Cannot retrieve volume key for FVAULT2 device." msgstr "Nie można odtworzyć klucza wolumenu dla urządzenia FVAULT2." -#: lib/setup.c:6059 +#: lib/setup.c:6075 #, c-format msgid "This operation is not supported for %s crypt device." msgstr "Ta operacja nie jest obsługiwana dla urządzenia szyfrującego %s." -#: lib/setup.c:6244 lib/setup.c:6255 +#: lib/setup.c:6260 lib/setup.c:6271 msgid "Dump operation is not supported for this device type." msgstr "Operacja zrzutu nie jest obsługiwana dla tego rodzaju urządzenia." -#: lib/setup.c:6635 +#: lib/setup.c:6651 #, c-format msgid "Data offset is not multiple of %u bytes." msgstr "Offset danych nie jest wielokrotnością liczby bajtów %u." -#: lib/setup.c:6943 +#: lib/setup.c:6959 #, c-format msgid "Cannot convert device %s which is still in use." msgstr "Nie można przekonwertować urządzenia %s, które jest nadal w użyciu." -#: lib/setup.c:7251 lib/setup.c:7406 +#: lib/setup.c:7267 lib/setup.c:7422 #, c-format msgid "Failed to assign keyslot %u as the new volume key." msgstr "Nie udało się przypisać klucza %u jako nowego klucza wolumenu." -#: lib/setup.c:7275 +#: lib/setup.c:7291 msgid "Failed to initialize default LUKS2 keyslot parameters." msgstr "Nie udało się zainicjować domyślnych parametrów klucza LUKS2." -#: lib/setup.c:7281 +#: lib/setup.c:7297 #, c-format msgid "Failed to assign keyslot %d to digest." msgstr "Nie udało się przypisać klucza %d do skrótu." -#: lib/setup.c:7523 +#: lib/setup.c:7539 msgid "Cannot add key slot, all slots disabled and no volume key provided." msgstr "Nie można dodać klucza, wszystkie miejsca na klucze wyłączone i nie podano klucza wolumenu." -#: lib/setup.c:7611 lib/setup.c:7626 lib/verity/verity.c:333 +#: lib/setup.c:7627 lib/setup.c:7642 lib/verity/verity.c:333 msgid "Failed to load key in kernel keyring." msgstr "Nie udało się załadować klucza do pęku kluczy w jądrze." -#: lib/setup.c:7807 +#: lib/setup.c:7823 #, c-format msgid "Could not find keyring described by \"%s\"." msgstr "Nie udało się odnaleźć pęku kluczy opisanego przez \"%s\"." -#: lib/setup.c:7872 +#: lib/setup.c:7888 msgid "Failed to acquire global memory-hard access serialization lock." msgstr "Nie udało się uzyskać globalnej blokady serializacji dostępu ciężkiego pamięciowo." @@ -786,7 +786,7 @@ msgid "Cannot read requested amount of data." msgstr "Nie można odczytać żądanej ilości danych." #: lib/utils_device.c:207 lib/utils_storage_wrappers.c:99 -#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2257 +#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2283 #, c-format msgid "Device %s does not exist or access denied." msgstr "Urządzenie %s nie istnieje lub dostęp jest zabroniony." @@ -902,16 +902,16 @@ msgstr "Żądana liczba wątków PBKDF nie może być zerowa." msgid "Only PBKDF2 is supported in FIPS mode." msgstr "W trybie FIPS obsługiwana jest tylko PBKDF2." -#: lib/utils_benchmark.c:171 +#: lib/utils_benchmark.c:175 msgid "PBKDF benchmark disabled but iterations not set." msgstr "Test wydajności PBKDF jest wyłączony, ale nie ustawiono liczby iteracji." -#: lib/utils_benchmark.c:190 +#: lib/utils_benchmark.c:194 #, c-format msgid "Not compatible PBKDF2 options (using hash algorithm %s)." msgstr "Niekompatybilne opcje PBKDF2 (przy użyciu algorytmu skrótu %s)." -#: lib/utils_benchmark.c:210 +#: lib/utils_benchmark.c:214 msgid "Not compatible PBKDF options." msgstr "Niekompatybilne opcje PBKDF." @@ -960,9 +960,9 @@ msgstr "Rozmiar klucza w trybie XTS musi wynosić 256 lub 512 bitów." msgid "Cipher specification should be in [cipher]-[mode]-[iv] format." msgstr "Określenie szyfru powinno być w formacie [szyfr]-[tryb]-[iv]." -#: lib/luks1/keyencryption.c:85 lib/luks1/keymanage.c:353 -#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1132 -#: lib/luks2/luks2_json_metadata.c:1518 lib/luks2/luks2_keyslot.c:711 +#: lib/luks1/keyencryption.c:85 lib/luks1/keymanage.c:358 +#: lib/luks1/keymanage.c:665 lib/luks1/keymanage.c:1133 +#: lib/luks2/luks2_json_metadata.c:1510 lib/luks2/luks2_keyslot.c:711 #, c-format msgid "Cannot write to device %s, permission denied." msgstr "Nie można zapisać na urządzenie %s, brak uprawnień." @@ -980,13 +980,13 @@ msgstr "Nie udało się uzyskać dostępu do urządzenia do tymczasowego przecho msgid "IO error while encrypting keyslot." msgstr "Błąd we/wy podczas szyfrowania klucza." -#: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:356 -#: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:659 +#: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:361 +#: lib/luks1/keymanage.c:619 lib/luks1/keymanage.c:668 lib/tcrypt/tcrypt.c:659 #: lib/fvault2/fvault2.c:872 lib/verity/verity.c:67 lib/verity/verity.c:183 #: lib/verity/verity_hash.c:312 lib/verity/verity_hash.c:321 #: lib/verity/verity_hash.c:350 lib/verity/verity_fec.c:247 #: lib/verity/verity_fec.c:259 lib/verity/verity_fec.c:264 -#: lib/luks2/luks2_json_metadata.c:1521 src/utils_reencrypt_luks1.c:108 +#: lib/luks2/luks2_json_metadata.c:1513 src/utils_reencrypt_luks1.c:108 #: src/utils_reencrypt_luks1.c:120 #, c-format msgid "Cannot open device %s." @@ -1001,61 +1001,61 @@ msgstr "Błąd we/wy podczas odszyfrowywania klucza." msgid "Device %s is too small. (LUKS1 requires at least % bytes.)" msgstr "Urządzenie %s jest zbyt małe (LUKS1 wymaga przynajmniej % bajtów)." -#: lib/luks1/keymanage.c:138 lib/luks1/keymanage.c:146 -#: lib/luks1/keymanage.c:158 lib/luks1/keymanage.c:169 -#: lib/luks1/keymanage.c:181 +#: lib/luks1/keymanage.c:143 lib/luks1/keymanage.c:151 +#: lib/luks1/keymanage.c:163 lib/luks1/keymanage.c:174 +#: lib/luks1/keymanage.c:186 #, c-format msgid "LUKS keyslot %u is invalid." msgstr "Numer klucza LUKS %u jest nieprawidłowy." -#: lib/luks1/keymanage.c:254 lib/luks2/luks2_json_metadata.c:1382 +#: lib/luks1/keymanage.c:259 lib/luks2/luks2_json_metadata.c:1382 #, c-format msgid "Requested header backup file %s already exists." msgstr "Żądany plik kopii zapasowej nagłówka %s już istnieje." -#: lib/luks1/keymanage.c:256 lib/luks2/luks2_json_metadata.c:1384 +#: lib/luks1/keymanage.c:261 lib/luks2/luks2_json_metadata.c:1384 #, c-format msgid "Cannot create header backup file %s." msgstr "Nie można utworzyć pliku kopii zapasowej nagłówka %s." -#: lib/luks1/keymanage.c:263 lib/luks2/luks2_json_metadata.c:1391 +#: lib/luks1/keymanage.c:268 lib/luks2/luks2_json_metadata.c:1391 #, c-format msgid "Cannot write header backup file %s." msgstr "Nie można zapisać pliku kopii zapasowej nagłówka %s." -#: lib/luks1/keymanage.c:295 lib/luks2/luks2_json_metadata.c:1428 +#: lib/luks1/keymanage.c:300 lib/luks2/luks2_json_metadata.c:1420 msgid "Backup file does not contain valid LUKS header." msgstr "Plik kopii zapasowej nie zawiera prawidłowego nagłówka LUKS." -#: lib/luks1/keymanage.c:308 lib/luks1/keymanage.c:580 -#: lib/luks2/luks2_json_metadata.c:1450 +#: lib/luks1/keymanage.c:313 lib/luks1/keymanage.c:585 +#: lib/luks2/luks2_json_metadata.c:1442 #, c-format msgid "Cannot open header backup file %s." msgstr "Nie można otworzyć pliku kopii zapasowej nagłówka %s." -#: lib/luks1/keymanage.c:316 lib/luks2/luks2_json_metadata.c:1458 +#: lib/luks1/keymanage.c:321 lib/luks2/luks2_json_metadata.c:1450 #, c-format msgid "Cannot read header backup file %s." msgstr "Nie można odczytać pliku kopii zapasowej nagłówka %s." -#: lib/luks1/keymanage.c:326 +#: lib/luks1/keymanage.c:331 msgid "Data offset or key size differs on device and backup, restore failed." msgstr "Offset danych lub rozmiar klucza różnią się między urządzeniem a kopią zapasową; przywrócenie nie powiodło się." -#: lib/luks1/keymanage.c:334 +#: lib/luks1/keymanage.c:339 #, c-format msgid "Device %s %s%s" msgstr "Urządzenie %s %s%s" -#: lib/luks1/keymanage.c:335 +#: lib/luks1/keymanage.c:340 msgid "does not contain LUKS header. Replacing header can destroy data on that device." msgstr "nie zawiera nagłówka LUKS. Nadpisanie nagłówka może zniszczyć dane na tym urządzeniu." -#: lib/luks1/keymanage.c:336 +#: lib/luks1/keymanage.c:341 msgid "already contains LUKS header. Replacing header will destroy existing keyslots." msgstr "już zawiera nagłówek LUKS. Nadpisanie nagłówka zniszczy istniejące klucze." -#: lib/luks1/keymanage.c:337 lib/luks2/luks2_json_metadata.c:1490 +#: lib/luks1/keymanage.c:342 lib/luks2/luks2_json_metadata.c:1482 msgid "" "\n" "WARNING: real device header has different UUID than backup!" @@ -1063,130 +1063,130 @@ msgstr "" "\n" "UWAGA: nagłówek prawdziwego urządzenia ma inny UUID niż kopia zapasowa!" -#: lib/luks1/keymanage.c:385 +#: lib/luks1/keymanage.c:390 msgid "Non standard key size, manual repair required." msgstr "Niestandardowy rozmiar klucza, wymagana ręczna naprawa." -#: lib/luks1/keymanage.c:395 +#: lib/luks1/keymanage.c:400 msgid "Non standard keyslots alignment, manual repair required." msgstr "Niestandardowe wyrównanie kluczy, wymagana ręczna naprawa." -#: lib/luks1/keymanage.c:404 +#: lib/luks1/keymanage.c:409 #, c-format msgid "Cipher mode repaired (%s -> %s)." msgstr "Tryb szyfru poprawiony (%s -> %s)." -#: lib/luks1/keymanage.c:415 +#: lib/luks1/keymanage.c:420 #, c-format msgid "Cipher hash repaired to lowercase (%s)." msgstr "Skrót szyfru poprawiony na małe litery (%s)." -#: lib/luks1/keymanage.c:417 lib/luks1/keymanage.c:523 -#: lib/luks1/keymanage.c:756 +#: lib/luks1/keymanage.c:422 lib/luks1/keymanage.c:528 +#: lib/luks1/keymanage.c:757 #, c-format msgid "Requested LUKS hash %s is not supported." msgstr "Żądany skrót LUKS %s nie jest obsługiwany." -#: lib/luks1/keymanage.c:431 +#: lib/luks1/keymanage.c:436 msgid "Repairing keyslots." msgstr "Naprawianie kluczy." -#: lib/luks1/keymanage.c:450 +#: lib/luks1/keymanage.c:455 #, c-format msgid "Keyslot %i: offset repaired (%u -> %u)." msgstr "Klucz %i: naprawiono offset (%u -> %u)." -#: lib/luks1/keymanage.c:458 +#: lib/luks1/keymanage.c:463 #, c-format msgid "Keyslot %i: stripes repaired (%u -> %u)." msgstr "Klucz %i: naprawiono pasy (%u -> %u)." -#: lib/luks1/keymanage.c:467 +#: lib/luks1/keymanage.c:472 #, c-format msgid "Keyslot %i: bogus partition signature." msgstr "Klucz %i: błędna sygnatura partycji." -#: lib/luks1/keymanage.c:472 +#: lib/luks1/keymanage.c:477 #, c-format msgid "Keyslot %i: salt wiped." msgstr "Klucz %i: zarodek wymazany." -#: lib/luks1/keymanage.c:489 +#: lib/luks1/keymanage.c:494 msgid "Writing LUKS header to disk." msgstr "Zapis nagłówka LUKS na dysk." -#: lib/luks1/keymanage.c:494 +#: lib/luks1/keymanage.c:499 msgid "Repair failed." msgstr "Naprawa nie powiodła się." -#: lib/luks1/keymanage.c:549 +#: lib/luks1/keymanage.c:554 #, c-format msgid "LUKS cipher mode %s is invalid." msgstr "Tryb szyfru LUKS %s jest nieprawidłowy." -#: lib/luks1/keymanage.c:554 +#: lib/luks1/keymanage.c:559 #, c-format msgid "LUKS hash %s is invalid." msgstr "Skrót LUKS %s jest nieprawidłowy." -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 +#: lib/luks1/keymanage.c:566 src/cryptsetup.c:1367 msgid "No known problems detected for LUKS header." msgstr "W nagłówku LUKS nie wykryto żadnych znanych problemów." -#: lib/luks1/keymanage.c:689 +#: lib/luks1/keymanage.c:690 #, c-format msgid "Error during update of LUKS header on device %s." msgstr "Błąd podczas uaktualniania nagłówka LUKS na urządzeniu %s." -#: lib/luks1/keymanage.c:697 +#: lib/luks1/keymanage.c:698 #, c-format msgid "Error re-reading LUKS header after update on device %s." msgstr "Błęd podczas ponownego odczytu nagłówka LUKS po uaktualnieniu na urządzeniu %s." -#: lib/luks1/keymanage.c:750 +#: lib/luks1/keymanage.c:751 msgid "Data offset for LUKS header must be either 0 or higher than header size." msgstr "Offset danych dla nagłówka LUKS musi wynosić 0 lub więcej niż rozmiar nagłówka." -#: lib/luks1/keymanage.c:761 lib/luks1/keymanage.c:832 -#: lib/luks2/luks2_json_format.c:231 lib/luks2/luks2_json_metadata.c:1261 +#: lib/luks1/keymanage.c:762 lib/luks1/keymanage.c:833 +#: lib/luks2/luks2_json_format.c:240 lib/luks2/luks2_json_metadata.c:1261 #: src/utils_reencrypt.c:703 msgid "Wrong LUKS UUID format provided." msgstr "Podano zły format LUKS UUID." -#: lib/luks1/keymanage.c:783 +#: lib/luks1/keymanage.c:784 msgid "Cannot create LUKS header: reading random salt failed." msgstr "Nie można utworzyć nagłówka LUKS: odczyt losowego zarodka nie powiódł się." -#: lib/luks1/keymanage.c:811 +#: lib/luks1/keymanage.c:812 #, c-format msgid "Cannot create LUKS header: header digest failed (using hash %s)." msgstr "Nie można utworzyć nagłówka LUKS: uzyskanie skrótu nagłówka nie powiodło się (przy użyciu algorytmu %s)." -#: lib/luks1/keymanage.c:856 +#: lib/luks1/keymanage.c:857 #, c-format msgid "Key slot %d active, purge first." msgstr "Klucz numer %d jest aktywny, należy go najpierw wyczyścić." -#: lib/luks1/keymanage.c:862 +#: lib/luks1/keymanage.c:863 #, c-format msgid "Key slot %d material includes too few stripes. Header manipulation?" msgstr "Klucz %d zawiera zbyt mało pasów. Zmieniony nagłówek?" -#: lib/luks1/keymanage.c:900 lib/luks2/luks2_keyslot_luks2.c:217 +#: lib/luks1/keymanage.c:901 lib/luks2/luks2_keyslot_luks2.c:217 msgid "PBKDF2 iteration value overflow." msgstr "Przepełnienie wartości iteracji PBKDF2" -#: lib/luks1/keymanage.c:1022 +#: lib/luks1/keymanage.c:1023 #, c-format msgid "Cannot open keyslot (using hash %s)." msgstr "Nie można otworzyć klucza (przy użyciu skrótu %s)." -#: lib/luks1/keymanage.c:1118 +#: lib/luks1/keymanage.c:1119 #, c-format msgid "Key slot %d is invalid, please select keyslot between 0 and %d." msgstr "Numer klucza %d jest błędny, proszę wybrać numer od 0 do %d." -#: lib/luks1/keymanage.c:1136 lib/luks2/luks2_keyslot.c:715 +#: lib/luks1/keymanage.c:1137 lib/luks2/luks2_keyslot.c:715 #, c-format msgid "Cannot wipe device %s." msgstr "Nie można wymazać urządzenia %s." @@ -1364,33 +1364,33 @@ msgstr "Ta operacja nie jest obsługiwana." msgid "Unexpected key data size." msgstr "Nieoczekiwany rozmiar danych klucza." -#: lib/bitlk/bitlk.c:1442 +#: lib/bitlk/bitlk.c:1448 msgid "This BITLK device is in an unsupported state and cannot be activated." msgstr "To urządzenie BITLK jest w nieobsługiwanym stanie i może być uaktywnione." -#: lib/bitlk/bitlk.c:1447 +#: lib/bitlk/bitlk.c:1453 #, c-format msgid "BITLK devices with type '%s' cannot be activated." msgstr "Urządzenia BITLK o typie '%s' nie mogą być uaktywnione." -#: lib/bitlk/bitlk.c:1486 +#: lib/bitlk/bitlk.c:1492 #, c-format msgid "WARNING: BitLocker volume size % does not match the underlying device size %" msgstr "UWAGA: rozmiar wolumenu BitLockera % nie zgadza się z rozmiarem urządzenia %" -#: lib/bitlk/bitlk.c:1613 +#: lib/bitlk/bitlk.c:1634 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK IV." msgstr "Nie można uaktywnić urządzenia, brak obsługi BITLK IV w module dm-crypt jądra." -#: lib/bitlk/bitlk.c:1617 +#: lib/bitlk/bitlk.c:1638 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK Elephant diffuser." msgstr "Nie można uaktywnić urządzenia, brak obsługi dyfuzora BITLK Elephant w module dm-crypt jądra." -#: lib/bitlk/bitlk.c:1621 +#: lib/bitlk/bitlk.c:1642 msgid "Cannot activate device, kernel dm-crypt is missing support for large sector size." msgstr "Nie można uaktywnić urządzenia, brak obsługi dużego rozmiaru sektora w module dm-crypt jądra." -#: lib/bitlk/bitlk.c:1625 +#: lib/bitlk/bitlk.c:1646 msgid "Cannot activate device, kernel dm-zero module is missing." msgstr "Nie można uaktywnić urządzenia, brak modułu jądra dm-zero." @@ -1547,24 +1547,24 @@ msgstr "Nie udało się określić rozmiaru urządzenia %s." msgid "Incompatible kernel dm-integrity metadata (version %u) detected on %s." msgstr "Wykryto niezgodne metadane dm-integrity jądra (wersja %u) na %s." -#: lib/integrity/integrity.c:308 lib/integrity/integrity.c:492 +#: lib/integrity/integrity.c:309 lib/integrity/integrity.c:493 msgid "Kernel does not support dm-integrity mapping." msgstr "Jądro nie obsługuje odwzorowań dm-integrity." -#: lib/integrity/integrity.c:314 +#: lib/integrity/integrity.c:315 msgid "Kernel does not support dm-integrity fixed metadata alignment." msgstr "Jądro nie obsługuje stałego wyrównania metadanych dm-integrity." -#: lib/integrity/integrity.c:323 +#: lib/integrity/integrity.c:324 msgid "Kernel refuses to activate insecure recalculate option (see legacy activation options to override)." msgstr "Jądro odmawia uaktywnienia niebezpiecznej opcji przeliczenia (p. stare opcje aktywacji, aby wymusić)." -#: lib/integrity/integrity.c:329 +#: lib/integrity/integrity.c:330 msgid "Kernel does not support dm-integrity inline mode." msgstr "Jądro nie obsługuje trybu wbudowanego dm-integrity." #: lib/luks2/luks2_disk_metadata.c:382 lib/luks2/luks2_json_metadata.c:1184 -#: lib/luks2/luks2_json_metadata.c:1510 +#: lib/luks2/luks2_json_metadata.c:1502 #, c-format msgid "Failed to acquire write lock on device %s." msgstr "Nie udało się uzyskać blokady dla zapisu na urządzeniu %s." @@ -1586,22 +1586,22 @@ msgstr "" msgid "WARNING: keyslots area (% bytes) is very small, available LUKS2 keyslot count is very limited.\n" msgstr "UWAGA: obszar kluczy (% bajtów) bardzo mały, dostępna liczba kluczy LUKS2 jest bardzo ograniczona.\n" -#: lib/luks2/luks2_json_format.c:418 +#: lib/luks2/luks2_json_format.c:427 msgid "Requested data offset is too small." msgstr "Żądany offset danych jest zbyt mały." -#: lib/luks2/luks2_json_format.c:459 +#: lib/luks2/luks2_json_format.c:468 #, c-format msgid "WARNING: LUKS2 metadata size changed to % bytes.\n" msgstr "UWAGA: rozmiar metadanych LUKS2 zmienił się na % (w bajtach).\n" -#: lib/luks2/luks2_json_format.c:463 +#: lib/luks2/luks2_json_format.c:472 #, c-format msgid "WARNING: LUKS2 keyslots area size changed to % bytes.\n" msgstr "UWAGA: rozmiar obszaru kluczy LUKS2 zmienił się na % (w bajtach).\n" #: lib/luks2/luks2_json_metadata.c:1171 lib/luks2/luks2_json_metadata.c:1357 -#: lib/luks2/luks2_json_metadata.c:1417 lib/luks2/luks2_keyslot_luks2.c:71 +#: lib/luks2/luks2_json_metadata.c:1412 lib/luks2/luks2_keyslot_luks2.c:71 #, c-format msgid "Failed to acquire read lock on device %s." msgstr "Nie udało się uzyskać blokady do odczytu na urządzeniu %s." @@ -1610,33 +1610,33 @@ msgstr "Nie udało się uzyskać blokady do odczytu na urządzeniu %s." msgid "Label is too long." msgstr "Etykieta jest zbyt długa." -#: lib/luks2/luks2_json_metadata.c:1435 +#: lib/luks2/luks2_json_metadata.c:1427 #, c-format msgid "Forbidden LUKS2 requirements detected in backup %s." msgstr "Wykryto zabronione wymagania LUKS2 w kopii zapasowej %s." -#: lib/luks2/luks2_json_metadata.c:1474 +#: lib/luks2/luks2_json_metadata.c:1466 msgid "Data offset differ on device and backup, restore failed." msgstr "Offset danych różni się między urządzeniem a kopią zapasową; przywrócenie nie powiodło się." -#: lib/luks2/luks2_json_metadata.c:1480 +#: lib/luks2/luks2_json_metadata.c:1472 msgid "Binary header with keyslot areas size differ on device and backup, restore failed." msgstr "Nagłówek binarny z rozmiarem obszarów kluczy różni się między urządzeniem a kopią zapasową; przywrócenie nie powiodło się." -#: lib/luks2/luks2_json_metadata.c:1487 +#: lib/luks2/luks2_json_metadata.c:1479 #, c-format msgid "Device %s %s%s%s%s" msgstr "Urządzenie %s %s%s%s%s" -#: lib/luks2/luks2_json_metadata.c:1488 +#: lib/luks2/luks2_json_metadata.c:1480 msgid "does not contain LUKS2 header. Replacing header can destroy data on that device." msgstr "nie zawiera nagłówka LUKS2. Nadpisanie nagłówka może zniszczyć dane na tym urządzeniu." -#: lib/luks2/luks2_json_metadata.c:1489 +#: lib/luks2/luks2_json_metadata.c:1481 msgid "already contains LUKS2 header. Replacing header will destroy existing keyslots." msgstr "już zawiera nagłówek LUKS2. Nadpisanie nagłówka zniszczy istniejące klucze." -#: lib/luks2/luks2_json_metadata.c:1491 +#: lib/luks2/luks2_json_metadata.c:1483 msgid "" "\n" "WARNING: unknown LUKS2 requirements detected in real device header!\n" @@ -1646,7 +1646,7 @@ msgstr "" "UWAGA: wykryto nieznane wymagania LUKS2 w nagłówku prawdziwego urządzenia!\n" "Nadpisanie nagłówka kopią zapasową może uszkodzić dane na tym urządzeniu!" -#: lib/luks2/luks2_json_metadata.c:1493 +#: lib/luks2/luks2_json_metadata.c:1485 msgid "" "\n" "WARNING: Unfinished offline reencryption detected on the device!\n" @@ -1656,84 +1656,84 @@ msgstr "" "UWAGA: wykryto niezakończone ponowne szyfrowanie offline na urządzeniu!\n" "Nadpisanie nagłówka kopią zapasową może uszkodzić dane." -#: lib/luks2/luks2_json_metadata.c:1591 +#: lib/luks2/luks2_json_metadata.c:1583 #, c-format msgid "Ignored unknown flag %s." msgstr "Zignorowano nieznaną flagę %s." -#: lib/luks2/luks2_json_metadata.c:2563 lib/luks2/luks2_reencrypt.c:2110 +#: lib/luks2/luks2_json_metadata.c:2555 lib/luks2/luks2_reencrypt.c:2110 #, c-format msgid "Missing key for dm-crypt segment %u" msgstr "Brak klucza dla segmentu dm-crypt %u" -#: lib/luks2/luks2_json_metadata.c:2575 lib/luks2/luks2_reencrypt.c:2123 +#: lib/luks2/luks2_json_metadata.c:2567 lib/luks2/luks2_reencrypt.c:2123 msgid "Failed to set dm-crypt segment." msgstr "Nie udało się ustawić segmentu dm-crypt." -#: lib/luks2/luks2_json_metadata.c:2581 lib/luks2/luks2_reencrypt.c:2129 +#: lib/luks2/luks2_json_metadata.c:2573 lib/luks2/luks2_reencrypt.c:2129 msgid "Failed to set dm-linear segment." msgstr "Nie udało się ustawić segmentu dm-linear." -#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:580 +#: lib/luks2/luks2_json_metadata.c:2693 src/utils_reencrypt.c:580 msgid "No known cipher specification pattern detected in LUKS2 header." msgstr "Nie wykryto znanego wzorca określającego szyfr w nagłówku LUKS2." -#: lib/luks2/luks2_json_metadata.c:2709 +#: lib/luks2/luks2_json_metadata.c:2701 msgid "OPAL device must have static device size." msgstr "Urządzenie OPAL musi mieć statyczny rozmiar." -#: lib/luks2/luks2_json_metadata.c:2729 +#: lib/luks2/luks2_json_metadata.c:2721 msgid "Encrypted OPAL device with integrity must be smaller than locking range." msgstr "Szyfrowane urządzenie OPAL z integralnością musi być mniejsze, niż zakres blokowania." -#: lib/luks2/luks2_json_metadata.c:2734 +#: lib/luks2/luks2_json_metadata.c:2726 msgid "OPAL device must have same size as locking range." msgstr "Urządzenie OPAL musi mieć ten sam rozmiar, co zakres blokowania." -#: lib/luks2/luks2_json_metadata.c:2754 +#: lib/luks2/luks2_json_metadata.c:2746 #, c-format msgid "OPAL device is %s already unlocked.\n" msgstr "Urządzenie OPAL %s jest już odblokowane.\n" -#: lib/luks2/luks2_json_metadata.c:2793 +#: lib/luks2/luks2_json_metadata.c:2785 msgid "Unsupported device integrity configuration." msgstr "Nieobsługiwana konfiguracja integralności urządzenia." -#: lib/luks2/luks2_json_metadata.c:2809 +#: lib/luks2/luks2_json_metadata.c:2801 msgid "Underlying dm-integrity device with unexpected provided data sectors." msgstr "Urządzenie dm-integrity stojące poniżej o nieoczekiwanych sektorach danych." -#: lib/luks2/luks2_json_metadata.c:2911 +#: lib/luks2/luks2_json_metadata.c:2903 msgid "Reencryption in-progress. Cannot deactivate device." msgstr "Podobne szyfrowanie trwa. Nie można dezaktywować urządzenia." -#: lib/luks2/luks2_json_metadata.c:2922 lib/luks2/luks2_reencrypt.c:4287 +#: lib/luks2/luks2_json_metadata.c:2914 lib/luks2/luks2_reencrypt.c:4287 #, c-format msgid "Failed to replace suspended device %s with dm-error target." msgstr "Nie udało się zastąpić wstrzymanego urządzenia %s celem dm-error." -#: lib/luks2/luks2_json_metadata.c:3001 lib/luks2/luks2_json_metadata.c:3023 +#: lib/luks2/luks2_json_metadata.c:2993 lib/luks2/luks2_json_metadata.c:3015 #, c-format msgid "Device %s was deactivated but hardware OPAL device cannot be locked." msgstr "Urządzenie %s zostało dezaktywowane, ale sprzętowe urządzenie OPAL nie może być zablokowane." -#: lib/luks2/luks2_json_metadata.c:3045 +#: lib/luks2/luks2_json_metadata.c:3037 msgid "Unmet LUKS2 requirements detected." msgstr "Wykryto niespełnione wymagania LUKS2." -#: lib/luks2/luks2_json_metadata.c:3053 +#: lib/luks2/luks2_json_metadata.c:3045 msgid "Operation incompatible with device marked for legacy reencryption. Aborting." msgstr "Operacja niezgodna z urządzeniem oznaczonym do ponownego szyfrowania starym szyfrem. Przerwano." -#: lib/luks2/luks2_json_metadata.c:3055 +#: lib/luks2/luks2_json_metadata.c:3047 msgid "Operation incompatible with device marked for LUKS2 reencryption. Aborting." msgstr "Operacja niezgodna z urządzeniem oznaczonym do ponownego szyfrowania LUKS2. Przerwano." -#: lib/luks2/luks2_json_metadata.c:3057 +#: lib/luks2/luks2_json_metadata.c:3049 msgid "Operation incompatible with device using OPAL. Aborting." msgstr "Operacja niezgodna z urządzeniem używającym OPAL. Przerwano." -#: lib/luks2/luks2_json_metadata.c:3059 +#: lib/luks2/luks2_json_metadata.c:3051 msgid "Operation incompatible with device using inline HW tags. Aborting." msgstr "Operacja niezgodna z urządzeniem używającym wbudowanych znaczników HW. Przerwano." @@ -1800,60 +1800,60 @@ msgstr "Nie można użyć określenia szyfru %s-%s dla klucza LUKS2." msgid "Unable to move keyslot area. Not enough space." msgstr "Nie można przenieść obszaru kluczy. Brak miejsca." -#: lib/luks2/luks2_luks1_convert.c:619 +#: lib/luks2/luks2_luks1_convert.c:627 msgid "Cannot convert to LUKS2 format - invalid metadata." msgstr "Nie można przekonwertować do formatu LUKS1 - błędne metadane." -#: lib/luks2/luks2_luks1_convert.c:636 +#: lib/luks2/luks2_luks1_convert.c:644 msgid "Unable to move keyslot area. LUKS2 keyslots area too small." msgstr "Nie można przenieść obszaru kluczy. Obszar kluczy LUKS2 zbyt mały." -#: lib/luks2/luks2_luks1_convert.c:642 lib/luks2/luks2_luks1_convert.c:972 +#: lib/luks2/luks2_luks1_convert.c:650 lib/luks2/luks2_luks1_convert.c:980 msgid "Unable to move keyslot area." msgstr "Nie można przenieść obszaru kluczy." -#: lib/luks2/luks2_luks1_convert.c:757 +#: lib/luks2/luks2_luks1_convert.c:765 msgid "Cannot convert to LUKS1 format - default segment encryption sector size is not 512 bytes." msgstr "Nie można przekonwertować do formatu LUKS1 - domyślny rozmiar sektora szyfrowania segmentu nie wynosi 512 bajtów." -#: lib/luks2/luks2_luks1_convert.c:765 +#: lib/luks2/luks2_luks1_convert.c:773 msgid "Cannot convert to LUKS1 format - key slot digests are not LUKS1 compatible." msgstr "Nie można przekonwertować formatu LUKS1 - skróty kluczy nie są zgodne z LUKS1." -#: lib/luks2/luks2_luks1_convert.c:779 +#: lib/luks2/luks2_luks1_convert.c:787 #, c-format msgid "Cannot convert to LUKS1 format - device uses wrapped key cipher %s." msgstr "Nie można przekonwertować formatu LUKS1 - urządzenie używa szyfru %s z obudowanym kluczem." -#: lib/luks2/luks2_luks1_convert.c:784 +#: lib/luks2/luks2_luks1_convert.c:792 msgid "Cannot convert to LUKS1 format - device uses more segments." msgstr "Nie można przekonwertować formatu LUKS1 - urządzenie używa większej liczby segmentów." -#: lib/luks2/luks2_luks1_convert.c:792 +#: lib/luks2/luks2_luks1_convert.c:800 #, c-format msgid "Cannot convert to LUKS1 format - LUKS2 header contains %u token(s)." msgstr "Nie można przekonwertować do formatu LUKS1 - nagłówek LUKS2 zawiera %u token(ów)." -#: lib/luks2/luks2_luks1_convert.c:798 +#: lib/luks2/luks2_luks1_convert.c:806 msgid "Cannot convert to LUKS1 format - there are no active keyslots." msgstr "Nie można przekonwertować do formatu LUKS1 - nie ma aktywnych kluczy." -#: lib/luks2/luks2_luks1_convert.c:810 +#: lib/luks2/luks2_luks1_convert.c:818 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is in invalid state." msgstr "Nie można przekonwertować do formatu LUKS1 - klucz %u jest w błędnym stanie." -#: lib/luks2/luks2_luks1_convert.c:815 +#: lib/luks2/luks2_luks1_convert.c:823 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is unbound." msgstr "Nie można przekonwertować do formatu LUKS1 - klucz %u nie jest podłączony." -#: lib/luks2/luks2_luks1_convert.c:820 +#: lib/luks2/luks2_luks1_convert.c:828 #, c-format msgid "Cannot convert to LUKS1 format - slot %u (over maximum slots) is still active." msgstr "Nie można przekonwertować do formatu LUKS1 - klucz %u (powyzej maksimum) jest nadal aktywny." -#: lib/luks2/luks2_luks1_convert.c:825 +#: lib/luks2/luks2_luks1_convert.c:833 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is not LUKS1 compatible." msgstr "Nie można przekonwertować do formatu LUKS1 - klucz %u nie jest zgodny z LUKS1." @@ -2138,7 +2138,7 @@ msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encry msgstr "Parametry szyfrowania kluczy nie są zgodne z szyfrowaniem kluczy LUKS2." #: src/cryptsetup.c:150 src/cryptsetup.c:1180 src/cryptsetup.c:1545 -#: src/utils_reencrypt.c:1890 src/utils_reencrypt_luks1.c:502 +#: src/utils_reencrypt.c:1916 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." msgstr "Nie wykryto znanego wzorca określającego szyfr." @@ -2166,7 +2166,7 @@ msgid "WARNING: The --keyfile-size option is being ignored, the read size is the msgstr "UWAGA: Opcja --keyfile-size jest ignorowana, rozmiar odczytu jest taki sam, jak rozmiar klucza szyfrującego.\n" #: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 -#: src/integritysetup.c:189 src/utils_reencrypt.c:2141 +#: src/integritysetup.c:189 src/utils_reencrypt.c:2167 #, c-format msgid "Blkid scan failed for %s." msgstr "Skanowanie blkid dla %s nie powiodło się." @@ -2248,7 +2248,7 @@ msgstr "Urządzenie %s nie jest prawidłowym urządzeniem FVAULT2." msgid "Cannot determine volume key size for FVAULT2, please use --key-size option." msgstr "Nie można określić rozmiaru klucza wolumenu dla FVAULT2, proszę użyć opcji --key-size." -#: src/cryptsetup.c:849 src/veritysetup.c:317 src/integritysetup.c:422 +#: src/cryptsetup.c:849 src/veritysetup.c:317 src/integritysetup.c:424 #, c-format msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "Urządzenie %s jest nadal aktywne i zaplanowane do odroczonego usunięcia.\n" @@ -2437,7 +2437,7 @@ msgid "LUKS file container %s is too small for activation, there is no remaining msgstr "Kontener plikowy LUKS %s jest zbyt mały do uaktywnienia, nie ma miejsca pozostałego na dane." #: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:278 -#: src/utils_reencrypt.c:371 src/utils_reencrypt.c:1910 +#: src/utils_reencrypt.c:371 src/utils_reencrypt.c:1936 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "Nie można określić rozmiaru klucza wolumenu dla LUKS bez kluczy, proszę użyć opcji --key-size." @@ -2733,7 +2733,7 @@ msgstr "Opcji --volume-key-keyring nie można łączyć z --hash ani --volume-ke msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "Obie opcje --volume-key-file muszą być sparowane z odpowiednimi opcjami --key-size." -#: src/cryptsetup.c:3373 src/veritysetup.c:673 src/integritysetup.c:793 +#: src/cryptsetup.c:3373 src/veritysetup.c:673 src/integritysetup.c:800 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "Opcje --cancel-deferred i --deferred nie mogą być użyte naraz." @@ -2801,21 +2801,21 @@ msgstr "Akcja wymaga określonego klucza. Należy użyć parametru --key-slot." msgid " [--type ] []" msgstr " [--type ] []" -#: src/cryptsetup.c:3482 src/veritysetup.c:487 src/integritysetup.c:560 +#: src/cryptsetup.c:3482 src/veritysetup.c:487 src/integritysetup.c:563 msgid "open device as " msgstr "otwarcie urządzenia jako " #: src/cryptsetup.c:3483 src/cryptsetup.c:3484 src/cryptsetup.c:3485 -#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:561 -#: src/integritysetup.c:562 src/integritysetup.c:564 +#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:564 +#: src/integritysetup.c:565 src/integritysetup.c:567 msgid "" msgstr "" -#: src/cryptsetup.c:3483 src/veritysetup.c:488 src/integritysetup.c:561 +#: src/cryptsetup.c:3483 src/veritysetup.c:488 src/integritysetup.c:564 msgid "close device (remove mapping)" msgstr "zamknięcie urządzenia (usunięcie odwzorowania)" -#: src/cryptsetup.c:3484 src/integritysetup.c:564 +#: src/cryptsetup.c:3484 src/integritysetup.c:567 msgid "resize active device" msgstr "zmiana rozmiaru aktywnego urządzenia" @@ -2943,7 +2943,7 @@ msgstr " " msgid "Manipulate LUKS2 tokens" msgstr "Operacja na tokenach LUKS2" -#: src/cryptsetup.c:3527 src/veritysetup.c:505 src/integritysetup.c:579 +#: src/cryptsetup.c:3527 src/veritysetup.c:505 src/integritysetup.c:582 msgid "" "\n" " is one of:\n" @@ -3044,7 +3044,7 @@ msgstr "" msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: Domyślny rozmiar klucza z trybem XTS (dwa klucze wewnętrzne) będzie podwojony.\n" -#: src/cryptsetup.c:3594 src/veritysetup.c:647 src/integritysetup.c:739 +#: src/cryptsetup.c:3594 src/veritysetup.c:647 src/integritysetup.c:742 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: wymaga %s jako argumentów" @@ -3095,31 +3095,31 @@ msgstr "Opcja --priority może mieć wartości tylko ignore/normal/prefer." msgid "Invalid maximal tries specification." msgstr "Błędne określenie maksymalnej liczby prób." -#: src/cryptsetup.c:3793 src/veritysetup.c:568 src/integritysetup.c:659 +#: src/cryptsetup.c:3793 src/veritysetup.c:568 src/integritysetup.c:662 msgid "Show this help message" msgstr "Wyświetlenie tego opisu" -#: src/cryptsetup.c:3794 src/veritysetup.c:569 src/integritysetup.c:660 +#: src/cryptsetup.c:3794 src/veritysetup.c:569 src/integritysetup.c:663 msgid "Display brief usage" msgstr "Wyświetlenie krótkiej informacji o składni" -#: src/cryptsetup.c:3795 src/veritysetup.c:570 src/integritysetup.c:661 +#: src/cryptsetup.c:3795 src/veritysetup.c:570 src/integritysetup.c:664 msgid "Print package version" msgstr "Wypisanie wersji pakietu" -#: src/cryptsetup.c:3806 src/veritysetup.c:581 src/integritysetup.c:672 +#: src/cryptsetup.c:3806 src/veritysetup.c:581 src/integritysetup.c:675 msgid "Help options:" msgstr "Opcje pomocnicze:" -#: src/cryptsetup.c:3829 src/veritysetup.c:602 src/integritysetup.c:692 +#: src/cryptsetup.c:3829 src/veritysetup.c:602 src/integritysetup.c:695 msgid "[OPTION...] " msgstr "[OPCJA...] " -#: src/cryptsetup.c:3838 src/veritysetup.c:611 src/integritysetup.c:703 +#: src/cryptsetup.c:3838 src/veritysetup.c:611 src/integritysetup.c:706 msgid "Argument missing." msgstr "Brak argumentu ." -#: src/cryptsetup.c:3917 src/veritysetup.c:642 src/integritysetup.c:734 +#: src/cryptsetup.c:3917 src/veritysetup.c:642 src/integritysetup.c:737 msgid "Unknown action." msgstr "Nieznana akcja." @@ -3224,7 +3224,7 @@ msgstr "Polecenie wymaga lub opcji --root-hash-file jako argu msgid " " msgstr " " -#: src/veritysetup.c:485 src/integritysetup.c:559 +#: src/veritysetup.c:485 src/integritysetup.c:562 msgid "format device" msgstr "sformatowanie urządzenia" @@ -3240,7 +3240,7 @@ msgstr "weryfikacja urządzenia" msgid " []" msgstr " []" -#: src/veritysetup.c:489 src/integritysetup.c:562 +#: src/veritysetup.c:489 src/integritysetup.c:565 msgid "show active device status" msgstr "pokazanie stanu aktywnego urządzenia" @@ -3248,7 +3248,7 @@ msgstr "pokazanie stanu aktywnego urządzenia" msgid "" msgstr "" -#: src/veritysetup.c:490 src/integritysetup.c:563 +#: src/veritysetup.c:490 src/integritysetup.c:566 msgid "show on-disk information" msgstr "wyświetlenie informacji z dysku" @@ -3312,20 +3312,20 @@ msgstr " (wbudowane znaczniki hw)" msgid "Setting recalculate flag is not supported, you may consider using --wipe instead." msgstr "Ustawianie flagi recalculate nie jest obsługiwane, zamiast tego można rozważyć użycie --wipe." -#: src/integritysetup.c:382 src/integritysetup.c:546 +#: src/integritysetup.c:382 src/integritysetup.c:549 #, c-format msgid "Device %s is not a valid INTEGRITY device." msgstr "Urządzenie %s nie jest prawidłowym urządzeniem INTEGRITY." -#: src/integritysetup.c:559 src/integritysetup.c:563 +#: src/integritysetup.c:562 src/integritysetup.c:566 msgid "" msgstr "" -#: src/integritysetup.c:560 +#: src/integritysetup.c:563 msgid " " msgstr " " -#: src/integritysetup.c:583 +#: src/integritysetup.c:586 #, c-format msgid "" "\n" @@ -3336,7 +3336,7 @@ msgstr "" " to urządzenie do utworzenia pod %s\n" " to urządzenie zawierające dane ze znacznikami integralności\n" -#: src/integritysetup.c:588 +#: src/integritysetup.c:591 #, c-format msgid "" "\n" @@ -3349,51 +3349,55 @@ msgstr "" "\tAlgorytm sumy kontrolnej: %s\n" "\tMaksymalny rozmiar pliku klucza: %dkB\n" -#: src/integritysetup.c:645 +#: src/integritysetup.c:648 #, c-format msgid "Invalid --%s size. Maximum is %u bytes." msgstr "Błędny rozmiar --%s. Maksimum w bajtach to %u." -#: src/integritysetup.c:748 +#: src/integritysetup.c:751 msgid "Both key file and key size options must be specified." msgstr "Muszą być podane obie opcje: pliku klucza i rozmiaru klucza." -#: src/integritysetup.c:752 +#: src/integritysetup.c:755 msgid "Both journal integrity key file and key size options must be specified." msgstr "Muszą być podane obie opcje: pliku klucza integralności i rozmiaru klucza." -#: src/integritysetup.c:755 +#: src/integritysetup.c:758 msgid "Journal integrity algorithm must be specified if journal integrity key is used." msgstr "Algorytm integralności kroniki musi być podany, jeśli używany jest klucz integralności kroniki." -#: src/integritysetup.c:759 +#: src/integritysetup.c:762 msgid "Both journal encryption key file and key size options must be specified." msgstr "Muszą być podane obie opcje: pliku szyfrowania kroniki i rozmiaru klucza." -#: src/integritysetup.c:762 +#: src/integritysetup.c:765 msgid "Journal encryption algorithm must be specified if journal encryption key is used." msgstr "Algorytm szyfrowania kroniki musi być podany, jeśli używany jest klucz szyfrowania kroniki." -#: src/integritysetup.c:766 +#: src/integritysetup.c:769 msgid "Recovery and bitmap mode options are mutually exclusive." msgstr "Opcje trybu odtwarzania i bitmapy wykluczają się wzajemnie." -#: src/integritysetup.c:773 +#: src/integritysetup.c:776 msgid "Journal options cannot be used in bitmap mode." msgstr "Opcji kroniki nie można używać w trybie bitmapy." -#: src/integritysetup.c:778 +#: src/integritysetup.c:781 msgid "Bitmap options can be used only in bitmap mode." msgstr "Opcje bitmapy mogą być używane tylko w trybie bitmapy." -#: src/integritysetup.c:784 +#: src/integritysetup.c:787 msgid "Inline mode cannot be combined with journal or bitmap options." msgstr "Tryb wbudowany nie może być łączony z opcjami kroniki ani bitmapy." -#: src/integritysetup.c:788 +#: src/integritysetup.c:791 msgid "Inline mode cannot be combined with separate data device." msgstr "Tryb wbudowany nie może być łączony z osobnym urządzeniem danych." +#: src/integritysetup.c:795 +msgid "Keyed discards can be enabled only with keyed algorithms like HMAC." +msgstr "Porzucenia dla kluczy mogą być włączone tylko z algorytmami klucza, takimi jak HMAC." + #: src/utils_tools.c:105 msgid "" "\n" @@ -3745,7 +3749,7 @@ msgstr "Urządzenie nie jest w trybie odszyfrowywania LUKS2. Konflikt opcji --de msgid "Device is in reencryption using datashift resilience. Requested --resilience option cannot be applied." msgstr "Urządzenie jest w trybie ponownego szyfrowania z użyciem odporności przesunięcia danych. Nie można użyć żądanej opcji --resilience." -#: src/utils_reencrypt.c:283 src/utils_reencrypt.c:1927 +#: src/utils_reencrypt.c:283 src/utils_reencrypt.c:1953 msgid "Cannot determine volume key size for LUKS without keyslots, please use --new-key-size option." msgstr "Nie można określić rozmiaru klucza wolumenu dla LUKS bez kluczy, proszę użyć opcji --new-key-size." @@ -3779,7 +3783,7 @@ msgstr "" "Żądany --sector-size % jest niezgodny z superblokiem %s\n" "(rozmiar bloku: % B), wykrytym na urządzeniu %s." -#: src/utils_reencrypt.c:680 src/utils_reencrypt.c:2207 +#: src/utils_reencrypt.c:680 src/utils_reencrypt.c:2233 msgid "Encryption without detached header (--header) is not possible without data device size reduction (--reduce-device-size)." msgstr "Szyfrowanie bez odłączonego nagłówka (--header) jest niemożliwe bez ograniczenia rozmiaru urządzenia danych (--reduce-device-size)." @@ -3847,42 +3851,43 @@ msgstr "Inicjowanie ponownego szyfrowania nie powiodło się. Kopia zapasowa nag msgid "LUKS2 decryption is supported with detached header device only (with data offset set to 0)." msgstr "Odszyfrowanie LUKS2 jest obsługiwane tylko z urządzeniem z odłączonym nagłówkiem (z offsetem danych ustawionym na 0)." -#: src/utils_reencrypt.c:1490 -msgid "No token could unlock the device." -msgstr "Żaden token nie może odblokować urządzenia." - -#: src/utils_reencrypt.c:1522 src/utils_reencrypt.c:1531 +#: src/utils_reencrypt.c:1506 src/utils_reencrypt.c:1531 +#: src/utils_reencrypt.c:1548 src/utils_reencrypt.c:1557 msgid "Not enough free keyslots for reencryption." msgstr "Za mało wolnych kluczy do ponownego szyfrowania." -#: src/utils_reencrypt.c:1562 +#: src/utils_reencrypt.c:1513 +msgid "No token could unlock the device." +msgstr "Żaden token nie może odblokować urządzenia." + +#: src/utils_reencrypt.c:1588 msgid "Key file or keyring key description can be used only with --key-slot or with exactly one key slot active." msgstr "Pliku klucza lub opisu klucza pęku kluczy można użyć tylko z --key-slot albo przy dokładnie jednym aktywnym kluczu." -#: src/utils_reencrypt.c:1569 src/utils_reencrypt.c:1582 +#: src/utils_reencrypt.c:1595 src/utils_reencrypt.c:1608 #: src/utils_reencrypt_luks1.c:1092 src/utils_reencrypt_luks1.c:1103 #, c-format msgid "Enter passphrase for key slot %d: " msgstr "Hasło dla klucza %d: " -#: src/utils_reencrypt.c:1879 +#: src/utils_reencrypt.c:1905 #, c-format msgid "Switching data encryption cipher to %s.\n" msgstr "Zmiana szyfru do szyfrowania danych na %s.\n" -#: src/utils_reencrypt.c:1980 src/utils_reencrypt.c:2001 +#: src/utils_reencrypt.c:2006 src/utils_reencrypt.c:2027 msgid "Use --force-no-keyslots to reencrypt device with active keyslots by passing volume keys directly." msgstr "Można użyć --force-no-keyslots, aby ponownie zaszyfrować urządzenie z aktywnymi kluczami przekazując bezpośrednio klucze wolumenu." -#: src/utils_reencrypt.c:1996 +#: src/utils_reencrypt.c:2022 msgid "Option --new-volume-key-file must be paired with --new-key-size" msgstr "Opcja --new-volume-key-file musi być sparowana z --new-key-size" -#: src/utils_reencrypt.c:2038 +#: src/utils_reencrypt.c:2064 msgid "No data segment parameters changed. Reencryption aborted." msgstr "Nie zmieniono parametrów segmentu danych. Ponowne szyfrowanie przerwane." -#: src/utils_reencrypt.c:2075 +#: src/utils_reencrypt.c:2101 msgid "" "Encryption sector size increase on offline device is not supported.\n" "Activate the device first or use --force-offline-reencrypt option (dangerous!)." @@ -3890,7 +3895,7 @@ msgstr "" "Zwiększanie rozmiaru sektora szyfrowania na urządzeniu offline nie jest obsługiwane.\n" "Należy najpierw uaktywnić urządzenie lub użyć opcji --force-offline-reencrypt (niebezpieczna!)." -#: src/utils_reencrypt.c:2117 src/utils_reencrypt_luks1.c:688 +#: src/utils_reencrypt.c:2143 src/utils_reencrypt_luks1.c:688 #: src/utils_reencrypt_luks1.c:759 msgid "" "\n" @@ -3899,58 +3904,58 @@ msgstr "" "\n" "Ponowne szyfrowanie przerwane." -#: src/utils_reencrypt.c:2122 +#: src/utils_reencrypt.c:2148 msgid "Resuming LUKS reencryption in forced offline mode.\n" msgstr "Wznawianie ponownego szyfrowania LUKS w wymuszonym trybie offline.\n" -#: src/utils_reencrypt.c:2145 +#: src/utils_reencrypt.c:2171 #, c-format msgid "Device %s contains broken LUKS metadata. Aborting operation." msgstr "Urządzenie %s zawiera uszkodzone metadane LUKS. Przerwano operację." -#: src/utils_reencrypt.c:2161 src/utils_reencrypt.c:2183 +#: src/utils_reencrypt.c:2187 src/utils_reencrypt.c:2209 #, c-format msgid "Device %s is already LUKS device. Aborting operation." msgstr "Urządzenie %s jest już urządzeniem LUKS. Przerwano operację." -#: src/utils_reencrypt.c:2189 +#: src/utils_reencrypt.c:2215 #, c-format msgid "Device %s is already in LUKS reencryption. Aborting operation." msgstr "Urządzenie %s jest już w trybie ponownego szyfrowania LUKS. Przerwano operację." -#: src/utils_reencrypt.c:2272 +#: src/utils_reencrypt.c:2298 msgid "LUKS2 decryption requires --header option." msgstr "Odszyfrowanie LUKS2 wymaga opcji --header." -#: src/utils_reencrypt.c:2320 +#: src/utils_reencrypt.c:2346 msgid "Command requires device as argument." msgstr "Polecenie wymaga urządzenia jako argumentu." -#: src/utils_reencrypt.c:2333 +#: src/utils_reencrypt.c:2359 #, c-format msgid "Conflicting versions. Device %s is LUKS1." msgstr "Konflikt wersji. Urządzenie %s jest urządzeniem LUKS1." -#: src/utils_reencrypt.c:2339 +#: src/utils_reencrypt.c:2365 #, c-format msgid "Conflicting versions. Device %s is in LUKS1 reencryption." msgstr "Konflikt wersji. Urządzenie %s jest w trybie ponownego szyfrowania LUKS1." -#: src/utils_reencrypt.c:2345 +#: src/utils_reencrypt.c:2371 #, c-format msgid "Conflicting versions. Device %s is LUKS2." msgstr "Konflikt wersji. Urządzenie %s jest urządzeniem LUKS2." -#: src/utils_reencrypt.c:2351 +#: src/utils_reencrypt.c:2377 #, c-format msgid "Conflicting versions. Device %s is in LUKS2 reencryption." msgstr "Konflikt wersji. Urządzenie %s jest w trybie ponownego szyfrowania LUKS2." -#: src/utils_reencrypt.c:2357 +#: src/utils_reencrypt.c:2383 msgid "LUKS2 reencryption already initialized. Aborting operation." msgstr "Ponowne szyfrowanie LUKS2 jest już zainicjowane. Przerywanie operacji." -#: src/utils_reencrypt.c:2364 +#: src/utils_reencrypt.c:2390 msgid "Device reencryption not in progress." msgstr "Ponowne szyfrowanie urządzenia nie jest w toku." From d7aacefaa3f90ad218fd5aab64508b705ef48bcf Mon Sep 17 00:00:00 2001 From: Remus-Gabriel Chelu Date: Fri, 4 Sep 2026 18:57:03 +0200 Subject: [PATCH 211/244] po: update ro.po (from translationproject.org) --- po/ro.po | 658 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 332 insertions(+), 326 deletions(-) diff --git a/po/ro.po b/po/ro.po index 5bd85f158..0dc8a21c0 100644 --- a/po/ro.po +++ b/po/ro.po @@ -20,14 +20,15 @@ # Actualizare a traducerii pentru versiunea 2.8.5-rc0, făcută de R-GC, mar-2026. # Actualizare a traducerii pentru versiunea 2.8.7-rc1, făcută de R-GC, iun-2026. # Actualizare a traducerii pentru versiunea 2.8.7-rc2, făcută de R-GC, iul-2026. +# Actualizare a traducerii pentru versiunea 2.8.8-rc0, făcută de R-GC, sep-2026. # Actualizare a traducerii pentru versiunea Y, făcută de X, Y(luna-anul). # msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.7-rc2\n" +"Project-Id-Version: cryptsetup 2.8.8-rc0\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2026-07-09 10:46+0200\n" -"PO-Revision-Date: 2026-07-11 17:10+0200\n" +"POT-Creation-Date: 2026-09-02 13:18+0200\n" +"PO-Revision-Date: 2026-09-02 17:36+0200\n" "Last-Translator: Remus-Gabriel Chelu \n" "Language-Team: Romanian \n" "Language: ro\n" @@ -38,78 +39,78 @@ msgstr "" "X-Bugs: Report translation errors to the Language-Team address.\n" "X-Generator: Poedit 3.8\n" -#: lib/libdevmapper.c:419 +#: lib/libdevmapper.c:422 msgid "Cannot initialize device-mapper, running as non-root user." msgstr "Nu se poate inițializa «device-mapper», rulând ca utilizator non-root." -#: lib/libdevmapper.c:422 +#: lib/libdevmapper.c:425 msgid "Cannot initialize device-mapper. Is dm_mod kernel module loaded?" msgstr "Nu se poate inițializa «device-mapper». Este încărcat modulul nucleului, «dm_mod»?" -#: lib/libdevmapper.c:1125 +#: lib/libdevmapper.c:1129 msgid "Requested deferred flag is not supported." msgstr "Fanionul de întârziere solicitat nu este acceptat." -#: lib/libdevmapper.c:1194 +#: lib/libdevmapper.c:1198 #, c-format msgid "DM-UUID for device %s was truncated." msgstr "DM-UUID pentru dispozitivul %s a fost trunchiat." -#: lib/libdevmapper.c:1598 +#: lib/libdevmapper.c:1602 msgid "Unknown dm target type." msgstr "Tip de țintă dm necunoscut." -#: lib/libdevmapper.c:1725 lib/libdevmapper.c:1731 lib/libdevmapper.c:1850 -#: lib/libdevmapper.c:1853 +#: lib/libdevmapper.c:1729 lib/libdevmapper.c:1735 lib/libdevmapper.c:1854 +#: lib/libdevmapper.c:1857 msgid "Requested dm-crypt performance options are not supported." msgstr "Opțiunile de performanță dm-crypt solicitate nu sunt acceptate." -#: lib/libdevmapper.c:1740 lib/libdevmapper.c:1746 lib/libdevmapper.c:1758 +#: lib/libdevmapper.c:1744 lib/libdevmapper.c:1750 lib/libdevmapper.c:1762 msgid "Requested dm-verity data corruption handling options are not supported." msgstr "Opțiunile de gestionare a corupției datelor dm-verity solicitate nu sunt acceptate." -#: lib/libdevmapper.c:1752 +#: lib/libdevmapper.c:1756 msgid "Requested dm-verity tasklets option is not supported." msgstr "Opțiunea de tasklets dm-verity solicitată nu este acceptată." -#: lib/libdevmapper.c:1764 +#: lib/libdevmapper.c:1768 msgid "Requested dm-verity FEC options are not supported." msgstr "Opțiunile FEC dm-verity solicitate nu sunt acceptate." -#: lib/libdevmapper.c:1770 +#: lib/libdevmapper.c:1774 msgid "Requested data integrity options are not supported." msgstr "Opțiunile de integritate a datelor solicitate nu sunt acceptate." -#: lib/libdevmapper.c:1774 +#: lib/libdevmapper.c:1778 msgid "Requested sector_size option is not supported." msgstr "Opțiunea sector_size solicitată nu este acceptată." -#: lib/libdevmapper.c:1779 +#: lib/libdevmapper.c:1783 msgid "The device size is not multiple of the requested sector size." msgstr "Dimensiunea dispozitivului nu este un multiplu al dimensiunii solicitate a sectorului." -#: lib/libdevmapper.c:1783 +#: lib/libdevmapper.c:1787 msgid "Requested integrity_key_size option is not supported." msgstr "Opțiunea integrity_key_size solicitată nu este acceptată." -#: lib/libdevmapper.c:1790 lib/libdevmapper.c:1796 +#: lib/libdevmapper.c:1794 lib/libdevmapper.c:1800 msgid "Requested automatic recalculation of integrity tags is not supported." msgstr "Recalcularea automată a etichetelor de integritate solicitată nu este acceptată." -#: lib/libdevmapper.c:1802 lib/libdevmapper.c:1856 lib/libdevmapper.c:1859 -#: lib/luks2/luks2_json_metadata.c:2799 +#: lib/libdevmapper.c:1806 lib/libdevmapper.c:1860 lib/libdevmapper.c:1863 +#: lib/luks2/luks2_json_metadata.c:2791 msgid "Discard/TRIM is not supported." msgstr "Înlăturarea/Decuparea(TRIM) nu este acceptată." -#: lib/libdevmapper.c:1808 +#: lib/libdevmapper.c:1812 msgid "Requested dm-integrity bitmap mode is not supported." msgstr "Modul de hartă de biți dm-integrity solicitat nu este acceptat." -#: lib/libdevmapper.c:1814 +#: lib/libdevmapper.c:1818 msgid "Requested dm-integrity inline mode is not supported." msgstr "Modul inline dm-integrity solicitat nu este acceptat." -#: lib/libdevmapper.c:2870 +#: lib/libdevmapper.c:2877 #, c-format msgid "Failed to query dm-%s segment." msgstr "Nu s-a putut interoga segmentul dm-%s." @@ -160,7 +161,7 @@ msgstr "Nu s-a putut inițializa utilitarul de criptare al generatorului de nume msgid "Cannot initialize crypto backend." msgstr "Nu s-a putut inițializa utilitarul de criptare ." -#: lib/setup.c:308 lib/setup.c:2769 lib/verity/verity.c:109 +#: lib/setup.c:308 lib/setup.c:2779 lib/verity/verity.c:109 #, c-format msgid "Hash algorithm %s not supported." msgstr "Algoritmul sumei de control %s nu este acceptat." @@ -174,7 +175,7 @@ msgstr "Eroare de procesare a cheii (folosind suma de control %s)." msgid "Cannot determine device type. Incompatible activation of device?" msgstr "Nu se poate determina tipul de dispozitiv. Activare a dispozitivului incompatibilă?" -#: lib/setup.c:398 lib/setup.c:4177 +#: lib/setup.c:398 lib/setup.c:4193 msgid "This operation is supported only for LUKS device." msgstr "Această operație este acceptată doar pentru dispozitive LUKS." @@ -196,7 +197,7 @@ msgstr "Slotul de cheie %d este nu este valid, selectați între 0 și %d." msgid "Key slot %d is full, please select another one." msgstr "Slotul pentru chei %d este ocupat, selectați altul." -#: lib/setup.c:534 lib/setup.c:3878 +#: lib/setup.c:534 lib/setup.c:3888 msgid "Device size is not aligned to device logical block size." msgstr "Dimensiunea dispozitivului nu este aliniată la dimensiunea blocului logic al dispozitivului." @@ -205,7 +206,7 @@ msgstr "Dimensiunea dispozitivului nu este aliniată la dimensiunea blocului log msgid "Header detected but device %s is too small." msgstr "Antet detectat, dar dispozitivul %s este prea mic." -#: lib/setup.c:672 lib/setup.c:3763 lib/setup.c:5272 +#: lib/setup.c:672 lib/setup.c:3773 lib/setup.c:5288 #: lib/luks2/luks2_reencrypt.c:3949 lib/luks2/luks2_reencrypt.c:4438 msgid "This operation is not supported for this device type." msgstr "Această operație nu este suportată pentru acest tip de dispozitiv." @@ -218,553 +219,553 @@ msgstr "Operație ilegală cu recriptare în curs." msgid "Failed to rollback LUKS2 metadata in memory." msgstr "Nu s-au putut reîncărca metadatele LUKS2 în memorie." -#: lib/setup.c:896 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 +#: lib/setup.c:896 lib/luks1/keymanage.c:241 lib/luks1/keymanage.c:519 #: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 #: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 #: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2954 -#: src/cryptsetup.c:3022 src/utils_reencrypt.c:2284 +#: src/cryptsetup.c:3022 src/utils_reencrypt.c:2310 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." msgstr "Dispozitivul %s nu este un dispozitiv LUKS valid." -#: lib/setup.c:899 lib/luks1/keymanage.c:517 +#: lib/setup.c:899 lib/luks1/keymanage.c:522 #, c-format msgid "Unsupported LUKS version %d." msgstr "Versiunea %d de LUKS nu este acceptată." -#: lib/setup.c:1273 +#: lib/setup.c:1279 #, c-format msgid "No known cipher specification pattern detected for active device %s." msgstr "Nu a fost detectat niciun model cunoscut de specificație de cifrare pentru dispozitivul activ %s." -#: lib/setup.c:1518 lib/setup.c:3510 lib/setup.c:3602 lib/setup.c:3614 -#: lib/setup.c:3786 lib/setup.c:5850 +#: lib/setup.c:1528 lib/setup.c:3520 lib/setup.c:3612 lib/setup.c:3624 +#: lib/setup.c:3796 lib/setup.c:5866 #, c-format msgid "Device %s is not active." msgstr "Dispozitivul %s nu este activ." -#: lib/setup.c:1535 +#: lib/setup.c:1545 #, c-format msgid "Underlying device for crypt device %s disappeared." msgstr "Dispozitivul subiacent pentru dispozitivul criptat %s a dispărut." -#: lib/setup.c:1617 +#: lib/setup.c:1627 msgid "Invalid plain crypt parameters." msgstr "Parametrii de criptare simplă sunt incorecți." -#: lib/setup.c:1622 lib/setup.c:2672 +#: lib/setup.c:1632 lib/setup.c:2682 msgid "Invalid key size." msgstr "Dimensiunea cheii este nevalidă." -#: lib/setup.c:1627 lib/setup.c:2677 lib/setup.c:2882 +#: lib/setup.c:1637 lib/setup.c:2687 lib/setup.c:2892 msgid "UUID is not supported for this crypt type." msgstr "UUID-ul nu este acceptat pentru acest tip de criptare." -#: lib/setup.c:1632 lib/setup.c:2682 +#: lib/setup.c:1642 lib/setup.c:2692 msgid "Detached metadata device is not supported for this crypt type." msgstr "Dispozitivul cu metadate detașate nu este acceptat pentru acest tip de criptare." -#: lib/setup.c:1642 lib/setup.c:1890 lib/luks2/luks2_reencrypt.c:3035 +#: lib/setup.c:1652 lib/setup.c:1900 lib/luks2/luks2_reencrypt.c:3035 #: src/cryptsetup.c:1492 src/cryptsetup.c:3761 msgid "Unsupported encryption sector size." msgstr "Dimensiunea sectorului de criptare nu este acceptată." -#: lib/setup.c:1650 lib/setup.c:1919 lib/setup.c:3872 +#: lib/setup.c:1660 lib/setup.c:1929 lib/setup.c:3882 msgid "Device size is not aligned to requested sector size." msgstr "Dimensiunea dispozitivului nu este aliniată la dimensiunea sectorului solicitată." -#: lib/setup.c:1702 lib/setup.c:1954 lib/setup.c:2331 +#: lib/setup.c:1712 lib/setup.c:1964 lib/setup.c:2341 msgid "Can't format LUKS without device." msgstr "Formatarea LUKS fără dispozitiv nu este posibilă." -#: lib/setup.c:1707 lib/setup.c:1959 +#: lib/setup.c:1717 lib/setup.c:1969 #, c-format msgid "Zoned device %s cannot be used for LUKS header." msgstr "Dispozitivul %s divizat în zone nu poate fi utilizat pentru antetul LUKS." -#: lib/setup.c:1714 lib/setup.c:1966 lib/setup.c:2337 +#: lib/setup.c:1724 lib/setup.c:1976 lib/setup.c:2347 msgid "Requested data alignment is not compatible with data offset." msgstr "Alinierea datelor solicitată nu este compatibilă cu poziția datelor." -#: lib/setup.c:1754 lib/setup.c:1984 +#: lib/setup.c:1764 lib/setup.c:1994 msgid "WARNING: DAX device can corrupt data as it does not guarantee atomic sector updates.\n" msgstr "AVERTISMENT: Dispozitivul DAX poate corupe datele, deoarece nu garantează actualizări atomice ale sectoarelor.\n" -#: lib/setup.c:1792 lib/setup.c:2091 lib/setup.c:2112 lib/setup.c:2520 -#: lib/setup.c:2567 lib/setup.c:2899 +#: lib/setup.c:1802 lib/setup.c:2101 lib/setup.c:2122 lib/setup.c:2530 +#: lib/setup.c:2577 lib/setup.c:2909 #, c-format msgid "Cannot wipe header on device %s." msgstr "Nu se poate șterge antetul pe dispozitivul %s." -#: lib/setup.c:1805 lib/setup.c:2164 +#: lib/setup.c:1815 lib/setup.c:2174 #, c-format msgid "Device %s is too small for activation, there is no remaining space for data.\n" msgstr "Dispozitivul %s este prea mic pentru activare, nu a mai rămas spațiu pentru date.\n" -#: lib/setup.c:1846 +#: lib/setup.c:1856 msgid "Volume key is too small for encryption with integrity extensions." msgstr "Cheia de volum este prea mică pentru criptare cu extensii de integritate." -#: lib/setup.c:1850 +#: lib/setup.c:1860 msgid "Integrity key size is too small." msgstr "Dimensiunea cheii de integritate este prea mică." -#: lib/setup.c:1859 +#: lib/setup.c:1869 #, c-format msgid "Cipher %s-%s (key size %zd bits) is not available." msgstr "Cifrul %s-%s (dimensiunea cheii %zd biți) nu este disponibil." -#: lib/setup.c:1900 +#: lib/setup.c:1910 msgid "WARNING: The device activation will fail, dm-crypt is missing support for requested encryption sector size.\n" msgstr "AVERTISMENT: Activarea dispozitivului va eșua, dm-crypt nu are suport pentru dimensiunea sectorului de criptare solicitată.\n" -#: lib/setup.c:2094 lib/setup.c:2461 lib/setup.c:2523 lib/utils_device.c:906 +#: lib/setup.c:2104 lib/setup.c:2471 lib/setup.c:2533 lib/utils_device.c:906 #: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3074 #: lib/luks2/luks2_reencrypt.c:4498 #, c-format msgid "Device %s is too small." msgstr "Dispozitivul %s este prea mic." -#: lib/setup.c:2105 lib/setup.c:2144 lib/setup.c:2560 lib/setup.c:2618 +#: lib/setup.c:2115 lib/setup.c:2154 lib/setup.c:2570 lib/setup.c:2628 #, c-format msgid "Cannot format device %s in use." msgstr "Nu se poate formata dispozitivul %s, este în uz." -#: lib/setup.c:2108 lib/setup.c:2147 lib/setup.c:2563 lib/setup.c:2621 +#: lib/setup.c:2118 lib/setup.c:2157 lib/setup.c:2573 lib/setup.c:2631 #, c-format msgid "Cannot format device %s, permission denied." msgstr "Nu se poate formata dispozitivul %s; permisiune refuzată." -#: lib/setup.c:2132 lib/setup.c:2590 lib/setup.c:2972 +#: lib/setup.c:2142 lib/setup.c:2600 lib/setup.c:2982 #, c-format msgid "Cannot format integrity for device %s." msgstr "Nu se poate formata integritatea pentru dispozitivul %s." -#: lib/setup.c:2151 lib/setup.c:2629 +#: lib/setup.c:2161 lib/setup.c:2639 #, c-format msgid "Cannot format device %s." msgstr "Nu se poate formata dispozitivul %s." -#: lib/setup.c:2194 +#: lib/setup.c:2204 msgid "Cannot get OPAL alignment parameters." msgstr "Nu se pot obține parametrii de aliniere OPAL." -#: lib/setup.c:2206 +#: lib/setup.c:2216 msgid "Bogus OPAL logical block size." msgstr "Dimensiune falsă a blocului logic OPAL." -#: lib/setup.c:2211 lib/luks2/hw_opal/hw_opal.c:305 +#: lib/setup.c:2221 lib/luks2/hw_opal/hw_opal.c:305 msgid "Bogus OPAL logical block size differs from device block size." msgstr "Dimensiunea falsă a blocului logic OPAL diferă de dimensiunea blocului dispozitivului." -#: lib/setup.c:2217 +#: lib/setup.c:2227 msgid "Requested data offset is not compatible with OPAL block size." msgstr "Intervalul(offset) de date solicitat nu este compatibil cu dimensiunea blocului OPAL." -#: lib/setup.c:2224 +#: lib/setup.c:2234 msgid "Requested data alignment is not compatible with OPAL alignment." msgstr "Alinierea datelor solicitată nu este compatibilă cu alinierea OPAL." -#: lib/setup.c:2244 +#: lib/setup.c:2254 msgid "Data offset does not satisfy OPAL alignment requirements." msgstr "Intervalul datelor nu îndeplinește cerințele de aliniere OPAL." -#: lib/setup.c:2257 +#: lib/setup.c:2267 msgid "Requested data alignment does not satisfy locking range alignment requirements." msgstr "Alinierea datelor solicitată nu satisface cerințele de aliniere a intervalului de blocare." -#: lib/setup.c:2471 +#: lib/setup.c:2481 #, c-format msgid "Compensating device size by % sectors to align it with OPAL alignment granularity." msgstr "Compensarea dimensiunii dispozitivului cu % sectoare pentru a-l alinia cu gradul de finețe al alinierii OPAL." -#: lib/setup.c:2531 lib/setup.c:4260 lib/setup.c:4466 lib/utils_wipe.c:356 -#: lib/luks2/luks2_json_metadata.c:2742 lib/luks2/luks2_json_metadata.c:3017 +#: lib/setup.c:2541 lib/setup.c:4276 lib/setup.c:4482 lib/utils_wipe.c:356 +#: lib/luks2/luks2_json_metadata.c:2734 lib/luks2/luks2_json_metadata.c:3009 #, c-format msgid "Failed to acquire OPAL lock on device %s." msgstr "Nu s-a putut obține blocarea OPAL pe dispozitivul %s." -#: lib/setup.c:2541 +#: lib/setup.c:2551 msgid "Incorrect OPAL Admin key." msgstr "Cheie de administrare OPAL incorectă." -#: lib/setup.c:2543 +#: lib/setup.c:2553 msgid "Cannot setup OPAL segment." msgstr "Nu se poate configura segmentul OPAL." -#: lib/setup.c:2625 +#: lib/setup.c:2635 #, c-format msgid "Cannot format device %s, OPAL device seems to be fully write-protected now." msgstr "Nu se poate formata dispozitivul %s, dispozitivul OPAL pare a fi complet protejat la scriere acum." -#: lib/setup.c:2627 +#: lib/setup.c:2637 msgid "This is perhaps a bug in firmware. Run OPAL PSID reset and reconnect for recovery." msgstr "Aceasta este probabil o eroare în firmware. Efectuați reinițierea PSID OPAL și reconectați-vă pentru recuperare." -#: lib/setup.c:2647 +#: lib/setup.c:2657 #, c-format msgid "Locking range %d reset on device %s failed." msgstr "Reinițierea intervalului de blocare %d pe dispozitivul %s a eșuat." -#: lib/setup.c:2667 +#: lib/setup.c:2677 msgid "Can't format LOOPAES without device." msgstr "Nu se poate formata LOOPAES fără dispozitiv." -#: lib/setup.c:2712 +#: lib/setup.c:2722 msgid "Can't format VERITY without device." msgstr "Nu se poate formata VERITY fără dispozitiv." -#: lib/setup.c:2723 lib/verity/verity.c:88 +#: lib/setup.c:2733 lib/verity/verity.c:88 #, c-format msgid "Unsupported VERITY hash type %d." msgstr "Tip de sumă de control VERITY neacceptat %d." -#: lib/setup.c:2729 lib/verity/verity.c:96 +#: lib/setup.c:2739 lib/verity/verity.c:96 msgid "Unsupported VERITY block size." msgstr "Dimensiunea blocului VERITY nu este acceptată." -#: lib/setup.c:2734 lib/verity/verity.c:61 +#: lib/setup.c:2744 lib/verity/verity.c:61 msgid "Unsupported VERITY hash offset." msgstr "Decalajul sumei de control VERITY nu este acceptat." -#: lib/setup.c:2739 +#: lib/setup.c:2749 msgid "Unsupported VERITY FEC offset." msgstr "Decalajul FEC VERITY nu este acceptat." -#: lib/setup.c:2763 +#: lib/setup.c:2773 msgid "Data area overlaps with hash area." msgstr "Zona de date se suprapune cu zona de sume de control." -#: lib/setup.c:2788 +#: lib/setup.c:2798 msgid "Hash area overlaps with FEC area." msgstr "Zona sumelor de control se suprapune cu zona FEC." -#: lib/setup.c:2795 +#: lib/setup.c:2805 msgid "Data area overlaps with FEC area." msgstr "Zona de date se suprapune cu zona FEC." -#: lib/setup.c:2887 +#: lib/setup.c:2897 msgid "Integrity key size mismatch." msgstr "Dimensiunea cheii de integritate nu coincide." -#: lib/setup.c:2938 +#: lib/setup.c:2948 #, c-format msgid "WARNING: Requested tag size %d bytes differs from %s size output (%d bytes).\n" msgstr "AVERTISMENT: Dimensiunea solicitată a etichetei %d octeți diferă de dimensiunea %s de ieșire (%d octeți).\n" -#: lib/setup.c:3051 lib/setup.c:3153 +#: lib/setup.c:3061 lib/setup.c:3163 #, c-format msgid "Unknown or unsupported device type %s requested." msgstr "A fost solicitat un tip de dispozitiv %s necunoscut sau neacceptat." -#: lib/setup.c:3067 +#: lib/setup.c:3077 #, c-format msgid "Device %s does not provide inline integrity data fields." msgstr "Dispozitivul %s nu furnizează câmpuri de date de integritate în linie „inline”." -#: lib/setup.c:3073 +#: lib/setup.c:3083 #, c-format msgid "Inline tag size % [bytes] is larger than % provided by device %s." msgstr "Dimensiunea etichetei în linie % [ cteți] este mai mare decât % furnizată de dispozitivul %s." -#: lib/setup.c:3088 +#: lib/setup.c:3098 #, c-format msgid "Sector must be the same as device hardware sector (%zu bytes)." msgstr "Sectorul trebuie să fie la fel ca sectorul hardware al dispozitivului (%zu octeți)." -#: lib/setup.c:3518 lib/setup.c:3607 lib/setup.c:3620 +#: lib/setup.c:3528 lib/setup.c:3617 lib/setup.c:3630 #, c-format msgid "Unsupported parameters on device %s." msgstr "Parametri neacceptați pentru dispozitivul %s." -#: lib/setup.c:3524 lib/setup.c:3627 lib/luks2/luks2_reencrypt.c:2929 +#: lib/setup.c:3534 lib/setup.c:3637 lib/luks2/luks2_reencrypt.c:2929 #: lib/luks2/luks2_reencrypt.c:3198 lib/luks2/luks2_reencrypt.c:3595 #, c-format msgid "Mismatching parameters on device %s." msgstr "Parametrii nepotriviți în dispozitivul %s." -#: lib/setup.c:3650 +#: lib/setup.c:3660 msgid "Crypt devices mismatch." msgstr "Dispozitivele de criptare nu se potrivesc." -#: lib/setup.c:3682 lib/setup.c:3687 lib/luks2/luks2_reencrypt.c:2413 +#: lib/setup.c:3692 lib/setup.c:3697 lib/luks2/luks2_reencrypt.c:2413 #: lib/luks2/luks2_reencrypt.c:2945 lib/luks2/luks2_reencrypt.c:4237 #, c-format msgid "Failed to reload device %s." msgstr "Nu s-a putut reîncărca dispozitivul %s." -#: lib/setup.c:3693 lib/setup.c:3699 lib/luks2/luks2_reencrypt.c:2383 +#: lib/setup.c:3703 lib/setup.c:3709 lib/luks2/luks2_reencrypt.c:2383 #: lib/luks2/luks2_reencrypt.c:2390 lib/luks2/luks2_reencrypt.c:2959 #, c-format msgid "Failed to suspend device %s." msgstr "Nu s-a putut suspenda dispozitivul %s." -#: lib/setup.c:3705 lib/luks2/luks2_reencrypt.c:2397 +#: lib/setup.c:3715 lib/luks2/luks2_reencrypt.c:2397 #: lib/luks2/luks2_reencrypt.c:2980 lib/luks2/luks2_reencrypt.c:4150 #: lib/luks2/luks2_reencrypt.c:4241 #, c-format msgid "Failed to resume device %s." msgstr "Nu s-a putut reîncărca dispozitivul %s." -#: lib/setup.c:3720 +#: lib/setup.c:3730 #, c-format msgid "Fatal error while reloading device %s (on top of device %s)." msgstr "Eroare fatală la reîncărcarea dispozitivului %s (în partea superioară a dispozitivului %s)." -#: lib/setup.c:3723 lib/setup.c:3725 +#: lib/setup.c:3733 lib/setup.c:3735 #, c-format msgid "Failed to switch device %s to dm-error." msgstr "Nu s-a putut comuta dispozitivul %s la dm-error." -#: lib/setup.c:3768 +#: lib/setup.c:3778 msgid "Can not resize LUKS2 device with static size." msgstr "Nu se poate redimensiona dispozitivul LUKS2 cu o dimensiune statică." -#: lib/setup.c:3773 +#: lib/setup.c:3783 msgid "Resize of LUKS2 device with integrity protection is not supported." msgstr "Redimensionarea dispozitivului LUKS2 cu protecție de integritate nu este acceptată." -#: lib/setup.c:3819 +#: lib/setup.c:3829 msgid "Cannot resize loop device." msgstr "Nu se poate redimensiona dispozitivul de buclă." -#: lib/setup.c:3863 +#: lib/setup.c:3873 msgid "WARNING: Maximum size already set or kernel doesn't support resize.\n" msgstr "AVERTISMENT: Dimensiunea maximă a fost deja stabilită sau nucleul nu acceptă redimensionarea.\n" -#: lib/setup.c:3929 +#: lib/setup.c:3939 msgid "Resize failed, the kernel doesn't support it." msgstr "Redimensionarea nu a reușit, nucleul nu acceptă redimensionarea." -#: lib/setup.c:3961 +#: lib/setup.c:3971 msgid "Do you really want to change UUID of device?" msgstr "Chiar doriți să schimbați UUID-ul dispozitivului?" -#: lib/setup.c:4053 +#: lib/setup.c:4061 lib/setup.c:4069 msgid "Header backup file does not contain compatible LUKS header." msgstr "Fișierul de copie de rezervă pentru antet nu conține un antet LUKS compatibil." -#: lib/setup.c:4160 +#: lib/setup.c:4176 #, c-format msgid "Volume %s is not active." msgstr "Volumul %s nu este activ." -#: lib/setup.c:4215 +#: lib/setup.c:4231 #, c-format msgid "Volume %s is already suspended." msgstr "Volumul %s este deja suspendat." -#: lib/setup.c:4241 +#: lib/setup.c:4257 #, c-format msgid "Suspend is not supported for device %s." msgstr "Suspendarea nu este acceptată pentru dispozitivul %s." -#: lib/setup.c:4243 lib/setup.c:4251 +#: lib/setup.c:4259 lib/setup.c:4267 #, c-format msgid "Error during suspending device %s." msgstr "Eroare la suspendarea dispozitivului %s." -#: lib/setup.c:4266 +#: lib/setup.c:4282 #, c-format msgid "Device %s was suspended but hardware OPAL device cannot be locked." msgstr "Dispozitivul %s a fost suspendat, dar dispozitivul hardware OPAL nu poate fi blocat." -#: lib/setup.c:4297 lib/setup.c:4491 +#: lib/setup.c:4313 lib/setup.c:4507 #, c-format msgid "Resume is not supported for device %s." msgstr "Reluarea activității nu este acceptată pentru dispozitivul %s." -#: lib/setup.c:4299 lib/setup.c:4481 lib/setup.c:4493 +#: lib/setup.c:4315 lib/setup.c:4497 lib/setup.c:4509 #, c-format msgid "Error during resuming device %s." msgstr "Eroare la reluarea activității dispozitivului %s." -#: lib/setup.c:4335 +#: lib/setup.c:4351 msgid "Failed to unlink volume key from user specified keyring." msgstr "Nu s-a putut dezlega cheia de volum de la inelul de chei specificat de utilizator." -#: lib/setup.c:4457 lib/setup.c:5637 +#: lib/setup.c:4473 lib/setup.c:5653 msgid "Failed to link volume key in user defined keyring." msgstr "Nu s-a putut leg cheia de volum la inelul de chei specificat de utilizator." -#: lib/setup.c:4556 src/cryptsetup.c:2722 +#: lib/setup.c:4572 src/cryptsetup.c:2722 #, c-format msgid "Volume %s is not suspended." msgstr "Volumul %s nu este suspendat." -#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1856 +#: lib/setup.c:4683 lib/setup.c:7326 lib/setup.c:7348 src/cryptsetup.c:1856 #: src/cryptsetup.c:2260 src/cryptsetup.c:2278 src/utils_reencrypt.c:306 -#: src/utils_reencrypt.c:1969 +#: src/utils_reencrypt.c:1995 msgid "Volume key does not match the volume." msgstr "Cheia de volum nu se potrivește cu volumul." -#: lib/setup.c:4821 +#: lib/setup.c:4837 msgid "Failed to swap new key slot." msgstr "Nu s-a putut efectua interschimbarea cu noul slot pentru cheie." -#: lib/setup.c:4919 +#: lib/setup.c:4935 #, c-format msgid "Key slot %d is invalid." msgstr "Slotul de cheie %d nu este valid." -#: lib/setup.c:4925 src/cryptsetup.c:1977 src/cryptsetup.c:2437 +#: lib/setup.c:4941 src/cryptsetup.c:1977 src/cryptsetup.c:2437 #: src/cryptsetup.c:3122 src/cryptsetup.c:3182 #, c-format msgid "Keyslot %d is not active." msgstr "Slotul de cheie %d nu este activ." -#: lib/setup.c:4944 +#: lib/setup.c:4960 msgid "Device header overlaps with data area." msgstr "Antetul dispozitivului se suprapune cu zona de date." -#: lib/setup.c:5165 +#: lib/setup.c:5181 msgid "Reencryption in-progress. Cannot activate device." msgstr "Recriptare în curs. Nu se poate activa dispozitivul." -#: lib/setup.c:5167 lib/luks2/luks2_json_metadata.c:2913 +#: lib/setup.c:5183 lib/luks2/luks2_json_metadata.c:2905 #: lib/luks2/luks2_reencrypt.c:3726 msgid "Failed to get reencryption lock." msgstr "Nu s-a putut obține blocarea pentru recriptare." -#: lib/setup.c:5189 +#: lib/setup.c:5205 msgid "LUKS2 reencryption recovery using volume key(s) failed." msgstr "Recuperarea recriptării LUKS2 utilizând cheia (cheile) de volum a eșuat." -#: lib/setup.c:5325 +#: lib/setup.c:5341 #, c-format msgid "Device %s already exists." msgstr "Dispozitivul %s există deja." -#: lib/setup.c:5332 +#: lib/setup.c:5348 #, c-format msgid "Cannot use device %s, name is invalid or still in use." msgstr "Nu se poate folosi dispozitivul %s, numele este nevalid sau este încă în uz." -#: lib/setup.c:5344 +#: lib/setup.c:5360 msgid "Reencryption volume keys do not match the volume." msgstr "Cheile de recriptare a volumului nu se potrivesc cu volumul." -#: lib/setup.c:5361 +#: lib/setup.c:5377 msgid "Incorrect volume key specified for plain device." msgstr "Este specificată o cheie de volum incorectă pentru un dispozitiv cu criptare normală." -#: lib/setup.c:5387 lib/setup.c:5448 +#: lib/setup.c:5403 lib/setup.c:5464 msgid "Device type is not properly initialized." msgstr "Tipul de dispozitiv nu este inițializat corect." -#: lib/setup.c:5486 +#: lib/setup.c:5502 msgid "Kernel keyring is not supported by the kernel." msgstr "Inelul de chei pentru nucleu nu este acceptat de nucleu actual." -#: lib/setup.c:5490 +#: lib/setup.c:5506 msgid "Kernel keyring missing: required for passing signature to kernel." msgstr "Lipsește inelul de chei pentru nucleu: este necesar pentru transmiterea semnăturii către nucleu." -#: lib/setup.c:5545 +#: lib/setup.c:5561 #, c-format msgid "Cannot use keyring key %s." msgstr "Nu se poate utiliza cheia inelului de chei %s." -#: lib/setup.c:5758 +#: lib/setup.c:5774 msgid "Incorrect root hash specified for verity device." msgstr "Sumă de control rădăcină incorectă specificată pentru dispozitivul verity." -#: lib/setup.c:5799 lib/setup.c:5824 +#: lib/setup.c:5815 lib/setup.c:5840 msgid "OPAL does not support deferred deactivation." msgstr "OPAL nu acceptă dezactivarea amânată." -#: lib/setup.c:5814 lib/setup.c:5845 lib/luks2/luks2_json_metadata.c:2978 +#: lib/setup.c:5830 lib/setup.c:5861 lib/luks2/luks2_json_metadata.c:2970 #: src/utils_reencrypt.c:89 #, c-format msgid "Device %s is still in use." msgstr "Dispozitivul %s este încă în uz." -#: lib/setup.c:5832 +#: lib/setup.c:5848 #, c-format msgid "Could not cancel deferred remove from device %s." msgstr "Nu s-a putut anula eliminarea întârziată din dispozitivul %s." -#: lib/setup.c:5854 +#: lib/setup.c:5870 #, c-format msgid "Invalid device %s." msgstr "Dispozitiv nevalid %s." -#: lib/setup.c:6001 +#: lib/setup.c:6017 msgid "Volume key buffer too small." msgstr "Memoria tampon a cheii de volum este prea mică." -#: lib/setup.c:6012 +#: lib/setup.c:6028 msgid "Cannot retrieve volume key for LUKS2 device." msgstr "Nu se poate recupera cheia de volum pentru dispozitivul LUKS2." -#: lib/setup.c:6021 +#: lib/setup.c:6037 msgid "Cannot retrieve volume key for LUKS1 device." msgstr "Nu se poate recupera cheia de volum pentru dispozitivul LUKS1." -#: lib/setup.c:6035 +#: lib/setup.c:6051 msgid "Cannot retrieve volume key for plain device." msgstr "Nu se poate recupera tasta de volum pentru dispozitivul normal." -#: lib/setup.c:6043 +#: lib/setup.c:6059 msgid "Cannot retrieve root hash for verity device." msgstr "Nu se poate recupera suma de control rădăcină pentru dispozitivul verity." -#: lib/setup.c:6052 +#: lib/setup.c:6068 msgid "Cannot retrieve volume key for BITLK device." msgstr "Nu se poate recupera cheia de volum pentru dispozitivul BITLK." -#: lib/setup.c:6057 +#: lib/setup.c:6073 msgid "Cannot retrieve volume key for FVAULT2 device." msgstr "Nu se poate recupera cheia de volum pentru dispozitivul FVAULT2." -#: lib/setup.c:6059 +#: lib/setup.c:6075 #, c-format msgid "This operation is not supported for %s crypt device." msgstr "Această operație nu este acceptată pentru dispozitivul criptat %s." -#: lib/setup.c:6244 lib/setup.c:6255 +#: lib/setup.c:6260 lib/setup.c:6271 msgid "Dump operation is not supported for this device type." msgstr "Operația de descărcare nu este acceptată pentru acest tip de dispozitiv." -#: lib/setup.c:6635 +#: lib/setup.c:6651 #, c-format msgid "Data offset is not multiple of %u bytes." msgstr "Decalajul datelor nu este multiplu de %u octeți." -#: lib/setup.c:6943 +#: lib/setup.c:6959 #, c-format msgid "Cannot convert device %s which is still in use." msgstr "Nu se poate converti dispozitivul %s care este încă în uz." -#: lib/setup.c:7251 lib/setup.c:7406 +#: lib/setup.c:7267 lib/setup.c:7422 #, c-format msgid "Failed to assign keyslot %u as the new volume key." msgstr "Nu s-a putut atribui slotul %u ca nouă cheie de volum." -#: lib/setup.c:7275 +#: lib/setup.c:7291 msgid "Failed to initialize default LUKS2 keyslot parameters." msgstr "Nu s-au putut inițializa parametrii impliciți pentru slotul de cheie LUKS2." -#: lib/setup.c:7281 +#: lib/setup.c:7297 #, c-format msgid "Failed to assign keyslot %d to digest." msgstr "Nu s-a putut aloca slotul de cheie %d pentru a digera." -#: lib/setup.c:7523 +#: lib/setup.c:7539 msgid "Cannot add key slot, all slots disabled and no volume key provided." msgstr "Nu se poate adăuga slotul pentru cheie, toate sloturile sunt dezactivate și nu este furnizată nicio cheie pentru volum." -#: lib/setup.c:7611 lib/setup.c:7626 lib/verity/verity.c:333 +#: lib/setup.c:7627 lib/setup.c:7642 lib/verity/verity.c:333 msgid "Failed to load key in kernel keyring." msgstr "Nu s-a putut încărca cheia în inelul de chei al nucleului." -#: lib/setup.c:7807 +#: lib/setup.c:7823 #, c-format msgid "Could not find keyring described by \"%s\"." msgstr "Nu s-a putut găsi inelul de chei descris de „%s”." -#: lib/setup.c:7872 +#: lib/setup.c:7888 msgid "Failed to acquire global memory-hard access serialization lock." msgstr "Nu s-a putut obține blocarea de serializare a accesului la memoria-hardwarw globală." @@ -806,7 +807,7 @@ msgid "Cannot read requested amount of data." msgstr "Nu se poate citi cantitatea de date solicitată." #: lib/utils_device.c:207 lib/utils_storage_wrappers.c:99 -#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2257 +#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2283 #, c-format msgid "Device %s does not exist or access denied." msgstr "Dispozitivul %s nu există sau accesul a fost refuzat." @@ -922,16 +923,16 @@ msgstr "Firele paralele de execuție PBKDF solicitate nu pot fi zero." msgid "Only PBKDF2 is supported in FIPS mode." msgstr "Doar PBKDF2 este acceptat în modul FIPS." -#: lib/utils_benchmark.c:171 +#: lib/utils_benchmark.c:175 msgid "PBKDF benchmark disabled but iterations not set." msgstr "Testarea PBKDF este dezactivată, dar numărul de iterații nu este definit." -#: lib/utils_benchmark.c:190 +#: lib/utils_benchmark.c:194 #, c-format msgid "Not compatible PBKDF2 options (using hash algorithm %s)." msgstr "Opțiuni PBKDF2 incompatibile (folosind algoritmul de sumă de control %s)." -#: lib/utils_benchmark.c:210 +#: lib/utils_benchmark.c:214 msgid "Not compatible PBKDF options." msgstr "Opțiuni PBKDF2 incompatibile." @@ -980,9 +981,9 @@ msgstr "Dimensiunea cheii în modul XTS trebuie să fie de 256 sau 512 biți." msgid "Cipher specification should be in [cipher]-[mode]-[iv] format." msgstr "Specificațiile de cifrare ar trebui să fie în formatul [cifrarea]-[mod]-[iv]." -#: lib/luks1/keyencryption.c:85 lib/luks1/keymanage.c:353 -#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1132 -#: lib/luks2/luks2_json_metadata.c:1518 lib/luks2/luks2_keyslot.c:711 +#: lib/luks1/keyencryption.c:85 lib/luks1/keymanage.c:358 +#: lib/luks1/keymanage.c:665 lib/luks1/keymanage.c:1133 +#: lib/luks2/luks2_json_metadata.c:1510 lib/luks2/luks2_keyslot.c:711 #, c-format msgid "Cannot write to device %s, permission denied." msgstr "Nu se poate scrie în dispozitivul %s, permisiune refuzată." @@ -1000,13 +1001,13 @@ msgstr "Nu s-a putut accesa dispozitivul pentru stocarea temporară a cheilor." msgid "IO error while encrypting keyslot." msgstr "Eroare de In/Ieș în timpul criptării slotului de cheie." -#: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:356 -#: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:659 +#: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:361 +#: lib/luks1/keymanage.c:619 lib/luks1/keymanage.c:668 lib/tcrypt/tcrypt.c:659 #: lib/fvault2/fvault2.c:872 lib/verity/verity.c:67 lib/verity/verity.c:183 #: lib/verity/verity_hash.c:312 lib/verity/verity_hash.c:321 #: lib/verity/verity_hash.c:350 lib/verity/verity_fec.c:247 #: lib/verity/verity_fec.c:259 lib/verity/verity_fec.c:264 -#: lib/luks2/luks2_json_metadata.c:1521 src/utils_reencrypt_luks1.c:108 +#: lib/luks2/luks2_json_metadata.c:1513 src/utils_reencrypt_luks1.c:108 #: src/utils_reencrypt_luks1.c:120 #, c-format msgid "Cannot open device %s." @@ -1021,61 +1022,61 @@ msgstr "Eroare de In/Ieș la decriptarea slotului de cheie." msgid "Device %s is too small. (LUKS1 requires at least % bytes.)" msgstr "Dispozitivul %s este prea mic. (LUKS1 necesită cel puțin % octeți.)" -#: lib/luks1/keymanage.c:138 lib/luks1/keymanage.c:146 -#: lib/luks1/keymanage.c:158 lib/luks1/keymanage.c:169 -#: lib/luks1/keymanage.c:181 +#: lib/luks1/keymanage.c:143 lib/luks1/keymanage.c:151 +#: lib/luks1/keymanage.c:163 lib/luks1/keymanage.c:174 +#: lib/luks1/keymanage.c:186 #, c-format msgid "LUKS keyslot %u is invalid." msgstr "Slotul de cheie LUKS %u nu este valid." -#: lib/luks1/keymanage.c:254 lib/luks2/luks2_json_metadata.c:1382 +#: lib/luks1/keymanage.c:259 lib/luks2/luks2_json_metadata.c:1382 #, c-format msgid "Requested header backup file %s already exists." msgstr "Fișierul de copie de rezervă pentru antetul solicitat %s există deja." -#: lib/luks1/keymanage.c:256 lib/luks2/luks2_json_metadata.c:1384 +#: lib/luks1/keymanage.c:261 lib/luks2/luks2_json_metadata.c:1384 #, c-format msgid "Cannot create header backup file %s." msgstr "Nu se poate crea fișierul de copie de rezervă al antetului %s." -#: lib/luks1/keymanage.c:263 lib/luks2/luks2_json_metadata.c:1391 +#: lib/luks1/keymanage.c:268 lib/luks2/luks2_json_metadata.c:1391 #, c-format msgid "Cannot write header backup file %s." msgstr "Nu se poate scrie fișierul de copie de rezervă al antetului %s." -#: lib/luks1/keymanage.c:295 lib/luks2/luks2_json_metadata.c:1428 +#: lib/luks1/keymanage.c:300 lib/luks2/luks2_json_metadata.c:1420 msgid "Backup file does not contain valid LUKS header." msgstr "Fișierul de copie de rezervă nu conține antet LUKS valid." -#: lib/luks1/keymanage.c:308 lib/luks1/keymanage.c:580 -#: lib/luks2/luks2_json_metadata.c:1450 +#: lib/luks1/keymanage.c:313 lib/luks1/keymanage.c:585 +#: lib/luks2/luks2_json_metadata.c:1442 #, c-format msgid "Cannot open header backup file %s." msgstr "Nu se poate deschide fișierul de copie de rezervă al antetului %s." -#: lib/luks1/keymanage.c:316 lib/luks2/luks2_json_metadata.c:1458 +#: lib/luks1/keymanage.c:321 lib/luks2/luks2_json_metadata.c:1450 #, c-format msgid "Cannot read header backup file %s." msgstr "Nu se poate citi fișierul de copie de rezervă al antetului %s." -#: lib/luks1/keymanage.c:326 +#: lib/luks1/keymanage.c:331 msgid "Data offset or key size differs on device and backup, restore failed." msgstr "Poziția datelor sau dimensiunea cheii diferă între dispozitiv și copia de rezervă, restaurarea a eșuat." -#: lib/luks1/keymanage.c:334 +#: lib/luks1/keymanage.c:339 #, c-format msgid "Device %s %s%s" msgstr "Dispozitiv %s %s%s" -#: lib/luks1/keymanage.c:335 +#: lib/luks1/keymanage.c:340 msgid "does not contain LUKS header. Replacing header can destroy data on that device." msgstr "nu conține antetul LUKS. Înlocuirea antetului poate distruge datele de pe acest dispozitiv." -#: lib/luks1/keymanage.c:336 +#: lib/luks1/keymanage.c:341 msgid "already contains LUKS header. Replacing header will destroy existing keyslots." msgstr "conține deja antetul LUKS. Înlocuirea antetului va distruge sloturile de chei existente." -#: lib/luks1/keymanage.c:337 lib/luks2/luks2_json_metadata.c:1490 +#: lib/luks1/keymanage.c:342 lib/luks2/luks2_json_metadata.c:1482 msgid "" "\n" "WARNING: real device header has different UUID than backup!" @@ -1083,130 +1084,130 @@ msgstr "" "\n" "AVERTISMENT: antetul dispozitivului real are un UUID diferit de cel al copiei de rezervă!" -#: lib/luks1/keymanage.c:385 +#: lib/luks1/keymanage.c:390 msgid "Non standard key size, manual repair required." msgstr "Dimensiunea cheii nu este standard, este necesară repararea manuală." -#: lib/luks1/keymanage.c:395 +#: lib/luks1/keymanage.c:400 msgid "Non standard keyslots alignment, manual repair required." msgstr "Alinierea sloturilor pentru chei nu este standard , este necesară repararea manuală." -#: lib/luks1/keymanage.c:404 +#: lib/luks1/keymanage.c:409 #, c-format msgid "Cipher mode repaired (%s -> %s)." msgstr "Modul de cifrare reparat (%s -> %s)." -#: lib/luks1/keymanage.c:415 +#: lib/luks1/keymanage.c:420 #, c-format msgid "Cipher hash repaired to lowercase (%s)." msgstr "Cifrul sumei de control(hash) reparat la minuscule (%s)." -#: lib/luks1/keymanage.c:417 lib/luks1/keymanage.c:523 -#: lib/luks1/keymanage.c:756 +#: lib/luks1/keymanage.c:422 lib/luks1/keymanage.c:528 +#: lib/luks1/keymanage.c:757 #, c-format msgid "Requested LUKS hash %s is not supported." msgstr "Suma de control(hash) LUKS solicitată %s nu este acceptată." -#: lib/luks1/keymanage.c:431 +#: lib/luks1/keymanage.c:436 msgid "Repairing keyslots." msgstr "Se repară sloturile pentru chei." -#: lib/luks1/keymanage.c:450 +#: lib/luks1/keymanage.c:455 #, c-format msgid "Keyslot %i: offset repaired (%u -> %u)." msgstr "Slotul de cheie %i: poziție reparată (%u -> %u)." -#: lib/luks1/keymanage.c:458 +#: lib/luks1/keymanage.c:463 #, c-format msgid "Keyslot %i: stripes repaired (%u -> %u)." msgstr "Slotul de cheie %i: benzi reparate (%u -> %u)." -#: lib/luks1/keymanage.c:467 +#: lib/luks1/keymanage.c:472 #, c-format msgid "Keyslot %i: bogus partition signature." msgstr "Slotul de cheie %i: semnătură falsă a partiției." -#: lib/luks1/keymanage.c:472 +#: lib/luks1/keymanage.c:477 #, c-format msgid "Keyslot %i: salt wiped." msgstr "Slotul de cheie %i: «salt» șters." -#: lib/luks1/keymanage.c:489 +#: lib/luks1/keymanage.c:494 msgid "Writing LUKS header to disk." msgstr "Se scrie antetul LUKS pe disc." -#: lib/luks1/keymanage.c:494 +#: lib/luks1/keymanage.c:499 msgid "Repair failed." msgstr "Repararea a eșuat." -#: lib/luks1/keymanage.c:549 +#: lib/luks1/keymanage.c:554 #, c-format msgid "LUKS cipher mode %s is invalid." msgstr "Modul de cifrare LUKS %s este nevalid." -#: lib/luks1/keymanage.c:554 +#: lib/luks1/keymanage.c:559 #, c-format msgid "LUKS hash %s is invalid." msgstr "Suma de control(hash) LUKS %s nu este validă." -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 +#: lib/luks1/keymanage.c:566 src/cryptsetup.c:1367 msgid "No known problems detected for LUKS header." msgstr "Nu s-a detectat nicio problemă cunoscută pentru antetul LUKS." -#: lib/luks1/keymanage.c:689 +#: lib/luks1/keymanage.c:690 #, c-format msgid "Error during update of LUKS header on device %s." msgstr "Eroare în timpul actualizării antetului LUKS pe dispozitivul %s." -#: lib/luks1/keymanage.c:697 +#: lib/luks1/keymanage.c:698 #, c-format msgid "Error re-reading LUKS header after update on device %s." msgstr "Eroare la recitirea antetului LUKS după actualizare pe dispozitivul %s." -#: lib/luks1/keymanage.c:750 +#: lib/luks1/keymanage.c:751 msgid "Data offset for LUKS header must be either 0 or higher than header size." msgstr "Decalajul datelor pentru antetul LUKS trebuie să fie 0 sau mai mare decât dimensiunea antetului." -#: lib/luks1/keymanage.c:761 lib/luks1/keymanage.c:832 -#: lib/luks2/luks2_json_format.c:231 lib/luks2/luks2_json_metadata.c:1261 +#: lib/luks1/keymanage.c:762 lib/luks1/keymanage.c:833 +#: lib/luks2/luks2_json_format.c:240 lib/luks2/luks2_json_metadata.c:1261 #: src/utils_reencrypt.c:703 msgid "Wrong LUKS UUID format provided." msgstr "Formatul UUID LUKS furnizat este greșit." -#: lib/luks1/keymanage.c:783 +#: lib/luks1/keymanage.c:784 msgid "Cannot create LUKS header: reading random salt failed." msgstr "Nu se poate crea antetul LUKS: citirea datelor «salt» aleatoare a eșuat." -#: lib/luks1/keymanage.c:811 +#: lib/luks1/keymanage.c:812 #, c-format msgid "Cannot create LUKS header: header digest failed (using hash %s)." msgstr "Nu se poate crea antetul LUKS: calcularea sumei de control a antetului a eșuat (folosind suma de control(hash) %s)." -#: lib/luks1/keymanage.c:856 +#: lib/luks1/keymanage.c:857 #, c-format msgid "Key slot %d active, purge first." msgstr "Slot de cheie %d activ, curățați mai întâi." -#: lib/luks1/keymanage.c:862 +#: lib/luks1/keymanage.c:863 #, c-format msgid "Key slot %d material includes too few stripes. Header manipulation?" msgstr "Materialul de la slotul de cheie %d nu are suficiente benzi. Antetul a fost manipulat?" -#: lib/luks1/keymanage.c:900 lib/luks2/luks2_keyslot_luks2.c:217 +#: lib/luks1/keymanage.c:901 lib/luks2/luks2_keyslot_luks2.c:217 msgid "PBKDF2 iteration value overflow." msgstr "Depășire a valorii de iterație a PBKDF2." -#: lib/luks1/keymanage.c:1022 +#: lib/luks1/keymanage.c:1023 #, c-format msgid "Cannot open keyslot (using hash %s)." msgstr "Nu se poate deschide slotul de cheie (folosind suma de control(hash) %s)." -#: lib/luks1/keymanage.c:1118 +#: lib/luks1/keymanage.c:1119 #, c-format msgid "Key slot %d is invalid, please select keyslot between 0 and %d." msgstr "Slotul de cheie %d nu este valid, selectați slotul de cheie între 0 și %d." -#: lib/luks1/keymanage.c:1136 lib/luks2/luks2_keyslot.c:715 +#: lib/luks1/keymanage.c:1137 lib/luks2/luks2_keyslot.c:715 #, c-format msgid "Cannot wipe device %s." msgstr "Nu se poate șterge dispozitivul %s." @@ -1384,33 +1385,33 @@ msgstr "Această operație nu este acceptată." msgid "Unexpected key data size." msgstr "Dimensiune neașteptată a datelor cheii." -#: lib/bitlk/bitlk.c:1442 +#: lib/bitlk/bitlk.c:1448 msgid "This BITLK device is in an unsupported state and cannot be activated." msgstr "Acest dispozitiv BITLK este într-o stare neacceptată și nu poate fi activat." -#: lib/bitlk/bitlk.c:1447 +#: lib/bitlk/bitlk.c:1453 #, c-format msgid "BITLK devices with type '%s' cannot be activated." msgstr "Dispozitivele BITLK de tip „%s” nu pot fi activate." -#: lib/bitlk/bitlk.c:1486 +#: lib/bitlk/bitlk.c:1492 #, c-format msgid "WARNING: BitLocker volume size % does not match the underlying device size %" msgstr "AVERTISMENT: dimensiunea volumului BitLocker % nu se potrivește cu dimensiunea dispozitivului subiacent %" -#: lib/bitlk/bitlk.c:1613 +#: lib/bitlk/bitlk.c:1634 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK IV." msgstr "Nu se poate activa dispozitivul, modulul nucleului «dm-crypt» nu are suport pentru BITLK IV." -#: lib/bitlk/bitlk.c:1617 +#: lib/bitlk/bitlk.c:1638 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK Elephant diffuser." msgstr "Dispozitivul nu poate fi activat, modulul nucleului «dm-crypt» nu are suport pentru difuzorul BITLK Elephant." -#: lib/bitlk/bitlk.c:1621 +#: lib/bitlk/bitlk.c:1642 msgid "Cannot activate device, kernel dm-crypt is missing support for large sector size." msgstr "Dispozitivul nu poate fi activat, nucleul dm-crypt nu are suport pentru dimensiune mare a sectorului." -#: lib/bitlk/bitlk.c:1625 +#: lib/bitlk/bitlk.c:1646 msgid "Cannot activate device, kernel dm-zero module is missing." msgstr "Dispozitivul nu se poate activa, modulul nucleului, «dm-zero», lipsește." @@ -1567,24 +1568,24 @@ msgstr "Nu s-a putut determina dimensiunea pentru dispozitivul %s." msgid "Incompatible kernel dm-integrity metadata (version %u) detected on %s." msgstr "Metadate incompatibile cu modulul nucleului «dm-integrity» (versiunea %u) detectate pe %s." -#: lib/integrity/integrity.c:308 lib/integrity/integrity.c:492 +#: lib/integrity/integrity.c:309 lib/integrity/integrity.c:493 msgid "Kernel does not support dm-integrity mapping." msgstr "Nucleul nu acceptă asocierea dm-integrity." -#: lib/integrity/integrity.c:314 +#: lib/integrity/integrity.c:315 msgid "Kernel does not support dm-integrity fixed metadata alignment." msgstr "Nucleul nu acceptă alinierea metadatelor fixe dm-integrity." -#: lib/integrity/integrity.c:323 +#: lib/integrity/integrity.c:324 msgid "Kernel refuses to activate insecure recalculate option (see legacy activation options to override)." msgstr "Nucleul refuză să activeze opțiunea de recalculare nesigură (consultați opțiunile de activare vechi pentru a le înlocui)." -#: lib/integrity/integrity.c:329 +#: lib/integrity/integrity.c:330 msgid "Kernel does not support dm-integrity inline mode." msgstr "Nucleul nu acceptă modul în linie „inline” dm-integrity." #: lib/luks2/luks2_disk_metadata.c:382 lib/luks2/luks2_json_metadata.c:1184 -#: lib/luks2/luks2_json_metadata.c:1510 +#: lib/luks2/luks2_json_metadata.c:1502 #, c-format msgid "Failed to acquire write lock on device %s." msgstr "Nu s-a putut obține blocarea la scriere pe dispozitivul %s." @@ -1606,22 +1607,22 @@ msgstr "" msgid "WARNING: keyslots area (% bytes) is very small, available LUKS2 keyslot count is very limited.\n" msgstr "AVERTISMENT: zona sloturilor de chei (% octeți) este foarte mică, numărul de sloturi de chei LUKS2 disponibil este foarte limitat.\n" -#: lib/luks2/luks2_json_format.c:418 +#: lib/luks2/luks2_json_format.c:427 msgid "Requested data offset is too small." msgstr "Decalajul de date solicitat este prea mic." -#: lib/luks2/luks2_json_format.c:459 +#: lib/luks2/luks2_json_format.c:468 #, c-format msgid "WARNING: LUKS2 metadata size changed to % bytes.\n" msgstr "AVERTISMENT: dimensiunea metadatelor LUKS2 s-a schimbat la % octeți.\n" -#: lib/luks2/luks2_json_format.c:463 +#: lib/luks2/luks2_json_format.c:472 #, c-format msgid "WARNING: LUKS2 keyslots area size changed to % bytes.\n" msgstr "AVERTISMENT: dimensiunea zonei sloturilor de chei LUKS2 s-a schimbat la % octeți.\n" #: lib/luks2/luks2_json_metadata.c:1171 lib/luks2/luks2_json_metadata.c:1357 -#: lib/luks2/luks2_json_metadata.c:1417 lib/luks2/luks2_keyslot_luks2.c:71 +#: lib/luks2/luks2_json_metadata.c:1412 lib/luks2/luks2_keyslot_luks2.c:71 #, c-format msgid "Failed to acquire read lock on device %s." msgstr "Nu s-a putut obține blocarea pentru citire pe dispozitivul %s." @@ -1630,33 +1631,33 @@ msgstr "Nu s-a putut obține blocarea pentru citire pe dispozitivul %s." msgid "Label is too long." msgstr "Eticheta este prea lungă." -#: lib/luks2/luks2_json_metadata.c:1435 +#: lib/luks2/luks2_json_metadata.c:1427 #, c-format msgid "Forbidden LUKS2 requirements detected in backup %s." msgstr "Cerințe LUKS2 interzise detectate în copia de rezervă %s." -#: lib/luks2/luks2_json_metadata.c:1474 +#: lib/luks2/luks2_json_metadata.c:1466 msgid "Data offset differ on device and backup, restore failed." msgstr "Decalajul datelor diferă între dispozitiv și copia de rezervă, restaurare eșuată." -#: lib/luks2/luks2_json_metadata.c:1480 +#: lib/luks2/luks2_json_metadata.c:1472 msgid "Binary header with keyslot areas size differ on device and backup, restore failed." msgstr "Antetul binar cu dimensiunea zonelor sloturilor pentru chei diferă între dispozitiv și copia de rezervă, restaurare eșuată." -#: lib/luks2/luks2_json_metadata.c:1487 +#: lib/luks2/luks2_json_metadata.c:1479 #, c-format msgid "Device %s %s%s%s%s" msgstr "Dispozitiv %s %s%s%s%s" -#: lib/luks2/luks2_json_metadata.c:1488 +#: lib/luks2/luks2_json_metadata.c:1480 msgid "does not contain LUKS2 header. Replacing header can destroy data on that device." msgstr "nu conține antetul LUKS2. Înlocuirea antetului poate distruge datele de pe acest dispozitiv." -#: lib/luks2/luks2_json_metadata.c:1489 +#: lib/luks2/luks2_json_metadata.c:1481 msgid "already contains LUKS2 header. Replacing header will destroy existing keyslots." msgstr "conține deja antetul LUKS2. Înlocuirea antetului va distruge sloturile de chei existente." -#: lib/luks2/luks2_json_metadata.c:1491 +#: lib/luks2/luks2_json_metadata.c:1483 msgid "" "\n" "WARNING: unknown LUKS2 requirements detected in real device header!\n" @@ -1666,7 +1667,7 @@ msgstr "" "AVERTISMENT: cerințe necunoscute LUKS2 detectate în antetul dispozitivului real!\n" "Înlocuirea antetului cu copia de rezervă poate deteriora datele de pe acest dispozitiv!" -#: lib/luks2/luks2_json_metadata.c:1493 +#: lib/luks2/luks2_json_metadata.c:1485 msgid "" "\n" "WARNING: Unfinished offline reencryption detected on the device!\n" @@ -1676,84 +1677,84 @@ msgstr "" "AVERTISMENT: Recriptare „offline” nefinalizată detectată pe dispozitiv!\n" "Înlocuirea antetului cu copia de rezervă poate deteriora datele." -#: lib/luks2/luks2_json_metadata.c:1591 +#: lib/luks2/luks2_json_metadata.c:1583 #, c-format msgid "Ignored unknown flag %s." msgstr "S-a ignorat fanionul necunoscut %s." -#: lib/luks2/luks2_json_metadata.c:2563 lib/luks2/luks2_reencrypt.c:2110 +#: lib/luks2/luks2_json_metadata.c:2555 lib/luks2/luks2_reencrypt.c:2110 #, c-format msgid "Missing key for dm-crypt segment %u" msgstr "Lipsește cheia pentru segmentul dm-crypt %u" -#: lib/luks2/luks2_json_metadata.c:2575 lib/luks2/luks2_reencrypt.c:2123 +#: lib/luks2/luks2_json_metadata.c:2567 lib/luks2/luks2_reencrypt.c:2123 msgid "Failed to set dm-crypt segment." msgstr "Nu s-a putut definii segmentul dm-crypt." -#: lib/luks2/luks2_json_metadata.c:2581 lib/luks2/luks2_reencrypt.c:2129 +#: lib/luks2/luks2_json_metadata.c:2573 lib/luks2/luks2_reencrypt.c:2129 msgid "Failed to set dm-linear segment." msgstr "Nu s-a putut definii segmentul dm-linear." -#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:580 +#: lib/luks2/luks2_json_metadata.c:2693 src/utils_reencrypt.c:580 msgid "No known cipher specification pattern detected in LUKS2 header." msgstr "Nu s-a detectat niciun model de specificație de cifrare cunoscut în antetul LUKS2." -#: lib/luks2/luks2_json_metadata.c:2709 +#: lib/luks2/luks2_json_metadata.c:2701 msgid "OPAL device must have static device size." msgstr "Dispozitivul OPAL trebuie să aibă dimensiunea dispozitivului statică." -#: lib/luks2/luks2_json_metadata.c:2729 +#: lib/luks2/luks2_json_metadata.c:2721 msgid "Encrypted OPAL device with integrity must be smaller than locking range." msgstr "Dispozitivul OPAL criptat cu integritate trebuie să fie mai mic decât intervalul de blocare." -#: lib/luks2/luks2_json_metadata.c:2734 +#: lib/luks2/luks2_json_metadata.c:2726 msgid "OPAL device must have same size as locking range." msgstr "Dispozitivul OPAL trebuie să aibă aceeași dimensiune ca și intervalul de blocare." -#: lib/luks2/luks2_json_metadata.c:2754 +#: lib/luks2/luks2_json_metadata.c:2746 #, c-format msgid "OPAL device is %s already unlocked.\n" msgstr "Dispozitivul OPAL %s este deja deblocat.\n" -#: lib/luks2/luks2_json_metadata.c:2793 +#: lib/luks2/luks2_json_metadata.c:2785 msgid "Unsupported device integrity configuration." msgstr "Configurație de integritate a dispozitivului neacceptată." -#: lib/luks2/luks2_json_metadata.c:2809 +#: lib/luks2/luks2_json_metadata.c:2801 msgid "Underlying dm-integrity device with unexpected provided data sectors." msgstr "Dispozitiv dm-integrity subiacent cu sectoare de date neașteptate furnizate." -#: lib/luks2/luks2_json_metadata.c:2911 +#: lib/luks2/luks2_json_metadata.c:2903 msgid "Reencryption in-progress. Cannot deactivate device." msgstr "Recriptare în curs. Nu se poate dezactiva dispozitivul." -#: lib/luks2/luks2_json_metadata.c:2922 lib/luks2/luks2_reencrypt.c:4287 +#: lib/luks2/luks2_json_metadata.c:2914 lib/luks2/luks2_reencrypt.c:4287 #, c-format msgid "Failed to replace suspended device %s with dm-error target." msgstr "Nu s-a putut înlocui dispozitivul suspendat %s cu ținta dm-error." -#: lib/luks2/luks2_json_metadata.c:3001 lib/luks2/luks2_json_metadata.c:3023 +#: lib/luks2/luks2_json_metadata.c:2993 lib/luks2/luks2_json_metadata.c:3015 #, c-format msgid "Device %s was deactivated but hardware OPAL device cannot be locked." msgstr "Dispozitivul %s a fost dezactivat, dar dispozitivul hardware OPAL nu poate fi blocat." -#: lib/luks2/luks2_json_metadata.c:3045 +#: lib/luks2/luks2_json_metadata.c:3037 msgid "Unmet LUKS2 requirements detected." msgstr "Au fost detectate cerințe LUKS2 neîndeplinite." -#: lib/luks2/luks2_json_metadata.c:3053 +#: lib/luks2/luks2_json_metadata.c:3045 msgid "Operation incompatible with device marked for legacy reencryption. Aborting." msgstr "Operație incompatibilă cu dispozitivul marcat pentru recriptare învechită. Se abandonează." -#: lib/luks2/luks2_json_metadata.c:3055 +#: lib/luks2/luks2_json_metadata.c:3047 msgid "Operation incompatible with device marked for LUKS2 reencryption. Aborting." msgstr "Operație incompatibilă cu dispozitivul marcat pentru recriptare LUKS2. Se abandonează." -#: lib/luks2/luks2_json_metadata.c:3057 +#: lib/luks2/luks2_json_metadata.c:3049 msgid "Operation incompatible with device using OPAL. Aborting." msgstr "Operație incompatibilă cu dispozitivul care utilizează OPAL. Se abandonează." -#: lib/luks2/luks2_json_metadata.c:3059 +#: lib/luks2/luks2_json_metadata.c:3051 msgid "Operation incompatible with device using inline HW tags. Aborting." msgstr "Operație incompatibilă cu dispozitivul care utilizează etichete HW în linie. Se abandonează." @@ -1820,60 +1821,60 @@ msgstr "Nu se poate utiliza specificația de cifrare %s-%s pentru slotul de chei msgid "Unable to move keyslot area. Not enough space." msgstr "Nu se poate muta zona slotului pentru chei. Spațiu insuficient." -#: lib/luks2/luks2_luks1_convert.c:619 +#: lib/luks2/luks2_luks1_convert.c:627 msgid "Cannot convert to LUKS2 format - invalid metadata." msgstr "Nu se poate converti în format LUKS2 - metadate nevalide." -#: lib/luks2/luks2_luks1_convert.c:636 +#: lib/luks2/luks2_luks1_convert.c:644 msgid "Unable to move keyslot area. LUKS2 keyslots area too small." msgstr "Nu se poate muta zona slotului pentru chei. Zona sloturilor pentru chei LUKS2 este prea mică." -#: lib/luks2/luks2_luks1_convert.c:642 lib/luks2/luks2_luks1_convert.c:972 +#: lib/luks2/luks2_luks1_convert.c:650 lib/luks2/luks2_luks1_convert.c:980 msgid "Unable to move keyslot area." msgstr "Nu se poate muta zona slotului pentru chei." -#: lib/luks2/luks2_luks1_convert.c:757 +#: lib/luks2/luks2_luks1_convert.c:765 msgid "Cannot convert to LUKS1 format - default segment encryption sector size is not 512 bytes." msgstr "Nu se poate converti în format LUKS1 - dimensiunea implicită a sectorului de criptare al segmentului nu este de 512 octeți." -#: lib/luks2/luks2_luks1_convert.c:765 +#: lib/luks2/luks2_luks1_convert.c:773 msgid "Cannot convert to LUKS1 format - key slot digests are not LUKS1 compatible." msgstr "Nu se poate converti în formatul LUKS1 - calcularea sumelor de control ale slotului de cheie nu este compatibilă cu LUKS1." -#: lib/luks2/luks2_luks1_convert.c:779 +#: lib/luks2/luks2_luks1_convert.c:787 #, c-format msgid "Cannot convert to LUKS1 format - device uses wrapped key cipher %s." msgstr "Nu se poate converti în formatul LUKS1 - dispozitivul folosește cifrul de cheie încapsulat %s." -#: lib/luks2/luks2_luks1_convert.c:784 +#: lib/luks2/luks2_luks1_convert.c:792 msgid "Cannot convert to LUKS1 format - device uses more segments." msgstr "Nu se poate converti în formatul LUKS1 - dispozitivul utilizează mai multe segmente." -#: lib/luks2/luks2_luks1_convert.c:792 +#: lib/luks2/luks2_luks1_convert.c:800 #, c-format msgid "Cannot convert to LUKS1 format - LUKS2 header contains %u token(s)." msgstr "Nu se poate converti în formatul LUKS1 - antetul LUKS2 conține %u jetoane(tokens)." -#: lib/luks2/luks2_luks1_convert.c:798 +#: lib/luks2/luks2_luks1_convert.c:806 msgid "Cannot convert to LUKS1 format - there are no active keyslots." msgstr "Nu se poate converti în formatul LUKS1 - nu există sloturi de chei active." -#: lib/luks2/luks2_luks1_convert.c:810 +#: lib/luks2/luks2_luks1_convert.c:818 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is in invalid state." msgstr "Nu se poate converti în formatul LUKS1 - slotul de cheie %u este într-o stare nevalidă." -#: lib/luks2/luks2_luks1_convert.c:815 +#: lib/luks2/luks2_luks1_convert.c:823 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is unbound." msgstr "Nu se poate converti în formatul LUKS1 - slotul de cheie %u nu este legat." -#: lib/luks2/luks2_luks1_convert.c:820 +#: lib/luks2/luks2_luks1_convert.c:828 #, c-format msgid "Cannot convert to LUKS1 format - slot %u (over maximum slots) is still active." msgstr "Nu se poate converti în formatul LUKS1 - slotul %u (peste sloturile maxime) este încă activ." -#: lib/luks2/luks2_luks1_convert.c:825 +#: lib/luks2/luks2_luks1_convert.c:833 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is not LUKS1 compatible." msgstr "Nu se poate converti în formatul LUKS1 - slotul de cheie %u nu este compatibil cu LUKS1." @@ -2158,7 +2159,7 @@ msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encry msgstr "Parametrii de criptare a slotului de chei nu sunt compatibili cu criptarea slotului de chei LUKS2." #: src/cryptsetup.c:150 src/cryptsetup.c:1180 src/cryptsetup.c:1545 -#: src/utils_reencrypt.c:1890 src/utils_reencrypt_luks1.c:502 +#: src/utils_reencrypt.c:1916 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." msgstr "Nu s-a detectat niciun model de specificație de cifrare cunoscut." @@ -2186,7 +2187,7 @@ msgid "WARNING: The --keyfile-size option is being ignored, the read size is the msgstr "AVERTISMENT: Opțiunea „--keyfile-size” este ignorată, dimensiunea de citire este aceeași cu dimensiunea cheii de criptare.\n" #: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 -#: src/integritysetup.c:189 src/utils_reencrypt.c:2141 +#: src/integritysetup.c:189 src/utils_reencrypt.c:2167 #, c-format msgid "Blkid scan failed for %s." msgstr "Scanarea «blkid» a eșuat pentru %s." @@ -2266,7 +2267,7 @@ msgstr "Dispozitivul %s nu este un dispozitiv FVAULT2 valid." msgid "Cannot determine volume key size for FVAULT2, please use --key-size option." msgstr "Nu se poate determina dimensiunea cheii de volum pentru FVAULT2; utilizați opțiunea „--key-size” pentru a o furniza." -#: src/cryptsetup.c:849 src/veritysetup.c:317 src/integritysetup.c:422 +#: src/cryptsetup.c:849 src/veritysetup.c:317 src/integritysetup.c:424 #, c-format msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "Dispozitivul %s este încă activ și programat pentru eliminare temporizată.\n" @@ -2453,7 +2454,7 @@ msgid "LUKS file container %s is too small for activation, there is no remaining msgstr "Containerul de fișiere LUKS %s este prea mic pentru activare, nu mai rămâne spațiu pentru date." #: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:278 -#: src/utils_reencrypt.c:371 src/utils_reencrypt.c:1910 +#: src/utils_reencrypt.c:371 src/utils_reencrypt.c:1936 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "Nu se poate determina dimensiunea cheii de volum pentru LUKS fără sloturi de chei; folosiți opțiunea „--key-size” pentru a furniza aceste date." @@ -2748,7 +2749,7 @@ msgstr "Opțiunea „--volume-key-keyring” nu poate fi combinată cu opțiunea msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "Ambele opțiuni „--volume-key-file” trebuie să fie asociate cu opțiunile „--key-size” respective." -#: src/cryptsetup.c:3373 src/veritysetup.c:673 src/integritysetup.c:793 +#: src/cryptsetup.c:3373 src/veritysetup.c:673 src/integritysetup.c:800 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "Opțiunile „--cancel-deferred” și „--deferred” nu pot fi utilizate în același timp." @@ -2816,21 +2817,21 @@ msgstr "Acțiunea necesită un slot de cheie specific. Utilizați parametrul „ msgid " [--type ] []" msgstr " [--type ] []" -#: src/cryptsetup.c:3482 src/veritysetup.c:487 src/integritysetup.c:560 +#: src/cryptsetup.c:3482 src/veritysetup.c:487 src/integritysetup.c:563 msgid "open device as " msgstr "deschide dispozitivul ca " #: src/cryptsetup.c:3483 src/cryptsetup.c:3484 src/cryptsetup.c:3485 -#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:561 -#: src/integritysetup.c:562 src/integritysetup.c:564 +#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:564 +#: src/integritysetup.c:565 src/integritysetup.c:567 msgid "" msgstr "" -#: src/cryptsetup.c:3483 src/veritysetup.c:488 src/integritysetup.c:561 +#: src/cryptsetup.c:3483 src/veritysetup.c:488 src/integritysetup.c:564 msgid "close device (remove mapping)" msgstr "închide dispozitivul (elimină asocierea)" -#: src/cryptsetup.c:3484 src/integritysetup.c:564 +#: src/cryptsetup.c:3484 src/integritysetup.c:567 msgid "resize active device" msgstr "redimensionează dispozitivul activ" @@ -2958,7 +2959,7 @@ msgstr " " msgid "Manipulate LUKS2 tokens" msgstr "Manipulează jetoanele LUKS2" -#: src/cryptsetup.c:3527 src/veritysetup.c:505 src/integritysetup.c:579 +#: src/cryptsetup.c:3527 src/veritysetup.c:505 src/integritysetup.c:582 msgid "" "\n" " is one of:\n" @@ -3066,7 +3067,7 @@ msgstr "" msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: Dimensiunea implicită a cheii cu modul XTS (două chei interne) va fi dublată.\n" -#: src/cryptsetup.c:3594 src/veritysetup.c:647 src/integritysetup.c:739 +#: src/cryptsetup.c:3594 src/veritysetup.c:647 src/integritysetup.c:742 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: necesită %s ca argumente" @@ -3117,31 +3118,31 @@ msgstr "Argumentul opțiuni „--priority” poate fi doar «ignore/normal/prefe msgid "Invalid maximal tries specification." msgstr "Specificare nevalidă pentru numărul maxim de încercări." -#: src/cryptsetup.c:3793 src/veritysetup.c:568 src/integritysetup.c:659 +#: src/cryptsetup.c:3793 src/veritysetup.c:568 src/integritysetup.c:662 msgid "Show this help message" msgstr "Afișează acest mesaj de ajutor" -#: src/cryptsetup.c:3794 src/veritysetup.c:569 src/integritysetup.c:660 +#: src/cryptsetup.c:3794 src/veritysetup.c:569 src/integritysetup.c:663 msgid "Display brief usage" msgstr "Afișează modul de utilizare pe scurt" -#: src/cryptsetup.c:3795 src/veritysetup.c:570 src/integritysetup.c:661 +#: src/cryptsetup.c:3795 src/veritysetup.c:570 src/integritysetup.c:664 msgid "Print package version" msgstr "Afișează versiunea pachetului" -#: src/cryptsetup.c:3806 src/veritysetup.c:581 src/integritysetup.c:672 +#: src/cryptsetup.c:3806 src/veritysetup.c:581 src/integritysetup.c:675 msgid "Help options:" msgstr "Opțiuni de ajutor:" -#: src/cryptsetup.c:3829 src/veritysetup.c:602 src/integritysetup.c:692 +#: src/cryptsetup.c:3829 src/veritysetup.c:602 src/integritysetup.c:695 msgid "[OPTION...] " msgstr "[OPȚIUNE...] " -#: src/cryptsetup.c:3838 src/veritysetup.c:611 src/integritysetup.c:703 +#: src/cryptsetup.c:3838 src/veritysetup.c:611 src/integritysetup.c:706 msgid "Argument missing." msgstr "Argumentul lipsește." -#: src/cryptsetup.c:3917 src/veritysetup.c:642 src/integritysetup.c:734 +#: src/cryptsetup.c:3917 src/veritysetup.c:642 src/integritysetup.c:737 msgid "Unknown action." msgstr "Acțiune necunoscută." @@ -3246,7 +3247,7 @@ msgstr "Comanda necesită ca argument opțiunea " msgstr " " -#: src/veritysetup.c:485 src/integritysetup.c:559 +#: src/veritysetup.c:485 src/integritysetup.c:562 msgid "format device" msgstr "formatează dispozitivul" @@ -3262,7 +3263,7 @@ msgstr "verifică dispozitivul" msgid " []" msgstr " []" -#: src/veritysetup.c:489 src/integritysetup.c:562 +#: src/veritysetup.c:489 src/integritysetup.c:565 msgid "show active device status" msgstr "afișează starea dispozitivului activ" @@ -3270,7 +3271,7 @@ msgstr "afișează starea dispozitivului activ" msgid "" msgstr "" -#: src/veritysetup.c:490 src/integritysetup.c:563 +#: src/veritysetup.c:490 src/integritysetup.c:566 msgid "show on-disk information" msgstr "afișează informațiile de pe disc" @@ -3335,20 +3336,20 @@ msgstr " (etichete hw în linie „inline”)" msgid "Setting recalculate flag is not supported, you may consider using --wipe instead." msgstr "Utilizarea fanionului pentru recalculare(...-recalculate) nu este acceptată, luați în considerare utilizarea opțiunii „--wipe” în schimb." -#: src/integritysetup.c:382 src/integritysetup.c:546 +#: src/integritysetup.c:382 src/integritysetup.c:549 #, c-format msgid "Device %s is not a valid INTEGRITY device." msgstr "Dispozitivul %s nu este un dispozitiv INTEGRITY valid." -#: src/integritysetup.c:559 src/integritysetup.c:563 +#: src/integritysetup.c:562 src/integritysetup.c:566 msgid "" msgstr "" -#: src/integritysetup.c:560 +#: src/integritysetup.c:563 msgid " " msgstr " " -#: src/integritysetup.c:583 +#: src/integritysetup.c:586 #, c-format msgid "" "\n" @@ -3359,7 +3360,7 @@ msgstr "" " este dispozitivul de creat sub %s\n" " este dispozitivul care conține date cu etichete de integritate\n" -#: src/integritysetup.c:588 +#: src/integritysetup.c:591 #, c-format msgid "" "\n" @@ -3372,51 +3373,55 @@ msgstr "" "\tAlgoritmul sumei de control: %s\n" "\tDimensiunea maximă a fișierului cheie: %dko\n" -#: src/integritysetup.c:645 +#: src/integritysetup.c:648 #, c-format msgid "Invalid --%s size. Maximum is %u bytes." msgstr "Dimensiune nevalidă --%s. Maximul este de %u octeți." -#: src/integritysetup.c:748 +#: src/integritysetup.c:751 msgid "Both key file and key size options must be specified." msgstr "Trebuie specificată atât opțiunea pentru fișierul cheie, cât și opțiunea pentru dimensiunea cheii." -#: src/integritysetup.c:752 +#: src/integritysetup.c:755 msgid "Both journal integrity key file and key size options must be specified." msgstr "Trebuie specificată atât opțiunea pentru fișierul cheii de integritate a jurnalului, cât și opțiunea pentru dimensiunea cheii." -#: src/integritysetup.c:755 +#: src/integritysetup.c:758 msgid "Journal integrity algorithm must be specified if journal integrity key is used." msgstr "Algoritmul de integritate a jurnalului trebuie să fie specificat dacă este utilizată cheia de integritate a jurnalului." -#: src/integritysetup.c:759 +#: src/integritysetup.c:762 msgid "Both journal encryption key file and key size options must be specified." msgstr "Trebuie specificată atât opțiunea pentru fișierul cheii de criptare a jurnalului, cât și opțiunea pentru dimensiunea cheii." -#: src/integritysetup.c:762 +#: src/integritysetup.c:765 msgid "Journal encryption algorithm must be specified if journal encryption key is used." msgstr "Algoritmul de criptare a jurnalului trebuie să fie specificat dacă este utilizată cheia de criptare a jurnalului." -#: src/integritysetup.c:766 +#: src/integritysetup.c:769 msgid "Recovery and bitmap mode options are mutually exclusive." msgstr "Opțiunile de recuperare și modul de hartă de biți(bitmap) se exclud reciproc." -#: src/integritysetup.c:773 +#: src/integritysetup.c:776 msgid "Journal options cannot be used in bitmap mode." msgstr "Opțiunile jurnalului nu pot fi utilizate în modul de hartă de biți(bitmap)." -#: src/integritysetup.c:778 +#: src/integritysetup.c:781 msgid "Bitmap options can be used only in bitmap mode." msgstr "Opțiunile de hartă de biți(bitmap) pot fi utilizate numai în modul de hartă de biți(bitmap)." -#: src/integritysetup.c:784 +#: src/integritysetup.c:787 msgid "Inline mode cannot be combined with journal or bitmap options." msgstr "Modul în linie nu poate fi combinat cu opțiunile de jurnal sau de hartă de biți." -#: src/integritysetup.c:788 +#: src/integritysetup.c:791 msgid "Inline mode cannot be combined with separate data device." msgstr "Modul în linie nu poate fi combinat cu un dispozitiv de date separat." +#: src/integritysetup.c:795 +msgid "Keyed discards can be enabled only with keyed algorithms like HMAC." +msgstr "Eliminarea cu cheie poate fi activată numai cu algoritmi de chei precum HMAC." + #: src/utils_tools.c:105 msgid "" "\n" @@ -3776,7 +3781,7 @@ msgstr "Dispozitivul nu este în decriptare LUKS2. Opțiune în conflict „--de msgid "Device is in reencryption using datashift resilience. Requested --resilience option cannot be applied." msgstr "Dispozitivul este în recriptare folosind adaptabilitatea la transferul de date. Opțiunea „--resilience” solicitată nu poate fi aplicată." -#: src/utils_reencrypt.c:283 src/utils_reencrypt.c:1927 +#: src/utils_reencrypt.c:283 src/utils_reencrypt.c:1953 msgid "Cannot determine volume key size for LUKS without keyslots, please use --new-key-size option." msgstr "Nu se poate determina dimensiunea cheii de volum pentru LUKS fără sloturi de chei; folosiți opțiunea „--new-key-size” pentru a furniza aceste date." @@ -3810,7 +3815,7 @@ msgstr "" "Solicitarea făcută cu opțiunea „--sector-size %” este incompatibilă cu superblocul %s\n" "(dimensiunea blocului: % octeți) detectat pe dispozitivul %s." -#: src/utils_reencrypt.c:680 src/utils_reencrypt.c:2207 +#: src/utils_reencrypt.c:680 src/utils_reencrypt.c:2233 msgid "Encryption without detached header (--header) is not possible without data device size reduction (--reduce-device-size)." msgstr "Criptarea fără antet detașat (--header) nu este posibilă fără reducerea dimensiunii dispozitivului de date (--reduce-device-size)." @@ -3878,42 +3883,43 @@ msgstr "Inițializarea recriptării a eșuat. Copia de rezervă a antetului este msgid "LUKS2 decryption is supported with detached header device only (with data offset set to 0)." msgstr "Decriptarea LUKS2 este acceptată numai cu dispozitivul antet detașat (cu decalajul de date fixat la 0)." -#: src/utils_reencrypt.c:1490 -msgid "No token could unlock the device." -msgstr "Niciun jeton(token) nu a putut debloca dispozitivul." - -#: src/utils_reencrypt.c:1522 src/utils_reencrypt.c:1531 +#: src/utils_reencrypt.c:1506 src/utils_reencrypt.c:1531 +#: src/utils_reencrypt.c:1548 src/utils_reencrypt.c:1557 msgid "Not enough free keyslots for reencryption." msgstr "Nu sunt suficiente sloturi de chei libere pentru recriptare." -#: src/utils_reencrypt.c:1562 +#: src/utils_reencrypt.c:1513 +msgid "No token could unlock the device." +msgstr "Niciun jeton(token) nu a putut debloca dispozitivul." + +#: src/utils_reencrypt.c:1588 msgid "Key file or keyring key description can be used only with --key-slot or with exactly one key slot active." msgstr "Fișierul de chei sau descrierea cheii inelului de chei pot fi utilizate numai cu opțiunea „--key-slot” sau cu exact un slot de cheie activ." -#: src/utils_reencrypt.c:1569 src/utils_reencrypt.c:1582 +#: src/utils_reencrypt.c:1595 src/utils_reencrypt.c:1608 #: src/utils_reencrypt_luks1.c:1092 src/utils_reencrypt_luks1.c:1103 #, c-format msgid "Enter passphrase for key slot %d: " msgstr "Introduceți fraza de acces pentru slotul de cheie %d: " -#: src/utils_reencrypt.c:1879 +#: src/utils_reencrypt.c:1905 #, c-format msgid "Switching data encryption cipher to %s.\n" msgstr "Se comută cifrul de criptare a datelor la %s.\n" -#: src/utils_reencrypt.c:1980 src/utils_reencrypt.c:2001 +#: src/utils_reencrypt.c:2006 src/utils_reencrypt.c:2027 msgid "Use --force-no-keyslots to reencrypt device with active keyslots by passing volume keys directly." msgstr "Utilizați „--force-no-keyslots” pentru a re-cripta dispozitivul cu sloturi de chei active prin pasarea directă a cheilor de volum." -#: src/utils_reencrypt.c:1996 +#: src/utils_reencrypt.c:2022 msgid "Option --new-volume-key-file must be paired with --new-key-size" msgstr "Opțiunea „--new-volume-key-file” trebuie să fie combinată cu opțiunea „--new-key-size”" -#: src/utils_reencrypt.c:2038 +#: src/utils_reencrypt.c:2064 msgid "No data segment parameters changed. Reencryption aborted." msgstr "Nu s-au modificat parametrii de segment de date. Recriptarea a fost abandonată." -#: src/utils_reencrypt.c:2075 +#: src/utils_reencrypt.c:2101 msgid "" "Encryption sector size increase on offline device is not supported.\n" "Activate the device first or use --force-offline-reencrypt option (dangerous!)." @@ -3921,7 +3927,7 @@ msgstr "" "Creșterea dimensiunii sectorului de criptare pe dispozitivul offline nu este acceptată.\n" "Activați mai întâi dispozitivul sau utilizați opțiunea „--force-offline-reencrypt” (periculos!)." -#: src/utils_reencrypt.c:2117 src/utils_reencrypt_luks1.c:688 +#: src/utils_reencrypt.c:2143 src/utils_reencrypt_luks1.c:688 #: src/utils_reencrypt_luks1.c:759 msgid "" "\n" @@ -3930,58 +3936,58 @@ msgstr "" "\n" "Recriptarea a fost întreruptă." -#: src/utils_reencrypt.c:2122 +#: src/utils_reencrypt.c:2148 msgid "Resuming LUKS reencryption in forced offline mode.\n" msgstr "Reluarea recriptării LUKS în modul offline forțat.\n" -#: src/utils_reencrypt.c:2145 +#: src/utils_reencrypt.c:2171 #, c-format msgid "Device %s contains broken LUKS metadata. Aborting operation." msgstr "Dispozitivul %s conține metadate LUKS deteriorate. Se abandonează operația." -#: src/utils_reencrypt.c:2161 src/utils_reencrypt.c:2183 +#: src/utils_reencrypt.c:2187 src/utils_reencrypt.c:2209 #, c-format msgid "Device %s is already LUKS device. Aborting operation." msgstr "Dispozitivul %s este deja un dispozitiv LUKS. Se abandonează operația." -#: src/utils_reencrypt.c:2189 +#: src/utils_reencrypt.c:2215 #, c-format msgid "Device %s is already in LUKS reencryption. Aborting operation." msgstr "Dispozitivul %s este deja în recriptare LUKS. Se abandonează operația." -#: src/utils_reencrypt.c:2272 +#: src/utils_reencrypt.c:2298 msgid "LUKS2 decryption requires --header option." msgstr "Decriptarea LUKS2 necesită opțiunea „--header”." -#: src/utils_reencrypt.c:2320 +#: src/utils_reencrypt.c:2346 msgid "Command requires device as argument." msgstr "Comanda necesită un dispozitiv ca argument." -#: src/utils_reencrypt.c:2333 +#: src/utils_reencrypt.c:2359 #, c-format msgid "Conflicting versions. Device %s is LUKS1." msgstr "Versiuni în conflict. Dispozitivul %s este LUKS1." -#: src/utils_reencrypt.c:2339 +#: src/utils_reencrypt.c:2365 #, c-format msgid "Conflicting versions. Device %s is in LUKS1 reencryption." msgstr "Versiuni în conflict. Dispozitivul %s este în recriptare LUKS1." -#: src/utils_reencrypt.c:2345 +#: src/utils_reencrypt.c:2371 #, c-format msgid "Conflicting versions. Device %s is LUKS2." msgstr "Versiuni în conflict. Dispozitivul %s este LUKS2." -#: src/utils_reencrypt.c:2351 +#: src/utils_reencrypt.c:2377 #, c-format msgid "Conflicting versions. Device %s is in LUKS2 reencryption." msgstr "Versiuni în conflict. Dispozitivul %s este în recriptare LUKS2." -#: src/utils_reencrypt.c:2357 +#: src/utils_reencrypt.c:2383 msgid "LUKS2 reencryption already initialized. Aborting operation." msgstr "Recriptarea LUKS2 a fost deja inițializată. Se abandonează operația." -#: src/utils_reencrypt.c:2364 +#: src/utils_reencrypt.c:2390 msgid "Device reencryption not in progress." msgstr "Recriptarea dispozitivului nu este în curs de desfășurare." From d0b42b6468cd5146854075bddec3a29930942125 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mari=C3=A1n=20Haburaj?= Date: Fri, 4 Sep 2026 18:57:03 +0200 Subject: [PATCH 212/244] po: update sk.po (from translationproject.org) --- po/sk.po | 658 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 332 insertions(+), 326 deletions(-) diff --git a/po/sk.po b/po/sk.po index 131021fa4..5057d3cc9 100644 --- a/po/sk.po +++ b/po/sk.po @@ -13,13 +13,14 @@ # plain - plain # reencryption - prešifrovanie / opätovné šifrovanie # volume key - kľúč zväzku +# discard - zahadzovanie/TRIM # msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.7-rc2\n" +"Project-Id-Version: cryptsetup 2.8.8-rc0\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2026-07-09 10:46+0200\n" -"PO-Revision-Date: 2026-07-13 10:51+0200\n" +"POT-Creation-Date: 2026-09-02 13:18+0200\n" +"PO-Revision-Date: 2026-09-03 11:45+0200\n" "Last-Translator: Marián Haburaj \n" "Language-Team: Slovak \n" "Language: sk\n" @@ -29,78 +30,78 @@ msgstr "" "X-Bugs: Report translation errors to the Language-Team address.\n" "X-Generator: Poedit 3.9\n" -#: lib/libdevmapper.c:419 +#: lib/libdevmapper.c:422 msgid "Cannot initialize device-mapper, running as non-root user." msgstr "Neviem inicializovať device-mapper, nie som spustený administrátorom." -#: lib/libdevmapper.c:422 +#: lib/libdevmapper.c:425 msgid "Cannot initialize device-mapper. Is dm_mod kernel module loaded?" msgstr "Neviem inicializovať device-mapper. Je modul jadra dm_mod načítaný?" -#: lib/libdevmapper.c:1125 +#: lib/libdevmapper.c:1129 msgid "Requested deferred flag is not supported." msgstr "Požadovaný príznak odloženia nie je podporovaný." -#: lib/libdevmapper.c:1194 +#: lib/libdevmapper.c:1198 #, c-format msgid "DM-UUID for device %s was truncated." msgstr "DM-UUID pre zariadenie %s bolo skrátené." -#: lib/libdevmapper.c:1598 +#: lib/libdevmapper.c:1602 msgid "Unknown dm target type." msgstr "Neznámy typ cieľa dm." -#: lib/libdevmapper.c:1725 lib/libdevmapper.c:1731 lib/libdevmapper.c:1850 -#: lib/libdevmapper.c:1853 +#: lib/libdevmapper.c:1729 lib/libdevmapper.c:1735 lib/libdevmapper.c:1854 +#: lib/libdevmapper.c:1857 msgid "Requested dm-crypt performance options are not supported." msgstr "Požadované výkonnostné možnosti dm-crypt nie sú podporované." -#: lib/libdevmapper.c:1740 lib/libdevmapper.c:1746 lib/libdevmapper.c:1758 +#: lib/libdevmapper.c:1744 lib/libdevmapper.c:1750 lib/libdevmapper.c:1762 msgid "Requested dm-verity data corruption handling options are not supported." msgstr "Požadované možnosti narábania s poškodenými údajmi dm-verity nie sú podporované." -#: lib/libdevmapper.c:1752 +#: lib/libdevmapper.c:1756 msgid "Requested dm-verity tasklets option is not supported." msgstr "Požadované možnosti taskletu dm-verity nie sú podporované." -#: lib/libdevmapper.c:1764 +#: lib/libdevmapper.c:1768 msgid "Requested dm-verity FEC options are not supported." msgstr "Požadované možnosti FEC dm-verity nie sú podporované." -#: lib/libdevmapper.c:1770 +#: lib/libdevmapper.c:1774 msgid "Requested data integrity options are not supported." msgstr "Požadované možnosti integrity údajov nie sú podporované." -#: lib/libdevmapper.c:1774 +#: lib/libdevmapper.c:1778 msgid "Requested sector_size option is not supported." msgstr "Požadovaná možnosť sector_size nie je podporovaná." -#: lib/libdevmapper.c:1779 +#: lib/libdevmapper.c:1783 msgid "The device size is not multiple of the requested sector size." msgstr "Veľkosť zariadenia nie je násobkom požadovanej veľkosti sektoru." -#: lib/libdevmapper.c:1783 +#: lib/libdevmapper.c:1787 msgid "Requested integrity_key_size option is not supported." msgstr "Požadovaná možnosť integrity_key_size nie je podporovaná." -#: lib/libdevmapper.c:1790 lib/libdevmapper.c:1796 +#: lib/libdevmapper.c:1794 lib/libdevmapper.c:1800 msgid "Requested automatic recalculation of integrity tags is not supported." msgstr "Požadované automatické prepočítanie príznakov integrity nie je podporované." -#: lib/libdevmapper.c:1802 lib/libdevmapper.c:1856 lib/libdevmapper.c:1859 -#: lib/luks2/luks2_json_metadata.c:2799 +#: lib/libdevmapper.c:1806 lib/libdevmapper.c:1860 lib/libdevmapper.c:1863 +#: lib/luks2/luks2_json_metadata.c:2791 msgid "Discard/TRIM is not supported." msgstr "Zahadzovanie/TRIM nie je podporované." -#: lib/libdevmapper.c:1808 +#: lib/libdevmapper.c:1812 msgid "Requested dm-integrity bitmap mode is not supported." msgstr "Požadovaný dm-integrity režim bitmapy nie je podporovaný." -#: lib/libdevmapper.c:1814 +#: lib/libdevmapper.c:1818 msgid "Requested dm-integrity inline mode is not supported." msgstr "Požadovaný dm-integrity režim inline nie je podporovaný." -#: lib/libdevmapper.c:2870 +#: lib/libdevmapper.c:2877 #, c-format msgid "Failed to query dm-%s segment." msgstr "Zlyhalo hľadanie segmentu dm-%s." @@ -151,7 +152,7 @@ msgstr "Neviem inicializovať implementáciu šifr generátora náhodných čís msgid "Cannot initialize crypto backend." msgstr "Neviem inicializovať implementáciu šifrovania." -#: lib/setup.c:308 lib/setup.c:2769 lib/verity/verity.c:109 +#: lib/setup.c:308 lib/setup.c:2779 lib/verity/verity.c:109 #, c-format msgid "Hash algorithm %s not supported." msgstr "Hashovací algoritmus %s nie je podporovaný." @@ -165,7 +166,7 @@ msgstr "Chyba pri spracovaní kľúča (používa sa hash %s)." msgid "Cannot determine device type. Incompatible activation of device?" msgstr "Neviem určiť typ zariadenia. Nekompatibilná aktivácia zariadenia?" -#: lib/setup.c:398 lib/setup.c:4177 +#: lib/setup.c:398 lib/setup.c:4193 msgid "This operation is supported only for LUKS device." msgstr "Táto operácie je podporované len pre LUKS zariadenie." @@ -187,7 +188,7 @@ msgstr "Miesto pre kľúč %d je neplatné, prosím vyberte číslo medzi 0 a %d msgid "Key slot %d is full, please select another one." msgstr "Miesto pre kľúč %d je obsadené, prosím vyberte iné." -#: lib/setup.c:534 lib/setup.c:3878 +#: lib/setup.c:534 lib/setup.c:3888 msgid "Device size is not aligned to device logical block size." msgstr "Veľkosť zariadenia nie je zarovnaná na veľkosť logického bloku zariadenia." @@ -196,7 +197,7 @@ msgstr "Veľkosť zariadenia nie je zarovnaná na veľkosť logického bloku zar msgid "Header detected but device %s is too small." msgstr "Hlavička bola nájdená, ale zariadenie %s je veľmi malé." -#: lib/setup.c:672 lib/setup.c:3763 lib/setup.c:5272 +#: lib/setup.c:672 lib/setup.c:3773 lib/setup.c:5288 #: lib/luks2/luks2_reencrypt.c:3949 lib/luks2/luks2_reencrypt.c:4438 msgid "This operation is not supported for this device type." msgstr "Táto operácie nie je podporovaná pre tento typ zariadenia." @@ -209,553 +210,553 @@ msgstr "Zakázaná operácie počas prešifrovania." msgid "Failed to rollback LUKS2 metadata in memory." msgstr "Nahradenie pôvodných LUKS2 metadát v pamäti zlyhalo." -#: lib/setup.c:896 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 +#: lib/setup.c:896 lib/luks1/keymanage.c:241 lib/luks1/keymanage.c:519 #: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 #: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 #: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2954 -#: src/cryptsetup.c:3022 src/utils_reencrypt.c:2284 +#: src/cryptsetup.c:3022 src/utils_reencrypt.c:2310 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." msgstr "Zariadenie %s nie je platné LUKS zariadenie." -#: lib/setup.c:899 lib/luks1/keymanage.c:517 +#: lib/setup.c:899 lib/luks1/keymanage.c:522 #, c-format msgid "Unsupported LUKS version %d." msgstr "Nepodporovaná LUKS verzia %d." -#: lib/setup.c:1273 +#: lib/setup.c:1279 #, c-format msgid "No known cipher specification pattern detected for active device %s." msgstr "Žiadna známa špecifikácia šifry nebola nájdená pre aktívne zariadenie %s." -#: lib/setup.c:1518 lib/setup.c:3510 lib/setup.c:3602 lib/setup.c:3614 -#: lib/setup.c:3786 lib/setup.c:5850 +#: lib/setup.c:1528 lib/setup.c:3520 lib/setup.c:3612 lib/setup.c:3624 +#: lib/setup.c:3796 lib/setup.c:5866 #, c-format msgid "Device %s is not active." msgstr "Zariadenie %s nie je aktívne." -#: lib/setup.c:1535 +#: lib/setup.c:1545 #, c-format msgid "Underlying device for crypt device %s disappeared." msgstr "Zariadenie nižšej úrovne pre šifrované zariadenie %s zmizlo." -#: lib/setup.c:1617 +#: lib/setup.c:1627 msgid "Invalid plain crypt parameters." msgstr "Neplatné parametre plain šifrovania." -#: lib/setup.c:1622 lib/setup.c:2672 +#: lib/setup.c:1632 lib/setup.c:2682 msgid "Invalid key size." msgstr "Neplatná veľkosť kľúča." -#: lib/setup.c:1627 lib/setup.c:2677 lib/setup.c:2882 +#: lib/setup.c:1637 lib/setup.c:2687 lib/setup.c:2892 msgid "UUID is not supported for this crypt type." msgstr "UUID nie je podporované pre tento typ šifrovania." -#: lib/setup.c:1632 lib/setup.c:2682 +#: lib/setup.c:1642 lib/setup.c:2692 msgid "Detached metadata device is not supported for this crypt type." msgstr "Zariadenie s oddelenými metadátami nie je podporované pre tento typ šifrovania." -#: lib/setup.c:1642 lib/setup.c:1890 lib/luks2/luks2_reencrypt.c:3035 +#: lib/setup.c:1652 lib/setup.c:1900 lib/luks2/luks2_reencrypt.c:3035 #: src/cryptsetup.c:1492 src/cryptsetup.c:3761 msgid "Unsupported encryption sector size." msgstr "Nepodporovaná veľkosť šifrovaného sektoru." -#: lib/setup.c:1650 lib/setup.c:1919 lib/setup.c:3872 +#: lib/setup.c:1660 lib/setup.c:1929 lib/setup.c:3882 msgid "Device size is not aligned to requested sector size." msgstr "Veľkosť zariadenia nie je zarovnaná k vyžadovanej veľkosti sektoru." -#: lib/setup.c:1702 lib/setup.c:1954 lib/setup.c:2331 +#: lib/setup.c:1712 lib/setup.c:1964 lib/setup.c:2341 msgid "Can't format LUKS without device." msgstr "Nie je možné formátovať LUKS bez zariadenia." -#: lib/setup.c:1707 lib/setup.c:1959 +#: lib/setup.c:1717 lib/setup.c:1969 #, c-format msgid "Zoned device %s cannot be used for LUKS header." msgstr "Zónové zariadenie %s nemôže byť použité pre LUKS hlavičku." -#: lib/setup.c:1714 lib/setup.c:1966 lib/setup.c:2337 +#: lib/setup.c:1724 lib/setup.c:1976 lib/setup.c:2347 msgid "Requested data alignment is not compatible with data offset." msgstr "Požadované zarovnanie údajov nie je kompatibilné s odsadením údajov." -#: lib/setup.c:1754 lib/setup.c:1984 +#: lib/setup.c:1764 lib/setup.c:1994 msgid "WARNING: DAX device can corrupt data as it does not guarantee atomic sector updates.\n" msgstr "VAROVANIE: DAX zariadenie môže poškodiť údaje, pretože nezaručuje atomické aktualizácie sektorov.\n" -#: lib/setup.c:1792 lib/setup.c:2091 lib/setup.c:2112 lib/setup.c:2520 -#: lib/setup.c:2567 lib/setup.c:2899 +#: lib/setup.c:1802 lib/setup.c:2101 lib/setup.c:2122 lib/setup.c:2530 +#: lib/setup.c:2577 lib/setup.c:2909 #, c-format msgid "Cannot wipe header on device %s." msgstr "Hlavička na zariadení %s nejde vymazať." -#: lib/setup.c:1805 lib/setup.c:2164 +#: lib/setup.c:1815 lib/setup.c:2174 #, c-format msgid "Device %s is too small for activation, there is no remaining space for data.\n" msgstr "Zariadenie %s je príliš malé pre aktiváciu, nie je tam žiadne zvyšné miesto pre údaje.\n" -#: lib/setup.c:1846 +#: lib/setup.c:1856 msgid "Volume key is too small for encryption with integrity extensions." msgstr "Kľúč zväzku je príliš malý na šifrovanie s rozšíreniami pre integritu." -#: lib/setup.c:1850 +#: lib/setup.c:1860 msgid "Integrity key size is too small." msgstr "Veľkosť kľúča integrity je príliš malá." -#: lib/setup.c:1859 +#: lib/setup.c:1869 #, c-format msgid "Cipher %s-%s (key size %zd bits) is not available." msgstr "Šifra %s-%s (veľkosť kľúča %zd bitov) nie je dostupná." -#: lib/setup.c:1900 +#: lib/setup.c:1910 msgid "WARNING: The device activation will fail, dm-crypt is missing support for requested encryption sector size.\n" msgstr "VAROVANIE: Aktivácia zariadenia zlyhá, dm-crypt nepodporuje vyžadovanú veľkosť šifrovaného sektoru.\n" -#: lib/setup.c:2094 lib/setup.c:2461 lib/setup.c:2523 lib/utils_device.c:906 +#: lib/setup.c:2104 lib/setup.c:2471 lib/setup.c:2533 lib/utils_device.c:906 #: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3074 #: lib/luks2/luks2_reencrypt.c:4498 #, c-format msgid "Device %s is too small." msgstr "Zariadenie %s je príliš malé." -#: lib/setup.c:2105 lib/setup.c:2144 lib/setup.c:2560 lib/setup.c:2618 +#: lib/setup.c:2115 lib/setup.c:2154 lib/setup.c:2570 lib/setup.c:2628 #, c-format msgid "Cannot format device %s in use." msgstr "Nedá sa naformátovať používané zariadenie %s." -#: lib/setup.c:2108 lib/setup.c:2147 lib/setup.c:2563 lib/setup.c:2621 +#: lib/setup.c:2118 lib/setup.c:2157 lib/setup.c:2573 lib/setup.c:2631 #, c-format msgid "Cannot format device %s, permission denied." msgstr "Prístup odmietnutý, nedá sa naformátovať zariadenie %s." -#: lib/setup.c:2132 lib/setup.c:2590 lib/setup.c:2972 +#: lib/setup.c:2142 lib/setup.c:2600 lib/setup.c:2982 #, c-format msgid "Cannot format integrity for device %s." msgstr "Pre zariadenie %s sa nedá formátovať integrita." -#: lib/setup.c:2151 lib/setup.c:2629 +#: lib/setup.c:2161 lib/setup.c:2639 #, c-format msgid "Cannot format device %s." msgstr "Nedá sa formátovať zariadenie %s." -#: lib/setup.c:2194 +#: lib/setup.c:2204 msgid "Cannot get OPAL alignment parameters." msgstr "Nedajú sa získať parametre zarovnania OPAL." -#: lib/setup.c:2206 +#: lib/setup.c:2216 msgid "Bogus OPAL logical block size." msgstr "Neplatná veľkosť logického bloku OPAL." -#: lib/setup.c:2211 lib/luks2/hw_opal/hw_opal.c:305 +#: lib/setup.c:2221 lib/luks2/hw_opal/hw_opal.c:305 msgid "Bogus OPAL logical block size differs from device block size." msgstr "Neplatná veľkosť logického bloku OPAL sa líši od veľkosti bloku zariadenia." -#: lib/setup.c:2217 +#: lib/setup.c:2227 msgid "Requested data offset is not compatible with OPAL block size." msgstr "Požadované odsadenie údajov nie je kompatibilné s veľkosťou bloku OPAL." -#: lib/setup.c:2224 +#: lib/setup.c:2234 msgid "Requested data alignment is not compatible with OPAL alignment." msgstr "Požadované zarovnanie údajov nie je kompatibilné so zarovnaním OPAL." -#: lib/setup.c:2244 +#: lib/setup.c:2254 msgid "Data offset does not satisfy OPAL alignment requirements." msgstr "Odsadenie údajov nespĺňa požiadavky zarovnania OPAL." -#: lib/setup.c:2257 +#: lib/setup.c:2267 msgid "Requested data alignment does not satisfy locking range alignment requirements." msgstr "Požadované zarovnanie údajov nespĺňa požiadavky na zarovnanie uzamykateľnej oblasti." -#: lib/setup.c:2471 +#: lib/setup.c:2481 #, c-format msgid "Compensating device size by % sectors to align it with OPAL alignment granularity." msgstr "Kompenzovanie veľkosti zariadenia o % sektorov na jeho zarovnanie s granualitou zarovnania OPAL." -#: lib/setup.c:2531 lib/setup.c:4260 lib/setup.c:4466 lib/utils_wipe.c:356 -#: lib/luks2/luks2_json_metadata.c:2742 lib/luks2/luks2_json_metadata.c:3017 +#: lib/setup.c:2541 lib/setup.c:4276 lib/setup.c:4482 lib/utils_wipe.c:356 +#: lib/luks2/luks2_json_metadata.c:2734 lib/luks2/luks2_json_metadata.c:3009 #, c-format msgid "Failed to acquire OPAL lock on device %s." msgstr "Zlyhalo získanie zámku OPAL na zariadení %s." -#: lib/setup.c:2541 +#: lib/setup.c:2551 msgid "Incorrect OPAL Admin key." msgstr "Nesprávny kľúč správcu OPAL." -#: lib/setup.c:2543 +#: lib/setup.c:2553 msgid "Cannot setup OPAL segment." msgstr "Nedá sa nastaviť segment OPAL." -#: lib/setup.c:2625 +#: lib/setup.c:2635 #, c-format msgid "Cannot format device %s, OPAL device seems to be fully write-protected now." msgstr "Nedá sa formátovať zariadenie %s, zariadenie OPAL sa teraz zdá byť úplne chránené voči zápisu." -#: lib/setup.c:2627 +#: lib/setup.c:2637 msgid "This is perhaps a bug in firmware. Run OPAL PSID reset and reconnect for recovery." msgstr "Toto je možno chyba vo firmvéri. Spustite resetovanie OPAL PSID a znova sa pripojte pre obnovu." -#: lib/setup.c:2647 +#: lib/setup.c:2657 #, c-format msgid "Locking range %d reset on device %s failed." msgstr "Reset uzamykateľnej oblasti %d na zariadení %s zlyhal." -#: lib/setup.c:2667 +#: lib/setup.c:2677 msgid "Can't format LOOPAES without device." msgstr "Nie je možné formátovať LOOPAES bez zariadenia." -#: lib/setup.c:2712 +#: lib/setup.c:2722 msgid "Can't format VERITY without device." msgstr "Nie je možné formátovať VERITY bez zariadenia." -#: lib/setup.c:2723 lib/verity/verity.c:88 +#: lib/setup.c:2733 lib/verity/verity.c:88 #, c-format msgid "Unsupported VERITY hash type %d." msgstr "Nepodporovaný typ hashu VERITY %d." -#: lib/setup.c:2729 lib/verity/verity.c:96 +#: lib/setup.c:2739 lib/verity/verity.c:96 msgid "Unsupported VERITY block size." msgstr "Nepodporovaná veľkosť bloku VERITY." -#: lib/setup.c:2734 lib/verity/verity.c:61 +#: lib/setup.c:2744 lib/verity/verity.c:61 msgid "Unsupported VERITY hash offset." msgstr "Nepodporované odsadenie hashu VERITY." -#: lib/setup.c:2739 +#: lib/setup.c:2749 msgid "Unsupported VERITY FEC offset." msgstr "Nepodporované odsadenie VERITY FEC." -#: lib/setup.c:2763 +#: lib/setup.c:2773 msgid "Data area overlaps with hash area." msgstr "Oblasť údajov presahuje do oblasti hashu." -#: lib/setup.c:2788 +#: lib/setup.c:2798 msgid "Hash area overlaps with FEC area." msgstr "Oblasť hashu presahuje do oblasti FEC." -#: lib/setup.c:2795 +#: lib/setup.c:2805 msgid "Data area overlaps with FEC area." msgstr "Oblasť údajov presahuje do oblasti FEC." -#: lib/setup.c:2887 +#: lib/setup.c:2897 msgid "Integrity key size mismatch." msgstr "Nesúlad vo veľkosti kľúča integrity." -#: lib/setup.c:2938 +#: lib/setup.c:2948 #, c-format msgid "WARNING: Requested tag size %d bytes differs from %s size output (%d bytes).\n" msgstr "VAROVANIE: Požadovaná veľkosť príznaku %d bajtov sa líši od %s veľkosti výstupu (%d bajtov).\n" -#: lib/setup.c:3051 lib/setup.c:3153 +#: lib/setup.c:3061 lib/setup.c:3163 #, c-format msgid "Unknown or unsupported device type %s requested." msgstr "Vyžadovaný neznámy alebo nepodporovaný typ šifrovaného zariadenia %s." -#: lib/setup.c:3067 +#: lib/setup.c:3077 #, c-format msgid "Device %s does not provide inline integrity data fields." msgstr "Zariadenie %s neposkytuje dátové polia pre inline integritu." -#: lib/setup.c:3073 +#: lib/setup.c:3083 #, c-format msgid "Inline tag size % [bytes] is larger than % provided by device %s." msgstr "Veľkosť príznaku inline % [bajtov] je väčšia ako % poskytnutá zariadením %s." -#: lib/setup.c:3088 +#: lib/setup.c:3098 #, c-format msgid "Sector must be the same as device hardware sector (%zu bytes)." msgstr "Sektor musí byť rovnaký ako hardvérový sektor zariadenia (%zu bajtov)." -#: lib/setup.c:3518 lib/setup.c:3607 lib/setup.c:3620 +#: lib/setup.c:3528 lib/setup.c:3617 lib/setup.c:3630 #, c-format msgid "Unsupported parameters on device %s." msgstr "Nepodporované parametre na zariadení %s." -#: lib/setup.c:3524 lib/setup.c:3627 lib/luks2/luks2_reencrypt.c:2929 +#: lib/setup.c:3534 lib/setup.c:3637 lib/luks2/luks2_reencrypt.c:2929 #: lib/luks2/luks2_reencrypt.c:3198 lib/luks2/luks2_reencrypt.c:3595 #, c-format msgid "Mismatching parameters on device %s." msgstr "Neodpovedajúce parametre na zariadení %s." -#: lib/setup.c:3650 +#: lib/setup.c:3660 msgid "Crypt devices mismatch." msgstr "Nesúlad v šifrovaných zariadeniach." -#: lib/setup.c:3682 lib/setup.c:3687 lib/luks2/luks2_reencrypt.c:2413 +#: lib/setup.c:3692 lib/setup.c:3697 lib/luks2/luks2_reencrypt.c:2413 #: lib/luks2/luks2_reencrypt.c:2945 lib/luks2/luks2_reencrypt.c:4237 #, c-format msgid "Failed to reload device %s." msgstr "Nepodarilo sa znovu načítať zariadenie %s." -#: lib/setup.c:3693 lib/setup.c:3699 lib/luks2/luks2_reencrypt.c:2383 +#: lib/setup.c:3703 lib/setup.c:3709 lib/luks2/luks2_reencrypt.c:2383 #: lib/luks2/luks2_reencrypt.c:2390 lib/luks2/luks2_reencrypt.c:2959 #, c-format msgid "Failed to suspend device %s." msgstr "Zlyhalo pozastavenie zariadenia %s." -#: lib/setup.c:3705 lib/luks2/luks2_reencrypt.c:2397 +#: lib/setup.c:3715 lib/luks2/luks2_reencrypt.c:2397 #: lib/luks2/luks2_reencrypt.c:2980 lib/luks2/luks2_reencrypt.c:4150 #: lib/luks2/luks2_reencrypt.c:4241 #, c-format msgid "Failed to resume device %s." msgstr "Zlyhalo prebudenie zariadenia %s." -#: lib/setup.c:3720 +#: lib/setup.c:3730 #, c-format msgid "Fatal error while reloading device %s (on top of device %s)." msgstr "Fatálna chyba počas opätovného načítavania zariadenia %s (nad zariadením %s)." -#: lib/setup.c:3723 lib/setup.c:3725 +#: lib/setup.c:3733 lib/setup.c:3735 #, c-format msgid "Failed to switch device %s to dm-error." msgstr "Zlyhalo prepnutie zariadenia %s na dm-error." -#: lib/setup.c:3768 +#: lib/setup.c:3778 msgid "Can not resize LUKS2 device with static size." msgstr "Nedá sa zmeniť veľkosť LUKS2 zariadenia so statickou veľkosťou." -#: lib/setup.c:3773 +#: lib/setup.c:3783 msgid "Resize of LUKS2 device with integrity protection is not supported." msgstr "Zmena veľkosti zariadenia s ochranou integrity nie je podporovaná." -#: lib/setup.c:3819 +#: lib/setup.c:3829 msgid "Cannot resize loop device." msgstr "Nie je možné zmeniť veľkosť loop zariadenia." -#: lib/setup.c:3863 +#: lib/setup.c:3873 msgid "WARNING: Maximum size already set or kernel doesn't support resize.\n" msgstr "VAROVANIE: Maximálna veľkosť je už dosiahnutá alebo jadro nepodporuje zmenu veľkosti.\n" -#: lib/setup.c:3929 +#: lib/setup.c:3939 msgid "Resize failed, the kernel doesn't support it." msgstr "Zmena veľkosti zlyhala, jadro toto nepodporuje." -#: lib/setup.c:3961 +#: lib/setup.c:3971 msgid "Do you really want to change UUID of device?" msgstr "Naozaj chcete zmeniť UUID zariadenia?" -#: lib/setup.c:4053 +#: lib/setup.c:4061 lib/setup.c:4069 msgid "Header backup file does not contain compatible LUKS header." msgstr "Záložný súbor s hlavičkou neobsahuje kompatibilnú LUKS hlavičku." -#: lib/setup.c:4160 +#: lib/setup.c:4176 #, c-format msgid "Volume %s is not active." msgstr "Zväzok %s nie je aktívny." -#: lib/setup.c:4215 +#: lib/setup.c:4231 #, c-format msgid "Volume %s is already suspended." msgstr "Zväzok %s už je pozastavený." -#: lib/setup.c:4241 +#: lib/setup.c:4257 #, c-format msgid "Suspend is not supported for device %s." msgstr "Pozastavenie nie je podporované pre zariadenie %s." -#: lib/setup.c:4243 lib/setup.c:4251 +#: lib/setup.c:4259 lib/setup.c:4267 #, c-format msgid "Error during suspending device %s." msgstr "Chyba počas pozastavovania zariadenia %s." -#: lib/setup.c:4266 +#: lib/setup.c:4282 #, c-format msgid "Device %s was suspended but hardware OPAL device cannot be locked." msgstr "Zariadenie %s bolo pozastavené, ale hardvérové zariadenie OPAL nemôže byť uzamknuté." -#: lib/setup.c:4297 lib/setup.c:4491 +#: lib/setup.c:4313 lib/setup.c:4507 #, c-format msgid "Resume is not supported for device %s." msgstr "Prebudenie nie je podporované pre zariadenie %s." -#: lib/setup.c:4299 lib/setup.c:4481 lib/setup.c:4493 +#: lib/setup.c:4315 lib/setup.c:4497 lib/setup.c:4509 #, c-format msgid "Error during resuming device %s." msgstr "Chyba počas prebúdzania zariadenia %s." -#: lib/setup.c:4335 +#: lib/setup.c:4351 msgid "Failed to unlink volume key from user specified keyring." msgstr "Zlyhalo odpojenie kľúča zväzku od používateľom zadaného zväzku kľúčov." -#: lib/setup.c:4457 lib/setup.c:5637 +#: lib/setup.c:4473 lib/setup.c:5653 msgid "Failed to link volume key in user defined keyring." msgstr "Zlyhalo pripojenie kľúča zväzku do používateľom zadaného zväzku kľúčov." -#: lib/setup.c:4556 src/cryptsetup.c:2722 +#: lib/setup.c:4572 src/cryptsetup.c:2722 #, c-format msgid "Volume %s is not suspended." msgstr "Zväzok %s nie je pozastavený." -#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1856 +#: lib/setup.c:4683 lib/setup.c:7326 lib/setup.c:7348 src/cryptsetup.c:1856 #: src/cryptsetup.c:2260 src/cryptsetup.c:2278 src/utils_reencrypt.c:306 -#: src/utils_reencrypt.c:1969 +#: src/utils_reencrypt.c:1995 msgid "Volume key does not match the volume." msgstr "Kľúč zväzku nezodpovedá zväzku." -#: lib/setup.c:4821 +#: lib/setup.c:4837 msgid "Failed to swap new key slot." msgstr "Zlyhala výmena nového miesta pre kľúč." -#: lib/setup.c:4919 +#: lib/setup.c:4935 #, c-format msgid "Key slot %d is invalid." msgstr "Miesto pre kľúč %d je neplatné." -#: lib/setup.c:4925 src/cryptsetup.c:1977 src/cryptsetup.c:2437 +#: lib/setup.c:4941 src/cryptsetup.c:1977 src/cryptsetup.c:2437 #: src/cryptsetup.c:3122 src/cryptsetup.c:3182 #, c-format msgid "Keyslot %d is not active." msgstr "Miesto pre kľúč %d nie je aktívne." -#: lib/setup.c:4944 +#: lib/setup.c:4960 msgid "Device header overlaps with data area." msgstr "Hlavička zariadenia zasahuje do oblasti údajov." -#: lib/setup.c:5165 +#: lib/setup.c:5181 msgid "Reencryption in-progress. Cannot activate device." msgstr "Prebieha prešifrovanie. Nie je možné aktivovať zariadenie." -#: lib/setup.c:5167 lib/luks2/luks2_json_metadata.c:2913 +#: lib/setup.c:5183 lib/luks2/luks2_json_metadata.c:2905 #: lib/luks2/luks2_reencrypt.c:3726 msgid "Failed to get reencryption lock." msgstr "Zlyhalo získanie zámku pre prešifrovanie." -#: lib/setup.c:5189 +#: lib/setup.c:5205 msgid "LUKS2 reencryption recovery using volume key(s) failed." msgstr "Obnova prešifrovaním LUKS2 s použitím kľúču(ov) zväzku zlyhala." -#: lib/setup.c:5325 +#: lib/setup.c:5341 #, c-format msgid "Device %s already exists." msgstr "Zariadenie %s už existuje." -#: lib/setup.c:5332 +#: lib/setup.c:5348 #, c-format msgid "Cannot use device %s, name is invalid or still in use." msgstr "Nie je možné použiť zariadenie %s, názov je neplatný alebo sa stále používa." -#: lib/setup.c:5344 +#: lib/setup.c:5360 msgid "Reencryption volume keys do not match the volume." msgstr "Kľúče zväzku na prešifrovanie sa líšia od zväzku." -#: lib/setup.c:5361 +#: lib/setup.c:5377 msgid "Incorrect volume key specified for plain device." msgstr "Zadaný nesprávny kľúč zväzku pre plain zariadenie." -#: lib/setup.c:5387 lib/setup.c:5448 +#: lib/setup.c:5403 lib/setup.c:5464 msgid "Device type is not properly initialized." msgstr "Typ zariadenia nie je riadne inicializovaný." -#: lib/setup.c:5486 +#: lib/setup.c:5502 msgid "Kernel keyring is not supported by the kernel." msgstr "Zväzok kľúčov jadra nie je jadrom podporovaný." -#: lib/setup.c:5490 +#: lib/setup.c:5506 msgid "Kernel keyring missing: required for passing signature to kernel." msgstr "Zväzok kľúčov jadra chýba: vyžadované pre odovzdanie podpisu jadru." -#: lib/setup.c:5545 +#: lib/setup.c:5561 #, c-format msgid "Cannot use keyring key %s." msgstr "Nedá sa použiť kľúč %s zo zväzku kľúčov." -#: lib/setup.c:5758 +#: lib/setup.c:5774 msgid "Incorrect root hash specified for verity device." msgstr "Nesprávny koreňový hash zadaný pre verity zariadenie." -#: lib/setup.c:5799 lib/setup.c:5824 +#: lib/setup.c:5815 lib/setup.c:5840 msgid "OPAL does not support deferred deactivation." msgstr "OPAL nepodporuje odloženú deaktiváciu." -#: lib/setup.c:5814 lib/setup.c:5845 lib/luks2/luks2_json_metadata.c:2978 +#: lib/setup.c:5830 lib/setup.c:5861 lib/luks2/luks2_json_metadata.c:2970 #: src/utils_reencrypt.c:89 #, c-format msgid "Device %s is still in use." msgstr "Zariadenie %s sa stále používa." -#: lib/setup.c:5832 +#: lib/setup.c:5848 #, c-format msgid "Could not cancel deferred remove from device %s." msgstr "Nedá sa zrušiť odložené odstránenie zo zariadenia %s." -#: lib/setup.c:5854 +#: lib/setup.c:5870 #, c-format msgid "Invalid device %s." msgstr "Neplatné zariadenie %s." -#: lib/setup.c:6001 +#: lib/setup.c:6017 msgid "Volume key buffer too small." msgstr "Vyhradená pamäť pre kľúč zväzku je príliš malá." -#: lib/setup.c:6012 +#: lib/setup.c:6028 msgid "Cannot retrieve volume key for LUKS2 device." msgstr "Nedá sa získať kľúč zväzku pre LUKS2 zariadenie." -#: lib/setup.c:6021 +#: lib/setup.c:6037 msgid "Cannot retrieve volume key for LUKS1 device." msgstr "Nedá sa získať kľúč zväzku pre LUKS1 zariadenie." -#: lib/setup.c:6035 +#: lib/setup.c:6051 msgid "Cannot retrieve volume key for plain device." msgstr "Nedá sa získať kľúč zväzku pre plain zariadenie." -#: lib/setup.c:6043 +#: lib/setup.c:6059 msgid "Cannot retrieve root hash for verity device." msgstr "Nedá sa získať koreňový hash pre verity zariadenie." -#: lib/setup.c:6052 +#: lib/setup.c:6068 msgid "Cannot retrieve volume key for BITLK device." msgstr "Nedá sa získať kľúč zväzku pre BITLK zariadenie." -#: lib/setup.c:6057 +#: lib/setup.c:6073 msgid "Cannot retrieve volume key for FVAULT2 device." msgstr "Nedá sa získať kľúč zväzku pre FVAULT2 zariadenie." -#: lib/setup.c:6059 +#: lib/setup.c:6075 #, c-format msgid "This operation is not supported for %s crypt device." msgstr "Táto operácia nie je podporovaná pre %s šifrované zariadenie." -#: lib/setup.c:6244 lib/setup.c:6255 +#: lib/setup.c:6260 lib/setup.c:6271 msgid "Dump operation is not supported for this device type." msgstr "Operácia výpisu nie je podporovaná pre tento typ zariadenia." -#: lib/setup.c:6635 +#: lib/setup.c:6651 #, c-format msgid "Data offset is not multiple of %u bytes." msgstr "Odsadenie údajov nie je násobkom %u bajtov." -#: lib/setup.c:6943 +#: lib/setup.c:6959 #, c-format msgid "Cannot convert device %s which is still in use." msgstr "Nedá sa konvertovať zariadenie %s, ktoré sa stále používa." -#: lib/setup.c:7251 lib/setup.c:7406 +#: lib/setup.c:7267 lib/setup.c:7422 #, c-format msgid "Failed to assign keyslot %u as the new volume key." msgstr "Za nový kľúč zväzku sa nepodarilo priradiť miesto s kľúčom %u." -#: lib/setup.c:7275 +#: lib/setup.c:7291 msgid "Failed to initialize default LUKS2 keyslot parameters." msgstr "Zlyhala inicializácia predvolených parametrov LUKS2 miesta na kľúč." -#: lib/setup.c:7281 +#: lib/setup.c:7297 #, c-format msgid "Failed to assign keyslot %d to digest." msgstr "Zlyhalo priradenie miesta pre kľúč %d k otlačku (digest)." -#: lib/setup.c:7523 +#: lib/setup.c:7539 msgid "Cannot add key slot, all slots disabled and no volume key provided." msgstr "Nedá sa pridať miesto pre kľúč, všetky miesta sú vypnuté a nie je poskytnutý žiaden kľúč zväzku." -#: lib/setup.c:7611 lib/setup.c:7626 lib/verity/verity.c:333 +#: lib/setup.c:7627 lib/setup.c:7642 lib/verity/verity.c:333 msgid "Failed to load key in kernel keyring." msgstr "Zlyhalo načítanie kľúča zo zväzku kľúčov jadra." -#: lib/setup.c:7807 +#: lib/setup.c:7823 #, c-format msgid "Could not find keyring described by \"%s\"." msgstr "Nedá sa nájsť zväzok kľúčov opísaný podľa \"%s\"." -#: lib/setup.c:7872 +#: lib/setup.c:7888 msgid "Failed to acquire global memory-hard access serialization lock." msgstr "Zlyhalo získanie zámku pre tvrdý prístup ku globálnej pamäti." @@ -797,7 +798,7 @@ msgid "Cannot read requested amount of data." msgstr "Nedá sa prečítať požadované množstvo údajov." #: lib/utils_device.c:207 lib/utils_storage_wrappers.c:99 -#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2257 +#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2283 #, c-format msgid "Device %s does not exist or access denied." msgstr "Zariadenie %s neexistuje alebo bol prístup odmietnutý." @@ -913,16 +914,16 @@ msgstr "Požadovaný počet paralelných vlákien PBKDF nemôže byť nula." msgid "Only PBKDF2 is supported in FIPS mode." msgstr "Iba PBKDF2 je podporavané v režime FIPS." -#: lib/utils_benchmark.c:171 +#: lib/utils_benchmark.c:175 msgid "PBKDF benchmark disabled but iterations not set." msgstr "Porovnanie výkonov PBKDF je vypnuté, ale iterácie nie sú nastavené." -#: lib/utils_benchmark.c:190 +#: lib/utils_benchmark.c:194 #, c-format msgid "Not compatible PBKDF2 options (using hash algorithm %s)." msgstr "Nekompatibilná možnosť PBKDF2 (používa sa hash algoritmus %s)." -#: lib/utils_benchmark.c:210 +#: lib/utils_benchmark.c:214 msgid "Not compatible PBKDF options." msgstr "Nekompatibilná možnosť PBKDF." @@ -971,9 +972,9 @@ msgstr "Veľkosť kľúča v režime XTS musí byť 256 alebo 512 bitov." msgid "Cipher specification should be in [cipher]-[mode]-[iv] format." msgstr "Špecifikácia šifry musí byť vo formáte [šifra]-[režim]-[iv]." -#: lib/luks1/keyencryption.c:85 lib/luks1/keymanage.c:353 -#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1132 -#: lib/luks2/luks2_json_metadata.c:1518 lib/luks2/luks2_keyslot.c:711 +#: lib/luks1/keyencryption.c:85 lib/luks1/keymanage.c:358 +#: lib/luks1/keymanage.c:665 lib/luks1/keymanage.c:1133 +#: lib/luks2/luks2_json_metadata.c:1510 lib/luks2/luks2_keyslot.c:711 #, c-format msgid "Cannot write to device %s, permission denied." msgstr "Nemožno zapisovať na zariadenie %s, prístup odmietnutý." @@ -991,13 +992,13 @@ msgstr "Zlyhal prístup k dočasnému zariadeniu s úložiskom kľúča." msgid "IO error while encrypting keyslot." msgstr "Chyba vstupu/výstupu počas šifrovania miesta pre kľúč." -#: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:356 -#: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:659 +#: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:361 +#: lib/luks1/keymanage.c:619 lib/luks1/keymanage.c:668 lib/tcrypt/tcrypt.c:659 #: lib/fvault2/fvault2.c:872 lib/verity/verity.c:67 lib/verity/verity.c:183 #: lib/verity/verity_hash.c:312 lib/verity/verity_hash.c:321 #: lib/verity/verity_hash.c:350 lib/verity/verity_fec.c:247 #: lib/verity/verity_fec.c:259 lib/verity/verity_fec.c:264 -#: lib/luks2/luks2_json_metadata.c:1521 src/utils_reencrypt_luks1.c:108 +#: lib/luks2/luks2_json_metadata.c:1513 src/utils_reencrypt_luks1.c:108 #: src/utils_reencrypt_luks1.c:120 #, c-format msgid "Cannot open device %s." @@ -1012,61 +1013,61 @@ msgstr "Chyba vstupu/výstupu počas dešifrovania miesta pre kľúč." msgid "Device %s is too small. (LUKS1 requires at least % bytes.)" msgstr "Zariadenie %s je príliš malé. (LUKS1 požaduje aspoň % bajtov.)" -#: lib/luks1/keymanage.c:138 lib/luks1/keymanage.c:146 -#: lib/luks1/keymanage.c:158 lib/luks1/keymanage.c:169 -#: lib/luks1/keymanage.c:181 +#: lib/luks1/keymanage.c:143 lib/luks1/keymanage.c:151 +#: lib/luks1/keymanage.c:163 lib/luks1/keymanage.c:174 +#: lib/luks1/keymanage.c:186 #, c-format msgid "LUKS keyslot %u is invalid." msgstr "LUKS miesto pre kľúč %u je neplatné." -#: lib/luks1/keymanage.c:254 lib/luks2/luks2_json_metadata.c:1382 +#: lib/luks1/keymanage.c:259 lib/luks2/luks2_json_metadata.c:1382 #, c-format msgid "Requested header backup file %s already exists." msgstr "Požadovaný súbor so zálohou hlavičky %s už existuje." -#: lib/luks1/keymanage.c:256 lib/luks2/luks2_json_metadata.c:1384 +#: lib/luks1/keymanage.c:261 lib/luks2/luks2_json_metadata.c:1384 #, c-format msgid "Cannot create header backup file %s." msgstr "Nedá sa vytvoriť súbor so zálohou hlavičky %s." -#: lib/luks1/keymanage.c:263 lib/luks2/luks2_json_metadata.c:1391 +#: lib/luks1/keymanage.c:268 lib/luks2/luks2_json_metadata.c:1391 #, c-format msgid "Cannot write header backup file %s." msgstr "Nedá sa zapísať súbor so zálohou hlavičky %s." -#: lib/luks1/keymanage.c:295 lib/luks2/luks2_json_metadata.c:1428 +#: lib/luks1/keymanage.c:300 lib/luks2/luks2_json_metadata.c:1420 msgid "Backup file does not contain valid LUKS header." msgstr "Súbor so zálohou neobsahuje platnú LUKS hlavičku." -#: lib/luks1/keymanage.c:308 lib/luks1/keymanage.c:580 -#: lib/luks2/luks2_json_metadata.c:1450 +#: lib/luks1/keymanage.c:313 lib/luks1/keymanage.c:585 +#: lib/luks2/luks2_json_metadata.c:1442 #, c-format msgid "Cannot open header backup file %s." msgstr "Nedá sa otvoriť súbor so zálohou hlavičky %s." -#: lib/luks1/keymanage.c:316 lib/luks2/luks2_json_metadata.c:1458 +#: lib/luks1/keymanage.c:321 lib/luks2/luks2_json_metadata.c:1450 #, c-format msgid "Cannot read header backup file %s." msgstr "Nedá sa čítať súbor so zálohou hlavičky %s." -#: lib/luks1/keymanage.c:326 +#: lib/luks1/keymanage.c:331 msgid "Data offset or key size differs on device and backup, restore failed." msgstr "Odsadenie údajov alebo veľkosť kľúča sa líši na zariadení a v zálohe, obnova zlyhala." -#: lib/luks1/keymanage.c:334 +#: lib/luks1/keymanage.c:339 #, c-format msgid "Device %s %s%s" msgstr "Zariadenie %s %s%s" -#: lib/luks1/keymanage.c:335 +#: lib/luks1/keymanage.c:340 msgid "does not contain LUKS header. Replacing header can destroy data on that device." msgstr "neobsahuje LUKS hlavičku. Nahradenie hlavičky môže zničiť údaje na tomto zariadení." -#: lib/luks1/keymanage.c:336 +#: lib/luks1/keymanage.c:341 msgid "already contains LUKS header. Replacing header will destroy existing keyslots." msgstr "už obsahuje LUKS hlavičku. Nahradenie hlavičky zničí existujúce miesta s kľúčmi." -#: lib/luks1/keymanage.c:337 lib/luks2/luks2_json_metadata.c:1490 +#: lib/luks1/keymanage.c:342 lib/luks2/luks2_json_metadata.c:1482 msgid "" "\n" "WARNING: real device header has different UUID than backup!" @@ -1074,130 +1075,130 @@ msgstr "" "\n" "VAROVANIE: hlavička skutočného zariadenia má iné UUID ako záloha!" -#: lib/luks1/keymanage.c:385 +#: lib/luks1/keymanage.c:390 msgid "Non standard key size, manual repair required." msgstr "Neštandardná veľkosť kľúča, manuálna oprava je vyžadovaná." -#: lib/luks1/keymanage.c:395 +#: lib/luks1/keymanage.c:400 msgid "Non standard keyslots alignment, manual repair required." msgstr "Neštandardné odsadenie miest pre kľúče, manuálna oprava je vyžadovaná." -#: lib/luks1/keymanage.c:404 +#: lib/luks1/keymanage.c:409 #, c-format msgid "Cipher mode repaired (%s -> %s)." msgstr "Režim šifry opravený (%s -> %s)." -#: lib/luks1/keymanage.c:415 +#: lib/luks1/keymanage.c:420 #, c-format msgid "Cipher hash repaired to lowercase (%s)." msgstr "Hash šifry opravený na malé písmená (%s)." -#: lib/luks1/keymanage.c:417 lib/luks1/keymanage.c:523 -#: lib/luks1/keymanage.c:756 +#: lib/luks1/keymanage.c:422 lib/luks1/keymanage.c:528 +#: lib/luks1/keymanage.c:757 #, c-format msgid "Requested LUKS hash %s is not supported." msgstr "Požadovaný LUKS hash %s nie je podporovaný." -#: lib/luks1/keymanage.c:431 +#: lib/luks1/keymanage.c:436 msgid "Repairing keyslots." msgstr "Opravujú sa miesta s kľúčmi." -#: lib/luks1/keymanage.c:450 +#: lib/luks1/keymanage.c:455 #, c-format msgid "Keyslot %i: offset repaired (%u -> %u)." msgstr "Miesto pre kľúč %i: odsadenie opravené (%u -> %u)." -#: lib/luks1/keymanage.c:458 +#: lib/luks1/keymanage.c:463 #, c-format msgid "Keyslot %i: stripes repaired (%u -> %u)." msgstr "Miesto pre kľúč %i: počet prúžkov AF opravený (%u -> %u)." -#: lib/luks1/keymanage.c:467 +#: lib/luks1/keymanage.c:472 #, c-format msgid "Keyslot %i: bogus partition signature." msgstr "Miesto pre kľúč %i: chybný podpis oddielu." -#: lib/luks1/keymanage.c:472 +#: lib/luks1/keymanage.c:477 #, c-format msgid "Keyslot %i: salt wiped." msgstr "Miesto pre kľúč %i: soľ vymazaná." -#: lib/luks1/keymanage.c:489 +#: lib/luks1/keymanage.c:494 msgid "Writing LUKS header to disk." msgstr "Zapisovanie hlavičky LUKS na disk." -#: lib/luks1/keymanage.c:494 +#: lib/luks1/keymanage.c:499 msgid "Repair failed." msgstr "Oprava zlyhala." -#: lib/luks1/keymanage.c:549 +#: lib/luks1/keymanage.c:554 #, c-format msgid "LUKS cipher mode %s is invalid." msgstr "LUKS šifrovací režim %s je neplatný." -#: lib/luks1/keymanage.c:554 +#: lib/luks1/keymanage.c:559 #, c-format msgid "LUKS hash %s is invalid." msgstr "LUKS hash %s je neplatný." -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 +#: lib/luks1/keymanage.c:566 src/cryptsetup.c:1367 msgid "No known problems detected for LUKS header." msgstr "Žiadne známe problémy neboli zistené pre hlavičku LUKS." -#: lib/luks1/keymanage.c:689 +#: lib/luks1/keymanage.c:690 #, c-format msgid "Error during update of LUKS header on device %s." msgstr "Chyba počas aktualizácie hlavičky LUKS na zariadení %s." -#: lib/luks1/keymanage.c:697 +#: lib/luks1/keymanage.c:698 #, c-format msgid "Error re-reading LUKS header after update on device %s." msgstr "Chyba pri opätovnom čítaní hlavičky LUKS po aktualizácií na zariadení %s." -#: lib/luks1/keymanage.c:750 +#: lib/luks1/keymanage.c:751 msgid "Data offset for LUKS header must be either 0 or higher than header size." msgstr "Odsadenie údajov pre LUKS hlavičku musí byť 0 alebo číslo väčšie ako veľkosť hlavičky." -#: lib/luks1/keymanage.c:761 lib/luks1/keymanage.c:832 -#: lib/luks2/luks2_json_format.c:231 lib/luks2/luks2_json_metadata.c:1261 +#: lib/luks1/keymanage.c:762 lib/luks1/keymanage.c:833 +#: lib/luks2/luks2_json_format.c:240 lib/luks2/luks2_json_metadata.c:1261 #: src/utils_reencrypt.c:703 msgid "Wrong LUKS UUID format provided." msgstr "Poskytnutý nesprávny formát LUKS UUID." -#: lib/luks1/keymanage.c:783 +#: lib/luks1/keymanage.c:784 msgid "Cannot create LUKS header: reading random salt failed." msgstr "Nedá sa vytvoriť hlavička LUKS: zlyhalo čítanie náhodnej soli." -#: lib/luks1/keymanage.c:811 +#: lib/luks1/keymanage.c:812 #, c-format msgid "Cannot create LUKS header: header digest failed (using hash %s)." msgstr "Nedá sa vytvoriť hlavička LUKS: zlyhal otlačok (digest) hlavičky (používa sa hash %s)." -#: lib/luks1/keymanage.c:856 +#: lib/luks1/keymanage.c:857 #, c-format msgid "Key slot %d active, purge first." msgstr "Miesto pre kľúč %d aktívne, najprv ho vymažte." -#: lib/luks1/keymanage.c:862 +#: lib/luks1/keymanage.c:863 #, c-format msgid "Key slot %d material includes too few stripes. Header manipulation?" msgstr "Miesto pre kľúč %d obsahuje príliš málo prúžkov. Manipulácia s hlavičkou?" -#: lib/luks1/keymanage.c:900 lib/luks2/luks2_keyslot_luks2.c:217 +#: lib/luks1/keymanage.c:901 lib/luks2/luks2_keyslot_luks2.c:217 msgid "PBKDF2 iteration value overflow." msgstr "PBKDF2 hodnota iterácií pretečená." -#: lib/luks1/keymanage.c:1022 +#: lib/luks1/keymanage.c:1023 #, c-format msgid "Cannot open keyslot (using hash %s)." msgstr "Nedá sa otvoriť miesto pre kľúč (používa sa hash %s)." -#: lib/luks1/keymanage.c:1118 +#: lib/luks1/keymanage.c:1119 #, c-format msgid "Key slot %d is invalid, please select keyslot between 0 and %d." msgstr "Miesto pre kľúč %d je neplatné, prosím vyberte miesto pre kľúč medzi 0 a %d." -#: lib/luks1/keymanage.c:1136 lib/luks2/luks2_keyslot.c:715 +#: lib/luks1/keymanage.c:1137 lib/luks2/luks2_keyslot.c:715 #, c-format msgid "Cannot wipe device %s." msgstr "Nedá sa vymazať zariadenie %s." @@ -1375,33 +1376,33 @@ msgstr "Táto operácia nie je podporovaná." msgid "Unexpected key data size." msgstr "Neočakávaná veľkosť údajov o kľúči." -#: lib/bitlk/bitlk.c:1442 +#: lib/bitlk/bitlk.c:1448 msgid "This BITLK device is in an unsupported state and cannot be activated." msgstr "Toto zariadenie BITLK je v nepodporovanom stave a nemôže byť aktivované." -#: lib/bitlk/bitlk.c:1447 +#: lib/bitlk/bitlk.c:1453 #, c-format msgid "BITLK devices with type '%s' cannot be activated." msgstr "Zariadenie BITLK s typom \"%s\" nemôže byť aktivované." -#: lib/bitlk/bitlk.c:1486 +#: lib/bitlk/bitlk.c:1492 #, c-format msgid "WARNING: BitLocker volume size % does not match the underlying device size %" msgstr "VAROVANIE: Veľkosť zväzku BitLocker % sa nezhoduje s veľkosťou prislúchajúceho zariadenia %" -#: lib/bitlk/bitlk.c:1613 +#: lib/bitlk/bitlk.c:1634 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK IV." msgstr "Nedá sa aktivovať zariadenie, jadru dm-crypt chýba podpora pre BITLK IV." -#: lib/bitlk/bitlk.c:1617 +#: lib/bitlk/bitlk.c:1638 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK Elephant diffuser." msgstr "Nedá sa aktivovať zariadenie, jadru dm-crypt chýba podpora pre difuzér BITLK Elephant." -#: lib/bitlk/bitlk.c:1621 +#: lib/bitlk/bitlk.c:1642 msgid "Cannot activate device, kernel dm-crypt is missing support for large sector size." msgstr "Nedá sa aktivovať zariadenie, jadru dm-crypt chýba podpora pre veľké veľkosti sektorov." -#: lib/bitlk/bitlk.c:1625 +#: lib/bitlk/bitlk.c:1646 msgid "Cannot activate device, kernel dm-zero module is missing." msgstr "Nedá sa aktivovať zariadenie, modul jadra dm-zero chýba." @@ -1558,24 +1559,24 @@ msgstr "Zlyhalo určenie veľkosti zariadenia %s." msgid "Incompatible kernel dm-integrity metadata (version %u) detected on %s." msgstr "Nekompatibilné metadáta (verzia %u) jadra dm-integrity zachytené na %s." -#: lib/integrity/integrity.c:308 lib/integrity/integrity.c:492 +#: lib/integrity/integrity.c:309 lib/integrity/integrity.c:493 msgid "Kernel does not support dm-integrity mapping." msgstr "Jadro nepodporuje mapovanie dm-integrity." -#: lib/integrity/integrity.c:314 +#: lib/integrity/integrity.c:315 msgid "Kernel does not support dm-integrity fixed metadata alignment." msgstr "Jadro nepodporuje pevné zarovnanie metadát dm-integrity." -#: lib/integrity/integrity.c:323 +#: lib/integrity/integrity.c:324 msgid "Kernel refuses to activate insecure recalculate option (see legacy activation options to override)." msgstr "Jadro odmieta aktivovať nezabezpečenú možnosť prepočtu (na prepnutie pozri zastaralé možnosti aktivácie)." -#: lib/integrity/integrity.c:329 +#: lib/integrity/integrity.c:330 msgid "Kernel does not support dm-integrity inline mode." msgstr "Jadro nepodporuje dm-integrity režim inline." #: lib/luks2/luks2_disk_metadata.c:382 lib/luks2/luks2_json_metadata.c:1184 -#: lib/luks2/luks2_json_metadata.c:1510 +#: lib/luks2/luks2_json_metadata.c:1502 #, c-format msgid "Failed to acquire write lock on device %s." msgstr "Zlyhalo získanie zámky zápisu na zariadenie %s." @@ -1597,22 +1598,22 @@ msgstr "" msgid "WARNING: keyslots area (% bytes) is very small, available LUKS2 keyslot count is very limited.\n" msgstr "VAROVANIE: oblasť pre kľúče (% bajtov) je príliš malá, dostupné množstvo miest pre kľúče LUKS2 je veľmi limitované.\n" -#: lib/luks2/luks2_json_format.c:418 +#: lib/luks2/luks2_json_format.c:427 msgid "Requested data offset is too small." msgstr "Požadovaná pozícia údajov je príliš malá." -#: lib/luks2/luks2_json_format.c:459 +#: lib/luks2/luks2_json_format.c:468 #, c-format msgid "WARNING: LUKS2 metadata size changed to % bytes.\n" msgstr "VAROVANIE: veľkosť LUKS2 metadát sa zmenila na % bajtov.\n" -#: lib/luks2/luks2_json_format.c:463 +#: lib/luks2/luks2_json_format.c:472 #, c-format msgid "WARNING: LUKS2 keyslots area size changed to % bytes.\n" msgstr "VAROVANIE: veľkosť LUKS2 oblasti pre kľúče sa zmenila na % bajtov.\n" #: lib/luks2/luks2_json_metadata.c:1171 lib/luks2/luks2_json_metadata.c:1357 -#: lib/luks2/luks2_json_metadata.c:1417 lib/luks2/luks2_keyslot_luks2.c:71 +#: lib/luks2/luks2_json_metadata.c:1412 lib/luks2/luks2_keyslot_luks2.c:71 #, c-format msgid "Failed to acquire read lock on device %s." msgstr "Zlyhalo získanie zámku čítania na zariadení %s." @@ -1621,33 +1622,33 @@ msgstr "Zlyhalo získanie zámku čítania na zariadení %s." msgid "Label is too long." msgstr "Menovka je príliš dlhá." -#: lib/luks2/luks2_json_metadata.c:1435 +#: lib/luks2/luks2_json_metadata.c:1427 #, c-format msgid "Forbidden LUKS2 requirements detected in backup %s." msgstr "Zistené zakázané požiadavky LUKS2 v zálohe %s." -#: lib/luks2/luks2_json_metadata.c:1474 +#: lib/luks2/luks2_json_metadata.c:1466 msgid "Data offset differ on device and backup, restore failed." msgstr "Pozícia údajov sa líši na zariadení a v zálohe, obnova zlyhala." -#: lib/luks2/luks2_json_metadata.c:1480 +#: lib/luks2/luks2_json_metadata.c:1472 msgid "Binary header with keyslot areas size differ on device and backup, restore failed." msgstr "Binárna hlavička s oblasťou pre kľúče sa líši na zariadení a v zálohe, obnova zlyhala." -#: lib/luks2/luks2_json_metadata.c:1487 +#: lib/luks2/luks2_json_metadata.c:1479 #, c-format msgid "Device %s %s%s%s%s" msgstr "Zariadenie %s %s%s%s%s" -#: lib/luks2/luks2_json_metadata.c:1488 +#: lib/luks2/luks2_json_metadata.c:1480 msgid "does not contain LUKS2 header. Replacing header can destroy data on that device." msgstr "neobsahuje hlavičku LUKS2. Výmena hlavičky môže zničiť údaje na tomto zariadení." -#: lib/luks2/luks2_json_metadata.c:1489 +#: lib/luks2/luks2_json_metadata.c:1481 msgid "already contains LUKS2 header. Replacing header will destroy existing keyslots." msgstr "už obsahuje hlavičku LUKS2. Výmena hlavičky zničí existujúcu oblasť s kľúčmi." -#: lib/luks2/luks2_json_metadata.c:1491 +#: lib/luks2/luks2_json_metadata.c:1483 msgid "" "\n" "WARNING: unknown LUKS2 requirements detected in real device header!\n" @@ -1657,7 +1658,7 @@ msgstr "" "VAROVANIE: neznáme požiadavky LUKS2 zistené na hlavičke skutočného zariadenia!\n" "Výmena hlavičky za záložnú môže poškodiť údaje na tomto zariadení!" -#: lib/luks2/luks2_json_metadata.c:1493 +#: lib/luks2/luks2_json_metadata.c:1485 msgid "" "\n" "WARNING: Unfinished offline reencryption detected on the device!\n" @@ -1667,84 +1668,84 @@ msgstr "" "VAROVANIE: Nedokončené offline prešifrovanie zaznamenané na zariadení!\n" "Výmena hlavičky za záložnú môže poškodiť údaje na tomto zariadení." -#: lib/luks2/luks2_json_metadata.c:1591 +#: lib/luks2/luks2_json_metadata.c:1583 #, c-format msgid "Ignored unknown flag %s." msgstr "Ignorovaný neznámy príznak %s." -#: lib/luks2/luks2_json_metadata.c:2563 lib/luks2/luks2_reencrypt.c:2110 +#: lib/luks2/luks2_json_metadata.c:2555 lib/luks2/luks2_reencrypt.c:2110 #, c-format msgid "Missing key for dm-crypt segment %u" msgstr "Chýbajúci kľúč pre dm-crypt segment %u" -#: lib/luks2/luks2_json_metadata.c:2575 lib/luks2/luks2_reencrypt.c:2123 +#: lib/luks2/luks2_json_metadata.c:2567 lib/luks2/luks2_reencrypt.c:2123 msgid "Failed to set dm-crypt segment." msgstr "Zlyhalo nastavenie dm-crypt segmentu." -#: lib/luks2/luks2_json_metadata.c:2581 lib/luks2/luks2_reencrypt.c:2129 +#: lib/luks2/luks2_json_metadata.c:2573 lib/luks2/luks2_reencrypt.c:2129 msgid "Failed to set dm-linear segment." msgstr "Zlyhalo nastavenie dm-linear segmentu." -#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:580 +#: lib/luks2/luks2_json_metadata.c:2693 src/utils_reencrypt.c:580 msgid "No known cipher specification pattern detected in LUKS2 header." msgstr "Nebol nájdený žiaden známy vzor špecifikácie šifry v hlavičke LUKS2." -#: lib/luks2/luks2_json_metadata.c:2709 +#: lib/luks2/luks2_json_metadata.c:2701 msgid "OPAL device must have static device size." msgstr "Zariadenie OPAL musí mať statickú veľkosť zariadenia." -#: lib/luks2/luks2_json_metadata.c:2729 +#: lib/luks2/luks2_json_metadata.c:2721 msgid "Encrypted OPAL device with integrity must be smaller than locking range." msgstr "Šifrované zariadenie OPAL s integritou musí byť menšie ako uzamykateľná oblasť." -#: lib/luks2/luks2_json_metadata.c:2734 +#: lib/luks2/luks2_json_metadata.c:2726 msgid "OPAL device must have same size as locking range." msgstr "Zariadenie OPAL musí mať rovnakú veľkosť ako uzamykateľná oblasť." -#: lib/luks2/luks2_json_metadata.c:2754 +#: lib/luks2/luks2_json_metadata.c:2746 #, c-format msgid "OPAL device is %s already unlocked.\n" msgstr "Zariadenie OPAL je %s už odomknuté.\n" -#: lib/luks2/luks2_json_metadata.c:2793 +#: lib/luks2/luks2_json_metadata.c:2785 msgid "Unsupported device integrity configuration." msgstr "Nepodporovaná konfigurácia integrity zariadenia." -#: lib/luks2/luks2_json_metadata.c:2809 +#: lib/luks2/luks2_json_metadata.c:2801 msgid "Underlying dm-integrity device with unexpected provided data sectors." msgstr "Prislúchajúce zariadenie dm-integrity neočakávane poskytlo sektory s údajmi." -#: lib/luks2/luks2_json_metadata.c:2911 +#: lib/luks2/luks2_json_metadata.c:2903 msgid "Reencryption in-progress. Cannot deactivate device." msgstr "Prebieha opätovné šifrovanie. Nedá sa deaktivovať zariadenie." -#: lib/luks2/luks2_json_metadata.c:2922 lib/luks2/luks2_reencrypt.c:4287 +#: lib/luks2/luks2_json_metadata.c:2914 lib/luks2/luks2_reencrypt.c:4287 #, c-format msgid "Failed to replace suspended device %s with dm-error target." msgstr "Zlyhala výmena pozastaveného zariadenia %s za cieľ dm-error." -#: lib/luks2/luks2_json_metadata.c:3001 lib/luks2/luks2_json_metadata.c:3023 +#: lib/luks2/luks2_json_metadata.c:2993 lib/luks2/luks2_json_metadata.c:3015 #, c-format msgid "Device %s was deactivated but hardware OPAL device cannot be locked." msgstr "Zariadenie %s bolo deaktivované, ale hardvérové zariadenie OPAL nemôže byť uzamknuté." -#: lib/luks2/luks2_json_metadata.c:3045 +#: lib/luks2/luks2_json_metadata.c:3037 msgid "Unmet LUKS2 requirements detected." msgstr "Zistené nesplnené požiadavky LUKS2." -#: lib/luks2/luks2_json_metadata.c:3053 +#: lib/luks2/luks2_json_metadata.c:3045 msgid "Operation incompatible with device marked for legacy reencryption. Aborting." msgstr "Operácia je nekompatibilná so zariadením, ktoré je označené pre zastaralé prešifrovanie. Operácia sa ruší." -#: lib/luks2/luks2_json_metadata.c:3055 +#: lib/luks2/luks2_json_metadata.c:3047 msgid "Operation incompatible with device marked for LUKS2 reencryption. Aborting." msgstr "Operácia je nekompatibilná so zariadením, ktoré je označené pre LUKS2 prešifrovanie. Operácia sa ruší." -#: lib/luks2/luks2_json_metadata.c:3057 +#: lib/luks2/luks2_json_metadata.c:3049 msgid "Operation incompatible with device using OPAL. Aborting." msgstr "Operácia je nekompatibilná so zariadením, ktoré používa OPAL. Operácia sa ruší." -#: lib/luks2/luks2_json_metadata.c:3059 +#: lib/luks2/luks2_json_metadata.c:3051 msgid "Operation incompatible with device using inline HW tags. Aborting." msgstr "Operácia je nekompatibilná so zariadením, ktoré používa hardvérové inline príznaky. Operácia sa ruší." @@ -1811,60 +1812,60 @@ msgstr "Nedá sa použiť špecifikácia šifry %s-%s pre LUKS2 miesto s kľúč msgid "Unable to move keyslot area. Not enough space." msgstr "Nedá sa presunúť oblasť s kľúčmi. Nie je dostatok miesta." -#: lib/luks2/luks2_luks1_convert.c:619 +#: lib/luks2/luks2_luks1_convert.c:627 msgid "Cannot convert to LUKS2 format - invalid metadata." msgstr "Nedá sa zmeniť formát na LUKS2 - neplatné metadáta." -#: lib/luks2/luks2_luks1_convert.c:636 +#: lib/luks2/luks2_luks1_convert.c:644 msgid "Unable to move keyslot area. LUKS2 keyslots area too small." msgstr "Nedá sa presunúť oblasť s kľúčmi. LUKS2 oblasť s kľúčmi je príliš malá." -#: lib/luks2/luks2_luks1_convert.c:642 lib/luks2/luks2_luks1_convert.c:972 +#: lib/luks2/luks2_luks1_convert.c:650 lib/luks2/luks2_luks1_convert.c:980 msgid "Unable to move keyslot area." msgstr "Nedá sa presunúť oblasť s kľúčmi." -#: lib/luks2/luks2_luks1_convert.c:757 +#: lib/luks2/luks2_luks1_convert.c:765 msgid "Cannot convert to LUKS1 format - default segment encryption sector size is not 512 bytes." msgstr "Nedá sa zmeniť formát na LUKS1 - predvolená veľkosť sektora šifrovania segmentov nie je 512 bajtov." -#: lib/luks2/luks2_luks1_convert.c:765 +#: lib/luks2/luks2_luks1_convert.c:773 msgid "Cannot convert to LUKS1 format - key slot digests are not LUKS1 compatible." msgstr "Nedá sa zmeniť formát na LUKS1 - otlačok (digest) miesta pre kľúč nie je kompatibilný s LUKS1." -#: lib/luks2/luks2_luks1_convert.c:779 +#: lib/luks2/luks2_luks1_convert.c:787 #, c-format msgid "Cannot convert to LUKS1 format - device uses wrapped key cipher %s." msgstr "Nedá sa zmeniť formát na LUKS1 - zariadenie používa šifru so zabaleným kľúčom %s." -#: lib/luks2/luks2_luks1_convert.c:784 +#: lib/luks2/luks2_luks1_convert.c:792 msgid "Cannot convert to LUKS1 format - device uses more segments." msgstr "Nedá sa zmeniť formát na LUKS1 - zariadenie používa viac segmentov." -#: lib/luks2/luks2_luks1_convert.c:792 +#: lib/luks2/luks2_luks1_convert.c:800 #, c-format msgid "Cannot convert to LUKS1 format - LUKS2 header contains %u token(s)." msgstr "Nedá sa zmeniť formát na LUKS1 - hlavička LUKS2 obsahuje %u token(y)." -#: lib/luks2/luks2_luks1_convert.c:798 +#: lib/luks2/luks2_luks1_convert.c:806 msgid "Cannot convert to LUKS1 format - there are no active keyslots." msgstr "Nedá sa zmeniť formát na LUKS1 - nie sú žiadne aktívne miesta s kľúčmi." -#: lib/luks2/luks2_luks1_convert.c:810 +#: lib/luks2/luks2_luks1_convert.c:818 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is in invalid state." msgstr "Nedá sa zmeniť formát na LUKS1 - miesto pre kľúč %u je v neplatnom stave." -#: lib/luks2/luks2_luks1_convert.c:815 +#: lib/luks2/luks2_luks1_convert.c:823 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is unbound." msgstr "Nedá sa zmeniť formát na LUKS1 - miesto pre kľúč %u je neviazané." -#: lib/luks2/luks2_luks1_convert.c:820 +#: lib/luks2/luks2_luks1_convert.c:828 #, c-format msgid "Cannot convert to LUKS1 format - slot %u (over maximum slots) is still active." msgstr "Nedá sa zmeniť formát na LUKS1 - miesto %u (nad max. množstvom miest) je stále aktívne." -#: lib/luks2/luks2_luks1_convert.c:825 +#: lib/luks2/luks2_luks1_convert.c:833 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is not LUKS1 compatible." msgstr "Nedá sa zmeniť formát na LUKS1 - miesto pre kľúč %u nie je kompatibilné s LUKS1." @@ -2149,7 +2150,7 @@ msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encry msgstr "Parametre šifrovania miesta pre kľúč nie sú kompatibilné so šifrovaním miesta pre kľúč LUKS2." #: src/cryptsetup.c:150 src/cryptsetup.c:1180 src/cryptsetup.c:1545 -#: src/utils_reencrypt.c:1890 src/utils_reencrypt_luks1.c:502 +#: src/utils_reencrypt.c:1916 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." msgstr "Nebol nájdený žiaden známy vzor špecifikácie šifry." @@ -2177,7 +2178,7 @@ msgid "WARNING: The --keyfile-size option is being ignored, the read size is the msgstr "VAROVANIE: Možnosť --keyfile-size je ignorovaná, veľkosť čítania je rovnaká ako veľkosť kľúča šifrovania.\n" #: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 -#: src/integritysetup.c:189 src/utils_reencrypt.c:2141 +#: src/integritysetup.c:189 src/utils_reencrypt.c:2167 #, c-format msgid "Blkid scan failed for %s." msgstr "Skenovanie blkid zlyhalo pre %s." @@ -2257,7 +2258,7 @@ msgstr "Zariadenie %s nie je platné FVAULT2 zariadenie." msgid "Cannot determine volume key size for FVAULT2, please use --key-size option." msgstr "Nedá sa určiť veľkosť kľúča zväzku pre FVAULT2, prosím použite možnosť --key-size." -#: src/cryptsetup.c:849 src/veritysetup.c:317 src/integritysetup.c:422 +#: src/cryptsetup.c:849 src/veritysetup.c:317 src/integritysetup.c:424 #, c-format msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "Zariadenie %s je stále aktívne a naplánované pre odložené odstránenie.\n" @@ -2446,7 +2447,7 @@ msgid "LUKS file container %s is too small for activation, there is no remaining msgstr "Kontajnerový súbor LUKS %s je príliš malý na aktiváciu, nie je tam žiadne zvyšné miesto pre údaje." #: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:278 -#: src/utils_reencrypt.c:371 src/utils_reencrypt.c:1910 +#: src/utils_reencrypt.c:371 src/utils_reencrypt.c:1936 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "Nedá sa zistiť veľkosť kľúču zväzku pre LUKS bez miest pre kľúče, prosím použite voľbu --key-size." @@ -2741,7 +2742,7 @@ msgstr "Možnosť --volume-key-keyring nemôže byť kombinovaná s --hash alebo msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "Obe možnosti --volume-key-file musia byť zadané spolu s príslušnými možnosťami --key-size." -#: src/cryptsetup.c:3373 src/veritysetup.c:673 src/integritysetup.c:793 +#: src/cryptsetup.c:3373 src/veritysetup.c:673 src/integritysetup.c:800 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "Možnosti --cancal-deferred a --deferred nemôžu byť použité naraz." @@ -2809,21 +2810,21 @@ msgstr "Akcia vyžaduje špecifický token. Použite --key-slot parameter." msgid " [--type ] []" msgstr " [--type ] []" -#: src/cryptsetup.c:3482 src/veritysetup.c:487 src/integritysetup.c:560 +#: src/cryptsetup.c:3482 src/veritysetup.c:487 src/integritysetup.c:563 msgid "open device as " msgstr "otvorí zariadenie ako " #: src/cryptsetup.c:3483 src/cryptsetup.c:3484 src/cryptsetup.c:3485 -#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:561 -#: src/integritysetup.c:562 src/integritysetup.c:564 +#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:564 +#: src/integritysetup.c:565 src/integritysetup.c:567 msgid "" msgstr "" -#: src/cryptsetup.c:3483 src/veritysetup.c:488 src/integritysetup.c:561 +#: src/cryptsetup.c:3483 src/veritysetup.c:488 src/integritysetup.c:564 msgid "close device (remove mapping)" msgstr "zatvorí zariadenie (odstráni mapovanie)" -#: src/cryptsetup.c:3484 src/integritysetup.c:564 +#: src/cryptsetup.c:3484 src/integritysetup.c:567 msgid "resize active device" msgstr "zmení veľkosť aktívneho zariadenia" @@ -2951,7 +2952,7 @@ msgstr " " msgid "Manipulate LUKS2 tokens" msgstr "Manipuluje s tokenmi LUKS2" -#: src/cryptsetup.c:3527 src/veritysetup.c:505 src/integritysetup.c:579 +#: src/cryptsetup.c:3527 src/veritysetup.c:505 src/integritysetup.c:582 msgid "" "\n" " is one of:\n" @@ -3052,7 +3053,7 @@ msgstr "" msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: Predvolená veľkosť kľúča s režimom XTS (dva interné kľúče) bude zdvojnásobená.\n" -#: src/cryptsetup.c:3594 src/veritysetup.c:647 src/integritysetup.c:739 +#: src/cryptsetup.c:3594 src/veritysetup.c:647 src/integritysetup.c:742 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: požaduje %s ako argumenty" @@ -3103,31 +3104,31 @@ msgstr "Možnosť --priority môže byť len ignore/normal/prefer." msgid "Invalid maximal tries specification." msgstr "Zadaný neplatný maximálny počet pokusov." -#: src/cryptsetup.c:3793 src/veritysetup.c:568 src/integritysetup.c:659 +#: src/cryptsetup.c:3793 src/veritysetup.c:568 src/integritysetup.c:662 msgid "Show this help message" msgstr "Zobrazí túto pomocnú správu" -#: src/cryptsetup.c:3794 src/veritysetup.c:569 src/integritysetup.c:660 +#: src/cryptsetup.c:3794 src/veritysetup.c:569 src/integritysetup.c:663 msgid "Display brief usage" msgstr "Zobrazí stručný návod na použitie" -#: src/cryptsetup.c:3795 src/veritysetup.c:570 src/integritysetup.c:661 +#: src/cryptsetup.c:3795 src/veritysetup.c:570 src/integritysetup.c:664 msgid "Print package version" msgstr "Vypíše verziu balíka" -#: src/cryptsetup.c:3806 src/veritysetup.c:581 src/integritysetup.c:672 +#: src/cryptsetup.c:3806 src/veritysetup.c:581 src/integritysetup.c:675 msgid "Help options:" msgstr "Možnosti pomoci:" -#: src/cryptsetup.c:3829 src/veritysetup.c:602 src/integritysetup.c:692 +#: src/cryptsetup.c:3829 src/veritysetup.c:602 src/integritysetup.c:695 msgid "[OPTION...] " msgstr "[MOŽNOSŤ...] <špecifikácia akcie>" -#: src/cryptsetup.c:3838 src/veritysetup.c:611 src/integritysetup.c:703 +#: src/cryptsetup.c:3838 src/veritysetup.c:611 src/integritysetup.c:706 msgid "Argument missing." msgstr "Chýba argument ." -#: src/cryptsetup.c:3917 src/veritysetup.c:642 src/integritysetup.c:734 +#: src/cryptsetup.c:3917 src/veritysetup.c:642 src/integritysetup.c:737 msgid "Unknown action." msgstr "Neznáma akcia." @@ -3232,7 +3233,7 @@ msgstr "Príkaz vyžaduje alebo možnosť --root-hash-file ako msgid " " msgstr " " -#: src/veritysetup.c:485 src/integritysetup.c:559 +#: src/veritysetup.c:485 src/integritysetup.c:562 msgid "format device" msgstr "formátuje zariadenie" @@ -3248,7 +3249,7 @@ msgstr "overí zariadenie" msgid " []" msgstr " []" -#: src/veritysetup.c:489 src/integritysetup.c:562 +#: src/veritysetup.c:489 src/integritysetup.c:565 msgid "show active device status" msgstr "zobrazí stav aktívneho zariadenia" @@ -3256,7 +3257,7 @@ msgstr "zobrazí stav aktívneho zariadenia" msgid "" msgstr "" -#: src/veritysetup.c:490 src/integritysetup.c:563 +#: src/veritysetup.c:490 src/integritysetup.c:566 msgid "show on-disk information" msgstr "zobrazí informácie na disku" @@ -3320,20 +3321,20 @@ msgstr " (hardvérové inline príznaky)" msgid "Setting recalculate flag is not supported, you may consider using --wipe instead." msgstr "Nastavenie príznaku prepočítania nie je podporované, môžete zvážiť použitie --wipe namiesto toho." -#: src/integritysetup.c:382 src/integritysetup.c:546 +#: src/integritysetup.c:382 src/integritysetup.c:549 #, c-format msgid "Device %s is not a valid INTEGRITY device." msgstr "Zariadenie %s nie je platné INTEGRITY zariadenie." -#: src/integritysetup.c:559 src/integritysetup.c:563 +#: src/integritysetup.c:562 src/integritysetup.c:566 msgid "" msgstr "" -#: src/integritysetup.c:560 +#: src/integritysetup.c:563 msgid " " msgstr " " -#: src/integritysetup.c:583 +#: src/integritysetup.c:586 #, c-format msgid "" "\n" @@ -3344,7 +3345,7 @@ msgstr "" " je zariadenie na vytvorenie pod %s\n" " je zariadenie obsahujúce údaje s príznakmi integrity\n" -#: src/integritysetup.c:588 +#: src/integritysetup.c:591 #, c-format msgid "" "\n" @@ -3357,51 +3358,55 @@ msgstr "" "\tAlgoritmus kontrolného súčtu: %s\n" "\tMaximálna veľkosť súboru s kľúčom: %d kB\n" -#: src/integritysetup.c:645 +#: src/integritysetup.c:648 #, c-format msgid "Invalid --%s size. Maximum is %u bytes." msgstr "Neplatná veľkosť --%s. Maximum je %u bajtov." -#: src/integritysetup.c:748 +#: src/integritysetup.c:751 msgid "Both key file and key size options must be specified." msgstr "Obe možnosti musia byť zadané, súbor s kľúčom aj veľkosť kľúča." -#: src/integritysetup.c:752 +#: src/integritysetup.c:755 msgid "Both journal integrity key file and key size options must be specified." msgstr "Obe možnosti musia byť zadané, súbor s kľúčom pre integritu denníka aj veľkosť kľúča." -#: src/integritysetup.c:755 +#: src/integritysetup.c:758 msgid "Journal integrity algorithm must be specified if journal integrity key is used." msgstr "Algoritmus integrity denníka musí byť zadaný, keď sa používa kľúč pre integritu denníka." -#: src/integritysetup.c:759 +#: src/integritysetup.c:762 msgid "Both journal encryption key file and key size options must be specified." msgstr "Obe možnosti musia byť zadané, súbor s kľúčom na šifrovanie denníka aj veľkosť kľúča." -#: src/integritysetup.c:762 +#: src/integritysetup.c:765 msgid "Journal encryption algorithm must be specified if journal encryption key is used." msgstr "Algoritmus šifrovania denníka musí byť zadaný, keď sa používa kľúč na šifrovanie denníka." -#: src/integritysetup.c:766 +#: src/integritysetup.c:769 msgid "Recovery and bitmap mode options are mutually exclusive." msgstr "Možnosti režimu obnovenia a bitmapy sa vzájomne vylučujú." -#: src/integritysetup.c:773 +#: src/integritysetup.c:776 msgid "Journal options cannot be used in bitmap mode." msgstr "Možnosti denníka nemôžu byť použité v bitmapovom režime." -#: src/integritysetup.c:778 +#: src/integritysetup.c:781 msgid "Bitmap options can be used only in bitmap mode." msgstr "Možnosti bitmapy môžu byť použité len v bitmapovom režime." -#: src/integritysetup.c:784 +#: src/integritysetup.c:787 msgid "Inline mode cannot be combined with journal or bitmap options." msgstr "Režim inline nemôže byť kombinovaný s možnosťami režimu denníka alebo bitmapy." -#: src/integritysetup.c:788 +#: src/integritysetup.c:791 msgid "Inline mode cannot be combined with separate data device." msgstr "Režim inline nemôže byť kombinovaný s oddeleným zariadením s údajmi." +#: src/integritysetup.c:795 +msgid "Keyed discards can be enabled only with keyed algorithms like HMAC." +msgstr "Zahadzovanie/TRIM s kľúčmi môže byť aktivované len v prípade algoritmov s kľúčom integrity, ako napr. HMAC." + #: src/utils_tools.c:105 msgid "" "\n" @@ -3752,7 +3757,7 @@ msgstr "Zariadenie nie je v stave dešifrovania LUKS2. Konfliktná možnosť --d msgid "Device is in reencryption using datashift resilience. Requested --resilience option cannot be applied." msgstr "Zariadenie je v stave prešifrovania s odolnosťou posunu dát. Požadovaná možnosť --resilience nemôže byť aplikovaná." -#: src/utils_reencrypt.c:283 src/utils_reencrypt.c:1927 +#: src/utils_reencrypt.c:283 src/utils_reencrypt.c:1953 msgid "Cannot determine volume key size for LUKS without keyslots, please use --new-key-size option." msgstr "Nedá sa zistiť veľkosť kľúču zväzku pre LUKS bez miest pre kľúče, prosím použite možnosť --new-key-size." @@ -3786,7 +3791,7 @@ msgstr "" "Požadovaná --sector-size % nie je kompatibilná so superblokom %s\n" "(veľkosť bloku: % bajtov) rozpoznaným na zariadení %s." -#: src/utils_reencrypt.c:680 src/utils_reencrypt.c:2207 +#: src/utils_reencrypt.c:680 src/utils_reencrypt.c:2233 msgid "Encryption without detached header (--header) is not possible without data device size reduction (--reduce-device-size)." msgstr "Šifrovanie bez oddelenej hlavičky (--header) nie je možné bez zmenšenia veľkosti zariadenia s údajmi (--reduce-device-size)." @@ -3854,42 +3859,43 @@ msgstr "Inicializácia prešifrovania zlyhala. Záložná hlavička je dostupná msgid "LUKS2 decryption is supported with detached header device only (with data offset set to 0)." msgstr "Dešifrovanie LUKS2 je podporované iba s oddelenou hlavičkou (s odsadením údajov nastaveným na 0)." -#: src/utils_reencrypt.c:1490 -msgid "No token could unlock the device." -msgstr "Žiaden token nemôže odomknúť zariadenie." - -#: src/utils_reencrypt.c:1522 src/utils_reencrypt.c:1531 +#: src/utils_reencrypt.c:1506 src/utils_reencrypt.c:1531 +#: src/utils_reencrypt.c:1548 src/utils_reencrypt.c:1557 msgid "Not enough free keyslots for reencryption." msgstr "Nie je dostatok voľných miest pre kľúč na prešifrovanie." -#: src/utils_reencrypt.c:1562 +#: src/utils_reencrypt.c:1513 +msgid "No token could unlock the device." +msgstr "Žiaden token nemôže odomknúť zariadenie." + +#: src/utils_reencrypt.c:1588 msgid "Key file or keyring key description can be used only with --key-slot or with exactly one key slot active." msgstr "Súbor s kľúčom alebo kľúč zo zväzku kľúčov môže byť použitý iba s --key-slot alebo s práve jedným aktívnym miestom pre kľúč." -#: src/utils_reencrypt.c:1569 src/utils_reencrypt.c:1582 +#: src/utils_reencrypt.c:1595 src/utils_reencrypt.c:1608 #: src/utils_reencrypt_luks1.c:1092 src/utils_reencrypt_luks1.c:1103 #, c-format msgid "Enter passphrase for key slot %d: " msgstr "Zadajte heslo miesta pre kľúč %d: " -#: src/utils_reencrypt.c:1879 +#: src/utils_reencrypt.c:1905 #, c-format msgid "Switching data encryption cipher to %s.\n" msgstr "Mení sa algoritmus šifrovanie údajov na %s.\n" -#: src/utils_reencrypt.c:1980 src/utils_reencrypt.c:2001 +#: src/utils_reencrypt.c:2006 src/utils_reencrypt.c:2027 msgid "Use --force-no-keyslots to reencrypt device with active keyslots by passing volume keys directly." msgstr "Použite --force-no-keyslots na prešifrovanie zariadenia s aktívnymi miestami pre kľúč priamo odovzdaním kľúčov zväzku." -#: src/utils_reencrypt.c:1996 +#: src/utils_reencrypt.c:2022 msgid "Option --new-volume-key-file must be paired with --new-key-size" msgstr "Možnosť --new-volume-key-file musí byť použitá spolu s --new-key-size" -#: src/utils_reencrypt.c:2038 +#: src/utils_reencrypt.c:2064 msgid "No data segment parameters changed. Reencryption aborted." msgstr "Žiaden parameter údajových segmentov nezmenený. Prešifrovanie sa ruší." -#: src/utils_reencrypt.c:2075 +#: src/utils_reencrypt.c:2101 msgid "" "Encryption sector size increase on offline device is not supported.\n" "Activate the device first or use --force-offline-reencrypt option (dangerous!)." @@ -3897,7 +3903,7 @@ msgstr "" "Zväčšenie veľkosti šifrovaného sektora na offline zariadení nie je podporované.\n" "Aktivujte najprv zariadenie alebo použite možnosť --force-offline-reencrypt (nebezpečné!)." -#: src/utils_reencrypt.c:2117 src/utils_reencrypt_luks1.c:688 +#: src/utils_reencrypt.c:2143 src/utils_reencrypt_luks1.c:688 #: src/utils_reencrypt_luks1.c:759 msgid "" "\n" @@ -3906,58 +3912,58 @@ msgstr "" "\n" "Prešifrovanie prerušené." -#: src/utils_reencrypt.c:2122 +#: src/utils_reencrypt.c:2148 msgid "Resuming LUKS reencryption in forced offline mode.\n" msgstr "Obnovovanie LUKS prešifrovania vo vynútenom režime offline.\n" -#: src/utils_reencrypt.c:2145 +#: src/utils_reencrypt.c:2171 #, c-format msgid "Device %s contains broken LUKS metadata. Aborting operation." msgstr "Zariadenie %s obsahuje chybné LUKS metadáta. Operácia sa ruší." -#: src/utils_reencrypt.c:2161 src/utils_reencrypt.c:2183 +#: src/utils_reencrypt.c:2187 src/utils_reencrypt.c:2209 #, c-format msgid "Device %s is already LUKS device. Aborting operation." msgstr "Zariadenie %s už je LUKS zariadenie. Operácia sa ruší." -#: src/utils_reencrypt.c:2189 +#: src/utils_reencrypt.c:2215 #, c-format msgid "Device %s is already in LUKS reencryption. Aborting operation." msgstr "Zariadenie %s je už v stave prešifrovania LUKS. Operácia sa ruší." -#: src/utils_reencrypt.c:2272 +#: src/utils_reencrypt.c:2298 msgid "LUKS2 decryption requires --header option." msgstr "LUKS2 dešifrovanie požaduje možnosť --header." -#: src/utils_reencrypt.c:2320 +#: src/utils_reencrypt.c:2346 msgid "Command requires device as argument." msgstr "Príkaz vyžaduje zariadenie ako argument." -#: src/utils_reencrypt.c:2333 +#: src/utils_reencrypt.c:2359 #, c-format msgid "Conflicting versions. Device %s is LUKS1." msgstr "Konfliktné verzie. Zariadenie %s je LUKS1." -#: src/utils_reencrypt.c:2339 +#: src/utils_reencrypt.c:2365 #, c-format msgid "Conflicting versions. Device %s is in LUKS1 reencryption." msgstr "Konfliktné verzie. Zariadenie %s je v stave prešifrovania LUKS1." -#: src/utils_reencrypt.c:2345 +#: src/utils_reencrypt.c:2371 #, c-format msgid "Conflicting versions. Device %s is LUKS2." msgstr "Konfliktné verzie. Zariadenie %s je LUKS2." -#: src/utils_reencrypt.c:2351 +#: src/utils_reencrypt.c:2377 #, c-format msgid "Conflicting versions. Device %s is in LUKS2 reencryption." msgstr "Konfliktné verzie. Zariadenie %s je v stave prešifrovania LUKS2." -#: src/utils_reencrypt.c:2357 +#: src/utils_reencrypt.c:2383 msgid "LUKS2 reencryption already initialized. Aborting operation." msgstr "LUKS2 prešifrovanie je už inicializované. Operácia sa ruší." -#: src/utils_reencrypt.c:2364 +#: src/utils_reencrypt.c:2390 msgid "Device reencryption not in progress." msgstr "Opätovné šifrovanie zariadenia neprebieha." From 92d8a532de99b4b7ef5552c872f664a7a20801f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=80=D0=BE=D1=81=D0=BB=D0=B0=D0=B2=20=D0=9D?= =?UTF-8?q?=D0=B8=D0=BA=D0=BE=D0=BB=D0=B8=D1=9B?= Date: Fri, 4 Sep 2026 18:57:03 +0200 Subject: [PATCH 213/244] po: update sr.po (from translationproject.org) --- po/sr.po | 1309 +++++++++++++++++++++++++++--------------------------- 1 file changed, 658 insertions(+), 651 deletions(-) diff --git a/po/sr.po b/po/sr.po index db01161a0..46c218276 100644 --- a/po/sr.po +++ b/po/sr.po @@ -1,13 +1,14 @@ # Serbian translation for cryptsetup. # Copyright © 2014 Free Software Foundation, Inc. # This file is distributed under the same license as the cryptsetup package. -# Мирослав Николић , 2014–2026. +# Мирослав Николић , 2014-2026. +# msgid "" msgstr "" -"Project-Id-Version: cryptsetup-2.8.5-rc0\n" +"Project-Id-Version: cryptsetup-2.8.8-rc0\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2026-03-30 14:18+0200\n" -"PO-Revision-Date: 2026-04-04 12:24+0200\n" +"POT-Creation-Date: 2026-09-02 13:18+0200\n" +"PO-Revision-Date: 2026-09-04 17:33+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" @@ -15,81 +16,80 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Virtaal 0.7.1\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -#: lib/libdevmapper.c:419 +#: lib/libdevmapper.c:422 msgid "Cannot initialize device-mapper, running as non-root user." msgstr "Не могу да покренем мапер уређаја, радим као обичан корисник." -#: lib/libdevmapper.c:422 +#: lib/libdevmapper.c:425 msgid "Cannot initialize device-mapper. Is dm_mod kernel module loaded?" msgstr "Не могу да покренем мапер уређаја. Да ли је модул кернела „dm_mod“ учитан?" -#: lib/libdevmapper.c:1125 +#: lib/libdevmapper.c:1129 msgid "Requested deferred flag is not supported." msgstr "Затражена одложена заставица није подржана." -#: lib/libdevmapper.c:1194 +#: lib/libdevmapper.c:1198 #, c-format msgid "DM-UUID for device %s was truncated." msgstr "ДМ-УЈИБ за уређај „%s“ је скраћен." -#: lib/libdevmapper.c:1598 +#: lib/libdevmapper.c:1602 msgid "Unknown dm target type." msgstr "Непозната врста „dm“ мете." -#: lib/libdevmapper.c:1725 lib/libdevmapper.c:1731 lib/libdevmapper.c:1850 -#: lib/libdevmapper.c:1853 +#: lib/libdevmapper.c:1729 lib/libdevmapper.c:1735 lib/libdevmapper.c:1854 +#: lib/libdevmapper.c:1857 msgid "Requested dm-crypt performance options are not supported." msgstr "Затражене опције перформанси дм-шифровања нису подржане." -#: lib/libdevmapper.c:1740 lib/libdevmapper.c:1746 lib/libdevmapper.c:1758 +#: lib/libdevmapper.c:1744 lib/libdevmapper.c:1750 lib/libdevmapper.c:1762 msgid "Requested dm-verity data corruption handling options are not supported." msgstr "Затражене опције рада оштећених података дм-веритија нису подржане." -#: lib/libdevmapper.c:1752 +#: lib/libdevmapper.c:1756 msgid "Requested dm-verity tasklets option is not supported." msgstr "Затражене „dm-verity“ опција без задатка није подржана." -#: lib/libdevmapper.c:1764 +#: lib/libdevmapper.c:1768 msgid "Requested dm-verity FEC options are not supported." msgstr "Затражене „dm-verity FEC“ опције нису подржане." -#: lib/libdevmapper.c:1770 +#: lib/libdevmapper.c:1774 msgid "Requested data integrity options are not supported." msgstr "Затражене опције целовитости података нису подржане." -#: lib/libdevmapper.c:1774 +#: lib/libdevmapper.c:1778 msgid "Requested sector_size option is not supported." msgstr "Затражене опције величине одељка нису подржане." -#: lib/libdevmapper.c:1779 +#: lib/libdevmapper.c:1783 msgid "The device size is not multiple of the requested sector size." msgstr "Величина уређаја није умножитељ затражене величине одељка." -#: lib/libdevmapper.c:1783 +#: lib/libdevmapper.c:1787 msgid "Requested integrity_key_size option is not supported." msgstr "Затражена опција „integrity_key_size“ није подржана." -#: lib/libdevmapper.c:1790 lib/libdevmapper.c:1796 +#: lib/libdevmapper.c:1794 lib/libdevmapper.c:1800 msgid "Requested automatic recalculation of integrity tags is not supported." msgstr "Затражене опције самосталног прерачунавања ознака целовитости нису подржане." -#: lib/libdevmapper.c:1802 lib/libdevmapper.c:1856 lib/libdevmapper.c:1859 -#: lib/luks2/luks2_json_metadata.c:2781 +#: lib/libdevmapper.c:1806 lib/libdevmapper.c:1860 lib/libdevmapper.c:1863 +#: lib/luks2/luks2_json_metadata.c:2791 msgid "Discard/TRIM is not supported." msgstr "Одбацивање/ОДСЕЦАЊЕ није подржано." -#: lib/libdevmapper.c:1808 +#: lib/libdevmapper.c:1812 msgid "Requested dm-integrity bitmap mode is not supported." msgstr "Затражени режим битмапе „dm-integrity“ није подржан." -#: lib/libdevmapper.c:1814 +#: lib/libdevmapper.c:1818 msgid "Requested dm-integrity inline mode is not supported." msgstr "Затражени режим унутарње „dm-integrity“ није подржан." -#: lib/libdevmapper.c:2870 +#: lib/libdevmapper.c:2877 #, c-format msgid "Failed to query dm-%s segment." msgstr "Нисам успео да пропитам „dm-%s“ подеок." @@ -123,672 +123,672 @@ msgstr "Затражен је непознат квалитет „RNG“-а." msgid "Error reading from RNG." msgstr "Грешка читања из „RNG“-а." -#: lib/setup.c:248 +#: lib/setup.c:251 msgid "OPAL support is disabled in libcryptsetup." msgstr "OPAL подршка је искључена у „libcryptsetup“." -#: lib/setup.c:250 +#: lib/setup.c:253 #, c-format msgid "Device %s or kernel does not support OPAL encryption." msgstr "Уређај „%s“ или кернел не подржавају OPAL шифровање." -#: lib/setup.c:266 +#: lib/setup.c:269 msgid "Cannot initialize crypto RNG backend." msgstr "Не могу да покренем „RNG“ позадинца криптографије." -#: lib/setup.c:272 +#: lib/setup.c:275 msgid "Cannot initialize crypto backend." msgstr "Не могу да покренем позадинца криптографије." -#: lib/setup.c:305 lib/setup.c:2766 lib/verity/verity.c:109 +#: lib/setup.c:308 lib/setup.c:2779 lib/verity/verity.c:109 #, c-format msgid "Hash algorithm %s not supported." msgstr "Хеш алгоритам „%s“ није подржан." -#: lib/setup.c:308 lib/loopaes/loopaes.c:78 +#: lib/setup.c:311 lib/loopaes/loopaes.c:78 #, c-format msgid "Key processing error (using hash %s)." msgstr "Грешка обраде кључа (користим хеш %s)." -#: lib/setup.c:389 lib/setup.c:426 +#: lib/setup.c:392 lib/setup.c:429 msgid "Cannot determine device type. Incompatible activation of device?" msgstr "Не могу да одредим врсту уређаја. Несагласно покретање уређаја?" -#: lib/setup.c:395 lib/setup.c:4160 +#: lib/setup.c:398 lib/setup.c:4193 msgid "This operation is supported only for LUKS device." msgstr "Ова радња је подржана само за ЛУКС уређај." -#: lib/setup.c:432 +#: lib/setup.c:435 msgid "This operation is supported only for LUKS2 device." msgstr "Ова радња је подржана само за ЛУКС2 уређај." -#: lib/setup.c:489 lib/luks2/luks2_reencrypt.c:3101 +#: lib/setup.c:492 lib/luks2/luks2_reencrypt.c:3102 msgid "All key slots full." msgstr "Сви утори кључева су пуни." -#: lib/setup.c:500 +#: lib/setup.c:503 #, c-format msgid "Key slot %d is invalid, please select between 0 and %d." msgstr "Утор кључа %d није исправан, изаберите између 0 и %d." -#: lib/setup.c:506 +#: lib/setup.c:509 #, c-format msgid "Key slot %d is full, please select another one." msgstr "Утор кључа %d је пун, изаберите неки други." -#: lib/setup.c:531 lib/setup.c:3875 +#: lib/setup.c:534 lib/setup.c:3888 msgid "Device size is not aligned to device logical block size." msgstr "Величина уређаја није поравната на величину логичког блока уређаја." -#: lib/setup.c:628 +#: lib/setup.c:631 #, c-format msgid "Header detected but device %s is too small." msgstr "Заглавље је откривено али уређај „%s“ је премали." -#: lib/setup.c:669 lib/setup.c:3760 lib/setup.c:5238 -#: lib/luks2/luks2_reencrypt.c:3948 lib/luks2/luks2_reencrypt.c:4437 +#: lib/setup.c:672 lib/setup.c:3773 lib/setup.c:5288 +#: lib/luks2/luks2_reencrypt.c:3949 lib/luks2/luks2_reencrypt.c:4438 msgid "This operation is not supported for this device type." msgstr "Ова радња није подржана за ову врсту уређаја." -#: lib/setup.c:674 +#: lib/setup.c:677 msgid "Illegal operation with reencryption in-progress." msgstr "Неисправна радња са поновним шифровањем је у току." -#: lib/setup.c:806 +#: lib/setup.c:809 msgid "Failed to rollback LUKS2 metadata in memory." msgstr "Нисам успео да повратим ЛУКС2 метаподатке у меморију." -#: lib/setup.c:893 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 +#: lib/setup.c:896 lib/luks1/keymanage.c:241 lib/luks1/keymanage.c:519 #: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 #: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 -#: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2953 -#: src/cryptsetup.c:3021 src/utils_reencrypt.c:2281 +#: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2954 +#: src/cryptsetup.c:3022 src/utils_reencrypt.c:2310 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." msgstr "Уређај „%s“ није исправан ЛУКС уређај." -#: lib/setup.c:896 lib/luks1/keymanage.c:517 +#: lib/setup.c:899 lib/luks1/keymanage.c:522 #, c-format msgid "Unsupported LUKS version %d." msgstr "Неподржано ЛУКС издање %d." -#: lib/setup.c:1270 +#: lib/setup.c:1279 #, c-format msgid "No known cipher specification pattern detected for active device %s." msgstr "Није откривен познат образац одреднице шифрера за активан уређај „%s“." -#: lib/setup.c:1515 lib/setup.c:3507 lib/setup.c:3599 lib/setup.c:3611 -#: lib/setup.c:3783 lib/setup.c:5816 +#: lib/setup.c:1528 lib/setup.c:3520 lib/setup.c:3612 lib/setup.c:3624 +#: lib/setup.c:3796 lib/setup.c:5866 #, c-format msgid "Device %s is not active." msgstr "Уређај „%s“ није радан." -#: lib/setup.c:1532 +#: lib/setup.c:1545 #, c-format msgid "Underlying device for crypt device %s disappeared." msgstr "Основни уређај за криптографски уређај „%s“ је нестао." -#: lib/setup.c:1614 +#: lib/setup.c:1627 msgid "Invalid plain crypt parameters." msgstr "Неисправни параметри обичне криптографије." -#: lib/setup.c:1619 lib/setup.c:2669 +#: lib/setup.c:1632 lib/setup.c:2682 msgid "Invalid key size." msgstr "Неисправна величина кључа." -#: lib/setup.c:1624 lib/setup.c:2674 lib/setup.c:2879 +#: lib/setup.c:1637 lib/setup.c:2687 lib/setup.c:2892 msgid "UUID is not supported for this crypt type." msgstr "УЈИБ није подржан за ову врсту криптографије." -#: lib/setup.c:1629 lib/setup.c:2679 +#: lib/setup.c:1642 lib/setup.c:2692 msgid "Detached metadata device is not supported for this crypt type." msgstr "Откачени уређај метаподатака није подржан за ову врсту криптографије." -#: lib/setup.c:1639 lib/setup.c:1887 lib/luks2/luks2_reencrypt.c:3034 -#: src/cryptsetup.c:1492 src/cryptsetup.c:3760 +#: lib/setup.c:1652 lib/setup.c:1900 lib/luks2/luks2_reencrypt.c:3035 +#: src/cryptsetup.c:1492 src/cryptsetup.c:3761 msgid "Unsupported encryption sector size." msgstr "Неподржана величина одељка шифровања." -#: lib/setup.c:1647 lib/setup.c:1916 lib/setup.c:3869 +#: lib/setup.c:1660 lib/setup.c:1929 lib/setup.c:3882 msgid "Device size is not aligned to requested sector size." msgstr "Величина уређаја није поравната на затражену величину одељка." -#: lib/setup.c:1699 lib/setup.c:1951 lib/setup.c:2328 +#: lib/setup.c:1712 lib/setup.c:1964 lib/setup.c:2341 msgid "Can't format LUKS without device." msgstr "Не могу да обликујем ЛУКС без уређаја." -#: lib/setup.c:1704 lib/setup.c:1956 +#: lib/setup.c:1717 lib/setup.c:1969 #, c-format msgid "Zoned device %s cannot be used for LUKS header." msgstr "Зониран уређај „%s“ се не може користити за LUKS заглавље." -#: lib/setup.c:1711 lib/setup.c:1963 lib/setup.c:2334 +#: lib/setup.c:1724 lib/setup.c:1976 lib/setup.c:2347 msgid "Requested data alignment is not compatible with data offset." msgstr "Затражено поравнање података није сагласно са померајем података." -#: lib/setup.c:1751 lib/setup.c:1981 +#: lib/setup.c:1764 lib/setup.c:1994 msgid "WARNING: DAX device can corrupt data as it does not guarantee atomic sector updates.\n" msgstr "УПОЗОРЕЊЕ: DAX уређај може да оштети податке јер не гарантује атомска ажурирања сектора.\n" -#: lib/setup.c:1789 lib/setup.c:2088 lib/setup.c:2109 lib/setup.c:2517 -#: lib/setup.c:2564 lib/setup.c:2896 +#: lib/setup.c:1802 lib/setup.c:2101 lib/setup.c:2122 lib/setup.c:2530 +#: lib/setup.c:2577 lib/setup.c:2909 #, c-format msgid "Cannot wipe header on device %s." msgstr "Не могу да обришем заглавље на уређају „%s“." -#: lib/setup.c:1802 lib/setup.c:2161 +#: lib/setup.c:1815 lib/setup.c:2174 #, c-format msgid "Device %s is too small for activation, there is no remaining space for data.\n" msgstr "Уређај „%s“ је премали за активирање, није преостао простор за податке.\n" -#: lib/setup.c:1843 +#: lib/setup.c:1856 msgid "Volume key is too small for encryption with integrity extensions." msgstr "Кључ волумена је премали за шифровање са проширењима целовитости." -#: lib/setup.c:1847 +#: lib/setup.c:1860 msgid "Integrity key size is too small." msgstr "Величина кључа целовитости је премала." -#: lib/setup.c:1856 +#: lib/setup.c:1869 #, c-format msgid "Cipher %s-%s (key size %zd bits) is not available." msgstr "Шифрер %s-%s (величина кључа %zd бита) није доступан." -#: lib/setup.c:1897 +#: lib/setup.c:1910 msgid "WARNING: The device activation will fail, dm-crypt is missing support for requested encryption sector size.\n" msgstr "УПОЗОРЕЊЕ: Покретање уређаја неће успети, „dm-crypt“-у недостаје подршка за затражену величину одељка шифровања.\n" -#: lib/setup.c:2091 lib/setup.c:2458 lib/setup.c:2520 lib/utils_device.c:906 -#: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3073 -#: lib/luks2/luks2_reencrypt.c:4497 +#: lib/setup.c:2104 lib/setup.c:2471 lib/setup.c:2533 lib/utils_device.c:906 +#: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3074 +#: lib/luks2/luks2_reencrypt.c:4498 #, c-format msgid "Device %s is too small." msgstr "Уређај „%s“ је премали." -#: lib/setup.c:2102 lib/setup.c:2141 lib/setup.c:2557 lib/setup.c:2615 +#: lib/setup.c:2115 lib/setup.c:2154 lib/setup.c:2570 lib/setup.c:2628 #, c-format msgid "Cannot format device %s in use." msgstr "Не могу да обликујем уређај „%s“ у употреби." -#: lib/setup.c:2105 lib/setup.c:2144 lib/setup.c:2560 lib/setup.c:2618 +#: lib/setup.c:2118 lib/setup.c:2157 lib/setup.c:2573 lib/setup.c:2631 #, c-format msgid "Cannot format device %s, permission denied." msgstr "Не могу да обликујем уређај „%s“, овлашћење је одбијено." -#: lib/setup.c:2129 lib/setup.c:2587 lib/setup.c:2969 +#: lib/setup.c:2142 lib/setup.c:2600 lib/setup.c:2982 #, c-format msgid "Cannot format integrity for device %s." msgstr "Не могу да обликујем целовитост за уређај „%s“." -#: lib/setup.c:2148 lib/setup.c:2626 +#: lib/setup.c:2161 lib/setup.c:2639 #, c-format msgid "Cannot format device %s." msgstr "Не могу да обликујем уређај „%s“." -#: lib/setup.c:2191 +#: lib/setup.c:2204 msgid "Cannot get OPAL alignment parameters." msgstr "Не могу да добавим параметре OPAL поравнања." -#: lib/setup.c:2203 +#: lib/setup.c:2216 msgid "Bogus OPAL logical block size." msgstr "Привидна величина OPAL логичког блока." -#: lib/setup.c:2208 lib/luks2/hw_opal/hw_opal.c:305 +#: lib/setup.c:2221 lib/luks2/hw_opal/hw_opal.c:305 msgid "Bogus OPAL logical block size differs from device block size." msgstr "Привидна величина OPAL логичког блока се разликује величине блока уређаја." -#: lib/setup.c:2214 +#: lib/setup.c:2227 msgid "Requested data offset is not compatible with OPAL block size." msgstr "Затражен померај података није сагласан са OPAL величином блока." -#: lib/setup.c:2221 +#: lib/setup.c:2234 msgid "Requested data alignment is not compatible with OPAL alignment." msgstr "Затражено поравнање података није сагласно са OPAL поравнањем." -#: lib/setup.c:2241 +#: lib/setup.c:2254 msgid "Data offset does not satisfy OPAL alignment requirements." msgstr "Померај података не задовољава захтеве OPAL поравнања." -#: lib/setup.c:2254 +#: lib/setup.c:2267 msgid "Requested data alignment does not satisfy locking range alignment requirements." msgstr "Затражено поравнање података не задовољава захтеве поравнања опсега закључавања." -#: lib/setup.c:2468 +#: lib/setup.c:2481 #, c-format msgid "Compensating device size by % sectors to align it with OPAL alignment granularity." msgstr "Ндокнађујем величину уређаја за % сектора да га поравнам са ситношћу OPAL поравнања." -#: lib/setup.c:2528 lib/setup.c:4243 lib/setup.c:4432 lib/utils_wipe.c:356 -#: lib/luks2/luks2_json_metadata.c:2724 lib/luks2/luks2_json_metadata.c:2992 +#: lib/setup.c:2541 lib/setup.c:4276 lib/setup.c:4482 lib/utils_wipe.c:356 +#: lib/luks2/luks2_json_metadata.c:2734 lib/luks2/luks2_json_metadata.c:3009 #, c-format msgid "Failed to acquire OPAL lock on device %s." msgstr "Нисам успео да остварим OPAL закључавање на уређају „%s“." -#: lib/setup.c:2538 +#: lib/setup.c:2551 msgid "Incorrect OPAL Admin key." msgstr "Нетачан кључ OPAL админа." -#: lib/setup.c:2540 +#: lib/setup.c:2553 msgid "Cannot setup OPAL segment." msgstr "Не могу да поставим OPAL подеок." -#: lib/setup.c:2622 +#: lib/setup.c:2635 #, c-format msgid "Cannot format device %s, OPAL device seems to be fully write-protected now." msgstr "Не могу да обликујем уређај „%s“, OPAL уређај изгледа да је сада потпуно заштићен од писања." -#: lib/setup.c:2624 +#: lib/setup.c:2637 msgid "This is perhaps a bug in firmware. Run OPAL PSID reset and reconnect for recovery." msgstr "Ово је можда грешка у фирмверу. Покрените OPAL PSID ресет и поново се повежите за опоравак." -#: lib/setup.c:2644 +#: lib/setup.c:2657 #, c-format msgid "Locking range %d reset on device %s failed." msgstr "Поновно постављање опсега закључавања %d на уређају „%s“ није успело." -#: lib/setup.c:2664 +#: lib/setup.c:2677 msgid "Can't format LOOPAES without device." msgstr "Не могу да обликујем „LOOPAES“ без уређаја." -#: lib/setup.c:2709 +#: lib/setup.c:2722 msgid "Can't format VERITY without device." msgstr "Не могу да обликујем „VERITY“ без уређаја." -#: lib/setup.c:2720 lib/verity/verity.c:88 +#: lib/setup.c:2733 lib/verity/verity.c:88 #, c-format msgid "Unsupported VERITY hash type %d." msgstr "Неподржана врста „VERITY“ хеша %d." -#: lib/setup.c:2726 lib/verity/verity.c:96 +#: lib/setup.c:2739 lib/verity/verity.c:96 msgid "Unsupported VERITY block size." msgstr "Неподржана величина блока „VERITY“." -#: lib/setup.c:2731 lib/verity/verity.c:61 +#: lib/setup.c:2744 lib/verity/verity.c:61 msgid "Unsupported VERITY hash offset." msgstr "Неподржан померај хеша „VERITY“." -#: lib/setup.c:2736 +#: lib/setup.c:2749 msgid "Unsupported VERITY FEC offset." msgstr "Неподржан „VERITY FEC“ померај." -#: lib/setup.c:2760 +#: lib/setup.c:2773 msgid "Data area overlaps with hash area." msgstr "Област података се преклапа са облашћу хеша." -#: lib/setup.c:2785 +#: lib/setup.c:2798 msgid "Hash area overlaps with FEC area." msgstr "Област хеша се преклапа са „FEC“ облашћу." -#: lib/setup.c:2792 +#: lib/setup.c:2805 msgid "Data area overlaps with FEC area." msgstr "Област података се преклапа са „FEC“ облашћу." -#: lib/setup.c:2884 +#: lib/setup.c:2897 msgid "Integrity key size mismatch." msgstr "Величина кључа целовитости није одговарајућа." -#: lib/setup.c:2935 +#: lib/setup.c:2948 #, c-format msgid "WARNING: Requested tag size %d bytes differs from %s size output (%d bytes).\n" msgstr "УПОЗОРЕЊЕ: Затражена величина ознаке %d бајта се разликује од излаза величине „%s“ (%d бајта).\n" -#: lib/setup.c:3048 lib/setup.c:3150 +#: lib/setup.c:3061 lib/setup.c:3163 #, c-format msgid "Unknown or unsupported device type %s requested." msgstr "Затражена је непозната или неподржана врста уређаја „%s“." -#: lib/setup.c:3064 +#: lib/setup.c:3077 #, c-format msgid "Device %s does not provide inline integrity data fields." msgstr "Уређај „%s“ не обезбеђује унутарња поља података целовитости." -#: lib/setup.c:3070 +#: lib/setup.c:3083 #, c-format msgid "Inline tag size % [bytes] is larger than % provided by device %s." msgstr "Унутарња величина ознаке % [бајта] је већа од % коју доставља уређај „%s“." -#: lib/setup.c:3085 +#: lib/setup.c:3098 #, c-format msgid "Sector must be the same as device hardware sector (%zu bytes)." msgstr "Сектор мора бити исти као сектор хардвера уређаја (%zu бајта)." -#: lib/setup.c:3515 lib/setup.c:3604 lib/setup.c:3617 +#: lib/setup.c:3528 lib/setup.c:3617 lib/setup.c:3630 #, c-format msgid "Unsupported parameters on device %s." msgstr "Неподржани параметри на уређају „%s“." -#: lib/setup.c:3521 lib/setup.c:3624 lib/luks2/luks2_reencrypt.c:2928 -#: lib/luks2/luks2_reencrypt.c:3197 lib/luks2/luks2_reencrypt.c:3594 +#: lib/setup.c:3534 lib/setup.c:3637 lib/luks2/luks2_reencrypt.c:2929 +#: lib/luks2/luks2_reencrypt.c:3198 lib/luks2/luks2_reencrypt.c:3595 #, c-format msgid "Mismatching parameters on device %s." msgstr "Неодговарајући параметри на уређају „%s“." -#: lib/setup.c:3647 +#: lib/setup.c:3660 msgid "Crypt devices mismatch." msgstr "Криптографски уређаји се не поклапају." -#: lib/setup.c:3679 lib/setup.c:3684 lib/luks2/luks2_reencrypt.c:2412 -#: lib/luks2/luks2_reencrypt.c:2944 lib/luks2/luks2_reencrypt.c:4236 +#: lib/setup.c:3692 lib/setup.c:3697 lib/luks2/luks2_reencrypt.c:2413 +#: lib/luks2/luks2_reencrypt.c:2945 lib/luks2/luks2_reencrypt.c:4237 #, c-format msgid "Failed to reload device %s." msgstr "Нисам успео поново да учитам уређај „%s“." -#: lib/setup.c:3690 lib/setup.c:3696 lib/luks2/luks2_reencrypt.c:2382 -#: lib/luks2/luks2_reencrypt.c:2389 lib/luks2/luks2_reencrypt.c:2958 +#: lib/setup.c:3703 lib/setup.c:3709 lib/luks2/luks2_reencrypt.c:2383 +#: lib/luks2/luks2_reencrypt.c:2390 lib/luks2/luks2_reencrypt.c:2959 #, c-format msgid "Failed to suspend device %s." msgstr "Нисам успео да обуставим уређај „%s“." -#: lib/setup.c:3702 lib/luks2/luks2_reencrypt.c:2396 -#: lib/luks2/luks2_reencrypt.c:2979 lib/luks2/luks2_reencrypt.c:4149 -#: lib/luks2/luks2_reencrypt.c:4240 +#: lib/setup.c:3715 lib/luks2/luks2_reencrypt.c:2397 +#: lib/luks2/luks2_reencrypt.c:2980 lib/luks2/luks2_reencrypt.c:4150 +#: lib/luks2/luks2_reencrypt.c:4241 #, c-format msgid "Failed to resume device %s." msgstr "Нисам успео да наставим са уређајем „%s“." -#: lib/setup.c:3717 +#: lib/setup.c:3730 #, c-format msgid "Fatal error while reloading device %s (on top of device %s)." msgstr "Кобна грешка приликом поновног учитавања уређаја „%s“ (на врху уређаја „%s“)." -#: lib/setup.c:3720 lib/setup.c:3722 +#: lib/setup.c:3733 lib/setup.c:3735 #, c-format msgid "Failed to switch device %s to dm-error." msgstr "Нисам успео да променим уређај „%s“ на дм-грешку." -#: lib/setup.c:3765 +#: lib/setup.c:3778 msgid "Can not resize LUKS2 device with static size." msgstr "Не могу да променим величину LUKS2 уређаја са статичком величином." -#: lib/setup.c:3770 +#: lib/setup.c:3783 msgid "Resize of LUKS2 device with integrity protection is not supported." msgstr "Промена величине LUKS2 уређаја са заштитом целовитости није подржана." -#: lib/setup.c:3816 +#: lib/setup.c:3829 msgid "Cannot resize loop device." msgstr "Не могу да променим величину уређаја петље." -#: lib/setup.c:3860 +#: lib/setup.c:3873 msgid "WARNING: Maximum size already set or kernel doesn't support resize.\n" msgstr "" "УПОЗОРЕЊЕ: Највећа величина је већ постављена или кернел не подржава промену величине.\n" "\n" -#: lib/setup.c:3926 +#: lib/setup.c:3939 msgid "Resize failed, the kernel doesn't support it." msgstr "Промена величине није успела, кернел је не подржава." -#: lib/setup.c:3958 +#: lib/setup.c:3971 msgid "Do you really want to change UUID of device?" msgstr "Да ли стварно желите да измените УЈИБ уређаја?" -#: lib/setup.c:4050 +#: lib/setup.c:4061 lib/setup.c:4069 msgid "Header backup file does not contain compatible LUKS header." msgstr "Датотека резерве заглавља не садржи сагласно ЛУКС заглавље." -#: lib/setup.c:4143 +#: lib/setup.c:4176 #, c-format msgid "Volume %s is not active." msgstr "Волумен „%s“ није радан." -#: lib/setup.c:4198 +#: lib/setup.c:4231 #, c-format msgid "Volume %s is already suspended." msgstr "Волумен „%s“ је већ обустављен." -#: lib/setup.c:4224 +#: lib/setup.c:4257 #, c-format msgid "Suspend is not supported for device %s." msgstr "Обустављање није подржано за уређај „%s“." -#: lib/setup.c:4226 lib/setup.c:4234 +#: lib/setup.c:4259 lib/setup.c:4267 #, c-format msgid "Error during suspending device %s." msgstr "Грешка за време обустављања уређаја „%s“." -#: lib/setup.c:4249 +#: lib/setup.c:4282 #, c-format msgid "Device %s was suspended but hardware OPAL device cannot be locked." msgstr "Уређај „%s“ је обустављен али хардверски OPAL уређај се не може закључати." -#: lib/setup.c:4280 lib/setup.c:4457 +#: lib/setup.c:4313 lib/setup.c:4507 #, c-format msgid "Resume is not supported for device %s." msgstr "Настављање није подржано за уређај „%s“." -#: lib/setup.c:4282 lib/setup.c:4447 lib/setup.c:4459 +#: lib/setup.c:4315 lib/setup.c:4497 lib/setup.c:4509 #, c-format msgid "Error during resuming device %s." msgstr "Грешка за време настављања уређаја „%s“." -#: lib/setup.c:4301 +#: lib/setup.c:4351 msgid "Failed to unlink volume key from user specified keyring." msgstr "Нисам успео да развежем кључ волумена од привеска кључева које је навео корисник." -#: lib/setup.c:4423 lib/setup.c:5603 +#: lib/setup.c:4473 lib/setup.c:5653 msgid "Failed to link volume key in user defined keyring." msgstr "Нисам успео да свежем кључ волумена у привезак кључева који је корисник одредио." -#: lib/setup.c:4522 src/cryptsetup.c:2721 +#: lib/setup.c:4572 src/cryptsetup.c:2722 #, c-format msgid "Volume %s is not suspended." msgstr "Волумен „%s“ није обустављен." -#: lib/setup.c:4633 lib/setup.c:7276 lib/setup.c:7298 lib/setup.c:7352 -#: src/cryptsetup.c:1856 src/cryptsetup.c:2260 src/cryptsetup.c:2278 -#: src/utils_reencrypt.c:305 src/utils_reencrypt.c:1966 +#: lib/setup.c:4683 lib/setup.c:7326 lib/setup.c:7348 src/cryptsetup.c:1856 +#: src/cryptsetup.c:2260 src/cryptsetup.c:2278 src/utils_reencrypt.c:306 +#: src/utils_reencrypt.c:1995 msgid "Volume key does not match the volume." msgstr "Кључ волумена не одговара волумену." -#: lib/setup.c:4787 +#: lib/setup.c:4837 msgid "Failed to swap new key slot." msgstr "Нисам успео да разменим нови утор кључа." -#: lib/setup.c:4885 +#: lib/setup.c:4935 #, c-format msgid "Key slot %d is invalid." msgstr "Утор кључа „%d“ није исправан." -#: lib/setup.c:4891 src/cryptsetup.c:1977 src/cryptsetup.c:2437 -#: src/cryptsetup.c:3121 src/cryptsetup.c:3181 +#: lib/setup.c:4941 src/cryptsetup.c:1977 src/cryptsetup.c:2437 +#: src/cryptsetup.c:3122 src/cryptsetup.c:3182 #, c-format msgid "Keyslot %d is not active." msgstr "Утор кључа „%d“ није радан." -#: lib/setup.c:4910 +#: lib/setup.c:4960 msgid "Device header overlaps with data area." msgstr "Заглавље уређаја се преклапа са облашћу података." -#: lib/setup.c:5131 +#: lib/setup.c:5181 msgid "Reencryption in-progress. Cannot activate device." msgstr "Поновно шифровање је у току. Не могу да активирам уређај." -#: lib/setup.c:5133 lib/luks2/luks2_json_metadata.c:2888 -#: lib/luks2/luks2_reencrypt.c:3725 +#: lib/setup.c:5183 lib/luks2/luks2_json_metadata.c:2905 +#: lib/luks2/luks2_reencrypt.c:3726 msgid "Failed to get reencryption lock." msgstr "Нисам успео да добавим закључавање поновног шифровања." -#: lib/setup.c:5155 +#: lib/setup.c:5205 msgid "LUKS2 reencryption recovery using volume key(s) failed." msgstr "Опоравак LUKS2 поновног шифровања коришћењем кључ(ев)а није успело." -#: lib/setup.c:5291 +#: lib/setup.c:5341 #, c-format msgid "Device %s already exists." msgstr "Већ постоји уређај „%s“." -#: lib/setup.c:5298 +#: lib/setup.c:5348 #, c-format msgid "Cannot use device %s, name is invalid or still in use." msgstr "Не могу да користим уређај „%s“, назив није исправан или је још у употреби." -#: lib/setup.c:5310 +#: lib/setup.c:5360 msgid "Reencryption volume keys do not match the volume." msgstr "Кључ волумена поновног шифровања не одговара волумену." -#: lib/setup.c:5327 +#: lib/setup.c:5377 msgid "Incorrect volume key specified for plain device." msgstr "Наведен је неисправан кључ волумена за обичан уређај." -#: lib/setup.c:5353 lib/setup.c:5414 +#: lib/setup.c:5403 lib/setup.c:5464 msgid "Device type is not properly initialized." msgstr "Врста уређаја није исправно покренута." -#: lib/setup.c:5452 +#: lib/setup.c:5502 msgid "Kernel keyring is not supported by the kernel." msgstr "Привезак кључева кернела није подржан кернелом." -#: lib/setup.c:5456 +#: lib/setup.c:5506 msgid "Kernel keyring missing: required for passing signature to kernel." msgstr "Привезак кључева кернела недостаје: потребан је за прослеђивање потписа кернелу." -#: lib/setup.c:5511 +#: lib/setup.c:5561 #, c-format msgid "Cannot use keyring key %s." msgstr "Не могу да користим кључ привеска „%s“." -#: lib/setup.c:5724 +#: lib/setup.c:5774 msgid "Incorrect root hash specified for verity device." msgstr "Наведен је неисправан хеш корена за уређај тачности." -#: lib/setup.c:5765 lib/setup.c:5790 +#: lib/setup.c:5815 lib/setup.c:5840 msgid "OPAL does not support deferred deactivation." msgstr "OPAL не подржава опцију одложену деактивацију." -#: lib/setup.c:5780 lib/setup.c:5811 lib/luks2/luks2_json_metadata.c:2953 +#: lib/setup.c:5830 lib/setup.c:5861 lib/luks2/luks2_json_metadata.c:2970 #: src/utils_reencrypt.c:89 #, c-format msgid "Device %s is still in use." msgstr "Уређај „%s“ је још увеку употреби." -#: lib/setup.c:5798 +#: lib/setup.c:5848 #, c-format msgid "Could not cancel deferred remove from device %s." msgstr "Не могу да откажем различно уклањање из уређаја „%s“." -#: lib/setup.c:5820 +#: lib/setup.c:5870 #, c-format msgid "Invalid device %s." msgstr "Неисправан уређај „%s“." -#: lib/setup.c:5967 +#: lib/setup.c:6017 msgid "Volume key buffer too small." msgstr "Међумеморија кључа волумена је премала." -#: lib/setup.c:5978 +#: lib/setup.c:6028 msgid "Cannot retrieve volume key for LUKS2 device." msgstr "Не могу да довучем кључ волумена за ЛУКС2 уређај." -#: lib/setup.c:5987 +#: lib/setup.c:6037 msgid "Cannot retrieve volume key for LUKS1 device." msgstr "Не могу да довучем кључ волумена за ЛУКС1 уређај." -#: lib/setup.c:6001 +#: lib/setup.c:6051 msgid "Cannot retrieve volume key for plain device." msgstr "Не могу да довучем кључ волумена за обичан уређај." -#: lib/setup.c:6009 +#: lib/setup.c:6059 msgid "Cannot retrieve root hash for verity device." msgstr "Не могу да довучем хеш корена за уређај тачности." -#: lib/setup.c:6018 +#: lib/setup.c:6068 msgid "Cannot retrieve volume key for BITLK device." msgstr "Не могу да довучем кључ волумена за BITLK уређај." -#: lib/setup.c:6023 +#: lib/setup.c:6073 msgid "Cannot retrieve volume key for FVAULT2 device." msgstr "Не могу да довучем кључ волумена за FVAULT2 уређај." -#: lib/setup.c:6025 +#: lib/setup.c:6075 #, c-format msgid "This operation is not supported for %s crypt device." msgstr "Ова радња није подржана за криптографски уређај „%s“." -#: lib/setup.c:6210 lib/setup.c:6221 +#: lib/setup.c:6260 lib/setup.c:6271 msgid "Dump operation is not supported for this device type." msgstr "Радња исписа није подржана за ову врсту уређаја." -#: lib/setup.c:6601 +#: lib/setup.c:6651 #, c-format msgid "Data offset is not multiple of %u bytes." msgstr "Померај података није умножак %u бајта." -#: lib/setup.c:6909 +#: lib/setup.c:6959 #, c-format msgid "Cannot convert device %s which is still in use." msgstr "Не могу да преобратим уређај „%s“ који је још увек у употреби." -#: lib/setup.c:7217 lib/setup.c:7361 +#: lib/setup.c:7267 lib/setup.c:7422 #, c-format msgid "Failed to assign keyslot %u as the new volume key." msgstr "Нисам успео да доделим утор кључа „%u“ као нови кључ волумена." -#: lib/setup.c:7241 +#: lib/setup.c:7291 msgid "Failed to initialize default LUKS2 keyslot parameters." msgstr "Нисам успео да покренем основне параметре ЛУКС2 утора кључа." -#: lib/setup.c:7247 +#: lib/setup.c:7297 #, c-format msgid "Failed to assign keyslot %d to digest." msgstr "Нисам успео да доделим утор кључа „%d“ за преглед." -#: lib/setup.c:7478 +#: lib/setup.c:7539 msgid "Cannot add key slot, all slots disabled and no volume key provided." msgstr "Не могу да додам утор кључа, сви утори су искључени а није обезбеђен ниједан кључ волумена." -#: lib/setup.c:7551 lib/verity/verity.c:333 +#: lib/setup.c:7627 lib/setup.c:7642 lib/verity/verity.c:333 msgid "Failed to load key in kernel keyring." msgstr "Нисам успео да учитам кључ у привеску кључева кернела." -#: lib/setup.c:7742 +#: lib/setup.c:7823 #, c-format msgid "Could not find keyring described by \"%s\"." msgstr "Не могу да нађем привезак описан са „%s“." -#: lib/setup.c:7807 +#: lib/setup.c:7888 msgid "Failed to acquire global memory-hard access serialization lock." msgstr "Нисам успео да остварим опште закључавање серијализације приступа чврстој меморији." -#: lib/utils.c:204 lib/tcrypt/tcrypt.c:490 +#: lib/utils.c:205 lib/tcrypt/tcrypt.c:488 msgid "Failed to open key file." msgstr "Нисам успео да отворим датотеку кључа." -#: lib/utils.c:212 +#: lib/utils.c:213 msgid "Cannot read keyfile from a terminal." msgstr "Не могу да прочитам датотеку кључа из терминала." -#: lib/utils.c:228 +#: lib/utils.c:229 msgid "Failed to stat key file." msgstr "Нисам успео да добавим податке датотеке кључа." -#: lib/utils.c:236 lib/utils.c:257 +#: lib/utils.c:237 lib/utils.c:258 msgid "Cannot seek to requested keyfile offset." msgstr "Не могу да премотам на затражени померај датотеке кључа." -#: lib/utils.c:251 lib/utils.c:266 src/utils_password.c:219 +#: lib/utils.c:252 lib/utils.c:267 src/utils_password.c:219 #: src/utils_password.c:231 msgid "Out of memory while reading passphrase." msgstr "Нестало је меморије приликом читања пропусне речи." -#: lib/utils.c:286 +#: lib/utils.c:287 msgid "Error reading passphrase." msgstr "Грешка читања пропусне речи." -#: lib/utils.c:303 +#: lib/utils.c:304 msgid "Nothing to read on input." msgstr "Нема ничега за читање на улазу." -#: lib/utils.c:310 +#: lib/utils.c:311 msgid "Maximum keyfile size exceeded." msgstr "Премашена је највећа величина датотеке кључа." -#: lib/utils.c:315 +#: lib/utils.c:316 msgid "Cannot read requested amount of data." msgstr "Не могу да прочитам затражену количину података." #: lib/utils_device.c:207 lib/utils_storage_wrappers.c:99 -#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2254 +#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2283 #, c-format msgid "Device %s does not exist or access denied." msgstr "Уређај „%s“ не постоји или је приступ одбијен." @@ -904,16 +904,16 @@ msgstr "Затражене „PBKDF“ паралелне нити не могу msgid "Only PBKDF2 is supported in FIPS mode." msgstr "Само „PBKDF2“ је подржано у „FIPS“ режиму." -#: lib/utils_benchmark.c:171 +#: lib/utils_benchmark.c:175 msgid "PBKDF benchmark disabled but iterations not set." msgstr "„PBKDF“ оцењивање је искључено али понављања нису постављена." -#: lib/utils_benchmark.c:190 +#: lib/utils_benchmark.c:194 #, c-format msgid "Not compatible PBKDF2 options (using hash algorithm %s)." msgstr "Нису сагласне „PBKDF2“ опције (користим хеш алгоритам %s)." -#: lib/utils_benchmark.c:210 +#: lib/utils_benchmark.c:214 msgid "Not compatible PBKDF options." msgstr "Несагласне „PBKDF“ опције." @@ -962,9 +962,9 @@ msgstr "Величина кључа у „XTS“ режиму мора да бу msgid "Cipher specification should be in [cipher]-[mode]-[iv] format." msgstr "Спецификација шифрера треба бити у запису „[шифрер]-[режим]-[ив]“." -#: lib/luks1/keyencryption.c:85 lib/luks1/keymanage.c:353 -#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1150 -#: lib/luks2/luks2_json_metadata.c:1518 lib/luks2/luks2_keyslot.c:711 +#: lib/luks1/keyencryption.c:85 lib/luks1/keymanage.c:358 +#: lib/luks1/keymanage.c:665 lib/luks1/keymanage.c:1133 +#: lib/luks2/luks2_json_metadata.c:1510 lib/luks2/luks2_keyslot.c:711 #, c-format msgid "Cannot write to device %s, permission denied." msgstr "Не могу да пишем на уређај „%s“, овлашћење је одбијено." @@ -977,24 +977,24 @@ msgstr "Нисам успео да отворим привремени уређ msgid "Failed to access temporary keystore device." msgstr "Нисам успео да приступм привременом уређају смештаја кључа." -#: lib/luks1/keyencryption.c:189 lib/luks2/luks2_keyslot_luks2.c:49 -#: lib/luks2/luks2_keyslot_luks2.c:67 lib/luks2/luks2_keyslot_reenc.c:184 +#: lib/luks1/keyencryption.c:189 lib/luks2/luks2_keyslot_luks2.c:47 +#: lib/luks2/luks2_keyslot_reenc.c:184 msgid "IO error while encrypting keyslot." msgstr "Грешка УИ приликом шифровања утора кључа." -#: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:356 -#: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:668 +#: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:361 +#: lib/luks1/keymanage.c:619 lib/luks1/keymanage.c:668 lib/tcrypt/tcrypt.c:659 #: lib/fvault2/fvault2.c:872 lib/verity/verity.c:67 lib/verity/verity.c:183 #: lib/verity/verity_hash.c:312 lib/verity/verity_hash.c:321 #: lib/verity/verity_hash.c:350 lib/verity/verity_fec.c:247 #: lib/verity/verity_fec.c:259 lib/verity/verity_fec.c:264 -#: lib/luks2/luks2_json_metadata.c:1521 src/utils_reencrypt_luks1.c:108 +#: lib/luks2/luks2_json_metadata.c:1513 src/utils_reencrypt_luks1.c:108 #: src/utils_reencrypt_luks1.c:120 #, c-format msgid "Cannot open device %s." msgstr "Не могу да отворим уређај „%s“." -#: lib/luks1/keyencryption.c:247 lib/luks2/luks2_keyslot_luks2.c:128 +#: lib/luks1/keyencryption.c:247 lib/luks2/luks2_keyslot_luks2.c:85 msgid "IO error while decrypting keyslot." msgstr "Грешка УИ приликом дешифровања утора кључа." @@ -1003,61 +1003,61 @@ msgstr "Грешка УИ приликом дешифровања утора к msgid "Device %s is too small. (LUKS1 requires at least % bytes.)" msgstr "Уређај „%s“ је премали. (ЛУКС1 захтева барем % бајта.)" -#: lib/luks1/keymanage.c:138 lib/luks1/keymanage.c:146 -#: lib/luks1/keymanage.c:158 lib/luks1/keymanage.c:169 -#: lib/luks1/keymanage.c:181 +#: lib/luks1/keymanage.c:143 lib/luks1/keymanage.c:151 +#: lib/luks1/keymanage.c:163 lib/luks1/keymanage.c:174 +#: lib/luks1/keymanage.c:186 #, c-format msgid "LUKS keyslot %u is invalid." msgstr "ЛУКС утор кључа „%u“ није исправан." -#: lib/luks1/keymanage.c:254 lib/luks2/luks2_json_metadata.c:1382 +#: lib/luks1/keymanage.c:259 lib/luks2/luks2_json_metadata.c:1382 #, c-format msgid "Requested header backup file %s already exists." msgstr "Затражена датотека резерве заглавља „%s“ већ постоји." -#: lib/luks1/keymanage.c:256 lib/luks2/luks2_json_metadata.c:1384 +#: lib/luks1/keymanage.c:261 lib/luks2/luks2_json_metadata.c:1384 #, c-format msgid "Cannot create header backup file %s." msgstr "Не могу да направим резервну датотеку заглавља „%s“." -#: lib/luks1/keymanage.c:263 lib/luks2/luks2_json_metadata.c:1391 +#: lib/luks1/keymanage.c:268 lib/luks2/luks2_json_metadata.c:1391 #, c-format msgid "Cannot write header backup file %s." msgstr "Не могу да запишем резервну датотеку заглавља „%s“." -#: lib/luks1/keymanage.c:295 lib/luks2/luks2_json_metadata.c:1428 +#: lib/luks1/keymanage.c:300 lib/luks2/luks2_json_metadata.c:1420 msgid "Backup file does not contain valid LUKS header." msgstr "Датотека резерве не садржи исправно ЛУКС заглавље." -#: lib/luks1/keymanage.c:308 lib/luks1/keymanage.c:580 -#: lib/luks2/luks2_json_metadata.c:1450 +#: lib/luks1/keymanage.c:313 lib/luks1/keymanage.c:585 +#: lib/luks2/luks2_json_metadata.c:1442 #, c-format msgid "Cannot open header backup file %s." msgstr "Не могу да отворим резервну датотеку заглавља „%s“." -#: lib/luks1/keymanage.c:316 lib/luks2/luks2_json_metadata.c:1458 +#: lib/luks1/keymanage.c:321 lib/luks2/luks2_json_metadata.c:1450 #, c-format msgid "Cannot read header backup file %s." msgstr "Не могу да прочитам резервну датотеку заглавља „%s“." -#: lib/luks1/keymanage.c:326 +#: lib/luks1/keymanage.c:331 msgid "Data offset or key size differs on device and backup, restore failed." msgstr "Померај датума или величина кључа се разликују на уређају и резерви, враћање није успело." -#: lib/luks1/keymanage.c:334 +#: lib/luks1/keymanage.c:339 #, c-format msgid "Device %s %s%s" msgstr "Уређај %s %s%s" -#: lib/luks1/keymanage.c:335 +#: lib/luks1/keymanage.c:340 msgid "does not contain LUKS header. Replacing header can destroy data on that device." msgstr "не садржи ЛУКС заглавље. Замена заглавља може да уништи податке на том уређају." -#: lib/luks1/keymanage.c:336 +#: lib/luks1/keymanage.c:341 msgid "already contains LUKS header. Replacing header will destroy existing keyslots." msgstr "већ садржи ЛУКС заглавље. Замена заглавља ће уништити постојеће уторе кључева." -#: lib/luks1/keymanage.c:337 lib/luks2/luks2_json_metadata.c:1490 +#: lib/luks1/keymanage.c:342 lib/luks2/luks2_json_metadata.c:1482 msgid "" "\n" "WARNING: real device header has different UUID than backup!" @@ -1065,130 +1065,130 @@ msgstr "" "\n" "УПОЗОРЕЊЕ: право заглавље уређаја има другачији УЈИБ од резерве!" -#: lib/luks1/keymanage.c:385 +#: lib/luks1/keymanage.c:390 msgid "Non standard key size, manual repair required." msgstr "Неуобичајена величина кључа, потребна је ручна поправка." -#: lib/luks1/keymanage.c:395 +#: lib/luks1/keymanage.c:400 msgid "Non standard keyslots alignment, manual repair required." msgstr "Неуобичајено поравнање утора кључева, потребна је ручна поправка." -#: lib/luks1/keymanage.c:404 +#: lib/luks1/keymanage.c:409 #, c-format msgid "Cipher mode repaired (%s -> %s)." msgstr "Режим шифрера је оправљен (%s → %s)." -#: lib/luks1/keymanage.c:415 +#: lib/luks1/keymanage.c:420 #, c-format msgid "Cipher hash repaired to lowercase (%s)." msgstr "Хеш шифрера је преправљен на мала слова (%s)." -#: lib/luks1/keymanage.c:417 lib/luks1/keymanage.c:523 -#: lib/luks1/keymanage.c:777 +#: lib/luks1/keymanage.c:422 lib/luks1/keymanage.c:528 +#: lib/luks1/keymanage.c:757 #, c-format msgid "Requested LUKS hash %s is not supported." msgstr "Затражени ЛУКС хеш „%s“ није подржан." -#: lib/luks1/keymanage.c:431 +#: lib/luks1/keymanage.c:436 msgid "Repairing keyslots." msgstr "Поправљам уторе кључева." -#: lib/luks1/keymanage.c:450 +#: lib/luks1/keymanage.c:455 #, c-format msgid "Keyslot %i: offset repaired (%u -> %u)." msgstr "Утор кључа %i: померај је оправљен (%u —> %u)." -#: lib/luks1/keymanage.c:458 +#: lib/luks1/keymanage.c:463 #, c-format msgid "Keyslot %i: stripes repaired (%u -> %u)." msgstr "Утор кључа %i: траке су оправљене (%u —> %u)." -#: lib/luks1/keymanage.c:467 +#: lib/luks1/keymanage.c:472 #, c-format msgid "Keyslot %i: bogus partition signature." msgstr "Утор кључа %i: лажан потпис партиције." -#: lib/luks1/keymanage.c:472 +#: lib/luks1/keymanage.c:477 #, c-format msgid "Keyslot %i: salt wiped." msgstr "Утор кључа %i: присолак је обрисан." -#: lib/luks1/keymanage.c:489 +#: lib/luks1/keymanage.c:494 msgid "Writing LUKS header to disk." msgstr "Записујем ЛУКС заглавље на диск." -#: lib/luks1/keymanage.c:494 +#: lib/luks1/keymanage.c:499 msgid "Repair failed." msgstr "Поправка није успела." -#: lib/luks1/keymanage.c:549 +#: lib/luks1/keymanage.c:554 #, c-format msgid "LUKS cipher mode %s is invalid." msgstr "Режим ЛУКС шифрера „%s“ није исправан." -#: lib/luks1/keymanage.c:554 +#: lib/luks1/keymanage.c:559 #, c-format msgid "LUKS hash %s is invalid." msgstr "ЛУКС хеш „%s“ није исправан." -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 +#: lib/luks1/keymanage.c:566 src/cryptsetup.c:1367 msgid "No known problems detected for LUKS header." msgstr "Нису откривени познати проблеми за ЛУКС заглавље." -#: lib/luks1/keymanage.c:689 +#: lib/luks1/keymanage.c:690 #, c-format msgid "Error during update of LUKS header on device %s." msgstr "Грешка приликом освежавања ЛУКС заглавља на уређају „%s“." -#: lib/luks1/keymanage.c:697 +#: lib/luks1/keymanage.c:698 #, c-format msgid "Error re-reading LUKS header after update on device %s." msgstr "Грешка поновног читања ЛУКС заглавља након освежења на уређају „%s“." -#: lib/luks1/keymanage.c:771 +#: lib/luks1/keymanage.c:751 msgid "Data offset for LUKS header must be either 0 or higher than header size." msgstr "Померај података за ЛУКС заглавље мора бити или 0 или већи од величине заглавља." -#: lib/luks1/keymanage.c:782 lib/luks1/keymanage.c:853 -#: lib/luks2/luks2_json_format.c:231 lib/luks2/luks2_json_metadata.c:1261 -#: src/utils_reencrypt.c:701 +#: lib/luks1/keymanage.c:762 lib/luks1/keymanage.c:833 +#: lib/luks2/luks2_json_format.c:240 lib/luks2/luks2_json_metadata.c:1261 +#: src/utils_reencrypt.c:703 msgid "Wrong LUKS UUID format provided." msgstr "Достављен је погрешан запис ЛУКС УЈИБ-а." -#: lib/luks1/keymanage.c:804 +#: lib/luks1/keymanage.c:784 msgid "Cannot create LUKS header: reading random salt failed." msgstr "Не могу да направим ЛУКС заглавље: није успело читање насумичног присолка." -#: lib/luks1/keymanage.c:832 +#: lib/luks1/keymanage.c:812 #, c-format msgid "Cannot create LUKS header: header digest failed (using hash %s)." msgstr "Не могу да направим ЛУКС заглавље: није успео преглед заглавља (користим хеш „%s“)." -#: lib/luks1/keymanage.c:877 +#: lib/luks1/keymanage.c:857 #, c-format msgid "Key slot %d active, purge first." msgstr "Утор кључа „%d“ је радан, прво прочистите." -#: lib/luks1/keymanage.c:883 +#: lib/luks1/keymanage.c:863 #, c-format msgid "Key slot %d material includes too few stripes. Header manipulation?" msgstr "Материјал утора кључа „%d“ обухвата премало трака. Да управљам заглављем?" -#: lib/luks1/keymanage.c:921 lib/luks2/luks2_keyslot_luks2.c:260 +#: lib/luks1/keymanage.c:901 lib/luks2/luks2_keyslot_luks2.c:217 msgid "PBKDF2 iteration value overflow." msgstr "Прекорачење вредности ПБКДФ2 понављања." -#: lib/luks1/keymanage.c:1040 +#: lib/luks1/keymanage.c:1023 #, c-format msgid "Cannot open keyslot (using hash %s)." msgstr "Не могу да отворим утор кључа (користим хеш %s)." -#: lib/luks1/keymanage.c:1136 +#: lib/luks1/keymanage.c:1119 #, c-format msgid "Key slot %d is invalid, please select keyslot between 0 and %d." msgstr "Утор кључа %d није исправан, изаберите га између 0 и %d." -#: lib/luks1/keymanage.c:1154 lib/luks2/luks2_keyslot.c:715 +#: lib/luks1/keymanage.c:1137 lib/luks2/luks2_keyslot.c:715 #, c-format msgid "Cannot wipe device %s." msgstr "Не могу да обришем уређај „%s“." @@ -1209,56 +1209,48 @@ msgstr "Откривена је несагласна датотека кључа msgid "Kernel does not support loop-AES compatible mapping." msgstr "Језгро не подржава мапирање сагласно са „AES“ петљом." -#: lib/tcrypt/tcrypt.c:497 +#: lib/tcrypt/tcrypt.c:495 #, c-format msgid "Error reading keyfile %s." msgstr "Грешка читања датотеке кључа „%s“." -#: lib/tcrypt/tcrypt.c:547 +#: lib/tcrypt/tcrypt.c:549 #, c-format msgid "Maximum TCRYPT passphrase length (%zu) exceeded." msgstr "Премашена је највећа дужина „TCRYPT“ пропусне речи (%zu)." -#: lib/tcrypt/tcrypt.c:589 +#: lib/tcrypt/tcrypt.c:591 #, c-format msgid "PBKDF2 hash algorithm %s not available, skipping." msgstr "„PBKDF2“ алгоритам хеша „%s“ није доступан, прескачем." -#: lib/tcrypt/tcrypt.c:608 src/cryptsetup.c:1240 -msgid "Required kernel crypto interface not available." -msgstr "Није доступно затражено сучеље криптографије језгра." - -#: lib/tcrypt/tcrypt.c:610 src/cryptsetup.c:1242 -msgid "Ensure you have algif_skcipher kernel module loaded." -msgstr "Уверите се да је учитан модул кернела „algif_skcipher“." - -#: lib/tcrypt/tcrypt.c:752 +#: lib/tcrypt/tcrypt.c:743 #, c-format msgid "Activation is not supported for %d sector size." msgstr "Покретање није подржано за величину %d области." -#: lib/tcrypt/tcrypt.c:758 +#: lib/tcrypt/tcrypt.c:749 msgid "Kernel does not support activation for this TCRYPT legacy mode." msgstr "Језгро не подржава покретање за овај стари „TCRYPT“ режим." -#: lib/tcrypt/tcrypt.c:813 +#: lib/tcrypt/tcrypt.c:804 #, c-format msgid "Activating TCRYPT system encryption for partition %s." msgstr "Покрећем „TCRYPT“ систем шифровања за партицију „%s“." -#: lib/tcrypt/tcrypt.c:828 +#: lib/tcrypt/tcrypt.c:819 msgid "Cannot determine TCRYPT system partition offset, activating whole encrypted area." msgstr "Не могу да одредим померај TCRYPT системске партиције, активираћу читаву шифровану област." -#: lib/tcrypt/tcrypt.c:837 +#: lib/tcrypt/tcrypt.c:828 msgid "Cannot determine TCRYPT system partition offset, activating device as a system partition." msgstr "Не могу да одредим померај TCRYPT системске партиције, активирам уређај као системску партицију." -#: lib/tcrypt/tcrypt.c:917 +#: lib/tcrypt/tcrypt.c:908 msgid "Kernel does not support TCRYPT compatible mapping." msgstr "Кернел не подржава мапирање сагласно са „TCRYPT“-ом." -#: lib/tcrypt/tcrypt.c:1146 +#: lib/tcrypt/tcrypt.c:1137 msgid "This function is not supported without TCRYPT header load." msgstr "Ова функција није подржана без учитавања „TCRYPT“ заглавља." @@ -1374,33 +1366,33 @@ msgstr "Радња није подржана." msgid "Unexpected key data size." msgstr "Неочекивана величина података кључа." -#: lib/bitlk/bitlk.c:1442 +#: lib/bitlk/bitlk.c:1448 msgid "This BITLK device is in an unsupported state and cannot be activated." msgstr "Овај „BITLK“ уређај је у неподржаном стању и не може бити активиран." -#: lib/bitlk/bitlk.c:1447 +#: lib/bitlk/bitlk.c:1453 #, c-format msgid "BITLK devices with type '%s' cannot be activated." msgstr "„BITLK“ уређај са врстом „%s“ се не може активирати." -#: lib/bitlk/bitlk.c:1486 +#: lib/bitlk/bitlk.c:1492 #, c-format msgid "WARNING: BitLocker volume size % does not match the underlying device size %" msgstr "УПОЗОРЕЊЕ: Величина волумена закључавача бита % не одговара величини садржаног уређаја %" -#: lib/bitlk/bitlk.c:1613 +#: lib/bitlk/bitlk.c:1634 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK IV." msgstr "Не могу да активирам уређај, „dm-crypt“-у кернела недостаје подршка за „BITLK IV“." -#: lib/bitlk/bitlk.c:1617 +#: lib/bitlk/bitlk.c:1638 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK Elephant diffuser." msgstr "Не могу да активирам уређај, „dm-crypt“-у кернела недостаје подршка за „BITLK Elephant“ дифузера." -#: lib/bitlk/bitlk.c:1621 +#: lib/bitlk/bitlk.c:1642 msgid "Cannot activate device, kernel dm-crypt is missing support for large sector size." msgstr "Не могу да активирам уређај, „dm-crypt“-у кернела недостаје подршка за велику величину сектора." -#: lib/bitlk/bitlk.c:1625 +#: lib/bitlk/bitlk.c:1646 msgid "Cannot activate device, kernel dm-zero module is missing." msgstr "Не могу да активирам уређај, недостаје „dm-zero“ модул кернела." @@ -1557,24 +1549,24 @@ msgstr "Нисам успео да одредим величину за уређ msgid "Incompatible kernel dm-integrity metadata (version %u) detected on %s." msgstr "Недоследни „dm-integrity“ метаподаци кернела (издање %u) су откривени на „%s“." -#: lib/integrity/integrity.c:308 lib/integrity/integrity.c:492 +#: lib/integrity/integrity.c:309 lib/integrity/integrity.c:493 msgid "Kernel does not support dm-integrity mapping." msgstr "Кернел не подржава мапирање дм-целовитости." -#: lib/integrity/integrity.c:314 +#: lib/integrity/integrity.c:315 msgid "Kernel does not support dm-integrity fixed metadata alignment." msgstr "Кернел не подржава поравнање фиксних метаподатака дм-целовитости." -#: lib/integrity/integrity.c:323 +#: lib/integrity/integrity.c:324 msgid "Kernel refuses to activate insecure recalculate option (see legacy activation options to override)." msgstr "Кернел одбија да покрене небезбедну опцију поновног израчунавања (видите старе опције покретања да избегнете ово)." -#: lib/integrity/integrity.c:329 +#: lib/integrity/integrity.c:330 msgid "Kernel does not support dm-integrity inline mode." msgstr "Кернел не подржава унутарњи режим дм-целовитости." #: lib/luks2/luks2_disk_metadata.c:382 lib/luks2/luks2_json_metadata.c:1184 -#: lib/luks2/luks2_json_metadata.c:1510 +#: lib/luks2/luks2_json_metadata.c:1502 #, c-format msgid "Failed to acquire write lock on device %s." msgstr "Нисам успео да остварим закључавање писања на уређају „%s“." @@ -1596,23 +1588,22 @@ msgstr "" msgid "WARNING: keyslots area (% bytes) is very small, available LUKS2 keyslot count is very limited.\n" msgstr "УПОЗОРЕЊЕ: област утора кључа (% бајта) је врло мала, доступан број ЛУКС2 утора кључа врло ограничен.\n" -#: lib/luks2/luks2_json_format.c:418 +#: lib/luks2/luks2_json_format.c:427 msgid "Requested data offset is too small." msgstr "Затражени померај података је премали." -#: lib/luks2/luks2_json_format.c:459 +#: lib/luks2/luks2_json_format.c:468 #, c-format msgid "WARNING: LUKS2 metadata size changed to % bytes.\n" msgstr "УПОЗОРЕЊЕ: Величина ЛУКС2 метаподатака је промењена на % бајта.\n" -#: lib/luks2/luks2_json_format.c:463 +#: lib/luks2/luks2_json_format.c:472 #, c-format msgid "WARNING: LUKS2 keyslots area size changed to % bytes.\n" msgstr "УПОЗОРЕЊЕ: Величина области ЛУКС2 утора кључева је промењена на % бајта.\n" #: lib/luks2/luks2_json_metadata.c:1171 lib/luks2/luks2_json_metadata.c:1357 -#: lib/luks2/luks2_json_metadata.c:1417 lib/luks2/luks2_keyslot_luks2.c:81 -#: lib/luks2/luks2_keyslot_luks2.c:105 +#: lib/luks2/luks2_json_metadata.c:1412 lib/luks2/luks2_keyslot_luks2.c:71 #, c-format msgid "Failed to acquire read lock on device %s." msgstr "Нисам успео да остварим закључавање читања на уређају „%s“." @@ -1621,33 +1612,33 @@ msgstr "Нисам успео да остварим закључавање чи msgid "Label is too long." msgstr "Натпис је предуг." -#: lib/luks2/luks2_json_metadata.c:1435 +#: lib/luks2/luks2_json_metadata.c:1427 #, c-format msgid "Forbidden LUKS2 requirements detected in backup %s." msgstr "Забрањени ЛУКС2 захтеви су откривени у резерви „%s“." -#: lib/luks2/luks2_json_metadata.c:1474 +#: lib/luks2/luks2_json_metadata.c:1466 msgid "Data offset differ on device and backup, restore failed." msgstr "Померај података се разликује на уређају и резерви, враћање није успело." -#: lib/luks2/luks2_json_metadata.c:1480 +#: lib/luks2/luks2_json_metadata.c:1472 msgid "Binary header with keyslot areas size differ on device and backup, restore failed." msgstr "Бинарно заглавље са областима утора кључа се разликује на уређају и резерви, враћање није успело." -#: lib/luks2/luks2_json_metadata.c:1487 +#: lib/luks2/luks2_json_metadata.c:1479 #, c-format msgid "Device %s %s%s%s%s" msgstr "Уређај %s %s%s%s%s" -#: lib/luks2/luks2_json_metadata.c:1488 +#: lib/luks2/luks2_json_metadata.c:1480 msgid "does not contain LUKS2 header. Replacing header can destroy data on that device." msgstr "не садржи ЛУКС2 заглавље. Замена заглавља може да уништи податке на том уређају." -#: lib/luks2/luks2_json_metadata.c:1489 +#: lib/luks2/luks2_json_metadata.c:1481 msgid "already contains LUKS2 header. Replacing header will destroy existing keyslots." msgstr "већ садржи „LUKS2“ заглавље. Замена заглавља ће уништити постојеће уторе кључева." -#: lib/luks2/luks2_json_metadata.c:1491 +#: lib/luks2/luks2_json_metadata.c:1483 msgid "" "\n" "WARNING: unknown LUKS2 requirements detected in real device header!\n" @@ -1657,7 +1648,7 @@ msgstr "" "УПОЗОРЕЊЕ: непознати ЛУКС2 захтеви су откривени у стварном заглављу уређаја!\n" "Замена заглавља резервом може оштетити податке на том уређају!" -#: lib/luks2/luks2_json_metadata.c:1493 +#: lib/luks2/luks2_json_metadata.c:1485 msgid "" "\n" "WARNING: Unfinished offline reencryption detected on the device!\n" @@ -1667,84 +1658,84 @@ msgstr "" "УПОЗОРЕЊЕ: Недовршено ван мрежно поновно шифровање је откривено на уређају!\n" "Замена заглавља резервом може оштетити податке." -#: lib/luks2/luks2_json_metadata.c:1591 +#: lib/luks2/luks2_json_metadata.c:1583 #, c-format msgid "Ignored unknown flag %s." msgstr "Занемарена непозната заставица „%s“." -#: lib/luks2/luks2_json_metadata.c:2545 lib/luks2/luks2_reencrypt.c:2109 +#: lib/luks2/luks2_json_metadata.c:2555 lib/luks2/luks2_reencrypt.c:2110 #, c-format msgid "Missing key for dm-crypt segment %u" msgstr "Недостаје кључ за „dm-crypt“ подеок %u" -#: lib/luks2/luks2_json_metadata.c:2557 lib/luks2/luks2_reencrypt.c:2122 +#: lib/luks2/luks2_json_metadata.c:2567 lib/luks2/luks2_reencrypt.c:2123 msgid "Failed to set dm-crypt segment." msgstr "Нисам успео да подесим „dm-crypt“ подеок." -#: lib/luks2/luks2_json_metadata.c:2563 lib/luks2/luks2_reencrypt.c:2128 +#: lib/luks2/luks2_json_metadata.c:2573 lib/luks2/luks2_reencrypt.c:2129 msgid "Failed to set dm-linear segment." msgstr "Нисам успео да подесим „dm-linear“ подеок." -#: lib/luks2/luks2_json_metadata.c:2683 src/utils_reencrypt.c:578 +#: lib/luks2/luks2_json_metadata.c:2693 src/utils_reencrypt.c:580 msgid "No known cipher specification pattern detected in LUKS2 header." msgstr "Није откривен познат образац одреднице шифрера у LUKS2 заглављу." -#: lib/luks2/luks2_json_metadata.c:2691 +#: lib/luks2/luks2_json_metadata.c:2701 msgid "OPAL device must have static device size." msgstr "OPAL уређај мора имати статичку величину уређаја." -#: lib/luks2/luks2_json_metadata.c:2711 +#: lib/luks2/luks2_json_metadata.c:2721 msgid "Encrypted OPAL device with integrity must be smaller than locking range." msgstr "Шифровани OPAL уређај са целовитошћу мора бити мањи од опсега закључавања." -#: lib/luks2/luks2_json_metadata.c:2716 +#: lib/luks2/luks2_json_metadata.c:2726 msgid "OPAL device must have same size as locking range." msgstr "OPAl уређај мора имати исту величину као опсег закључавања." -#: lib/luks2/luks2_json_metadata.c:2736 +#: lib/luks2/luks2_json_metadata.c:2746 #, c-format msgid "OPAL device is %s already unlocked.\n" msgstr "OPAL уређај je „%s“ već otkqučan.\n" -#: lib/luks2/luks2_json_metadata.c:2775 +#: lib/luks2/luks2_json_metadata.c:2785 msgid "Unsupported device integrity configuration." msgstr "Неподржано подешавање целовитости уређаја." -#: lib/luks2/luks2_json_metadata.c:2791 +#: lib/luks2/luks2_json_metadata.c:2801 msgid "Underlying dm-integrity device with unexpected provided data sectors." msgstr "Основни „dm-integrity“ уређај са неочекивано достављеним секторима података." -#: lib/luks2/luks2_json_metadata.c:2886 +#: lib/luks2/luks2_json_metadata.c:2903 msgid "Reencryption in-progress. Cannot deactivate device." msgstr "Поновно шифровање је у току. Не могу да деактивирам уређај." -#: lib/luks2/luks2_json_metadata.c:2897 lib/luks2/luks2_reencrypt.c:4286 +#: lib/luks2/luks2_json_metadata.c:2914 lib/luks2/luks2_reencrypt.c:4287 #, c-format msgid "Failed to replace suspended device %s with dm-error target." msgstr "Нисам успео да заменим обустављени уређај „%s“ са метом „dm-error“." -#: lib/luks2/luks2_json_metadata.c:2976 lib/luks2/luks2_json_metadata.c:2998 +#: lib/luks2/luks2_json_metadata.c:2993 lib/luks2/luks2_json_metadata.c:3015 #, c-format msgid "Device %s was deactivated but hardware OPAL device cannot be locked." msgstr "Уређај „%s“ је искључен али хардверски OPAL уређај се не може закључати." -#: lib/luks2/luks2_json_metadata.c:3020 +#: lib/luks2/luks2_json_metadata.c:3037 msgid "Unmet LUKS2 requirements detected." msgstr "Неоствариви ЛУКС2 захтеви су откривени." -#: lib/luks2/luks2_json_metadata.c:3028 +#: lib/luks2/luks2_json_metadata.c:3045 msgid "Operation incompatible with device marked for legacy reencryption. Aborting." msgstr "Радња је несагласна са уређајем означеним за старо поновно шифровање. Прекидам." -#: lib/luks2/luks2_json_metadata.c:3030 +#: lib/luks2/luks2_json_metadata.c:3047 msgid "Operation incompatible with device marked for LUKS2 reencryption. Aborting." msgstr "Радња је несагласна са уређајем означеним за ЛУКС2 поновно шифровање. Прекидам." -#: lib/luks2/luks2_json_metadata.c:3032 +#: lib/luks2/luks2_json_metadata.c:3049 msgid "Operation incompatible with device using OPAL. Aborting." msgstr "Радња је несагласна са уређајем који користи OPAL. Прекидам." -#: lib/luks2/luks2_json_metadata.c:3034 +#: lib/luks2/luks2_json_metadata.c:3051 msgid "Operation incompatible with device using inline HW tags. Aborting." msgstr "Радња је несагласна са уређајем који користи унутарње HW ознаке. Прекидам." @@ -1756,22 +1747,22 @@ msgstr "Нема довољно доступне меморије за отва msgid "Keyslot open failed." msgstr "Отварање утора кључа није успело." -#: lib/luks2/luks2_keyslot_luks2.c:42 lib/luks2/luks2_keyslot_luks2.c:99 +#: lib/luks2/luks2_keyslot_luks2.c:40 lib/luks2/luks2_keyslot_luks2.c:77 #, c-format -msgid "Cannot use %s-%s cipher for keyslot encryption." -msgstr "Не могу користити шифрер „%s-%s“ за шифровање утора кључа." +msgid "Cannot use %s cipher for keyslot encryption." +msgstr "Не могу користити шифрер „%s“ за шифровање утора кључа." -#: lib/luks2/luks2_keyslot_luks2.c:262 +#: lib/luks2/luks2_keyslot_luks2.c:219 msgid "Not enough memory for keyslot key derivation." msgstr "Нема довољно меморије за изведбу кључа утора кључа." -#: lib/luks2/luks2_keyslot_luks2.c:276 lib/luks2/luks2_keyslot_luks2.c:405 -#: lib/luks2/luks2_keyslot_reenc.c:434 lib/luks2/luks2_reencrypt.c:2733 +#: lib/luks2/luks2_keyslot_luks2.c:233 lib/luks2/luks2_keyslot_luks2.c:358 +#: lib/luks2/luks2_keyslot_reenc.c:434 lib/luks2/luks2_reencrypt.c:2734 #, c-format msgid "Hash algorithm %s is not available." msgstr "Алгоритам хеша „%s“ није доступан." -#: lib/luks2/luks2_keyslot_luks2.c:522 +#: lib/luks2/luks2_keyslot_luks2.c:475 msgid "No space for new keyslot." msgstr "Нема простора за нови утор кључа." @@ -1788,335 +1779,335 @@ msgstr "Не могу да освежим врсту гипкости. Нова msgid "Failed to refresh reencryption verification digest." msgstr "Нисам успео да освежим упит потврђивања поновног шифровања." -#: lib/luks2/luks2_luks1_convert.c:532 +#: lib/luks2/luks2_luks1_convert.c:498 #, c-format msgid "Cannot check status of device with uuid: %s." msgstr "Не могу да проверим стање уређаја са ујиб-ом: %s." -#: lib/luks2/luks2_luks1_convert.c:558 +#: lib/luks2/luks2_luks1_convert.c:524 msgid "Unable to convert header with LUKSMETA additional metadata." msgstr "Не могу да претворим заглавље са „LUKSMETA“ додатним метаподацима." -#: lib/luks2/luks2_luks1_convert.c:590 lib/luks2/luks2_reencrypt.c:3893 +#: lib/luks2/luks2_luks1_convert.c:556 lib/luks2/luks2_reencrypt.c:3894 #, c-format msgid "Unable to use cipher specification %s-%s for LUKS2." msgstr "Не могу да користим спецификацију шифрера „%s-%s“ за ЛУКС2." -#: lib/luks2/luks2_luks1_convert.c:599 +#: lib/luks2/luks2_luks1_convert.c:565 #, c-format msgid "Unable to use cipher specification %s-%s for LUKS2 keyslot." msgstr "Не могу да користим спецификацију шифрера „%s-%s“ за LUKS2 утор кључа." -#: lib/luks2/luks2_luks1_convert.c:614 +#: lib/luks2/luks2_luks1_convert.c:580 msgid "Unable to move keyslot area. Not enough space." msgstr "Не могу да преместим област утора кључа. Нема довољно простора." -#: lib/luks2/luks2_luks1_convert.c:653 +#: lib/luks2/luks2_luks1_convert.c:627 msgid "Cannot convert to LUKS2 format - invalid metadata." msgstr "Не могу да претворим у ЛУКС2 запис – неисправни метаподаци." -#: lib/luks2/luks2_luks1_convert.c:670 +#: lib/luks2/luks2_luks1_convert.c:644 msgid "Unable to move keyslot area. LUKS2 keyslots area too small." msgstr "Не могу да преместим област утора кључа. Област ЛУКС2 утора кључа је премала." -#: lib/luks2/luks2_luks1_convert.c:676 lib/luks2/luks2_luks1_convert.c:1006 +#: lib/luks2/luks2_luks1_convert.c:650 lib/luks2/luks2_luks1_convert.c:980 msgid "Unable to move keyslot area." msgstr "Не могу да преместим област утора кључа." -#: lib/luks2/luks2_luks1_convert.c:791 +#: lib/luks2/luks2_luks1_convert.c:765 msgid "Cannot convert to LUKS1 format - default segment encryption sector size is not 512 bytes." msgstr "Не могу да претворим у ЛУКС1 запис – основна величина подеока 512 bytes." -#: lib/luks2/luks2_luks1_convert.c:799 +#: lib/luks2/luks2_luks1_convert.c:773 msgid "Cannot convert to LUKS1 format - key slot digests are not LUKS1 compatible." msgstr "Не могу да претворим у ЛУКС1 запис – прегледи утора кључа нису ЛУКС1 сагласни." -#: lib/luks2/luks2_luks1_convert.c:813 +#: lib/luks2/luks2_luks1_convert.c:787 #, c-format msgid "Cannot convert to LUKS1 format - device uses wrapped key cipher %s." msgstr "Не могу да претворим у ЛУКС1 запис – уређај користи умотаног шифрера кључа „%s“." -#: lib/luks2/luks2_luks1_convert.c:818 +#: lib/luks2/luks2_luks1_convert.c:792 msgid "Cannot convert to LUKS1 format - device uses more segments." msgstr "Не могу да претворим у ЛУКС2 запис – уређај користи више подеока." -#: lib/luks2/luks2_luks1_convert.c:826 +#: lib/luks2/luks2_luks1_convert.c:800 #, c-format msgid "Cannot convert to LUKS1 format - LUKS2 header contains %u token(s)." msgstr "Не могу да претворим у ЛУКС1 запис – ЛУКС2 заглавље садржи %u скупину(е)." -#: lib/luks2/luks2_luks1_convert.c:832 +#: lib/luks2/luks2_luks1_convert.c:806 msgid "Cannot convert to LUKS1 format - there are no active keyslots." msgstr "Не могу да претворим у ЛУКС2 запис – нема више активних утора кључа." -#: lib/luks2/luks2_luks1_convert.c:844 +#: lib/luks2/luks2_luks1_convert.c:818 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is in invalid state." msgstr "Не могу да претворим у ЛУКС1 запис – утор кључа %u је у неисправном стању." -#: lib/luks2/luks2_luks1_convert.c:849 +#: lib/luks2/luks2_luks1_convert.c:823 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is unbound." msgstr "Не могу да претворим у ЛУКС1 запис – утор кључа %u је несвезан." -#: lib/luks2/luks2_luks1_convert.c:854 +#: lib/luks2/luks2_luks1_convert.c:828 #, c-format msgid "Cannot convert to LUKS1 format - slot %u (over maximum slots) is still active." msgstr "Не могу да претворим у ЛУКС1 запис – утор %u (преко максимума утора) је још активан." -#: lib/luks2/luks2_luks1_convert.c:859 +#: lib/luks2/luks2_luks1_convert.c:833 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is not LUKS1 compatible." msgstr "Не могу да претворим у ЛУКС1 запис – утор кључа %u није ЛУКС1 сагласан." -#: lib/luks2/luks2_reencrypt.c:1198 +#: lib/luks2/luks2_reencrypt.c:1199 #, c-format msgid "Hotzone size must be multiple of calculated zone alignment (%zu bytes)." msgstr "Величина вруће зоне мора бити умножак прорачунатог поравнања зоне (%zu бајта)." -#: lib/luks2/luks2_reencrypt.c:1203 +#: lib/luks2/luks2_reencrypt.c:1204 #, c-format msgid "Device size must be multiple of calculated zone alignment (%zu bytes)." msgstr "Величина уређаја мора бити производ прорачунатог поравнања зоне (%zu бајта)." -#: lib/luks2/luks2_reencrypt.c:1410 lib/luks2/luks2_reencrypt.c:1596 -#: lib/luks2/luks2_reencrypt.c:1679 lib/luks2/luks2_reencrypt.c:1721 -#: lib/luks2/luks2_reencrypt.c:4080 +#: lib/luks2/luks2_reencrypt.c:1411 lib/luks2/luks2_reencrypt.c:1597 +#: lib/luks2/luks2_reencrypt.c:1680 lib/luks2/luks2_reencrypt.c:1722 +#: lib/luks2/luks2_reencrypt.c:4081 msgid "Failed to initialize old segment storage wrapper." msgstr "Нисам успео да покренем старог увијача смештаја подеока." -#: lib/luks2/luks2_reencrypt.c:1424 lib/luks2/luks2_reencrypt.c:1574 +#: lib/luks2/luks2_reencrypt.c:1425 lib/luks2/luks2_reencrypt.c:1575 msgid "Failed to initialize new segment storage wrapper." msgstr "Нисам успео да покренем новог увијача смештаја подеока." -#: lib/luks2/luks2_reencrypt.c:1550 lib/luks2/luks2_reencrypt.c:4092 +#: lib/luks2/luks2_reencrypt.c:1551 lib/luks2/luks2_reencrypt.c:4093 msgid "Failed to initialize hotzone protection." msgstr "Нисам успео да покренем заштиту вруће зоне." -#: lib/luks2/luks2_reencrypt.c:1623 +#: lib/luks2/luks2_reencrypt.c:1624 msgid "Failed to read checksums for current hotzone." msgstr "Нисам успео да прочитам суму провере за текућу врућу зону." -#: lib/luks2/luks2_reencrypt.c:1630 lib/luks2/luks2_reencrypt.c:4107 +#: lib/luks2/luks2_reencrypt.c:1631 lib/luks2/luks2_reencrypt.c:4108 #, c-format msgid "Failed to read hotzone area starting at %." msgstr "Нисам успео да прочитам област вруће зоне са почетком на %." -#: lib/luks2/luks2_reencrypt.c:1649 +#: lib/luks2/luks2_reencrypt.c:1650 #, c-format msgid "Failed to decrypt sector %zu." msgstr "Нисам успео да дешифрујем област %zu." -#: lib/luks2/luks2_reencrypt.c:1655 +#: lib/luks2/luks2_reencrypt.c:1656 #, c-format msgid "Failed to recover sector %zu." msgstr "Нисам успео да опоравим област %zu." -#: lib/luks2/luks2_reencrypt.c:2208 +#: lib/luks2/luks2_reencrypt.c:2209 #, c-format msgid "Source and target device sizes don't match. Source %, target: %." msgstr "Величине изворног и циљног уређаја не одговарају. Извор %, мета: %." -#: lib/luks2/luks2_reencrypt.c:2310 +#: lib/luks2/luks2_reencrypt.c:2311 #, c-format msgid "Failed to activate hotzone device %s." msgstr "Нисам успео да активирам уређај вруће зоне „%s“." -#: lib/luks2/luks2_reencrypt.c:2322 +#: lib/luks2/luks2_reencrypt.c:2323 #, c-format msgid "Failed to allocate hotzone device %s." msgstr "Нисам успео да доделим уређај вруће зоне „%s“." -#: lib/luks2/luks2_reencrypt.c:2339 +#: lib/luks2/luks2_reencrypt.c:2340 #, c-format msgid "Failed to activate overlay device %s with actual origin table." msgstr "Нисам успео да активирам уређај преклапања „%s“ са стварном табелом порекла." -#: lib/luks2/luks2_reencrypt.c:2346 +#: lib/luks2/luks2_reencrypt.c:2347 #, c-format msgid "Failed to load new mapping for device %s." msgstr "Нисам успео да учитам ново мапирање за уређај „%s“." -#: lib/luks2/luks2_reencrypt.c:2418 +#: lib/luks2/luks2_reencrypt.c:2419 msgid "Failed to refresh reencryption devices stack." msgstr "Нисам успео да освежим спремник уређаја поновног шифровања." -#: lib/luks2/luks2_reencrypt.c:2615 +#: lib/luks2/luks2_reencrypt.c:2616 msgid "Failed to set new keyslots area size." msgstr "Нисам успео да подесим нову величину области утора кључа." -#: lib/luks2/luks2_reencrypt.c:2751 +#: lib/luks2/luks2_reencrypt.c:2752 #, c-format msgid "Data shift value is not aligned to encryption sector size (% bytes)." msgstr "Вредност помака података није поравната на величину одељка шифровања (% бајта)." -#: lib/luks2/luks2_reencrypt.c:2788 src/utils_reencrypt.c:162 +#: lib/luks2/luks2_reencrypt.c:2789 src/utils_reencrypt.c:162 #, c-format msgid "Unsupported resilience mode %s" msgstr "Неподржан режим гипкости „%s“" -#: lib/luks2/luks2_reencrypt.c:2824 +#: lib/luks2/luks2_reencrypt.c:2825 msgid "Moved segment size can not be greater than data shift value." msgstr "Величина премештеног подеока не може бити већа од вредности помака података." -#: lib/luks2/luks2_reencrypt.c:2866 +#: lib/luks2/luks2_reencrypt.c:2867 msgid "Invalid reencryption resilience parameters." msgstr "Неисправни параметри гипкости поновног шифровања." -#: lib/luks2/luks2_reencrypt.c:2888 +#: lib/luks2/luks2_reencrypt.c:2889 #, c-format msgid "Moved segment too large. Requested size %, available space for: %." msgstr "Премештени подеок је превелик. Захтевана величина је %, доступан простор за: %." -#: lib/luks2/luks2_reencrypt.c:2977 +#: lib/luks2/luks2_reencrypt.c:2978 msgid "Failed to clear table." msgstr "Нисам успео да очистим табелу." -#: lib/luks2/luks2_reencrypt.c:3063 +#: lib/luks2/luks2_reencrypt.c:3064 #, c-format msgid "Data shift (% sectors) is less than future data offset (% sectors)." msgstr "Помак података (% одељка) је мањи од будућег помераја података (% одељка)." -#: lib/luks2/luks2_reencrypt.c:3078 lib/luks2/luks2_reencrypt.c:3085 +#: lib/luks2/luks2_reencrypt.c:3079 lib/luks2/luks2_reencrypt.c:3086 msgid "Reduced data size is larger than real device size." msgstr "Величина умањених података је већа од стварне величине уређаја." -#: lib/luks2/luks2_reencrypt.c:3095 +#: lib/luks2/luks2_reencrypt.c:3096 #, c-format msgid "Data device is not aligned to encryption sector size (% bytes)." msgstr "Уређај података није поравнат на величину одељка шифровања (% бајта)." -#: lib/luks2/luks2_reencrypt.c:3125 lib/luks2/luks2_reencrypt.c:3643 -#: lib/luks2/luks2_reencrypt.c:3664 +#: lib/luks2/luks2_reencrypt.c:3126 lib/luks2/luks2_reencrypt.c:3644 +#: lib/luks2/luks2_reencrypt.c:3665 #, c-format msgid "Failed to open %s in exclusive mode (already mapped or mounted)." msgstr "Нисам успео да отворим „%s“ у искључивом режиму (већ мапиран или прикачен)." -#: lib/luks2/luks2_reencrypt.c:3332 +#: lib/luks2/luks2_reencrypt.c:3333 msgid "Device not marked for LUKS2 reencryption." msgstr "Уређај није означен за ЛУКС2 поновно шифровање." -#: lib/luks2/luks2_reencrypt.c:3349 lib/luks2/luks2_reencrypt.c:4403 +#: lib/luks2/luks2_reencrypt.c:3350 lib/luks2/luks2_reencrypt.c:4404 msgid "Failed to load LUKS2 reencryption context." msgstr "Нисам успео да учитам контекст ЛУКС2 поновног шифровања." -#: lib/luks2/luks2_reencrypt.c:3444 lib/luks2/luks2_reencrypt.c:3784 +#: lib/luks2/luks2_reencrypt.c:3445 lib/luks2/luks2_reencrypt.c:3785 msgid "Device is not in reencryption." msgstr "Уређај није у поновном шифровању." -#: lib/luks2/luks2_reencrypt.c:3451 lib/luks2/luks2_reencrypt.c:3791 +#: lib/luks2/luks2_reencrypt.c:3452 lib/luks2/luks2_reencrypt.c:3792 msgid "Reencryption process is already running." msgstr "Процес поновног шифровања је већ покренут." -#: lib/luks2/luks2_reencrypt.c:3453 lib/luks2/luks2_reencrypt.c:3793 +#: lib/luks2/luks2_reencrypt.c:3454 lib/luks2/luks2_reencrypt.c:3794 msgid "Failed to acquire reencryption lock." msgstr "Нисам успео да остварим закључавање поновног шифровања." -#: lib/luks2/luks2_reencrypt.c:3471 +#: lib/luks2/luks2_reencrypt.c:3472 msgid "Cannot proceed with reencryption. Run reencryption recovery first." msgstr "Не могу да наставим са поновним шифровањем. Прво покрените опоравак поновног шифровања." -#: lib/luks2/luks2_reencrypt.c:3607 +#: lib/luks2/luks2_reencrypt.c:3608 msgid "Active device size and requested reencryption size don't match." msgstr "Активна величина уређаја и величина затраженог поновног шифровања не одговарају." -#: lib/luks2/luks2_reencrypt.c:3621 +#: lib/luks2/luks2_reencrypt.c:3622 msgid "Illegal device size requested in reencryption parameters." msgstr "Неисправна величина уређаја је затражена у параметрима поновног шифровања." -#: lib/luks2/luks2_reencrypt.c:3723 +#: lib/luks2/luks2_reencrypt.c:3724 msgid "Reencryption in-progress. Cannot perform recovery." msgstr "Поновно шифровање је у току. Не могу да обавим опоравак." -#: lib/luks2/luks2_reencrypt.c:3744 +#: lib/luks2/luks2_reencrypt.c:3745 msgid "LUKS2 reencryption recovery failed." msgstr "Опоравак ЛУКС2 поновног шифровања није успело." -#: lib/luks2/luks2_reencrypt.c:3877 lib/luks2/luks2_reencrypt.c:4356 +#: lib/luks2/luks2_reencrypt.c:3878 lib/luks2/luks2_reencrypt.c:4357 msgid "Failed to initialize reencryption device stack." msgstr "Нисам успео да покренем поновно шифровање спремника уређаја." -#: lib/luks2/luks2_reencrypt.c:3910 +#: lib/luks2/luks2_reencrypt.c:3911 msgid "LUKS2 reencryption already initialized in metadata." msgstr "ЛУКС2 поновно шифровање је већ покренуто у метаподацима." -#: lib/luks2/luks2_reencrypt.c:3918 +#: lib/luks2/luks2_reencrypt.c:3919 msgid "Failed to initialize LUKS2 reencryption in metadata." msgstr "Нисам успео да покренем ЛУКС2 поновно шифровање у метаподацима." -#: lib/luks2/luks2_reencrypt.c:3971 lib/luks2/luks2_reencrypt.c:4003 -#: lib/luks2/luks2_reencrypt.c:4033 +#: lib/luks2/luks2_reencrypt.c:3972 lib/luks2/luks2_reencrypt.c:4004 +#: lib/luks2/luks2_reencrypt.c:4034 msgid "Reencryption is not supported for DAX (persistent memory) devices." msgstr "Поновно шифровање није подржано за DAX (сталне меморије) уређаје." -#: lib/luks2/luks2_reencrypt.c:4062 +#: lib/luks2/luks2_reencrypt.c:4063 msgid "Failed to set device segments for next reencryption hotzone." msgstr "Нисам успео да поставим подеоке уређаја за следећу врућу зону поновног шифровања." -#: lib/luks2/luks2_reencrypt.c:4115 +#: lib/luks2/luks2_reencrypt.c:4116 msgid "Failed to write reencryption resilience metadata." msgstr "Нисам успео да запишем метаподатаке гипкости поновног шифровања." -#: lib/luks2/luks2_reencrypt.c:4122 +#: lib/luks2/luks2_reencrypt.c:4123 msgid "Decryption failed." msgstr "Дешифровање није успело." -#: lib/luks2/luks2_reencrypt.c:4127 +#: lib/luks2/luks2_reencrypt.c:4128 #, c-format msgid "Failed to write hotzone area starting at %." msgstr "Нисам успео да запишем област вруће зоне са почетком на %." -#: lib/luks2/luks2_reencrypt.c:4132 +#: lib/luks2/luks2_reencrypt.c:4133 msgid "Failed to sync data." msgstr "Нисам успео да усагласим податке." -#: lib/luks2/luks2_reencrypt.c:4140 +#: lib/luks2/luks2_reencrypt.c:4141 msgid "Failed to update metadata after current reencryption hotzone completed." msgstr "Нисам успео да освежим метаподатке након тренутно завршеног поновног шифровања вруће зоне." -#: lib/luks2/luks2_reencrypt.c:4229 +#: lib/luks2/luks2_reencrypt.c:4230 msgid "Failed to write LUKS2 metadata." msgstr "Нисам успео да запишем ЛУКС2 метаподатке." -#: lib/luks2/luks2_reencrypt.c:4252 +#: lib/luks2/luks2_reencrypt.c:4253 msgid "Failed to wipe unused data device area." msgstr "Нисам успео да обришем област уређаја података." -#: lib/luks2/luks2_reencrypt.c:4258 +#: lib/luks2/luks2_reencrypt.c:4259 #, c-format msgid "Failed to remove unused (unbound) keyslot %d." msgstr "Нисам успео да уклоним некоришћени (несвезани) утор кључа %d." -#: lib/luks2/luks2_reencrypt.c:4268 +#: lib/luks2/luks2_reencrypt.c:4269 msgid "Failed to remove reencryption keyslot." msgstr "Нисам успео да уклоним утор кључа поновног шифровања." -#: lib/luks2/luks2_reencrypt.c:4278 +#: lib/luks2/luks2_reencrypt.c:4279 #, c-format msgid "Fatal error while reencrypting chunk starting at %, % sectors long." msgstr "Кобна грешка приликом поновног шифровања комада који почиње на %, % подеока дуг." -#: lib/luks2/luks2_reencrypt.c:4282 +#: lib/luks2/luks2_reencrypt.c:4283 msgid "Online reencryption failed." msgstr "Поновно шифровање на мрежи није успело." -#: lib/luks2/luks2_reencrypt.c:4287 +#: lib/luks2/luks2_reencrypt.c:4288 msgid "Do not resume the device unless replaced with error target manually." msgstr "Не наставља са уређајем осим ако није ручно замењен метом грешке." -#: lib/luks2/luks2_reencrypt.c:4339 +#: lib/luks2/luks2_reencrypt.c:4340 msgid "Cannot proceed with reencryption. Unexpected reencryption status." msgstr "Не могу да наставим са поновним шифровањем. Неочекивано стање поновног шифровања." -#: lib/luks2/luks2_reencrypt.c:4345 +#: lib/luks2/luks2_reencrypt.c:4346 msgid "Missing or invalid reencrypt context." msgstr "Недостаје или неисправан контекст поновног шифровања." -#: lib/luks2/luks2_reencrypt.c:4379 lib/luks2/luks2_reencrypt.c:4416 +#: lib/luks2/luks2_reencrypt.c:4380 lib/luks2/luks2_reencrypt.c:4417 msgid "Failed to update reencryption context." msgstr "Нисам успео да освежим контекст поновног шифровања." -#: lib/luks2/luks2_reencrypt_digest.c:401 +#: lib/luks2/luks2_reencrypt_digest.c:402 msgid "Reencryption metadata is invalid." msgstr "Метаподаци поновног шифровања нису исправни." @@ -2148,8 +2139,8 @@ msgstr "Параметри шифровања утора кључа се мог msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encryption." msgstr "Параметри шифровања утора кључа нису сагласни са шифровањем LUKS2 утора кључа." -#: src/cryptsetup.c:150 src/cryptsetup.c:1178 src/cryptsetup.c:1545 -#: src/utils_reencrypt.c:1887 src/utils_reencrypt_luks1.c:502 +#: src/cryptsetup.c:150 src/cryptsetup.c:1180 src/cryptsetup.c:1545 +#: src/utils_reencrypt.c:1916 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." msgstr "Није откривен познат образац одреднице шифрера." @@ -2177,7 +2168,7 @@ msgid "WARNING: The --keyfile-size option is being ignored, the read size is the msgstr "УПОЗОРЕЊЕ: Опција „--keyfile-size“ је занемарена, величина читања је иста као величина кључа шифровања.\n" #: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 -#: src/integritysetup.c:188 src/utils_reencrypt.c:2138 +#: src/integritysetup.c:189 src/utils_reencrypt.c:2167 #, c-format msgid "Blkid scan failed for %s." msgstr "Скенирање ид-а блока није успело за „%s“." @@ -2189,9 +2180,9 @@ msgstr "Открих потпис(е) уређаја на „%s“. Даље н #: src/cryptsetup.c:238 src/cryptsetup.c:1261 src/cryptsetup.c:1309 #: src/cryptsetup.c:1382 src/cryptsetup.c:1522 src/cryptsetup.c:1610 -#: src/cryptsetup.c:2495 src/cryptsetup.c:2924 src/integritysetup.c:178 -#: src/utils_reencrypt.c:111 src/utils_reencrypt.c:457 -#: src/utils_reencrypt.c:925 +#: src/cryptsetup.c:2495 src/cryptsetup.c:2925 src/integritysetup.c:179 +#: src/utils_reencrypt.c:111 src/utils_reencrypt.c:459 +#: src/utils_reencrypt.c:927 msgid "Operation aborted.\n" msgstr "Радња је обустављена.\n" @@ -2199,36 +2190,36 @@ msgstr "Радња је обустављена.\n" msgid "Option --key-file is required." msgstr "Захтевана је опција „--key-file“." -#: src/cryptsetup.c:377 +#: src/cryptsetup.c:378 msgid "Enter VeraCrypt PIM: " msgstr "Унесите „VeraCrypt PIM“: " -#: src/cryptsetup.c:386 +#: src/cryptsetup.c:387 msgid "Invalid PIM value: parse error." msgstr "Неисправна „PIM“ вредност: грешка обраде." -#: src/cryptsetup.c:389 +#: src/cryptsetup.c:390 msgid "Invalid PIM value: 0." msgstr "Неисправна „PIM“ вредност: 0." -#: src/cryptsetup.c:392 +#: src/cryptsetup.c:393 msgid "Invalid PIM value: outside of range." msgstr "Неисправна „PIM“ вредност: изван опсега." -#: src/cryptsetup.c:415 +#: src/cryptsetup.c:416 msgid "No device header detected with this passphrase." msgstr "Није откривено заглавље уређаја са овом пропусном речи." -#: src/cryptsetup.c:492 src/cryptsetup.c:677 +#: src/cryptsetup.c:493 src/cryptsetup.c:678 #, c-format msgid "Device %s is not a valid BITLK device." msgstr "Уређај „%s“ није исправан „BITLK“ уређај." -#: src/cryptsetup.c:500 +#: src/cryptsetup.c:501 msgid "Cannot determine volume key size for BITLK, please use --key-size option." msgstr "Не могу да одредим величину кључа за „BITLK“, користите „--key-size“ опцију." -#: src/cryptsetup.c:546 +#: src/cryptsetup.c:547 msgid "" "Header dump with volume key is sensitive information\n" "which allows access to encrypted partition without passphrase.\n" @@ -2238,7 +2229,7 @@ msgstr "" "који омогућава приступ шифрованој партицији без лозинке.\n" "Овај избачај треба увек бити смештен шифрован на безбедном месту." -#: src/cryptsetup.c:613 src/cryptsetup.c:699 src/cryptsetup.c:2520 +#: src/cryptsetup.c:614 src/cryptsetup.c:700 src/cryptsetup.c:2520 msgid "" "The header dump with volume key is sensitive information\n" "that allows access to encrypted partition without a passphrase.\n" @@ -2248,83 +2239,87 @@ msgstr "" "који омогућава приступ шифрованој партицији без лозинке.\n" "Овај избачај треба бити смештен шифрован на безбедном месту." -#: src/cryptsetup.c:754 src/cryptsetup.c:786 +#: src/cryptsetup.c:755 src/cryptsetup.c:787 #, c-format msgid "Device %s is not a valid FVAULT2 device." msgstr "Уређај „%s“ није исправан FVAULT2 уређај." -#: src/cryptsetup.c:794 +#: src/cryptsetup.c:795 msgid "Cannot determine volume key size for FVAULT2, please use --key-size option." msgstr "Не могу да одредим величину кључа волумена за FVAULT2, користите „--key-size“ опцију." -#: src/cryptsetup.c:848 src/veritysetup.c:317 src/integritysetup.c:416 +#: src/cryptsetup.c:849 src/veritysetup.c:317 src/integritysetup.c:424 #, c-format msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "Уређај „%s“ је још увек активан и заказан за одложено уклањање.\n" -#: src/cryptsetup.c:881 src/cryptsetup.c:1808 src/cryptsetup.c:2082 -#: src/cryptsetup.c:2229 src/cryptsetup.c:2648 src/cryptsetup.c:2729 -#: src/cryptsetup.c:3262 +#: src/cryptsetup.c:882 src/cryptsetup.c:1808 src/cryptsetup.c:2082 +#: src/cryptsetup.c:2229 src/cryptsetup.c:2648 src/cryptsetup.c:2730 +#: src/cryptsetup.c:3263 #, c-format msgid "Failed to set external tokens path %s." msgstr "Нисам успео да поставим спољну путању скупина „%s“." -#: src/cryptsetup.c:890 +#: src/cryptsetup.c:891 msgid "Resize of active device requires volume key in keyring but --disable-keyring option is set." msgstr "Сразмеравање активног уређаја захтева кључ волумена у привеску кључева али је постављена „--disable-keyring“ опција." -#: src/cryptsetup.c:1057 +#: src/cryptsetup.c:1058 msgid "Benchmark interrupted." msgstr "Оцењивање је прекинуто." -#: src/cryptsetup.c:1078 +#: src/cryptsetup.c:1079 #, c-format msgid "PBKDF2-%-9s N/A\n" msgstr "„PBKDF2-%-9s“ Н/Д\n" -#: src/cryptsetup.c:1080 +#: src/cryptsetup.c:1081 #, c-format msgid "PBKDF2-%-9s %7u iterations per second for %zu-bit key\n" msgstr "„PBKDF2-%-9s“ %7u понављања у секунди за %zu-битни кључ\n" -#: src/cryptsetup.c:1094 +#: src/cryptsetup.c:1095 #, c-format msgid "%-10s N/A\n" msgstr "%-10s Н/Д\n" -#: src/cryptsetup.c:1096 +#: src/cryptsetup.c:1097 #, c-format msgid "%-10s %4u iterations, %5u memory, %1u parallel threads (CPUs) for %zu-bit key (requested %u ms time)\n" msgstr "%-10s %4u понављања, %5u меморије, %1u паралелних нити (процесора) за %zu-битни кључ (захтева се %u ms време)\n" -#: src/cryptsetup.c:1120 +#: src/cryptsetup.c:1121 msgid "Result of benchmark is not reliable." msgstr "Резултат оцењивања није поуздан." -#: src/cryptsetup.c:1170 +#: src/cryptsetup.c:1172 msgid "# Tests are approximate using memory only (no storage IO).\n" msgstr "# Пробе су приближне користећи само меморију (без УИ смештаја).\n" #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1195 +#: src/cryptsetup.c:1197 #, c-format msgid "#%*s Algorithm | Key | Encryption | Decryption\n" msgstr "#%*s Алгоритам | Кључ | Шифровање | Дешифровање\n" -#: src/cryptsetup.c:1203 +#: src/cryptsetup.c:1205 #, c-format msgid "Cipher %s (with %i bits key) is not available." msgstr "Шифрер „%s“ (са %i битним кључем) није доступан." #. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. -#: src/cryptsetup.c:1222 +#: src/cryptsetup.c:1226 msgid "# Algorithm | Key | Encryption | Decryption\n" msgstr "# Алгоритам | Кључ | Шифровање | Дешифровање\n" -#: src/cryptsetup.c:1233 +#: src/cryptsetup.c:1239 msgid "N/A" msgstr "Недоступно" +#: src/cryptsetup.c:1242 +msgid "# Cipher speed test is not available.\n" +msgstr "# Проба брзине шифрера није доступна.\n" + #: src/cryptsetup.c:1258 msgid "" "Unprotected LUKS2 reencryption metadata detected. Please verify the reencryption operation is desirable (see luksDump output)\n" @@ -2353,7 +2348,7 @@ msgstr "Унесите пропусну реч за опоравак понов msgid "Really try to repair LUKS device header?" msgstr "Стварно да покушам да поправим заглавље ЛУКС уређаја?" -#: src/cryptsetup.c:1409 src/integritysetup.c:76 src/integritysetup.c:244 +#: src/cryptsetup.c:1409 src/integritysetup.c:76 src/integritysetup.c:246 msgid "" "\n" "Wipe interrupted." @@ -2361,7 +2356,7 @@ msgstr "" "\n" "Брисање је прекинуто." -#: src/cryptsetup.c:1414 src/integritysetup.c:81 src/integritysetup.c:289 +#: src/cryptsetup.c:1414 src/integritysetup.c:81 src/integritysetup.c:291 msgid "" "Wiping device to initialize integrity checksum.\n" "You can interrupt this by pressing CTRL+c (rest of not wiped device will contain invalid checksum).\n" @@ -2403,9 +2398,9 @@ msgstr "Датотека заглавља не постоји, да ли жел msgid "Cannot create header file %s." msgstr "Не могу да направим датотеку заглавља „%s“." -#: src/cryptsetup.c:1555 src/integritysetup.c:126 src/integritysetup.c:141 -#: src/integritysetup.c:150 src/integritysetup.c:328 src/integritysetup.c:336 -#: src/integritysetup.c:346 +#: src/cryptsetup.c:1555 src/integritysetup.c:127 src/integritysetup.c:142 +#: src/integritysetup.c:151 src/integritysetup.c:330 src/integritysetup.c:338 +#: src/integritysetup.c:348 msgid "No known integrity specification pattern detected." msgstr "Није откривен познат образац одреднице целовитости." @@ -2418,7 +2413,7 @@ msgstr "Не могу да користим наведену величину к msgid "Cannot use %s as on-disk header." msgstr "Не могу да користим „%s“ као заглавље на-диску." -#: src/cryptsetup.c:1604 src/integritysetup.c:172 +#: src/cryptsetup.c:1604 src/integritysetup.c:173 #, c-format msgid "This will overwrite data on %s irrevocably." msgstr "Ово ће неповратно да препише податке на „%s“." @@ -2441,12 +2436,12 @@ msgstr "Смањени померај података је допуштен с msgid "LUKS file container %s is too small for activation, there is no remaining space for data." msgstr "Садржалац ЛУКС датотеке „%s“ је премали за активирање, није преостао простор за податке." -#: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:277 -#: src/utils_reencrypt.c:369 src/utils_reencrypt.c:1907 +#: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:278 +#: src/utils_reencrypt.c:371 src/utils_reencrypt.c:1936 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "Не могу да одредим величину кључа за ЛУКС без утора кључа, користите „--key-size“ опцију." -#: src/cryptsetup.c:1854 src/utils_reencrypt.c:303 +#: src/cryptsetup.c:1854 src/utils_reencrypt.c:304 msgid "Device requires two volume keys." msgstr "Уређај захтева два кључа волумена." @@ -2479,8 +2474,8 @@ msgstr "Радња је прекинута, утор кључа НИЈЕ обр msgid "Enter passphrase to be deleted: " msgstr "Унесите пропусну реч за брисање: " -#: src/cryptsetup.c:2074 src/cryptsetup.c:2426 src/cryptsetup.c:3086 -#: src/cryptsetup.c:3253 +#: src/cryptsetup.c:2074 src/cryptsetup.c:2426 src/cryptsetup.c:3087 +#: src/cryptsetup.c:3254 #, c-format msgid "Device %s is not a valid LUKS2 device." msgstr "Уређај „%s“ није исправан ЛУКС2 уређај." @@ -2537,52 +2532,52 @@ msgstr "" "Избачај заглавља са кључем волумена је осетљив податак\n" "Овај избачај треба увек бити смештен шифрован на безбедном месту." -#: src/cryptsetup.c:2676 src/cryptsetup.c:2712 +#: src/cryptsetup.c:2676 src/cryptsetup.c:2713 #, c-format msgid "%s is not active %s device name." msgstr "„%s“ није назив активног „%s“ уређаја." -#: src/cryptsetup.c:2707 +#: src/cryptsetup.c:2708 #, c-format msgid "%s is not active LUKS device name or header is missing." msgstr "„%s“ није назив активног ЛУКС уређаја или недостаје заглавље." -#: src/cryptsetup.c:2784 src/cryptsetup.c:2803 +#: src/cryptsetup.c:2785 src/cryptsetup.c:2804 msgid "Option --header-backup-file is required." msgstr "Захтевана је опција „--header-backup-file“." -#: src/cryptsetup.c:2834 +#: src/cryptsetup.c:2835 #, c-format msgid "%s is not cryptsetup managed device." msgstr "„%s“ није уређај управљан криптоподешавањем." -#: src/cryptsetup.c:2845 +#: src/cryptsetup.c:2846 #, c-format msgid "Refresh is not supported for device type %s" msgstr "Освежавање није подржано за врсту уређаја „%s“" -#: src/cryptsetup.c:2895 +#: src/cryptsetup.c:2896 #, c-format msgid "Unrecognized metadata device type %s." msgstr "Непозната врста уређаја метаподатака „%s“." -#: src/cryptsetup.c:2897 +#: src/cryptsetup.c:2898 msgid "Command requires device and mapped name as arguments." msgstr "Наредба захтева уређај и мапирани назив као аргумент." -#: src/cryptsetup.c:2915 +#: src/cryptsetup.c:2916 msgid "Enter OPAL PSID: " msgstr "Унесите OPAL ПСИД: " -#: src/cryptsetup.c:2915 +#: src/cryptsetup.c:2916 msgid "Enter OPAL Admin password: " msgstr "Унесите лозинку OPAL админа: " -#: src/cryptsetup.c:2923 +#: src/cryptsetup.c:2924 msgid "WARNING: WHOLE disk will be factory reset and all data will be lost! Continue?" msgstr "УПОЗОРЕЊЕ: ЧИТАВ диск биће враћен на фабричка подешавања и сви подаци биће изгубљени! Да наставим?" -#: src/cryptsetup.c:2966 +#: src/cryptsetup.c:2967 #, c-format msgid "" "This operation will erase all keyslots on device %s.\n" @@ -2591,363 +2586,363 @@ msgstr "" "Ова радња ће обрисати све уторе кључева на уређају „%s“.\n" "Уређај ће постати неупотребљив након ове радње." -#: src/cryptsetup.c:2973 +#: src/cryptsetup.c:2974 msgid "Operation aborted, keyslots were NOT wiped.\n" msgstr "Радња је прекинута, утори кључева НИСУ обрисани.\n" -#: src/cryptsetup.c:3012 +#: src/cryptsetup.c:3013 msgid "Invalid LUKS type, only luks1 and luks2 are supported." msgstr "Неисправна ЛУКС врста, само „luks1“ и „luks2“ су подржане." -#: src/cryptsetup.c:3028 +#: src/cryptsetup.c:3029 #, c-format msgid "Device is already %s type." msgstr "Уређај је већ „%s“ врсте." -#: src/cryptsetup.c:3035 +#: src/cryptsetup.c:3036 #, c-format msgid "This operation will convert %s to %s format.\n" msgstr "Ова радња ће претворити „%s“ у „%s“ запис.\n" -#: src/cryptsetup.c:3038 +#: src/cryptsetup.c:3039 msgid "Operation aborted, device was NOT converted.\n" msgstr "Радња је прекинута, уређај НИЈЕ претворен.\n" -#: src/cryptsetup.c:3078 +#: src/cryptsetup.c:3079 msgid "Option --priority, --label or --subsystem is missing." msgstr "Недостаје опција „--priority“, „--label“ или „--subsystem“." -#: src/cryptsetup.c:3112 src/cryptsetup.c:3152 src/cryptsetup.c:3172 +#: src/cryptsetup.c:3113 src/cryptsetup.c:3153 src/cryptsetup.c:3173 #, c-format msgid "Token %d is invalid." msgstr "Скупина „%d“ није исправна." -#: src/cryptsetup.c:3115 src/cryptsetup.c:3175 +#: src/cryptsetup.c:3116 src/cryptsetup.c:3176 #, c-format msgid "Token %d in use." msgstr "Скупина „%d“ је у употреби." -#: src/cryptsetup.c:3127 +#: src/cryptsetup.c:3128 #, c-format msgid "Failed to add luks2-keyring token %d." msgstr "Нисам успео да додам „luks2-keyring“ скупину „%d“." -#: src/cryptsetup.c:3138 src/cryptsetup.c:3201 +#: src/cryptsetup.c:3139 src/cryptsetup.c:3202 #, c-format msgid "Failed to assign token %d to keyslot %d." msgstr "Нисам успео да доделим скупину „%d“ утору кључа %d." -#: src/cryptsetup.c:3155 +#: src/cryptsetup.c:3156 #, c-format msgid "Token %d is not in use." msgstr "Скупина „%d“ није у употреби." -#: src/cryptsetup.c:3192 +#: src/cryptsetup.c:3193 msgid "Failed to import token from file." msgstr "Нисам успео да увезем скупину из датотеке." -#: src/cryptsetup.c:3217 +#: src/cryptsetup.c:3218 #, c-format msgid "Failed to get token %d for export." msgstr "Нисам успео да добавим скупину „%d“ за извоз." -#: src/cryptsetup.c:3230 +#: src/cryptsetup.c:3231 #, c-format msgid "Token %d is not assigned to keyslot %d." msgstr "Скупина „%d“ није додељена утору кључа %d." -#: src/cryptsetup.c:3232 src/cryptsetup.c:3239 +#: src/cryptsetup.c:3233 src/cryptsetup.c:3240 #, c-format msgid "Failed to unassign token %d from keyslot %d." msgstr "Нисам успео да поништим доделу скупине „%d“ из утора кључа %d." -#: src/cryptsetup.c:3298 +#: src/cryptsetup.c:3299 msgid "Option --tcrypt-hidden, --tcrypt-system or --tcrypt-backup is supported only for TCRYPT device." msgstr "Опција „--tcrypt-hidden“, „--tcrypt-system“ или „--tcrypt-backup“ је подржана само за ТКРИПТ уређај." -#: src/cryptsetup.c:3301 +#: src/cryptsetup.c:3302 msgid "Option --veracrypt or --disable-veracrypt is supported only for TCRYPT device type." msgstr "Опција „--veracrypt“ или „--disable-veracrypt“ је подржана само за ТКРИПТ врсту уређаја." -#: src/cryptsetup.c:3304 +#: src/cryptsetup.c:3305 msgid "Option --veracrypt-pim is supported only for VeraCrypt compatible devices." msgstr "Опција „--veracrypt-pim“ је подржана само за „VeraCrypt“ сагласне уређаје." -#: src/cryptsetup.c:3308 +#: src/cryptsetup.c:3309 msgid "Option --veracrypt-query-pim is supported only for VeraCrypt compatible devices." msgstr "Опција „--veracrypt-query-pim“ је подржана само за „VeraCrypt“ сагласне уређаје." -#: src/cryptsetup.c:3310 +#: src/cryptsetup.c:3311 msgid "The options --veracrypt-pim and --veracrypt-query-pim are mutually exclusive." msgstr "Опције „--veracrypt-pim“ и „--veracrypt-query-pim“ се узајамно искључују." -#: src/cryptsetup.c:3319 +#: src/cryptsetup.c:3320 msgid "Option --persistent is not allowed with --test-passphrase." msgstr "Опција „--persistent“ није допуштена са опцијом „--test-passphrase“." -#: src/cryptsetup.c:3322 +#: src/cryptsetup.c:3323 msgid "Options --refresh and --test-passphrase are mutually exclusive." msgstr "Опције „--refresh“ и „--test-passphrase“ се узајамно искључују." -#: src/cryptsetup.c:3325 +#: src/cryptsetup.c:3326 msgid "Option --shared is allowed only for open of plain device." msgstr "Опција „--shared“ је допуштена само за отварање обичног уређаја." -#: src/cryptsetup.c:3328 +#: src/cryptsetup.c:3329 msgid "Option --skip is supported only for open of plain and loopaes devices." msgstr "Опција „--skip“ је подржана само за отварање обичних и упетљаних уређаја." -#: src/cryptsetup.c:3331 +#: src/cryptsetup.c:3332 msgid "Option --offset with open action is only supported for plain and loopaes devices." msgstr "Опција „--offset“ са отвореном радњом је подржана само за обичне и упетљане уређаје." -#: src/cryptsetup.c:3334 +#: src/cryptsetup.c:3335 msgid "Option --tcrypt-hidden cannot be combined with --allow-discards." msgstr "Опција „--tcrypt-hidden“ не може бити обједињена са „--allow-discards“." -#: src/cryptsetup.c:3338 +#: src/cryptsetup.c:3339 msgid "Sector size option with open action is supported only for plain devices." msgstr "Опција величине одељка са отвореном радњом је подржана само за обичне уређаје." -#: src/cryptsetup.c:3342 +#: src/cryptsetup.c:3343 msgid "Large IV sectors option is supported only for opening plain type device with sector size larger than 512 bytes." msgstr "Опција великих IV одељака је подржана само за отварање обичних уређаја са величином одељка већом од 512 бајта." -#: src/cryptsetup.c:3347 +#: src/cryptsetup.c:3348 msgid "Option --test-passphrase is allowed only for open of LUKS, TCRYPT, BITLK and FVAULT2 devices." msgstr "Опција „--test-passphrase“ је допуштена само за отварање LUKS, TCRYPT, BITLK и FVAULT2 уређаја." -#: src/cryptsetup.c:3350 src/cryptsetup.c:3380 +#: src/cryptsetup.c:3351 src/cryptsetup.c:3381 msgid "Options --device-size and --size cannot be combined." msgstr "Опције „--device-size“ и „--size“ се не могу комбиновати." -#: src/cryptsetup.c:3353 +#: src/cryptsetup.c:3354 msgid "Option --unbound is allowed only for open of luks device." msgstr "Опција „--unbound“ је допуштена само за отварање лукс уређаја." -#: src/cryptsetup.c:3356 +#: src/cryptsetup.c:3357 msgid "Option --unbound cannot be used without --test-passphrase." msgstr "Опција „--unbound“ се не може користити без „--test-passphrase“." -#: src/cryptsetup.c:3360 +#: src/cryptsetup.c:3361 msgid "Option --volume-key-keyring cannot be combined with --hash or --volume-key-file." msgstr "Опција „--volume-key-keyring“ не може бити обједињена са „--hash“ или „--volume-key-file“." -#: src/cryptsetup.c:3363 +#: src/cryptsetup.c:3364 msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "Обе „--volume-key-file“ опције се морају упарити са одговарајућим „--key-size“ опцијама." -#: src/cryptsetup.c:3372 src/veritysetup.c:673 src/integritysetup.c:787 +#: src/cryptsetup.c:3373 src/veritysetup.c:673 src/integritysetup.c:800 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "Опције „--cancel-deferred“ и „--deferred“ се не могу користити у исто време." -#: src/cryptsetup.c:3388 +#: src/cryptsetup.c:3389 msgid "Option --active-name can be set only for LUKS2 device." msgstr "Опција „--active-name“ се може поставити само за ЛУКС2 уређај." -#: src/cryptsetup.c:3391 +#: src/cryptsetup.c:3392 msgid "Options --active-name and --force-offline-reencrypt cannot be combined." msgstr "Опције „--active-name“ и „--force-offline-reencrypt“ се не могу комбиновати." -#: src/cryptsetup.c:3394 +#: src/cryptsetup.c:3395 msgid "Options --new-volume-key-file and --keep-key cannot be combined." msgstr "Опције „--new-volume-key-file“ и „--keep-key“ се не могу комбиновати." -#: src/cryptsetup.c:3397 +#: src/cryptsetup.c:3398 msgid "Options --new-volume-key-keyring and --keep-key cannot be combined." msgstr "Опције „--new-volume-key-keyring“ и „--keep-key“ се не могу комбиновати." -#: src/cryptsetup.c:3405 src/cryptsetup.c:3435 +#: src/cryptsetup.c:3406 src/cryptsetup.c:3436 msgid "Keyslot specification is required." msgstr "Одредба утора кључа је потребна." -#: src/cryptsetup.c:3413 +#: src/cryptsetup.c:3414 msgid "Options --align-payload and --offset cannot be combined." msgstr "Опције „--align-payload“ и „--offset“ се не могу комбиновати." -#: src/cryptsetup.c:3416 +#: src/cryptsetup.c:3417 msgid "Option --integrity-no-wipe can be used only for format action with integrity extension." msgstr "Опција „--integrity-no-wipe“ се може користити само за радњу форматирања са проширењем целовитости." -#: src/cryptsetup.c:3419 +#: src/cryptsetup.c:3420 msgid "Only one of --use-[u]random options is allowed." msgstr "Дозвољена је само једна опција „--use-[u]random“." -#: src/cryptsetup.c:3427 +#: src/cryptsetup.c:3428 msgid "Key size is required with --unbound option." msgstr "Величина кључа је потребна са опцијом „--unbound“." -#: src/cryptsetup.c:3447 +#: src/cryptsetup.c:3448 msgid "Invalid token action." msgstr "Неисправна радња скупине." -#: src/cryptsetup.c:3450 +#: src/cryptsetup.c:3451 msgid "--key-description parameter is mandatory for token add action." msgstr "„--key-description“ параметар је обавезан за радњу додавања скупине." -#: src/cryptsetup.c:3454 src/cryptsetup.c:3467 +#: src/cryptsetup.c:3455 src/cryptsetup.c:3468 msgid "Action requires specific token. Use --token-id parameter." msgstr "Радња захтева нарочиту скупину. Користите параметар „--token-id“." -#: src/cryptsetup.c:3458 +#: src/cryptsetup.c:3459 msgid "Option --unbound is valid only with token add action." msgstr "Опција „--unbound“ је исправна само са радњом додавања скупине." -#: src/cryptsetup.c:3460 +#: src/cryptsetup.c:3461 msgid "Options --key-slot and --unbound cannot be combined." msgstr "Опције „--key-slot“ и „--unbound“ се не могу комбиновати." -#: src/cryptsetup.c:3465 +#: src/cryptsetup.c:3466 msgid "Action requires specific keyslot. Use --key-slot parameter." msgstr "Радња захтева нарочити утор кључа. Користите параметар „--key-slot“." -#: src/cryptsetup.c:3481 +#: src/cryptsetup.c:3482 msgid " [--type ] []" msgstr "<уређај> [--type <врста>] [<назив>]" -#: src/cryptsetup.c:3481 src/veritysetup.c:487 src/integritysetup.c:554 +#: src/cryptsetup.c:3482 src/veritysetup.c:487 src/integritysetup.c:563 msgid "open device as " msgstr "отвара уређај као <назив>" -#: src/cryptsetup.c:3482 src/cryptsetup.c:3483 src/cryptsetup.c:3484 -#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:555 -#: src/integritysetup.c:556 src/integritysetup.c:558 +#: src/cryptsetup.c:3483 src/cryptsetup.c:3484 src/cryptsetup.c:3485 +#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:564 +#: src/integritysetup.c:565 src/integritysetup.c:567 msgid "" msgstr "<назив>" -#: src/cryptsetup.c:3482 src/veritysetup.c:488 src/integritysetup.c:555 +#: src/cryptsetup.c:3483 src/veritysetup.c:488 src/integritysetup.c:564 msgid "close device (remove mapping)" msgstr "затвара уређај (уклања мапирање)" -#: src/cryptsetup.c:3483 src/integritysetup.c:558 +#: src/cryptsetup.c:3484 src/integritysetup.c:567 msgid "resize active device" msgstr "мења величину радног уређаја" -#: src/cryptsetup.c:3484 +#: src/cryptsetup.c:3485 msgid "show device status" msgstr "показује стање уређаја" -#: src/cryptsetup.c:3485 +#: src/cryptsetup.c:3486 msgid "[--cipher ]" msgstr "[--cipher <шифрер>]" -#: src/cryptsetup.c:3485 +#: src/cryptsetup.c:3486 msgid "benchmark cipher" msgstr "шифрер оцењивања" -#: src/cryptsetup.c:3486 src/cryptsetup.c:3487 src/cryptsetup.c:3488 -#: src/cryptsetup.c:3489 src/cryptsetup.c:3490 src/cryptsetup.c:3497 -#: src/cryptsetup.c:3498 src/cryptsetup.c:3499 src/cryptsetup.c:3500 -#: src/cryptsetup.c:3501 src/cryptsetup.c:3502 src/cryptsetup.c:3503 -#: src/cryptsetup.c:3504 src/cryptsetup.c:3505 src/cryptsetup.c:3506 +#: src/cryptsetup.c:3487 src/cryptsetup.c:3488 src/cryptsetup.c:3489 +#: src/cryptsetup.c:3490 src/cryptsetup.c:3491 src/cryptsetup.c:3498 +#: src/cryptsetup.c:3499 src/cryptsetup.c:3500 src/cryptsetup.c:3501 +#: src/cryptsetup.c:3502 src/cryptsetup.c:3503 src/cryptsetup.c:3504 +#: src/cryptsetup.c:3505 src/cryptsetup.c:3506 src/cryptsetup.c:3507 msgid "" msgstr "<уређај>" -#: src/cryptsetup.c:3486 +#: src/cryptsetup.c:3487 msgid "try to repair on-disk metadata" msgstr "покушава да поправи метаподатке на-диску" -#: src/cryptsetup.c:3487 +#: src/cryptsetup.c:3488 msgid "reencrypt LUKS2 device" msgstr "поново шифрујем ЛУКС2 уређај" -#: src/cryptsetup.c:3488 +#: src/cryptsetup.c:3489 msgid "erase all keyslots (remove encryption key)" msgstr "брише све уторе кључева (уклања кључ шифровања)" -#: src/cryptsetup.c:3489 +#: src/cryptsetup.c:3490 msgid "convert LUKS from/to LUKS2 format" msgstr "претвара ЛУКС из/у ЛУКС2 запис" -#: src/cryptsetup.c:3490 +#: src/cryptsetup.c:3491 msgid "set permanent configuration options for LUKS2" msgstr "поставља трајне опције подешавања за ЛУКС2" -#: src/cryptsetup.c:3491 src/cryptsetup.c:3492 +#: src/cryptsetup.c:3492 src/cryptsetup.c:3493 msgid " []" msgstr "<уређај> [<нова датотека кључа>]" -#: src/cryptsetup.c:3491 +#: src/cryptsetup.c:3492 msgid "formats a LUKS device" msgstr "форматира ЛУКС уређај" -#: src/cryptsetup.c:3492 +#: src/cryptsetup.c:3493 msgid "add key to LUKS device" msgstr "додаје кључ у ЛУКС уређај" -#: src/cryptsetup.c:3493 src/cryptsetup.c:3494 src/cryptsetup.c:3495 +#: src/cryptsetup.c:3494 src/cryptsetup.c:3495 src/cryptsetup.c:3496 msgid " []" msgstr "<уређај> [<датотека кључа>]" -#: src/cryptsetup.c:3493 +#: src/cryptsetup.c:3494 msgid "removes supplied key or key file from LUKS device" msgstr "уклања достављени кључ или датотеку кључа из ЛУКС уређаја" -#: src/cryptsetup.c:3494 +#: src/cryptsetup.c:3495 msgid "changes supplied key or key file of LUKS device" msgstr "мења достављени кључ или датотеку кључа ЛУКС уређаја" -#: src/cryptsetup.c:3495 +#: src/cryptsetup.c:3496 msgid "converts a key to new pbkdf parameters" msgstr "претвара кључ у нове „pbkdf“ параметре" -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3497 msgid " " msgstr "<уређај> <утор кључа>" -#: src/cryptsetup.c:3496 +#: src/cryptsetup.c:3497 msgid "wipes key with number from LUKS device" msgstr "брише кључ са бројем <утор кључа> са ЛУКС уређаја" -#: src/cryptsetup.c:3497 +#: src/cryptsetup.c:3498 msgid "print UUID of LUKS device" msgstr "исписује УЈИБ ЛУКС уређаја" -#: src/cryptsetup.c:3498 +#: src/cryptsetup.c:3499 msgid "tests for LUKS partition header" msgstr "испробава <уређај> за заглављем ЛУКС партиције" -#: src/cryptsetup.c:3499 +#: src/cryptsetup.c:3500 msgid "dump LUKS partition information" msgstr "исписује податке ЛУКС партиције" -#: src/cryptsetup.c:3500 +#: src/cryptsetup.c:3501 msgid "dump TCRYPT device information" msgstr "исписује податке ТКРИПТ уређаја" -#: src/cryptsetup.c:3501 +#: src/cryptsetup.c:3502 msgid "dump BITLK device information" msgstr "исписује податке „BITLK“ уређаја" -#: src/cryptsetup.c:3502 +#: src/cryptsetup.c:3503 msgid "dump FVAULT2 device information" msgstr "исписује податке „FVAULT2“ уређаја" -#: src/cryptsetup.c:3503 +#: src/cryptsetup.c:3504 msgid "Suspend LUKS device and wipe key (all IOs are frozen)" msgstr "Обуставља ЛУКС уређај и брише кључ (сви УИ су замрзнути)" -#: src/cryptsetup.c:3504 +#: src/cryptsetup.c:3505 msgid "Resume suspended LUKS device" msgstr "Наставља са обустављеним ЛУКС уређајем" -#: src/cryptsetup.c:3505 +#: src/cryptsetup.c:3506 msgid "Backup LUKS device header and keyslots" msgstr "Прави резерву заглавља „LUKS“ уређаја и утора кључева" -#: src/cryptsetup.c:3506 +#: src/cryptsetup.c:3507 msgid "Restore LUKS device header and keyslots" msgstr "Враћа заглавље „LUKS“ уређаја и уторе кључева" -#: src/cryptsetup.c:3507 +#: src/cryptsetup.c:3508 msgid " " msgstr "<додај|уклони|увези|извези> <уређај>" -#: src/cryptsetup.c:3507 +#: src/cryptsetup.c:3508 msgid "Manipulate LUKS2 tokens" msgstr "Управља ЛУКС2 скупинама" -#: src/cryptsetup.c:3526 src/veritysetup.c:505 src/integritysetup.c:573 +#: src/cryptsetup.c:3527 src/veritysetup.c:505 src/integritysetup.c:582 msgid "" "\n" " is one of:\n" @@ -2955,7 +2950,7 @@ msgstr "" "\n" "<радња> је једна од следећих:\n" -#: src/cryptsetup.c:3532 +#: src/cryptsetup.c:3533 msgid "" "\n" "You can also use old syntax aliases:\n" @@ -2967,7 +2962,7 @@ msgstr "" "\tотвори: create (plainOpen), luksOpen, loopaesOpen, tcryptOpen, bitlkOpen, fvault2Open\n" "\tзатвори: remove (plainClose), luksClose, loopaesClose, tcryptClose, bitlkClose, fvault2Close\n" -#: src/cryptsetup.c:3536 +#: src/cryptsetup.c:3537 #, c-format msgid "" "\n" @@ -2982,7 +2977,7 @@ msgstr "" "<утор кључа> је број ЛУКС утора кључа за мењање\n" "<датотека кључа> изборна датотека кључа за нови кључ за радњу „luksAddKey“\n" -#: src/cryptsetup.c:3543 +#: src/cryptsetup.c:3544 #, c-format msgid "" "\n" @@ -2991,7 +2986,7 @@ msgstr "" "\n" "Основни уграђени запис метаподатака је „%s“ (за „luksFormat“ радњу).\n" -#: src/cryptsetup.c:3548 +#: src/cryptsetup.c:3549 msgid "" "\n" "LUKS2 external token plugin support is enabled.\n" @@ -2999,12 +2994,12 @@ msgstr "" "\n" "Подршка прикључка спољне скупине за LUKS2 је укључена.\n" -#: src/cryptsetup.c:3549 +#: src/cryptsetup.c:3550 #, c-format msgid "LUKS2 external token plugin path: %s.\n" msgstr "Путања прикључка спољне скупине за „LUKS2“: %s.\n" -#: src/cryptsetup.c:3551 +#: src/cryptsetup.c:3552 msgid "" "\n" "LUKS2 external token plugin support is disabled.\n" @@ -3012,7 +3007,7 @@ msgstr "" "\n" "Подршка прикључка спољне скупине за LUKS2 је искључена.\n" -#: src/cryptsetup.c:3555 +#: src/cryptsetup.c:3556 #, c-format msgid "" "\n" @@ -3029,7 +3024,7 @@ msgstr "" "Основни „PBKDF“ за ЛУКС2: %s\n" "\tВреме понављања: %d, Захтевана меморија: %dkB, Паралелне нити: %d\n" -#: src/cryptsetup.c:3566 +#: src/cryptsetup.c:3567 #, c-format msgid "" "\n" @@ -3044,122 +3039,126 @@ msgstr "" "\tобично: %s, Кључ: %d бита, Хеширање лозинке: %s\n" "\tЛУКС: %s, Кључ: %d бита, Хеширање ЛУКС заглавља: %s, РНГ: %s\n" -#: src/cryptsetup.c:3575 +#: src/cryptsetup.c:3576 msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tЛУКС: Основна величина кључа са „XTS“ режимом (два унутрашња кључа) биће удвостручена.\n" -#: src/cryptsetup.c:3593 src/veritysetup.c:647 src/integritysetup.c:733 +#: src/cryptsetup.c:3594 src/veritysetup.c:647 src/integritysetup.c:742 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: захтева „%s“ као аргумент" -#: src/cryptsetup.c:3633 src/utils_reencrypt_luks1.c:1143 +#: src/cryptsetup.c:3634 src/utils_reencrypt_luks1.c:1143 msgid "Key slot is invalid." msgstr "Утор кључа није исправан." -#: src/cryptsetup.c:3661 +#: src/cryptsetup.c:3662 msgid "Device size must be multiple of 512 bytes sector." msgstr "Величина уређаја мора бити умножак одељка од 512 бајта." -#: src/cryptsetup.c:3666 +#: src/cryptsetup.c:3667 msgid "Invalid max reencryption hotzone size specification." msgstr "Неисправна одредба највеће величине вруће зоне поновног шифровања." -#: src/cryptsetup.c:3680 src/cryptsetup.c:3697 src/cryptsetup.c:3709 +#: src/cryptsetup.c:3681 src/cryptsetup.c:3698 src/cryptsetup.c:3710 msgid "Key size must be a multiple of 8 bits" msgstr "Величина кључа мора бити умножак од 8 бита" -#: src/cryptsetup.c:3687 +#: src/cryptsetup.c:3688 msgid "At most 2 key size specifications can be supplied." msgstr "Могу се доставити одредбе величине највише 2 кључа." -#: src/cryptsetup.c:3716 src/cryptsetup.c:3727 +#: src/cryptsetup.c:3717 src/cryptsetup.c:3728 #, c-format msgid "At most %d volume key specifications can be supplied." msgstr "Највише %d одредбе кључа волумена се могу доставити." -#: src/cryptsetup.c:3739 +#: src/cryptsetup.c:3740 #, c-format msgid "At most %d keyring link specifications can be supplied." msgstr "Највише %d одредбе везе привеска кључева се могу доставити." -#: src/cryptsetup.c:3748 +#: src/cryptsetup.c:3749 msgid "Maximum device reduce size is 1 GiB." msgstr "Највећа величина смањења уређаја је 1 GiB." -#: src/cryptsetup.c:3751 +#: src/cryptsetup.c:3752 msgid "Reduce size must be multiple of 512 bytes sector." msgstr "Величина смањивања мора бити умножак одељка од 512 бајта." -#: src/cryptsetup.c:3768 +#: src/cryptsetup.c:3769 msgid "Option --priority can be only ignore/normal/prefer." msgstr "Опција „--priority“ може бити само „ignore/normal/prefer“." -#: src/cryptsetup.c:3787 src/veritysetup.c:568 src/integritysetup.c:653 +#: src/cryptsetup.c:3774 +msgid "Invalid maximal tries specification." +msgstr "Неисправна одредба највећег броја покушаја." + +#: src/cryptsetup.c:3793 src/veritysetup.c:568 src/integritysetup.c:662 msgid "Show this help message" msgstr "Приказује ову поруку помоћи" -#: src/cryptsetup.c:3788 src/veritysetup.c:569 src/integritysetup.c:654 +#: src/cryptsetup.c:3794 src/veritysetup.c:569 src/integritysetup.c:663 msgid "Display brief usage" msgstr "Прикажите кратку поруку о коришћењу" -#: src/cryptsetup.c:3789 src/veritysetup.c:570 src/integritysetup.c:655 +#: src/cryptsetup.c:3795 src/veritysetup.c:570 src/integritysetup.c:664 msgid "Print package version" msgstr "Исписује издање пакета" -#: src/cryptsetup.c:3800 src/veritysetup.c:581 src/integritysetup.c:666 +#: src/cryptsetup.c:3806 src/veritysetup.c:581 src/integritysetup.c:675 msgid "Help options:" msgstr "Опције помоћи:" -#: src/cryptsetup.c:3823 src/veritysetup.c:602 src/integritysetup.c:686 +#: src/cryptsetup.c:3829 src/veritysetup.c:602 src/integritysetup.c:695 msgid "[OPTION...] " msgstr "[ОПЦИЈА...] <радња> <посебност-радње>" -#: src/cryptsetup.c:3832 src/veritysetup.c:611 src/integritysetup.c:697 +#: src/cryptsetup.c:3838 src/veritysetup.c:611 src/integritysetup.c:706 msgid "Argument missing." msgstr "Недостаје аргумент <радња>." -#: src/cryptsetup.c:3911 src/veritysetup.c:642 src/integritysetup.c:728 +#: src/cryptsetup.c:3917 src/veritysetup.c:642 src/integritysetup.c:737 msgid "Unknown action." msgstr "Непозната радња." -#: src/cryptsetup.c:3929 +#: src/cryptsetup.c:3935 msgid "Option --key-file takes precedence over specified key file argument." msgstr "Опција „--key-file“ има првенство над наведеним аргументом датотеке кључа." -#: src/cryptsetup.c:3935 +#: src/cryptsetup.c:3941 msgid "Only one --key-file argument is allowed." msgstr "Дозвољен је само један аргумент „--key-file“." -#: src/cryptsetup.c:3940 +#: src/cryptsetup.c:3946 msgid "Password-based key derivation function (PBKDF) can be only pbkdf2 or argon2i/argon2id." msgstr "Функција произилажења кључа заснованог на пропусној речи (PBKDF) може бити само „pbkdf2“ или „argon2i/argon2id“." -#: src/cryptsetup.c:3945 +#: src/cryptsetup.c:3951 msgid "PBKDF forced iterations cannot be combined with iteration time option." msgstr "„PBKDF“ присиљена понављања се не могу комбиновати са опцијом времена понављања." -#: src/cryptsetup.c:3950 +#: src/cryptsetup.c:3956 msgid "Cannot link volume key to a keyring when keyring is disabled." msgstr "Не могу да свежем кључ волумена на привезак кључева када је привезак искључен." -#: src/cryptsetup.c:3955 +#: src/cryptsetup.c:3961 msgid "Cannot use keyring key description when keyring is disabled." msgstr "Не могу да користим опис кључа привеска када је привезак искључен." -#: src/cryptsetup.c:3960 +#: src/cryptsetup.c:3966 msgid "Inline integrity must be used together with --integrity option." msgstr "Унутарња целовитост се мора користити заједно са опцијом „--integrity“." -#: src/cryptsetup.c:3971 +#: src/cryptsetup.c:3977 msgid "Options --keyslot-cipher and --keyslot-key-size must be used together." msgstr "Опције „--keyslot-cipher“ и „--keyslot-key-size“ се морају користити заједно." -#: src/cryptsetup.c:3979 +#: src/cryptsetup.c:3985 msgid "No action taken. Invoked with --test-args option.\n" msgstr "Није предузета никаква радња. Призвана опцијом „--test-args“.\n" -#: src/cryptsetup.c:3992 +#: src/cryptsetup.c:3998 msgid "Cannot disable metadata locking." msgstr "Не могу да искључим закључавање метаподатака." @@ -3224,7 +3223,7 @@ msgstr "Наредба захтева „“ или „--root-hash-fi msgid " " msgstr "<уређај_података> <уређај_хеша>" -#: src/veritysetup.c:485 src/integritysetup.c:553 +#: src/veritysetup.c:485 src/integritysetup.c:562 msgid "format device" msgstr "форматира уређај" @@ -3240,7 +3239,7 @@ msgstr "проверава уређај" msgid " []" msgstr "<уређај_података> <назив> <уређај_хеша> [<хеш_корена>]" -#: src/veritysetup.c:489 src/integritysetup.c:556 +#: src/veritysetup.c:489 src/integritysetup.c:565 msgid "show active device status" msgstr "показује стање радног уређаја" @@ -3248,7 +3247,7 @@ msgstr "показује стање радног уређаја" msgid "" msgstr "<уређај_хеша>" -#: src/veritysetup.c:490 src/integritysetup.c:557 +#: src/veritysetup.c:490 src/integritysetup.c:566 msgid "show on-disk information" msgstr "приказује податке на-диску" @@ -3290,7 +3289,7 @@ msgstr "Опције „--panic-on-corruption“ и „--restart-on-corruption msgid "Option --error-as-corruption must be used with --panic-on-corruption or --restart-on-corruption." msgstr "Опција „--error-as-corruption“ мора да се користи са „--panic-on-corruption“ или „--restart-on-corruption“." -#: src/integritysetup.c:168 +#: src/integritysetup.c:169 #, c-format msgid "" "This will overwrite data on %s and %s irrevocably.\n" @@ -3299,33 +3298,33 @@ msgstr "" "Ово ће неповратно преписати податке на „%s“ и „%s“.\n" "Да задржите уређај података користите опцију „--no-wipe“ (а затим активирајте са „--integrity-recalculate“)." -#: src/integritysetup.c:213 +#: src/integritysetup.c:215 #, c-format msgid "Formatted with tag size %u%s, internal integrity %s.\n" msgstr "Форматирано ознаком величине %u%s, унутрашња целовитост „%s“.\n" -#: src/integritysetup.c:214 +#: src/integritysetup.c:216 msgid " (inline hw tags)" msgstr " (унутарње hw ознаке)" -#: src/integritysetup.c:303 +#: src/integritysetup.c:305 msgid "Setting recalculate flag is not supported, you may consider using --wipe instead." msgstr "Постављање заставице поновног рачунањ није подржано, можете узети у обзир коришћење опције „--wipe“." -#: src/integritysetup.c:380 src/integritysetup.c:540 +#: src/integritysetup.c:382 src/integritysetup.c:549 #, c-format msgid "Device %s is not a valid INTEGRITY device." msgstr "Уређај „%s“ није исправан „INTEGRITY“ уређај." -#: src/integritysetup.c:553 src/integritysetup.c:557 +#: src/integritysetup.c:562 src/integritysetup.c:566 msgid "" msgstr "<уређај_целовитости>" -#: src/integritysetup.c:554 +#: src/integritysetup.c:563 msgid " " msgstr "<уређај_целовитости> <назив>" -#: src/integritysetup.c:577 +#: src/integritysetup.c:586 #, c-format msgid "" "\n" @@ -3336,7 +3335,7 @@ msgstr "" "<назив> јесте уређај за стварање под „%s“\n" "<уређај_целовитости> јесте уређај који садржи податке са ознакама целовитости\n" -#: src/integritysetup.c:582 +#: src/integritysetup.c:591 #, c-format msgid "" "\n" @@ -3349,51 +3348,55 @@ msgstr "" "\tАлгоритам провере суме: %s\n" " Највећа величина датотеке кључа: %dkB\n" -#: src/integritysetup.c:639 +#: src/integritysetup.c:648 #, c-format msgid "Invalid --%s size. Maximum is %u bytes." msgstr "Неисправна величина „--%s“. Највећа је %u бајта." -#: src/integritysetup.c:742 +#: src/integritysetup.c:751 msgid "Both key file and key size options must be specified." msgstr "Мора бити наведена и опција датотеке кључа и опција величине кључа." -#: src/integritysetup.c:746 +#: src/integritysetup.c:755 msgid "Both journal integrity key file and key size options must be specified." msgstr "Мора бити наведена и опција датотеке кључа целовитости журнала и опција величине кључа." -#: src/integritysetup.c:749 +#: src/integritysetup.c:758 msgid "Journal integrity algorithm must be specified if journal integrity key is used." msgstr "Алгоритам целовитости журнала мора бити наведен ако се користи кључ целовитости журнала." -#: src/integritysetup.c:753 +#: src/integritysetup.c:762 msgid "Both journal encryption key file and key size options must be specified." msgstr "Мора бити наведена и опција датотеке кључа шифровања журнала и опција величине кључа." -#: src/integritysetup.c:756 +#: src/integritysetup.c:765 msgid "Journal encryption algorithm must be specified if journal encryption key is used." msgstr "Алгоритам шифровања журнала мора бити наведен ако се користи кључ шифровања журнала." -#: src/integritysetup.c:760 +#: src/integritysetup.c:769 msgid "Recovery and bitmap mode options are mutually exclusive." msgstr "Опције режима опоравка и битмапе се узајамно искључују." -#: src/integritysetup.c:767 +#: src/integritysetup.c:776 msgid "Journal options cannot be used in bitmap mode." msgstr "Опције журнала се не могу користити у режиму битмапе." -#: src/integritysetup.c:772 +#: src/integritysetup.c:781 msgid "Bitmap options can be used only in bitmap mode." msgstr "Опције битмапе се могу користити само у режиму битмапе." -#: src/integritysetup.c:778 +#: src/integritysetup.c:787 msgid "Inline mode cannot be combined with journal or bitmap options." msgstr "Унутарњи режим се не може комбиновати са опцијама „journal“ или „bitmap“." -#: src/integritysetup.c:782 +#: src/integritysetup.c:791 msgid "Inline mode cannot be combined with separate data device." msgstr "Унутарњи режим се не може комбиновати са одвојеним уређајем података." +#: src/integritysetup.c:795 +msgid "Keyed discards can be enabled only with keyed algorithms like HMAC." +msgstr "Тастерска одбацивања се могу укључити само са тастерским алгоритмима као што је HMAC." + #: src/utils_tools.c:105 msgid "" "\n" @@ -3744,32 +3747,32 @@ msgstr "Уређај није у ЛУКС2 шифровању. Сукобљав msgid "Device is in reencryption using datashift resilience. Requested --resilience option cannot be applied." msgstr "Уређај је у поновном шифровању користећи гипкост помака података. Захтевана опција „--resilience“ се не може применити." -#: src/utils_reencrypt.c:282 src/utils_reencrypt.c:1924 +#: src/utils_reencrypt.c:283 src/utils_reencrypt.c:1953 msgid "Cannot determine volume key size for LUKS without keyslots, please use --new-key-size option." msgstr "Не могу да одредим величину кључа за ЛУКС без утора кључа, користите опцију „--new-key-size“." -#: src/utils_reencrypt.c:436 +#: src/utils_reencrypt.c:438 msgid "Device requires reencryption recovery. Run repair first." msgstr "Уређај захтева опоравак поновног шифровања. Прво покрените поправку." -#: src/utils_reencrypt.c:450 +#: src/utils_reencrypt.c:452 #, c-format msgid "Device %s is already in LUKS2 reencryption. Do you wish to resume previously initialised operation?" msgstr "Уређај „%s“ је већ у ЛУКС2 поновном шифровању. Да ли желите да наставите са претходно започетом радњом?" -#: src/utils_reencrypt.c:561 +#: src/utils_reencrypt.c:563 msgid "Legacy LUKS2 reencryption is no longer supported." msgstr "Старо ЛУКС2 поновно шифровања више није подржано." -#: src/utils_reencrypt.c:566 +#: src/utils_reencrypt.c:568 msgid "Can not reencrypt LUKS2 device configured to use OPAL." msgstr "Не могу поново да шифрујем LUKS2 уређај подешен да користи OPAL." -#: src/utils_reencrypt.c:572 +#: src/utils_reencrypt.c:574 msgid "Reencryption of device with integrity profile is not supported." msgstr "Поновно шифровање уређаја са профилом целовитости није подржано." -#: src/utils_reencrypt.c:609 +#: src/utils_reencrypt.c:611 #, c-format msgid "" "Requested --sector-size % is incompatible with %s superblock\n" @@ -3778,110 +3781,111 @@ msgstr "" "Захтевано „--sector-size“ % је несагласно са „%s“ суперблоком\n" "(величина блока: % бајта) је откривено на уређају „%s“." -#: src/utils_reencrypt.c:678 src/utils_reencrypt.c:2204 +#: src/utils_reencrypt.c:680 src/utils_reencrypt.c:2233 msgid "Encryption without detached header (--header) is not possible without data device size reduction (--reduce-device-size)." msgstr "Шифровање без откаченог заглавља (--header) није могуће без смањења величине уређаја података (--reduce-device-size)." -#: src/utils_reencrypt.c:687 +#: src/utils_reencrypt.c:689 msgid "Requested data offset must be less than or equal to half of --reduce-device-size parameter." msgstr "Затражени померај података мора бити мањи или једнак половини параметра „--reduce-device-size“." -#: src/utils_reencrypt.c:697 +#: src/utils_reencrypt.c:699 #, c-format msgid "Adjusting --reduce-device-size value to twice the --offset % (sectors).\n" msgstr "Подешавам „--reduce-device-size“ вредност на двоструко од „--offset“ % (подеока).\n" -#: src/utils_reencrypt.c:727 +#: src/utils_reencrypt.c:729 #, c-format msgid "Temporary header file %s already exists. Aborting." msgstr "Привремена датотека заглавља „%s“ већ постоји. Прекидам." -#: src/utils_reencrypt.c:729 src/utils_reencrypt.c:736 +#: src/utils_reencrypt.c:731 src/utils_reencrypt.c:738 #, c-format msgid "Cannot create temporary header file %s." msgstr "Не могу да направим привремену датотеку заглавља „%s“." -#: src/utils_reencrypt.c:761 +#: src/utils_reencrypt.c:763 msgid "LUKS2 metadata size is larger than data shift value." msgstr "Величина ЛУКС2 метаподатака је већа од вредности помака података." -#: src/utils_reencrypt.c:800 +#: src/utils_reencrypt.c:802 #, c-format msgid "Failed to place new header at head of device %s." msgstr "Нисам успео да ставим ново заглавље на главу уређаја „%s“." -#: src/utils_reencrypt.c:813 +#: src/utils_reencrypt.c:815 #, c-format msgid "%s/%s is now active and ready for online encryption.\n" msgstr "„%s/%s“ је сада активно и спремно за шифровање на мрежи.\n" -#: src/utils_reencrypt.c:850 +#: src/utils_reencrypt.c:852 #, c-format msgid "Active device %s is not LUKS2." msgstr "Радни уређај „%s“ није ЛУКС2." -#: src/utils_reencrypt.c:878 +#: src/utils_reencrypt.c:880 msgid "Restoring original LUKS2 header." msgstr "Враћам изворно ЛУКС2 заглавље." -#: src/utils_reencrypt.c:886 +#: src/utils_reencrypt.c:888 msgid "Original LUKS2 header restore failed." msgstr "Враћање изворног ЛУКС2 заглавља није успело." -#: src/utils_reencrypt.c:918 +#: src/utils_reencrypt.c:920 #, c-format msgid "Header file %s does not exist. Do you want to initialize LUKS2 decryption of device %s and export LUKS2 header to file %s?" msgstr "Датотека заглавља „%s“ не постоји. Да ли желите да покренете LUKS2 дешифровање уређаја „%s“ и да извезете LUKS2 заглавље у датотеку „%s“?" -#: src/utils_reencrypt.c:961 +#: src/utils_reencrypt.c:963 msgid "Failed to add read/write permissions to exported header file." msgstr "Нисам успео да додам дозволе за читање/писање у извезену датотеку заглавља." -#: src/utils_reencrypt.c:1015 +#: src/utils_reencrypt.c:1017 #, c-format msgid "Reencryption initialization failed. Header backup is available in %s." msgstr "Покретање поновног шифровања није успело. Резерва заглавља је доступна у „%s“." -#: src/utils_reencrypt.c:1043 +#: src/utils_reencrypt.c:1045 msgid "LUKS2 decryption is supported with detached header device only (with data offset set to 0)." msgstr "ЛУКС2 дешифровање је подржано само са откаченим уређајем заглавља (са померајем података постављеним на 0)." -#: src/utils_reencrypt.c:1487 -msgid "No token could unlock the device." -msgstr "Ниједна скупина не може да откључа уређај." - -#: src/utils_reencrypt.c:1519 src/utils_reencrypt.c:1528 +#: src/utils_reencrypt.c:1506 src/utils_reencrypt.c:1531 +#: src/utils_reencrypt.c:1548 src/utils_reencrypt.c:1557 msgid "Not enough free keyslots for reencryption." msgstr "Нема довољно слободних утора кључева за поновно шифровање." -#: src/utils_reencrypt.c:1559 +#: src/utils_reencrypt.c:1513 +msgid "No token could unlock the device." +msgstr "Ниједна скупина не може да откључа уређај." + +#: src/utils_reencrypt.c:1588 msgid "Key file or keyring key description can be used only with --key-slot or with exactly one key slot active." msgstr "Датотека кључа или опис кључа привеска се може користити само са „--key-slot“ или са тачно једним активним утором кључа." -#: src/utils_reencrypt.c:1566 src/utils_reencrypt.c:1579 +#: src/utils_reencrypt.c:1595 src/utils_reencrypt.c:1608 #: src/utils_reencrypt_luks1.c:1092 src/utils_reencrypt_luks1.c:1103 #, c-format msgid "Enter passphrase for key slot %d: " msgstr "Унесите пропусну реч за утор кључа %d: " -#: src/utils_reencrypt.c:1876 +#: src/utils_reencrypt.c:1905 #, c-format msgid "Switching data encryption cipher to %s.\n" msgstr "Пребацујем шифрера података на „%s“.\n" -#: src/utils_reencrypt.c:1977 src/utils_reencrypt.c:1998 +#: src/utils_reencrypt.c:2006 src/utils_reencrypt.c:2027 msgid "Use --force-no-keyslots to reencrypt device with active keyslots by passing volume keys directly." msgstr "Користите „--force-no-keyslots“ да поново шифрујете уређај са активним уторима кључа проследивши директно кључеве волумена." -#: src/utils_reencrypt.c:1993 +#: src/utils_reencrypt.c:2022 msgid "Option --new-volume-key-file must be paired with --new-key-size" msgstr "Опција „--new-volume-key-file“ мора бити упарена са „--new-key-size“" -#: src/utils_reencrypt.c:2035 +#: src/utils_reencrypt.c:2064 msgid "No data segment parameters changed. Reencryption aborted." msgstr "Никакви параметри подеока података нису измењени. Поновно шифровање је прекинуто." -#: src/utils_reencrypt.c:2072 +#: src/utils_reencrypt.c:2101 msgid "" "Encryption sector size increase on offline device is not supported.\n" "Activate the device first or use --force-offline-reencrypt option (dangerous!)." @@ -3889,7 +3893,7 @@ msgstr "" "Повећање величине одељка шифровања на не прикљученом уређају није подржано.\n" "Прво покрените уређај или користите опцију „--force-offline-reencrypt“ (опасно, вруће!!)." -#: src/utils_reencrypt.c:2114 src/utils_reencrypt_luks1.c:688 +#: src/utils_reencrypt.c:2143 src/utils_reencrypt_luks1.c:688 #: src/utils_reencrypt_luks1.c:759 msgid "" "\n" @@ -3898,58 +3902,58 @@ msgstr "" "\n" "Поновно шифровање је прекинуто." -#: src/utils_reencrypt.c:2119 +#: src/utils_reencrypt.c:2148 msgid "Resuming LUKS reencryption in forced offline mode.\n" msgstr "Настављам са ЛУКС2 поновним шифровањем у насилном ванмрежном режиму.\n" -#: src/utils_reencrypt.c:2142 +#: src/utils_reencrypt.c:2171 #, c-format msgid "Device %s contains broken LUKS metadata. Aborting operation." msgstr "Уређај „%s“ садржи оштећене ЛУКС2 метаподатке. Прекидам радњу." -#: src/utils_reencrypt.c:2158 src/utils_reencrypt.c:2180 +#: src/utils_reencrypt.c:2187 src/utils_reencrypt.c:2209 #, c-format msgid "Device %s is already LUKS device. Aborting operation." msgstr "Уређај „%s“ већ јесте ЛУКС уређај. Прекидам радњу." -#: src/utils_reencrypt.c:2186 +#: src/utils_reencrypt.c:2215 #, c-format msgid "Device %s is already in LUKS reencryption. Aborting operation." msgstr "Уређај „%s“ је већ у ЛУКС2 поновном шифровању. Прекидам радњу." -#: src/utils_reencrypt.c:2269 +#: src/utils_reencrypt.c:2298 msgid "LUKS2 decryption requires --header option." msgstr "ЛУКС2 дешифровање захтева опцију „--header“." -#: src/utils_reencrypt.c:2317 +#: src/utils_reencrypt.c:2346 msgid "Command requires device as argument." msgstr "Наредба захтева уређај као аргумент." -#: src/utils_reencrypt.c:2330 +#: src/utils_reencrypt.c:2359 #, c-format msgid "Conflicting versions. Device %s is LUKS1." msgstr "Сукобљавајућа издања. Уређај „%s“ је ЛУКС1." -#: src/utils_reencrypt.c:2336 +#: src/utils_reencrypt.c:2365 #, c-format msgid "Conflicting versions. Device %s is in LUKS1 reencryption." msgstr "Сукобљавајућа издања. Уређај „%s“ је у ЛУКС1 поновном шифровању." -#: src/utils_reencrypt.c:2342 +#: src/utils_reencrypt.c:2371 #, c-format msgid "Conflicting versions. Device %s is LUKS2." msgstr "Сукобљавајућа издања. Уређај „%s“ је ЛУКС2." -#: src/utils_reencrypt.c:2348 +#: src/utils_reencrypt.c:2377 #, c-format msgid "Conflicting versions. Device %s is in LUKS2 reencryption." msgstr "Сукобљавајућа издања. Уређај „%s“ је у ЛУКС2 поновном шифровању." -#: src/utils_reencrypt.c:2354 +#: src/utils_reencrypt.c:2383 msgid "LUKS2 reencryption already initialized. Aborting operation." msgstr "ЛУКС2 поновно шифровање је већ покренуто. Прекидам радњу." -#: src/utils_reencrypt.c:2361 +#: src/utils_reencrypt.c:2390 msgid "Device reencryption not in progress." msgstr "Поновно шифровање уређаја није у току." @@ -4347,6 +4351,12 @@ msgstr "Метода потврђивања идентитета јавног к msgid "Public key authentication error: " msgstr "Грешка потврђивања идентитета јавног кључа: " +#~ msgid "Required kernel crypto interface not available." +#~ msgstr "Није доступно затражено сучеље криптографије језгра." + +#~ msgid "Ensure you have algif_skcipher kernel module loaded." +#~ msgstr "Уверите се да је учитан модул кернела „algif_skcipher“." + #, c-format #~ msgid "Failed to read or validate BITLK FVE metadata copy #%d from %s." #~ msgstr "Нисам успео да прочитам или да потврдим умножак #%d „BITLK FVE“ метаподатака из „%s“." @@ -4953,9 +4963,6 @@ msgstr "Грешка потврђивања идентитета јавног к #~ msgid "Options --journal-size, --interleave-sectors, --sector-size, --tag-size and --no-wipe can be used only for format action." #~ msgstr "Опције „--journal-size“, „--interleave-sectors“, „--sector-size“, „--tag-size“ и „--no-wipe“ се могу користити само за радњу форматирања." -#~ msgid "Invalid journal size specification." -#~ msgstr "Неисправна одредба величине журнала." - #~ msgid "Reencryption block size" #~ msgstr "Величина блока поновног шифровања" From 1f698bb65791f4512d0a69243bf22b59a6514b3f Mon Sep 17 00:00:00 2001 From: Yuri Chornoivan Date: Fri, 4 Sep 2026 18:57:03 +0200 Subject: [PATCH 214/244] po: update uk.po (from translationproject.org) --- po/uk.po | 659 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 332 insertions(+), 327 deletions(-) diff --git a/po/uk.po b/po/uk.po index 7f7f8845f..a33e1217b 100644 --- a/po/uk.po +++ b/po/uk.po @@ -5,10 +5,10 @@ # Yuri Chornoivan , 2012-2023, 2024, 2025, 2026. msgid "" msgstr "" -"Project-Id-Version: cryptsetup 2.8.7-rc2\n" +"Project-Id-Version: cryptsetup 2.8.8-rc0\n" "Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" -"POT-Creation-Date: 2026-07-09 10:46+0200\n" -"PO-Revision-Date: 2026-07-11 17:13+0300\n" +"POT-Creation-Date: 2026-09-02 13:18+0200\n" +"PO-Revision-Date: 2026-09-02 18:11+0300\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" "Language: uk\n" @@ -17,80 +17,80 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Lokalize 23.04.3\n" +"X-Generator: Lokalize 25.12.1\n" -#: lib/libdevmapper.c:419 +#: lib/libdevmapper.c:422 msgid "Cannot initialize device-mapper, running as non-root user." msgstr "Не можна ініціалізувати device-mapper, якщо програму запущено не від імені адміністратора (root)." -#: lib/libdevmapper.c:422 +#: lib/libdevmapper.c:425 msgid "Cannot initialize device-mapper. Is dm_mod kernel module loaded?" msgstr "Не вдалося ініціалізувати device-mapper. Чи завантажено модуль ядра dm_mod?" -#: lib/libdevmapper.c:1125 +#: lib/libdevmapper.c:1129 msgid "Requested deferred flag is not supported." msgstr "Підтримки бажаного прапорця відкладення, %s, не передбачено." -#: lib/libdevmapper.c:1194 +#: lib/libdevmapper.c:1198 #, c-format msgid "DM-UUID for device %s was truncated." msgstr "DM-UUID для пристрою %s було обрізано." -#: lib/libdevmapper.c:1598 +#: lib/libdevmapper.c:1602 msgid "Unknown dm target type." msgstr "Невідомий тип призначення dm." -#: lib/libdevmapper.c:1725 lib/libdevmapper.c:1731 lib/libdevmapper.c:1850 -#: lib/libdevmapper.c:1853 +#: lib/libdevmapper.c:1729 lib/libdevmapper.c:1735 lib/libdevmapper.c:1854 +#: lib/libdevmapper.c:1857 msgid "Requested dm-crypt performance options are not supported." msgstr "Підтримки вказаних параметрів швидкодії dm-crypt не передбачено." -#: lib/libdevmapper.c:1740 lib/libdevmapper.c:1746 lib/libdevmapper.c:1758 +#: lib/libdevmapper.c:1744 lib/libdevmapper.c:1750 lib/libdevmapper.c:1762 msgid "Requested dm-verity data corruption handling options are not supported." msgstr "Підтримки вказаних параметрів обробки пошкоджених даних за допомогою dm-verity не передбачено." -#: lib/libdevmapper.c:1752 +#: lib/libdevmapper.c:1756 msgid "Requested dm-verity tasklets option is not supported." msgstr "Підтримки вказаного параметра завдань dm-verity не передбачено." -#: lib/libdevmapper.c:1764 +#: lib/libdevmapper.c:1768 msgid "Requested dm-verity FEC options are not supported." msgstr "Підтримки вказаних параметрів FEC за допомогою dm-verity не передбачено." -#: lib/libdevmapper.c:1770 +#: lib/libdevmapper.c:1774 msgid "Requested data integrity options are not supported." msgstr "Підтримки вказаних параметрів цілісності даних не передбачено." -#: lib/libdevmapper.c:1774 +#: lib/libdevmapper.c:1778 msgid "Requested sector_size option is not supported." msgstr "Підтримки вказаного параметра sector_size не передбачено." -#: lib/libdevmapper.c:1779 +#: lib/libdevmapper.c:1783 msgid "The device size is not multiple of the requested sector size." msgstr "Розмір пристрою не є кратним до розміру сектора у запиті." -#: lib/libdevmapper.c:1783 +#: lib/libdevmapper.c:1787 msgid "Requested integrity_key_size option is not supported." msgstr "Підтримки вказаного параметра integrity_key_size не передбачено." -#: lib/libdevmapper.c:1790 lib/libdevmapper.c:1796 +#: lib/libdevmapper.c:1794 lib/libdevmapper.c:1800 msgid "Requested automatic recalculation of integrity tags is not supported." msgstr "Підтримки потрібного вам автоматичного повторного обчислення міток цілісності не передбачено." -#: lib/libdevmapper.c:1802 lib/libdevmapper.c:1856 lib/libdevmapper.c:1859 -#: lib/luks2/luks2_json_metadata.c:2799 +#: lib/libdevmapper.c:1806 lib/libdevmapper.c:1860 lib/libdevmapper.c:1863 +#: lib/luks2/luks2_json_metadata.c:2791 msgid "Discard/TRIM is not supported." msgstr "Підтримки відкидання або обрізання не передбачено." -#: lib/libdevmapper.c:1808 +#: lib/libdevmapper.c:1812 msgid "Requested dm-integrity bitmap mode is not supported." msgstr "Підтримки вказаного режиму бітової карти цілісності dm не передбачено." -#: lib/libdevmapper.c:1814 +#: lib/libdevmapper.c:1818 msgid "Requested dm-integrity inline mode is not supported." msgstr "Підтримки вбудованого режиму dm-integrity не передбачено." -#: lib/libdevmapper.c:2870 +#: lib/libdevmapper.c:2877 #, c-format msgid "Failed to query dm-%s segment." msgstr "Не вдалося опитати сегмент dm-%s." @@ -141,7 +141,7 @@ msgstr "Не вдалося ініціалізувати допоміжну пр msgid "Cannot initialize crypto backend." msgstr "Не вдалося ініціалізувати допоміжну програму шифрування." -#: lib/setup.c:308 lib/setup.c:2769 lib/verity/verity.c:109 +#: lib/setup.c:308 lib/setup.c:2779 lib/verity/verity.c:109 #, c-format msgid "Hash algorithm %s not supported." msgstr "Підтримки алгоритму хешування %s не передбачено." @@ -155,7 +155,7 @@ msgstr "Помилка під час обробки ключа (на основ msgid "Cannot determine device type. Incompatible activation of device?" msgstr "Не вдалося визначити тип пристрою. Несумісна дія з активації пристрою?" -#: lib/setup.c:398 lib/setup.c:4177 +#: lib/setup.c:398 lib/setup.c:4193 msgid "This operation is supported only for LUKS device." msgstr "Підтримку цієї дії передбачено лише для пристроїв LUKS." @@ -177,7 +177,7 @@ msgstr "Слот ключа %d є некоректним, будь ласка, msgid "Key slot %d is full, please select another one." msgstr "Слот ключа %d заповнено, будь ласка, виберіть інший." -#: lib/setup.c:534 lib/setup.c:3878 +#: lib/setup.c:534 lib/setup.c:3888 msgid "Device size is not aligned to device logical block size." msgstr "Розмір пристрою не вирівняно за розміром логічного блоку пристрою." @@ -186,7 +186,7 @@ msgstr "Розмір пристрою не вирівняно за розмір msgid "Header detected but device %s is too small." msgstr "Виявлено заголовок, але об’єм пристрою %s є надто малим." -#: lib/setup.c:672 lib/setup.c:3763 lib/setup.c:5272 +#: lib/setup.c:672 lib/setup.c:3773 lib/setup.c:5288 #: lib/luks2/luks2_reencrypt.c:3949 lib/luks2/luks2_reencrypt.c:4438 msgid "This operation is not supported for this device type." msgstr "Підтримки цієї дії для цього типу пристроїв не передбачено." @@ -199,553 +199,553 @@ msgstr "Виконуємо заборонену дію із повторного msgid "Failed to rollback LUKS2 metadata in memory." msgstr "Не вдалося відкотити метадані LUKS2 у пам'яті." -#: lib/setup.c:896 lib/luks1/keymanage.c:236 lib/luks1/keymanage.c:514 +#: lib/setup.c:896 lib/luks1/keymanage.c:241 lib/luks1/keymanage.c:519 #: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 #: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 #: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2954 -#: src/cryptsetup.c:3022 src/utils_reencrypt.c:2284 +#: src/cryptsetup.c:3022 src/utils_reencrypt.c:2310 #: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 #, c-format msgid "Device %s is not a valid LUKS device." msgstr "Пристрій %s не є коректним пристроєм LUKS." -#: lib/setup.c:899 lib/luks1/keymanage.c:517 +#: lib/setup.c:899 lib/luks1/keymanage.c:522 #, c-format msgid "Unsupported LUKS version %d." msgstr "Непідтримувана версія LUKS, %d." -#: lib/setup.c:1273 +#: lib/setup.c:1279 #, c-format msgid "No known cipher specification pattern detected for active device %s." msgstr "Не виявлено жодного відомого зразка специфікації шифрування для активного пристрою %s." -#: lib/setup.c:1518 lib/setup.c:3510 lib/setup.c:3602 lib/setup.c:3614 -#: lib/setup.c:3786 lib/setup.c:5850 +#: lib/setup.c:1528 lib/setup.c:3520 lib/setup.c:3612 lib/setup.c:3624 +#: lib/setup.c:3796 lib/setup.c:5866 #, c-format msgid "Device %s is not active." msgstr "Пристрій %s є неактивним." -#: lib/setup.c:1535 +#: lib/setup.c:1545 #, c-format msgid "Underlying device for crypt device %s disappeared." msgstr "Зник основний пристрій для пристрою для шифрування %s." -#: lib/setup.c:1617 +#: lib/setup.c:1627 msgid "Invalid plain crypt parameters." msgstr "Некоректні параметри звичайного шифрування." -#: lib/setup.c:1622 lib/setup.c:2672 +#: lib/setup.c:1632 lib/setup.c:2682 msgid "Invalid key size." msgstr "Некоректний розмір ключа." -#: lib/setup.c:1627 lib/setup.c:2677 lib/setup.c:2882 +#: lib/setup.c:1637 lib/setup.c:2687 lib/setup.c:2892 msgid "UUID is not supported for this crypt type." msgstr "Підтримки UUID для цього типу шифрування не передбачено." -#: lib/setup.c:1632 lib/setup.c:2682 +#: lib/setup.c:1642 lib/setup.c:2692 msgid "Detached metadata device is not supported for this crypt type." msgstr "Підтримки пристрою від'єднаних метаданих для цього типу шифрування не передбачено." -#: lib/setup.c:1642 lib/setup.c:1890 lib/luks2/luks2_reencrypt.c:3035 +#: lib/setup.c:1652 lib/setup.c:1900 lib/luks2/luks2_reencrypt.c:3035 #: src/cryptsetup.c:1492 src/cryptsetup.c:3761 msgid "Unsupported encryption sector size." msgstr "Непідтримуваний розмір сектора шифрування." -#: lib/setup.c:1650 lib/setup.c:1919 lib/setup.c:3872 +#: lib/setup.c:1660 lib/setup.c:1929 lib/setup.c:3882 msgid "Device size is not aligned to requested sector size." msgstr "Розмір пристрою не вирівняно за вказаним розміром сектора." -#: lib/setup.c:1702 lib/setup.c:1954 lib/setup.c:2331 +#: lib/setup.c:1712 lib/setup.c:1964 lib/setup.c:2341 msgid "Can't format LUKS without device." msgstr "Форматування LUKS без пристрою неможливе." -#: lib/setup.c:1707 lib/setup.c:1959 +#: lib/setup.c:1717 lib/setup.c:1969 #, c-format msgid "Zoned device %s cannot be used for LUKS header." msgstr "Зонований пристрій %s не можна використовувати для заголовка LUKS." -#: lib/setup.c:1714 lib/setup.c:1966 lib/setup.c:2337 +#: lib/setup.c:1724 lib/setup.c:1976 lib/setup.c:2347 msgid "Requested data alignment is not compatible with data offset." msgstr "Потрібне вам вирівнювання даних є несумісним із відступом у даних." -#: lib/setup.c:1754 lib/setup.c:1984 +#: lib/setup.c:1764 lib/setup.c:1994 msgid "WARNING: DAX device can corrupt data as it does not guarantee atomic sector updates.\n" msgstr "УВАГА: пристрій DAX може пошкодити дані, оскільки для нього не гарантовано атомарні оновлення секторів.\n" -#: lib/setup.c:1792 lib/setup.c:2091 lib/setup.c:2112 lib/setup.c:2520 -#: lib/setup.c:2567 lib/setup.c:2899 +#: lib/setup.c:1802 lib/setup.c:2101 lib/setup.c:2122 lib/setup.c:2530 +#: lib/setup.c:2577 lib/setup.c:2909 #, c-format msgid "Cannot wipe header on device %s." msgstr "Не можна витирати заголовок на пристрої %s." -#: lib/setup.c:1805 lib/setup.c:2164 +#: lib/setup.c:1815 lib/setup.c:2174 #, c-format msgid "Device %s is too small for activation, there is no remaining space for data.\n" msgstr "Пристрій %s є надто малим для активації, на ньому не лишиться місця для даних.\n" -#: lib/setup.c:1846 +#: lib/setup.c:1856 msgid "Volume key is too small for encryption with integrity extensions." msgstr "Ключ тому є надто малим для шифрування із розширеннями цілісності." -#: lib/setup.c:1850 +#: lib/setup.c:1860 msgid "Integrity key size is too small." msgstr "Розмір ключа цілісності є надто малим." -#: lib/setup.c:1859 +#: lib/setup.c:1869 #, c-format msgid "Cipher %s-%s (key size %zd bits) is not available." msgstr "Шифрування %s-%s (розмір ключа — %zd бітів) є недоступним." -#: lib/setup.c:1900 +#: lib/setup.c:1910 msgid "WARNING: The device activation will fail, dm-crypt is missing support for requested encryption sector size.\n" msgstr "Увага: спроба активувати пристрій завершиться невдало, у dm-crypt не передбачено підтримки для вказаного розміру сектора шифрування.\n" -#: lib/setup.c:2094 lib/setup.c:2461 lib/setup.c:2523 lib/utils_device.c:906 +#: lib/setup.c:2104 lib/setup.c:2471 lib/setup.c:2533 lib/utils_device.c:906 #: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3074 #: lib/luks2/luks2_reencrypt.c:4498 #, c-format msgid "Device %s is too small." msgstr "Об’єм пристрою %s є надто малим." -#: lib/setup.c:2105 lib/setup.c:2144 lib/setup.c:2560 lib/setup.c:2618 +#: lib/setup.c:2115 lib/setup.c:2154 lib/setup.c:2570 lib/setup.c:2628 #, c-format msgid "Cannot format device %s in use." msgstr "Не можна форматувати пристрій %s, який перебуває у користуванні." -#: lib/setup.c:2108 lib/setup.c:2147 lib/setup.c:2563 lib/setup.c:2621 +#: lib/setup.c:2118 lib/setup.c:2157 lib/setup.c:2573 lib/setup.c:2631 #, c-format msgid "Cannot format device %s, permission denied." msgstr "Не можна форматувати пристрій %s, недостатні права доступу." -#: lib/setup.c:2132 lib/setup.c:2590 lib/setup.c:2972 +#: lib/setup.c:2142 lib/setup.c:2600 lib/setup.c:2982 #, c-format msgid "Cannot format integrity for device %s." msgstr "Не вдалося форматувати цілісність для пристрою %s." -#: lib/setup.c:2151 lib/setup.c:2629 +#: lib/setup.c:2161 lib/setup.c:2639 #, c-format msgid "Cannot format device %s." msgstr "Не вдалося форматувати пристрій %s." -#: lib/setup.c:2194 +#: lib/setup.c:2204 msgid "Cannot get OPAL alignment parameters." msgstr "Не вдалося отримати параметри вирівнювання OPAL." -#: lib/setup.c:2206 +#: lib/setup.c:2216 msgid "Bogus OPAL logical block size." msgstr "Фіктивний розмір логічного блоку OPAL." -#: lib/setup.c:2211 lib/luks2/hw_opal/hw_opal.c:305 +#: lib/setup.c:2221 lib/luks2/hw_opal/hw_opal.c:305 msgid "Bogus OPAL logical block size differs from device block size." msgstr "Фіктивний розмір логічного блоку OPAL відрізняється від розміру блоку пристрою." -#: lib/setup.c:2217 +#: lib/setup.c:2227 msgid "Requested data offset is not compatible with OPAL block size." msgstr "Потрібний вам відступ даних є несумісним із розміром блоку OPAL." -#: lib/setup.c:2224 +#: lib/setup.c:2234 msgid "Requested data alignment is not compatible with OPAL alignment." msgstr "Потрібне вам вирівнювання даних є несумісним із вирівнюванням OPAL." -#: lib/setup.c:2244 +#: lib/setup.c:2254 msgid "Data offset does not satisfy OPAL alignment requirements." msgstr "Відступ даних не відповідає вимогам вирівнювання OPAL." -#: lib/setup.c:2257 +#: lib/setup.c:2267 msgid "Requested data alignment does not satisfy locking range alignment requirements." msgstr "Потрібне вам вирівнювання даних не відповідає вимогам щодо вирівнювання заблокованого діапазону." -#: lib/setup.c:2471 +#: lib/setup.c:2481 #, c-format msgid "Compensating device size by % sectors to align it with OPAL alignment granularity." msgstr "Компенсуємо розмір пристрою на % секторів для вирівнювання його за рівнем розбиття вирівнювання OPAL." -#: lib/setup.c:2531 lib/setup.c:4260 lib/setup.c:4466 lib/utils_wipe.c:356 -#: lib/luks2/luks2_json_metadata.c:2742 lib/luks2/luks2_json_metadata.c:3017 +#: lib/setup.c:2541 lib/setup.c:4276 lib/setup.c:4482 lib/utils_wipe.c:356 +#: lib/luks2/luks2_json_metadata.c:2734 lib/luks2/luks2_json_metadata.c:3009 #, c-format msgid "Failed to acquire OPAL lock on device %s." msgstr "Не вдалося отримати блокування OPAL на пристрої %s." -#: lib/setup.c:2541 +#: lib/setup.c:2551 msgid "Incorrect OPAL Admin key." msgstr "Неправильний адміністративний ключ OPAL." -#: lib/setup.c:2543 +#: lib/setup.c:2553 msgid "Cannot setup OPAL segment." msgstr "Не вдалося налаштувати сегмент OPAL." -#: lib/setup.c:2625 +#: lib/setup.c:2635 #, c-format msgid "Cannot format device %s, OPAL device seems to be fully write-protected now." msgstr "Не вдалося форматувати пристрій %s, здається, пристрій OPAL тепер повністю захищено від запису." -#: lib/setup.c:2627 +#: lib/setup.c:2637 msgid "This is perhaps a bug in firmware. Run OPAL PSID reset and reconnect for recovery." msgstr "Можливо, це вада у мікропрограмі. Виконайте скидання PSID OPAL і повторно з'єднайте пристрій для відновлення." -#: lib/setup.c:2647 +#: lib/setup.c:2657 #, c-format msgid "Locking range %d reset on device %s failed." msgstr "Помилка під час спроби скидання діапазону блокування %d на пристрої %s." -#: lib/setup.c:2667 +#: lib/setup.c:2677 msgid "Can't format LOOPAES without device." msgstr "Не можна форматувати LOOPAES без пристрою." -#: lib/setup.c:2712 +#: lib/setup.c:2722 msgid "Can't format VERITY without device." msgstr "Форматування VERITY без пристрою неможливе." -#: lib/setup.c:2723 lib/verity/verity.c:88 +#: lib/setup.c:2733 lib/verity/verity.c:88 #, c-format msgid "Unsupported VERITY hash type %d." msgstr "Непідтримуваний тип хешування VERITY, %d." -#: lib/setup.c:2729 lib/verity/verity.c:96 +#: lib/setup.c:2739 lib/verity/verity.c:96 msgid "Unsupported VERITY block size." msgstr "Непідтримуваний розмір блоку VERITY." -#: lib/setup.c:2734 lib/verity/verity.c:61 +#: lib/setup.c:2744 lib/verity/verity.c:61 msgid "Unsupported VERITY hash offset." msgstr "Непідтримуваний відступ хешу VERITY." -#: lib/setup.c:2739 +#: lib/setup.c:2749 msgid "Unsupported VERITY FEC offset." msgstr "Непідтримуваний зсув FEC VERITY." -#: lib/setup.c:2763 +#: lib/setup.c:2773 msgid "Data area overlaps with hash area." msgstr "Область даних перекривається із областю хешу." -#: lib/setup.c:2788 +#: lib/setup.c:2798 msgid "Hash area overlaps with FEC area." msgstr "Область хешування перекриваються з областю FEC." -#: lib/setup.c:2795 +#: lib/setup.c:2805 msgid "Data area overlaps with FEC area." msgstr "Область даних перекривається із областю FEC." -#: lib/setup.c:2887 +#: lib/setup.c:2897 msgid "Integrity key size mismatch." msgstr "Невідповідність розмірів ключів цілісності." -#: lib/setup.c:2938 +#: lib/setup.c:2948 #, c-format msgid "WARNING: Requested tag size %d bytes differs from %s size output (%d bytes).\n" msgstr "Увага: бажаний розмір мітки у %d байтів відрізняється від розміру у результаті %s (%d байтів).\n" -#: lib/setup.c:3051 lib/setup.c:3153 +#: lib/setup.c:3061 lib/setup.c:3163 #, c-format msgid "Unknown or unsupported device type %s requested." msgstr "Надіслано запит щодо невідомого або непідтримуваного типу пристрою %s." -#: lib/setup.c:3067 +#: lib/setup.c:3077 #, c-format msgid "Device %s does not provide inline integrity data fields." msgstr "На пристрої %s не надається вбудованих полів даних цілісності." -#: lib/setup.c:3073 +#: lib/setup.c:3083 #, c-format msgid "Inline tag size % [bytes] is larger than % provided by device %s." msgstr "Розмір вбудованої мітки % [байтів] перевищує %, який надано пристроєм %s." -#: lib/setup.c:3088 +#: lib/setup.c:3098 #, c-format msgid "Sector must be the same as device hardware sector (%zu bytes)." msgstr "Сектор має збігатися із апаратним сектором пристрою (%zu байтів)." -#: lib/setup.c:3518 lib/setup.c:3607 lib/setup.c:3620 +#: lib/setup.c:3528 lib/setup.c:3617 lib/setup.c:3630 #, c-format msgid "Unsupported parameters on device %s." msgstr "Непідтримувані параметри на пристрої %s." -#: lib/setup.c:3524 lib/setup.c:3627 lib/luks2/luks2_reencrypt.c:2929 +#: lib/setup.c:3534 lib/setup.c:3637 lib/luks2/luks2_reencrypt.c:2929 #: lib/luks2/luks2_reencrypt.c:3198 lib/luks2/luks2_reencrypt.c:3595 #, c-format msgid "Mismatching parameters on device %s." msgstr "Невідповідність параметрів на пристрої %s." -#: lib/setup.c:3650 +#: lib/setup.c:3660 msgid "Crypt devices mismatch." msgstr "Невідповідність пристроїв шифрування." -#: lib/setup.c:3682 lib/setup.c:3687 lib/luks2/luks2_reencrypt.c:2413 +#: lib/setup.c:3692 lib/setup.c:3697 lib/luks2/luks2_reencrypt.c:2413 #: lib/luks2/luks2_reencrypt.c:2945 lib/luks2/luks2_reencrypt.c:4237 #, c-format msgid "Failed to reload device %s." msgstr "Не вдалося перезавантажити пристрій %s." -#: lib/setup.c:3693 lib/setup.c:3699 lib/luks2/luks2_reencrypt.c:2383 +#: lib/setup.c:3703 lib/setup.c:3709 lib/luks2/luks2_reencrypt.c:2383 #: lib/luks2/luks2_reencrypt.c:2390 lib/luks2/luks2_reencrypt.c:2959 #, c-format msgid "Failed to suspend device %s." msgstr "Не вдалося приспати пристрій %s." -#: lib/setup.c:3705 lib/luks2/luks2_reencrypt.c:2397 +#: lib/setup.c:3715 lib/luks2/luks2_reencrypt.c:2397 #: lib/luks2/luks2_reencrypt.c:2980 lib/luks2/luks2_reencrypt.c:4150 #: lib/luks2/luks2_reencrypt.c:4241 #, c-format msgid "Failed to resume device %s." msgstr "Не вдалося відновити роботу пристрою %s." -#: lib/setup.c:3720 +#: lib/setup.c:3730 #, c-format msgid "Fatal error while reloading device %s (on top of device %s)." msgstr "Критична помилка під час перезавантаження пристрої %s (над пристроєм %s)." -#: lib/setup.c:3723 lib/setup.c:3725 +#: lib/setup.c:3733 lib/setup.c:3735 #, c-format msgid "Failed to switch device %s to dm-error." msgstr "Не вдалося перемкнути пристрій %s у режим dm-error." -#: lib/setup.c:3768 +#: lib/setup.c:3778 msgid "Can not resize LUKS2 device with static size." msgstr "Неможливо змінити розмір пристрою LUKS2 зі статичним розміром." -#: lib/setup.c:3773 +#: lib/setup.c:3783 msgid "Resize of LUKS2 device with integrity protection is not supported." msgstr "Підтримки зміни розмірів пристрою LUKS2 із захистом цілісності не передбачено." -#: lib/setup.c:3819 +#: lib/setup.c:3829 msgid "Cannot resize loop device." msgstr "Неможливо змінити розмір петльового пристрою." -#: lib/setup.c:3863 +#: lib/setup.c:3873 msgid "WARNING: Maximum size already set or kernel doesn't support resize.\n" msgstr "УВАГА: уже вказано максимальний розмір або у ядрі не передбачено можливості зміни розміру.\n" -#: lib/setup.c:3929 +#: lib/setup.c:3939 msgid "Resize failed, the kernel doesn't support it." msgstr "Не вдалося змінити розмір, у ядрі не передбачено підтримки такої дії." -#: lib/setup.c:3961 +#: lib/setup.c:3971 msgid "Do you really want to change UUID of device?" msgstr "Ви справді хочете змінити UUID пристрою?" -#: lib/setup.c:4053 +#: lib/setup.c:4061 lib/setup.c:4069 msgid "Header backup file does not contain compatible LUKS header." msgstr "Файл резервної копії заголовка не містить сумісного із LUKS заголовка." -#: lib/setup.c:4160 +#: lib/setup.c:4176 #, c-format msgid "Volume %s is not active." msgstr "Том %s не є активним." -#: lib/setup.c:4215 +#: lib/setup.c:4231 #, c-format msgid "Volume %s is already suspended." msgstr "Том %s вже приспано." -#: lib/setup.c:4241 +#: lib/setup.c:4257 #, c-format msgid "Suspend is not supported for device %s." msgstr "Підтримки присипляння для пристрою %s не передбачено." -#: lib/setup.c:4243 lib/setup.c:4251 +#: lib/setup.c:4259 lib/setup.c:4267 #, c-format msgid "Error during suspending device %s." msgstr "Помилка під час спроби приспати пристрій %s." -#: lib/setup.c:4266 +#: lib/setup.c:4282 #, c-format msgid "Device %s was suspended but hardware OPAL device cannot be locked." msgstr "Роботу пристрою %s було призупинено, але апаратний пристрій OPAL не може бути заблоковано." -#: lib/setup.c:4297 lib/setup.c:4491 +#: lib/setup.c:4313 lib/setup.c:4507 #, c-format msgid "Resume is not supported for device %s." msgstr "Підтримки дії з пробудження для пристрою %s не передбачено." -#: lib/setup.c:4299 lib/setup.c:4481 lib/setup.c:4493 +#: lib/setup.c:4315 lib/setup.c:4497 lib/setup.c:4509 #, c-format msgid "Error during resuming device %s." msgstr "Помилка під час спроби пробудити пристрій %s." -#: lib/setup.c:4335 +#: lib/setup.c:4351 msgid "Failed to unlink volume key from user specified keyring." msgstr "Не вдалося скасувати прив'язку ключа тому до вказаного користувачем сховища ключів." -#: lib/setup.c:4457 lib/setup.c:5637 +#: lib/setup.c:4473 lib/setup.c:5653 msgid "Failed to link volume key in user defined keyring." msgstr "Не вдалося пов'язати ключ тому із визначеним користувачем сховищем ключів." -#: lib/setup.c:4556 src/cryptsetup.c:2722 +#: lib/setup.c:4572 src/cryptsetup.c:2722 #, c-format msgid "Volume %s is not suspended." msgstr "Том %s не приспано." -#: lib/setup.c:4667 lib/setup.c:7310 lib/setup.c:7332 src/cryptsetup.c:1856 +#: lib/setup.c:4683 lib/setup.c:7326 lib/setup.c:7348 src/cryptsetup.c:1856 #: src/cryptsetup.c:2260 src/cryptsetup.c:2278 src/utils_reencrypt.c:306 -#: src/utils_reencrypt.c:1969 +#: src/utils_reencrypt.c:1995 msgid "Volume key does not match the volume." msgstr "Ключ тому не відповідає тому." -#: lib/setup.c:4821 +#: lib/setup.c:4837 msgid "Failed to swap new key slot." msgstr "Не вдалося зарезервувати новий слот ключа." -#: lib/setup.c:4919 +#: lib/setup.c:4935 #, c-format msgid "Key slot %d is invalid." msgstr "Слот ключа %d є некоректним." -#: lib/setup.c:4925 src/cryptsetup.c:1977 src/cryptsetup.c:2437 +#: lib/setup.c:4941 src/cryptsetup.c:1977 src/cryptsetup.c:2437 #: src/cryptsetup.c:3122 src/cryptsetup.c:3182 #, c-format msgid "Keyslot %d is not active." msgstr "Слот ключа %d не є активним." -#: lib/setup.c:4944 +#: lib/setup.c:4960 msgid "Device header overlaps with data area." msgstr "Заголовок пристрою перекривається із областю даних." -#: lib/setup.c:5165 +#: lib/setup.c:5181 msgid "Reencryption in-progress. Cannot activate device." msgstr "Виконуємо повторне шифрування. Не можна активувати пристрій." -#: lib/setup.c:5167 lib/luks2/luks2_json_metadata.c:2913 +#: lib/setup.c:5183 lib/luks2/luks2_json_metadata.c:2905 #: lib/luks2/luks2_reencrypt.c:3726 msgid "Failed to get reencryption lock." msgstr "Не вдалося отримати стан блокування для повторного шифрування." -#: lib/setup.c:5189 +#: lib/setup.c:5205 msgid "LUKS2 reencryption recovery using volume key(s) failed." msgstr "Не вдалося виконати відновлення даних повторного шифрування LUKS2 з використанням ключів тому." -#: lib/setup.c:5325 +#: lib/setup.c:5341 #, c-format msgid "Device %s already exists." msgstr "Пристрій %s вже існує." -#: lib/setup.c:5332 +#: lib/setup.c:5348 #, c-format msgid "Cannot use device %s, name is invalid or still in use." msgstr "Неможливо скористатися пристроєм %s, некоректна назва або пристрій усе ще використовується." -#: lib/setup.c:5344 +#: lib/setup.c:5360 msgid "Reencryption volume keys do not match the volume." msgstr "Ключі повторного шифрування тому не відповідають тому." -#: lib/setup.c:5361 +#: lib/setup.c:5377 msgid "Incorrect volume key specified for plain device." msgstr "Для пристрою зі звичайним шифруванням вказано помилковий ключ тому." -#: lib/setup.c:5387 lib/setup.c:5448 +#: lib/setup.c:5403 lib/setup.c:5464 msgid "Device type is not properly initialized." msgstr "Тип пристрою не ініціалізовано належним чином." -#: lib/setup.c:5486 +#: lib/setup.c:5502 msgid "Kernel keyring is not supported by the kernel." msgstr "У ядрі не передбачено підтримки сховища ключів ядра." -#: lib/setup.c:5490 +#: lib/setup.c:5506 msgid "Kernel keyring missing: required for passing signature to kernel." msgstr "Немає сховища ключів ядра: це сховище потрібне для передавання підпису ядру." -#: lib/setup.c:5545 +#: lib/setup.c:5561 #, c-format msgid "Cannot use keyring key %s." msgstr "Не можна використовувати ключ сховища ключів %s." -#: lib/setup.c:5758 +#: lib/setup.c:5774 msgid "Incorrect root hash specified for verity device." msgstr "Для пристрою перевірки вказано помилковий кореневий хеш." -#: lib/setup.c:5799 lib/setup.c:5824 +#: lib/setup.c:5815 lib/setup.c:5840 msgid "OPAL does not support deferred deactivation." msgstr "В OPAL не передбачено підтримки відкладеної деактивації." -#: lib/setup.c:5814 lib/setup.c:5845 lib/luks2/luks2_json_metadata.c:2978 +#: lib/setup.c:5830 lib/setup.c:5861 lib/luks2/luks2_json_metadata.c:2970 #: src/utils_reencrypt.c:89 #, c-format msgid "Device %s is still in use." msgstr "Пристрій %s все ще використовується." -#: lib/setup.c:5832 +#: lib/setup.c:5848 #, c-format msgid "Could not cancel deferred remove from device %s." msgstr "Не вдалося скасувати відкладене вилучення з пристрою %s." -#: lib/setup.c:5854 +#: lib/setup.c:5870 #, c-format msgid "Invalid device %s." msgstr "Некоректний пристрій %s." -#: lib/setup.c:6001 +#: lib/setup.c:6017 msgid "Volume key buffer too small." msgstr "Буфер ключів тому є занадто малим." -#: lib/setup.c:6012 +#: lib/setup.c:6028 msgid "Cannot retrieve volume key for LUKS2 device." msgstr "Неможливо отримати ключ тому для пристрою із шифруванням LUKS2." -#: lib/setup.c:6021 +#: lib/setup.c:6037 msgid "Cannot retrieve volume key for LUKS1 device." msgstr "Неможливо отримати ключ тому для пристрою із шифруванням LUKS1." -#: lib/setup.c:6035 +#: lib/setup.c:6051 msgid "Cannot retrieve volume key for plain device." msgstr "Неможливо отримати ключ тому для пристрою зі звичайним шифруванням." -#: lib/setup.c:6043 +#: lib/setup.c:6059 msgid "Cannot retrieve root hash for verity device." msgstr "Не вдалося отримати кореневий хеш для пристрою VERITY." -#: lib/setup.c:6052 +#: lib/setup.c:6068 msgid "Cannot retrieve volume key for BITLK device." msgstr "Неможливо отримати ключ тому для пристрою BITLK." -#: lib/setup.c:6057 +#: lib/setup.c:6073 msgid "Cannot retrieve volume key for FVAULT2 device." msgstr "Неможливо отримати ключ тому для пристрою FVAULT2." -#: lib/setup.c:6059 +#: lib/setup.c:6075 #, c-format msgid "This operation is not supported for %s crypt device." msgstr "Підтримки цієї дії для шифрованого пристрою %s не передбачено." -#: lib/setup.c:6244 lib/setup.c:6255 +#: lib/setup.c:6260 lib/setup.c:6271 msgid "Dump operation is not supported for this device type." msgstr "Підтримки дії зі створення дампу для цього типу пристроїв не передбачено." -#: lib/setup.c:6635 +#: lib/setup.c:6651 #, c-format msgid "Data offset is not multiple of %u bytes." msgstr "Зсув у даних не є кратним до %u байтів." -#: lib/setup.c:6943 +#: lib/setup.c:6959 #, c-format msgid "Cannot convert device %s which is still in use." msgstr "Не можна перетворити пристрій %s, який перебуває у користуванні." -#: lib/setup.c:7251 lib/setup.c:7406 +#: lib/setup.c:7267 lib/setup.c:7422 #, c-format msgid "Failed to assign keyslot %u as the new volume key." msgstr "Не вдалося прив'язати слот ключа %u як новий ключ тому." -#: lib/setup.c:7275 +#: lib/setup.c:7291 msgid "Failed to initialize default LUKS2 keyslot parameters." msgstr "Не вдалося ініціалізувати типові параметри слоту ключів LUKS2." -#: lib/setup.c:7281 +#: lib/setup.c:7297 #, c-format msgid "Failed to assign keyslot %d to digest." msgstr "Не вдалося прив'язати слот ключа %d до контрольної суми." -#: lib/setup.c:7523 +#: lib/setup.c:7539 msgid "Cannot add key slot, all slots disabled and no volume key provided." msgstr "Не вдалося додати слот ключа, всі слоти вимкнено і не вказано ключа тому." -#: lib/setup.c:7611 lib/setup.c:7626 lib/verity/verity.c:333 +#: lib/setup.c:7627 lib/setup.c:7642 lib/verity/verity.c:333 msgid "Failed to load key in kernel keyring." msgstr "Не вдалося завантажити ключ до сховища ключів ядра." -#: lib/setup.c:7807 +#: lib/setup.c:7823 #, c-format msgid "Could not find keyring described by \"%s\"." msgstr "Не вдалося знайти сховище ключів, яке описано «%s»." -#: lib/setup.c:7872 +#: lib/setup.c:7888 msgid "Failed to acquire global memory-hard access serialization lock." msgstr "Не вдалося створити загальне блокування серіалізації доступу до пам'яті." @@ -787,7 +787,7 @@ msgid "Cannot read requested amount of data." msgstr "Не вдалося прочитати бажаний об’єм даних." #: lib/utils_device.c:207 lib/utils_storage_wrappers.c:99 -#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2257 +#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2283 #, c-format msgid "Device %s does not exist or access denied." msgstr "Пристрою %s не існує або доступ до цього пристрою заборонено." @@ -903,16 +903,16 @@ msgstr "Вказана кількість паралельних потоків msgid "Only PBKDF2 is supported in FIPS mode." msgstr "У режимі FIPS передбачено підтримку лише PBKDF2." -#: lib/utils_benchmark.c:171 +#: lib/utils_benchmark.c:175 msgid "PBKDF benchmark disabled but iterations not set." msgstr "Тестування PBKDF вимкнено, але кількість ітерацій не встановлено." -#: lib/utils_benchmark.c:190 +#: lib/utils_benchmark.c:194 #, c-format msgid "Not compatible PBKDF2 options (using hash algorithm %s)." msgstr "Несумісні параметри PBKDF2 (з використанням алгоритму хешування %s)." -#: lib/utils_benchmark.c:210 +#: lib/utils_benchmark.c:214 msgid "Not compatible PBKDF options." msgstr "Несумісні параметри PBKDF." @@ -961,9 +961,9 @@ msgstr "Розмір ключа у режимі XTS має бути рівним msgid "Cipher specification should be in [cipher]-[mode]-[iv] format." msgstr "Специфікацію шифрування слід вказувати так: [алгоритм]-[режим]-[iv]." -#: lib/luks1/keyencryption.c:85 lib/luks1/keymanage.c:353 -#: lib/luks1/keymanage.c:664 lib/luks1/keymanage.c:1132 -#: lib/luks2/luks2_json_metadata.c:1518 lib/luks2/luks2_keyslot.c:711 +#: lib/luks1/keyencryption.c:85 lib/luks1/keymanage.c:358 +#: lib/luks1/keymanage.c:665 lib/luks1/keymanage.c:1133 +#: lib/luks2/luks2_json_metadata.c:1510 lib/luks2/luks2_keyslot.c:711 #, c-format msgid "Cannot write to device %s, permission denied." msgstr "Не вдалося виконати запис на пристрій %s, недостатні права доступу." @@ -981,13 +981,13 @@ msgstr "Не вдалося отримати доступ до пристрою msgid "IO error while encrypting keyslot." msgstr "Помилка введення-виведення під час шифрування слоту ключів." -#: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:356 -#: lib/luks1/keymanage.c:617 lib/luks1/keymanage.c:667 lib/tcrypt/tcrypt.c:659 +#: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:361 +#: lib/luks1/keymanage.c:619 lib/luks1/keymanage.c:668 lib/tcrypt/tcrypt.c:659 #: lib/fvault2/fvault2.c:872 lib/verity/verity.c:67 lib/verity/verity.c:183 #: lib/verity/verity_hash.c:312 lib/verity/verity_hash.c:321 #: lib/verity/verity_hash.c:350 lib/verity/verity_fec.c:247 #: lib/verity/verity_fec.c:259 lib/verity/verity_fec.c:264 -#: lib/luks2/luks2_json_metadata.c:1521 src/utils_reencrypt_luks1.c:108 +#: lib/luks2/luks2_json_metadata.c:1513 src/utils_reencrypt_luks1.c:108 #: src/utils_reencrypt_luks1.c:120 #, c-format msgid "Cannot open device %s." @@ -1002,61 +1002,61 @@ msgstr "Помилка введення-виведення під час роз msgid "Device %s is too small. (LUKS1 requires at least % bytes.)" msgstr "Обсяг пристрою %s є надто малим. (LUKS1 потрібно принаймні % байтів.)" -#: lib/luks1/keymanage.c:138 lib/luks1/keymanage.c:146 -#: lib/luks1/keymanage.c:158 lib/luks1/keymanage.c:169 -#: lib/luks1/keymanage.c:181 +#: lib/luks1/keymanage.c:143 lib/luks1/keymanage.c:151 +#: lib/luks1/keymanage.c:163 lib/luks1/keymanage.c:174 +#: lib/luks1/keymanage.c:186 #, c-format msgid "LUKS keyslot %u is invalid." msgstr "Слот ключа LUKS %u є некоректним." -#: lib/luks1/keymanage.c:254 lib/luks2/luks2_json_metadata.c:1382 +#: lib/luks1/keymanage.c:259 lib/luks2/luks2_json_metadata.c:1382 #, c-format msgid "Requested header backup file %s already exists." msgstr "Потрібний вам файл резервної копії заголовка, %s, вже існує." -#: lib/luks1/keymanage.c:256 lib/luks2/luks2_json_metadata.c:1384 +#: lib/luks1/keymanage.c:261 lib/luks2/luks2_json_metadata.c:1384 #, c-format msgid "Cannot create header backup file %s." msgstr "Не вдалося створити файл резервної копії заголовка, %s." -#: lib/luks1/keymanage.c:263 lib/luks2/luks2_json_metadata.c:1391 +#: lib/luks1/keymanage.c:268 lib/luks2/luks2_json_metadata.c:1391 #, c-format msgid "Cannot write header backup file %s." msgstr "Не вдалося записати файл резервної копії заголовка, %s." -#: lib/luks1/keymanage.c:295 lib/luks2/luks2_json_metadata.c:1428 +#: lib/luks1/keymanage.c:300 lib/luks2/luks2_json_metadata.c:1420 msgid "Backup file does not contain valid LUKS header." msgstr "Файл резервної копії не містить коректного заголовка LUKS." -#: lib/luks1/keymanage.c:308 lib/luks1/keymanage.c:580 -#: lib/luks2/luks2_json_metadata.c:1450 +#: lib/luks1/keymanage.c:313 lib/luks1/keymanage.c:585 +#: lib/luks2/luks2_json_metadata.c:1442 #, c-format msgid "Cannot open header backup file %s." msgstr "Не вдалося відкрити файл резервної копії заголовка, %s." -#: lib/luks1/keymanage.c:316 lib/luks2/luks2_json_metadata.c:1458 +#: lib/luks1/keymanage.c:321 lib/luks2/luks2_json_metadata.c:1450 #, c-format msgid "Cannot read header backup file %s." msgstr "Не вдалося прочитати дані з файла резервної копії заголовка, %s." -#: lib/luks1/keymanage.c:326 +#: lib/luks1/keymanage.c:331 msgid "Data offset or key size differs on device and backup, restore failed." msgstr "Відступ у даних або розмір ключа на пристрої і у резервній копії є різними. Відновлення неможливе." -#: lib/luks1/keymanage.c:334 +#: lib/luks1/keymanage.c:339 #, c-format msgid "Device %s %s%s" msgstr "Пристрій %s %s%s" -#: lib/luks1/keymanage.c:335 +#: lib/luks1/keymanage.c:340 msgid "does not contain LUKS header. Replacing header can destroy data on that device." msgstr "не містить заголовка LUKS. Заміна заголовка може зруйнувати дані, що зберігаються на пристрої." -#: lib/luks1/keymanage.c:336 +#: lib/luks1/keymanage.c:341 msgid "already contains LUKS header. Replacing header will destroy existing keyslots." msgstr "вже містить заголовок LUKS. Заміна заголовка призведе до руйнування вже створених слотів ключів." -#: lib/luks1/keymanage.c:337 lib/luks2/luks2_json_metadata.c:1490 +#: lib/luks1/keymanage.c:342 lib/luks2/luks2_json_metadata.c:1482 msgid "" "\n" "WARNING: real device header has different UUID than backup!" @@ -1064,130 +1064,130 @@ msgstr "" "\n" "ПОПЕРЕДЖЕННЯ: заголовок, що зберігається на пристрої, має інший UUID, ніж заголовок у резервній копії!" -#: lib/luks1/keymanage.c:385 +#: lib/luks1/keymanage.c:390 msgid "Non standard key size, manual repair required." msgstr "Нестандартний розмір ключа, слід виправити дані вручну." -#: lib/luks1/keymanage.c:395 +#: lib/luks1/keymanage.c:400 msgid "Non standard keyslots alignment, manual repair required." msgstr "Нестандартне вирівнювання слотів ключів, слід виправити дані вручну." -#: lib/luks1/keymanage.c:404 +#: lib/luks1/keymanage.c:409 #, c-format msgid "Cipher mode repaired (%s -> %s)." msgstr "Виправлений режим шифрування (%s -> %s)." -#: lib/luks1/keymanage.c:415 +#: lib/luks1/keymanage.c:420 #, c-format msgid "Cipher hash repaired to lowercase (%s)." msgstr "Виправлений хеш шифрування малими літерами (%s)." -#: lib/luks1/keymanage.c:417 lib/luks1/keymanage.c:523 -#: lib/luks1/keymanage.c:756 +#: lib/luks1/keymanage.c:422 lib/luks1/keymanage.c:528 +#: lib/luks1/keymanage.c:757 #, c-format msgid "Requested LUKS hash %s is not supported." msgstr "Підтримки бажаного хешування LUKS, %s, не передбачено." -#: lib/luks1/keymanage.c:431 +#: lib/luks1/keymanage.c:436 msgid "Repairing keyslots." msgstr "Виправлення слотів ключів." -#: lib/luks1/keymanage.c:450 +#: lib/luks1/keymanage.c:455 #, c-format msgid "Keyslot %i: offset repaired (%u -> %u)." msgstr "Слот ключа %i: виправлено відступ (%u -> %u)." -#: lib/luks1/keymanage.c:458 +#: lib/luks1/keymanage.c:463 #, c-format msgid "Keyslot %i: stripes repaired (%u -> %u)." msgstr "Слот ключа %i: виправлено смужки (%u -> %u)." -#: lib/luks1/keymanage.c:467 +#: lib/luks1/keymanage.c:472 #, c-format msgid "Keyslot %i: bogus partition signature." msgstr "Слот ключа %i: зайвий підпис розділу." -#: lib/luks1/keymanage.c:472 +#: lib/luks1/keymanage.c:477 #, c-format msgid "Keyslot %i: salt wiped." msgstr "Слот ключа %i: дані ініціалізації (сіль) витерто." -#: lib/luks1/keymanage.c:489 +#: lib/luks1/keymanage.c:494 msgid "Writing LUKS header to disk." msgstr "Запис заголовка LUKS на диск." -#: lib/luks1/keymanage.c:494 +#: lib/luks1/keymanage.c:499 msgid "Repair failed." msgstr "Спроба виправлення зазнала невдачі." -#: lib/luks1/keymanage.c:549 +#: lib/luks1/keymanage.c:554 #, c-format msgid "LUKS cipher mode %s is invalid." msgstr "Режим шифрування LUKS %s є некоректним." -#: lib/luks1/keymanage.c:554 +#: lib/luks1/keymanage.c:559 #, c-format msgid "LUKS hash %s is invalid." msgstr "Хеш-сума LUKS %s є некоректною." -#: lib/luks1/keymanage.c:561 src/cryptsetup.c:1367 +#: lib/luks1/keymanage.c:566 src/cryptsetup.c:1367 msgid "No known problems detected for LUKS header." msgstr "У заголовку LUKS не виявлено жодних проблем." -#: lib/luks1/keymanage.c:689 +#: lib/luks1/keymanage.c:690 #, c-format msgid "Error during update of LUKS header on device %s." msgstr "Помилка під час оновлення заголовка LUKS на пристрої %s." -#: lib/luks1/keymanage.c:697 +#: lib/luks1/keymanage.c:698 #, c-format msgid "Error re-reading LUKS header after update on device %s." msgstr "Помилка під час спроби повторного читання заголовка LUKS після оновлення на пристрої %s." -#: lib/luks1/keymanage.c:750 +#: lib/luks1/keymanage.c:751 msgid "Data offset for LUKS header must be either 0 or higher than header size." msgstr "Відступ даних для заголовка LUKS має бути або рівним нулеві, або перевищувати розмір заголовка." -#: lib/luks1/keymanage.c:761 lib/luks1/keymanage.c:832 -#: lib/luks2/luks2_json_format.c:231 lib/luks2/luks2_json_metadata.c:1261 +#: lib/luks1/keymanage.c:762 lib/luks1/keymanage.c:833 +#: lib/luks2/luks2_json_format.c:240 lib/luks2/luks2_json_metadata.c:1261 #: src/utils_reencrypt.c:703 msgid "Wrong LUKS UUID format provided." msgstr "Вказано UUID LUKS у помилковому форматі." -#: lib/luks1/keymanage.c:783 +#: lib/luks1/keymanage.c:784 msgid "Cannot create LUKS header: reading random salt failed." msgstr "Не вдалося створити заголовок LUKS: помилка читання випадкових даних для ініціалізації." -#: lib/luks1/keymanage.c:811 +#: lib/luks1/keymanage.c:812 #, c-format msgid "Cannot create LUKS header: header digest failed (using hash %s)." msgstr "Не вдалося створити заголовок LUKS: помилка під час обчислення контрольної суми заголовка (з використанням хешу %s)." -#: lib/luks1/keymanage.c:856 +#: lib/luks1/keymanage.c:857 #, c-format msgid "Key slot %d active, purge first." msgstr "Слот ключа %d є активним. Його слід спочатку спорожнити." -#: lib/luks1/keymanage.c:862 +#: lib/luks1/keymanage.c:863 #, c-format msgid "Key slot %d material includes too few stripes. Header manipulation?" msgstr "Ентропія даних слота ключа %d є надто низькою. Маніпуляції з заголовком?" -#: lib/luks1/keymanage.c:900 lib/luks2/luks2_keyslot_luks2.c:217 +#: lib/luks1/keymanage.c:901 lib/luks2/luks2_keyslot_luks2.c:217 msgid "PBKDF2 iteration value overflow." msgstr "Переповнення значення ітерації PBKDF2." -#: lib/luks1/keymanage.c:1022 +#: lib/luks1/keymanage.c:1023 #, c-format msgid "Cannot open keyslot (using hash %s)." msgstr "Не вдалося відкрити слот ключа (за допомогою хешу %s)." -#: lib/luks1/keymanage.c:1118 +#: lib/luks1/keymanage.c:1119 #, c-format msgid "Key slot %d is invalid, please select keyslot between 0 and %d." msgstr "Слот ключа %d є некоректним, будь ласка, виберіть слот ключа з номером від 0 до %d." -#: lib/luks1/keymanage.c:1136 lib/luks2/luks2_keyslot.c:715 +#: lib/luks1/keymanage.c:1137 lib/luks2/luks2_keyslot.c:715 #, c-format msgid "Cannot wipe device %s." msgstr "Не вдалося витерти пристрій %s." @@ -1365,33 +1365,33 @@ msgstr "Підтримки цієї дії не передбачено." msgid "Unexpected key data size." msgstr "Неочікуваний розмір даних ключа." -#: lib/bitlk/bitlk.c:1442 +#: lib/bitlk/bitlk.c:1448 msgid "This BITLK device is in an unsupported state and cannot be activated." msgstr "Цей пристрій BITLK перебуває у непідтримуваному стані — його неможливо активувати." -#: lib/bitlk/bitlk.c:1447 +#: lib/bitlk/bitlk.c:1453 #, c-format msgid "BITLK devices with type '%s' cannot be activated." msgstr "Пристрої BITLK типу «%s» неможливо активувати." -#: lib/bitlk/bitlk.c:1486 +#: lib/bitlk/bitlk.c:1492 #, c-format msgid "WARNING: BitLocker volume size % does not match the underlying device size %" msgstr "УВАГА: розмір тому BitLocker % не відповідає розміру базового пристрою %" -#: lib/bitlk/bitlk.c:1613 +#: lib/bitlk/bitlk.c:1634 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK IV." msgstr "Не вдалося активувати пристрій — у dm-crypt ядра немає підтримки BITLK IV." -#: lib/bitlk/bitlk.c:1617 +#: lib/bitlk/bitlk.c:1638 msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK Elephant diffuser." msgstr "Не вдалося активувати пристрій — у dm-crypt ядра немає підтримки дифузера Elephant BITLK." -#: lib/bitlk/bitlk.c:1621 +#: lib/bitlk/bitlk.c:1642 msgid "Cannot activate device, kernel dm-crypt is missing support for large sector size." msgstr "Не вдалося активувати пристрій — у dm-crypt ядра немає підтримки великого розміру секторів." -#: lib/bitlk/bitlk.c:1625 +#: lib/bitlk/bitlk.c:1646 msgid "Cannot activate device, kernel dm-zero module is missing." msgstr "Не вдалося активувати пристрій — немає модуля ядра dm-zero." @@ -1548,24 +1548,24 @@ msgstr "Не вдалося визначити розмір для пристр msgid "Incompatible kernel dm-integrity metadata (version %u) detected on %s." msgstr "Виявлено несумісні метадані dm-integrity ядра (версія %u) у %s." -#: lib/integrity/integrity.c:308 lib/integrity/integrity.c:492 +#: lib/integrity/integrity.c:309 lib/integrity/integrity.c:493 msgid "Kernel does not support dm-integrity mapping." msgstr "У ядрі не передбачено підтримки прив'язки dm-integrity." -#: lib/integrity/integrity.c:314 +#: lib/integrity/integrity.c:315 msgid "Kernel does not support dm-integrity fixed metadata alignment." msgstr "У ядрі не передбачено підтримки вирівнювання фіксованих метаданих dm-integrity." -#: lib/integrity/integrity.c:323 +#: lib/integrity/integrity.c:324 msgid "Kernel refuses to activate insecure recalculate option (see legacy activation options to override)." msgstr "Ядром відмовлено у активації небезпечного параметра повторного обчислення (див. застарілі параметри активації, щоб скористатися обчисленням попри це)." -#: lib/integrity/integrity.c:329 +#: lib/integrity/integrity.c:330 msgid "Kernel does not support dm-integrity inline mode." msgstr "У ядрі не передбачено підтримки вбудованого режиму dm-integrity." #: lib/luks2/luks2_disk_metadata.c:382 lib/luks2/luks2_json_metadata.c:1184 -#: lib/luks2/luks2_json_metadata.c:1510 +#: lib/luks2/luks2_json_metadata.c:1502 #, c-format msgid "Failed to acquire write lock on device %s." msgstr "Не вдалося отримати блокування запису на пристрої %s." @@ -1587,22 +1587,22 @@ msgstr "" msgid "WARNING: keyslots area (% bytes) is very small, available LUKS2 keyslot count is very limited.\n" msgstr "Увага: область слоту ключів є надто малою (% байтів), доступна кількість слотів ключів LUKS2 буде дуже обмеженою.\n" -#: lib/luks2/luks2_json_format.c:418 +#: lib/luks2/luks2_json_format.c:427 msgid "Requested data offset is too small." msgstr "Вказаний відступ у даних є надто малим." -#: lib/luks2/luks2_json_format.c:459 +#: lib/luks2/luks2_json_format.c:468 #, c-format msgid "WARNING: LUKS2 metadata size changed to % bytes.\n" msgstr "Увага: розмір метаданих LUKS2 змінено до % байтів.\n" -#: lib/luks2/luks2_json_format.c:463 +#: lib/luks2/luks2_json_format.c:472 #, c-format msgid "WARNING: LUKS2 keyslots area size changed to % bytes.\n" msgstr "Увага: розмір області слотів ключів LUKS2 змінено до % байтів.\n" #: lib/luks2/luks2_json_metadata.c:1171 lib/luks2/luks2_json_metadata.c:1357 -#: lib/luks2/luks2_json_metadata.c:1417 lib/luks2/luks2_keyslot_luks2.c:71 +#: lib/luks2/luks2_json_metadata.c:1412 lib/luks2/luks2_keyslot_luks2.c:71 #, c-format msgid "Failed to acquire read lock on device %s." msgstr "Не вдалося отримати блокування читання на пристрої %s." @@ -1611,33 +1611,33 @@ msgstr "Не вдалося отримати блокування читання msgid "Label is too long." msgstr "Мітка є надто довгою." -#: lib/luks2/luks2_json_metadata.c:1435 +#: lib/luks2/luks2_json_metadata.c:1427 #, c-format msgid "Forbidden LUKS2 requirements detected in backup %s." msgstr "У резервній копії %s виявлено заборонені вимоги щодо LUKS2." -#: lib/luks2/luks2_json_metadata.c:1474 +#: lib/luks2/luks2_json_metadata.c:1466 msgid "Data offset differ on device and backup, restore failed." msgstr "Зсуви даних на пристрої і на резервній копії різняться, не вдалося відновити." -#: lib/luks2/luks2_json_metadata.c:1480 +#: lib/luks2/luks2_json_metadata.c:1472 msgid "Binary header with keyslot areas size differ on device and backup, restore failed." msgstr "Двійкові заголовки із розмірами областей слотів ключів на пристрої і у резервній копії різняться, не вдалося відновити копію." -#: lib/luks2/luks2_json_metadata.c:1487 +#: lib/luks2/luks2_json_metadata.c:1479 #, c-format msgid "Device %s %s%s%s%s" msgstr "Пристрій %s %s%s%s%s" -#: lib/luks2/luks2_json_metadata.c:1488 +#: lib/luks2/luks2_json_metadata.c:1480 msgid "does not contain LUKS2 header. Replacing header can destroy data on that device." msgstr "не містить заголовка LUKS2. Заміна заголовка може зруйнувати дані, що зберігаються на пристрої." -#: lib/luks2/luks2_json_metadata.c:1489 +#: lib/luks2/luks2_json_metadata.c:1481 msgid "already contains LUKS2 header. Replacing header will destroy existing keyslots." msgstr "вже містить заголовок LUKS2. Заміна заголовка призведе до руйнування вже створених слотів ключів." -#: lib/luks2/luks2_json_metadata.c:1491 +#: lib/luks2/luks2_json_metadata.c:1483 msgid "" "\n" "WARNING: unknown LUKS2 requirements detected in real device header!\n" @@ -1647,7 +1647,7 @@ msgstr "" "ПОПЕРЕДЖЕННЯ: виявлено невідомі вимоги LUKS2 у справжньому заголовку пристрою!\n" "Заміна заголовка резервною копією може пошкодити дані на пристрої!" -#: lib/luks2/luks2_json_metadata.c:1493 +#: lib/luks2/luks2_json_metadata.c:1485 msgid "" "\n" "WARNING: Unfinished offline reencryption detected on the device!\n" @@ -1657,84 +1657,84 @@ msgstr "" "ПОПЕРЕДЖЕННЯ: на пристрої виявлено дані незавершеного повторного шифрування!\n" "Заміна заголовка заголовком із резервної копії може пошкодити дані." -#: lib/luks2/luks2_json_metadata.c:1591 +#: lib/luks2/luks2_json_metadata.c:1583 #, c-format msgid "Ignored unknown flag %s." msgstr "Проігноровано невідомий прапорець %s." -#: lib/luks2/luks2_json_metadata.c:2563 lib/luks2/luks2_reencrypt.c:2110 +#: lib/luks2/luks2_json_metadata.c:2555 lib/luks2/luks2_reencrypt.c:2110 #, c-format msgid "Missing key for dm-crypt segment %u" msgstr "Не вистачає ключа для сегмента dm-crypt %u" -#: lib/luks2/luks2_json_metadata.c:2575 lib/luks2/luks2_reencrypt.c:2123 +#: lib/luks2/luks2_json_metadata.c:2567 lib/luks2/luks2_reencrypt.c:2123 msgid "Failed to set dm-crypt segment." msgstr "Не вдалося встановити сегмент dm-crypt." -#: lib/luks2/luks2_json_metadata.c:2581 lib/luks2/luks2_reencrypt.c:2129 +#: lib/luks2/luks2_json_metadata.c:2573 lib/luks2/luks2_reencrypt.c:2129 msgid "Failed to set dm-linear segment." msgstr "Не вдалося встановити сегмент dm-linear." -#: lib/luks2/luks2_json_metadata.c:2701 src/utils_reencrypt.c:580 +#: lib/luks2/luks2_json_metadata.c:2693 src/utils_reencrypt.c:580 msgid "No known cipher specification pattern detected in LUKS2 header." msgstr "Не виявлено жодного відомого зразка специфікації шифрування у заголовку LUKS." -#: lib/luks2/luks2_json_metadata.c:2709 +#: lib/luks2/luks2_json_metadata.c:2701 msgid "OPAL device must have static device size." msgstr "Пристій OPAL повинен мати статичний розмір пристрою." -#: lib/luks2/luks2_json_metadata.c:2729 +#: lib/luks2/luks2_json_metadata.c:2721 msgid "Encrypted OPAL device with integrity must be smaller than locking range." msgstr "Зашифрований пристрій OPAL із механізмами цілісності має бути меншим за діапазон блокування." -#: lib/luks2/luks2_json_metadata.c:2734 +#: lib/luks2/luks2_json_metadata.c:2726 msgid "OPAL device must have same size as locking range." msgstr "Пристрій OPAL повинен мати той самий розмір, що і діапазон блокування." -#: lib/luks2/luks2_json_metadata.c:2754 +#: lib/luks2/luks2_json_metadata.c:2746 #, c-format msgid "OPAL device is %s already unlocked.\n" msgstr "Пристрій OPAL %s вже розблоковано.\n" -#: lib/luks2/luks2_json_metadata.c:2793 +#: lib/luks2/luks2_json_metadata.c:2785 msgid "Unsupported device integrity configuration." msgstr "Непідтримувані налаштування цілісності даних на пристрої." -#: lib/luks2/luks2_json_metadata.c:2809 +#: lib/luks2/luks2_json_metadata.c:2801 msgid "Underlying dm-integrity device with unexpected provided data sectors." msgstr "Базовий пристрій dm-integrity із неочікуваними наданими секторами даних." -#: lib/luks2/luks2_json_metadata.c:2911 +#: lib/luks2/luks2_json_metadata.c:2903 msgid "Reencryption in-progress. Cannot deactivate device." msgstr "Виконуємо повторне шифрування. Не можна деактивувати пристрій." -#: lib/luks2/luks2_json_metadata.c:2922 lib/luks2/luks2_reencrypt.c:4287 +#: lib/luks2/luks2_json_metadata.c:2914 lib/luks2/luks2_reencrypt.c:4287 #, c-format msgid "Failed to replace suspended device %s with dm-error target." msgstr "Не вдалося замінити пристрій %s, роботу якого призупинено, ціллю dm-error." -#: lib/luks2/luks2_json_metadata.c:3001 lib/luks2/luks2_json_metadata.c:3023 +#: lib/luks2/luks2_json_metadata.c:2993 lib/luks2/luks2_json_metadata.c:3015 #, c-format msgid "Device %s was deactivated but hardware OPAL device cannot be locked." msgstr "Пристрій %s було деактивовано, але апаратний пристрій OPAL не може бути заблоковано." -#: lib/luks2/luks2_json_metadata.c:3045 +#: lib/luks2/luks2_json_metadata.c:3037 msgid "Unmet LUKS2 requirements detected." msgstr "Виявлено невідповідність вимог LUKS2." -#: lib/luks2/luks2_json_metadata.c:3053 +#: lib/luks2/luks2_json_metadata.c:3045 msgid "Operation incompatible with device marked for legacy reencryption. Aborting." msgstr "Дія є несумісною із пристроєм, який позначено для перешифрування застарілого варіанта. Перериваємо дію." -#: lib/luks2/luks2_json_metadata.c:3055 +#: lib/luks2/luks2_json_metadata.c:3047 msgid "Operation incompatible with device marked for LUKS2 reencryption. Aborting." msgstr "Дія є несумісною із пристроєм, який позначено для перешифрування LUKS2. Перериваємо дію." -#: lib/luks2/luks2_json_metadata.c:3057 +#: lib/luks2/luks2_json_metadata.c:3049 msgid "Operation incompatible with device using OPAL. Aborting." msgstr "Дія є несумісною із пристроєм з використанням OPAL. Перериваємо дію." -#: lib/luks2/luks2_json_metadata.c:3059 +#: lib/luks2/luks2_json_metadata.c:3051 msgid "Operation incompatible with device using inline HW tags. Aborting." msgstr "Дія є несумісною із пристроєм з використанням вбудованих апаратних міток. Перериваємо дію." @@ -1801,60 +1801,60 @@ msgstr "Не вдалося використати специфікацію ши msgid "Unable to move keyslot area. Not enough space." msgstr "Не вдалося пересунути область слотів ключів. Недостатньо місця." -#: lib/luks2/luks2_luks1_convert.c:619 +#: lib/luks2/luks2_luks1_convert.c:627 msgid "Cannot convert to LUKS2 format - invalid metadata." msgstr "Не вдалося перетворити до формату LUKS2 - некоректні метадані." -#: lib/luks2/luks2_luks1_convert.c:636 +#: lib/luks2/luks2_luks1_convert.c:644 msgid "Unable to move keyslot area. LUKS2 keyslots area too small." msgstr "Не вдалося пересунути область слотів ключів. Область слотів ключів LUKS2 є надто малою." -#: lib/luks2/luks2_luks1_convert.c:642 lib/luks2/luks2_luks1_convert.c:972 +#: lib/luks2/luks2_luks1_convert.c:650 lib/luks2/luks2_luks1_convert.c:980 msgid "Unable to move keyslot area." msgstr "Не вдалося пересунути область слотів ключів." -#: lib/luks2/luks2_luks1_convert.c:757 +#: lib/luks2/luks2_luks1_convert.c:765 msgid "Cannot convert to LUKS1 format - default segment encryption sector size is not 512 bytes." msgstr "Не вдалося перетворити на формат LUKS1 — типовий розмір сектору шифрування сегмента не дорівнює 512 байтам." -#: lib/luks2/luks2_luks1_convert.c:765 +#: lib/luks2/luks2_luks1_convert.c:773 msgid "Cannot convert to LUKS1 format - key slot digests are not LUKS1 compatible." msgstr "Не вдалося перетворити до формату LUKS1 — контрольні суми слотів ключів не сумісні з LUKS1." -#: lib/luks2/luks2_luks1_convert.c:779 +#: lib/luks2/luks2_luks1_convert.c:787 #, c-format msgid "Cannot convert to LUKS1 format - device uses wrapped key cipher %s." msgstr "Не вдалося перетворити до формату LUKS1 — на пристрої використовується загорнуте шифрування ключів %s." -#: lib/luks2/luks2_luks1_convert.c:784 +#: lib/luks2/luks2_luks1_convert.c:792 msgid "Cannot convert to LUKS1 format - device uses more segments." msgstr "Не вдалося перетворити до формату LUKS1 — на пристрої використовується більше сегментів." -#: lib/luks2/luks2_luks1_convert.c:792 +#: lib/luks2/luks2_luks1_convert.c:800 #, c-format msgid "Cannot convert to LUKS1 format - LUKS2 header contains %u token(s)." msgstr "Не вдалося перетворити до формату LUKS1 - заголовок LUKS2 містить %u жетонів." -#: lib/luks2/luks2_luks1_convert.c:798 +#: lib/luks2/luks2_luks1_convert.c:806 msgid "Cannot convert to LUKS1 format - there are no active keyslots." msgstr "Не вдалося перетворити до формату LUKS1 — немає активних слотів ключів." -#: lib/luks2/luks2_luks1_convert.c:810 +#: lib/luks2/luks2_luks1_convert.c:818 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is in invalid state." msgstr "Не вдалося перетворити до формату LUKS1 - слот ключа %u перебуває у некоректному стані." -#: lib/luks2/luks2_luks1_convert.c:815 +#: lib/luks2/luks2_luks1_convert.c:823 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is unbound." msgstr "Не вдалося перетворити до формату LUKS1 - слот ключів %u є неприв'язаним." -#: lib/luks2/luks2_luks1_convert.c:820 +#: lib/luks2/luks2_luks1_convert.c:828 #, c-format msgid "Cannot convert to LUKS1 format - slot %u (over maximum slots) is still active." msgstr "Не вдалося перетворити до формату LUKS1 — слот %u (перевищує максимальну кількість слотів) усе ще є активним." -#: lib/luks2/luks2_luks1_convert.c:825 +#: lib/luks2/luks2_luks1_convert.c:833 #, c-format msgid "Cannot convert to LUKS1 format - keyslot %u is not LUKS1 compatible." msgstr "не вдалося перетворити до формату LUKS1 — слот ключів %u є несумісним з LUKS1." @@ -2139,7 +2139,7 @@ msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encry msgstr "Параметри шифрування слоту ключів є несумісними із шифруванням слотів ключів LUKS2." #: src/cryptsetup.c:150 src/cryptsetup.c:1180 src/cryptsetup.c:1545 -#: src/utils_reencrypt.c:1890 src/utils_reencrypt_luks1.c:502 +#: src/utils_reencrypt.c:1916 src/utils_reencrypt_luks1.c:502 #: src/utils_reencrypt_luks1.c:565 msgid "No known cipher specification pattern detected." msgstr "Не виявлено жодного відомого зразка специфікації шифрування." @@ -2167,7 +2167,7 @@ msgid "WARNING: The --keyfile-size option is being ignored, the read size is the msgstr "Попередження: параметр --keyfile-size проігноровано, розмір прочитаних даних збігається із розміром ключа шифрування.\n" #: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 -#: src/integritysetup.c:189 src/utils_reencrypt.c:2141 +#: src/integritysetup.c:189 src/utils_reencrypt.c:2167 #, c-format msgid "Blkid scan failed for %s." msgstr "Помилка сканування Blkid для %s." @@ -2249,7 +2249,7 @@ msgstr "Пристрій %s не є коректним пристроєм FVAULT msgid "Cannot determine volume key size for FVAULT2, please use --key-size option." msgstr "Неможливо визначити розмір ключа тому для FVAULT2. Будь ласка, скористайтеся параметром --key-size." -#: src/cryptsetup.c:849 src/veritysetup.c:317 src/integritysetup.c:422 +#: src/cryptsetup.c:849 src/veritysetup.c:317 src/integritysetup.c:424 #, c-format msgid "Device %s is still active and scheduled for deferred removal.\n" msgstr "Пристрій %s усе ще є активним, його заплановано для відкладеного вилучення.\n" @@ -2438,7 +2438,7 @@ msgid "LUKS file container %s is too small for activation, there is no remaining msgstr "Контейнер файлів LUKS %s є надто малим для активації, на ньому не лишиться місця для даних." #: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:278 -#: src/utils_reencrypt.c:371 src/utils_reencrypt.c:1910 +#: src/utils_reencrypt.c:371 src/utils_reencrypt.c:1936 msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." msgstr "Неможливо визначити розмір ключа тому для LUKS без слотів ключів. Будь ласка, скористайтеся параметром --key-size." @@ -2733,7 +2733,7 @@ msgstr "Параметр --volume-key-keyring не можна поєднуват msgid "Both --volume-key-file options must be paired with respective --key-size options." msgstr "Обидва параметри --volume-key-file має бути поєднано із відповідними параметрами --key-size." -#: src/cryptsetup.c:3373 src/veritysetup.c:673 src/integritysetup.c:793 +#: src/cryptsetup.c:3373 src/veritysetup.c:673 src/integritysetup.c:800 msgid "Options --cancel-deferred and --deferred cannot be used at the same time." msgstr "Не можна одночасно використовувати параметр --cancel-deferred і --deferred." @@ -2801,21 +2801,21 @@ msgstr "Дія потребує зазначення слоту ключа. Ск msgid " [--type ] []" msgstr "<пристрій> [--type <тип>] [<назва>]" -#: src/cryptsetup.c:3482 src/veritysetup.c:487 src/integritysetup.c:560 +#: src/cryptsetup.c:3482 src/veritysetup.c:487 src/integritysetup.c:563 msgid "open device as " msgstr "відкрити пристрій як <назва>" #: src/cryptsetup.c:3483 src/cryptsetup.c:3484 src/cryptsetup.c:3485 -#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:561 -#: src/integritysetup.c:562 src/integritysetup.c:564 +#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:564 +#: src/integritysetup.c:565 src/integritysetup.c:567 msgid "" msgstr "<назва>" -#: src/cryptsetup.c:3483 src/veritysetup.c:488 src/integritysetup.c:561 +#: src/cryptsetup.c:3483 src/veritysetup.c:488 src/integritysetup.c:564 msgid "close device (remove mapping)" msgstr "закрити пристрій (вилучити призначення)" -#: src/cryptsetup.c:3484 src/integritysetup.c:564 +#: src/cryptsetup.c:3484 src/integritysetup.c:567 msgid "resize active device" msgstr "змінити розмір активного пристрою" @@ -2943,7 +2943,7 @@ msgstr " <пристрій>" msgid "Manipulate LUKS2 tokens" msgstr "Керування жетонами LUKS2" -#: src/cryptsetup.c:3527 src/veritysetup.c:505 src/integritysetup.c:579 +#: src/cryptsetup.c:3527 src/veritysetup.c:505 src/integritysetup.c:582 msgid "" "\n" " is one of:\n" @@ -3045,7 +3045,7 @@ msgstr "" msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" msgstr "\tLUKS: типовий розмір ключа у режимі XTS (два вбудованих ключа) буде подвоєно.\n" -#: src/cryptsetup.c:3594 src/veritysetup.c:647 src/integritysetup.c:739 +#: src/cryptsetup.c:3594 src/veritysetup.c:647 src/integritysetup.c:742 #, c-format msgid "%s: requires %s as arguments" msgstr "%s: слід вказати у параметрах %s" @@ -3096,31 +3096,31 @@ msgstr "Значенням для параметра --priority може бут msgid "Invalid maximal tries specification." msgstr "Некоректна специфікація максимальної кількості спроб." -#: src/cryptsetup.c:3793 src/veritysetup.c:568 src/integritysetup.c:659 +#: src/cryptsetup.c:3793 src/veritysetup.c:568 src/integritysetup.c:662 msgid "Show this help message" msgstr "Показати цю довідку" -#: src/cryptsetup.c:3794 src/veritysetup.c:569 src/integritysetup.c:660 +#: src/cryptsetup.c:3794 src/veritysetup.c:569 src/integritysetup.c:663 msgid "Display brief usage" msgstr "Показати короткі настанови щодо користування" -#: src/cryptsetup.c:3795 src/veritysetup.c:570 src/integritysetup.c:661 +#: src/cryptsetup.c:3795 src/veritysetup.c:570 src/integritysetup.c:664 msgid "Print package version" msgstr "Вивести дані щодо версії пакунка" -#: src/cryptsetup.c:3806 src/veritysetup.c:581 src/integritysetup.c:672 +#: src/cryptsetup.c:3806 src/veritysetup.c:581 src/integritysetup.c:675 msgid "Help options:" msgstr "Пункти довідки:" -#: src/cryptsetup.c:3829 src/veritysetup.c:602 src/integritysetup.c:692 +#: src/cryptsetup.c:3829 src/veritysetup.c:602 src/integritysetup.c:695 msgid "[OPTION...] " msgstr "[ПАРАМЕТР...] <дія> <параметри_дії>" -#: src/cryptsetup.c:3838 src/veritysetup.c:611 src/integritysetup.c:703 +#: src/cryptsetup.c:3838 src/veritysetup.c:611 src/integritysetup.c:706 msgid "Argument missing." msgstr "Не вказано аргумент <дія>." -#: src/cryptsetup.c:3917 src/veritysetup.c:642 src/integritysetup.c:734 +#: src/cryptsetup.c:3917 src/veritysetup.c:642 src/integritysetup.c:737 msgid "Unknown action." msgstr "Невідома дія." @@ -3225,7 +3225,7 @@ msgstr "Для виконання команди потрібен <корене msgid " " msgstr "<пристрій_даних> <пристрій_хешу>" -#: src/veritysetup.c:485 src/integritysetup.c:559 +#: src/veritysetup.c:485 src/integritysetup.c:562 msgid "format device" msgstr "форматувати пристрій" @@ -3241,7 +3241,7 @@ msgstr "перевірити пристрій" msgid " []" msgstr "<пристрій_даних> <назва> <пристрій_хешу> [<кореневий_хеш>]" -#: src/veritysetup.c:489 src/integritysetup.c:562 +#: src/veritysetup.c:489 src/integritysetup.c:565 msgid "show active device status" msgstr "показати стан активного пристрою" @@ -3249,7 +3249,7 @@ msgstr "показати стан активного пристрою" msgid "" msgstr "<пристрій_хешу>" -#: src/veritysetup.c:490 src/integritysetup.c:563 +#: src/veritysetup.c:490 src/integritysetup.c:566 msgid "show on-disk information" msgstr "показати вбудовані дані" @@ -3313,20 +3313,20 @@ msgstr " (вбудовані апаратні мітки)" msgid "Setting recalculate flag is not supported, you may consider using --wipe instead." msgstr "Підтримки встановлення прапорця повторного обчислення не передбачено. Вам варто розглянути можливість використання --wipe." -#: src/integritysetup.c:382 src/integritysetup.c:546 +#: src/integritysetup.c:382 src/integritysetup.c:549 #, c-format msgid "Device %s is not a valid INTEGRITY device." msgstr "Пристрій %s не є коректним пристроєм INTEGRITY." -#: src/integritysetup.c:559 src/integritysetup.c:563 +#: src/integritysetup.c:562 src/integritysetup.c:566 msgid "" msgstr "<пристрій_цілісності>" -#: src/integritysetup.c:560 +#: src/integritysetup.c:563 msgid " " msgstr "<пристрій_цілісності> <назва>" -#: src/integritysetup.c:583 +#: src/integritysetup.c:586 #, c-format msgid "" "\n" @@ -3337,7 +3337,7 @@ msgstr "" "<назва> є пристроєм, який слід створити у %s\n" "<пристрій_цілісності> є пристроєм, на якому зберігаються дані із мітками цілісності\n" -#: src/integritysetup.c:588 +#: src/integritysetup.c:591 #, c-format msgid "" "\n" @@ -3350,51 +3350,55 @@ msgstr "" "\tАлгоритм обчислення контрольної суми: %s\n" "\tМаксимальний розмір файла ключа: %d кБ\n" -#: src/integritysetup.c:645 +#: src/integritysetup.c:648 #, c-format msgid "Invalid --%s size. Maximum is %u bytes." msgstr "Некоректний розмір --%s. Максимальний розмір дорівнює %u байтів." -#: src/integritysetup.c:748 +#: src/integritysetup.c:751 msgid "Both key file and key size options must be specified." msgstr "Не можна одночасно вказувати параметри файла ключа і розміру ключа." -#: src/integritysetup.c:752 +#: src/integritysetup.c:755 msgid "Both journal integrity key file and key size options must be specified." msgstr "Не можна одночасно вказувати параметри файла ключа цілісності журналу і розміру ключа." -#: src/integritysetup.c:755 +#: src/integritysetup.c:758 msgid "Journal integrity algorithm must be specified if journal integrity key is used." msgstr "Якщо використано ключ цілісності журналу, має бути вказано алгоритм забезпечення цілісності журналу." -#: src/integritysetup.c:759 +#: src/integritysetup.c:762 msgid "Both journal encryption key file and key size options must be specified." msgstr "Не можна одночасно вказувати параметри файла ключа шифрування журналу і розміру ключа." -#: src/integritysetup.c:762 +#: src/integritysetup.c:765 msgid "Journal encryption algorithm must be specified if journal encryption key is used." msgstr "Якщо використано ключ шифрування журналу, має бути вказано алгоритм забезпечення шифрування журналу." -#: src/integritysetup.c:766 +#: src/integritysetup.c:769 msgid "Recovery and bitmap mode options are mutually exclusive." msgstr "Не можна поєднувати параметри відновлення і бітової карти." -#: src/integritysetup.c:773 +#: src/integritysetup.c:776 msgid "Journal options cannot be used in bitmap mode." msgstr "Параметри журналу у режимі бітової карти використовувати не можна." -#: src/integritysetup.c:778 +#: src/integritysetup.c:781 msgid "Bitmap options can be used only in bitmap mode." msgstr "Параметри бітової карти можна використовувати лише у режимі бітового карти." -#: src/integritysetup.c:784 +#: src/integritysetup.c:787 msgid "Inline mode cannot be combined with journal or bitmap options." msgstr "Вбудований режим не може бути поєднано із параметрами журналу або бітової карти." -#: src/integritysetup.c:788 +#: src/integritysetup.c:791 msgid "Inline mode cannot be combined with separate data device." msgstr "Вбудований режим не можна поєднувати із окремим пристроєм даних." +#: src/integritysetup.c:795 +msgid "Keyed discards can be enabled only with keyed algorithms like HMAC." +msgstr "Відкидання за ключами можна вмикати лише з алгоритмами з ключами, подібними HMAC." + #: src/utils_tools.c:105 msgid "" "\n" @@ -3745,7 +3749,7 @@ msgstr "Пристрій не у розшифруванні LUKS2. Конфлі msgid "Device is in reencryption using datashift resilience. Requested --resilience option cannot be applied." msgstr "Пристрій перебуває у повторному шифруванні з використанням стійкості зсуву даних. Вказаний параметр --resilience не може бути застосовано." -#: src/utils_reencrypt.c:283 src/utils_reencrypt.c:1927 +#: src/utils_reencrypt.c:283 src/utils_reencrypt.c:1953 msgid "Cannot determine volume key size for LUKS without keyslots, please use --new-key-size option." msgstr "Неможливо визначити розмір ключа тому для LUKS без слотів ключів. Будь ласка, скористайтеся параметром --new-key-size." @@ -3779,7 +3783,7 @@ msgstr "" "Вказаний --sector-size % є несумісним із суперблоком %s\n" "(розмір блоку: % байтів), який виявлено на пристрої %s." -#: src/utils_reencrypt.c:680 src/utils_reencrypt.c:2207 +#: src/utils_reencrypt.c:680 src/utils_reencrypt.c:2233 msgid "Encryption without detached header (--header) is not possible without data device size reduction (--reduce-device-size)." msgstr "Шифрування без від'єднаного заголовка (--header) є неможливим без зменшення розміру пристрою зберігання даних (--reduce-device-size)." @@ -3847,42 +3851,43 @@ msgstr "Не вдалося ініціалізувати повторне шиф msgid "LUKS2 decryption is supported with detached header device only (with data offset set to 0)." msgstr "Підтримку розшифровування LUKS2 передбачено лише для пристроїв із від'єднаним заголовком (із встановленим нульовим відступом даних)." -#: src/utils_reencrypt.c:1490 -msgid "No token could unlock the device." -msgstr "Жоден жетон не змін розблокувати пристрій." - -#: src/utils_reencrypt.c:1522 src/utils_reencrypt.c:1531 +#: src/utils_reencrypt.c:1506 src/utils_reencrypt.c:1531 +#: src/utils_reencrypt.c:1548 src/utils_reencrypt.c:1557 msgid "Not enough free keyslots for reencryption." msgstr "Недостатньо вільних слотів ключів для повторного шифрування." -#: src/utils_reencrypt.c:1562 +#: src/utils_reencrypt.c:1513 +msgid "No token could unlock the device." +msgstr "Жоден жетон не змін розблокувати пристрій." + +#: src/utils_reencrypt.c:1588 msgid "Key file or keyring key description can be used only with --key-slot or with exactly one key slot active." msgstr "Файлом ключа або описом ключа у сховищі ключів можна користуватися лише з --key-slot, або якщо активним є лише один слот ключа." -#: src/utils_reencrypt.c:1569 src/utils_reencrypt.c:1582 +#: src/utils_reencrypt.c:1595 src/utils_reencrypt.c:1608 #: src/utils_reencrypt_luks1.c:1092 src/utils_reencrypt_luks1.c:1103 #, c-format msgid "Enter passphrase for key slot %d: " msgstr "Вкажіть пароль для слоту ключа %d: " -#: src/utils_reencrypt.c:1879 +#: src/utils_reencrypt.c:1905 #, c-format msgid "Switching data encryption cipher to %s.\n" msgstr "Перемикаємося на шифрування даних %s.\n" -#: src/utils_reencrypt.c:1980 src/utils_reencrypt.c:2001 +#: src/utils_reencrypt.c:2006 src/utils_reencrypt.c:2027 msgid "Use --force-no-keyslots to reencrypt device with active keyslots by passing volume keys directly." msgstr "Скористайтеся --force-no-keyslots, щоб повторно зашифрувати пристрій із активними слотами ключів, передавши ключі тому безпосередньо." -#: src/utils_reencrypt.c:1996 +#: src/utils_reencrypt.c:2022 msgid "Option --new-volume-key-file must be paired with --new-key-size" msgstr "Параметр --new-volume-key-file має бути поєднано з --new-key-size" -#: src/utils_reencrypt.c:2038 +#: src/utils_reencrypt.c:2064 msgid "No data segment parameters changed. Reencryption aborted." msgstr "Не змінено параметри сегмента даних. Повторне шифрування перервано." -#: src/utils_reencrypt.c:2075 +#: src/utils_reencrypt.c:2101 msgid "" "Encryption sector size increase on offline device is not supported.\n" "Activate the device first or use --force-offline-reencrypt option (dangerous!)." @@ -3890,7 +3895,7 @@ msgstr "" "Підтримки збільшення розміру сектора шифрування на вимкненому пристрої не передбачено.\n" "Спочатку активуйте пристрій або скористайтеся параметром --force-offline-reencrypt (небезпечно!)." -#: src/utils_reencrypt.c:2117 src/utils_reencrypt_luks1.c:688 +#: src/utils_reencrypt.c:2143 src/utils_reencrypt_luks1.c:688 #: src/utils_reencrypt_luks1.c:759 msgid "" "\n" @@ -3899,58 +3904,58 @@ msgstr "" "\n" "Повторне шифрування перервано." -#: src/utils_reencrypt.c:2122 +#: src/utils_reencrypt.c:2148 msgid "Resuming LUKS reencryption in forced offline mode.\n" msgstr "Відновлюємо повторне шифрування LUKS у примусовому вимкненому режимі.\n" -#: src/utils_reencrypt.c:2145 +#: src/utils_reencrypt.c:2171 #, c-format msgid "Device %s contains broken LUKS metadata. Aborting operation." msgstr "На пристрої %s містяться пошкоджені метадані LUKS. Перериваємо дію." -#: src/utils_reencrypt.c:2161 src/utils_reencrypt.c:2183 +#: src/utils_reencrypt.c:2187 src/utils_reencrypt.c:2209 #, c-format msgid "Device %s is already LUKS device. Aborting operation." msgstr "Пристрій %s вже є пристроєм LUKS. Перериваємо дію." -#: src/utils_reencrypt.c:2189 +#: src/utils_reencrypt.c:2215 #, c-format msgid "Device %s is already in LUKS reencryption. Aborting operation." msgstr "Пристрій %s вже перебуває у стані повторного шифрування LUKS. Перериваємо дію." -#: src/utils_reencrypt.c:2272 +#: src/utils_reencrypt.c:2298 msgid "LUKS2 decryption requires --header option." msgstr "Для розшифровування LUKS2 потрібен параметр --header." -#: src/utils_reencrypt.c:2320 +#: src/utils_reencrypt.c:2346 msgid "Command requires device as argument." msgstr "Комарні слід передати аргумент пристрою." -#: src/utils_reencrypt.c:2333 +#: src/utils_reencrypt.c:2359 #, c-format msgid "Conflicting versions. Device %s is LUKS1." msgstr "Конфлікт версій. Пристрій %s є пристроєм LUKS1." -#: src/utils_reencrypt.c:2339 +#: src/utils_reencrypt.c:2365 #, c-format msgid "Conflicting versions. Device %s is in LUKS1 reencryption." msgstr "Конфлікт версій. Пристрій %s перебуває у стані повторного шифрування LUKS1." -#: src/utils_reencrypt.c:2345 +#: src/utils_reencrypt.c:2371 #, c-format msgid "Conflicting versions. Device %s is LUKS2." msgstr "Конфлікт версій. Пристрій %s є пристроєм LUKS2." -#: src/utils_reencrypt.c:2351 +#: src/utils_reencrypt.c:2377 #, c-format msgid "Conflicting versions. Device %s is in LUKS2 reencryption." msgstr "Конфлікт версій. Пристрій %s перебуває у стані повторного шифрування LUKS2." -#: src/utils_reencrypt.c:2357 +#: src/utils_reencrypt.c:2383 msgid "LUKS2 reencryption already initialized. Aborting operation." msgstr "Вже ініційовано повторне шифрування LUKS2. Перериваємо виконання дії." -#: src/utils_reencrypt.c:2364 +#: src/utils_reencrypt.c:2390 msgid "Device reencryption not in progress." msgstr "Повторне шифрування пристрою не виконується." From 807a6fa45304f1103421c0f059c64a237ae8b698 Mon Sep 17 00:00:00 2001 From: Alang Hsu Date: Mon, 7 Sep 2026 08:06:08 +0200 Subject: [PATCH 215/244] po: add zh_TW.po (from translationproject.org) --- po/LINGUAS | 1 + po/zh_TW.po | 4350 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 4351 insertions(+) create mode 100644 po/zh_TW.po diff --git a/po/LINGUAS b/po/LINGUAS index 519bd42de..baf9c3f42 100644 --- a/po/LINGUAS +++ b/po/LINGUAS @@ -20,3 +20,4 @@ sv uk vi zh_CN +zh_TW diff --git a/po/zh_TW.po b/po/zh_TW.po new file mode 100644 index 000000000..42d3c83c8 --- /dev/null +++ b/po/zh_TW.po @@ -0,0 +1,4350 @@ +# Traditional Chinese Messages for cryptsetup +# Copyright (C) 2026 Free Software Foundation, Inc. +# This file is distributed under the same license as the cryptsetup package. +# Alang Hsu , 2026. +# +msgid "" +msgstr "" +"Project-Id-Version: cryptsetup 2.8.8-rc0\n" +"Report-Msgid-Bugs-To: cryptsetup@lists.linux.dev\n" +"POT-Creation-Date: 2026-09-02 13:18+0200\n" +"PO-Revision-Date: 2026-09-05 08:20+0800\n" +"Last-Translator: Alang Hsu \n" +"Language-Team: Chinese (traditional) \n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" + +#: lib/libdevmapper.c:422 +msgid "Cannot initialize device-mapper, running as non-root user." +msgstr "無法初始化 device-mapper,目前是以非 root 使用者身分執行。" + +#: lib/libdevmapper.c:425 +msgid "Cannot initialize device-mapper. Is dm_mod kernel module loaded?" +msgstr "無法初始化 device-mapper。核心模組 dm_mod 有載入嗎?" + +#: lib/libdevmapper.c:1129 +msgid "Requested deferred flag is not supported." +msgstr "要求的 deferred 旗標不受支援。" + +#: lib/libdevmapper.c:1198 +#, c-format +msgid "DM-UUID for device %s was truncated." +msgstr "裝置 %s 的 DM-UUID 遭到截斷。" + +#: lib/libdevmapper.c:1602 +msgid "Unknown dm target type." +msgstr "未知的 dm target 類型。" + +#: lib/libdevmapper.c:1729 lib/libdevmapper.c:1735 lib/libdevmapper.c:1854 +#: lib/libdevmapper.c:1857 +msgid "Requested dm-crypt performance options are not supported." +msgstr "要求的 dm-crypt 效能選項不受支援。" + +#: lib/libdevmapper.c:1744 lib/libdevmapper.c:1750 lib/libdevmapper.c:1762 +msgid "Requested dm-verity data corruption handling options are not supported." +msgstr "要求的 dm-verity 資料毀損處理選項不受支援。" + +#: lib/libdevmapper.c:1756 +msgid "Requested dm-verity tasklets option is not supported." +msgstr "要求的 dm-verity tasklets 選項不受支援。" + +#: lib/libdevmapper.c:1768 +msgid "Requested dm-verity FEC options are not supported." +msgstr "要求的 dm-verity FEC 選項不受支援。" + +#: lib/libdevmapper.c:1774 +msgid "Requested data integrity options are not supported." +msgstr "要求的資料完整性選項不受支援。" + +#: lib/libdevmapper.c:1778 +msgid "Requested sector_size option is not supported." +msgstr "要求的 sector_size 選項不受支援。" + +#: lib/libdevmapper.c:1783 +msgid "The device size is not multiple of the requested sector size." +msgstr "裝置大小不是所要求磁區大小的倍數。" + +#: lib/libdevmapper.c:1787 +msgid "Requested integrity_key_size option is not supported." +msgstr "要求的 integrity_key_size 選項不受支援。" + +#: lib/libdevmapper.c:1794 lib/libdevmapper.c:1800 +msgid "Requested automatic recalculation of integrity tags is not supported." +msgstr "要求的完整性標籤自動重新計算不受支援。" + +#: lib/libdevmapper.c:1806 lib/libdevmapper.c:1860 lib/libdevmapper.c:1863 +#: lib/luks2/luks2_json_metadata.c:2791 +msgid "Discard/TRIM is not supported." +msgstr "不支援 Discard/TRIM。" + +#: lib/libdevmapper.c:1812 +msgid "Requested dm-integrity bitmap mode is not supported." +msgstr "要求的 dm-integrity 點陣圖模式不受支援。" + +#: lib/libdevmapper.c:1818 +msgid "Requested dm-integrity inline mode is not supported." +msgstr "要求的 dm-integrity inline 模式不受支援。" + +#: lib/libdevmapper.c:2877 +#, c-format +msgid "Failed to query dm-%s segment." +msgstr "無法查詢 dm-%s 區段。" + +#: lib/random.c:60 +msgid "" +"System is out of entropy while generating volume key.\n" +"Please move mouse or type some text in another window to gather some random events.\n" +msgstr "" +"產生卷金鑰時系統熵不足。\n" +"請移動滑鼠或在其他視窗輸入一些文字,以收集隨機事件。\n" + +#: lib/random.c:64 +#, c-format +msgid "Generating key (%d%% done).\n" +msgstr "正在產生金鑰(已完成 %d%%)。\n" + +#: lib/random.c:150 +msgid "Running in FIPS mode." +msgstr "正在以 FIPS 模式執行。" + +#: lib/random.c:156 +msgid "Fatal error during RNG initialisation." +msgstr "RNG 初始化期間發生嚴重錯誤。" + +#: lib/random.c:194 +msgid "Unknown RNG quality requested." +msgstr "要求的 RNG 品質不明。" + +#: lib/random.c:199 +msgid "Error reading from RNG." +msgstr "從 RNG 讀取時發生錯誤。" + +#: lib/setup.c:251 +msgid "OPAL support is disabled in libcryptsetup." +msgstr "libcryptsetup 已停用 OPAL 支援。" + +#: lib/setup.c:253 +#, c-format +msgid "Device %s or kernel does not support OPAL encryption." +msgstr "裝置 %s 或核心不支援 OPAL 加密。" + +#: lib/setup.c:269 +msgid "Cannot initialize crypto RNG backend." +msgstr "無法初始化加密 RNG 後端。" + +#: lib/setup.c:275 +msgid "Cannot initialize crypto backend." +msgstr "無法初始化加密後端。" + +#: lib/setup.c:308 lib/setup.c:2779 lib/verity/verity.c:109 +#, c-format +msgid "Hash algorithm %s not supported." +msgstr "不支援雜湊演算法 %s。" + +#: lib/setup.c:311 lib/loopaes/loopaes.c:78 +#, c-format +msgid "Key processing error (using hash %s)." +msgstr "金鑰處理錯誤(使用雜湊 %s)。" + +#: lib/setup.c:392 lib/setup.c:429 +msgid "Cannot determine device type. Incompatible activation of device?" +msgstr "無法判定裝置類型。裝置啟動不相容?" + +#: lib/setup.c:398 lib/setup.c:4193 +msgid "This operation is supported only for LUKS device." +msgstr "此操作僅支援 LUKS 裝置。" + +#: lib/setup.c:435 +msgid "This operation is supported only for LUKS2 device." +msgstr "此操作僅支援 LUKS2 裝置。" + +#: lib/setup.c:492 lib/luks2/luks2_reencrypt.c:3102 +msgid "All key slots full." +msgstr "所有金鑰槽都已滿。" + +#: lib/setup.c:503 +#, c-format +msgid "Key slot %d is invalid, please select between 0 and %d." +msgstr "金鑰槽 %d 無效,請在 0 到 %d 之間選取。" + +#: lib/setup.c:509 +#, c-format +msgid "Key slot %d is full, please select another one." +msgstr "金鑰槽 %d 已滿,請選取其他金鑰槽。" + +#: lib/setup.c:534 lib/setup.c:3888 +msgid "Device size is not aligned to device logical block size." +msgstr "裝置大小未對齊裝置邏輯區塊大小。" + +#: lib/setup.c:631 +#, c-format +msgid "Header detected but device %s is too small." +msgstr "偵測到標頭,但裝置 %s 太小。" + +#: lib/setup.c:672 lib/setup.c:3773 lib/setup.c:5288 +#: lib/luks2/luks2_reencrypt.c:3949 lib/luks2/luks2_reencrypt.c:4438 +msgid "This operation is not supported for this device type." +msgstr "此操作不支援此裝置類型。" + +#: lib/setup.c:677 +msgid "Illegal operation with reencryption in-progress." +msgstr "重新加密進行中,此操作不合法。" + +#: lib/setup.c:809 +msgid "Failed to rollback LUKS2 metadata in memory." +msgstr "無法在記憶體中復原 LUKS2 中繼資料。" + +#: lib/setup.c:896 lib/luks1/keymanage.c:241 lib/luks1/keymanage.c:519 +#: lib/luks2/luks2_json_metadata.c:1365 src/cryptsetup.c:1780 +#: src/cryptsetup.c:1964 src/cryptsetup.c:2019 src/cryptsetup.c:2217 +#: src/cryptsetup.c:2362 src/cryptsetup.c:2640 src/cryptsetup.c:2954 +#: src/cryptsetup.c:3022 src/utils_reencrypt.c:2310 +#: src/utils_reencrypt_luks1.c:1137 tokens/ssh/cryptsetup-ssh.c:72 +#, c-format +msgid "Device %s is not a valid LUKS device." +msgstr "裝置 %s 不是有效的 LUKS 裝置。" + +#: lib/setup.c:899 lib/luks1/keymanage.c:522 +#, c-format +msgid "Unsupported LUKS version %d." +msgstr "不支援的 LUKS 版本 %d。" + +#: lib/setup.c:1279 +#, c-format +msgid "No known cipher specification pattern detected for active device %s." +msgstr "在啟用中的裝置 %s 上偵測不到已知的加密演算法規格模式。" + +#: lib/setup.c:1528 lib/setup.c:3520 lib/setup.c:3612 lib/setup.c:3624 +#: lib/setup.c:3796 lib/setup.c:5866 +#, c-format +msgid "Device %s is not active." +msgstr "裝置 %s 未啟用。" + +#: lib/setup.c:1545 +#, c-format +msgid "Underlying device for crypt device %s disappeared." +msgstr "加密裝置 %s 的底層裝置已消失。" + +#: lib/setup.c:1627 +msgid "Invalid plain crypt parameters." +msgstr "無效的一般加密參數。" + +#: lib/setup.c:1632 lib/setup.c:2682 +msgid "Invalid key size." +msgstr "無效的金鑰大小。" + +#: lib/setup.c:1637 lib/setup.c:2687 lib/setup.c:2892 +msgid "UUID is not supported for this crypt type." +msgstr "此加密類型不支援 UUID。" + +#: lib/setup.c:1642 lib/setup.c:2692 +msgid "Detached metadata device is not supported for this crypt type." +msgstr "此加密類型不支援分離式中繼資料裝置。" + +#: lib/setup.c:1652 lib/setup.c:1900 lib/luks2/luks2_reencrypt.c:3035 +#: src/cryptsetup.c:1492 src/cryptsetup.c:3761 +msgid "Unsupported encryption sector size." +msgstr "不支援的加密磁區大小。" + +#: lib/setup.c:1660 lib/setup.c:1929 lib/setup.c:3882 +msgid "Device size is not aligned to requested sector size." +msgstr "裝置大小未對齊要求的磁區大小。" + +#: lib/setup.c:1712 lib/setup.c:1964 lib/setup.c:2341 +msgid "Can't format LUKS without device." +msgstr "沒有裝置就無法格式化 LUKS。" + +#: lib/setup.c:1717 lib/setup.c:1969 +#, c-format +msgid "Zoned device %s cannot be used for LUKS header." +msgstr "分區型裝置 %s 不能用於 LUKS 標頭。" + +#: lib/setup.c:1724 lib/setup.c:1976 lib/setup.c:2347 +msgid "Requested data alignment is not compatible with data offset." +msgstr "要求的資料對齊與資料偏移量不相容。" + +#: lib/setup.c:1764 lib/setup.c:1994 +msgid "WARNING: DAX device can corrupt data as it does not guarantee atomic sector updates.\n" +msgstr "警告:DAX 裝置可能毀損資料,因為它不保證磁區更新具原子性。\n" + +#: lib/setup.c:1802 lib/setup.c:2101 lib/setup.c:2122 lib/setup.c:2530 +#: lib/setup.c:2577 lib/setup.c:2909 +#, c-format +msgid "Cannot wipe header on device %s." +msgstr "無法清除裝置 %s 上的標頭。" + +#: lib/setup.c:1815 lib/setup.c:2174 +#, c-format +msgid "Device %s is too small for activation, there is no remaining space for data.\n" +msgstr "裝置 %s 太小,無法啟動,已無剩餘空間存放資料。\n" + +#: lib/setup.c:1856 +msgid "Volume key is too small for encryption with integrity extensions." +msgstr "卷金鑰太小,無法搭配完整性延伸進行加密。" + +#: lib/setup.c:1860 +msgid "Integrity key size is too small." +msgstr "完整性金鑰大小太小。" + +#: lib/setup.c:1869 +#, c-format +msgid "Cipher %s-%s (key size %zd bits) is not available." +msgstr "加密演算法 %s-%s(金鑰大小 %zd 位元)無法使用。" + +#: lib/setup.c:1910 +msgid "WARNING: The device activation will fail, dm-crypt is missing support for requested encryption sector size.\n" +msgstr "警告:裝置啟動將失敗,dm-crypt 缺少對所要求加密磁區大小的支援。\n" + +#: lib/setup.c:2104 lib/setup.c:2471 lib/setup.c:2533 lib/utils_device.c:906 +#: lib/luks1/keyencryption.c:245 lib/luks2/luks2_reencrypt.c:3074 +#: lib/luks2/luks2_reencrypt.c:4498 +#, c-format +msgid "Device %s is too small." +msgstr "裝置 %s 太小。" + +#: lib/setup.c:2115 lib/setup.c:2154 lib/setup.c:2570 lib/setup.c:2628 +#, c-format +msgid "Cannot format device %s in use." +msgstr "無法格式化使用中的裝置 %s。" + +#: lib/setup.c:2118 lib/setup.c:2157 lib/setup.c:2573 lib/setup.c:2631 +#, c-format +msgid "Cannot format device %s, permission denied." +msgstr "無法格式化裝置 %s,權限不足。" + +#: lib/setup.c:2142 lib/setup.c:2600 lib/setup.c:2982 +#, c-format +msgid "Cannot format integrity for device %s." +msgstr "無法格式化裝置 %s 的完整性。" + +#: lib/setup.c:2161 lib/setup.c:2639 +#, c-format +msgid "Cannot format device %s." +msgstr "無法格式化裝置 %s。" + +#: lib/setup.c:2204 +msgid "Cannot get OPAL alignment parameters." +msgstr "無法取得 OPAL 對齊參數。" + +#: lib/setup.c:2216 +msgid "Bogus OPAL logical block size." +msgstr "OPAL 邏輯區塊大小無效。" + +#: lib/setup.c:2221 lib/luks2/hw_opal/hw_opal.c:305 +msgid "Bogus OPAL logical block size differs from device block size." +msgstr "OPAL 邏輯區塊大小與裝置區塊大小不符。" + +#: lib/setup.c:2227 +msgid "Requested data offset is not compatible with OPAL block size." +msgstr "要求的資料偏移量與 OPAL 區塊大小不相容。" + +#: lib/setup.c:2234 +msgid "Requested data alignment is not compatible with OPAL alignment." +msgstr "要求的資料對齊與 OPAL 對齊不相容。" + +#: lib/setup.c:2254 +msgid "Data offset does not satisfy OPAL alignment requirements." +msgstr "資料偏移量不符合 OPAL 對齊需求。" + +#: lib/setup.c:2267 +msgid "Requested data alignment does not satisfy locking range alignment requirements." +msgstr "要求的資料對齊不符合鎖定範圍的對齊需求。" + +#: lib/setup.c:2481 +#, c-format +msgid "Compensating device size by % sectors to align it with OPAL alignment granularity." +msgstr "將裝置大小補償 % 個磁區,以配合 OPAL 對齊粒度。" + +#: lib/setup.c:2541 lib/setup.c:4276 lib/setup.c:4482 lib/utils_wipe.c:356 +#: lib/luks2/luks2_json_metadata.c:2734 lib/luks2/luks2_json_metadata.c:3009 +#, c-format +msgid "Failed to acquire OPAL lock on device %s." +msgstr "無法在裝置 %s 上取得 OPAL 鎖定。" + +#: lib/setup.c:2551 +msgid "Incorrect OPAL Admin key." +msgstr "OPAL 管理金鑰不正確。" + +#: lib/setup.c:2553 +msgid "Cannot setup OPAL segment." +msgstr "無法設定 OPAL 區段。" + +#: lib/setup.c:2635 +#, c-format +msgid "Cannot format device %s, OPAL device seems to be fully write-protected now." +msgstr "無法格式化裝置 %s,OPAL 裝置目前似乎已完全寫入保護。" + +#: lib/setup.c:2637 +msgid "This is perhaps a bug in firmware. Run OPAL PSID reset and reconnect for recovery." +msgstr "這可能是韌體中的錯誤。請執行 OPAL PSID 重設並重新連線以復原。" + +#: lib/setup.c:2657 +#, c-format +msgid "Locking range %d reset on device %s failed." +msgstr "重設裝置 %2$s 上的鎖定範圍 %1$d 失敗。" + +#: lib/setup.c:2677 +msgid "Can't format LOOPAES without device." +msgstr "沒有裝置就無法格式化 LOOPAES。" + +#: lib/setup.c:2722 +msgid "Can't format VERITY without device." +msgstr "沒有裝置就無法格式化 VERITY。" + +#: lib/setup.c:2733 lib/verity/verity.c:88 +#, c-format +msgid "Unsupported VERITY hash type %d." +msgstr "不支援的 VERITY 雜湊類型 %d。" + +#: lib/setup.c:2739 lib/verity/verity.c:96 +msgid "Unsupported VERITY block size." +msgstr "不支援的 VERITY 區塊大小。" + +#: lib/setup.c:2744 lib/verity/verity.c:61 +msgid "Unsupported VERITY hash offset." +msgstr "不支援的 VERITY 雜湊偏移量。" + +#: lib/setup.c:2749 +msgid "Unsupported VERITY FEC offset." +msgstr "不支援的 VERITY FEC 偏移量。" + +#: lib/setup.c:2773 +msgid "Data area overlaps with hash area." +msgstr "資料區域與雜湊區域重疊。" + +#: lib/setup.c:2798 +msgid "Hash area overlaps with FEC area." +msgstr "雜湊區域與 FEC 區域重疊。" + +#: lib/setup.c:2805 +msgid "Data area overlaps with FEC area." +msgstr "資料區域與 FEC 區域重疊。" + +#: lib/setup.c:2897 +msgid "Integrity key size mismatch." +msgstr "完整性金鑰大小不符。" + +#: lib/setup.c:2948 +#, c-format +msgid "WARNING: Requested tag size %d bytes differs from %s size output (%d bytes).\n" +msgstr "警告:要求的標籤大小 %d 位元組不同於 %s 的大小輸出(%d 位元組)。\n" + +#: lib/setup.c:3061 lib/setup.c:3163 +#, c-format +msgid "Unknown or unsupported device type %s requested." +msgstr "要求不明或不支援的裝置類型 %s。" + +#: lib/setup.c:3077 +#, c-format +msgid "Device %s does not provide inline integrity data fields." +msgstr "裝置 %s 未提供內嵌完整性資料欄位。" + +#: lib/setup.c:3083 +#, c-format +msgid "Inline tag size % [bytes] is larger than % provided by device %s." +msgstr "內嵌標籤大小 %1$ [位元組] 大於裝置 %3$s 提供的 %2$。" + +#: lib/setup.c:3098 +#, c-format +msgid "Sector must be the same as device hardware sector (%zu bytes)." +msgstr "磁區必須與裝置硬體磁區相同(%zu 位元組)。" + +#: lib/setup.c:3528 lib/setup.c:3617 lib/setup.c:3630 +#, c-format +msgid "Unsupported parameters on device %s." +msgstr "裝置 %s 上的參數不受支援。" + +#: lib/setup.c:3534 lib/setup.c:3637 lib/luks2/luks2_reencrypt.c:2929 +#: lib/luks2/luks2_reencrypt.c:3198 lib/luks2/luks2_reencrypt.c:3595 +#, c-format +msgid "Mismatching parameters on device %s." +msgstr "裝置 %s 上的參數不符。" + +#: lib/setup.c:3660 +msgid "Crypt devices mismatch." +msgstr "加密裝置不符。" + +#: lib/setup.c:3692 lib/setup.c:3697 lib/luks2/luks2_reencrypt.c:2413 +#: lib/luks2/luks2_reencrypt.c:2945 lib/luks2/luks2_reencrypt.c:4237 +#, c-format +msgid "Failed to reload device %s." +msgstr "無法重新載入裝置 %s。" + +#: lib/setup.c:3703 lib/setup.c:3709 lib/luks2/luks2_reencrypt.c:2383 +#: lib/luks2/luks2_reencrypt.c:2390 lib/luks2/luks2_reencrypt.c:2959 +#, c-format +msgid "Failed to suspend device %s." +msgstr "無法暫停裝置 %s。" + +#: lib/setup.c:3715 lib/luks2/luks2_reencrypt.c:2397 +#: lib/luks2/luks2_reencrypt.c:2980 lib/luks2/luks2_reencrypt.c:4150 +#: lib/luks2/luks2_reencrypt.c:4241 +#, c-format +msgid "Failed to resume device %s." +msgstr "無法恢復裝置 %s。" + +#: lib/setup.c:3730 +#, c-format +msgid "Fatal error while reloading device %s (on top of device %s)." +msgstr "重新載入裝置 %s(疊於裝置 %s 之上)時發生嚴重錯誤。" + +#: lib/setup.c:3733 lib/setup.c:3735 +#, c-format +msgid "Failed to switch device %s to dm-error." +msgstr "無法將裝置 %s 切換為 dm-error。" + +#: lib/setup.c:3778 +msgid "Can not resize LUKS2 device with static size." +msgstr "無法調整靜態大小的 LUKS2 裝置。" + +#: lib/setup.c:3783 +msgid "Resize of LUKS2 device with integrity protection is not supported." +msgstr "不支援調整具完整性保護之 LUKS2 裝置的大小。" + +#: lib/setup.c:3829 +msgid "Cannot resize loop device." +msgstr "無法調整迴圈裝置的大小。" + +#: lib/setup.c:3873 +msgid "WARNING: Maximum size already set or kernel doesn't support resize.\n" +msgstr "警告:已設定最大大小,或核心不支援調整大小。\n" + +#: lib/setup.c:3939 +msgid "Resize failed, the kernel doesn't support it." +msgstr "調整大小失敗,核心不支援此操作。" + +#: lib/setup.c:3971 +msgid "Do you really want to change UUID of device?" +msgstr "確定要變更裝置的 UUID 嗎?" + +#: lib/setup.c:4061 lib/setup.c:4069 +msgid "Header backup file does not contain compatible LUKS header." +msgstr "標頭備份檔不含相容的 LUKS 標頭。" + +#: lib/setup.c:4176 +#, c-format +msgid "Volume %s is not active." +msgstr "卷 %s 未啟用。" + +#: lib/setup.c:4231 +#, c-format +msgid "Volume %s is already suspended." +msgstr "卷 %s 已暫停。" + +#: lib/setup.c:4257 +#, c-format +msgid "Suspend is not supported for device %s." +msgstr "不支援暫停裝置 %s。" + +#: lib/setup.c:4259 lib/setup.c:4267 +#, c-format +msgid "Error during suspending device %s." +msgstr "暫停裝置 %s 時發生錯誤。" + +#: lib/setup.c:4282 +#, c-format +msgid "Device %s was suspended but hardware OPAL device cannot be locked." +msgstr "裝置 %s 已暫停,但無法鎖定硬體 OPAL 裝置。" + +#: lib/setup.c:4313 lib/setup.c:4507 +#, c-format +msgid "Resume is not supported for device %s." +msgstr "不支援恢復裝置 %s。" + +#: lib/setup.c:4315 lib/setup.c:4497 lib/setup.c:4509 +#, c-format +msgid "Error during resuming device %s." +msgstr "恢復裝置 %s 時發生錯誤。" + +#: lib/setup.c:4351 +msgid "Failed to unlink volume key from user specified keyring." +msgstr "無法從使用者指定的鑰匙圈解除連結卷金鑰。" + +#: lib/setup.c:4473 lib/setup.c:5653 +msgid "Failed to link volume key in user defined keyring." +msgstr "無法在使用者定義的鑰匙圈中連結卷金鑰。" + +#: lib/setup.c:4572 src/cryptsetup.c:2722 +#, c-format +msgid "Volume %s is not suspended." +msgstr "卷 %s 未暫停。" + +#: lib/setup.c:4683 lib/setup.c:7326 lib/setup.c:7348 src/cryptsetup.c:1856 +#: src/cryptsetup.c:2260 src/cryptsetup.c:2278 src/utils_reencrypt.c:306 +#: src/utils_reencrypt.c:1995 +msgid "Volume key does not match the volume." +msgstr "卷金鑰與卷不符。" + +#: lib/setup.c:4837 +msgid "Failed to swap new key slot." +msgstr "無法置換新的金鑰槽。" + +#: lib/setup.c:4935 +#, c-format +msgid "Key slot %d is invalid." +msgstr "金鑰槽 %d 無效。" + +#: lib/setup.c:4941 src/cryptsetup.c:1977 src/cryptsetup.c:2437 +#: src/cryptsetup.c:3122 src/cryptsetup.c:3182 +#, c-format +msgid "Keyslot %d is not active." +msgstr "金鑰槽 %d 未啟用。" + +#: lib/setup.c:4960 +msgid "Device header overlaps with data area." +msgstr "裝置標頭與資料區域重疊。" + +#: lib/setup.c:5181 +msgid "Reencryption in-progress. Cannot activate device." +msgstr "重新加密進行中。無法啟動裝置。" + +#: lib/setup.c:5183 lib/luks2/luks2_json_metadata.c:2905 +#: lib/luks2/luks2_reencrypt.c:3726 +msgid "Failed to get reencryption lock." +msgstr "無法取得重新加密鎖定。" + +#: lib/setup.c:5205 +msgid "LUKS2 reencryption recovery using volume key(s) failed." +msgstr "使用卷金鑰進行 LUKS2 重新加密復原失敗。" + +#: lib/setup.c:5341 +#, c-format +msgid "Device %s already exists." +msgstr "裝置 %s 已存在。" + +#: lib/setup.c:5348 +#, c-format +msgid "Cannot use device %s, name is invalid or still in use." +msgstr "無法使用裝置 %s,名稱無效或仍在使用中。" + +#: lib/setup.c:5360 +msgid "Reencryption volume keys do not match the volume." +msgstr "重新加密卷金鑰與卷不符。" + +#: lib/setup.c:5377 +msgid "Incorrect volume key specified for plain device." +msgstr "為一般裝置指定的卷金鑰不正確。" + +#: lib/setup.c:5403 lib/setup.c:5464 +msgid "Device type is not properly initialized." +msgstr "裝置類型未正確初始化。" + +#: lib/setup.c:5502 +msgid "Kernel keyring is not supported by the kernel." +msgstr "核心不支援核心鑰匙圈。" + +#: lib/setup.c:5506 +msgid "Kernel keyring missing: required for passing signature to kernel." +msgstr "缺少核心鑰匙圈:傳遞簽章給核心時需要。" + +#: lib/setup.c:5561 +#, c-format +msgid "Cannot use keyring key %s." +msgstr "無法使用鑰匙圈金鑰 %s。" + +#: lib/setup.c:5774 +msgid "Incorrect root hash specified for verity device." +msgstr "為 verity 裝置指定的根雜湊不正確。" + +#: lib/setup.c:5815 lib/setup.c:5840 +msgid "OPAL does not support deferred deactivation." +msgstr "OPAL 不支援延遲停用。" + +#: lib/setup.c:5830 lib/setup.c:5861 lib/luks2/luks2_json_metadata.c:2970 +#: src/utils_reencrypt.c:89 +#, c-format +msgid "Device %s is still in use." +msgstr "裝置 %s 仍在使用中。" + +#: lib/setup.c:5848 +#, c-format +msgid "Could not cancel deferred remove from device %s." +msgstr "無法取消裝置 %s 的延遲移除。" + +#: lib/setup.c:5870 +#, c-format +msgid "Invalid device %s." +msgstr "無效的裝置 %s。" + +#: lib/setup.c:6017 +msgid "Volume key buffer too small." +msgstr "卷金鑰緩衝區太小。" + +#: lib/setup.c:6028 +msgid "Cannot retrieve volume key for LUKS2 device." +msgstr "無法擷取 LUKS2 裝置的卷金鑰。" + +#: lib/setup.c:6037 +msgid "Cannot retrieve volume key for LUKS1 device." +msgstr "無法擷取 LUKS1 裝置的卷金鑰。" + +#: lib/setup.c:6051 +msgid "Cannot retrieve volume key for plain device." +msgstr "無法擷取一般裝置的卷金鑰。" + +#: lib/setup.c:6059 +msgid "Cannot retrieve root hash for verity device." +msgstr "無法擷取 verity 裝置的根雜湊。" + +#: lib/setup.c:6068 +msgid "Cannot retrieve volume key for BITLK device." +msgstr "無法擷取 BITLK 裝置的卷金鑰。" + +#: lib/setup.c:6073 +msgid "Cannot retrieve volume key for FVAULT2 device." +msgstr "無法擷取 FVAULT2 裝置的卷金鑰。" + +#: lib/setup.c:6075 +#, c-format +msgid "This operation is not supported for %s crypt device." +msgstr "此操作不支援 %s 加密裝置。" + +#: lib/setup.c:6260 lib/setup.c:6271 +msgid "Dump operation is not supported for this device type." +msgstr "此裝置類型不支援傾印操作。" + +#: lib/setup.c:6651 +#, c-format +msgid "Data offset is not multiple of %u bytes." +msgstr "資料偏移量不是 %u 位元組的倍數。" + +#: lib/setup.c:6959 +#, c-format +msgid "Cannot convert device %s which is still in use." +msgstr "無法轉換仍在使用中的裝置 %s。" + +#: lib/setup.c:7267 lib/setup.c:7422 +#, c-format +msgid "Failed to assign keyslot %u as the new volume key." +msgstr "無法指定金鑰槽 %u 作為新的卷金鑰。" + +#: lib/setup.c:7291 +msgid "Failed to initialize default LUKS2 keyslot parameters." +msgstr "無法初始化預設的 LUKS2 金鑰槽參數。" + +#: lib/setup.c:7297 +#, c-format +msgid "Failed to assign keyslot %d to digest." +msgstr "無法將金鑰槽 %d 指定給摘要。" + +#: lib/setup.c:7539 +msgid "Cannot add key slot, all slots disabled and no volume key provided." +msgstr "無法新增金鑰槽,所有金鑰槽皆已停用且未提供卷金鑰。" + +#: lib/setup.c:7627 lib/setup.c:7642 lib/verity/verity.c:333 +msgid "Failed to load key in kernel keyring." +msgstr "無法在核心鑰匙圈中載入金鑰。" + +#: lib/setup.c:7823 +#, c-format +msgid "Could not find keyring described by \"%s\"." +msgstr "找不到由「%s」描述的鑰匙圈。" + +#: lib/setup.c:7888 +msgid "Failed to acquire global memory-hard access serialization lock." +msgstr "無法取得全域記憶體密集存取序列化鎖定。" + +#: lib/utils.c:205 lib/tcrypt/tcrypt.c:488 +msgid "Failed to open key file." +msgstr "無法開啟金鑰檔。" + +#: lib/utils.c:213 +msgid "Cannot read keyfile from a terminal." +msgstr "無法從終端機讀取金鑰檔。" + +#: lib/utils.c:229 +msgid "Failed to stat key file." +msgstr "無法取得金鑰檔狀態。" + +#: lib/utils.c:237 lib/utils.c:258 +msgid "Cannot seek to requested keyfile offset." +msgstr "無法移至要求的金鑰檔偏移量。" + +#: lib/utils.c:252 lib/utils.c:267 src/utils_password.c:219 +#: src/utils_password.c:231 +msgid "Out of memory while reading passphrase." +msgstr "讀取通行密碼時記憶體不足。" + +#: lib/utils.c:287 +msgid "Error reading passphrase." +msgstr "讀取通行密碼時發生錯誤。" + +#: lib/utils.c:304 +msgid "Nothing to read on input." +msgstr "輸入中沒有可讀取的內容。" + +#: lib/utils.c:311 +msgid "Maximum keyfile size exceeded." +msgstr "超過金鑰檔大小上限。" + +#: lib/utils.c:316 +msgid "Cannot read requested amount of data." +msgstr "無法讀取要求的資料量。" + +#: lib/utils_device.c:207 lib/utils_storage_wrappers.c:99 +#: lib/luks1/keyencryption.c:79 src/utils_reencrypt.c:2283 +#, c-format +msgid "Device %s does not exist or access denied." +msgstr "裝置 %s 不存在或存取遭拒。" + +#: lib/utils_device.c:217 +#, c-format +msgid "Device %s is not compatible." +msgstr "裝置 %s 不相容。" + +#: lib/utils_device.c:546 +#, c-format +msgid "Ignoring bogus optimal-io size for data device (%u bytes)." +msgstr "忽略資料裝置(%u 位元組)的無效 optimal-io 大小。" + +#: lib/utils_device.c:711 +#, c-format +msgid "Cannot grow %s to % bytes (%s)." +msgstr "無法將 %s 擴大到 % 位元組(%s)。" + +#: lib/utils_device.c:717 +#, c-format +msgid "Device %s is too small. Need at least % bytes." +msgstr "裝置 %s 太小。至少需要 % 位元組。" + +#: lib/utils_device.c:798 +#, c-format +msgid "Cannot use device %s which is in use (already mapped or mounted)." +msgstr "無法使用使用中的裝置 %s(已對映或已掛載)。" + +#: lib/utils_device.c:802 +#, c-format +msgid "Cannot use device %s, permission denied." +msgstr "無法使用裝置 %s,權限不足。" + +#: lib/utils_device.c:805 +#, c-format +msgid "Cannot get info about device %s." +msgstr "無法取得裝置 %s 的相關資訊。" + +#: lib/utils_device.c:828 +msgid "Cannot use a loopback device, running as non-root user." +msgstr "無法使用迴圈裝置,目前是以非 root 使用者身分執行。" + +#: lib/utils_device.c:839 +msgid "Attaching loopback device failed (loop device with autoclear flag is required)." +msgstr "附加迴圈裝置失敗(需要具 autoclear 旗標的迴圈裝置)。" + +#: lib/utils_device.c:887 +#, c-format +msgid "Requested offset is beyond real size of device %s." +msgstr "要求的偏移量超出裝置 %s 的實際大小。" + +#: lib/utils_device.c:895 +#, c-format +msgid "Device %s has zero size." +msgstr "裝置 %s 大小為零。" + +#: lib/utils_pbkdf.c:105 +msgid "Requested PBKDF target time cannot be zero." +msgstr "要求的 PBKDF 目標時間不能為零。" + +#: lib/utils_pbkdf.c:111 +#, c-format +msgid "Unknown PBKDF type %s." +msgstr "未知的 PBKDF 類型 %s。" + +#: lib/utils_pbkdf.c:116 +#, c-format +msgid "Requested hash %s is not supported." +msgstr "要求的雜湊 %s 不受支援。" + +#: lib/utils_pbkdf.c:127 +msgid "Requested PBKDF type is not supported for LUKS1." +msgstr "LUKS1 不支援要求的 PBKDF 類型。" + +#: lib/utils_pbkdf.c:133 +msgid "PBKDF max memory or parallel threads must not be set with pbkdf2." +msgstr "PBKDF 最大記憶體或平行執行緒不得與 pbkdf2 一起設定。" + +#: lib/utils_pbkdf.c:138 lib/utils_pbkdf.c:148 +#, c-format +msgid "Forced iteration count is too low for %s (minimum is %u)." +msgstr "對 %s 強制的疊代次數太低(最小值為 %u)。" + +#: lib/utils_pbkdf.c:153 +#, c-format +msgid "Forced memory cost is too low for %s (minimum is %u kilobytes)." +msgstr "對 %s 強制的記憶體成本太低(最小值為 %u KB)。" + +#: lib/utils_pbkdf.c:160 +#, c-format +msgid "Requested maximum PBKDF memory cost is too high (maximum is %d kilobytes)." +msgstr "要求的 PBKDF 最大記憶體成本太高(最大值為 %d KB)。" + +#: lib/utils_pbkdf.c:165 +msgid "Requested maximum PBKDF memory cost is too high (limited by the integer maximal size)." +msgstr "要求的 PBKDF 最大記憶體成本太高(受限於整數最大值)。" + +#: lib/utils_pbkdf.c:169 +msgid "Requested maximum PBKDF memory cannot be zero." +msgstr "要求的 PBKDF 最大記憶體不能為零。" + +#: lib/utils_pbkdf.c:173 +#, c-format +msgid "Requested maximum PBKDF parallel cost is too high (maximum is %d)." +msgstr "要求的 PBKDF 最大平行成本太高(最大值為 %d)。" + +#: lib/utils_pbkdf.c:178 +msgid "Requested PBKDF parallel threads cannot be zero." +msgstr "要求的 PBKDF 平行執行緒不能為零。" + +#: lib/utils_pbkdf.c:198 +msgid "Only PBKDF2 is supported in FIPS mode." +msgstr "FIPS 模式下僅支援 PBKDF2。" + +#: lib/utils_benchmark.c:175 +msgid "PBKDF benchmark disabled but iterations not set." +msgstr "PBKDF 基準測試已停用但未設定疊代次數。" + +#: lib/utils_benchmark.c:194 +#, c-format +msgid "Not compatible PBKDF2 options (using hash algorithm %s)." +msgstr "不相容的 PBKDF2 選項(使用雜湊演算法 %s)。" + +#: lib/utils_benchmark.c:214 +msgid "Not compatible PBKDF options." +msgstr "不相容的 PBKDF 選項。" + +#: lib/utils_device_locking.c:88 +#, c-format +msgid "Locking aborted. The locking path %s/%s is unusable (not a directory or missing)." +msgstr "鎖定中止。鎖定路徑 %s/%s 無法使用(不是目錄或不存在)。" + +#: lib/utils_device_locking.c:105 +#, c-format +msgid "Locking aborted. The locking path %s/%s is unusable (%s is not a directory)." +msgstr "鎖定中止。鎖定路徑 %s/%s 無法使用(%s 不是目錄)。" + +#: lib/utils_wipe.c:143 lib/utils_wipe.c:218 src/utils_reencrypt_luks1.c:700 +#: src/utils_reencrypt_luks1.c:793 +msgid "Cannot seek to device offset." +msgstr "無法移至裝置偏移量。" + +#: lib/utils_wipe.c:240 +#, c-format +msgid "Device wipe error, offset %." +msgstr "裝置清除錯誤,偏移量 %。" + +#: lib/utils_wipe.c:332 +msgid "Incorrect OPAL PSID." +msgstr "OPAL PSID 不正確。" + +#: lib/utils_wipe.c:334 +msgid "Cannot erase OPAL device." +msgstr "無法抹除 OPAL 裝置。" + +#: lib/luks1/keyencryption.c:27 +#, c-format +msgid "" +"Failed to setup dm-crypt key mapping for device %s.\n" +"Check that kernel supports %s cipher (check syslog for more info)." +msgstr "" +"無法為裝置 %s 設定 dm-crypt 金鑰對映。\n" +"請確認核心支援 %s 加密演算法(詳情請查看 syslog)。" + +#: lib/luks1/keyencryption.c:32 +msgid "Key size in XTS mode must be 256 or 512 bits." +msgstr "XTS 模式的金鑰大小必須為 256 或 512 位元。" + +#: lib/luks1/keyencryption.c:34 +msgid "Cipher specification should be in [cipher]-[mode]-[iv] format." +msgstr "加密演算法規格應為 [cipher]-[mode]-[iv] 格式。" + +#: lib/luks1/keyencryption.c:85 lib/luks1/keymanage.c:358 +#: lib/luks1/keymanage.c:665 lib/luks1/keymanage.c:1133 +#: lib/luks2/luks2_json_metadata.c:1510 lib/luks2/luks2_keyslot.c:711 +#, c-format +msgid "Cannot write to device %s, permission denied." +msgstr "無法寫入裝置 %s,權限不足。" + +#: lib/luks1/keyencryption.c:108 +msgid "Failed to open temporary keystore device." +msgstr "無法開啟暫時金鑰儲存裝置。" + +#: lib/luks1/keyencryption.c:115 +msgid "Failed to access temporary keystore device." +msgstr "無法存取暫時金鑰儲存裝置。" + +#: lib/luks1/keyencryption.c:189 lib/luks2/luks2_keyslot_luks2.c:47 +#: lib/luks2/luks2_keyslot_reenc.c:184 +msgid "IO error while encrypting keyslot." +msgstr "加密金鑰槽時發生 IO 錯誤。" + +#: lib/luks1/keyencryption.c:236 lib/luks1/keymanage.c:361 +#: lib/luks1/keymanage.c:619 lib/luks1/keymanage.c:668 lib/tcrypt/tcrypt.c:659 +#: lib/fvault2/fvault2.c:872 lib/verity/verity.c:67 lib/verity/verity.c:183 +#: lib/verity/verity_hash.c:312 lib/verity/verity_hash.c:321 +#: lib/verity/verity_hash.c:350 lib/verity/verity_fec.c:247 +#: lib/verity/verity_fec.c:259 lib/verity/verity_fec.c:264 +#: lib/luks2/luks2_json_metadata.c:1513 src/utils_reencrypt_luks1.c:108 +#: src/utils_reencrypt_luks1.c:120 +#, c-format +msgid "Cannot open device %s." +msgstr "無法開啟裝置 %s。" + +#: lib/luks1/keyencryption.c:247 lib/luks2/luks2_keyslot_luks2.c:85 +msgid "IO error while decrypting keyslot." +msgstr "解密金鑰槽時發生 IO 錯誤。" + +#: lib/luks1/keymanage.c:117 +#, c-format +msgid "Device %s is too small. (LUKS1 requires at least % bytes.)" +msgstr "裝置 %s 太小。(LUKS1 至少需要 % 位元組。)" + +#: lib/luks1/keymanage.c:143 lib/luks1/keymanage.c:151 +#: lib/luks1/keymanage.c:163 lib/luks1/keymanage.c:174 +#: lib/luks1/keymanage.c:186 +#, c-format +msgid "LUKS keyslot %u is invalid." +msgstr "LUKS 金鑰槽 %u 無效。" + +#: lib/luks1/keymanage.c:259 lib/luks2/luks2_json_metadata.c:1382 +#, c-format +msgid "Requested header backup file %s already exists." +msgstr "要求的標頭備份檔 %s 已存在。" + +#: lib/luks1/keymanage.c:261 lib/luks2/luks2_json_metadata.c:1384 +#, c-format +msgid "Cannot create header backup file %s." +msgstr "無法建立標頭備份檔 %s。" + +#: lib/luks1/keymanage.c:268 lib/luks2/luks2_json_metadata.c:1391 +#, c-format +msgid "Cannot write header backup file %s." +msgstr "無法寫入標頭備份檔 %s。" + +#: lib/luks1/keymanage.c:300 lib/luks2/luks2_json_metadata.c:1420 +msgid "Backup file does not contain valid LUKS header." +msgstr "備份檔不含有效的 LUKS 標頭。" + +#: lib/luks1/keymanage.c:313 lib/luks1/keymanage.c:585 +#: lib/luks2/luks2_json_metadata.c:1442 +#, c-format +msgid "Cannot open header backup file %s." +msgstr "無法開啟標頭備份檔 %s。" + +#: lib/luks1/keymanage.c:321 lib/luks2/luks2_json_metadata.c:1450 +#, c-format +msgid "Cannot read header backup file %s." +msgstr "無法讀取標頭備份檔 %s。" + +#: lib/luks1/keymanage.c:331 +msgid "Data offset or key size differs on device and backup, restore failed." +msgstr "裝置與備份的資料偏移量或金鑰大小不同,恢復失敗。" + +#: lib/luks1/keymanage.c:339 +#, c-format +msgid "Device %s %s%s" +msgstr "裝置 %s %s%s" + +#: lib/luks1/keymanage.c:340 +msgid "does not contain LUKS header. Replacing header can destroy data on that device." +msgstr "不含 LUKS 標頭。取代標頭可能毀損該裝置上的資料。" + +#: lib/luks1/keymanage.c:341 +msgid "already contains LUKS header. Replacing header will destroy existing keyslots." +msgstr "已含有 LUKS 標頭。取代標頭將毀損既有的金鑰槽。" + +#: lib/luks1/keymanage.c:342 lib/luks2/luks2_json_metadata.c:1482 +msgid "" +"\n" +"WARNING: real device header has different UUID than backup!" +msgstr "" +"\n" +"警告:實際裝置標頭的 UUID 與備份不同!" + +#: lib/luks1/keymanage.c:390 +msgid "Non standard key size, manual repair required." +msgstr "非標準金鑰大小,需要手動修復。" + +#: lib/luks1/keymanage.c:400 +msgid "Non standard keyslots alignment, manual repair required." +msgstr "非標準金鑰槽對齊,需要手動修復。" + +#: lib/luks1/keymanage.c:409 +#, c-format +msgid "Cipher mode repaired (%s -> %s)." +msgstr "加密模式已修復(%s -> %s)。" + +#: lib/luks1/keymanage.c:420 +#, c-format +msgid "Cipher hash repaired to lowercase (%s)." +msgstr "加密雜湊已修復為小寫(%s)。" + +#: lib/luks1/keymanage.c:422 lib/luks1/keymanage.c:528 +#: lib/luks1/keymanage.c:757 +#, c-format +msgid "Requested LUKS hash %s is not supported." +msgstr "要求的 LUKS 雜湊 %s 不受支援。" + +#: lib/luks1/keymanage.c:436 +msgid "Repairing keyslots." +msgstr "正在修復金鑰槽。" + +#: lib/luks1/keymanage.c:455 +#, c-format +msgid "Keyslot %i: offset repaired (%u -> %u)." +msgstr "金鑰槽 %i:偏移量已修復(%u -> %u)。" + +#: lib/luks1/keymanage.c:463 +#, c-format +msgid "Keyslot %i: stripes repaired (%u -> %u)." +msgstr "金鑰槽 %i:條紋數已修復(%u -> %u)。" + +#: lib/luks1/keymanage.c:472 +#, c-format +msgid "Keyslot %i: bogus partition signature." +msgstr "金鑰槽 %i:無效的分割區簽章。" + +#: lib/luks1/keymanage.c:477 +#, c-format +msgid "Keyslot %i: salt wiped." +msgstr "金鑰槽 %i:鹽值已清除。" + +#: lib/luks1/keymanage.c:494 +msgid "Writing LUKS header to disk." +msgstr "正在將 LUKS 標頭寫入磁碟。" + +#: lib/luks1/keymanage.c:499 +msgid "Repair failed." +msgstr "修復失敗。" + +#: lib/luks1/keymanage.c:554 +#, c-format +msgid "LUKS cipher mode %s is invalid." +msgstr "LUKS 加密模式 %s 無效。" + +#: lib/luks1/keymanage.c:559 +#, c-format +msgid "LUKS hash %s is invalid." +msgstr "LUKS 雜湊 %s 無效。" + +#: lib/luks1/keymanage.c:566 src/cryptsetup.c:1367 +msgid "No known problems detected for LUKS header." +msgstr "LUKS 標頭未偵測到已知問題。" + +#: lib/luks1/keymanage.c:690 +#, c-format +msgid "Error during update of LUKS header on device %s." +msgstr "更新裝置 %s 上的 LUKS 標頭時發生錯誤。" + +#: lib/luks1/keymanage.c:698 +#, c-format +msgid "Error re-reading LUKS header after update on device %s." +msgstr "更新後重新讀取裝置 %s 上的 LUKS 標頭時發生錯誤。" + +#: lib/luks1/keymanage.c:751 +msgid "Data offset for LUKS header must be either 0 or higher than header size." +msgstr "LUKS 標頭的資料偏移量必須為 0 或高於標頭大小。" + +#: lib/luks1/keymanage.c:762 lib/luks1/keymanage.c:833 +#: lib/luks2/luks2_json_format.c:240 lib/luks2/luks2_json_metadata.c:1261 +#: src/utils_reencrypt.c:703 +msgid "Wrong LUKS UUID format provided." +msgstr "提供的 LUKS UUID 格式錯誤。" + +#: lib/luks1/keymanage.c:784 +msgid "Cannot create LUKS header: reading random salt failed." +msgstr "無法建立 LUKS 標頭:讀取隨機鹽值失敗。" + +#: lib/luks1/keymanage.c:812 +#, c-format +msgid "Cannot create LUKS header: header digest failed (using hash %s)." +msgstr "無法建立 LUKS 標頭:標頭摘要失敗(使用雜湊 %s)。" + +#: lib/luks1/keymanage.c:857 +#, c-format +msgid "Key slot %d active, purge first." +msgstr "金鑰槽 %d 啟用中,請先清除。" + +#: lib/luks1/keymanage.c:863 +#, c-format +msgid "Key slot %d material includes too few stripes. Header manipulation?" +msgstr "金鑰槽 %d 的材料包含太少條紋。是否遭竄改標頭?" + +#: lib/luks1/keymanage.c:901 lib/luks2/luks2_keyslot_luks2.c:217 +msgid "PBKDF2 iteration value overflow." +msgstr "PBKDF2 疊代值溢位。" + +#: lib/luks1/keymanage.c:1023 +#, c-format +msgid "Cannot open keyslot (using hash %s)." +msgstr "無法開啟金鑰槽(使用雜湊 %s)。" + +#: lib/luks1/keymanage.c:1119 +#, c-format +msgid "Key slot %d is invalid, please select keyslot between 0 and %d." +msgstr "金鑰槽 %d 無效,請在 0 到 %d 之間選取金鑰槽。" + +#: lib/luks1/keymanage.c:1137 lib/luks2/luks2_keyslot.c:715 +#, c-format +msgid "Cannot wipe device %s." +msgstr "無法清除裝置 %s。" + +#: lib/loopaes/loopaes.c:140 +msgid "Detected not yet supported GPG encrypted keyfile." +msgstr "偵測到尚不支援的 GPG 加密金鑰檔。" + +#: lib/loopaes/loopaes.c:141 +msgid "Please use gpg --decrypt | cryptsetup --keyfile=- ...\n" +msgstr "請使用 gpg --decrypt | cryptsetup --keyfile=- ...\n" + +#: lib/loopaes/loopaes.c:162 lib/loopaes/loopaes.c:182 +msgid "Incompatible loop-AES keyfile detected." +msgstr "偵測到不相容的 loop-AES 金鑰檔。" + +#: lib/loopaes/loopaes.c:238 +msgid "Kernel does not support loop-AES compatible mapping." +msgstr "核心不支援 loop-AES 相容對映。" + +#: lib/tcrypt/tcrypt.c:495 +#, c-format +msgid "Error reading keyfile %s." +msgstr "讀取金鑰檔 %s 時發生錯誤。" + +#: lib/tcrypt/tcrypt.c:549 +#, c-format +msgid "Maximum TCRYPT passphrase length (%zu) exceeded." +msgstr "超過 TCRYPT 通行密碼長度上限(%zu)。" + +#: lib/tcrypt/tcrypt.c:591 +#, c-format +msgid "PBKDF2 hash algorithm %s not available, skipping." +msgstr "PBKDF2 雜湊演算法 %s 不可用,略過。" + +#: lib/tcrypt/tcrypt.c:743 +#, c-format +msgid "Activation is not supported for %d sector size." +msgstr "不支援 %d 磁區大小的啟動。" + +#: lib/tcrypt/tcrypt.c:749 +msgid "Kernel does not support activation for this TCRYPT legacy mode." +msgstr "核心不支援此 TCRYPT 舊版模式的啟動。" + +#: lib/tcrypt/tcrypt.c:804 +#, c-format +msgid "Activating TCRYPT system encryption for partition %s." +msgstr "正在啟動分割區 %s 的 TCRYPT 系統加密。" + +#: lib/tcrypt/tcrypt.c:819 +msgid "Cannot determine TCRYPT system partition offset, activating whole encrypted area." +msgstr "無法判定 TCRYPT 系統分割區偏移量,改為啟動整個加密區域。" + +#: lib/tcrypt/tcrypt.c:828 +msgid "Cannot determine TCRYPT system partition offset, activating device as a system partition." +msgstr "無法判定 TCRYPT 系統分割區偏移量,將裝置作為系統分割區啟動。" + +#: lib/tcrypt/tcrypt.c:908 +msgid "Kernel does not support TCRYPT compatible mapping." +msgstr "核心不支援 TCRYPT 相容對映。" + +#: lib/tcrypt/tcrypt.c:1137 +msgid "This function is not supported without TCRYPT header load." +msgstr "未載入 TCRYPT 標頭時不支援此功能。" + +#: lib/bitlk/bitlk.c:293 +#, c-format +msgid "Unexpected metadata entry type '%u' found when parsing supported Volume Master Key." +msgstr "剖析支援的卷主金鑰時發現意外的中繼資料項目類型 '%u'。" + +#: lib/bitlk/bitlk.c:351 +msgid "Invalid string found when parsing Volume Master Key." +msgstr "剖析卷主金鑰時發現無效的字串。" + +#: lib/bitlk/bitlk.c:355 +#, c-format +msgid "Unexpected string ('%s') found when parsing supported Volume Master Key." +msgstr "剖析支援的卷主金鑰時發現意外的字串('%s')。" + +#: lib/bitlk/bitlk.c:375 +#, c-format +msgid "Unexpected metadata entry value '%u' found when parsing supported Volume Master Key." +msgstr "剖析支援的卷主金鑰時發現意外的中繼資料項目值 '%u'。" + +#: lib/bitlk/bitlk.c:528 +msgid "BITLK version 1 is currently not supported." +msgstr "目前不支援 BITLK 第 1 版。" + +#: lib/bitlk/bitlk.c:534 +msgid "Invalid or unknown boot signature for BITLK device." +msgstr "BITLK 裝置的開機簽章無效或不明。" + +#: lib/bitlk/bitlk.c:546 +#, c-format +msgid "Unsupported sector size %." +msgstr "不支援的磁區大小 %。" + +#: lib/bitlk/bitlk.c:554 +#, c-format +msgid "Failed to read BITLK header from %s." +msgstr "無法從 %s 讀取 BITLK 標頭。" + +#: lib/bitlk/bitlk.c:603 +#, c-format +msgid "Failed to read and validate BITLK FVE metadata from %s." +msgstr "無法從 %s 讀取並驗證 BITLK FVE 中繼資料。" + +#: lib/bitlk/bitlk.c:610 +#, c-format +msgid "Failed to validate the location of BITLK FVE metadata from %s." +msgstr "無法驗證來自 %s 的 BITLK FVE 中繼資料位置。" + +#: lib/bitlk/bitlk.c:621 +#, c-format +msgid "BITLK FVE metadata changed between reads from %s." +msgstr "來自 %s 的 BITLK FVE 中繼資料在讀取之間發生變更。" + +#: lib/bitlk/bitlk.c:628 +#, c-format +msgid "Failed to hash BITLK FVE metadata read from %s." +msgstr "無法對從 %s 讀取的 BITLK FVE 中繼資料計算雜湊。" + +#: lib/bitlk/bitlk.c:644 +#, c-format +msgid "Failed to parse BITLK FVE validation metadata from %s." +msgstr "無法剖析來自 %s 的 BITLK FVE 驗證中繼資料。" + +#: lib/bitlk/bitlk.c:695 +msgid "Unknown or unsupported encryption type." +msgstr "不明或不支援的加密類型。" + +#: lib/bitlk/bitlk.c:733 +#, c-format +msgid "Failed to check BITLK metadata entries previously read from %s." +msgstr "無法檢查先前從 %s 讀取的 BITLK 中繼資料項目。" + +#: lib/bitlk/bitlk.c:853 +msgid "Failed to convert BITLK volume description" +msgstr "無法轉換 BITLK 卷描述" + +#: lib/bitlk/bitlk.c:1018 +#, c-format +msgid "Unexpected metadata entry type '%u' found when parsing external key." +msgstr "剖析外部金鑰時發現意外的中繼資料項目類型 '%u'。" + +#: lib/bitlk/bitlk.c:1041 +#, c-format +msgid "BEK file GUID '%s' does not match GUID of the volume." +msgstr "BEK 檔 GUID '%s' 與卷的 GUID 不符。" + +#: lib/bitlk/bitlk.c:1045 +#, c-format +msgid "Unexpected metadata entry value '%u' found when parsing external key." +msgstr "剖析外部金鑰時發現意外的中繼資料項目值 '%u'。" + +#: lib/bitlk/bitlk.c:1084 +#, c-format +msgid "Unsupported BEK metadata version %" +msgstr "不支援的 BEK 中繼資料版本 %" + +#: lib/bitlk/bitlk.c:1089 +#, c-format +msgid "Unexpected BEK metadata size % does not match BEK file length" +msgstr "意外的 BEK 中繼資料大小 % 與 BEK 檔長度不符" + +#: lib/bitlk/bitlk.c:1115 +msgid "Unexpected metadata entry found when parsing startup key." +msgstr "剖析啟動金鑰時發現意外的中繼資料項目。" + +#: lib/bitlk/bitlk.c:1218 +msgid "This operation is not supported." +msgstr "不支援此操作。" + +#: lib/bitlk/bitlk.c:1226 +msgid "Unexpected key data size." +msgstr "意外的金鑰資料大小。" + +#: lib/bitlk/bitlk.c:1448 +msgid "This BITLK device is in an unsupported state and cannot be activated." +msgstr "此 BITLK 裝置處於不支援的狀態,無法啟動。" + +#: lib/bitlk/bitlk.c:1453 +#, c-format +msgid "BITLK devices with type '%s' cannot be activated." +msgstr "類型為 '%s' 的 BITLK 裝置無法啟動。" + +#: lib/bitlk/bitlk.c:1492 +#, c-format +msgid "WARNING: BitLocker volume size % does not match the underlying device size %" +msgstr "警告:BitLocker 卷大小 % 與底層裝置大小 % 不符" + +#: lib/bitlk/bitlk.c:1634 +msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK IV." +msgstr "無法啟動裝置,核心 dm-crypt 缺少對 BITLK IV 的支援。" + +#: lib/bitlk/bitlk.c:1638 +msgid "Cannot activate device, kernel dm-crypt is missing support for BITLK Elephant diffuser." +msgstr "無法啟動裝置,核心 dm-crypt 缺少對 BITLK Elephant diffuser 的支援。" + +#: lib/bitlk/bitlk.c:1642 +msgid "Cannot activate device, kernel dm-crypt is missing support for large sector size." +msgstr "無法啟動裝置,核心 dm-crypt 缺少對大型磁區大小的支援。" + +#: lib/bitlk/bitlk.c:1646 +msgid "Cannot activate device, kernel dm-zero module is missing." +msgstr "無法啟動裝置,缺少核心 dm-zero 模組。" + +#: lib/fvault2/fvault2.c:532 +#, c-format +msgid "Could not read %u bytes of volume header." +msgstr "無法讀取 %u 位元組的卷標頭。" + +#: lib/fvault2/fvault2.c:544 +#, c-format +msgid "Unsupported FVAULT2 version %." +msgstr "不支援的 FVAULT2 版本 %。" + +#: lib/verity/verity.c:55 lib/verity/verity.c:169 +#, c-format +msgid "Verity device %s does not use on-disk header." +msgstr "verity 裝置 %s 未使用磁碟上標頭。" + +#: lib/verity/verity.c:83 +#, c-format +msgid "Unsupported VERITY version %d." +msgstr "不支援的 VERITY 版本 %d。" + +#: lib/verity/verity.c:118 +msgid "VERITY header corrupted." +msgstr "VERITY 標頭已毀損。" + +#: lib/verity/verity.c:163 +#, c-format +msgid "Wrong VERITY UUID format provided on device %s." +msgstr "裝置 %s 上提供的 VERITY UUID 格式錯誤。" + +#: lib/verity/verity.c:207 +#, c-format +msgid "Error during update of verity header on device %s." +msgstr "更新裝置 %s 上的 verity 標頭時發生錯誤。" + +#: lib/verity/verity.c:261 +msgid "Root hash signature verification is not supported." +msgstr "不支援根雜湊簽章驗證。" + +#: lib/verity/verity.c:266 +msgid "Root hash signature required." +msgstr "需要根雜湊簽章。" + +#: lib/verity/verity.c:282 +msgid "Errors cannot be repaired with FEC device." +msgstr "無法使用 FEC 裝置修復錯誤。" + +#: lib/verity/verity.c:284 +#, c-format +msgid "Found %u repairable errors with FEC device." +msgstr "使用 FEC 裝置發現 %u 個可修復的錯誤。" + +#: lib/verity/verity.c:368 +msgid "Kernel does not support dm-verity mapping." +msgstr "核心不支援 dm-verity 對映。" + +#: lib/verity/verity.c:372 +msgid "Kernel does not support dm-verity signature option." +msgstr "核心不支援 dm-verity 簽章選項。" + +#: lib/verity/verity.c:383 +msgid "Verity device detected corruption after activation." +msgstr "verity 裝置啟動後偵測到毀損。" + +#: lib/verity/verity_hash.c:53 +#, c-format +msgid "Spare area is not zeroed at position %." +msgstr "位置 % 的備用區域未歸零。" + +#: lib/verity/verity_hash.c:154 lib/verity/verity_hash.c:287 +#: lib/verity/verity_hash.c:298 +msgid "Device offset overflow." +msgstr "裝置偏移量溢位。" + +#: lib/verity/verity_hash.c:205 +#, c-format +msgid "Verification failed at position %." +msgstr "位置 % 的驗證失敗。" + +#: lib/verity/verity_hash.c:294 +msgid "Hash area overflow." +msgstr "雜湊區域溢位。" + +#: lib/verity/verity_hash.c:381 +msgid "Verification of data area failed." +msgstr "資料區域驗證失敗。" + +#: lib/verity/verity_hash.c:386 +msgid "Verification of root hash failed." +msgstr "根雜湊驗證失敗。" + +#: lib/verity/verity_hash.c:392 +msgid "Input/output error while creating hash area." +msgstr "建立雜湊區域時發生輸入/輸出錯誤。" + +#: lib/verity/verity_hash.c:394 +msgid "Creation of hash area failed." +msgstr "建立雜湊區域失敗。" + +#: lib/verity/verity_hash.c:429 +#, c-format +msgid "WARNING: Kernel cannot activate device if data block size exceeds page size (%u)." +msgstr "警告:若資料區塊大小超過頁面大小(%u),核心將無法啟動裝置。" + +#: lib/verity/verity_fec.c:118 +msgid "Failed to allocate RS context." +msgstr "無法配置 RS 內容。" + +#: lib/verity/verity_fec.c:136 +msgid "Failed to allocate buffer." +msgstr "無法配置緩衝區。" + +#: lib/verity/verity_fec.c:146 +#, c-format +msgid "Failed to read RS block % byte %d." +msgstr "無法讀取 RS 區塊 % 的第 %d 個位元組。" + +#: lib/verity/verity_fec.c:159 +#, c-format +msgid "Failed to read parity for RS block %." +msgstr "無法讀取 RS 區塊 % 的奇偶校驗。" + +#: lib/verity/verity_fec.c:167 +#, c-format +msgid "Failed to repair parity for block %." +msgstr "無法修復區塊 % 的奇偶校驗。" + +#: lib/verity/verity_fec.c:179 +#, c-format +msgid "Failed to write parity for RS block %." +msgstr "無法寫入 RS 區塊 % 的奇偶校驗。" + +#: lib/verity/verity_fec.c:195 +msgid "Block sizes must match for FEC." +msgstr "FEC 的區塊大小必須相符。" + +#: lib/verity/verity_fec.c:201 +msgid "Invalid number of parity bytes." +msgstr "奇偶校驗位元組數無效。" + +#: lib/verity/verity_fec.c:235 +msgid "Invalid FEC segment length." +msgstr "無效的 FEC 區段長度。" + +#: lib/verity/verity_fec.c:303 +#, c-format +msgid "Failed to determine size for device %s." +msgstr "無法判定裝置 %s 的大小。" + +#: lib/integrity/integrity.c:50 +#, c-format +msgid "Incompatible kernel dm-integrity metadata (version %u) detected on %s." +msgstr "在 %2$s 上偵測到不相容的核心 dm-integrity 中繼資料(版本 %1$u)。" + +#: lib/integrity/integrity.c:309 lib/integrity/integrity.c:493 +msgid "Kernel does not support dm-integrity mapping." +msgstr "核心不支援 dm-integrity 對映。" + +#: lib/integrity/integrity.c:315 +msgid "Kernel does not support dm-integrity fixed metadata alignment." +msgstr "核心不支援 dm-integrity 固定中繼資料對齊。" + +#: lib/integrity/integrity.c:324 +msgid "Kernel refuses to activate insecure recalculate option (see legacy activation options to override)." +msgstr "核心拒絕啟用不安全的 recalculate 選項(請參閱舊版啟動選項以覆寫)。" + +#: lib/integrity/integrity.c:330 +msgid "Kernel does not support dm-integrity inline mode." +msgstr "核心不支援 dm-integrity inline 模式。" + +#: lib/luks2/luks2_disk_metadata.c:382 lib/luks2/luks2_json_metadata.c:1184 +#: lib/luks2/luks2_json_metadata.c:1502 +#, c-format +msgid "Failed to acquire write lock on device %s." +msgstr "無法在裝置 %s 上取得寫入鎖定。" + +#: lib/luks2/luks2_disk_metadata.c:391 +msgid "Detected attempt for concurrent LUKS2 metadata update. Aborting operation." +msgstr "偵測到並行 LUKS2 中繼資料更新嘗試。中止操作。" + +#: lib/luks2/luks2_disk_metadata.c:726 lib/luks2/luks2_disk_metadata.c:747 +msgid "" +"Device contains ambiguous signatures, cannot auto-recover LUKS2.\n" +"Please run \"cryptsetup repair\" for recovery." +msgstr "" +"裝置包含模稜兩可的簽章,無法自動復原 LUKS2。\n" +"請執行「cryptsetup repair」進行復原。" + +#: lib/luks2/luks2_json_format.c:219 +#, c-format +msgid "WARNING: keyslots area (% bytes) is very small, available LUKS2 keyslot count is very limited.\n" +msgstr "警告:金鑰槽區域(% 位元組)非常小,可用的 LUKS2 金鑰槽數量非常有限。\n" + +#: lib/luks2/luks2_json_format.c:427 +msgid "Requested data offset is too small." +msgstr "要求的資料偏移量太小。" + +#: lib/luks2/luks2_json_format.c:468 +#, c-format +msgid "WARNING: LUKS2 metadata size changed to % bytes.\n" +msgstr "警告:LUKS2 中繼資料大小已變更為 % 位元組。\n" + +#: lib/luks2/luks2_json_format.c:472 +#, c-format +msgid "WARNING: LUKS2 keyslots area size changed to % bytes.\n" +msgstr "警告:LUKS2 金鑰槽區域大小已變更為 % 位元組。\n" + +#: lib/luks2/luks2_json_metadata.c:1171 lib/luks2/luks2_json_metadata.c:1357 +#: lib/luks2/luks2_json_metadata.c:1412 lib/luks2/luks2_keyslot_luks2.c:71 +#, c-format +msgid "Failed to acquire read lock on device %s." +msgstr "無法在裝置 %s 上取得讀取鎖定。" + +#: lib/luks2/luks2_json_metadata.c:1277 +msgid "Label is too long." +msgstr "標籤太長。" + +#: lib/luks2/luks2_json_metadata.c:1427 +#, c-format +msgid "Forbidden LUKS2 requirements detected in backup %s." +msgstr "在備份 %s 中偵測到禁止的 LUKS2 需求。" + +#: lib/luks2/luks2_json_metadata.c:1466 +msgid "Data offset differ on device and backup, restore failed." +msgstr "裝置與備份的資料偏移量不同,恢復失敗。" + +#: lib/luks2/luks2_json_metadata.c:1472 +msgid "Binary header with keyslot areas size differ on device and backup, restore failed." +msgstr "裝置與備份的含金鑰槽區域二進位標頭大小不同,恢復失敗。" + +#: lib/luks2/luks2_json_metadata.c:1479 +#, c-format +msgid "Device %s %s%s%s%s" +msgstr "裝置 %s %s%s%s%s" + +#: lib/luks2/luks2_json_metadata.c:1480 +msgid "does not contain LUKS2 header. Replacing header can destroy data on that device." +msgstr "不含 LUKS2 標頭。取代標頭可能毀損該裝置上的資料。" + +#: lib/luks2/luks2_json_metadata.c:1481 +msgid "already contains LUKS2 header. Replacing header will destroy existing keyslots." +msgstr "已含有 LUKS2 標頭。取代標頭將毀損既有的金鑰槽。" + +#: lib/luks2/luks2_json_metadata.c:1483 +msgid "" +"\n" +"WARNING: unknown LUKS2 requirements detected in real device header!\n" +"Replacing header with backup may corrupt the data on that device!" +msgstr "" +"\n" +"警告:在實際裝置標頭中偵測到未知的 LUKS2 需求!\n" +"以備份取代標頭可能毀損該裝置上的資料!" + +#: lib/luks2/luks2_json_metadata.c:1485 +msgid "" +"\n" +"WARNING: Unfinished offline reencryption detected on the device!\n" +"Replacing header with backup may corrupt data." +msgstr "" +"\n" +"警告:在裝置上偵測到未完成的離線重新加密!\n" +"以備份取代標頭可能毀損資料。" + +#: lib/luks2/luks2_json_metadata.c:1583 +#, c-format +msgid "Ignored unknown flag %s." +msgstr "已忽略未知的旗標 %s。" + +#: lib/luks2/luks2_json_metadata.c:2555 lib/luks2/luks2_reencrypt.c:2110 +#, c-format +msgid "Missing key for dm-crypt segment %u" +msgstr "缺少 dm-crypt 區段 %u 的金鑰" + +#: lib/luks2/luks2_json_metadata.c:2567 lib/luks2/luks2_reencrypt.c:2123 +msgid "Failed to set dm-crypt segment." +msgstr "無法設定 dm-crypt 區段。" + +#: lib/luks2/luks2_json_metadata.c:2573 lib/luks2/luks2_reencrypt.c:2129 +msgid "Failed to set dm-linear segment." +msgstr "無法設定 dm-linear 區段。" + +#: lib/luks2/luks2_json_metadata.c:2693 src/utils_reencrypt.c:580 +msgid "No known cipher specification pattern detected in LUKS2 header." +msgstr "LUKS2 標頭中偵測不到已知的加密演算法規格模式。" + +#: lib/luks2/luks2_json_metadata.c:2701 +msgid "OPAL device must have static device size." +msgstr "OPAL 裝置必須具有靜態裝置大小。" + +#: lib/luks2/luks2_json_metadata.c:2721 +msgid "Encrypted OPAL device with integrity must be smaller than locking range." +msgstr "具完整性的加密 OPAL 裝置必須小於鎖定範圍。" + +#: lib/luks2/luks2_json_metadata.c:2726 +msgid "OPAL device must have same size as locking range." +msgstr "OPAL 裝置必須與鎖定範圍大小相同。" + +#: lib/luks2/luks2_json_metadata.c:2746 +#, c-format +msgid "OPAL device is %s already unlocked.\n" +msgstr "OPAL 裝置 %s 已解鎖。\n" + +#: lib/luks2/luks2_json_metadata.c:2785 +msgid "Unsupported device integrity configuration." +msgstr "不支援的裝置完整性組態。" + +#: lib/luks2/luks2_json_metadata.c:2801 +msgid "Underlying dm-integrity device with unexpected provided data sectors." +msgstr "底層 dm-integrity 裝置提供了意外的資料磁區。" + +#: lib/luks2/luks2_json_metadata.c:2903 +msgid "Reencryption in-progress. Cannot deactivate device." +msgstr "重新加密進行中。無法停用裝置。" + +#: lib/luks2/luks2_json_metadata.c:2914 lib/luks2/luks2_reencrypt.c:4287 +#, c-format +msgid "Failed to replace suspended device %s with dm-error target." +msgstr "無法以 dm-error target 取代已暫停的裝置 %s。" + +#: lib/luks2/luks2_json_metadata.c:2993 lib/luks2/luks2_json_metadata.c:3015 +#, c-format +msgid "Device %s was deactivated but hardware OPAL device cannot be locked." +msgstr "裝置 %s 已停用,但無法鎖定硬體 OPAL 裝置。" + +#: lib/luks2/luks2_json_metadata.c:3037 +msgid "Unmet LUKS2 requirements detected." +msgstr "偵測到未滿足的 LUKS2 需求。" + +#: lib/luks2/luks2_json_metadata.c:3045 +msgid "Operation incompatible with device marked for legacy reencryption. Aborting." +msgstr "操作與標記為舊版重新加密的裝置不相容。中止。" + +#: lib/luks2/luks2_json_metadata.c:3047 +msgid "Operation incompatible with device marked for LUKS2 reencryption. Aborting." +msgstr "操作與標記為 LUKS2 重新加密的裝置不相容。中止。" + +#: lib/luks2/luks2_json_metadata.c:3049 +msgid "Operation incompatible with device using OPAL. Aborting." +msgstr "操作與使用 OPAL 的裝置不相容。中止。" + +#: lib/luks2/luks2_json_metadata.c:3051 +msgid "Operation incompatible with device using inline HW tags. Aborting." +msgstr "操作與使用內嵌硬體標籤的裝置不相容。中止。" + +#: lib/luks2/luks2_keyslot.c:543 lib/luks2/luks2_keyslot.c:601 +msgid "Not enough available memory to open a keyslot." +msgstr "可用記憶體不足,無法開啟金鑰槽。" + +#: lib/luks2/luks2_keyslot.c:545 lib/luks2/luks2_keyslot.c:603 +msgid "Keyslot open failed." +msgstr "金鑰槽開啟失敗。" + +#: lib/luks2/luks2_keyslot_luks2.c:40 lib/luks2/luks2_keyslot_luks2.c:77 +#, c-format +msgid "Cannot use %s cipher for keyslot encryption." +msgstr "無法使用 %s 加密演算法進行金鑰槽加密。" + +#: lib/luks2/luks2_keyslot_luks2.c:219 +msgid "Not enough memory for keyslot key derivation." +msgstr "記憶體不足,無法進行金鑰槽金鑰衍生。" + +#: lib/luks2/luks2_keyslot_luks2.c:233 lib/luks2/luks2_keyslot_luks2.c:358 +#: lib/luks2/luks2_keyslot_reenc.c:434 lib/luks2/luks2_reencrypt.c:2734 +#, c-format +msgid "Hash algorithm %s is not available." +msgstr "雜湊演算法 %s 不可用。" + +#: lib/luks2/luks2_keyslot_luks2.c:475 +msgid "No space for new keyslot." +msgstr "沒有空間容納新的金鑰槽。" + +#: lib/luks2/luks2_keyslot_reenc.c:583 +msgid "Invalid reencryption resilience mode change requested." +msgstr "要求的重新加密韌性模式變更無效。" + +#: lib/luks2/luks2_keyslot_reenc.c:704 +#, c-format +msgid "Can not update resilience type. New type only provides % bytes, required space is: % bytes." +msgstr "無法更新韌性類型。新類型僅提供 % 位元組,所需空間為:% 位元組。" + +#: lib/luks2/luks2_keyslot_reenc.c:714 +msgid "Failed to refresh reencryption verification digest." +msgstr "無法重新整理重新加密驗證摘要。" + +#: lib/luks2/luks2_luks1_convert.c:498 +#, c-format +msgid "Cannot check status of device with uuid: %s." +msgstr "無法檢查 uuid 為 %s 之裝置的狀態。" + +#: lib/luks2/luks2_luks1_convert.c:524 +msgid "Unable to convert header with LUKSMETA additional metadata." +msgstr "無法轉換帶有 LUKSMETA 附加中繼資料的標頭。" + +#: lib/luks2/luks2_luks1_convert.c:556 lib/luks2/luks2_reencrypt.c:3894 +#, c-format +msgid "Unable to use cipher specification %s-%s for LUKS2." +msgstr "無法將加密演算法規格 %s-%s 用於 LUKS2。" + +#: lib/luks2/luks2_luks1_convert.c:565 +#, c-format +msgid "Unable to use cipher specification %s-%s for LUKS2 keyslot." +msgstr "無法將加密演算法規格 %s-%s 用於 LUKS2 金鑰槽。" + +#: lib/luks2/luks2_luks1_convert.c:580 +msgid "Unable to move keyslot area. Not enough space." +msgstr "無法移動金鑰槽區域。空間不足。" + +#: lib/luks2/luks2_luks1_convert.c:627 +msgid "Cannot convert to LUKS2 format - invalid metadata." +msgstr "無法轉換為 LUKS2 格式 - 中繼資料無效。" + +#: lib/luks2/luks2_luks1_convert.c:644 +msgid "Unable to move keyslot area. LUKS2 keyslots area too small." +msgstr "無法移動金鑰槽區域。LUKS2 金鑰槽區域太小。" + +#: lib/luks2/luks2_luks1_convert.c:650 lib/luks2/luks2_luks1_convert.c:980 +msgid "Unable to move keyslot area." +msgstr "無法移動金鑰槽區域。" + +#: lib/luks2/luks2_luks1_convert.c:765 +msgid "Cannot convert to LUKS1 format - default segment encryption sector size is not 512 bytes." +msgstr "無法轉換為 LUKS1 格式 - 預設區段加密磁區大小不是 512 位元組。" + +#: lib/luks2/luks2_luks1_convert.c:773 +msgid "Cannot convert to LUKS1 format - key slot digests are not LUKS1 compatible." +msgstr "無法轉換為 LUKS1 格式 - 金鑰槽摘要與 LUKS1 不相容。" + +#: lib/luks2/luks2_luks1_convert.c:787 +#, c-format +msgid "Cannot convert to LUKS1 format - device uses wrapped key cipher %s." +msgstr "無法轉換為 LUKS1 格式 - 裝置使用包覆式金鑰加密演算法 %s。" + +#: lib/luks2/luks2_luks1_convert.c:792 +msgid "Cannot convert to LUKS1 format - device uses more segments." +msgstr "無法轉換為 LUKS1 格式 - 裝置使用更多區段。" + +#: lib/luks2/luks2_luks1_convert.c:800 +#, c-format +msgid "Cannot convert to LUKS1 format - LUKS2 header contains %u token(s)." +msgstr "無法轉換為 LUKS1 格式 - LUKS2 標頭包含 %u 個 token。" + +#: lib/luks2/luks2_luks1_convert.c:806 +msgid "Cannot convert to LUKS1 format - there are no active keyslots." +msgstr "無法轉換為 LUKS1 格式 - 沒有啟用的金鑰槽。" + +#: lib/luks2/luks2_luks1_convert.c:818 +#, c-format +msgid "Cannot convert to LUKS1 format - keyslot %u is in invalid state." +msgstr "無法轉換為 LUKS1 格式 - 金鑰槽 %u 處於無效狀態。" + +#: lib/luks2/luks2_luks1_convert.c:823 +#, c-format +msgid "Cannot convert to LUKS1 format - keyslot %u is unbound." +msgstr "無法轉換為 LUKS1 格式 - 金鑰槽 %u 未綁定。" + +#: lib/luks2/luks2_luks1_convert.c:828 +#, c-format +msgid "Cannot convert to LUKS1 format - slot %u (over maximum slots) is still active." +msgstr "無法轉換為 LUKS1 格式 - 金鑰槽 %u(超過最大金鑰槽數)仍啟用中。" + +#: lib/luks2/luks2_luks1_convert.c:833 +#, c-format +msgid "Cannot convert to LUKS1 format - keyslot %u is not LUKS1 compatible." +msgstr "無法轉換為 LUKS1 格式 - 金鑰槽 %u 與 LUKS1 不相容。" + +#: lib/luks2/luks2_reencrypt.c:1199 +#, c-format +msgid "Hotzone size must be multiple of calculated zone alignment (%zu bytes)." +msgstr "熱區大小必須為計算所得區域對齊(%zu 位元組)的倍數。" + +#: lib/luks2/luks2_reencrypt.c:1204 +#, c-format +msgid "Device size must be multiple of calculated zone alignment (%zu bytes)." +msgstr "裝置大小必須為計算所得區域對齊(%zu 位元組)的倍數。" + +#: lib/luks2/luks2_reencrypt.c:1411 lib/luks2/luks2_reencrypt.c:1597 +#: lib/luks2/luks2_reencrypt.c:1680 lib/luks2/luks2_reencrypt.c:1722 +#: lib/luks2/luks2_reencrypt.c:4081 +msgid "Failed to initialize old segment storage wrapper." +msgstr "無法初始化舊區段儲存包裝器。" + +#: lib/luks2/luks2_reencrypt.c:1425 lib/luks2/luks2_reencrypt.c:1575 +msgid "Failed to initialize new segment storage wrapper." +msgstr "無法初始化新區段儲存包裝器。" + +#: lib/luks2/luks2_reencrypt.c:1551 lib/luks2/luks2_reencrypt.c:4093 +msgid "Failed to initialize hotzone protection." +msgstr "無法初始化熱區保護。" + +#: lib/luks2/luks2_reencrypt.c:1624 +msgid "Failed to read checksums for current hotzone." +msgstr "無法讀取目前熱區的檢查碼。" + +#: lib/luks2/luks2_reencrypt.c:1631 lib/luks2/luks2_reencrypt.c:4108 +#, c-format +msgid "Failed to read hotzone area starting at %." +msgstr "無法讀取從 % 開始的熱區區域。" + +#: lib/luks2/luks2_reencrypt.c:1650 +#, c-format +msgid "Failed to decrypt sector %zu." +msgstr "無法解密磁區 %zu。" + +#: lib/luks2/luks2_reencrypt.c:1656 +#, c-format +msgid "Failed to recover sector %zu." +msgstr "無法復原磁區 %zu。" + +#: lib/luks2/luks2_reencrypt.c:2209 +#, c-format +msgid "Source and target device sizes don't match. Source %, target: %." +msgstr "來源與目標裝置大小不符。來源 %,目標 %。" + +#: lib/luks2/luks2_reencrypt.c:2311 +#, c-format +msgid "Failed to activate hotzone device %s." +msgstr "無法啟動熱區裝置 %s。" + +#: lib/luks2/luks2_reencrypt.c:2323 +#, c-format +msgid "Failed to allocate hotzone device %s." +msgstr "無法配置熱區裝置 %s。" + +#: lib/luks2/luks2_reencrypt.c:2340 +#, c-format +msgid "Failed to activate overlay device %s with actual origin table." +msgstr "無法以實際來源資料表啟動覆疊裝置 %s。" + +#: lib/luks2/luks2_reencrypt.c:2347 +#, c-format +msgid "Failed to load new mapping for device %s." +msgstr "無法為裝置 %s 載入新的對映。" + +#: lib/luks2/luks2_reencrypt.c:2419 +msgid "Failed to refresh reencryption devices stack." +msgstr "無法重新整理重新加密裝置堆疊。" + +#: lib/luks2/luks2_reencrypt.c:2616 +msgid "Failed to set new keyslots area size." +msgstr "無法設定新的金鑰槽區域大小。" + +#: lib/luks2/luks2_reencrypt.c:2752 +#, c-format +msgid "Data shift value is not aligned to encryption sector size (% bytes)." +msgstr "資料位移值未對齊加密磁區大小(% 位元組)。" + +#: lib/luks2/luks2_reencrypt.c:2789 src/utils_reencrypt.c:162 +#, c-format +msgid "Unsupported resilience mode %s" +msgstr "不支援的韌性模式 %s" + +#: lib/luks2/luks2_reencrypt.c:2825 +msgid "Moved segment size can not be greater than data shift value." +msgstr "移動的區段大小不能大於資料位移值。" + +#: lib/luks2/luks2_reencrypt.c:2867 +msgid "Invalid reencryption resilience parameters." +msgstr "無效的重新加密韌性參數。" + +#: lib/luks2/luks2_reencrypt.c:2889 +#, c-format +msgid "Moved segment too large. Requested size %, available space for: %." +msgstr "移動的區段過大。要求的大小為 %,可用空間為:%。" + +#: lib/luks2/luks2_reencrypt.c:2978 +msgid "Failed to clear table." +msgstr "無法清除資料表。" + +#: lib/luks2/luks2_reencrypt.c:3064 +#, c-format +msgid "Data shift (% sectors) is less than future data offset (% sectors)." +msgstr "資料位移(% 個磁區)小於未來的資料偏移量(% 個磁區)。" + +#: lib/luks2/luks2_reencrypt.c:3079 lib/luks2/luks2_reencrypt.c:3086 +msgid "Reduced data size is larger than real device size." +msgstr "縮減後的資料大小大於實際裝置大小。" + +#: lib/luks2/luks2_reencrypt.c:3096 +#, c-format +msgid "Data device is not aligned to encryption sector size (% bytes)." +msgstr "資料裝置未對齊加密磁區大小(% 位元組)。" + +#: lib/luks2/luks2_reencrypt.c:3126 lib/luks2/luks2_reencrypt.c:3644 +#: lib/luks2/luks2_reencrypt.c:3665 +#, c-format +msgid "Failed to open %s in exclusive mode (already mapped or mounted)." +msgstr "無法以獨佔模式開啟 %s(已對映或已掛載)。" + +#: lib/luks2/luks2_reencrypt.c:3333 +msgid "Device not marked for LUKS2 reencryption." +msgstr "裝置未標記為 LUKS2 重新加密。" + +#: lib/luks2/luks2_reencrypt.c:3350 lib/luks2/luks2_reencrypt.c:4404 +msgid "Failed to load LUKS2 reencryption context." +msgstr "無法載入 LUKS2 重新加密內容。" + +#: lib/luks2/luks2_reencrypt.c:3445 lib/luks2/luks2_reencrypt.c:3785 +msgid "Device is not in reencryption." +msgstr "裝置不在重新加密狀態。" + +#: lib/luks2/luks2_reencrypt.c:3452 lib/luks2/luks2_reencrypt.c:3792 +msgid "Reencryption process is already running." +msgstr "重新加密程序已在執行中。" + +#: lib/luks2/luks2_reencrypt.c:3454 lib/luks2/luks2_reencrypt.c:3794 +msgid "Failed to acquire reencryption lock." +msgstr "無法取得重新加密鎖定。" + +#: lib/luks2/luks2_reencrypt.c:3472 +msgid "Cannot proceed with reencryption. Run reencryption recovery first." +msgstr "無法繼續重新加密。請先執行重新加密復原。" + +#: lib/luks2/luks2_reencrypt.c:3608 +msgid "Active device size and requested reencryption size don't match." +msgstr "啟用中裝置的大小與要求的重新加密大小不符。" + +#: lib/luks2/luks2_reencrypt.c:3622 +msgid "Illegal device size requested in reencryption parameters." +msgstr "重新加密參數中要求的裝置大小不合法。" + +#: lib/luks2/luks2_reencrypt.c:3724 +msgid "Reencryption in-progress. Cannot perform recovery." +msgstr "重新加密進行中。無法執行復原。" + +#: lib/luks2/luks2_reencrypt.c:3745 +msgid "LUKS2 reencryption recovery failed." +msgstr "LUKS2 重新加密復原失敗。" + +#: lib/luks2/luks2_reencrypt.c:3878 lib/luks2/luks2_reencrypt.c:4357 +msgid "Failed to initialize reencryption device stack." +msgstr "無法初始化重新加密裝置堆疊。" + +#: lib/luks2/luks2_reencrypt.c:3911 +msgid "LUKS2 reencryption already initialized in metadata." +msgstr "LUKS2 重新加密已在中繼資料中初始化。" + +#: lib/luks2/luks2_reencrypt.c:3919 +msgid "Failed to initialize LUKS2 reencryption in metadata." +msgstr "無法在中繼資料中初始化 LUKS2 重新加密。" + +#: lib/luks2/luks2_reencrypt.c:3972 lib/luks2/luks2_reencrypt.c:4004 +#: lib/luks2/luks2_reencrypt.c:4034 +msgid "Reencryption is not supported for DAX (persistent memory) devices." +msgstr "不支援對 DAX(持續性記憶體)裝置重新加密。" + +#: lib/luks2/luks2_reencrypt.c:4063 +msgid "Failed to set device segments for next reencryption hotzone." +msgstr "無法為下一個重新加密熱區設定裝置區段。" + +#: lib/luks2/luks2_reencrypt.c:4116 +msgid "Failed to write reencryption resilience metadata." +msgstr "無法寫入重新加密韌性中繼資料。" + +#: lib/luks2/luks2_reencrypt.c:4123 +msgid "Decryption failed." +msgstr "解密失敗。" + +#: lib/luks2/luks2_reencrypt.c:4128 +#, c-format +msgid "Failed to write hotzone area starting at %." +msgstr "無法寫入從 % 開始的熱區區域。" + +#: lib/luks2/luks2_reencrypt.c:4133 +msgid "Failed to sync data." +msgstr "無法同步資料。" + +#: lib/luks2/luks2_reencrypt.c:4141 +msgid "Failed to update metadata after current reencryption hotzone completed." +msgstr "目前的重新加密熱區完成後,無法更新中繼資料。" + +#: lib/luks2/luks2_reencrypt.c:4230 +msgid "Failed to write LUKS2 metadata." +msgstr "無法寫入 LUKS2 中繼資料。" + +#: lib/luks2/luks2_reencrypt.c:4253 +msgid "Failed to wipe unused data device area." +msgstr "無法清除未使用的資料裝置區域。" + +#: lib/luks2/luks2_reencrypt.c:4259 +#, c-format +msgid "Failed to remove unused (unbound) keyslot %d." +msgstr "無法移除未使用(未綁定)的金鑰槽 %d。" + +#: lib/luks2/luks2_reencrypt.c:4269 +msgid "Failed to remove reencryption keyslot." +msgstr "無法移除重新加密金鑰槽。" + +#: lib/luks2/luks2_reencrypt.c:4279 +#, c-format +msgid "Fatal error while reencrypting chunk starting at %, % sectors long." +msgstr "重新加密從 % 開始、長度為 % 個磁區的區塊時發生嚴重錯誤。" + +#: lib/luks2/luks2_reencrypt.c:4283 +msgid "Online reencryption failed." +msgstr "線上重新加密失敗。" + +#: lib/luks2/luks2_reencrypt.c:4288 +msgid "Do not resume the device unless replaced with error target manually." +msgstr "除非已手動以 error target 取代,否則不要恢復該裝置。" + +#: lib/luks2/luks2_reencrypt.c:4340 +msgid "Cannot proceed with reencryption. Unexpected reencryption status." +msgstr "無法繼續重新加密。意外的重新加密狀態。" + +#: lib/luks2/luks2_reencrypt.c:4346 +msgid "Missing or invalid reencrypt context." +msgstr "缺少或無效的重新加密內容。" + +#: lib/luks2/luks2_reencrypt.c:4380 lib/luks2/luks2_reencrypt.c:4417 +msgid "Failed to update reencryption context." +msgstr "無法更新重新加密內容。" + +#: lib/luks2/luks2_reencrypt_digest.c:402 +msgid "Reencryption metadata is invalid." +msgstr "重新加密中繼資料無效。" + +#: lib/luks2/hw_opal/hw_opal.c:335 +#, c-format +msgid "OPAL range %d offset % does not match expected values %." +msgstr "OPAL 範圍 %d 的偏移量 % 與預期值 % 不符。" + +#: lib/luks2/hw_opal/hw_opal.c:342 +#, c-format +msgid "OPAL range %d length % does not match device length %." +msgstr "OPAL 範圍 %d 的長度 % 與裝置長度 % 不符。" + +#: lib/luks2/hw_opal/hw_opal.c:348 +#, c-format +msgid "OPAL range %d locking is disabled." +msgstr "OPAL 範圍 %d 的鎖定已停用。" + +#: lib/luks2/hw_opal/hw_opal.c:358 lib/luks2/hw_opal/hw_opal.c:365 +#, c-format +msgid "Unexpected OPAL range %d lock state." +msgstr "意外的 OPAL 範圍 %d 鎖定狀態。" + +#: src/cryptsetup.c:87 +msgid "Keyslot encryption parameters can be set only for LUKS2 device." +msgstr "金鑰槽加密參數僅能為 LUKS2 裝置設定。" + +#: src/cryptsetup.c:93 +msgid "Keyslot encryption parameters are not compatible with LUKS2 keyslot encryption." +msgstr "金鑰槽加密參數與 LUKS2 金鑰槽加密不相容。" + +#: src/cryptsetup.c:150 src/cryptsetup.c:1180 src/cryptsetup.c:1545 +#: src/utils_reencrypt.c:1916 src/utils_reencrypt_luks1.c:502 +#: src/utils_reencrypt_luks1.c:565 +msgid "No known cipher specification pattern detected." +msgstr "偵測不到已知的加密演算法規格模式。" + +#: src/cryptsetup.c:160 +#, c-format +msgid "WARNING: Using default options for cipher (%s-%s, key size %u bits) that could be incompatible with older versions." +msgstr "警告:使用可能與舊版不相容的預設選項(加密演算法 %s-%s,金鑰大小 %u 位元)。" + +#: src/cryptsetup.c:165 +#, c-format +msgid "WARNING: Using default options for hash (%s) that could be incompatible with older versions." +msgstr "警告:使用可能與舊版不相容的預設選項(雜湊 %s)。" + +#: src/cryptsetup.c:169 +msgid "For plain mode, always use options --cipher, --key-size and if no keyfile or keyring is used, then also --hash." +msgstr "一般模式請務必使用 --cipher、--key-size 選項,若未使用金鑰檔或鑰匙圈,則還需使用 --hash。" + +#: src/cryptsetup.c:175 +msgid "WARNING: The --hash parameter is being ignored in plain mode with keyfile specified.\n" +msgstr "警告:指定金鑰檔時,一般模式中的 --hash 參數將被忽略。\n" + +#: src/cryptsetup.c:189 +msgid "WARNING: The --keyfile-size option is being ignored, the read size is the same as the encryption key size.\n" +msgstr "警告:--keyfile-size 選項將被忽略,讀取大小與加密金鑰大小相同。\n" + +#: src/cryptsetup.c:226 src/cryptsetup.c:1375 src/cryptsetup.c:1598 +#: src/integritysetup.c:189 src/utils_reencrypt.c:2167 +#, c-format +msgid "Blkid scan failed for %s." +msgstr "對 %s 的 blkid 掃描失敗。" + +#: src/cryptsetup.c:232 +#, c-format +msgid "Detected device signature(s) on %s. Proceeding further may damage existing data." +msgstr "在 %s 上偵測到裝置簽章。繼續進行可能損壞既有資料。" + +#: src/cryptsetup.c:238 src/cryptsetup.c:1261 src/cryptsetup.c:1309 +#: src/cryptsetup.c:1382 src/cryptsetup.c:1522 src/cryptsetup.c:1610 +#: src/cryptsetup.c:2495 src/cryptsetup.c:2925 src/integritysetup.c:179 +#: src/utils_reencrypt.c:111 src/utils_reencrypt.c:459 +#: src/utils_reencrypt.c:927 +msgid "Operation aborted.\n" +msgstr "操作已中止。\n" + +#: src/cryptsetup.c:323 +msgid "Option --key-file is required." +msgstr "必須指定 --key-file 選項。" + +#: src/cryptsetup.c:378 +msgid "Enter VeraCrypt PIM: " +msgstr "輸入 VeraCrypt PIM: " + +#: src/cryptsetup.c:387 +msgid "Invalid PIM value: parse error." +msgstr "無效的 PIM 值:剖析錯誤。" + +#: src/cryptsetup.c:390 +msgid "Invalid PIM value: 0." +msgstr "無效的 PIM 值:0。" + +#: src/cryptsetup.c:393 +msgid "Invalid PIM value: outside of range." +msgstr "無效的 PIM 值:超出範圍。" + +#: src/cryptsetup.c:416 +msgid "No device header detected with this passphrase." +msgstr "使用此通行密碼未偵測到裝置標頭。" + +#: src/cryptsetup.c:493 src/cryptsetup.c:678 +#, c-format +msgid "Device %s is not a valid BITLK device." +msgstr "裝置 %s 不是有效的 BITLK 裝置。" + +#: src/cryptsetup.c:501 +msgid "Cannot determine volume key size for BITLK, please use --key-size option." +msgstr "無法判定 BITLK 的卷金鑰大小,請使用 --key-size 選項。" + +#: src/cryptsetup.c:547 +msgid "" +"Header dump with volume key is sensitive information\n" +"which allows access to encrypted partition without passphrase.\n" +"This dump should be always stored encrypted on safe place." +msgstr "" +"含卷金鑰的標頭傾印是敏感資訊,\n" +"可讓人在沒有通行密碼的情況下存取加密分割區。\n" +"此傾印應始終加密存放於安全的地方。" + +#: src/cryptsetup.c:614 src/cryptsetup.c:700 src/cryptsetup.c:2520 +msgid "" +"The header dump with volume key is sensitive information\n" +"that allows access to encrypted partition without a passphrase.\n" +"This dump should be stored encrypted in a safe place." +msgstr "" +"含卷金鑰的標頭傾印是敏感資訊,\n" +"可讓人在沒有通行密碼的情況下存取加密分割區。\n" +"此傾印應加密存放於安全的地方。" + +#: src/cryptsetup.c:755 src/cryptsetup.c:787 +#, c-format +msgid "Device %s is not a valid FVAULT2 device." +msgstr "裝置 %s 不是有效的 FVAULT2 裝置。" + +#: src/cryptsetup.c:795 +msgid "Cannot determine volume key size for FVAULT2, please use --key-size option." +msgstr "無法判定 FVAULT2 的卷金鑰大小,請使用 --key-size 選項。" + +#: src/cryptsetup.c:849 src/veritysetup.c:317 src/integritysetup.c:424 +#, c-format +msgid "Device %s is still active and scheduled for deferred removal.\n" +msgstr "裝置 %s 仍啟用中,且已排定延遲移除。\n" + +#: src/cryptsetup.c:882 src/cryptsetup.c:1808 src/cryptsetup.c:2082 +#: src/cryptsetup.c:2229 src/cryptsetup.c:2648 src/cryptsetup.c:2730 +#: src/cryptsetup.c:3263 +#, c-format +msgid "Failed to set external tokens path %s." +msgstr "無法設定外部 token 路徑 %s。" + +#: src/cryptsetup.c:891 +msgid "Resize of active device requires volume key in keyring but --disable-keyring option is set." +msgstr "調整啟用中裝置的大小需要鑰匙圈中有卷金鑰,但已設定 --disable-keyring 選項。" + +#: src/cryptsetup.c:1058 +msgid "Benchmark interrupted." +msgstr "基準測試中斷。" + +#: src/cryptsetup.c:1079 +#, c-format +msgid "PBKDF2-%-9s N/A\n" +msgstr "PBKDF2-%-9s N/A\n" + +#: src/cryptsetup.c:1081 +#, c-format +msgid "PBKDF2-%-9s %7u iterations per second for %zu-bit key\n" +msgstr "PBKDF2-%-9s 每秒 %7u 次疊代(%zu 位元金鑰)\n" + +#: src/cryptsetup.c:1095 +#, c-format +msgid "%-10s N/A\n" +msgstr "%-10s N/A\n" + +#: src/cryptsetup.c:1097 +#, c-format +msgid "%-10s %4u iterations, %5u memory, %1u parallel threads (CPUs) for %zu-bit key (requested %u ms time)\n" +msgstr "%-10s 疊代 %4u 次,記憶體 %5u,平行執行緒(CPU)%1u 個,%zu 位元金鑰(要求時間 %u ms)\n" + +#: src/cryptsetup.c:1121 +msgid "Result of benchmark is not reliable." +msgstr "基準測試結果不可靠。" + +#: src/cryptsetup.c:1172 +msgid "# Tests are approximate using memory only (no storage IO).\n" +msgstr "# 測試僅使用記憶體約略估算(無儲存 IO)。\n" + +#. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. +#: src/cryptsetup.c:1197 +#, c-format +msgid "#%*s Algorithm | Key | Encryption | Decryption\n" +msgstr "#%*s 演算法 | 金鑰 | 加密 | 解密\n" + +#: src/cryptsetup.c:1205 +#, c-format +msgid "Cipher %s (with %i bits key) is not available." +msgstr "加密演算法 %s(%i 位元金鑰)不可用。" + +#. TRANSLATORS: The string is header of a table and must be exactly (right side) aligned. +#: src/cryptsetup.c:1226 +msgid "# Algorithm | Key | Encryption | Decryption\n" +msgstr "# 演算法 | 金鑰 | 加密 | 解密\n" + +#: src/cryptsetup.c:1239 +msgid "N/A" +msgstr "N/A" + +#: src/cryptsetup.c:1242 +msgid "# Cipher speed test is not available.\n" +msgstr "# 加密演算法速度測試不可用。\n" + +#: src/cryptsetup.c:1258 +msgid "" +"Unprotected LUKS2 reencryption metadata detected. Please verify the reencryption operation is desirable (see luksDump output)\n" +"and continue (upgrade metadata) only if you acknowledge the operation as genuine." +msgstr "" +"偵測到未受保護的 LUKS2 重新加密中繼資料。請確認此重新加密操作確實為您所需(參閱 luksDump 輸出),\n" +"且僅在您認定該操作為真實時才繼續(升級中繼資料)。" + +#: src/cryptsetup.c:1264 +msgid "Enter passphrase to protect and upgrade reencryption metadata: " +msgstr "輸入通行密碼以保護並升級重新加密中繼資料: " + +#: src/cryptsetup.c:1308 +msgid "Really proceed with LUKS2 reencryption recovery?" +msgstr "真的要繼續進行 LUKS2 重新加密復原嗎?" + +#: src/cryptsetup.c:1317 +msgid "Enter passphrase to verify reencryption metadata digest: " +msgstr "輸入通行密碼以驗證重新加密中繼資料摘要: " + +#: src/cryptsetup.c:1319 +msgid "Enter passphrase for reencryption recovery: " +msgstr "輸入重新加密復原的通行密碼: " + +#: src/cryptsetup.c:1381 +msgid "Really try to repair LUKS device header?" +msgstr "真的要嘗試修復 LUKS 裝置標頭嗎?" + +#: src/cryptsetup.c:1409 src/integritysetup.c:76 src/integritysetup.c:246 +msgid "" +"\n" +"Wipe interrupted." +msgstr "" +"\n" +"清除中斷。" + +#: src/cryptsetup.c:1414 src/integritysetup.c:81 src/integritysetup.c:291 +msgid "" +"Wiping device to initialize integrity checksum.\n" +"You can interrupt this by pressing CTRL+c (rest of not wiped device will contain invalid checksum).\n" +msgstr "" +"正在清除裝置以初始化完整性檢查碼。\n" +"您可以按 CTRL+c 中斷(未清除的裝置其餘部分將包含無效的檢查碼)。\n" + +#: src/cryptsetup.c:1436 src/integritysetup.c:103 +#, c-format +msgid "Cannot deactivate temporary device %s." +msgstr "無法停用暫時裝置 %s。" + +#: src/cryptsetup.c:1484 +msgid "OPAL hw-only encryption does not support --cipher and --key-size, options ignored." +msgstr "OPAL 純硬體加密不支援 --cipher 與 --key-size,這些選項將被忽略。" + +#: src/cryptsetup.c:1497 +msgid "Integrity option can be used only for LUKS2 format." +msgstr "integrity 選項僅能用於 LUKS2 格式。" + +#: src/cryptsetup.c:1502 src/cryptsetup.c:1582 +msgid "Unsupported LUKS2 metadata size options." +msgstr "不支援的 LUKS2 中繼資料大小選項。" + +#: src/cryptsetup.c:1507 +msgid "OPAL is supported only for LUKS2 format." +msgstr "OPAL 僅支援 LUKS2 格式。" + +#: src/cryptsetup.c:1512 +msgid "Inline hw tags are supported only for LUKS2 format." +msgstr "內嵌硬體標籤僅支援 LUKS2 格式。" + +#: src/cryptsetup.c:1521 +msgid "Header file does not exist, do you want to create it?" +msgstr "標頭檔不存在,要建立它嗎?" + +#: src/cryptsetup.c:1529 +#, c-format +msgid "Cannot create header file %s." +msgstr "無法建立標頭檔 %s。" + +#: src/cryptsetup.c:1555 src/integritysetup.c:127 src/integritysetup.c:142 +#: src/integritysetup.c:151 src/integritysetup.c:330 src/integritysetup.c:338 +#: src/integritysetup.c:348 +msgid "No known integrity specification pattern detected." +msgstr "偵測不到已知的 integrity 規格模式。" + +#: src/cryptsetup.c:1557 +msgid "Cannot use specified integrity key size." +msgstr "無法使用指定的 integrity 金鑰大小。" + +#: src/cryptsetup.c:1575 +#, c-format +msgid "Cannot use %s as on-disk header." +msgstr "無法將 %s 用作磁碟上標頭。" + +#: src/cryptsetup.c:1604 src/integritysetup.c:173 +#, c-format +msgid "This will overwrite data on %s irrevocably." +msgstr "這將不可回復地覆寫 %s 上的資料。" + +#: src/cryptsetup.c:1641 +msgid "OPAL Admin password cannot be empty." +msgstr "OPAL 管理密碼不能為空。" + +#: src/cryptsetup.c:1655 src/cryptsetup.c:2099 src/cryptsetup.c:2242 +#: src/cryptsetup.c:2377 src/cryptsetup.c:2443 src/utils_reencrypt_luks1.c:428 +msgid "Failed to set pbkdf parameters." +msgstr "無法設定 pbkdf 參數。" + +#: src/cryptsetup.c:1786 +msgid "Reduced data offset is allowed only for detached LUKS header." +msgstr "縮減的資料偏移量僅允許用於分離式 LUKS 標頭。" + +#: src/cryptsetup.c:1793 +#, c-format +msgid "LUKS file container %s is too small for activation, there is no remaining space for data." +msgstr "LUKS 檔案容器 %s 太小,無法啟動,已無剩餘空間存放資料。" + +#: src/cryptsetup.c:1835 src/cryptsetup.c:2248 src/utils_reencrypt.c:278 +#: src/utils_reencrypt.c:371 src/utils_reencrypt.c:1936 +msgid "Cannot determine volume key size for LUKS without keyslots, please use --key-size option." +msgstr "無法判定無金鑰槽 LUKS 的卷金鑰大小,請使用 --key-size 選項。" + +#: src/cryptsetup.c:1854 src/utils_reencrypt.c:304 +msgid "Device requires two volume keys." +msgstr "裝置需要兩個卷金鑰。" + +#: src/cryptsetup.c:1889 +msgid "Some specified activation parameters were ignored with OPAL hw-only encryption." +msgstr "使用 OPAL 純硬體加密時,已忽略部分指定的啟動參數。" + +#: src/cryptsetup.c:1894 +msgid "Device activated but cannot make flags persistent." +msgstr "裝置已啟動,但無法使旗標持久化。" + +#: src/cryptsetup.c:1974 src/cryptsetup.c:2042 +#, c-format +msgid "Keyslot %d is selected for deletion." +msgstr "已選定金鑰槽 %d 進行刪除。" + +#: src/cryptsetup.c:1986 src/cryptsetup.c:2046 +msgid "This is the last keyslot. Device will become unusable after purging this key." +msgstr "這是最後一個金鑰槽。清除此金鑰後裝置將無法使用。" + +#: src/cryptsetup.c:1987 +msgid "Enter any remaining passphrase: " +msgstr "輸入任何剩餘的通行密碼: " + +#: src/cryptsetup.c:1988 src/cryptsetup.c:2048 +msgid "Operation aborted, the keyslot was NOT wiped.\n" +msgstr "操作已中止,金鑰槽並未清除。\n" + +#: src/cryptsetup.c:2024 +msgid "Enter passphrase to be deleted: " +msgstr "輸入要刪除的通行密碼: " + +#: src/cryptsetup.c:2074 src/cryptsetup.c:2426 src/cryptsetup.c:3087 +#: src/cryptsetup.c:3254 +#, c-format +msgid "Device %s is not a valid LUKS2 device." +msgstr "裝置 %s 不是有效的 LUKS2 裝置。" + +#: src/cryptsetup.c:2113 src/cryptsetup.c:2312 +msgid "Enter new passphrase for key slot: " +msgstr "輸入金鑰槽的新通行密碼: " + +#: src/cryptsetup.c:2147 src/utils_luks.c:342 +#, c-format +msgid "Enter token PIN: " +msgstr "輸入 token PIN: " + +#: src/cryptsetup.c:2149 src/utils_luks.c:344 +#, c-format +msgid "Enter token %d PIN: " +msgstr "輸入 token %d 的 PIN: " + +#: src/cryptsetup.c:2208 +msgid "WARNING: The --key-slot parameter is used for new keyslot number.\n" +msgstr "警告:--key-slot 參數用於指定新金鑰槽編號。\n" + +#: src/cryptsetup.c:2285 src/utils_reencrypt_luks1.c:1094 +#, c-format +msgid "Enter any existing passphrase: " +msgstr "輸入任何既有的通行密碼: " + +#: src/cryptsetup.c:2381 +msgid "Enter passphrase to be changed: " +msgstr "輸入要變更的通行密碼: " + +#: src/cryptsetup.c:2397 src/utils_reencrypt_luks1.c:1080 +msgid "Enter new passphrase: " +msgstr "輸入新通行密碼: " + +#: src/cryptsetup.c:2447 +msgid "Enter passphrase for keyslot to be converted: " +msgstr "輸入要轉換之金鑰槽的通行密碼: " + +#: src/cryptsetup.c:2471 +msgid "Only one device argument for isLuks operation is supported." +msgstr "isLuks 操作僅支援一個裝置引數。" + +#: src/cryptsetup.c:2576 +#, c-format +msgid "Keyslot %d does not contain unbound key." +msgstr "金鑰槽 %d 不包含未綁定金鑰。" + +#: src/cryptsetup.c:2581 +msgid "" +"The header dump with unbound key is sensitive information.\n" +"This dump should be stored encrypted in a safe place." +msgstr "" +"含未綁定金鑰的標頭傾印是敏感資訊。\n" +"此傾印應加密存放於安全的地方。" + +#: src/cryptsetup.c:2676 src/cryptsetup.c:2713 +#, c-format +msgid "%s is not active %s device name." +msgstr "%s 不是啟用中的 %s 裝置名稱。" + +#: src/cryptsetup.c:2708 +#, c-format +msgid "%s is not active LUKS device name or header is missing." +msgstr "%s 不是啟用中的 LUKS 裝置名稱,或標頭缺失。" + +#: src/cryptsetup.c:2785 src/cryptsetup.c:2804 +msgid "Option --header-backup-file is required." +msgstr "必須指定 --header-backup-file 選項。" + +#: src/cryptsetup.c:2835 +#, c-format +msgid "%s is not cryptsetup managed device." +msgstr "%s 不是 cryptsetup 管理的裝置。" + +#: src/cryptsetup.c:2846 +#, c-format +msgid "Refresh is not supported for device type %s" +msgstr "不支援對裝置類型 %s 重新整理" + +#: src/cryptsetup.c:2896 +#, c-format +msgid "Unrecognized metadata device type %s." +msgstr "無法辨識的中繼資料裝置類型 %s。" + +#: src/cryptsetup.c:2898 +msgid "Command requires device and mapped name as arguments." +msgstr "命令需要裝置與對映名稱作為引數。" + +#: src/cryptsetup.c:2916 +msgid "Enter OPAL PSID: " +msgstr "輸入 OPAL PSID: " + +#: src/cryptsetup.c:2916 +msgid "Enter OPAL Admin password: " +msgstr "輸入 OPAL 管理密碼: " + +#: src/cryptsetup.c:2924 +msgid "WARNING: WHOLE disk will be factory reset and all data will be lost! Continue?" +msgstr "警告:整顆磁碟將回復原廠設定,所有資料都會遺失!繼續嗎?" + +#: src/cryptsetup.c:2967 +#, c-format +msgid "" +"This operation will erase all keyslots on device %s.\n" +"Device will become unusable after this operation." +msgstr "" +"此操作將抹除裝置 %s 上的所有金鑰槽。\n" +"執行此操作後裝置將無法使用。" + +#: src/cryptsetup.c:2974 +msgid "Operation aborted, keyslots were NOT wiped.\n" +msgstr "操作已中止,金鑰槽並未清除。\n" + +#: src/cryptsetup.c:3013 +msgid "Invalid LUKS type, only luks1 and luks2 are supported." +msgstr "無效的 LUKS 類型,僅支援 luks1 與 luks2。" + +#: src/cryptsetup.c:3029 +#, c-format +msgid "Device is already %s type." +msgstr "裝置已經是 %s 類型。" + +#: src/cryptsetup.c:3036 +#, c-format +msgid "This operation will convert %s to %s format.\n" +msgstr "此操作將把 %s 轉換為 %s 格式。\n" + +#: src/cryptsetup.c:3039 +msgid "Operation aborted, device was NOT converted.\n" +msgstr "操作已中止,裝置並未轉換。\n" + +#: src/cryptsetup.c:3079 +msgid "Option --priority, --label or --subsystem is missing." +msgstr "缺少 --priority、--label 或 --subsystem 選項。" + +#: src/cryptsetup.c:3113 src/cryptsetup.c:3153 src/cryptsetup.c:3173 +#, c-format +msgid "Token %d is invalid." +msgstr "token %d 無效。" + +#: src/cryptsetup.c:3116 src/cryptsetup.c:3176 +#, c-format +msgid "Token %d in use." +msgstr "token %d 使用中。" + +#: src/cryptsetup.c:3128 +#, c-format +msgid "Failed to add luks2-keyring token %d." +msgstr "無法新增 luks2-keyring token %d。" + +#: src/cryptsetup.c:3139 src/cryptsetup.c:3202 +#, c-format +msgid "Failed to assign token %d to keyslot %d." +msgstr "無法將 token %d 指定給金鑰槽 %d。" + +#: src/cryptsetup.c:3156 +#, c-format +msgid "Token %d is not in use." +msgstr "token %d 未在使用中。" + +#: src/cryptsetup.c:3193 +msgid "Failed to import token from file." +msgstr "無法從檔案匯入 token。" + +#: src/cryptsetup.c:3218 +#, c-format +msgid "Failed to get token %d for export." +msgstr "無法取得要匯出的 token %d。" + +#: src/cryptsetup.c:3231 +#, c-format +msgid "Token %d is not assigned to keyslot %d." +msgstr "token %d 未指定給金鑰槽 %d。" + +#: src/cryptsetup.c:3233 src/cryptsetup.c:3240 +#, c-format +msgid "Failed to unassign token %d from keyslot %d." +msgstr "無法取消 token %d 對金鑰槽 %d 的指定。" + +#: src/cryptsetup.c:3299 +msgid "Option --tcrypt-hidden, --tcrypt-system or --tcrypt-backup is supported only for TCRYPT device." +msgstr "--tcrypt-hidden、--tcrypt-system 或 --tcrypt-backup 選項僅支援 TCRYPT 裝置。" + +#: src/cryptsetup.c:3302 +msgid "Option --veracrypt or --disable-veracrypt is supported only for TCRYPT device type." +msgstr "--veracrypt 或 --disable-veracrypt 選項僅支援 TCRYPT 裝置類型。" + +#: src/cryptsetup.c:3305 +msgid "Option --veracrypt-pim is supported only for VeraCrypt compatible devices." +msgstr "--veracrypt-pim 選項僅支援與 VeraCrypt 相容的裝置。" + +#: src/cryptsetup.c:3309 +msgid "Option --veracrypt-query-pim is supported only for VeraCrypt compatible devices." +msgstr "--veracrypt-query-pim 選項僅支援與 VeraCrypt 相容的裝置。" + +#: src/cryptsetup.c:3311 +msgid "The options --veracrypt-pim and --veracrypt-query-pim are mutually exclusive." +msgstr "--veracrypt-pim 與 --veracrypt-query-pim 選項互斥。" + +#: src/cryptsetup.c:3320 +msgid "Option --persistent is not allowed with --test-passphrase." +msgstr "--persistent 選項不得與 --test-passphrase 一起使用。" + +#: src/cryptsetup.c:3323 +msgid "Options --refresh and --test-passphrase are mutually exclusive." +msgstr "--refresh 與 --test-passphrase 選項互斥。" + +#: src/cryptsetup.c:3326 +msgid "Option --shared is allowed only for open of plain device." +msgstr "--shared 選項僅允許用於開啟一般裝置。" + +#: src/cryptsetup.c:3329 +msgid "Option --skip is supported only for open of plain and loopaes devices." +msgstr "--skip 選項僅支援開啟一般與 loopaes 裝置。" + +#: src/cryptsetup.c:3332 +msgid "Option --offset with open action is only supported for plain and loopaes devices." +msgstr "--offset 選項搭配 open 動作僅支援一般與 loopaes 裝置。" + +#: src/cryptsetup.c:3335 +msgid "Option --tcrypt-hidden cannot be combined with --allow-discards." +msgstr "--tcrypt-hidden 選項不得與 --allow-discards 合併使用。" + +#: src/cryptsetup.c:3339 +msgid "Sector size option with open action is supported only for plain devices." +msgstr "搭配 open 動作的磁區大小選項僅支援一般裝置。" + +#: src/cryptsetup.c:3343 +msgid "Large IV sectors option is supported only for opening plain type device with sector size larger than 512 bytes." +msgstr "大型 IV 磁區選項僅支援開啟磁區大小大於 512 位元組的一般類型裝置。" + +#: src/cryptsetup.c:3348 +msgid "Option --test-passphrase is allowed only for open of LUKS, TCRYPT, BITLK and FVAULT2 devices." +msgstr "--test-passphrase 選項僅允許用於開啟 LUKS、TCRYPT、BITLK 與 FVAULT2 裝置。" + +#: src/cryptsetup.c:3351 src/cryptsetup.c:3381 +msgid "Options --device-size and --size cannot be combined." +msgstr "--device-size 與 --size 選項不得合併使用。" + +#: src/cryptsetup.c:3354 +msgid "Option --unbound is allowed only for open of luks device." +msgstr "--unbound 選項僅允許用於開啟 LUKS 裝置。" + +#: src/cryptsetup.c:3357 +msgid "Option --unbound cannot be used without --test-passphrase." +msgstr "未搭配 --test-passphrase 時不得使用 --unbound 選項。" + +#: src/cryptsetup.c:3361 +msgid "Option --volume-key-keyring cannot be combined with --hash or --volume-key-file." +msgstr "--volume-key-keyring 選項不得與 --hash 或 --volume-key-file 合併使用。" + +#: src/cryptsetup.c:3364 +msgid "Both --volume-key-file options must be paired with respective --key-size options." +msgstr "兩個 --volume-key-file 選項都必須搭配各自的 --key-size 選項。" + +#: src/cryptsetup.c:3373 src/veritysetup.c:673 src/integritysetup.c:800 +msgid "Options --cancel-deferred and --deferred cannot be used at the same time." +msgstr "--cancel-deferred 與 --deferred 選項不能同時使用。" + +#: src/cryptsetup.c:3389 +msgid "Option --active-name can be set only for LUKS2 device." +msgstr "--active-name 選項僅能為 LUKS2 裝置設定。" + +#: src/cryptsetup.c:3392 +msgid "Options --active-name and --force-offline-reencrypt cannot be combined." +msgstr "--active-name 與 --force-offline-reencrypt 選項不得合併使用。" + +#: src/cryptsetup.c:3395 +msgid "Options --new-volume-key-file and --keep-key cannot be combined." +msgstr "--new-volume-key-file 與 --keep-key 選項不得合併使用。" + +#: src/cryptsetup.c:3398 +msgid "Options --new-volume-key-keyring and --keep-key cannot be combined." +msgstr "--new-volume-key-keyring 與 --keep-key 選項不得合併使用。" + +#: src/cryptsetup.c:3406 src/cryptsetup.c:3436 +msgid "Keyslot specification is required." +msgstr "必須指定金鑰槽。" + +#: src/cryptsetup.c:3414 +msgid "Options --align-payload and --offset cannot be combined." +msgstr "--align-payload 與 --offset 選項不得合併使用。" + +#: src/cryptsetup.c:3417 +msgid "Option --integrity-no-wipe can be used only for format action with integrity extension." +msgstr "--integrity-no-wipe 選項僅能用於帶 integrity 延伸的 format 動作。" + +#: src/cryptsetup.c:3420 +msgid "Only one of --use-[u]random options is allowed." +msgstr "僅允許 --use-[u]random 選項中的一個。" + +#: src/cryptsetup.c:3428 +msgid "Key size is required with --unbound option." +msgstr "使用 --unbound 選項時必須指定金鑰大小。" + +#: src/cryptsetup.c:3448 +msgid "Invalid token action." +msgstr "無效的 token 動作。" + +#: src/cryptsetup.c:3451 +msgid "--key-description parameter is mandatory for token add action." +msgstr "--key-description 參數對 token add 動作是必填的。" + +#: src/cryptsetup.c:3455 src/cryptsetup.c:3468 +msgid "Action requires specific token. Use --token-id parameter." +msgstr "此動作需要特定的 token。請使用 --token-id 參數。" + +#: src/cryptsetup.c:3459 +msgid "Option --unbound is valid only with token add action." +msgstr "--unbound 選項僅在 token add 動作時有效。" + +#: src/cryptsetup.c:3461 +msgid "Options --key-slot and --unbound cannot be combined." +msgstr "--key-slot 與 --unbound 選項不得合併使用。" + +#: src/cryptsetup.c:3466 +msgid "Action requires specific keyslot. Use --key-slot parameter." +msgstr "此動作需要特定的金鑰槽。請使用 --key-slot 參數。" + +#: src/cryptsetup.c:3482 +msgid " [--type ] []" +msgstr " [--type ] []" + +#: src/cryptsetup.c:3482 src/veritysetup.c:487 src/integritysetup.c:563 +msgid "open device as " +msgstr "以 開啟裝置" + +#: src/cryptsetup.c:3483 src/cryptsetup.c:3484 src/cryptsetup.c:3485 +#: src/veritysetup.c:488 src/veritysetup.c:489 src/integritysetup.c:564 +#: src/integritysetup.c:565 src/integritysetup.c:567 +msgid "" +msgstr "" + +#: src/cryptsetup.c:3483 src/veritysetup.c:488 src/integritysetup.c:564 +msgid "close device (remove mapping)" +msgstr "關閉裝置(移除對映)" + +#: src/cryptsetup.c:3484 src/integritysetup.c:567 +msgid "resize active device" +msgstr "調整啟用中裝置的大小" + +#: src/cryptsetup.c:3485 +msgid "show device status" +msgstr "顯示裝置狀態" + +#: src/cryptsetup.c:3486 +msgid "[--cipher ]" +msgstr "[--cipher ]" + +#: src/cryptsetup.c:3486 +msgid "benchmark cipher" +msgstr "基準測試加密演算法" + +#: src/cryptsetup.c:3487 src/cryptsetup.c:3488 src/cryptsetup.c:3489 +#: src/cryptsetup.c:3490 src/cryptsetup.c:3491 src/cryptsetup.c:3498 +#: src/cryptsetup.c:3499 src/cryptsetup.c:3500 src/cryptsetup.c:3501 +#: src/cryptsetup.c:3502 src/cryptsetup.c:3503 src/cryptsetup.c:3504 +#: src/cryptsetup.c:3505 src/cryptsetup.c:3506 src/cryptsetup.c:3507 +msgid "" +msgstr "" + +#: src/cryptsetup.c:3487 +msgid "try to repair on-disk metadata" +msgstr "嘗試修復磁碟上中繼資料" + +#: src/cryptsetup.c:3488 +msgid "reencrypt LUKS2 device" +msgstr "重新加密 LUKS2 裝置" + +#: src/cryptsetup.c:3489 +msgid "erase all keyslots (remove encryption key)" +msgstr "抹除所有金鑰槽(移除加密金鑰)" + +#: src/cryptsetup.c:3490 +msgid "convert LUKS from/to LUKS2 format" +msgstr "在 LUKS 與 LUKS2 格式間轉換" + +#: src/cryptsetup.c:3491 +msgid "set permanent configuration options for LUKS2" +msgstr "設定 LUKS2 的永久組態選項" + +#: src/cryptsetup.c:3492 src/cryptsetup.c:3493 +msgid " []" +msgstr " []" + +#: src/cryptsetup.c:3492 +msgid "formats a LUKS device" +msgstr "格式化 LUKS 裝置" + +#: src/cryptsetup.c:3493 +msgid "add key to LUKS device" +msgstr "新增金鑰至 LUKS 裝置" + +#: src/cryptsetup.c:3494 src/cryptsetup.c:3495 src/cryptsetup.c:3496 +msgid " []" +msgstr " []" + +#: src/cryptsetup.c:3494 +msgid "removes supplied key or key file from LUKS device" +msgstr "從 LUKS 裝置移除指定的金鑰或金鑰檔" + +#: src/cryptsetup.c:3495 +msgid "changes supplied key or key file of LUKS device" +msgstr "變更 LUKS 裝置指定的金鑰或金鑰檔" + +#: src/cryptsetup.c:3496 +msgid "converts a key to new pbkdf parameters" +msgstr "將金鑰轉換為新的 pbkdf 參數" + +#: src/cryptsetup.c:3497 +msgid " " +msgstr " " + +#: src/cryptsetup.c:3497 +msgid "wipes key with number from LUKS device" +msgstr "從 LUKS 裝置清除編號為 的金鑰" + +#: src/cryptsetup.c:3498 +msgid "print UUID of LUKS device" +msgstr "列印 LUKS 裝置的 UUID" + +#: src/cryptsetup.c:3499 +msgid "tests for LUKS partition header" +msgstr "測試 是否為 LUKS 分割區標頭" + +#: src/cryptsetup.c:3500 +msgid "dump LUKS partition information" +msgstr "傾印 LUKS 分割區資訊" + +#: src/cryptsetup.c:3501 +msgid "dump TCRYPT device information" +msgstr "傾印 TCRYPT 裝置資訊" + +#: src/cryptsetup.c:3502 +msgid "dump BITLK device information" +msgstr "傾印 BITLK 裝置資訊" + +#: src/cryptsetup.c:3503 +msgid "dump FVAULT2 device information" +msgstr "傾印 FVAULT2 裝置資訊" + +#: src/cryptsetup.c:3504 +msgid "Suspend LUKS device and wipe key (all IOs are frozen)" +msgstr "暫停 LUKS 裝置並清除金鑰(所有 IO 皆凍結)" + +#: src/cryptsetup.c:3505 +msgid "Resume suspended LUKS device" +msgstr "恢復已暫停的 LUKS 裝置" + +#: src/cryptsetup.c:3506 +msgid "Backup LUKS device header and keyslots" +msgstr "備份 LUKS 裝置標頭與金鑰槽" + +#: src/cryptsetup.c:3507 +msgid "Restore LUKS device header and keyslots" +msgstr "還原 LUKS 裝置標頭與金鑰槽" + +#: src/cryptsetup.c:3508 +msgid " " +msgstr " " + +#: src/cryptsetup.c:3508 +msgid "Manipulate LUKS2 tokens" +msgstr "操作 LUKS2 token" + +#: src/cryptsetup.c:3527 src/veritysetup.c:505 src/integritysetup.c:582 +msgid "" +"\n" +" is one of:\n" +msgstr "" +"\n" +" 是下列其中一個:\n" + +#: src/cryptsetup.c:3533 +msgid "" +"\n" +"You can also use old syntax aliases:\n" +"\topen: create (plainOpen), luksOpen, loopaesOpen, tcryptOpen, bitlkOpen, fvault2Open\n" +"\tclose: remove (plainClose), luksClose, loopaesClose, tcryptClose, bitlkClose, fvault2Close\n" +msgstr "" +"\n" +"您也可以使用舊的 語法別名:\n" +"\topen: create (plainOpen)、luksOpen、loopaesOpen、tcryptOpen、bitlkOpen、fvault2Open\n" +"\tclose: remove (plainClose)、luksClose、loopaesClose、tcryptClose、bitlkClose、fvault2Close\n" + +#: src/cryptsetup.c:3537 +#, c-format +msgid "" +"\n" +" is the device to create under %s\n" +" is the encrypted device\n" +" is the LUKS key slot number to modify\n" +" optional key file for the new key for luksAddKey action\n" +msgstr "" +"\n" +" 是要在 %s 下建立的裝置\n" +" 是加密裝置\n" +" 是要修改的 LUKS 金鑰槽編號\n" +" 是 luksAddKey 動作中,新金鑰的選用金鑰檔\n" + +#: src/cryptsetup.c:3544 +#, c-format +msgid "" +"\n" +"Default compiled-in metadata format is %s (for luksFormat action).\n" +msgstr "" +"\n" +"編譯內建的預設中繼資料格式為 %s(用於 luksFormat 動作)。\n" + +#: src/cryptsetup.c:3549 +msgid "" +"\n" +"LUKS2 external token plugin support is enabled.\n" +msgstr "" +"\n" +"已啟用 LUKS2 外部 token 外掛程式支援。\n" + +#: src/cryptsetup.c:3550 +#, c-format +msgid "LUKS2 external token plugin path: %s.\n" +msgstr "LUKS2 外部 token 外掛程式路徑:%s。\n" + +#: src/cryptsetup.c:3552 +msgid "" +"\n" +"LUKS2 external token plugin support is disabled.\n" +msgstr "" +"\n" +"已停用 LUKS2 外部 token 外掛程式支援。\n" + +#: src/cryptsetup.c:3556 +#, c-format +msgid "" +"\n" +"Default compiled-in key and passphrase parameters:\n" +"\tMaximum keyfile size: %dkB, Maximum interactive passphrase length %d (characters)\n" +"Default PBKDF for LUKS1: %s, iteration time: %d (ms)\n" +"Default PBKDF for LUKS2: %s\n" +"\tIteration time: %d, Memory required: %dkB, Parallel threads: %d\n" +msgstr "" +"\n" +"編譯內建的預設金鑰與通行密碼參數:\n" +"\t金鑰檔大小上限:%dkB,互動式通行密碼長度上限 %d(字元)\n" +"LUKS1 的預設 PBKDF:%s,疊代時間:%d(毫秒)\n" +"LUKS2 的預設 PBKDF:%s\n" +"\t疊代時間:%d,所需記憶體:%dkB,平行執行緒:%d\n" + +#: src/cryptsetup.c:3567 +#, c-format +msgid "" +"\n" +"Default compiled-in device cipher parameters:\n" +"\tloop-AES: %s, Key %d bits\n" +"\tplain: %s, Key: %d bits, Password hashing: %s\n" +"\tLUKS: %s, Key: %d bits, LUKS header hashing: %s, RNG: %s\n" +msgstr "" +"\n" +"編譯內建的預設裝置加密參數:\n" +"\tloop-AES:%s,金鑰 %d 位元\n" +"\tplain:%s,金鑰:%d 位元,密碼雜湊:%s\n" +"\tLUKS:%s,金鑰:%d 位元,LUKS 標頭雜湊:%s,RNG:%s\n" + +#: src/cryptsetup.c:3576 +msgid "\tLUKS: Default keysize with XTS mode (two internal keys) will be doubled.\n" +msgstr "\tLUKS:使用 XTS 模式(兩個內部金鑰)的預設金鑰大小將加倍。\n" + +#: src/cryptsetup.c:3594 src/veritysetup.c:647 src/integritysetup.c:742 +#, c-format +msgid "%s: requires %s as arguments" +msgstr "%s:需要 %s 作為引數" + +#: src/cryptsetup.c:3634 src/utils_reencrypt_luks1.c:1143 +msgid "Key slot is invalid." +msgstr "金鑰槽無效。" + +#: src/cryptsetup.c:3662 +msgid "Device size must be multiple of 512 bytes sector." +msgstr "裝置大小必須為 512 位元組磁區的倍數。" + +#: src/cryptsetup.c:3667 +msgid "Invalid max reencryption hotzone size specification." +msgstr "無效的最大重新加密熱區大小規格。" + +#: src/cryptsetup.c:3681 src/cryptsetup.c:3698 src/cryptsetup.c:3710 +msgid "Key size must be a multiple of 8 bits" +msgstr "金鑰大小必須為 8 位元的倍數" + +#: src/cryptsetup.c:3688 +msgid "At most 2 key size specifications can be supplied." +msgstr "最多可提供 2 個金鑰大小規格。" + +#: src/cryptsetup.c:3717 src/cryptsetup.c:3728 +#, c-format +msgid "At most %d volume key specifications can be supplied." +msgstr "最多可提供 %d 個卷金鑰規格。" + +#: src/cryptsetup.c:3740 +#, c-format +msgid "At most %d keyring link specifications can be supplied." +msgstr "最多可提供 %d 個鑰匙圈連結規格。" + +#: src/cryptsetup.c:3749 +msgid "Maximum device reduce size is 1 GiB." +msgstr "裝置縮減大小上限為 1 GiB。" + +#: src/cryptsetup.c:3752 +msgid "Reduce size must be multiple of 512 bytes sector." +msgstr "縮減大小必須為 512 位元組磁區的倍數。" + +#: src/cryptsetup.c:3769 +msgid "Option --priority can be only ignore/normal/prefer." +msgstr "--priority 選項只能是 ignore/normal/prefer。" + +#: src/cryptsetup.c:3774 +msgid "Invalid maximal tries specification." +msgstr "無效的最大嘗試次數規格。" + +#: src/cryptsetup.c:3793 src/veritysetup.c:568 src/integritysetup.c:662 +msgid "Show this help message" +msgstr "顯示此說明訊息" + +#: src/cryptsetup.c:3794 src/veritysetup.c:569 src/integritysetup.c:663 +msgid "Display brief usage" +msgstr "顯示簡短用法" + +#: src/cryptsetup.c:3795 src/veritysetup.c:570 src/integritysetup.c:664 +msgid "Print package version" +msgstr "列印套件版本" + +#: src/cryptsetup.c:3806 src/veritysetup.c:581 src/integritysetup.c:675 +msgid "Help options:" +msgstr "說明選項:" + +#: src/cryptsetup.c:3829 src/veritysetup.c:602 src/integritysetup.c:695 +msgid "[OPTION...] " +msgstr "[OPTION...] " + +#: src/cryptsetup.c:3838 src/veritysetup.c:611 src/integritysetup.c:706 +msgid "Argument missing." +msgstr "缺少 引數。" + +#: src/cryptsetup.c:3917 src/veritysetup.c:642 src/integritysetup.c:737 +msgid "Unknown action." +msgstr "未知的動作。" + +#: src/cryptsetup.c:3935 +msgid "Option --key-file takes precedence over specified key file argument." +msgstr "--key-file 選項優先於指定的金鑰檔引數。" + +#: src/cryptsetup.c:3941 +msgid "Only one --key-file argument is allowed." +msgstr "僅允許一個 --key-file 引數。" + +#: src/cryptsetup.c:3946 +msgid "Password-based key derivation function (PBKDF) can be only pbkdf2 or argon2i/argon2id." +msgstr "密碼式金鑰衍生函式(PBKDF)只能是 pbkdf2 或 argon2i/argon2id。" + +#: src/cryptsetup.c:3951 +msgid "PBKDF forced iterations cannot be combined with iteration time option." +msgstr "PBKDF 強制疊代次數不能與疊代時間選項合併使用。" + +#: src/cryptsetup.c:3956 +msgid "Cannot link volume key to a keyring when keyring is disabled." +msgstr "停用鑰匙圈時無法將卷金鑰連結至鑰匙圈。" + +#: src/cryptsetup.c:3961 +msgid "Cannot use keyring key description when keyring is disabled." +msgstr "停用鑰匙圈時無法使用鑰匙圈金鑰描述。" + +#: src/cryptsetup.c:3966 +msgid "Inline integrity must be used together with --integrity option." +msgstr "inline integrity 必須與 --integrity 選項一起使用。" + +#: src/cryptsetup.c:3977 +msgid "Options --keyslot-cipher and --keyslot-key-size must be used together." +msgstr "--keyslot-cipher 與 --keyslot-key-size 選項必須一起使用。" + +#: src/cryptsetup.c:3985 +msgid "No action taken. Invoked with --test-args option.\n" +msgstr "未採取任何動作。已以 --test-args 選項呼叫。\n" + +#: src/cryptsetup.c:3998 +msgid "Cannot disable metadata locking." +msgstr "無法停用中繼資料鎖定。" + +#: src/veritysetup.c:41 +msgid "Invalid salt string specified." +msgstr "指定的鹽值字串無效。" + +#: src/veritysetup.c:74 +#, c-format +msgid "Cannot create hash image %s for writing." +msgstr "無法建立要寫入的雜湊映像 %s。" + +#: src/veritysetup.c:84 +#, c-format +msgid "Cannot create FEC image %s for writing." +msgstr "無法建立要寫入的 FEC 映像 %s。" + +#: src/veritysetup.c:123 +#, c-format +msgid "Cannot create root hash file %s for writing." +msgstr "無法建立要寫入的根雜湊檔 %s。" + +#: src/veritysetup.c:130 +#, c-format +msgid "Cannot write to root hash file %s." +msgstr "無法寫入根雜湊檔 %s。" + +#: src/veritysetup.c:189 src/veritysetup.c:472 +#, c-format +msgid "Device %s is not a valid VERITY device." +msgstr "裝置 %s 不是有效的 VERITY 裝置。" + +#: src/veritysetup.c:206 src/veritysetup.c:223 +#, c-format +msgid "Cannot read root hash file %s." +msgstr "無法讀取根雜湊檔 %s。" + +#: src/veritysetup.c:211 +#, c-format +msgid "Invalid root hash file %s." +msgstr "無效的根雜湊檔 %s。" + +#: src/veritysetup.c:232 +msgid "Invalid root hash string specified." +msgstr "指定的根雜湊字串無效。" + +#: src/veritysetup.c:240 +#, c-format +msgid "Invalid signature file %s." +msgstr "無效的簽章檔 %s。" + +#: src/veritysetup.c:247 +#, c-format +msgid "Cannot read signature file %s." +msgstr "無法讀取簽章檔 %s。" + +#: src/veritysetup.c:270 src/veritysetup.c:287 +msgid "Command requires or --root-hash-file option as argument." +msgstr "命令需要 或 --root-hash-file 選項作為引數。" + +#: src/veritysetup.c:485 +msgid " " +msgstr " " + +#: src/veritysetup.c:485 src/integritysetup.c:562 +msgid "format device" +msgstr "格式化裝置" + +#: src/veritysetup.c:486 +msgid " []" +msgstr " []" + +#: src/veritysetup.c:486 +msgid "verify device" +msgstr "驗證裝置" + +#: src/veritysetup.c:487 +msgid " []" +msgstr " []" + +#: src/veritysetup.c:489 src/integritysetup.c:565 +msgid "show active device status" +msgstr "顯示啟用中裝置的狀態" + +#: src/veritysetup.c:490 +msgid "" +msgstr "" + +#: src/veritysetup.c:490 src/integritysetup.c:566 +msgid "show on-disk information" +msgstr "顯示磁碟上資訊" + +#: src/veritysetup.c:509 +#, c-format +msgid "" +"\n" +" is the device to create under %s\n" +" is the data device\n" +" is the device containing verification data\n" +" hash of the root node on \n" +msgstr "" +"\n" +" 是要在 %s 下建立的裝置\n" +" 是資料裝置\n" +" 是包含驗證資料的裝置\n" +" 是 上根節點的雜湊\n" + +#: src/veritysetup.c:516 +#, c-format +msgid "" +"\n" +"Default compiled-in dm-verity parameters:\n" +"\tHash: %s, Data block (bytes): %u, Hash block (bytes): %u, Salt size: %u, Hash format: %u\n" +msgstr "" +"\n" +"編譯內建的預設 dm-verity 參數:\n" +"\t雜湊:%s,資料區塊(位元組):%u,雜湊區塊(位元組):%u,鹽值大小:%u,雜湊格式:%u\n" + +#: src/veritysetup.c:657 +msgid "Option --ignore-corruption and --restart-on-corruption cannot be used together." +msgstr "--ignore-corruption 與 --restart-on-corruption 選項不能一起使用。" + +#: src/veritysetup.c:662 +msgid "Option --panic-on-corruption and --restart-on-corruption cannot be used together." +msgstr "--panic-on-corruption 與 --restart-on-corruption 選項不能一起使用。" + +#: src/veritysetup.c:668 +msgid "Option --error-as-corruption must be used with --panic-on-corruption or --restart-on-corruption." +msgstr "--error-as-corruption 選項必須與 --panic-on-corruption 或 --restart-on-corruption 一起使用。" + +#: src/integritysetup.c:169 +#, c-format +msgid "" +"This will overwrite data on %s and %s irrevocably.\n" +"To preserve data device use --no-wipe option (and then activate with --integrity-recalculate)." +msgstr "" +"這將不可回復地覆寫 %s 與 %s 上的資料。\n" +"若要保留資料裝置,請使用 --no-wipe 選項(然後以 --integrity-recalculate 啟動)。" + +#: src/integritysetup.c:215 +#, c-format +msgid "Formatted with tag size %u%s, internal integrity %s.\n" +msgstr "已以標籤大小 %u%s、內部完整性 %s 格式化。\n" + +#: src/integritysetup.c:216 +msgid " (inline hw tags)" +msgstr "(內嵌硬體標籤)" + +#: src/integritysetup.c:305 +msgid "Setting recalculate flag is not supported, you may consider using --wipe instead." +msgstr "不支援設定 recalculate 旗標,您可以考慮改用 --wipe。" + +#: src/integritysetup.c:382 src/integritysetup.c:549 +#, c-format +msgid "Device %s is not a valid INTEGRITY device." +msgstr "裝置 %s 不是有效的 INTEGRITY 裝置。" + +#: src/integritysetup.c:562 src/integritysetup.c:566 +msgid "" +msgstr "" + +#: src/integritysetup.c:563 +msgid " " +msgstr " " + +#: src/integritysetup.c:586 +#, c-format +msgid "" +"\n" +" is the device to create under %s\n" +" is the device containing data with integrity tags\n" +msgstr "" +"\n" +" 是要在 %s 下建立的裝置\n" +" 是包含帶完整性標籤資料的裝置\n" + +#: src/integritysetup.c:591 +#, c-format +msgid "" +"\n" +"Default compiled-in dm-integrity parameters:\n" +"\tChecksum algorithm: %s\n" +"\tMaximum keyfile size: %dkB\n" +msgstr "" +"\n" +"編譯內建的預設 dm-integrity 參數:\n" +"\t檢查碼演算法:%s\n" +"\t金鑰檔大小上限:%dkB\n" + +#: src/integritysetup.c:648 +#, c-format +msgid "Invalid --%s size. Maximum is %u bytes." +msgstr "無效的 --%s 大小。最大值為 %u 位元組。" + +#: src/integritysetup.c:751 +msgid "Both key file and key size options must be specified." +msgstr "金鑰檔與金鑰大小選項都必須指定。" + +#: src/integritysetup.c:755 +msgid "Both journal integrity key file and key size options must be specified." +msgstr "日誌完整性金鑰檔與金鑰大小選項都必須指定。" + +#: src/integritysetup.c:758 +msgid "Journal integrity algorithm must be specified if journal integrity key is used." +msgstr "使用日誌完整性金鑰時,必須指定日誌完整性演算法。" + +#: src/integritysetup.c:762 +msgid "Both journal encryption key file and key size options must be specified." +msgstr "日誌加密金鑰檔與金鑰大小選項都必須指定。" + +#: src/integritysetup.c:765 +msgid "Journal encryption algorithm must be specified if journal encryption key is used." +msgstr "使用日誌加密金鑰時,必須指定日誌加密演算法。" + +#: src/integritysetup.c:769 +msgid "Recovery and bitmap mode options are mutually exclusive." +msgstr "Recovery 與 bitmap 模式選項互斥。" + +#: src/integritysetup.c:776 +msgid "Journal options cannot be used in bitmap mode." +msgstr "日誌選項不能在 bitmap 模式中使用。" + +#: src/integritysetup.c:781 +msgid "Bitmap options can be used only in bitmap mode." +msgstr "bitmap 選項只能在 bitmap 模式中使用。" + +#: src/integritysetup.c:787 +msgid "Inline mode cannot be combined with journal or bitmap options." +msgstr "inline 模式不能與日誌或 bitmap 選項合併使用。" + +#: src/integritysetup.c:791 +msgid "Inline mode cannot be combined with separate data device." +msgstr "inline 模式不能與分離式資料裝置合併使用。" + +#: src/integritysetup.c:795 +msgid "Keyed discards can be enabled only with keyed algorithms like HMAC." +msgstr "僅能在使用 HMAC 等具金鑰演算法時啟用帶金鑰的 discard。" + +#: src/utils_tools.c:105 +msgid "" +"\n" +"WARNING!\n" +"========\n" +msgstr "" +"\n" +"警告!\n" +"========\n" + +#. TRANSLATORS: User must type "YES" (in capital letters), do not translate this word. +#: src/utils_tools.c:107 +#, c-format +msgid "" +"%s\n" +"\n" +"Are you sure? (Type 'yes' in capital letters): " +msgstr "" +"%s\n" +"\n" +"確定嗎?(請以大寫輸入 'yes'): " + +#: src/utils_tools.c:113 +msgid "Error reading response from terminal." +msgstr "從終端機讀取回應時發生錯誤。" + +#: src/utils_tools.c:145 +msgid "Command successful." +msgstr "命令執行成功。" + +#: src/utils_tools.c:153 +msgid "wrong or missing parameters" +msgstr "參數錯誤或缺少參數" + +#: src/utils_tools.c:155 +msgid "no permission or bad passphrase" +msgstr "權限不足或通行密碼錯誤" + +#: src/utils_tools.c:157 +msgid "out of memory" +msgstr "記憶體不足" + +#: src/utils_tools.c:159 +msgid "wrong device or file specified" +msgstr "指定的裝置或檔案錯誤" + +#: src/utils_tools.c:161 +msgid "device already exists or device is busy" +msgstr "裝置已存在或裝置忙碌中" + +#: src/utils_tools.c:163 +msgid "unknown error" +msgstr "未知的錯誤" + +#: src/utils_tools.c:165 +#, c-format +msgid "Command failed with code %i (%s)." +msgstr "命令失敗,代碼 %i(%s)。" + +#: src/utils_tools.c:243 +#, c-format +msgid "Key slot %i created." +msgstr "已建立金鑰槽 %i。" + +#: src/utils_tools.c:245 +#, c-format +msgid "Key slot %i unlocked." +msgstr "金鑰槽 %i 已解鎖。" + +#: src/utils_tools.c:247 +#, c-format +msgid "Key slot %i removed." +msgstr "金鑰槽 %i 已移除。" + +#: src/utils_tools.c:256 +#, c-format +msgid "Token %i created." +msgstr "已建立 token %i。" + +#: src/utils_tools.c:258 +#, c-format +msgid "Token %i removed." +msgstr "token %i 已移除。" + +#: src/utils_tools.c:268 +msgid "No token could be unlocked with this PIN." +msgstr "使用此 PIN 無法解鎖任何 token。" + +#: src/utils_tools.c:270 +#, c-format +msgid "Token %i requires PIN." +msgstr "token %i 需要 PIN。" + +#: src/utils_tools.c:272 +#, c-format +msgid "Token (type %s) requires PIN." +msgstr "token(類型 %s)需要 PIN。" + +#: src/utils_tools.c:275 +#, c-format +msgid "Token %i cannot unlock assigned keyslot(s) (wrong keyslot passphrase)." +msgstr "token %i 無法解鎖指定的金鑰槽(金鑰槽通行密碼錯誤)。" + +#: src/utils_tools.c:277 +#, c-format +msgid "Token (type %s) cannot unlock assigned keyslot(s) (wrong keyslot passphrase)." +msgstr "token(類型 %s)無法解鎖指定的金鑰槽(金鑰槽通行密碼錯誤)。" + +#: src/utils_tools.c:280 +#, c-format +msgid "Token %i requires additional missing resource." +msgstr "token %i 需要額外的缺失資源。" + +#: src/utils_tools.c:282 +#, c-format +msgid "Token (type %s) requires additional missing resource." +msgstr "token(類型 %s)需要額外的缺失資源。" + +#: src/utils_tools.c:285 +#, c-format +msgid "No usable token (type %s) is available." +msgstr "沒有可用的 token(類型 %s)。" + +#: src/utils_tools.c:287 +msgid "No usable token is available." +msgstr "沒有可用的 token。" + +#: src/utils_tools.c:380 +#, c-format +msgid "Cannot read keyfile %s." +msgstr "無法讀取金鑰檔 %s。" + +#: src/utils_tools.c:385 +#, c-format +msgid "Cannot read %d bytes from keyfile %s." +msgstr "無法從金鑰檔 %2$s 讀取 %1$d 位元組。" + +#: src/utils_tools.c:410 +#, c-format +msgid "Cannot open keyfile %s for write." +msgstr "無法開啟金鑰檔 %s 進行寫入。" + +#: src/utils_tools.c:417 +#, c-format +msgid "Cannot write to keyfile %s." +msgstr "無法寫入金鑰檔 %s。" + +#: src/utils_tools.c:468 +msgid "Name is too long." +msgstr "名稱太長。" + +#: src/utils_tools.c:471 +msgid "Name must not contain '/' character." +msgstr "名稱不得包含 '/' 字元。" + +#: src/utils_progress.c:61 +#, c-format +msgid "%02m%02s" +msgstr "%02分%02秒" + +#: src/utils_progress.c:63 +#, c-format +msgid "%02h%02m%02s" +msgstr "%02時%02分%02秒" + +#: src/utils_progress.c:65 +#, c-format +msgid "%02 days" +msgstr "%02 天" + +#: src/utils_progress.c:92 src/utils_progress.c:125 +#, c-format +msgid "%4 %s written" +msgstr "已寫入 %4 %s" + +#: src/utils_progress.c:96 src/utils_progress.c:129 +#, c-format +msgid "speed %5.1f %s/s" +msgstr "速度 %5.1f %s/秒" + +#. TRANSLATORS: 'time', 'written' and 'speed' string are supposed +#. to get translated as well. 'eol' is always new-line or empty. +#. See above. +#. +#: src/utils_progress.c:105 +#, c-format +msgid "Progress: %5.1f%%, ETA %s, %s, %s%s" +msgstr "進度:%5.1f%%,剩餘時間 %s,%s,%s%s" + +#. TRANSLATORS: 'time', 'written' and 'speed' string are supposed +#. to get translated as well. See above +#. +#: src/utils_progress.c:137 +#, c-format +msgid "Finished, time %s, %s, %s\n" +msgstr "已完成,時間 %s,%s,%s\n" + +#: src/utils_password.c:28 src/utils_password.c:59 +#, c-format +msgid "Cannot check password quality: %s" +msgstr "無法檢查密碼品質:%s" + +#: src/utils_password.c:36 +#, c-format +msgid "" +"Password quality check failed:\n" +" %s" +msgstr "" +"密碼品質檢查失敗:\n" +" %s" + +#: src/utils_password.c:66 +#, c-format +msgid "Password quality check failed: Bad passphrase (%s)" +msgstr "密碼品質檢查失敗:通行密碼不佳(%s)" + +#: src/utils_password.c:197 +msgid "Read stopped at maximal interactive input length, passphrase can be trimmed." +msgstr "讀取在互動式輸入長度上限處停止,通行密碼可能被截斷。" + +#: src/utils_password.c:224 src/utils_password.c:238 +msgid "Error reading passphrase from terminal." +msgstr "從終端機讀取通行密碼時發生錯誤。" + +#: src/utils_password.c:236 +msgid "Verify passphrase: " +msgstr "確認通行密碼: " + +#: src/utils_password.c:243 +msgid "Passphrases do not match." +msgstr "通行密碼不一致。" + +#: src/utils_password.c:281 +msgid "Cannot use offset with terminal input." +msgstr "終端機輸入不能使用偏移量。" + +#: src/utils_password.c:285 +#, c-format +msgid "Enter passphrase: " +msgstr "輸入通行密碼: " + +#: src/utils_password.c:288 +#, c-format +msgid "Enter passphrase for %s: " +msgstr "輸入 %s 的通行密碼: " + +#: src/utils_password.c:322 +msgid "No key available with this passphrase." +msgstr "此通行密碼沒有可用的金鑰。" + +#: src/utils_password.c:324 +msgid "No usable keyslot is available." +msgstr "沒有可用的金鑰槽。" + +#: src/utils_luks.c:55 +msgid "Can't do passphrase verification on non-tty inputs." +msgstr "無法對非 tty 輸入進行通行密碼驗證。" + +#: src/utils_luks.c:179 +#, c-format +msgid "Failed to open file %s in read-only mode." +msgstr "無法以唯讀模式開啟檔案 %s。" + +#: src/utils_luks.c:193 +msgid "Provide valid LUKS2 token JSON:\n" +msgstr "請提供有效的 LUKS2 token JSON:\n" + +#: src/utils_luks.c:200 +msgid "Failed to read JSON file." +msgstr "無法讀取 JSON 檔。" + +#: src/utils_luks.c:205 +msgid "" +"\n" +"Read interrupted." +msgstr "" +"\n" +"讀取中斷。" + +#: src/utils_luks.c:246 +#, c-format +msgid "Failed to open file %s in write mode." +msgstr "無法以寫入模式開啟檔案 %s。" + +#: src/utils_luks.c:255 +msgid "" +"\n" +"Write interrupted." +msgstr "" +"\n" +"寫入中斷。" + +#: src/utils_luks.c:259 +msgid "Failed to write JSON file." +msgstr "無法寫入 JSON 檔。" + +#: src/utils_reencrypt.c:93 +#, c-format +msgid "Auto-detected active dm device '%s' for data device %s.\n" +msgstr "已為資料裝置 %s 自動偵測到啟用中的 dm 裝置 '%s'。\n" + +#: src/utils_reencrypt.c:97 +#, c-format +msgid "Failed to auto-detect device %s holders." +msgstr "無法自動偵測裝置 %s 的持有者。" + +#: src/utils_reencrypt.c:103 +#, c-format +msgid "Device %s is not a block device.\n" +msgstr "裝置 %s 不是區塊裝置。\n" + +#: src/utils_reencrypt.c:105 +#, c-format +msgid "" +"Unable to decide if device %s is activated or not.\n" +"Are you sure you want to proceed with reencryption in offline mode?\n" +"It may lead to data corruption if the device is actually activated.\n" +"To run reencryption in online mode, use --active-name parameter instead.\n" +msgstr "" +"無法判定裝置 %s 是否已啟動。\n" +"確定要以離線模式繼續重新加密嗎?\n" +"若裝置實際上已啟動,可能導致資料毀損。\n" +"若要線上執行重新加密,請改用 --active-name 參數。\n" + +#: src/utils_reencrypt.c:114 src/utils_reencrypt.c:247 +#, c-format +msgid "" +"Device %s is not a block device. Can not auto-detect if it is active or not.\n" +"Use --force-offline-reencrypt to bypass the check and run in offline mode (dangerous!)." +msgstr "" +"裝置 %s 不是區塊裝置。無法自動偵測其是否啟用。\n" +"請使用 --force-offline-reencrypt 略過檢查並以離線模式執行(危險!)。" + +#: src/utils_reencrypt.c:151 src/utils_reencrypt.c:194 +#: src/utils_reencrypt.c:204 +msgid "Requested --resilience option cannot be applied to current reencryption operation." +msgstr "要求的 --resilience 選項無法套用至目前的重新加密操作。" + +#: src/utils_reencrypt.c:176 +msgid "Device is not in LUKS2 encryption. Conflicting option --encrypt." +msgstr "裝置不在 LUKS2 加密狀態。與 --encrypt 選項衝突。" + +#: src/utils_reencrypt.c:181 +msgid "Device is not in LUKS2 decryption. Conflicting option --decrypt." +msgstr "裝置不在 LUKS2 解密狀態。與 --decrypt 選項衝突。" + +#: src/utils_reencrypt.c:188 +msgid "Device is in reencryption using datashift resilience. Requested --resilience option cannot be applied." +msgstr "裝置正在使用 datashift 韌性進行重新加密。要求的 --resilience 選項無法套用。" + +#: src/utils_reencrypt.c:283 src/utils_reencrypt.c:1953 +msgid "Cannot determine volume key size for LUKS without keyslots, please use --new-key-size option." +msgstr "無法判定無金鑰槽 LUKS 的卷金鑰大小,請使用 --new-key-size 選項。" + +#: src/utils_reencrypt.c:438 +msgid "Device requires reencryption recovery. Run repair first." +msgstr "裝置需要重新加密復原。請先執行 repair。" + +#: src/utils_reencrypt.c:452 +#, c-format +msgid "Device %s is already in LUKS2 reencryption. Do you wish to resume previously initialised operation?" +msgstr "裝置 %s 已在 LUKS2 重新加密狀態。要恢復先前初始化的操作嗎?" + +#: src/utils_reencrypt.c:563 +msgid "Legacy LUKS2 reencryption is no longer supported." +msgstr "不再支援舊版 LUKS2 重新加密。" + +#: src/utils_reencrypt.c:568 +msgid "Can not reencrypt LUKS2 device configured to use OPAL." +msgstr "無法對設定為使用 OPAL 的 LUKS2 裝置重新加密。" + +#: src/utils_reencrypt.c:574 +msgid "Reencryption of device with integrity profile is not supported." +msgstr "不支援對具 integrity profile 的裝置重新加密。" + +#: src/utils_reencrypt.c:611 +#, c-format +msgid "" +"Requested --sector-size % is incompatible with %s superblock\n" +"(block size: % bytes) detected on device %s." +msgstr "" +"要求的 --sector-size %1$ 與在裝置 %4$s 上偵測到的 %2$s 超級區塊不相容\n" +"(區塊大小:%3$ 位元組)。" + +#: src/utils_reencrypt.c:680 src/utils_reencrypt.c:2233 +msgid "Encryption without detached header (--header) is not possible without data device size reduction (--reduce-device-size)." +msgstr "未縮減資料裝置大小(--reduce-device-size)時,無法在沒有分離式標頭(--header)的情況下加密。" + +#: src/utils_reencrypt.c:689 +msgid "Requested data offset must be less than or equal to half of --reduce-device-size parameter." +msgstr "要求的資料偏移量必須小於或等於 --reduce-device-size 參數的一半。" + +#: src/utils_reencrypt.c:699 +#, c-format +msgid "Adjusting --reduce-device-size value to twice the --offset % (sectors).\n" +msgstr "正在將 --reduce-device-size 值調整為 --offset %(磁區)的兩倍。\n" + +#: src/utils_reencrypt.c:729 +#, c-format +msgid "Temporary header file %s already exists. Aborting." +msgstr "暫時標頭檔 %s 已存在。中止。" + +#: src/utils_reencrypt.c:731 src/utils_reencrypt.c:738 +#, c-format +msgid "Cannot create temporary header file %s." +msgstr "無法建立暫時標頭檔 %s。" + +#: src/utils_reencrypt.c:763 +msgid "LUKS2 metadata size is larger than data shift value." +msgstr "LUKS2 中繼資料大小大於資料位移值。" + +#: src/utils_reencrypt.c:802 +#, c-format +msgid "Failed to place new header at head of device %s." +msgstr "無法將新標頭置於裝置 %s 的開頭。" + +#: src/utils_reencrypt.c:815 +#, c-format +msgid "%s/%s is now active and ready for online encryption.\n" +msgstr "%s/%s 現已啟用並可進行線上加密。\n" + +#: src/utils_reencrypt.c:852 +#, c-format +msgid "Active device %s is not LUKS2." +msgstr "啟用中的裝置 %s 不是 LUKS2。" + +#: src/utils_reencrypt.c:880 +msgid "Restoring original LUKS2 header." +msgstr "正在還原原始 LUKS2 標頭。" + +#: src/utils_reencrypt.c:888 +msgid "Original LUKS2 header restore failed." +msgstr "原始 LUKS2 標頭還原失敗。" + +#: src/utils_reencrypt.c:920 +#, c-format +msgid "Header file %s does not exist. Do you want to initialize LUKS2 decryption of device %s and export LUKS2 header to file %s?" +msgstr "標頭檔 %s 不存在。要初始化裝置 %s 的 LUKS2 解密,並將 LUKS2 標頭匯出至檔案 %s 嗎?" + +#: src/utils_reencrypt.c:963 +msgid "Failed to add read/write permissions to exported header file." +msgstr "無法為匯出的標頭檔新增讀寫權限。" + +#: src/utils_reencrypt.c:1017 +#, c-format +msgid "Reencryption initialization failed. Header backup is available in %s." +msgstr "重新加密初始化失敗。標頭備份可在 %s 取得。" + +#: src/utils_reencrypt.c:1045 +msgid "LUKS2 decryption is supported with detached header device only (with data offset set to 0)." +msgstr "LUKS2 解密僅支援搭配分離式標頭裝置(資料偏移量設為 0)。" + +#: src/utils_reencrypt.c:1506 src/utils_reencrypt.c:1531 +#: src/utils_reencrypt.c:1548 src/utils_reencrypt.c:1557 +msgid "Not enough free keyslots for reencryption." +msgstr "可用金鑰槽不足,無法進行重新加密。" + +#: src/utils_reencrypt.c:1513 +msgid "No token could unlock the device." +msgstr "沒有 token 能解鎖裝置。" + +#: src/utils_reencrypt.c:1588 +msgid "Key file or keyring key description can be used only with --key-slot or with exactly one key slot active." +msgstr "金鑰檔或鑰匙圈金鑰描述僅能搭配 --key-slot 使用,或僅在剛好一個金鑰槽啟用時使用。" + +#: src/utils_reencrypt.c:1595 src/utils_reencrypt.c:1608 +#: src/utils_reencrypt_luks1.c:1092 src/utils_reencrypt_luks1.c:1103 +#, c-format +msgid "Enter passphrase for key slot %d: " +msgstr "輸入金鑰槽 %d 的通行密碼: " + +#: src/utils_reencrypt.c:1905 +#, c-format +msgid "Switching data encryption cipher to %s.\n" +msgstr "正在將資料加密演算法切換為 %s。\n" + +#: src/utils_reencrypt.c:2006 src/utils_reencrypt.c:2027 +msgid "Use --force-no-keyslots to reencrypt device with active keyslots by passing volume keys directly." +msgstr "若要對有啟用金鑰槽的裝置重新加密,請使用 --force-no-keyslots 直接傳入卷金鑰。" + +#: src/utils_reencrypt.c:2022 +msgid "Option --new-volume-key-file must be paired with --new-key-size" +msgstr "--new-volume-key-file 選項必須搭配 --new-key-size" + +#: src/utils_reencrypt.c:2064 +msgid "No data segment parameters changed. Reencryption aborted." +msgstr "資料區段參數未變更。重新加密已中止。" + +#: src/utils_reencrypt.c:2101 +msgid "" +"Encryption sector size increase on offline device is not supported.\n" +"Activate the device first or use --force-offline-reencrypt option (dangerous!)." +msgstr "" +"不支援在離線裝置上增加加密磁區大小。\n" +"請先啟動裝置,或使用 --force-offline-reencrypt 選項(危險!)。" + +#: src/utils_reencrypt.c:2143 src/utils_reencrypt_luks1.c:688 +#: src/utils_reencrypt_luks1.c:759 +msgid "" +"\n" +"Reencryption interrupted." +msgstr "" +"\n" +"重新加密中斷。" + +#: src/utils_reencrypt.c:2148 +msgid "Resuming LUKS reencryption in forced offline mode.\n" +msgstr "正在以強制離線模式恢復 LUKS 重新加密。\n" + +#: src/utils_reencrypt.c:2171 +#, c-format +msgid "Device %s contains broken LUKS metadata. Aborting operation." +msgstr "裝置 %s 包含損壞的 LUKS 中繼資料。中止操作。" + +#: src/utils_reencrypt.c:2187 src/utils_reencrypt.c:2209 +#, c-format +msgid "Device %s is already LUKS device. Aborting operation." +msgstr "裝置 %s 已是 LUKS 裝置。中止操作。" + +#: src/utils_reencrypt.c:2215 +#, c-format +msgid "Device %s is already in LUKS reencryption. Aborting operation." +msgstr "裝置 %s 已在 LUKS 重新加密狀態。中止操作。" + +#: src/utils_reencrypt.c:2298 +msgid "LUKS2 decryption requires --header option." +msgstr "LUKS2 解密需要 --header 選項。" + +#: src/utils_reencrypt.c:2346 +msgid "Command requires device as argument." +msgstr "命令需要裝置作為引數。" + +#: src/utils_reencrypt.c:2359 +#, c-format +msgid "Conflicting versions. Device %s is LUKS1." +msgstr "版本衝突。裝置 %s 是 LUKS1。" + +#: src/utils_reencrypt.c:2365 +#, c-format +msgid "Conflicting versions. Device %s is in LUKS1 reencryption." +msgstr "版本衝突。裝置 %s 處於 LUKS1 重新加密狀態。" + +#: src/utils_reencrypt.c:2371 +#, c-format +msgid "Conflicting versions. Device %s is LUKS2." +msgstr "版本衝突。裝置 %s 是 LUKS2。" + +#: src/utils_reencrypt.c:2377 +#, c-format +msgid "Conflicting versions. Device %s is in LUKS2 reencryption." +msgstr "版本衝突。裝置 %s 處於 LUKS2 重新加密狀態。" + +#: src/utils_reencrypt.c:2383 +msgid "LUKS2 reencryption already initialized. Aborting operation." +msgstr "LUKS2 重新加密已初始化。中止操作。" + +#: src/utils_reencrypt.c:2390 +msgid "Device reencryption not in progress." +msgstr "裝置重新加密未在進行中。" + +#: src/utils_reencrypt_luks1.c:116 src/utils_blockdev.c:285 +#, c-format +msgid "Cannot exclusively open %s, device in use." +msgstr "無法獨佔開啟 %s,裝置使用中。" + +#: src/utils_reencrypt_luks1.c:130 src/utils_reencrypt_luks1.c:883 +msgid "Allocation of aligned memory failed." +msgstr "對齊記憶體配置失敗。" + +#: src/utils_reencrypt_luks1.c:137 +#, c-format +msgid "Cannot read device %s." +msgstr "無法讀取裝置 %s。" + +#: src/utils_reencrypt_luks1.c:148 +#, c-format +msgid "Marking LUKS1 device %s unusable." +msgstr "正在將 LUKS1 裝置 %s 標記為無法使用。" + +#: src/utils_reencrypt_luks1.c:164 +#, c-format +msgid "Cannot write device %s." +msgstr "無法寫入裝置 %s。" + +#: src/utils_reencrypt_luks1.c:213 +msgid "Cannot write reencryption log file." +msgstr "無法寫入重新加密記錄檔。" + +#: src/utils_reencrypt_luks1.c:268 +msgid "Cannot read reencryption log file." +msgstr "無法讀取重新加密記錄檔。" + +#: src/utils_reencrypt_luks1.c:279 +msgid "Wrong log format." +msgstr "記錄格式錯誤。" + +#: src/utils_reencrypt_luks1.c:307 +#, c-format +msgid "Log file %s exists, resuming reencryption.\n" +msgstr "記錄檔 %s 存在,正在恢復重新加密。\n" + +#: src/utils_reencrypt_luks1.c:354 +msgid "Activating temporary device using old LUKS header." +msgstr "正在使用舊 LUKS 標頭啟動暫時裝置。" + +#: src/utils_reencrypt_luks1.c:364 +msgid "Activating temporary device using new LUKS header." +msgstr "正在使用新 LUKS 標頭啟動暫時裝置。" + +#: src/utils_reencrypt_luks1.c:374 +msgid "Activation of temporary devices failed." +msgstr "暫時裝置啟動失敗。" + +#: src/utils_reencrypt_luks1.c:434 +msgid "Failed to set data offset." +msgstr "無法設定資料偏移量。" + +#: src/utils_reencrypt_luks1.c:440 +msgid "Failed to set metadata size." +msgstr "無法設定中繼資料大小。" + +#: src/utils_reencrypt_luks1.c:448 +#, c-format +msgid "New LUKS header for device %s created." +msgstr "已建立裝置 %s 的新 LUKS 標頭。" + +#: src/utils_reencrypt_luks1.c:485 +#, c-format +msgid "%s header backup of device %s created." +msgstr "已建立裝置 %s 的 %s 標頭備份。" + +#: src/utils_reencrypt_luks1.c:541 +msgid "Creation of LUKS backup headers failed." +msgstr "建立 LUKS 備份標頭失敗。" + +#: src/utils_reencrypt_luks1.c:670 +#, c-format +msgid "Cannot restore %s header on device %s." +msgstr "無法在裝置 %s 上還原 %s 標頭。" + +#: src/utils_reencrypt_luks1.c:672 +#, c-format +msgid "%s header on device %s restored." +msgstr "裝置 %s 上的 %s 標頭已還原。" + +#: src/utils_reencrypt_luks1.c:855 src/utils_reencrypt_luks1.c:861 +msgid "Cannot open temporary LUKS device." +msgstr "無法開啟暫時 LUKS 裝置。" + +#: src/utils_reencrypt_luks1.c:866 src/utils_reencrypt_luks1.c:871 +msgid "Cannot get device size." +msgstr "無法取得裝置大小。" + +#: src/utils_reencrypt_luks1.c:913 +msgid "IO error during reencryption." +msgstr "重新加密期間發生 IO 錯誤。" + +#: src/utils_reencrypt_luks1.c:943 +msgid "Provided UUID is invalid." +msgstr "提供的 UUID 無效。" + +#: src/utils_reencrypt_luks1.c:1045 +msgid "Key file can be used only with --key-slot or with exactly one key slot active." +msgstr "金鑰檔僅能搭配 --key-slot 使用,或僅在剛好一個金鑰槽啟用時使用。" + +#: src/utils_reencrypt_luks1.c:1169 +msgid "Cannot open reencryption log file." +msgstr "無法開啟重新加密記錄檔。" + +#: src/utils_reencrypt_luks1.c:1175 +msgid "No decryption in progress, provided UUID can be used only to resume suspended decryption process." +msgstr "沒有進行中的解密,提供的 UUID 僅能用於恢復已暫停的解密程序。" + +#: src/utils_reencrypt_luks1.c:1231 +#, c-format +msgid "Reencryption will change: %s%s%s%s%s%s." +msgstr "重新加密將變更:%s%s%s%s%s%s。" + +#: src/utils_reencrypt_luks1.c:1232 +msgid "volume key" +msgstr "卷金鑰" + +#: src/utils_reencrypt_luks1.c:1234 +msgid "set hash to " +msgstr "將雜湊設定為 " + +#: src/utils_reencrypt_luks1.c:1235 +msgid ", set cipher to " +msgstr ",將加密演算法設定為 " + +#: src/utils_blockdev.c:179 +#, c-format +msgid "WARNING: Device %s already contains a '%s' partition signature.\n" +msgstr "警告:裝置 %s 已包含 '%s' 分割區簽章。\n" + +#: src/utils_blockdev.c:187 +#, c-format +msgid "WARNING: Device %s already contains a '%s' superblock signature.\n" +msgstr "警告:裝置 %s 已包含 '%s' 超級區塊簽章。\n" + +#: src/utils_blockdev.c:209 src/utils_blockdev.c:292 src/utils_blockdev.c:344 +msgid "Failed to initialize device signature probes." +msgstr "無法初始化裝置簽章探查。" + +#: src/utils_blockdev.c:272 +#, c-format +msgid "Failed to stat device %s." +msgstr "無法取得裝置 %s 的狀態。" + +#: src/utils_blockdev.c:287 +#, c-format +msgid "Failed to open file %s in read/write mode." +msgstr "無法以讀寫模式開啟檔案 %s。" + +#: src/utils_blockdev.c:307 +#, c-format +msgid "Existing '%s' partition signature on device %s will be wiped." +msgstr "裝置 %s 上既有的 '%s' 分割區簽章將被清除。" + +#: src/utils_blockdev.c:310 +#, c-format +msgid "Existing '%s' superblock signature on device %s will be wiped." +msgstr "裝置 %s 上既有的 '%s' 超級區塊簽章將被清除。" + +#: src/utils_blockdev.c:313 +msgid "Failed to wipe device signature." +msgstr "無法清除裝置簽章。" + +#: src/utils_blockdev.c:320 +#, c-format +msgid "Failed to probe device %s for a signature." +msgstr "無法探查裝置 %s 的簽章。" + +#: src/utils_args.c:52 +#, c-format +msgid "Invalid size specification in parameter --%s." +msgstr "參數 --%s 中的大小規格無效。" + +#: src/utils_args.c:112 +#, c-format +msgid "Option --%s is not allowed with %s action." +msgstr "--%s 選項不允許用於 %s 動作。" + +#: src/utils_key_description.c:66 +msgid "Type specification in --link-vk-to-keyring keyring specification is ignored." +msgstr "--link-vk-to-keyring 鑰匙圈規格中的類型規格將被忽略。" + +#: src/utils_key_description.c:131 +msgid "Key types have to be the same for both volume keys." +msgstr "兩個卷金鑰的金鑰類型必須相同。" + +#: src/utils_key_description.c:136 +msgid "Both volume keys have to be linked to the same keyring." +msgstr "兩個卷金鑰都必須連結至同一個鑰匙圈。" + +#: src/utils_key_description.c:146 +msgid "You need to supply more key names." +msgstr "您需要提供更多金鑰名稱。" + +#: src/utils_key_description.c:150 +msgid "Invalid --link-vk-to-keyring value." +msgstr "無效的 --link-vk-to-keyring 值。" + +#: src/utils_keyslot_check.c:114 +#, c-format +msgid "Keyslot %d binary data could be corrupted.\n" +msgstr "金鑰槽 %d 的二進位資料可能已毀損。\n" + +#: src/utils_keyslot_check.c:124 +#, c-format +msgid " Suspected offset: 0x%\n" +msgstr " 疑似偏移量:0x%\n" + +#: src/utils_keyslot_check.c:127 +msgid " Subsequent suspected offsets are suppressed.\n" +msgstr " 後續的疑似偏移量已隱藏。\n" + +#: src/utils_keyslot_check.c:178 src/utils_keyslot_check.c:183 +#, c-format +msgid "Keyslot %d cannot be read from the device." +msgstr "無法從裝置讀取金鑰槽 %d。" + +#: src/utils_keyslot_check.c:194 +#, c-format +msgid "You can use hexdump -v -C -n 128 -s \"%s\" to inspect the data.\n" +msgstr "您可以使用 hexdump -v -C -n 128 -s \"%s\" 檢查資料。\n" + +#: tokens/ssh/cryptsetup-ssh.c:110 +msgid "Failed to write ssh token json." +msgstr "無法寫入 ssh token json。" + +#: tokens/ssh/cryptsetup-ssh.c:128 +msgid "" +"Experimental cryptsetup plugin for unlocking LUKS2 devices with token connected to an SSH server\vThis plugin currently allows only adding a token to an existing key slot.\n" +"\n" +"Specified SSH server must contain a key file on the specified path with a passphrase for an existing key slot on the device.\n" +"Provided credentials will be used by cryptsetup to get the password when opening the device using the token.\n" +"\n" +"Note: The information provided when adding the token (SSH server address, user and paths) will be stored in the LUKS2 header in plaintext." +msgstr "" +"用於以連線至 SSH 伺服器的 token 解鎖 LUKS2 裝置的實驗性 cryptsetup 外掛程式\\v此外掛程式目前僅允許在既有金鑰槽上新增 token。\n" +"\n" +"指定的 SSH 伺服器必須在指定路徑包含一個金鑰檔,其通行密碼對應裝置上既有的金鑰槽。\n" +"提供的憑證將由 cryptsetup 在透過 token 開啟裝置時用來取得密碼。\n" +"\n" +"注意:新增 token 時提供的資訊(SSH 伺服器位址、使用者與路徑)將以明文儲存在 LUKS2 標頭中。" + +#: tokens/ssh/cryptsetup-ssh.c:138 +msgid " " +msgstr " " + +#: tokens/ssh/cryptsetup-ssh.c:141 +msgid "Options for the 'add' action:" +msgstr "'add' 動作的選項:" + +#: tokens/ssh/cryptsetup-ssh.c:142 +msgid "IP address/URL of the remote server for this token" +msgstr "此 token 遠端伺服器的 IP 位址/URL" + +#: tokens/ssh/cryptsetup-ssh.c:143 +msgid "Username used for the remote server" +msgstr "遠端伺服器使用的使用者名稱" + +#: tokens/ssh/cryptsetup-ssh.c:144 +msgid "Path to the key file on the remote server" +msgstr "遠端伺服器上金鑰檔的路徑" + +#: tokens/ssh/cryptsetup-ssh.c:145 +msgid "Path to the SSH key for connecting to the remote server" +msgstr "連線至遠端伺服器所用 SSH 金鑰的路徑" + +#: tokens/ssh/cryptsetup-ssh.c:147 +msgid "Path to directory containinig libcryptsetup external tokens" +msgstr "包含 libcryptsetup 外部 token 的目錄路徑" + +#: tokens/ssh/cryptsetup-ssh.c:148 +msgid "Keyslot to assign the token to. If not specified, token will be assigned to the first keyslot matching provided passphrase." +msgstr "要指派 token 的金鑰槽。若未指定,token 將指派給符合所提供通行密碼的第一個金鑰槽。" + +#: tokens/ssh/cryptsetup-ssh.c:150 +msgid "Generic options:" +msgstr "一般選項:" + +#: tokens/ssh/cryptsetup-ssh.c:151 +msgid "Shows more detailed error messages" +msgstr "顯示更詳細的錯誤訊息" + +#: tokens/ssh/cryptsetup-ssh.c:152 +msgid "Show debug messages" +msgstr "顯示偵錯訊息" + +#: tokens/ssh/cryptsetup-ssh.c:153 +msgid "Show debug messages including JSON metadata" +msgstr "顯示含 JSON 中繼資料的偵錯訊息" + +#: tokens/ssh/cryptsetup-ssh.c:268 +msgid "Failed to open and import private key:\n" +msgstr "無法開啟並匯入私密金鑰:\n" + +#: tokens/ssh/cryptsetup-ssh.c:272 +msgid "Failed to import private key (password protected?).\n" +msgstr "無法匯入私密金鑰(受密碼保護?)。\n" + +#. TRANSLATORS: SSH credentials prompt, e.g. "user@server's password: " +#: tokens/ssh/cryptsetup-ssh.c:274 +#, c-format +msgid "%s@%s's password: " +msgstr "%s@%s 的密碼: " + +#: tokens/ssh/cryptsetup-ssh.c:363 +#, c-format +msgid "Failed to parse arguments.\n" +msgstr "無法剖析引數。\n" + +#: tokens/ssh/cryptsetup-ssh.c:374 +#, c-format +msgid "An action must be specified\n" +msgstr "必須指定動作\n" + +#: tokens/ssh/cryptsetup-ssh.c:380 +#, c-format +msgid "Device must be specified for '%s' action.\n" +msgstr "'%s' 動作必須指定裝置。\n" + +#: tokens/ssh/cryptsetup-ssh.c:385 +#, c-format +msgid "SSH server must be specified for '%s' action.\n" +msgstr "'%s' 動作必須指定 SSH 伺服器。\n" + +#: tokens/ssh/cryptsetup-ssh.c:390 +#, c-format +msgid "SSH user must be specified for '%s' action.\n" +msgstr "'%s' 動作必須指定 SSH 使用者。\n" + +#: tokens/ssh/cryptsetup-ssh.c:395 +#, c-format +msgid "SSH path must be specified for '%s' action.\n" +msgstr "'%s' 動作必須指定 SSH 路徑。\n" + +#: tokens/ssh/cryptsetup-ssh.c:400 +#, c-format +msgid "SSH key path must be specified for '%s' action.\n" +msgstr "'%s' 動作必須指定 SSH 金鑰路徑。\n" + +#: tokens/ssh/cryptsetup-ssh.c:407 +#, c-format +msgid "Failed open %s using provided credentials.\n" +msgstr "使用提供的憑證開啟 %s 失敗。\n" + +#: tokens/ssh/cryptsetup-ssh.c:424 +#, c-format +msgid "Only 'add' action is currently supported by this plugin.\n" +msgstr "此外掛程式目前僅支援 'add' 動作。\n" + +#: tokens/ssh/ssh-utils.c:33 +msgid "Cannot create sftp session: " +msgstr "無法建立 sftp 工作階段: " + +#: tokens/ssh/ssh-utils.c:40 +msgid "Cannot init sftp session: " +msgstr "無法初始化 sftp 工作階段: " + +#: tokens/ssh/ssh-utils.c:46 +msgid "Cannot open sftp session: " +msgstr "無法開啟 sftp 工作階段: " + +#: tokens/ssh/ssh-utils.c:53 +msgid "Cannot stat sftp file: " +msgstr "無法取得 sftp 檔案狀態: " + +#: tokens/ssh/ssh-utils.c:61 +msgid "Not enough memory.\n" +msgstr "記憶體不足。\n" + +#: tokens/ssh/ssh-utils.c:68 +msgid "Cannot read remote key: " +msgstr "無法讀取遠端金鑰: " + +#: tokens/ssh/ssh-utils.c:109 +msgid "Connection failed: " +msgstr "連線失敗: " + +#: tokens/ssh/ssh-utils.c:119 +msgid "Server not known: " +msgstr "不明的伺服器: " + +#: tokens/ssh/ssh-utils.c:147 +msgid "Public key auth method not allowed on host.\n" +msgstr "主機不允許公開金鑰驗證方法。\n" + +#: tokens/ssh/ssh-utils.c:158 +msgid "Public key authentication error: " +msgstr "公開金鑰驗證錯誤: " From 23d82f2e371d1b74990573578a553228f15b8a22 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Fri, 4 Sep 2026 16:59:03 +0200 Subject: [PATCH 216/244] Add release notes for 2.8.8. --- docs/v2.8.8-ReleaseNotes | 69 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 docs/v2.8.8-ReleaseNotes diff --git a/docs/v2.8.8-ReleaseNotes b/docs/v2.8.8-ReleaseNotes new file mode 100644 index 000000000..52d7a6500 --- /dev/null +++ b/docs/v2.8.8-ReleaseNotes @@ -0,0 +1,69 @@ +Cryptsetup 2.8.8 Release Notes +============================== +Stable bug-fix release with minor extensions. + +All users of cryptsetup must upgrade to this version. + +Changes since version 2.8.7 +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* integritysetup: add support for keyed discards. + + An integrity device in standalone mode, with a keyed integrity algorithm like HMAC and + enabled discards (TRIM), could be vulnerable to wiping part of the device using a discard pattern. + + This issue can be worked around by using a keyed discards filler. + Once set, it is set permanently for the integrity device and cannot be reverted. + + Integritysetup now supports a new --allow-discards-keyed option. + Once used, it will upgrade the superblock and activate keyed discards. + After the upgrade, keyed discards are always used, even with the old --allow-discards option. + + Keyed discard is available since Linux kernel 7.3. + + The kernel issue was reported (and fixed) by Shukai Ni and Jo Van Bulck, DistriNet, KU Leuven. + + Note: Integritysetup was intended to be used with non-cryptographic integrity protection only. + If you need cryptographic protection, use LUKS2 and AEAD (discards are not supported). + +* Avoid time-of-check/time-of-use (TOCTOU) issue in LUKS header restore. + + The LUKS header restore function validates the provided header file and then reopens the same + file path to restore the LUKS header. In a specifically crafted environment, a symlink flip could + occur between validating and restoring the header, resulting in a different file being used for + the LUKS header restore (potentially leaking the file content). + The libcryptsetup now opens the device only once. The issue affects both LUKS1 and LUKS2. + + The issue was reported by Vivek Parikh, BreachX Zero Day Labs. + + Note: LUKS header backup/restore is a system administrative task (similar to filesystem + backup/restore) that must run in a secure environment. Such a backup is usually a multi-step + process, and it is up to the caller to ensure security of that environment. + +* BITLK: harden metadata validation. + + If a crafted BITLK (BitLocker-compatible) image is opened, the allocated buffer size for the key + can be incorrect. This can happen if the encryption is changed from AES-CBC-128 to a mode with + an Elephant diffuser, without recalculating the stored key. + + Also, the data offset can be intentionally wrong, which could lead to an infinite loop when + parsing metadata. + + Note that creating such an incorrect image requires knowledge of the disk password, as MAC + protects the metadata, and this MAC is checked by cryptsetup. + + These issues were reported by Aisle Research. + +* Fix possible integer overflow in LUKS metadata parsing. + + On systems with a 32-bit integer size, the anti-forensic (AF) data size calculation could + overflow, causing an application crash. + + The issue was reported by Aisle Research. + +* cryptsetup: fix local memory corruption bug in reencrypt init. + + If a device intended for reencryption contains more than 16 active LUKS2 keyslots or tokens, + the reencryption initialization could corrupt internal memory, leading to an application crash. + + The issue was reported by Aisle Research. From ff3f1723e0e65003e35b82094642b0f0a3583ddb Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Mon, 7 Sep 2026 08:22:27 +0200 Subject: [PATCH 217/244] Version 2.8.8. --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 22c930a1e..ef359649e 100644 --- a/README.md +++ b/README.md @@ -39,11 +39,11 @@ Download Release notes and tarballs are available at [kernel.org](https://cdn.kernel.org/pub/linux/utils/cryptsetup/). -**The latest stable cryptsetup release version is 2.8.7** - * [cryptsetup-2.8.7.tar.xz](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/cryptsetup-2.8.7.tar.xz) - * Signature [cryptsetup-2.8.7.tar.sign](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/cryptsetup-2.8.7.tar.sign) +**The latest stable cryptsetup release version is 2.8.8** + * [cryptsetup-2.8.8.tar.xz](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/cryptsetup-2.8.8.tar.xz) + * Signature [cryptsetup-2.8.8.tar.sign](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/cryptsetup-2.8.8.tar.sign) _(You need to decompress file first to check signature.)_ - * [Cryptsetup 2.8.7 Release Notes](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/v2.8.7-ReleaseNotes). + * [Cryptsetup 2.8.8 Release Notes](https://cdn.kernel.org/pub/linux/utils/cryptsetup/v2.8/v2.8.8-ReleaseNotes). [Previous versions](https://cdn.kernel.org/pub/linux/utils/cryptsetup) From dd99f3e2197a2ed9eb812db77d9ab1731789a803 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Wed, 9 Sep 2026 16:48:06 +0200 Subject: [PATCH 218/244] tests: add missing cleanup for some images. --- tests/api-test.c | 1 + tests/luks2-validation-test | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/api-test.c b/tests/api-test.c index fa30d9b19..1ead4c5ce 100644 --- a/tests/api-test.c +++ b/tests/api-test.c @@ -196,6 +196,7 @@ static void _cleanup(void) _system("rm -f " IMAGE_EMPTY, 0); _system("rm -f " IMAGE1, 0); + _system("rm -rf tcrypt-images", 0); if (test_loop_file) remove(test_loop_file); diff --git a/tests/luks2-validation-test b/tests/luks2-validation-test index 47e631fe9..bb7d5c4a0 100755 --- a/tests/luks2-validation-test +++ b/tests/luks2-validation-test @@ -27,7 +27,7 @@ FAILS=0 remove_mapping() { - rm -rf $IMG $TST_IMGS >/dev/null 2>&1 + rm -rf $ORIG_IMG $IMG $TST_IMGS >/dev/null 2>&1 } fail() From 42ef0ab97b66d08b0760d54c35dcc0b55184c752 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Wed, 22 Jul 2026 16:00:08 +0200 Subject: [PATCH 219/244] tests: unify test images decompression/unpacking in api tests. Adds dedicated helpers and also check if archive/image decompression was succesfull. If not fail the api test in setup phase. Also do not fork shell for trivial stat calls. --- tests/api-test-2.c | 15 +++++++---- tests/api-test.c | 24 +++++++++++------ tests/api_test.h | 6 +++++ tests/test_utils.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 96 insertions(+), 13 deletions(-) diff --git a/tests/api-test-2.c b/tests/api-test-2.c index a93c828eb..6bf9a41ad 100644 --- a/tests/api-test-2.c +++ b/tests/api-test-2.c @@ -353,7 +353,8 @@ static int _setup(void) if (t_set_readahead(DEVICE_ERROR, 0)) printf("cannot set read ahead on device %s\n", DEVICE_ERROR); - _system(" [ ! -e " IMAGE1 " ] && xz -dk " IMAGE1 ".xz", 1); + if (decompress_missing_xz_image(IMAGE1)) + return 1; fd = loop_attach(&DEVICE_1, IMAGE1, 0, 0, &ro); close(fd); @@ -367,20 +368,24 @@ static int _setup(void) _system("dd if=/dev/zero of=" EMPTY_HEADER " bs=4K count=1 2>/dev/null", 1); - _system(" [ ! -e " NO_REQS_LUKS2_HEADER " ] && tar xJf " REQS_LUKS2_HEADER ".tar.xz", 1); + if (untar_xz_archive_if_file_missing(REQS_LUKS2_HEADER /* .tar.xz */, NO_REQS_LUKS2_HEADER)) + return 1; fd = loop_attach(&DEVICE_4, NO_REQS_LUKS2_HEADER, 0, 0, &ro); close(fd); - _system(" [ ! -e " REQS_LUKS2_HEADER " ] && tar xJf " REQS_LUKS2_HEADER ".tar.xz", 1); + if (untar_xz_archive_if_file_missing(REQS_LUKS2_HEADER /* .tar.xz */, REQS_LUKS2_HEADER)) + return 1; fd = loop_attach(&DEVICE_5, REQS_LUKS2_HEADER, 0, 0, &ro); close(fd); - _system(" [ ! -e " IMAGE_PV_LUKS2_SEC " ] && xz -dk " IMAGE_PV_LUKS2_SEC ".xz", 1); + if (decompress_missing_xz_image(IMAGE_PV_LUKS2_SEC)) + return 1; _system(" [ ! -e " IMAGE_PV_LUKS2_SEC ".bcp ] && cp " IMAGE_PV_LUKS2_SEC " " IMAGE_PV_LUKS2_SEC ".bcp", 1); fd = loop_attach(&DEVICE_6, IMAGE_PV_LUKS2_SEC, 0, 0, &ro); close(fd); - _system(" [ ! -d " CONV_DIR " ] && tar xJf " CONV_DIR ".tar.xz 2>/dev/null", 1); + if (untar_xz_archive_if_dir_missing(CONV_DIR /* .tar.xz */, CONV_DIR)) + return 1; if (_system("modprobe dm-crypt >/dev/null 2>&1", 1)) return 1; diff --git a/tests/api-test.c b/tests/api-test.c index 1ead4c5ce..eece721b9 100644 --- a/tests/api-test.c +++ b/tests/api-test.c @@ -262,7 +262,8 @@ static int _setup(void) _system("dmsetup create " DEVICE_EMPTY_name " --table \"0 10000 zero\"", 1); _system("dmsetup create " DEVICE_ERROR_name " --table \"0 10000 error\"", 1); - _system(" [ ! -e " IMAGE1 " ] && xz -dk " IMAGE1 ".xz", 1); + if (decompress_missing_xz_image(IMAGE1)) + return 1; fd = loop_attach(&DEVICE_1, IMAGE1, 0, 0, &ro); close(fd); @@ -271,22 +272,29 @@ static int _setup(void) close(fd); /* Keymaterial offset is less than 8 sectors */ - _system(" [ ! -e " EVL_HEADER_1 " ] && xz -dk " EVL_HEADER_1 ".xz", 1); + if (decompress_missing_xz_image(EVL_HEADER_1)) + return 1; /* keymaterial offset aims into payload area */ - _system(" [ ! -e " EVL_HEADER_2 " ] && xz -dk " EVL_HEADER_2 ".xz", 1); + if (decompress_missing_xz_image(EVL_HEADER_2)) + return 1; /* keymaterial offset is valid, number of stripes causes payload area to be overwritten */ - _system(" [ ! -e " EVL_HEADER_3 " ] && xz -dk " EVL_HEADER_3 ".xz", 1); + if (decompress_missing_xz_image(EVL_HEADER_3)) + return 1; /* luks device header for data and header on same device. payloadOffset is greater than * device size (crypt_load() test) */ - _system(" [ ! -e " EVL_HEADER_4 " ] && xz -dk " EVL_HEADER_4 ".xz", 1); + if (decompress_missing_xz_image(EVL_HEADER_4)) + return 1; /* two keyslots with same offset (overlapping keyslots) */ - _system(" [ ! -e " EVL_HEADER_5 " ] && xz -dk " EVL_HEADER_5 ".xz", 1); + if (decompress_missing_xz_image(EVL_HEADER_5)) + return 1; /* valid header: payloadOffset=4096, key_size=32, * volume_key = bb21158c733229347bd4e681891e213d94c685be6a5b84818afe7a78a6de7a1a */ - _system(" [ ! -e " VALID_HEADER " ] && xz -dk " VALID_HEADER ".xz", 1); + if (decompress_missing_xz_image(VALID_HEADER)) + return 1; /* Prepare tcrypt images */ - _system("tar xJf tcrypt-images.tar.xz 2>/dev/null", 1); + if (untar_xz_archive_if_dir_missing( "tcrypt-images" /* .tar.xz */, "tcrypt-images")) + return 1; _system("modprobe dm-crypt >/dev/null 2>&1", 0); _system("modprobe dm-verity >/dev/null 2>&1", 0); diff --git a/tests/api_test.h b/tests/api_test.h index 5533e0b31..7980b0109 100644 --- a/tests/api_test.h +++ b/tests/api_test.h @@ -156,4 +156,10 @@ int dmdevice_error_io(const char *dm_name, uint64_t length, error_io_info ei); +int decompress_missing_xz_image(const char *image); + +int untar_xz_archive_if_file_missing(const char *archive, const char *file); + +int untar_xz_archive_if_dir_missing(const char *archive, const char *dir); + #endif diff --git a/tests/test_utils.c b/tests/test_utils.c index d026ddf27..5794c6934 100644 --- a/tests/test_utils.c +++ b/tests/test_utils.c @@ -981,3 +981,67 @@ int t_device_size_by_devno(dev_t devno, uint64_t *retval) *retval *= 512; return 0; } + +int decompress_missing_xz_image(const char *image) +{ + int r; + struct stat st; + char xz_image_path[PATH_MAX], cmd[PATH_MAX]; + + if (stat(image, &st) == 0 && S_ISREG(st.st_mode)) + return 0; + + r = snprintf(xz_image_path, sizeof(xz_image_path), "%s.xz", image); + if (r < 0 || (size_t)r >= sizeof(xz_image_path)) + return 1; + + if ((stat(xz_image_path, &st) != 0) || !S_ISREG(st.st_mode)) { + printf("Cannot stat %s or is not a file.\n", xz_image_path); + return 1; + } + + r = snprintf(cmd, sizeof(cmd), "xz -cd %s > %s", xz_image_path, image); + if (r < 0 || (size_t)r >= sizeof(cmd)) + return 1; + + return _system(cmd, 1); +} + +static int untar_xz_archive_if_missing(const char *archive, const char *dir_entry, bool is_file) +{ + int r; + struct stat st; + char archive_path[PATH_MAX], cmd[PATH_MAX]; + + if (stat(dir_entry, &st) == 0) { + if (is_file && S_ISREG(st.st_mode)) + return 0; + if (!is_file && S_ISDIR(st.st_mode)) + return 0; + } + + r = snprintf(archive_path, sizeof(archive_path), "%s.tar.xz", archive); + if (r < 0 || (size_t)r >= sizeof(archive_path)) + return 1; + + if ((stat(archive_path, &st) != 0) || !S_ISREG(st.st_mode)) { + printf("Cannot stat %s or is not a file.\n", archive_path); + return 1; + } + + r = snprintf(cmd, sizeof(cmd), "tar xJf %s", archive_path); + if (r < 0 || (size_t)r >= sizeof(cmd)) + return 1; + + return _system(cmd, 1); +} + +int untar_xz_archive_if_file_missing(const char *archive, const char *file) +{ + return untar_xz_archive_if_missing(archive, file, /* is_file= */ true); +} + +int untar_xz_archive_if_dir_missing(const char *archive, const char *dir) +{ + return untar_xz_archive_if_missing(archive, dir, /* is_file= */ false); +} From 964506f0d3947ce8ceb57bb95811ce5ce7f729ed Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 19 Sep 2026 10:52:21 +0200 Subject: [PATCH 220/244] tests: Do not use crypto-check for benchmark test Just try benchmark with mandatory AES-XTS cipher ans skip the test if not available. Also move test to userspace part. --- tests/compat-test | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/tests/compat-test b/tests/compat-test index 5719bd38c..023d31ef1 100755 --- a/tests/compat-test +++ b/tests/compat-test @@ -320,12 +320,8 @@ echo "[10] uuid" echo $PWD1 | $CRYPTSETUP -q luksFormat --type luks1 $FAST_PBKDF_OPT --uuid $TEST_UUID $IMG || fail $CRYPTSETUP -q luksUUID $IMG | grep -q $TEST_UUID || fail -[ $(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." -[ ! -x "$DIFFER" ] && skip "Cannot find $DIFFER, test skipped." -[ ! -x "$CRYPTOCHECK" ] && skip "Cannot find $CRYPTOCHECK, test skipped." - -$CRYPTOCHECK cipher-kernel aes xts 256 +# AES-XTS is mandatory, this checks if userspace kernel crypto works +$CRYPTSETUP benchmark -c aes-xts --key-size 256 >/dev/null 2>&1 if [ $? -eq 0 ] ; then echo "[11] benchmark" $CRYPTSETUP benchmark -c aes-xts --key-size 128 >/dev/null 2>&1 && fail @@ -335,6 +331,11 @@ if [ $? -eq 0 ] ; then $CRYPTSETUP benchmark -c capi:xts\(aes\)-plain64 >/dev/null || fail fi +[ $(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." +[ ! -x "$DIFFER" ] && skip "Cannot find $DIFFER, test skipped." +[ ! -x "$CRYPTOCHECK" ] && skip "Cannot find $CRYPTOCHECK, test skipped." + # LUKS root-tests prepare "[1] open - compat image - acceptance check" new echo $PWD0 | $CRYPTSETUP luksOpen $LOOPDEV $DEV_NAME || fail From a36071ae7c63a3fb142d9842e03f70174c518e6e Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 19 Sep 2026 10:56:50 +0200 Subject: [PATCH 221/244] tests: Remove cipher kernel option from cipher-check With the planned removal of AF_ALG interface this is becoming unreliable, just do not use it. --- tests/crypto-check.c | 26 +++----------------------- 1 file changed, 3 insertions(+), 23 deletions(-) diff --git a/tests/crypto-check.c b/tests/crypto-check.c index e3022f281..7f87faaa7 100644 --- a/tests/crypto-check.c +++ b/tests/crypto-check.c @@ -31,17 +31,6 @@ static int check_cipher(const char *alg, const char *mode, unsigned long key_bit return EXIT_SUCCESS; } -static int check_cipher_kernel(const char *alg, const char *mode, unsigned long key_bits) -{ - if (key_bits % 8) - return EXIT_FAILURE; - - if (crypt_cipher_check_kernel(alg, mode, NULL, key_bits / 8)) - return EXIT_FAILURE; - - return EXIT_SUCCESS; -} - static int check_hash(const char *hash) { struct crypt_hash *h; @@ -106,12 +95,6 @@ static int check_cipher(const char *alg, const char *mode, unsigned long key_bit return EXIT_FAILURE; } -static int check_cipher_kernel(const char *alg, const char *mode, unsigned long key_bits) -{ - /* Expect AF_ALG not available */ - return EXIT_FAILURE; -} - static int check_hash(const char *hash) { if (!strcmp(hash, "sha512") || !strcmp(hash, "sha256") || !strcmp(hash, "sha1")) @@ -128,7 +111,7 @@ static int check_pbkdf(const char *pbkdf) static void __attribute__((noreturn)) exit_help(bool destroy_backend) { - printf("Use: crypto_check version | fips_mode | fips_mode_kernel | hash | cipher[-kernel] [key_bits] | pbkdf \n"); + printf("Use: crypto_check version | fips_mode | fips_mode_kernel | hash | cipher [key_bits] | pbkdf \n"); if (destroy_backend) crypt_backend_destroy(); exit(EXIT_FAILURE); @@ -161,7 +144,7 @@ int main(int argc, char *argv[]) if (argc != 3) exit_help(true); r = check_hash(argv[2]); - } else if (!strcmp(argv[1], "cipher") || !strcmp(argv[1], "cipher-kernel")) { + } else if (!strcmp(argv[1], "cipher")) { unsigned long ul = 256; char *ptr; if (argc < 4 || argc > 5) @@ -171,10 +154,7 @@ int main(int argc, char *argv[]) if (*ptr) exit_help(true); } - if (strcmp(argv[1], "cipher-kernel")) - r = check_cipher(argv[2], argv[3], ul); - else - r = check_cipher_kernel(argv[2], argv[3], ul); + r = check_cipher(argv[2], argv[3], ul); } else if (!strcmp(argv[1], "pbkdf")) { if (argc != 3) exit_help(true); From 8df56f515527f5846e436a5b433f86fb1e801204 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sat, 19 Sep 2026 11:04:24 +0200 Subject: [PATCH 222/244] tests: Remove AF_ALG cipher vectors tests With planned AF_ALG removal these tests are unreliable, remove them. --- tests/crypto-vectors.c | 54 ------------------------------------------ 1 file changed, 54 deletions(-) diff --git a/tests/crypto-vectors.c b/tests/crypto-vectors.c index 77f54b37e..0aa1dd3d8 100644 --- a/tests/crypto-vectors.c +++ b/tests/crypto-vectors.c @@ -1607,57 +1607,6 @@ static int memcmp_test(void) return EXIT_SUCCESS; } -#if ENABLE_AF_ALG -struct capi_test_vector { - const char *name; - const char *mode; - const char *integrity; - size_t key_length; - bool fips; -}; - -static struct capi_test_vector capi_test_vectors[] = { - { "aes", "xts", NULL, 64, true }, - { "aes", "xts-plain64", NULL, 32, true }, - { "aes", "xts-plain64", NULL, 64, true }, - { "aes", "xts-plain64", "none", 64, true }, - { "aes", "gcm-random", "aead", 16, true }, - { "aes", "gcm-random", "aead", 32, true }, - { "aes", "ccm-random", "aead", 19, false }, - { "aes", "ccm-random", "aead", 35, false }, - { "chacha20", "random", "poly1305", 32, false }, - { "aegis128", "random", "aead", 16, false }, -}; -#endif - -static int kernel_capi_check_test(void) -{ -#if ENABLE_AF_ALG - unsigned int i; - int r; - - for (i = 0; i < ARRAY_SIZE(capi_test_vectors); i++) { - printf("CAPI %s/%s/%s/%zu ", capi_test_vectors[i].name, - capi_test_vectors[i].mode, - capi_test_vectors[i].integrity ?: "NULL", - capi_test_vectors[i].key_length); - - r = crypt_cipher_check_kernel(capi_test_vectors[i].name, - capi_test_vectors[i].mode, - capi_test_vectors[i].integrity, - capi_test_vectors[i].key_length); - if (!r) - printf("[OK]\n"); - else if (r == -ENOENT || r == -ENOTSUP || - (crypt_fips_mode_kernel() && !capi_test_vectors[i].fips)) - printf("[N/A]\n"); - else - return EXIT_FAILURE; - } -#endif - return EXIT_SUCCESS; -} - static void __attribute__((noreturn)) exit_test(const char *msg, int r) { if (msg) @@ -1706,9 +1655,6 @@ int main(__attribute__ ((unused)) int argc, __attribute__ ((unused))char *argv[] if (utf8_16_test()) exit_test("UTF8/16 test failed.", EXIT_FAILURE); - if (kernel_capi_check_test()) - exit_test("Kernel CAPI test failed.", EXIT_FAILURE); - if (default_alg_test()) { if (crypt_fips_mode()) printf("\nDefault compiled-in algorithms test ignored (FIPS mode on).\n"); From 3a43658590dfe8bcd55f6c16312be0f5114b780f Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sun, 20 Sep 2026 21:46:42 +0200 Subject: [PATCH 223/244] Replace crypt_cipher_check_kernel with crypt_cipher_aead_known With deprecation of AF_ALG, we cannot rely on AEAD check through it. Just add simple check for known AEAD patterns (used only in LUKS2). Activation still can fail later, but that can happen aldo if kernel config changes. --- lib/crypto_backend/cipher_generic.c | 98 +++++++++++++++++++++++++++++ lib/crypto_backend/crypto_backend.h | 1 + lib/setup.c | 10 +-- 3 files changed, 101 insertions(+), 8 deletions(-) diff --git a/lib/crypto_backend/cipher_generic.c b/lib/crypto_backend/cipher_generic.c index d20e011b4..1be97db7f 100644 --- a/lib/crypto_backend/cipher_generic.c +++ b/lib/crypto_backend/cipher_generic.c @@ -12,6 +12,10 @@ #include #include "crypto_backend.h" +#ifndef ARRAY_SIZE +# define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) +#endif + struct cipher_alg { const char *name; const char *mode; @@ -43,6 +47,50 @@ static const struct cipher_alg cipher_algs[] = { { NULL, NULL, 0, false } }; +struct cipher_aead_alg { + const char *name; + const char *mode; + const char *integrity; + size_t key_bytes; +}; + +static const struct cipher_aead_alg cipher_aead_algs[] = { + { "aes", "gcm", "aead", 16 }, + { "aes", "gcm", "aead", 24 }, + { "aes", "gcm", "aead", 32 }, + { "aes", "ccm", "aead", 16 + 3 }, // CCM used as RFC 4309, 3 bytes for fixed salt + { "aes", "ccm", "aead", 24 + 3 }, + { "aes", "ccm", "aead", 32 + 3 }, + { "serpent", "gcm", "aead", 16 }, + { "serpent", "gcm", "aead", 24 }, + { "serpent", "gcm", "aead", 32 }, + { "serpent", "ccm", "aead", 16 + 3 }, + { "serpent", "ccm", "aead", 24 + 3 }, + { "serpent", "ccm", "aead", 32 + 3 }, + { "twofish", "gcm", "aead", 16 }, + { "twofish", "gcm", "aead", 24 }, + { "twofish", "gcm", "aead", 32 }, + { "twofish", "ccm", "aead", 16 + 3 }, + { "twofish", "ccm", "aead", 24 + 3 }, + { "twofish", "ccm", "aead", 32 + 3 }, + { "aria", "gcm", "aead", 16 }, + { "aria", "gcm", "aead", 24 }, + { "aria", "gcm", "aead", 32 }, + { "aria", "ccm", "aead", 16 + 3 }, + { "aria", "ccm", "aead", 24 + 3 }, + { "aria", "ccm", "aead", 32 + 3 }, + { "camellia", "gcm", "aead", 16 }, + { "camellia", "gcm", "aead", 24 }, + { "camellia", "gcm", "aead", 32 }, + { "camellia", "ccm", "aead", 16 + 3 }, + { "camellia", "ccm", "aead", 24 + 3 }, + { "camellia", "ccm", "aead", 32 + 3 }, + { "sm4", "gcm", "aead", 16 }, + { "sm4", "ccm", "aead", 16 + 3 }, + { "aegis128", NULL, "aead", 16 }, + { "chacha20", NULL, "poly1305", 32 }, // Used as RFC 7539 +}; + static const struct cipher_alg *_get_alg(const char *name, const char *mode) { int i = 0; @@ -57,6 +105,56 @@ static const struct cipher_alg *_get_alg(const char *name, const char *mode) return NULL; } +static bool aead_iv_known(const char *iv) +{ + if (!iv) + return false; + + if (!strcasecmp(iv, "random")) + return true; + + /* These are not secure for AEAD, but sometimes used */ + if (!strcasecmp(iv, "plain64") || !strcasecmp(iv, "plain64be")) + return true; + + return false; +} + +bool crypt_cipher_aead_known(const char *name, const char *mode, const char *integrity, size_t key_bytes) +{ + size_t i, mode_len; + + if (!name || !mode || !integrity) + return false; + + for (i = 0; i < ARRAY_SIZE(cipher_aead_algs); i++) { + if (strcasecmp(name, cipher_aead_algs[i].name)) + continue; + + if (strcasecmp(integrity, cipher_aead_algs[i].integrity)) + continue; + + /* Compare only mode for ciphers that use a mode */ + if (cipher_aead_algs[i].mode) { + mode_len = strlen(cipher_aead_algs[i].mode); + if (strncasecmp(mode, cipher_aead_algs[i].mode, mode_len)) + continue; + if (mode[mode_len] != '-') + continue; + if (!aead_iv_known(&mode[mode_len + 1])) + continue; + } else if (!aead_iv_known(mode)) /* no mode, only IV */ + continue; + + if (key_bytes != cipher_aead_algs[i].key_bytes) + continue; + + return true; + } + + return false; +} + int crypt_cipher_ivsize(const char *name, const char *mode) { const struct cipher_alg *ca = _get_alg(name, mode); diff --git a/lib/crypto_backend/crypto_backend.h b/lib/crypto_backend/crypto_backend.h index 5e25bb09c..4ceb270fb 100644 --- a/lib/crypto_backend/crypto_backend.h +++ b/lib/crypto_backend/crypto_backend.h @@ -108,6 +108,7 @@ int crypt_cipher_decrypt(struct crypt_cipher *ctx, const char *in, char *out, size_t length, const char *iv, size_t iv_length); bool crypt_cipher_kernel_only(struct crypt_cipher *ctx); +bool crypt_cipher_aead_known(const char *name, const char *mode, const char *integrity, size_t key_bytes); /* Benchmark of kernel cipher performance */ int crypt_cipher_perf_kernel(const char *name, const char *mode, char *buffer, size_t buffer_size, diff --git a/lib/setup.c b/lib/setup.c index 425cfd4d7..fe7fbb964 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -1897,16 +1897,10 @@ static int LUKS2_check_encryption_params(struct crypt_device *cd, log_err(cd, _("Integrity key size is too small.")); return -EINVAL; } - } - /* FIXME: allow this later also for normal ciphers (check AF_ALG availability. */ - if (integrity && integrity_key_size == 0) { - r = crypt_cipher_check_kernel(cipher, cipher_mode, integrity, volume_key_size); - if (r < 0 && r != -ENOTSUP) { - log_err(cd, _("Cipher %s-%s (key size %zd bits) is not available."), + if (integrity && integrity_key_size == 0 && !crypt_cipher_aead_known(cipher, cipher_mode, integrity, volume_key_size)) + log_err(cd, _("Cipher %s-%s (key size %zd bits) is not recognized as a known authenticated cipher, activation could fail."), cipher, cipher_mode, volume_key_size * 8); - return r; - } } if ((!integrity || integrity_key_size) && !crypt_cipher_wrapped_key(cipher, cipher_mode) && From 4030da727e8323297b4ed1172138494d4926f905 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Sun, 20 Sep 2026 21:51:09 +0200 Subject: [PATCH 224/244] Remove crypt_cipher_check_kernel --- lib/crypto_backend/crypto_backend.h | 4 -- lib/crypto_backend/crypto_cipher_kernel.c | 76 ----------------------- 2 files changed, 80 deletions(-) diff --git a/lib/crypto_backend/crypto_backend.h b/lib/crypto_backend/crypto_backend.h index 4ceb270fb..f1776e6b7 100644 --- a/lib/crypto_backend/crypto_backend.h +++ b/lib/crypto_backend/crypto_backend.h @@ -115,10 +115,6 @@ int crypt_cipher_perf_kernel(const char *name, const char *mode, char *buffer, s const char *key, size_t key_size, const char *iv, size_t iv_size, double *encryption_mbs, double *decryption_mbs); -/* Check availability of a cipher (in kernel only) */ -int crypt_cipher_check_kernel(const char *name, const char *mode, - const char *integrity, size_t key_length); - /* Storage encryption wrappers */ int crypt_storage_init(struct crypt_storage **ctx, size_t sector_size, const char *cipher, const char *cipher_mode, diff --git a/lib/crypto_backend/crypto_cipher_kernel.c b/lib/crypto_backend/crypto_cipher_kernel.c index fed4ae86d..fabfc86a2 100644 --- a/lib/crypto_backend/crypto_cipher_kernel.c +++ b/lib/crypto_backend/crypto_cipher_kernel.c @@ -221,77 +221,6 @@ void crypt_cipher_destroy_kernel(struct crypt_cipher_kernel *ctx) ctx->opfd = -1; } -int crypt_cipher_check_kernel(const char *name, const char *mode, - const char *integrity, size_t key_length) -{ - struct crypt_cipher_kernel c; - char mode_name[64], tmp_salg_name[180], *cipher_iv = NULL, *key; - const char *salg_type, *real_mode; - bool aead; - int r; - struct sockaddr_alg sa = { - .salg_family = AF_ALG, - }; - - aead = integrity && strcmp(integrity, "none"); - real_mode = NULL; - - /* Remove IV if present */ - if (mode) { - strncpy(mode_name, mode, sizeof(mode_name)); - mode_name[sizeof(mode_name) - 1] = 0; - cipher_iv = strchr(mode_name, '-'); - if (cipher_iv) { - *cipher_iv = '\0'; - real_mode = mode_name; - } - } - - salg_type = aead ? "aead" : "skcipher"; - r = snprintf((char *)sa.salg_type, sizeof(sa.salg_type), "%s", salg_type); - if (r < 0 || (size_t)r >= sizeof(sa.salg_type)) - return -EINVAL; - - memset(tmp_salg_name, 0, sizeof(tmp_salg_name)); - - /* FIXME: this is duplicating a part of devmapper backend */ - if (aead) { - /* In AEAD, mode parameter can be just IV like "random" */ - if (!strcmp(integrity, "poly1305")) - r = snprintf(tmp_salg_name, sizeof(tmp_salg_name), "rfc7539(%s,%s)", name, integrity); - else if (!real_mode) - r = snprintf(tmp_salg_name, sizeof(tmp_salg_name), "%s", name); - else if (!strcmp(real_mode, "ccm")) - r = snprintf(tmp_salg_name, sizeof(tmp_salg_name), "rfc4309(%s(%s))", real_mode, name); - else - r = snprintf(tmp_salg_name, sizeof(tmp_salg_name), "%s(%s)", real_mode, name); - } else { - if (!mode) - r = snprintf(tmp_salg_name, sizeof(tmp_salg_name), "%s", name); - else - r = snprintf(tmp_salg_name, sizeof(tmp_salg_name), "%s(%s)", real_mode ?: mode_name, name); - } - - if (r < 0 || (size_t)r >= sizeof(tmp_salg_name)) - return -EINVAL; - - memcpy(sa.salg_name, tmp_salg_name, sizeof(sa.salg_name)); - - key = malloc(key_length); - if (!key) - return -ENOMEM; - - /* We cannot use RNG yet, any key works here, tweak the first part if it is split key (XTS). */ - memset(key, 0xab, key_length); - *key = 0xef; - - r = _crypt_cipher_init(&c, key, key_length, 0, &sa); - crypt_cipher_destroy_kernel(&c); - free(key); - - return r; -} - int crypt_bitlk_decrypt_key_kernel(const void *key, size_t key_length, const char *in, char *out, size_t length, const char *iv, size_t iv_length, @@ -361,11 +290,6 @@ int crypt_cipher_decrypt_kernel(struct crypt_cipher_kernel *ctx, { return -EINVAL; } -int crypt_cipher_check_kernel(const char *name, const char *mode, - const char *integrity, size_t key_length) -{ - return -ENOTSUP; -} int crypt_bitlk_decrypt_key_kernel(const void *key, size_t key_length, const char *in, char *out, size_t length, const char *iv, size_t iv_length, From 6d0775a799219ea85572dbee04a97cf61cca9b3f Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Wed, 26 Aug 2026 17:59:04 +0200 Subject: [PATCH 225/244] Initialize dm backend only once. The libcryptsetup may initialize and free libdm context repeatadly provided the application works with at most one crypt device context at a time. This is not optimal and it should be enough to initialize it only once and have it freed during libcryptsetup destructor. --- lib/libdevmapper.c | 16 +++++++++------- lib/setup.c | 10 +++------- lib/utils_dm.h | 4 ++-- 3 files changed, 14 insertions(+), 16 deletions(-) diff --git a/lib/libdevmapper.c b/lib/libdevmapper.c index 03c9e5f0e..e63377e84 100644 --- a/lib/libdevmapper.c +++ b/lib/libdevmapper.c @@ -39,7 +39,7 @@ static int _quiet_log = 0; static uint64_t _dm_flags = 0; static struct crypt_device *_context = NULL; -static int _dm_use_count = 0; +static bool dm_backend_initialized = false; /* Check if we have DM flag to instruct kernel to force wipe buffers */ #if !HAVE_DECL_DM_TASK_SECURE_DATA @@ -394,22 +394,24 @@ int dm_flags(struct crypt_device *cd, dm_target_type target, uint64_t *flags) } /* This doesn't run any kernel checks, just set up userspace libdevmapper */ -void dm_backend_init(struct crypt_device *cd) +void dm_backend_init(void) { - if (!_dm_use_count++) { - log_dbg(cd, "Initialising device-mapper backend library."); + if (!dm_backend_initialized) { + log_dbg(NULL, "Initialising device-mapper backend library."); dm_log_init(set_dm_error); dm_log_init_verbose(10); + dm_backend_initialized = true; } } -void dm_backend_exit(struct crypt_device *cd) +void dm_backend_exit(void) { - if (_dm_use_count && (!--_dm_use_count)) { - log_dbg(cd, "Releasing device-mapper backend."); + if (dm_backend_initialized) { + log_dbg(NULL, "Releasing device-mapper backend."); dm_log_init_verbose(0); dm_log_init(NULL); dm_lib_release(); + dm_backend_initialized = false; } } diff --git a/lib/setup.c b/lib/setup.c index fe7fbb964..0316ef9f4 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -611,7 +611,7 @@ int crypt_init(struct crypt_device **cd, const char *device) return r; } - dm_backend_init(NULL); + dm_backend_init(); h->rng_type = crypt_random_default_key_rng(); @@ -4170,7 +4170,6 @@ void crypt_free(struct crypt_device *cd) log_dbg(cd, "Releasing crypt device %s context.", mdata_device_path(cd) ?: "empty"); - dm_backend_exit(cd); crypt_free_volume_key(cd->volume_key); if (cd->keyring_description) { @@ -6214,14 +6213,10 @@ crypt_status_info crypt_status(struct crypt_device *cd, const char *name) if (!name) return CRYPT_INVALID; - if (!cd) - dm_backend_init(cd); + dm_backend_init(); r = dm_status_device(cd, name); - if (!cd) - dm_backend_exit(cd); - if (r < 0 && r != -ENODEV) return CRYPT_INVALID; @@ -8015,4 +8010,5 @@ static void __attribute__((destructor)) libcryptsetup_exit(void) crypt_backend_destroy(); crypt_random_exit(); + dm_backend_exit(); } diff --git a/lib/utils_dm.h b/lib/utils_dm.h index 3e9a812c7..1381faa37 100644 --- a/lib/utils_dm.h +++ b/lib/utils_dm.h @@ -176,8 +176,8 @@ static inline bool single_segment(const struct crypt_dm_active_device *dmd) return dmd && !dmd->segment.next; } -void dm_backend_init(struct crypt_device *cd); -void dm_backend_exit(struct crypt_device *cd); +void dm_backend_init(void); +void dm_backend_exit(void); int dm_targets_allocate(struct dm_target *first, unsigned count); void dm_targets_free(struct crypt_device *cd, struct crypt_dm_active_device *dmd); From b6c6e8387b5b37fbb94d3e49c97140fef3b5b512 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Wed, 9 Sep 2026 17:15:39 +0200 Subject: [PATCH 226/244] Remove debug message for device-mapper backend release. The backend is now initialized at most once and eventually freed in libcryptsetup destructor. --- lib/libdevmapper.c | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/libdevmapper.c b/lib/libdevmapper.c index e63377e84..5e6703822 100644 --- a/lib/libdevmapper.c +++ b/lib/libdevmapper.c @@ -407,7 +407,6 @@ void dm_backend_init(void) void dm_backend_exit(void) { if (dm_backend_initialized) { - log_dbg(NULL, "Releasing device-mapper backend."); dm_log_init_verbose(0); dm_log_init(NULL); dm_lib_release(); From 37c861d0969dd1402e76253fa87c5200fe06d9c8 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Thu, 3 Sep 2026 13:55:06 +0200 Subject: [PATCH 227/244] Add crypt context to dm_cancel_deferred_removal --- lib/libdevmapper.c | 2 +- lib/setup.c | 2 +- lib/utils_dm.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/libdevmapper.c b/lib/libdevmapper.c index 5e6703822..438ccb57e 100644 --- a/lib/libdevmapper.c +++ b/lib/libdevmapper.c @@ -3216,7 +3216,7 @@ int dm_resume_and_reinstate_key(struct crypt_device *cd, const char *name, return r; } -int dm_cancel_deferred_removal(const char *name) +int dm_cancel_deferred_removal(struct crypt_device *cd __attribute__((unused)), const char *name) { return _dm_message(name, "@cancel_deferred_remove") ? 0 : -ENOTSUP; } diff --git a/lib/setup.c b/lib/setup.c index 0316ef9f4..cfa600471 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -5885,7 +5885,7 @@ int crypt_deactivate_by_name(struct crypt_device *cd, const char *name, uint32_t } if (flags & CRYPT_DEACTIVATE_DEFERRED_CANCEL) { - r = dm_cancel_deferred_removal(name); + r = dm_cancel_deferred_removal(cd, name); if (r < 0) log_err(cd, _("Could not cancel deferred remove from device %s."), name); break; diff --git a/lib/utils_dm.h b/lib/utils_dm.h index 1381faa37..ab9420e33 100644 --- a/lib/utils_dm.h +++ b/lib/utils_dm.h @@ -222,7 +222,7 @@ int dm_resume_and_reinstate_key(struct crypt_device *cd, const char *name, const struct volume_key *vk); int dm_error_device(struct crypt_device *cd, const char *name); int dm_clear_device(struct crypt_device *cd, const char *name); -int dm_cancel_deferred_removal(const char *name); +int dm_cancel_deferred_removal(struct crypt_device *cd, const char *name); const char *dm_get_dir(void); int dm_get_iname(const char *name, char **iname, bool with_path); From a252704c3fc80facbe5b1fa0453c614cb36d4efd Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Thu, 3 Sep 2026 13:30:02 +0200 Subject: [PATCH 228/244] libdevmapper: use dm_init_context and dm_exit_context consistently. Use it in every libdevmapper function available to libcryptsetup, if the function enter the actual device-mapper library. This patch makes the use consistent because otherwise, some calls like dm_cancel_deferred_removal, works only because the dm context is initialized earlier. --- lib/libdevmapper.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/lib/libdevmapper.c b/lib/libdevmapper.c index 438ccb57e..03d9ed661 100644 --- a/lib/libdevmapper.c +++ b/lib/libdevmapper.c @@ -442,23 +442,29 @@ char *dm_device_path(const char *prefix, int major, int minor) const char *name; char path[PATH_MAX]; - if (!(dmt = dm_task_create(DM_DEVICE_STATUS))) + if (dm_init_context(NULL, DM_UNKNOWN)) return NULL; + + if (!(dmt = dm_task_create(DM_DEVICE_STATUS))) + goto err; if (!dm_task_set_minor(dmt, minor) || !dm_task_set_major(dmt, major) || !dm_task_no_flush(dmt) || !dm_task_run(dmt) || !(name = dm_task_get_name(dmt))) { dm_task_destroy(dmt); - return NULL; + goto err; } if (snprintf(path, sizeof(path), "%s%s", prefix ?: "", name) < 0) path[0] = '\0'; dm_task_destroy(dmt); - + dm_exit_context(); return strdup(path); +err: + dm_exit_context(); + return NULL; } char *dm_device_name(const char *path) @@ -3216,9 +3222,18 @@ int dm_resume_and_reinstate_key(struct crypt_device *cd, const char *name, return r; } -int dm_cancel_deferred_removal(struct crypt_device *cd __attribute__((unused)), const char *name) +int dm_cancel_deferred_removal(struct crypt_device *cd, const char *name) { - return _dm_message(name, "@cancel_deferred_remove") ? 0 : -ENOTSUP; + int r; + + if (dm_init_context(cd, DM_UNKNOWN)) + return -ENOTSUP; + + r = _dm_message(name, "@cancel_deferred_remove") ? 0 : -ENOTSUP; + + dm_exit_context(); + + return r; } const char *dm_get_dir(void) From 43497234b74c07af75dbd6be2589f7cf98bf7ba2 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Thu, 3 Sep 2026 13:34:17 +0200 Subject: [PATCH 229/244] libdevmapper: move the dm_backend_init in dm_init_context call. We do not have to initialize dm backend unless we enter the device-mapper library. Remove it from crypt_init call that does not need device-mapper unconditionally. --- lib/libdevmapper.c | 3 ++- lib/setup.c | 4 ---- lib/utils_dm.h | 1 - 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/lib/libdevmapper.c b/lib/libdevmapper.c index 03d9ed661..de4802958 100644 --- a/lib/libdevmapper.c +++ b/lib/libdevmapper.c @@ -394,7 +394,7 @@ int dm_flags(struct crypt_device *cd, dm_target_type target, uint64_t *flags) } /* This doesn't run any kernel checks, just set up userspace libdevmapper */ -void dm_backend_init(void) +static void dm_backend_init(void) { if (!dm_backend_initialized) { log_dbg(NULL, "Initialising device-mapper backend library."); @@ -417,6 +417,7 @@ void dm_backend_exit(void) /* libdevmapper is not context friendly, switch context on every DM call. */ static int dm_init_context(struct crypt_device *cd, dm_target_type target) { + dm_backend_init(); _context = cd; if (!_dm_check_versions(cd, target)) { if (getuid() || geteuid()) diff --git a/lib/setup.c b/lib/setup.c index cfa600471..9e9f3fc63 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -611,8 +611,6 @@ int crypt_init(struct crypt_device **cd, const char *device) return r; } - dm_backend_init(); - h->rng_type = crypt_random_default_key_rng(); *cd = h; @@ -6213,8 +6211,6 @@ crypt_status_info crypt_status(struct crypt_device *cd, const char *name) if (!name) return CRYPT_INVALID; - dm_backend_init(); - r = dm_status_device(cd, name); if (r < 0 && r != -ENODEV) diff --git a/lib/utils_dm.h b/lib/utils_dm.h index ab9420e33..eee31a780 100644 --- a/lib/utils_dm.h +++ b/lib/utils_dm.h @@ -176,7 +176,6 @@ static inline bool single_segment(const struct crypt_dm_active_device *dmd) return dmd && !dmd->segment.next; } -void dm_backend_init(void); void dm_backend_exit(void); int dm_targets_allocate(struct dm_target *first, unsigned count); From ca4cc7a44e5794d8ad412f6d4f8463a81fe16d4a Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Thu, 3 Sep 2026 13:47:20 +0200 Subject: [PATCH 230/244] libdevmapper: remove dm_exit_context as redundant. There's no need to reset internal _context variable when it gets overwritten every time on dm_context_init. --- lib/libdevmapper.c | 52 +++++----------------------------------------- 1 file changed, 5 insertions(+), 47 deletions(-) diff --git a/lib/libdevmapper.c b/lib/libdevmapper.c index de4802958..b2da33155 100644 --- a/lib/libdevmapper.c +++ b/lib/libdevmapper.c @@ -431,10 +431,6 @@ static int dm_init_context(struct crypt_device *cd, dm_target_type target) } return 0; } -static void dm_exit_context(void) -{ - _context = NULL; -} /* Return path to DM device */ char *dm_device_path(const char *prefix, int major, int minor) @@ -447,25 +443,21 @@ char *dm_device_path(const char *prefix, int major, int minor) return NULL; if (!(dmt = dm_task_create(DM_DEVICE_STATUS))) - goto err; + return NULL; if (!dm_task_set_minor(dmt, minor) || !dm_task_set_major(dmt, major) || !dm_task_no_flush(dmt) || !dm_task_run(dmt) || !(name = dm_task_get_name(dmt))) { dm_task_destroy(dmt); - goto err; + return NULL; } if (snprintf(path, sizeof(path), "%s%s", prefix ?: "", name) < 0) path[0] = '\0'; dm_task_destroy(dmt); - dm_exit_context(); return strdup(path); -err: - dm_exit_context(); - return NULL; } char *dm_device_name(const char *path) @@ -1093,8 +1085,6 @@ int dm_error_device(struct crypt_device *cd, const char *name) dm_targets_free(cd, &dmd); - dm_exit_context(); - return r; } @@ -1113,8 +1103,6 @@ int dm_clear_device(struct crypt_device *cd, const char *name) else r = -EINVAL; - dm_exit_context(); - return r; } @@ -1135,7 +1123,6 @@ int dm_remove_device(struct crypt_device *cd, const char *name, uint32_t flags) if (deferred && !dm_flags(cd, DM_UNKNOWN, &dmt_flags) && !(dmt_flags & DM_DEFERRED_SUPPORTED)) { log_err(cd, _("Requested deferred flag is not supported.")); - dm_exit_context(); return -ENOTSUP; } @@ -1161,7 +1148,6 @@ int dm_remove_device(struct crypt_device *cd, const char *name, uint32_t flags) } while (r == -EINVAL && retries); dm_task_update_nodes(); - dm_exit_context(); return r; } @@ -1835,7 +1821,6 @@ int dm_create_device(struct crypt_device *cd, const char *name, crypt_is_cipher_null(dmd->segment.u.crypt.cipher)) log_dbg(cd, "Activated dm-crypt device with cipher_null. Device is not encrypted."); - dm_exit_context(); return r; } @@ -1874,7 +1859,6 @@ int dm_reload_device(struct crypt_device *cd, const char *name, if (!r && resume) r = _dm_resume_device(name, dmflags | act2dmflags(dmd->flags)); - dm_exit_context(); return r; } @@ -1950,7 +1934,6 @@ int dm_status_device(struct crypt_device *cd, const char *name) if (dm_init_context(cd, DM_UNKNOWN)) return -ENOTSUP; r = dm_status_dmi(name, &dmi, NULL, NULL); - dm_exit_context(); if (r < 0) return r; @@ -1966,7 +1949,6 @@ int dm_status_suspended(struct crypt_device *cd, const char *name) if (dm_init_context(cd, DM_UNKNOWN)) return -ENOTSUP; r = dm_status_dmi(name, &dmi, NULL, NULL); - dm_exit_context(); if (r < 0 && r != -EEXIST) return r; @@ -2000,7 +1982,6 @@ int dm_status_verity_ok(struct crypt_device *cd, const char *name) if (dm_init_context(cd, DM_VERITY)) return -ENOTSUP; r = _dm_status_verity_ok(cd, name); - dm_exit_context(); return r; } @@ -2015,7 +1996,6 @@ int dm_status_verity_repaired(struct crypt_device *cd, const char *name, uint64_ return -ENOTSUP; r = dm_status_dmi(name, &dmi, DM_VERITY_TARGET, &status_line); - dm_exit_context(); if (r < 0 || !status_line || !*status_line) { free(status_line); return r; @@ -2050,14 +2030,12 @@ int dm_status_integrity_failures(struct crypt_device *cd, const char *name, uint r = dm_status_dmi(name, &dmi, DM_INTEGRITY_TARGET, &status_line); if (r < 0 || !status_line) { free(status_line); - dm_exit_context(); return r; } log_dbg(cd, "Integrity volume %s failure status is %s.", name, status_line ?: ""); *count = strtoull(status_line, NULL, 10); free(status_line); - dm_exit_context(); return 0; } @@ -2965,8 +2943,6 @@ static int _dm_query_device(struct crypt_device *cd, const char *name, int dm_query_device(struct crypt_device *cd, const char *name, uint64_t get_flags, struct crypt_dm_active_device *dmd) { - int r; - if (!dmd) return -EINVAL; @@ -2975,10 +2951,7 @@ int dm_query_device(struct crypt_device *cd, const char *name, if (dm_init_context(cd, DM_UNKNOWN)) return -ENOTSUP; - r = _dm_query_device(cd, name, get_flags, dmd); - - dm_exit_context(); - return r; + return _dm_query_device(cd, name, get_flags, dmd); } static int _process_deps(struct crypt_device *cd, const char *prefix, struct dm_deps *deps, @@ -3085,7 +3058,6 @@ int dm_device_deps(struct crypt_device *cd, const char *name, const char *prefix if (dmt) dm_task_destroy(dmt); - dm_exit_context(); return r; } @@ -3145,22 +3117,15 @@ int dm_suspend_device(struct crypt_device *cd, const char *name, uint64_t dmflag r = 0; out: - dm_exit_context(); return r; } int dm_resume_device(struct crypt_device *cd, const char *name, uint64_t dmflags) { - int r; - if (dm_init_context(cd, DM_UNKNOWN)) return -ENOTSUP; - r = _dm_resume_device(name, dmflags); - - dm_exit_context(); - - return r; + return _dm_resume_device(name, dmflags); } int dm_resume_and_reinstate_key(struct crypt_device *cd, const char *name, @@ -3219,22 +3184,15 @@ int dm_resume_and_reinstate_key(struct crypt_device *cd, const char *name, out: crypt_safe_free(msg); crypt_safe_free(key); - dm_exit_context(); return r; } int dm_cancel_deferred_removal(struct crypt_device *cd, const char *name) { - int r; - if (dm_init_context(cd, DM_UNKNOWN)) return -ENOTSUP; - r = _dm_message(name, "@cancel_deferred_remove") ? 0 : -ENOTSUP; - - dm_exit_context(); - - return r; + return _dm_message(name, "@cancel_deferred_remove") ? 0 : -ENOTSUP; } const char *dm_get_dir(void) From 23194dd596b0c08a2e315dd95b004cb1e4bc8dc9 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Fri, 2 Oct 2026 12:08:21 +0200 Subject: [PATCH 231/244] Revert "libdevmapper: remove dm_exit_context as redundant." This reverts commit ca4cc7a44e5794d8ad412f6d4f8463a81fe16d4a. If the application uses libdm on its own (not only via libcryptsetup) we have to unset global _context otherwise any libdm logging initiated not from libcryptsetup would risk to access invalid pointer stored in _context. --- lib/libdevmapper.c | 52 +++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 47 insertions(+), 5 deletions(-) diff --git a/lib/libdevmapper.c b/lib/libdevmapper.c index b2da33155..de4802958 100644 --- a/lib/libdevmapper.c +++ b/lib/libdevmapper.c @@ -431,6 +431,10 @@ static int dm_init_context(struct crypt_device *cd, dm_target_type target) } return 0; } +static void dm_exit_context(void) +{ + _context = NULL; +} /* Return path to DM device */ char *dm_device_path(const char *prefix, int major, int minor) @@ -443,21 +447,25 @@ char *dm_device_path(const char *prefix, int major, int minor) return NULL; if (!(dmt = dm_task_create(DM_DEVICE_STATUS))) - return NULL; + goto err; if (!dm_task_set_minor(dmt, minor) || !dm_task_set_major(dmt, major) || !dm_task_no_flush(dmt) || !dm_task_run(dmt) || !(name = dm_task_get_name(dmt))) { dm_task_destroy(dmt); - return NULL; + goto err; } if (snprintf(path, sizeof(path), "%s%s", prefix ?: "", name) < 0) path[0] = '\0'; dm_task_destroy(dmt); + dm_exit_context(); return strdup(path); +err: + dm_exit_context(); + return NULL; } char *dm_device_name(const char *path) @@ -1085,6 +1093,8 @@ int dm_error_device(struct crypt_device *cd, const char *name) dm_targets_free(cd, &dmd); + dm_exit_context(); + return r; } @@ -1103,6 +1113,8 @@ int dm_clear_device(struct crypt_device *cd, const char *name) else r = -EINVAL; + dm_exit_context(); + return r; } @@ -1123,6 +1135,7 @@ int dm_remove_device(struct crypt_device *cd, const char *name, uint32_t flags) if (deferred && !dm_flags(cd, DM_UNKNOWN, &dmt_flags) && !(dmt_flags & DM_DEFERRED_SUPPORTED)) { log_err(cd, _("Requested deferred flag is not supported.")); + dm_exit_context(); return -ENOTSUP; } @@ -1148,6 +1161,7 @@ int dm_remove_device(struct crypt_device *cd, const char *name, uint32_t flags) } while (r == -EINVAL && retries); dm_task_update_nodes(); + dm_exit_context(); return r; } @@ -1821,6 +1835,7 @@ int dm_create_device(struct crypt_device *cd, const char *name, crypt_is_cipher_null(dmd->segment.u.crypt.cipher)) log_dbg(cd, "Activated dm-crypt device with cipher_null. Device is not encrypted."); + dm_exit_context(); return r; } @@ -1859,6 +1874,7 @@ int dm_reload_device(struct crypt_device *cd, const char *name, if (!r && resume) r = _dm_resume_device(name, dmflags | act2dmflags(dmd->flags)); + dm_exit_context(); return r; } @@ -1934,6 +1950,7 @@ int dm_status_device(struct crypt_device *cd, const char *name) if (dm_init_context(cd, DM_UNKNOWN)) return -ENOTSUP; r = dm_status_dmi(name, &dmi, NULL, NULL); + dm_exit_context(); if (r < 0) return r; @@ -1949,6 +1966,7 @@ int dm_status_suspended(struct crypt_device *cd, const char *name) if (dm_init_context(cd, DM_UNKNOWN)) return -ENOTSUP; r = dm_status_dmi(name, &dmi, NULL, NULL); + dm_exit_context(); if (r < 0 && r != -EEXIST) return r; @@ -1982,6 +2000,7 @@ int dm_status_verity_ok(struct crypt_device *cd, const char *name) if (dm_init_context(cd, DM_VERITY)) return -ENOTSUP; r = _dm_status_verity_ok(cd, name); + dm_exit_context(); return r; } @@ -1996,6 +2015,7 @@ int dm_status_verity_repaired(struct crypt_device *cd, const char *name, uint64_ return -ENOTSUP; r = dm_status_dmi(name, &dmi, DM_VERITY_TARGET, &status_line); + dm_exit_context(); if (r < 0 || !status_line || !*status_line) { free(status_line); return r; @@ -2030,12 +2050,14 @@ int dm_status_integrity_failures(struct crypt_device *cd, const char *name, uint r = dm_status_dmi(name, &dmi, DM_INTEGRITY_TARGET, &status_line); if (r < 0 || !status_line) { free(status_line); + dm_exit_context(); return r; } log_dbg(cd, "Integrity volume %s failure status is %s.", name, status_line ?: ""); *count = strtoull(status_line, NULL, 10); free(status_line); + dm_exit_context(); return 0; } @@ -2943,6 +2965,8 @@ static int _dm_query_device(struct crypt_device *cd, const char *name, int dm_query_device(struct crypt_device *cd, const char *name, uint64_t get_flags, struct crypt_dm_active_device *dmd) { + int r; + if (!dmd) return -EINVAL; @@ -2951,7 +2975,10 @@ int dm_query_device(struct crypt_device *cd, const char *name, if (dm_init_context(cd, DM_UNKNOWN)) return -ENOTSUP; - return _dm_query_device(cd, name, get_flags, dmd); + r = _dm_query_device(cd, name, get_flags, dmd); + + dm_exit_context(); + return r; } static int _process_deps(struct crypt_device *cd, const char *prefix, struct dm_deps *deps, @@ -3058,6 +3085,7 @@ int dm_device_deps(struct crypt_device *cd, const char *name, const char *prefix if (dmt) dm_task_destroy(dmt); + dm_exit_context(); return r; } @@ -3117,15 +3145,22 @@ int dm_suspend_device(struct crypt_device *cd, const char *name, uint64_t dmflag r = 0; out: + dm_exit_context(); return r; } int dm_resume_device(struct crypt_device *cd, const char *name, uint64_t dmflags) { + int r; + if (dm_init_context(cd, DM_UNKNOWN)) return -ENOTSUP; - return _dm_resume_device(name, dmflags); + r = _dm_resume_device(name, dmflags); + + dm_exit_context(); + + return r; } int dm_resume_and_reinstate_key(struct crypt_device *cd, const char *name, @@ -3184,15 +3219,22 @@ int dm_resume_and_reinstate_key(struct crypt_device *cd, const char *name, out: crypt_safe_free(msg); crypt_safe_free(key); + dm_exit_context(); return r; } int dm_cancel_deferred_removal(struct crypt_device *cd, const char *name) { + int r; + if (dm_init_context(cd, DM_UNKNOWN)) return -ENOTSUP; - return _dm_message(name, "@cancel_deferred_remove") ? 0 : -ENOTSUP; + r = _dm_message(name, "@cancel_deferred_remove") ? 0 : -ENOTSUP; + + dm_exit_context(); + + return r; } const char *dm_get_dir(void) From 85f32cb8e93468963b09e5e06bf1353896db2607 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Fri, 2 Oct 2026 13:23:29 +0200 Subject: [PATCH 232/244] Do not set libdm custom log callback if already set. device-mapper does not support context. Recent changes in libdm caused that repeated call in dm_log_init issued warnings. With current patch libcryptsetup will not set log callback via dm_log_init if the function was already rerouted by different caller outside libcryptsetup. If the libdm was initialized by libcryptsetup we will reset the log callback on every enter in device mapper backend. --- lib/libdevmapper.c | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/lib/libdevmapper.c b/lib/libdevmapper.c index de4802958..c2c247357 100644 --- a/lib/libdevmapper.c +++ b/lib/libdevmapper.c @@ -40,6 +40,7 @@ static uint64_t _dm_flags = 0; static struct crypt_device *_context = NULL; static bool dm_backend_initialized = false; +static bool dm_backend_initialized_by_crypt = false; /* Check if we have DM flag to instruct kernel to force wipe buffers */ #if !HAVE_DECL_DM_TASK_SECURE_DATA @@ -393,24 +394,39 @@ int dm_flags(struct crypt_device *cd, dm_target_type target, uint64_t *flags) return -ENODEV; } +static void dm_backend_set_log_callback(void) +{ + dm_log_init(set_dm_error); + dm_log_init_verbose(10); +} + /* This doesn't run any kernel checks, just set up userspace libdevmapper */ static void dm_backend_init(void) { if (!dm_backend_initialized) { - log_dbg(NULL, "Initialising device-mapper backend library."); - dm_log_init(set_dm_error); - dm_log_init_verbose(10); + /* If someone initialized libdm log callback already, do not touch it. */ + if (dm_log_is_non_default()) + log_dbg(NULL, "device-mapper backend library already initialized."); + else { + log_dbg(NULL, "Initialising device-mapper backend library."); + dm_backend_set_log_callback(); + dm_backend_initialized_by_crypt = true; + } + dm_backend_initialized = true; - } + } else if (dm_backend_initialized_by_crypt) + /* If we initialized libdm, reset log functions on every call. */ + dm_backend_set_log_callback(); } void dm_backend_exit(void) { - if (dm_backend_initialized) { + /* Release dm backend only if it was initialized by libcryptsetup */ + if (dm_backend_initialized_by_crypt) { dm_log_init_verbose(0); dm_log_init(NULL); dm_lib_release(); - dm_backend_initialized = false; + dm_backend_initialized_by_crypt = false; } } From 78123bf91cea4d0840db2397733843bb0abd3bea Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Thu, 1 Oct 2026 14:25:40 +0200 Subject: [PATCH 233/244] Add crypt_get_hw_opal_enabled API. It allows application to detect if the OPAL2 device was properly enabled for OPAL2 locking. Most notably the device was initialized and Admin PIN was already set. --- lib/libcryptsetup.h | 12 ++++++++++++ lib/libcryptsetup.sym | 1 + lib/luks2/hw_opal/hw_opal.c | 22 ++++++++++++++++++++++ 3 files changed, 35 insertions(+) diff --git a/lib/libcryptsetup.h b/lib/libcryptsetup.h index 365434cab..e9cb918b7 100644 --- a/lib/libcryptsetup.h +++ b/lib/libcryptsetup.h @@ -2014,6 +2014,18 @@ typedef enum { */ crypt_status_hw_encryption_info crypt_status_hw_encryption(struct crypt_device *cd); +/** + * Get info about OPAL2 device state. + * + * @param cd crypt device handle + * + * @return Zero for valid OPAL2 device with locking disabled, 1 for + * OPAL2 device with locking enabled and initialized (Admin PIN was selected). + * Negative errno otherwise. Most notably if the device is not OPAL2 or kernel + * does not support sed-opal interface. + */ +int crypt_get_hw_opal_enabled(struct crypt_device *cd); + /** * Dump text-formatted information about crypt or verity device to log output. * diff --git a/lib/libcryptsetup.sym b/lib/libcryptsetup.sym index 51f0bfef7..ebbca8781 100644 --- a/lib/libcryptsetup.sym +++ b/lib/libcryptsetup.sym @@ -202,4 +202,5 @@ CRYPTSETUP_2.9 { crypt_get_hw_opal_sum_enabled; crypt_status_hw_encryption; crypt_get_type_defaults; + crypt_get_hw_opal_enabled; } CRYPTSETUP_2.8; diff --git a/lib/luks2/hw_opal/hw_opal.c b/lib/luks2/hw_opal/hw_opal.c index 0d14e909d..86b7a767e 100644 --- a/lib/luks2/hw_opal/hw_opal.c +++ b/lib/luks2/hw_opal/hw_opal.c @@ -1675,6 +1675,24 @@ crypt_status_hw_encryption_info crypt_status_hw_encryption(struct crypt_device * return r > 0 ? CRYPT_HW_OPAL_SUM : CRYPT_HW_OPAL; } +int crypt_get_hw_opal_enabled(struct crypt_device *cd) +{ + int fd, r; + + if (!cd) + return -EINVAL; + + fd = device_open(cd, crypt_data_device(cd), O_RDONLY); + if (fd < 0) + return -EIO; + + /* If OPAL2 locking is not supported, return immediately */ + r = opal_query_status_fd(cd, fd, OPAL_FL_SUPPORTED | OPAL_FL_LOCKING_SUPPORTED); + if (r <= 0) + return r; + + return opal_query_status_fd(cd, fd, OPAL_FL_LOCKING_ENABLED); +} #else #pragma GCC diagnostic ignored "-Wunused-parameter" @@ -1764,4 +1782,8 @@ crypt_status_hw_encryption_info crypt_status_hw_encryption(struct crypt_device * return CRYPT_HW_INVALID; } +int crypt_get_hw_opal_enabled(struct crypt_device *cd) +{ + return -ENOTSUP; +} #endif From 73dbf339840a9b0fbf0b7890eddd217190f94ab2 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Mon, 28 Sep 2026 19:53:15 +0200 Subject: [PATCH 234/244] opal: Print error for cryptsetup erase with wrong password Erase command failed quietly if wrong admin password was provided. The command can also fail for other reasons (authority locked out after several wrong attempts and similar fails). Add proper return code to library and message to cryptsetup. --- lib/luks2/hw_opal/hw_opal.c | 13 +++++++++++-- src/cryptsetup.c | 4 ++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/lib/luks2/hw_opal/hw_opal.c b/lib/luks2/hw_opal/hw_opal.c index 86b7a767e..ad74fef4e 100644 --- a/lib/luks2/hw_opal/hw_opal.c +++ b/lib/luks2/hw_opal/hw_opal.c @@ -1418,7 +1418,11 @@ int opal_reset_segment(struct crypt_device *cd, if (segment_in_sum) { r = opal_ioctl(cd, fd, IOC_OPAL_ERASE_LR, user_session); - if (r != OPAL_STATUS_SUCCESS) { + if (r == OPAL_STATUS_NOT_AUTHORIZED) { + log_dbg(cd, "Failed to erase SUM OPAL locking range for device '%s', incorrect password?", + crypt_get_device_name(cd)); + r = -EPERM; + } else if (r != OPAL_STATUS_SUCCESS) { log_dbg(cd, "Failed to erase SUM OPAL locking range %u on device '%s': %s", segment_number, crypt_get_device_name(cd), opal_status_to_string(r)); r = -EINVAL; @@ -1431,7 +1435,12 @@ int opal_reset_segment(struct crypt_device *cd, r = opal_ioctl(cd, fd, IOC_OPAL_SECURE_ERASE_LR, user_session); if (r < 0) goto out; - if (r != OPAL_STATUS_SUCCESS) { + else if (r == OPAL_STATUS_NOT_AUTHORIZED) { + log_dbg(cd, "Failed to reset (secure erase) OPAL locking range for device '%s', incorrect password?", + crypt_get_device_name(cd)); + r = -EPERM; + goto out; + } else if (r != OPAL_STATUS_SUCCESS) { log_dbg(cd, "Failed to reset (secure erase) OPAL locking range %u on device '%s': %s", segment_number, crypt_get_device_name(cd), opal_status_to_string(r)); r = -EINVAL; diff --git a/src/cryptsetup.c b/src/cryptsetup.c index 94d6dce9d..ced9f8ebd 100644 --- a/src/cryptsetup.c +++ b/src/cryptsetup.c @@ -2944,6 +2944,10 @@ static int opal_erase(struct crypt_device *cd, bool factory_reset) { r = crypt_wipe_hw_opal(cd, factory_reset ? CRYPT_NO_SEGMENT : CRYPT_LUKS2_SEGMENT, password, password_size, 0); + if (r == -EPERM && !factory_reset) + log_err(_("Invalid OPAL Admin password provided.")); + else if (r < 0) + log_err(_("OPAL erase failed.")); crypt_safe_free(password); return r; From be6f1acc34c65ad140dad3fc833e8dfd0d83b484 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Mon, 12 Oct 2026 11:42:06 +0200 Subject: [PATCH 235/244] libdevmapper: add missing dm_backend_init in dm_flags. Otherwise libdm spams stderr with warnings previously suppressed by libcryptsetup custom log function. Fixes: #1005. --- lib/libdevmapper.c | 47 +++++++++++++++++++++++++++++++++------------- 1 file changed, 34 insertions(+), 13 deletions(-) diff --git a/lib/libdevmapper.c b/lib/libdevmapper.c index c2c247357..815e8ba79 100644 --- a/lib/libdevmapper.c +++ b/lib/libdevmapper.c @@ -299,6 +299,12 @@ static int _dm_check_versions(struct crypt_device *cd, dm_target_type target_typ unsigned dm_maj, dm_min, dm_patch; int r = 0; + /* + * Backend must be initialized by the caller; if not, it's an internal + * libcryptsetup error that regresses by spamming stderr with libdm warnings. + */ + assert(dm_backend_initialized); + if ((target_type == DM_CRYPT && _dm_crypt_checked) || (target_type == DM_VERITY && _dm_verity_checked) || (target_type == DM_INTEGRITY && _dm_integrity_checked) || @@ -375,7 +381,7 @@ static int _dm_check_versions(struct crypt_device *cd, dm_target_type target_typ return r; } -int dm_flags(struct crypt_device *cd, dm_target_type target, uint64_t *flags) +static int _do_dm_flags(struct crypt_device *cd, dm_target_type target, uint64_t *flags) { _dm_check_versions(cd, target); *flags = _dm_flags; @@ -452,6 +458,21 @@ static void dm_exit_context(void) _context = NULL; } +int dm_flags(struct crypt_device *cd, dm_target_type target, uint64_t *flags) +{ + int r; + + /* We have to route dm log via set_dm_error, otherwise dm_check_versions spams stderr */ + dm_backend_init(); + _context = cd; + + r = _do_dm_flags(cd, target, flags); + + dm_exit_context(); + + return r; +} + /* Return path to DM device */ char *dm_device_path(const char *prefix, int major, int minor) { @@ -1149,7 +1170,7 @@ int dm_remove_device(struct crypt_device *cd, const char *name, uint32_t flags) if (dm_init_context(cd, DM_UNKNOWN)) return -ENOTSUP; - if (deferred && !dm_flags(cd, DM_UNKNOWN, &dmt_flags) && !(dmt_flags & DM_DEFERRED_SUPPORTED)) { + if (deferred && !_do_dm_flags(cd, DM_UNKNOWN, &dmt_flags) && !(dmt_flags & DM_DEFERRED_SUPPORTED)) { log_err(cd, _("Requested deferred flag is not supported.")); dm_exit_context(); return -ENOTSUP; @@ -1737,7 +1758,7 @@ int dm_create_device(struct crypt_device *cd, const char *name, if (!r || r == -EEXIST) goto out; - if (dm_flags(cd, dmd->segment.type, &dmt_flags)) + if (_do_dm_flags(cd, dmd->segment.type, &dmt_flags)) goto out; if ((dmd->segment.type == DM_CRYPT || dmd->segment.type == DM_LINEAR || dmd->segment.type == DM_ZERO) && @@ -1867,23 +1888,23 @@ int dm_reload_device(struct crypt_device *cd, const char *name, if (dm_init_context(cd, dmd->segment.type)) return -ENOTSUP; - if (dm_flags(cd, DM_INTEGRITY, &dmt_flags) || !(dmt_flags & DM_INTEGRITY_RECALC_SUPPORTED)) + if (_do_dm_flags(cd, DM_INTEGRITY, &dmt_flags) || !(dmt_flags & DM_INTEGRITY_RECALC_SUPPORTED)) dmd->flags &= ~CRYPT_ACTIVATE_RECALCULATE; r = _dm_reload_device(cd, name, dmd); if (r == -EINVAL && (dmd->segment.type == DM_CRYPT || dmd->segment.type == DM_LINEAR)) { if ((dmd->flags & (CRYPT_ACTIVATE_SAME_CPU_CRYPT|CRYPT_ACTIVATE_SUBMIT_FROM_CRYPT_CPUS)) && - !dm_flags(cd, DM_CRYPT, &dmt_flags) && !(dmt_flags & (DM_SAME_CPU_CRYPT_SUPPORTED | DM_SUBMIT_FROM_CRYPT_CPUS_SUPPORTED))) + !_do_dm_flags(cd, DM_CRYPT, &dmt_flags) && !(dmt_flags & (DM_SAME_CPU_CRYPT_SUPPORTED | DM_SUBMIT_FROM_CRYPT_CPUS_SUPPORTED))) log_err(cd, _("Requested dm-crypt performance options are not supported.")); if ((dmd->flags & (CRYPT_ACTIVATE_NO_READ_WORKQUEUE | CRYPT_ACTIVATE_NO_WRITE_WORKQUEUE)) && - !dm_flags(cd, DM_CRYPT, &dmt_flags) && !(dmt_flags & DM_CRYPT_NO_WORKQUEUE_SUPPORTED)) + !_do_dm_flags(cd, DM_CRYPT, &dmt_flags) && !(dmt_flags & DM_CRYPT_NO_WORKQUEUE_SUPPORTED)) log_err(cd, _("Requested dm-crypt performance options are not supported.")); if ((dmd->flags & CRYPT_ACTIVATE_ALLOW_DISCARDS) && - !dm_flags(cd, DM_CRYPT, &dmt_flags) && !(dmt_flags & DM_DISCARDS_SUPPORTED)) + !_do_dm_flags(cd, DM_CRYPT, &dmt_flags) && !(dmt_flags & DM_DISCARDS_SUPPORTED)) log_err(cd, _("Discard/TRIM is not supported.")); if ((dmd->flags & CRYPT_ACTIVATE_ALLOW_DISCARDS) && - !dm_flags(cd, DM_INTEGRITY, &dmt_flags) && !(dmt_flags & DM_INTEGRITY_DISCARDS_SUPPORTED)) + !_do_dm_flags(cd, DM_INTEGRITY, &dmt_flags) && !(dmt_flags & DM_INTEGRITY_DISCARDS_SUPPORTED)) log_err(cd, _("Discard/TRIM is not supported.")); } @@ -3140,7 +3161,7 @@ int dm_suspend_device(struct crypt_device *cd, const char *name, uint64_t dmflag return r; if (dmflags & DM_SUSPEND_WIPE_KEY) { - if (dm_flags(cd, DM_CRYPT, &dmt_flags)) + if (_do_dm_flags(cd, DM_CRYPT, &dmt_flags)) goto out; if (!(dmt_flags & DM_KEY_WIPE_SUPPORTED)) @@ -3187,7 +3208,7 @@ int dm_resume_and_reinstate_key(struct crypt_device *cd, const char *name, char *msg = NULL, *key = NULL; int r = -ENOTSUP; - if (dm_init_context(cd, DM_CRYPT) || dm_flags(cd, DM_CRYPT, &dmt_flags)) + if (dm_init_context(cd, DM_CRYPT) || _do_dm_flags(cd, DM_CRYPT, &dmt_flags)) return -ENOTSUP; if (!(dmt_flags & DM_KEY_WIPE_SUPPORTED)) @@ -3505,12 +3526,12 @@ int dm_integrity_target_set(struct crypt_device *cd, tgt->u.integrity.journal_crypt_key = journal_crypt_key; tgt->u.integrity.journal_integrity_key = journal_mac_key; - if (!dm_flags(cd, DM_INTEGRITY, &dmi_flags) && + if (!_do_dm_flags(cd, DM_INTEGRITY, &dmi_flags) && (dmi_flags & DM_INTEGRITY_FIX_PADDING_SUPPORTED) && !(crypt_get_compatibility(cd) & CRYPT_COMPAT_LEGACY_INTEGRITY_PADDING)) tgt->u.integrity.fix_padding = true; - if (!dm_flags(cd, DM_INTEGRITY, &dmi_flags) && + if (!_do_dm_flags(cd, DM_INTEGRITY, &dmi_flags) && (dmi_flags & DM_INTEGRITY_FIX_HMAC_SUPPORTED) && !(crypt_get_compatibility(cd) & CRYPT_COMPAT_LEGACY_INTEGRITY_HMAC)) tgt->u.integrity.fix_hmac = true; @@ -3519,7 +3540,7 @@ int dm_integrity_target_set(struct crypt_device *cd, if (crypt_get_compatibility(cd) & CRYPT_COMPAT_LEGACY_INTEGRITY_RECALC) tgt->u.integrity.legacy_recalc = true; - if (vk && !dm_flags(cd, DM_INTEGRITY, &dmi_flags) && + if (vk && !_do_dm_flags(cd, DM_INTEGRITY, &dmi_flags) && (dmi_flags & DM_INTEGRITY_DISCARD_KEYED_SUPPORTED) && !(crypt_get_compatibility(cd) & CRYPT_COMPAT_LEGACY_INTEGRITY_DISCARD)) tgt->u.integrity.discard_keyed = true; From ca0df4b71cb115421aff90996b1261f80cce6e46 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Mon, 12 Oct 2026 12:01:02 +0200 Subject: [PATCH 236/244] libdevmapper: require root privileges in dm_integrity_target_set. We have to get access to dm-integrity target feature flags. This cannot be done without root access. It would have failed without root later anyway. --- lib/libdevmapper.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/libdevmapper.c b/lib/libdevmapper.c index 815e8ba79..9357967d7 100644 --- a/lib/libdevmapper.c +++ b/lib/libdevmapper.c @@ -3509,7 +3509,8 @@ int dm_integrity_target_set(struct crypt_device *cd, if (!data_device) return -EINVAL; - _dm_check_versions(cd, DM_INTEGRITY); + if (dm_init_context(cd, DM_INTEGRITY)) + return -ENOTSUP; tgt->type = DM_INTEGRITY; tgt->direction = TARGET_SET; @@ -3556,6 +3557,8 @@ int dm_integrity_target_set(struct crypt_device *cd, tgt->u.integrity.integrity = ip->integrity; } + dm_exit_context(); + return 0; } From 44291e0c5c51c2eda4008112d4b09813589b5302 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Tue, 7 Apr 2026 14:04:56 +0200 Subject: [PATCH 237/244] Refactor internal segment_in_sum function. --- lib/luks2/hw_opal/hw_opal.c | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/lib/luks2/hw_opal/hw_opal.c b/lib/luks2/hw_opal/hw_opal.c index ad74fef4e..3e6467161 100644 --- a/lib/luks2/hw_opal/hw_opal.c +++ b/lib/luks2/hw_opal/hw_opal.c @@ -694,25 +694,32 @@ static int opal_sum_setup(struct crypt_device *cd, int fd, const void *admin_key return r > 0 ? -EINVAL : r; } +static uint8_t opal_segment_in_sum(uint32_t segment_number, const struct opal_sum_ranges *sranges) +{ + int i; + + assert(sranges); + + for (i = 0; i < sranges->num_lrs ; i++) { + if (sranges->lr[i] == segment_number) + return 1; + } + + return 0; +} + static int opal_get_sum_status_anybody(struct crypt_device *cd, int fd, uint32_t segment_number, uint8_t *r_policy, uint8_t *r_segment_in_sum) { - int i, r; + int r; struct opal_sum_ranges sum_ranges = {}; r = opal_get_sum_ranges_anybody(cd, fd, &sum_ranges); if (r < 0) return r; - if (r_segment_in_sum) { - *r_segment_in_sum = 0; - for (i = 0; i < sum_ranges.num_lrs ; i++) { - if (sum_ranges.lr[i] == segment_number) { - *r_segment_in_sum = 1; - break; - } - } - } + if (r_segment_in_sum) + *r_segment_in_sum = opal_segment_in_sum(segment_number, &sum_ranges); if (r_policy) *r_policy = sum_ranges.range_policy; From 7de67b311fdb2f0313d53c80253869e4c530557a Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Tue, 7 Apr 2026 14:11:24 +0200 Subject: [PATCH 238/244] Make crypt key argument optional in LUKS2_split_crypt_and_opal_keys --- lib/luks2/luks2_json_metadata.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/lib/luks2/luks2_json_metadata.c b/lib/luks2/luks2_json_metadata.c index c532576d8..a1a63d35a 100644 --- a/lib/luks2/luks2_json_metadata.c +++ b/lib/luks2/luks2_json_metadata.c @@ -3155,7 +3155,6 @@ int LUKS2_split_crypt_and_opal_keys(struct crypt_device *cd __attribute__((unuse struct volume_key *opal_key, *crypt_key; assert(vk); - assert(ret_crypt_key); assert(ret_opal_key); jobj_segment = LUKS2_get_segment_jobj(hdr, CRYPT_DEFAULT_SEGMENT); @@ -3175,7 +3174,8 @@ int LUKS2_split_crypt_and_opal_keys(struct crypt_device *cd __attribute__((unuse /* OPAL SEGMENT only */ if (crypt_volume_key_length(vk) == opal_user_key_size) { - *ret_crypt_key = NULL; + if (ret_crypt_key) + *ret_crypt_key = NULL; *ret_opal_key = NULL; return 0; } @@ -3184,15 +3184,17 @@ int LUKS2_split_crypt_and_opal_keys(struct crypt_device *cd __attribute__((unuse if (!opal_key) return -ENOMEM; - crypt_key = crypt_alloc_volume_key(crypt_volume_key_length(vk) - opal_user_key_size, - crypt_volume_key_get_key(vk) + opal_user_key_size); - if (!crypt_key) { - crypt_free_volume_key(opal_key); - return -ENOMEM; + if (ret_crypt_key) { + crypt_key = crypt_alloc_volume_key(crypt_volume_key_length(vk) - opal_user_key_size, + crypt_volume_key_get_key(vk) + opal_user_key_size); + if (!crypt_key) { + crypt_free_volume_key(opal_key); + return -ENOMEM; + } + *ret_crypt_key = crypt_key; } *ret_opal_key = opal_key; - *ret_crypt_key = crypt_key; return 0; } From 79797653a4476ed9eca1986c1324c2ee82e4d2ee Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Thu, 1 Oct 2026 14:45:13 +0200 Subject: [PATCH 239/244] Add crypt_hw_opal_locking_ranges_max API. To get max count of OPAL2 locking ranges supported by sed-opal kernel interface. --- lib/libcryptsetup.h | 10 ++++++++++ lib/libcryptsetup.sym | 1 + lib/luks2/hw_opal/hw_opal.c | 10 ++++++++++ 3 files changed, 21 insertions(+) diff --git a/lib/libcryptsetup.h b/lib/libcryptsetup.h index e9cb918b7..b60f15cb9 100644 --- a/lib/libcryptsetup.h +++ b/lib/libcryptsetup.h @@ -3332,6 +3332,16 @@ int crypt_set_keyring_to_link(struct crypt_device* cd, const char* key_type_desc, const char* keyring_to_link_vk); +/** + * Get number of OPAL locking ranges supported by the device. + * + * @param cd OPAL device handle + * + * @return OPAL locking ranges count or negative errno on error. + * + */ +int crypt_hw_opal_locking_ranges_max(struct crypt_device *cd); + /** @} */ #ifdef __cplusplus diff --git a/lib/libcryptsetup.sym b/lib/libcryptsetup.sym index ebbca8781..df78b2611 100644 --- a/lib/libcryptsetup.sym +++ b/lib/libcryptsetup.sym @@ -203,4 +203,5 @@ CRYPTSETUP_2.9 { crypt_status_hw_encryption; crypt_get_type_defaults; crypt_get_hw_opal_enabled; + crypt_hw_opal_locking_ranges_max; } CRYPTSETUP_2.8; diff --git a/lib/luks2/hw_opal/hw_opal.c b/lib/luks2/hw_opal/hw_opal.c index 3e6467161..9548daa28 100644 --- a/lib/luks2/hw_opal/hw_opal.c +++ b/lib/luks2/hw_opal/hw_opal.c @@ -1709,6 +1709,11 @@ int crypt_get_hw_opal_enabled(struct crypt_device *cd) return opal_query_status_fd(cd, fd, OPAL_FL_LOCKING_ENABLED); } + +int crypt_hw_opal_locking_ranges_max(struct crypt_device *cd __attribute__((unused))) +{ + return OPAL_MAX_LRS; +} #else #pragma GCC diagnostic ignored "-Wunused-parameter" @@ -1802,4 +1807,9 @@ int crypt_get_hw_opal_enabled(struct crypt_device *cd) { return -ENOTSUP; } + +int crypt_hw_opal_locking_ranges_max(struct crypt_device *cd) +{ + return -ENOTSUP; +} #endif From c2854fc97909b1541dea99b3c81ec8f0c084c394 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Tue, 7 Apr 2026 14:54:02 +0200 Subject: [PATCH 240/244] Add crypt_get_hw_opal_locking_ranges API. The function returns offset, length, locking state, lock mode, SUM state and RangePolicy flag for each locking object defined on the block device. It requires Admin1 authority (in TCG OPAL2 terminology) to access locking objects description on the target device. --- lib/libcryptsetup.h | 57 ++++++++++++ lib/libcryptsetup.sym | 1 + lib/luks2/hw_opal/hw_opal.c | 167 +++++++++++++++++++++++++++++++++++- lib/luks2/hw_opal/hw_opal.h | 8 ++ lib/setup.c | 13 +++ 5 files changed, 243 insertions(+), 3 deletions(-) diff --git a/lib/libcryptsetup.h b/lib/libcryptsetup.h index b60f15cb9..58627153a 100644 --- a/lib/libcryptsetup.h +++ b/lib/libcryptsetup.h @@ -3342,6 +3342,63 @@ int crypt_set_keyring_to_link(struct crypt_device* cd, */ int crypt_hw_opal_locking_ranges_max(struct crypt_device *cd); +/** + * State of OPAL locking range + */ +typedef enum { + CRYPT_HW_OPAL_RW = 0, /* unlocked for R/W */ + CRYPT_HW_OPAL_RO, /* unlocked only for read */ + CRYPT_HW_OPAL_LOCKED, /* locked for all I/O */ +} crypt_hw_opal_lock_state; + +/** + * OPAL feature state + */ +typedef enum { + CRYPT_HW_OPAL_FEATURE_DISABLED = 0, /* a feature is disabled */ + CRYPT_HW_OPAL_FEATURE_ENABLED, /* a feature is enabled */ + CRYPT_HW_OPAL_FEATURE_UNDEFINED, /* a feature state is undefined (missing kernel API) */ +} crypt_hw_opal_feature_state; + +/** + * OPAL locking range description + */ +struct crypt_hw_opal_range { + uint8_t id; /* locking range id */ + unsigned int read_locking_enabled; /* read locking is enabled */ + unsigned int write_locking_enabled; /* write locking is enabled */ + crypt_hw_opal_lock_state lock_state; + crypt_hw_opal_feature_state sum; /* Locking range SUM support */ + crypt_hw_opal_feature_state range_policy; /* Range Policy */ + uint64_t offset; /* locking range offset in bytes (absolute offset on the whole block device) */ + uint64_t length; /* locking range length in bytes */ +}; + +/** + * Get information about OPAL locking ranges. + * + * The function provides status information about OPAL locking ranges + * that can be retrieved using the Admin1 authority PIN. + * + * @param cd OPAL device handle + * @param opal_pin passphrase used to authenticate OPAL Admin1 authority + * @param opal_pin_size size of @e opal_pin (binary data) + * @param opal_ranges return buffer for OPAL locking ranges descriptions + * @param opal_ranges_count size of @e opal_ranges array + * + * @note if @e opal_ranges_count, and therefore the @e opal_ranges array, is too small to contain all OPAL + * locking range descriptions retrieved from the OPAL device, the function returns -ENOSPC. + * Use @ref crypt_hw_opal_locking_ranges_max to get max number of supported OPAL locking ranges by the OPAL device. + * + * @return the number of locking ranges returned in the @e opal_ranges array on success, -EPERM if provided + * OPAL Admin PIN (passphrase) was incorrect, or other negative errno value otherwise. + */ +int crypt_get_hw_opal_locking_ranges(struct crypt_device *cd, + const char *opal_pin, + size_t opal_pin_size, + struct crypt_hw_opal_range *opal_ranges, + size_t opal_ranges_count); + /** @} */ #ifdef __cplusplus diff --git a/lib/libcryptsetup.sym b/lib/libcryptsetup.sym index df78b2611..3144752eb 100644 --- a/lib/libcryptsetup.sym +++ b/lib/libcryptsetup.sym @@ -204,4 +204,5 @@ CRYPTSETUP_2.9 { crypt_get_type_defaults; crypt_get_hw_opal_enabled; crypt_hw_opal_locking_ranges_max; + crypt_get_hw_opal_locking_ranges; } CRYPTSETUP_2.8; diff --git a/lib/luks2/hw_opal/hw_opal.c b/lib/luks2/hw_opal/hw_opal.c index 9548daa28..e63be0172 100644 --- a/lib/luks2/hw_opal/hw_opal.c +++ b/lib/luks2/hw_opal/hw_opal.c @@ -694,7 +694,7 @@ static int opal_sum_setup(struct crypt_device *cd, int fd, const void *admin_key return r > 0 ? -EINVAL : r; } -static uint8_t opal_segment_in_sum(uint32_t segment_number, const struct opal_sum_ranges *sranges) +static crypt_hw_opal_feature_state opal_segment_in_sum(uint32_t segment_number, const struct opal_sum_ranges *sranges) { int i; @@ -702,10 +702,10 @@ static uint8_t opal_segment_in_sum(uint32_t segment_number, const struct opal_su for (i = 0; i < sranges->num_lrs ; i++) { if (sranges->lr[i] == segment_number) - return 1; + return CRYPT_HW_OPAL_FEATURE_ENABLED; } - return 0; + return CRYPT_HW_OPAL_FEATURE_DISABLED; } static int opal_get_sum_status_anybody(struct crypt_device *cd, int fd, uint32_t segment_number, @@ -1714,6 +1714,156 @@ int crypt_hw_opal_locking_ranges_max(struct crypt_device *cd __attribute__((unus { return OPAL_MAX_LRS; } + +static crypt_hw_opal_lock_state opal_lock_state_translate(unsigned int sed_opal_lock_state) +{ + switch(sed_opal_lock_state) { + case OPAL_RW: + return CRYPT_HW_OPAL_RW; + case OPAL_RO: + return CRYPT_HW_OPAL_RO; + case OPAL_LK: + default: /* fall-through */ + return CRYPT_HW_OPAL_LOCKED; + } +} + +/* returns 1 on success, 0 if LR is not active, negative errno on fatal error */ +static int opal_get_range(struct crypt_device *cd, + int fd, + uint32_t opal_block_size, + bool sum_undefined, + struct opal_lr_status *lrs, + const struct opal_sum_ranges *sum_ranges, + struct crypt_hw_opal_range *ret_opal_range) +{ + int r; + crypt_hw_opal_feature_state sum, range_policy; + + assert(lrs); + assert(sum_ranges); + assert(ret_opal_range); + + r = opal_ioctl(cd, fd, IOC_OPAL_GET_LR_STATUS, lrs); + if (r < 0) + return r; + if (r == OPAL_STATUS_NOT_AUTHORIZED) + return -EPERM; + if (r != OPAL_STATUS_SUCCESS) + return 0; + + /* FIXME: fine tune condition when do not report LR back to the caller */ + if (!lrs->range_start && !lrs->range_length && !lrs->RLE && !lrs->WLE) + return 0; + + if (sum_undefined) + sum = CRYPT_HW_OPAL_FEATURE_UNDEFINED; + else + sum = opal_segment_in_sum(lrs->session.opal_key.lr, sum_ranges); + + /* + * Do not confuse callers by range policy set to enabled when LR is not in + * properly configured for SUM. + */ + if (sum != CRYPT_HW_OPAL_FEATURE_ENABLED) + range_policy = sum; + else if (sum_ranges->range_policy) + range_policy = CRYPT_HW_OPAL_FEATURE_ENABLED; + else + range_policy = CRYPT_HW_OPAL_FEATURE_DISABLED; + + *ret_opal_range = (struct crypt_hw_opal_range) { + .id = lrs->session.opal_key.lr, + .offset = lrs->range_start * opal_block_size, + .length = lrs->range_length * opal_block_size, + .read_locking_enabled = lrs->RLE, + .write_locking_enabled = lrs->WLE, + .lock_state = opal_lock_state_translate(lrs->l_state), + .sum = sum, + .range_policy = range_policy, + }; + + return 1; +} + +int opal_get_ranges_params(struct crypt_device *cd, + struct device *dev, + uint32_t opal_user_id, + const void *opal_key, + size_t opal_key_size, + struct crypt_hw_opal_range *opal_ranges, + size_t opal_ranges_count) +{ + int fd, r; + uint32_t opal_block_size; + uint8_t lr = 0; + struct opal_lr_status *lrs; + struct opal_sum_ranges sum_ranges = {}; + struct crypt_hw_opal_range tmp = {}; + size_t stored_ranges = 0; + bool sum_undefined = false; + + assert(opal_ranges); + assert(opal_ranges_count > 0); + + if (opal_key_size > OPAL_KEY_MAX) + return -EINVAL; + + fd = device_open(cd, dev, O_RDONLY); + if (fd < 0) + return -EIO; + + r = opal_geometry_fd(cd, fd, NULL, &opal_block_size, NULL, NULL); + if (r != OPAL_STATUS_SUCCESS) + return -EINVAL; + + /* check if kernel recognizes the device as SUM capable */ + r = opal_query_status_fd(cd, fd, OPAL_FL_SUM_SUPPORTED); + if (r < 0) + return r; + + /* Check locking ranges SUM state only if the device advertises SUM support */ + if (r) { + r = opal_get_sum_ranges_anybody(cd, fd, &sum_ranges); + sum_undefined = (r < 0); + } + + lrs = crypt_safe_alloc(sizeof(*lrs)); + if (!lrs) + return -ENOMEM; + + *lrs = (struct opal_lr_status) { + .session = { + .who = opal_user_id, + .opal_key = { + .key_len = opal_key_size, + } + } + }; + crypt_safe_memcpy(lrs->session.opal_key.key, opal_key, opal_key_size); + + for (lr = 0; lr < OPAL_MAX_LRS; lr++) { + lrs->session.opal_key.lr = lr; + + r = opal_get_range(cd, fd, opal_block_size, sum_undefined, lrs, &sum_ranges, &tmp); + if (r == 1) { + if (stored_ranges < opal_ranges_count) + opal_ranges[stored_ranges++] = tmp; + else + r = -ENOSPC; + } + if (r < 0) + goto out; + } + + r = stored_ranges; +out: + crypt_safe_free(lrs); + if (r < 0) + memset(opal_ranges, 0, opal_ranges_count * sizeof(*opal_ranges)); + + return r; +} #else #pragma GCC diagnostic ignored "-Wunused-parameter" @@ -1812,4 +1962,15 @@ int crypt_hw_opal_locking_ranges_max(struct crypt_device *cd) { return -ENOTSUP; } + +int opal_get_ranges_params(struct crypt_device *cd, + struct device *dev, + uint32_t opal_user_id, + const void *opal_key, + size_t opal_key_size, + struct crypt_hw_opal_range *opal_ranges, + size_t opal_ranges_count) +{ + return -ENOTSUP; +} #endif diff --git a/lib/luks2/hw_opal/hw_opal.h b/lib/luks2/hw_opal/hw_opal.h index 0ab254d51..a7932289c 100644 --- a/lib/luks2/hw_opal/hw_opal.h +++ b/lib/luks2/hw_opal/hw_opal.h @@ -59,4 +59,12 @@ int opal_exclusive_lock(struct crypt_device *cd, struct crypt_lock_handle **opal_lock); void opal_exclusive_unlock(struct crypt_device *cd, struct crypt_lock_handle *opal_lock); +int opal_get_ranges_params(struct crypt_device *cd, + struct device *dev, + uint32_t opal_user_id, + const void *opal_key, + size_t opal_key_size, + struct crypt_hw_opal_range *opal_ranges, + size_t opal_ranges_count); + #endif diff --git a/lib/setup.c b/lib/setup.c index 9e9f3fc63..435740fc2 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -6306,6 +6306,19 @@ int crypt_dump_json(struct crypt_device *cd, const char **json, uint32_t flags) return -EINVAL; } +int crypt_get_hw_opal_locking_ranges(struct crypt_device *cd, + const char *opal_pin, + size_t opal_pin_size, + struct crypt_hw_opal_range *opal_ranges, + size_t opal_ranges_count) +{ + if (!cd || !crypt_data_device(cd) || !opal_ranges || !opal_ranges_count) + return -EINVAL; + + return opal_get_ranges_params(cd, crypt_data_device(cd), 0 /* OPAL_ADMIN1 */, + opal_pin, opal_pin_size, opal_ranges, opal_ranges_count); +} + /* internal only */ const char *crypt_get_cipher_spec(struct crypt_device *cd) { From df0780cc55ee6540c5d6ef1fe343cc2e9001901a Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Mon, 13 Apr 2026 13:52:46 +0200 Subject: [PATCH 241/244] Add crypt_get_hw_opal_locking_ranges_by_keyslot_context API. Unlike crypt_get_hw_opal_locking_ranges, the function requires LUKS2 device handle and it uses User authority key (PIN) encrypted in LUKS2 keyslot for reading locking range attributes from the OPAL2 device. The keyslot context argument provides method for unlocking LUKS2 keyslot or device volume key. --- lib/libcryptsetup.h | 26 ++++++++++++++ lib/libcryptsetup.sym | 1 + lib/luks2/hw_opal/hw_opal.c | 71 +++++++++++++++++++++++++++++++++++++ lib/luks2/hw_opal/hw_opal.h | 8 +++++ lib/setup.c | 42 ++++++++++++++++++++++ 5 files changed, 148 insertions(+) diff --git a/lib/libcryptsetup.h b/lib/libcryptsetup.h index 58627153a..28d374fa4 100644 --- a/lib/libcryptsetup.h +++ b/lib/libcryptsetup.h @@ -3374,6 +3374,32 @@ struct crypt_hw_opal_range { uint64_t length; /* locking range length in bytes */ }; +/** + * Get information about OPAL locking ranges used in LUKS2. + * + * The function provides status information about OPAL locking ranges + * that can be retrieved using the User authority PIN generated and stored + * in LUKS2 metadata. + * + * @param cd LUKS2 device handle + * @param keyslot requested keyslot or CRYPT_ANY_SLOT + * @param kc keyslot context providing a volume key or passphrase to @e keyslot. + * @param opal_ranges return buffer for OPAL locking ranges state descriptions + * @param opal_ranges_count number of elements in the @e opal_ranges array + * + * @note if @e opal_ranges_count, and therefore the @e opal_ranges array, is too small to contain all OPAL + * locking range descriptions retrieved from the OPAL device, the function returns -ENOSPC. + * + * @return the number of locking ranges returned in the @e opal_ranges array on success, -EPERM if stored + * OPAL key was wrong for OPAL User authority associated with the HW segment, or other negative errno + * value otherwise. + */ +int crypt_get_hw_opal_locking_ranges_by_keyslot_context(struct crypt_device *cd, + int keyslot, + struct crypt_keyslot_context *kc, + struct crypt_hw_opal_range *opal_ranges, + size_t opal_ranges_count); + /** * Get information about OPAL locking ranges. * diff --git a/lib/libcryptsetup.sym b/lib/libcryptsetup.sym index 3144752eb..f5acefa9a 100644 --- a/lib/libcryptsetup.sym +++ b/lib/libcryptsetup.sym @@ -205,4 +205,5 @@ CRYPTSETUP_2.9 { crypt_get_hw_opal_enabled; crypt_hw_opal_locking_ranges_max; crypt_get_hw_opal_locking_ranges; + crypt_get_hw_opal_locking_ranges_by_keyslot_context; } CRYPTSETUP_2.8; diff --git a/lib/luks2/hw_opal/hw_opal.c b/lib/luks2/hw_opal/hw_opal.c index e63be0172..a03c68d54 100644 --- a/lib/luks2/hw_opal/hw_opal.c +++ b/lib/luks2/hw_opal/hw_opal.c @@ -1786,6 +1786,66 @@ static int opal_get_range(struct crypt_device *cd, return 1; } +int opal_get_single_range_params(struct crypt_device *cd, + struct device *dev, + uint32_t opal_user_id, + uint8_t opal_locking_range_id, + const void *opal_key, + size_t opal_key_size, + struct crypt_hw_opal_range *ret_opal_range) +{ + int fd, r; + uint32_t opal_block_size; + struct opal_lr_status *lrs; + struct opal_sum_ranges sum_ranges = {}; + bool sum_undefined = false; + + assert(ret_opal_range); + + if (opal_key_size > OPAL_KEY_MAX) + return -EINVAL; + + fd = device_open(cd, dev, O_RDONLY); + if (fd < 0) + return -EIO; + + r = opal_geometry_fd(cd, fd, NULL, &opal_block_size, NULL, NULL); + if (r != OPAL_STATUS_SUCCESS) + return -EINVAL; + + /* check if kernel recognizes the device as SUM capable */ + r = opal_query_status_fd(cd, fd, OPAL_FL_SUM_SUPPORTED); + if (r < 0) + return r; + + /* Check locking ranges SUM state only if the device advertises SUM support */ + if (r) { + r = opal_get_sum_ranges_anybody(cd, fd, &sum_ranges); + sum_undefined = (r < 0); + } + + lrs = crypt_safe_alloc(sizeof(*lrs)); + if (!lrs) + return -ENOMEM; + + *lrs = (struct opal_lr_status) { + .session = { + .who = opal_user_id, + .opal_key = { + .lr = opal_locking_range_id, + .key_len = opal_key_size, + } + } + }; + crypt_safe_memcpy(lrs->session.opal_key.key, opal_key, opal_key_size); + + r = opal_get_range(cd, fd, opal_block_size, sum_undefined, lrs, &sum_ranges, ret_opal_range); + + crypt_safe_free(lrs); + + return r; +} + int opal_get_ranges_params(struct crypt_device *cd, struct device *dev, uint32_t opal_user_id, @@ -1963,6 +2023,17 @@ int crypt_hw_opal_locking_ranges_max(struct crypt_device *cd) return -ENOTSUP; } +int opal_get_single_range_params(struct crypt_device *cd, + struct device *dev, + uint32_t opal_user_id, + uint8_t opal_locking_range_id, + const void *opal_key, + size_t opal_key_size, + struct crypt_hw_opal_range *ret_opal_range) +{ + return -ENOTSUP; +} + int opal_get_ranges_params(struct crypt_device *cd, struct device *dev, uint32_t opal_user_id, diff --git a/lib/luks2/hw_opal/hw_opal.h b/lib/luks2/hw_opal/hw_opal.h index a7932289c..16e4a4b40 100644 --- a/lib/luks2/hw_opal/hw_opal.h +++ b/lib/luks2/hw_opal/hw_opal.h @@ -59,6 +59,14 @@ int opal_exclusive_lock(struct crypt_device *cd, struct crypt_lock_handle **opal_lock); void opal_exclusive_unlock(struct crypt_device *cd, struct crypt_lock_handle *opal_lock); +int opal_get_single_range_params(struct crypt_device *cd, + struct device *dev, + uint32_t opal_user_id, + uint8_t opal_locking_range_id, + const void *opal_key, + size_t opal_key_size, + struct crypt_hw_opal_range *ret_opal_range); + int opal_get_ranges_params(struct crypt_device *cd, struct device *dev, uint32_t opal_user_id, diff --git a/lib/setup.c b/lib/setup.c index 435740fc2..2374656c4 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -6319,6 +6319,48 @@ int crypt_get_hw_opal_locking_ranges(struct crypt_device *cd, opal_pin, opal_pin_size, opal_ranges, opal_ranges_count); } +int crypt_get_hw_opal_locking_ranges_by_keyslot_context(struct crypt_device *cd, + int keyslot, + struct crypt_keyslot_context *kc, + struct crypt_hw_opal_range *opal_ranges, + size_t opal_ranges_count) +{ + int r; + uint32_t opal_segment_number; + struct volume_key *p_opal_key, *vk = NULL, *opal_key = NULL; + + if (!cd || !kc || !kc->get_luks2_volume_key || !opal_ranges || !opal_ranges_count) + return -EINVAL; + + r = onlyLUKS2(cd); + if (r < 0) + return r; + + r = LUKS2_get_opal_segment_number(&cd->u.luks2.hdr, CRYPT_DEFAULT_SEGMENT, &opal_segment_number); + if (r < 0) + return -EINVAL; + + r = kc->get_luks2_volume_key(cd, kc, keyslot, &vk); + if (r < 0) + return r; + + r = LUKS2_split_crypt_and_opal_keys(cd, &cd->u.luks2.hdr, vk, NULL, &opal_key); + if (r < 0) + goto out; + + p_opal_key = opal_key ?: vk; + + r = opal_get_single_range_params(cd, crypt_data_device(cd), opal_segment_number + 1, + opal_segment_number, + crypt_volume_key_get_key(p_opal_key), + crypt_volume_key_length(p_opal_key), opal_ranges); +out: + crypt_free_volume_key(vk); + crypt_free_volume_key(opal_key); + + return r; +} + /* internal only */ const char *crypt_get_cipher_spec(struct crypt_device *cd) { From 39c47c20263e46abdb2fd6b44c9227c5975d52b0 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Mon, 13 Apr 2026 14:36:32 +0200 Subject: [PATCH 242/244] Add --dump-hw-opal parameter to luksDump action. The luksDump action with --dump-hw-opal parameter prints additional information about SED OPAL2 locking range associated with LUKS2 device formated with support for SED OPAL2 segment. --- man/common_options.adoc | 7 ++ man/cryptsetup-luksDump.8.adoc | 6 +- man/cryptsetup.8.adoc | 1 + src/cryptsetup.c | 183 +++++++++++++++++++++++++++++++++ src/cryptsetup_arg_list.h | 2 + src/cryptsetup_args.h | 1 + src/utils_arg_names.h | 1 + 7 files changed, 200 insertions(+), 1 deletion(-) diff --git a/man/common_options.adoc b/man/common_options.adoc index 0b00cb6e9..5135a1c8b 100644 --- a/man/common_options.adoc +++ b/man/common_options.adoc @@ -175,6 +175,13 @@ ifdef::ACTION_LUKSDUMP[] For _luksDump_ (LUKS2 only), this option prints the content of the LUKS2 header JSON metadata area. endif::[] +ifdef::ACTION_LUKSDUMP[] +*--dump-hw-opal*:: +For _luksDump_, print additional information about the SED OPAL2 hardware locking range associated with a LUKS2 device formatted with hardware OPAL2 (Self Encrypting Drive) support. +The device must be unlocked to query the drive, so a passphrase, a LUKS2 token or the volume key has to be supplied. +See also the *opaldump* action in *cryptsetup-opaldump*(8) for dumping OPAL information of the whole device (without attachment to LUKS2 metadata). +endif::[] + ifdef::ACTION_LUKSDUMP,ACTION_TCRYPTDUMP,ACTION_BITLKDUMP[] *--dump-volume-key*:: --dump-master-key (OBSOLETE alias):: diff --git a/man/cryptsetup-luksDump.8.adoc b/man/cryptsetup-luksDump.8.adoc index 1e149c25a..f7620707d 100644 --- a/man/cryptsetup-luksDump.8.adoc +++ b/man/cryptsetup-luksDump.8.adoc @@ -33,7 +33,11 @@ To dump LUKS2 JSON metadata (without basic header information like UUID), use th If --dump-volume-key is used with --key-file and the argument to --key-file is '-', no validation question will be asked and no warning given. -** can be [--dump-volume-key, --dump-json-metadata, --key-file, --keyfile-offset, --keyfile-size, --header, --disable-locks, --volume-key-file, --type, --unbound, --key-slot, --timeout, --external-tokens-path]. +For a LUKS2 device formatted with hardware OPAL2 (Self Encrypting Drive) support, the --dump-hw-opal option prints additional information about the SED OPAL2 locking range associated with the device. +The printed information includes the OPAL keysize, the OPAL subsystem type and a table of the OPAL locking range(s) owned by the LUKS2 device (see *cryptsetup-opaldump*(8) for a description of the table columns). +To dump all the OPAL information of a device, independent of LUKS2 metadata, use the *opaldump* action instead. + +** can be [--dump-volume-key, --dump-json-metadata, --dump-hw-opal, --key-file, --keyfile-offset, --keyfile-size, --header, --disable-locks, --volume-key-file, --volume-key-keyring, --type, --unbound, --key-slot, --token-id, --token-type, --token-only, --timeout, --external-tokens-path]. include::man/common_options.adoc[] include::man/common_footer.adoc[] diff --git a/man/cryptsetup.8.adoc b/man/cryptsetup.8.adoc index 7fc0c0563..2d97edc47 100644 --- a/man/cryptsetup.8.adoc +++ b/man/cryptsetup.8.adoc @@ -193,6 +193,7 @@ See *cryptsetup-isLuks*(8). *luksDump * Dump the header information of a LUKS device. +For a LUKS2 device with hardware OPAL2 (Self Encrypting Drive) support, the --dump-hw-opal option additionally dumps the associated OPAL2 locking range information. See *cryptsetup-luksDump*(8). === HEADER BACKUP diff --git a/src/cryptsetup.c b/src/cryptsetup.c index ced9f8ebd..a50349510 100644 --- a/src/cryptsetup.c +++ b/src/cryptsetup.c @@ -2643,6 +2643,187 @@ static int luksDump_with_unbound_key(struct crypt_device *cd) return r; } +static const char *opal_lock_mode_to_string(crypt_hw_opal_lock_state lock) +{ + switch (lock) { + case CRYPT_HW_OPAL_RW: + return N_("read-write"); + case CRYPT_HW_OPAL_RO: + return N_("read-only"); + case CRYPT_HW_OPAL_LOCKED: + default: + return N_("locked"); + } +} + +static const char *opal_locking_to_string(unsigned opal_locking) +{ + return opal_locking ? N_("enabled") : N_("disabled"); +} + +static const char *opal_feature_state_to_string(crypt_hw_opal_feature_state feature) +{ + switch (feature) { + case CRYPT_HW_OPAL_FEATURE_DISABLED: return N_("disabled"); + case CRYPT_HW_OPAL_FEATURE_ENABLED: return N_("enabled"); + case CRYPT_HW_OPAL_FEATURE_UNDEFINED: + /* fall through */ + default: return N_("unknown"); + } +} + +static void print_opal_table_header(void) +{ + log_std(_("OPAL Locking Ranges:\n")); + /* + * 'ID' column width: 3 characters + * 'Offset' column width: 20 characters + * 'Length' column width: 20 characters + * 'ReadLocking' column width: 11 characters + * 'WriteLocking' column width: 12 characters + * 'Mode' column width: 10 characters + * 'SUM' column width: 8 characters + * 'RangePolicy' column width: 11 characters + * + * Each column is separated by additional single space character from its neighbour. + * + * Note: 'SUM' stands for 'Single User Mode'. + */ + log_std(N_("ID Offset (bytes) Length (bytes) ReadLocking WriteLocking Mode SUM RangePolicy\n")); +} + +static void print_opal_table_line(const struct crypt_hw_opal_range *resp) +{ + assert(resp); + + log_std("%-3d %-20" PRIu64 " %-20" PRIu64 " %-11s %-12s %-10s %-8s %-11s\n", + resp->id, + resp->offset, + resp->length, + opal_locking_to_string(resp->read_locking_enabled), + opal_locking_to_string(resp->write_locking_enabled), + opal_lock_mode_to_string(resp->lock_state), + opal_feature_state_to_string(resp->sum), + opal_feature_state_to_string(resp->range_policy)); +} + +static const char *crypt_hw_status_to_string(crypt_status_hw_encryption_info ci) +{ + switch (ci) { + case CRYPT_HW_OTHER: return "Other (not OPAL2)"; + case CRYPT_HW_OPAL: return "OPAL2"; + case CRYPT_HW_OPAL_SUM: return "OPAL2 with Single User Mode"; + default: return "N/A"; + } +} + +static int luksDump_with_opal(struct crypt_device *cd) +{ + crypt_status_hw_encryption_info ci; + int hw_enc, keysize, r, tries; + struct crypt_hw_opal_range response; + struct crypt_keyslot_context *kc1 = NULL, *dummy = NULL; + + hw_enc = crypt_get_hw_encryption_type(cd); + if (hw_enc < 0) + return hw_enc; + + /* This will filter out also LUKS1 devices */ + if (hw_enc == CRYPT_SW_ONLY) { + log_err(_("Device %s is not configured for OPAL2 encryption"), + crypt_get_device_name(cd)); + return -EINVAL; + } + + ci = crypt_status_hw_encryption(cd); + if (ci == CRYPT_HW_INVALID) { + log_err(_("Device %s or kernel does not support OPAL2 encryption."), + crypt_get_device_name(cd)); + r = -EINVAL; + goto out; + } + + keysize = crypt_get_volume_key_size(cd); + if (keysize <= 0) + return -EINVAL; + + if (ARG_SET(OPT_VOLUME_KEY_FILE_ID) || ARG_SET(OPT_VOLUME_KEY_KEYRING_ID)) { + r = luks_init_keyslot_contexts_by_volume_keys(cd, vk_files[0], NULL, + keysize, 0, + vks_in_keyring[0], + NULL, + &kc1, &dummy); + if (r < 0) + goto out; + } else { + r = luks_try_token_unlock(cd, ARG_INT32(OPT_KEY_SLOT_ID), + ARG_INT32(OPT_TOKEN_ID_ID), NULL, + ARG_STR(OPT_TOKEN_TYPE_ID), 0, + set_tries_tty(false), true, + ARG_SET(OPT_TOKEN_ONLY_ID) || ARG_SET(OPT_TOKEN_ID_ID) || ARG_SET(OPT_TOKEN_TYPE_ID), + &kc1); + if (quit || (r < 0 && ARG_SET(OPT_TOKEN_ONLY_ID))) + goto out; + + if (r < 0) { + tries = set_tries_tty(true); + do { + crypt_keyslot_context_free(kc1); + kc1 = NULL; + r = luks_init_keyslot_context(cd, NULL, verify_passphrase(0), + false, &kc1); + if (r < 0) + goto out; + + r = crypt_activate_by_keyslot_context(cd, NULL, ARG_INT32(OPT_KEY_SLOT_ID), + kc1, CRYPT_ANY_SLOT, NULL, 0); + + tools_keyslot_msg(r, UNLOCKED); + tools_passphrase_msg(r); + check_signal(&r); + } while ((r == -EPERM || r == -ERANGE) && (--tries > 0)); + } + } + + if (r < 0) + goto out; + + r = crypt_get_hw_opal_locking_ranges_by_keyslot_context(cd, ARG_INT32(OPT_KEY_SLOT_ID), + kc1, &response, 1); + if (!r) { + log_std(_("No LUKS2 segment with OPAL2 configured on device %s.\n"), + crypt_get_device_name(cd)); + r = -ENOENT; + } else if (r == -EPERM) { + log_err(_("The key stored in LUKS2 metadata does not unlock OPAL2 segment.")); + } else if (r < 0 || r > 1) + log_err(_("Failed to query device %s for OPAL2 segments."), crypt_get_device_name(cd)); + + if (r < 0) + goto out; + + log_std("LUKS header information for %s\n", crypt_get_device_name(cd)); + if (hw_enc == CRYPT_SW_AND_OPAL_HW) { + log_std("Cipher name: \t%s (over HW OPAL)\n", crypt_get_cipher(cd)); + log_std("Cipher mode: \t%s (over HW OPAL)\n", crypt_get_cipher_mode(cd)); + log_std("keysize:\t%d [bits]\n", (keysize - crypt_get_hw_encryption_key_size(cd)) * 8); + } + log_std("OPAL keysize:\t%d [bits]\n", crypt_get_hw_encryption_key_size(cd) * 8); + log_std("Payload offset:\t%d\n", (int)crypt_get_data_offset(cd)); + log_std("UUID: \t%s\n", crypt_get_uuid(cd)); + log_std("OPAL subsystem:\t%s\n", crypt_hw_status_to_string(ci)); + + print_opal_table_header(); + print_opal_table_line(&response); + + r = 0; +out: + crypt_keyslot_context_free(kc1); + crypt_keyslot_context_free(dummy); + + return r; +} + static int action_luksDump(void) { struct crypt_device *cd = NULL; @@ -2670,6 +2851,8 @@ static int action_luksDump(void) r = luksDump_with_volume_key(cd); else if (ARG_SET(OPT_UNBOUND_ID)) r = luksDump_with_unbound_key(cd); + else if (ARG_SET(OPT_DUMP_HW_OPAL_ID)) + r = luksDump_with_opal(cd); else if (ARG_SET(OPT_DUMP_JSON_ID)) r = crypt_dump_json(cd, NULL, 0); else diff --git a/src/cryptsetup_arg_list.h b/src/cryptsetup_arg_list.h index 1f470c2d4..7dd9d95fe 100644 --- a/src/cryptsetup_arg_list.h +++ b/src/cryptsetup_arg_list.h @@ -42,6 +42,8 @@ ARG(OPT_DISABLE_SUM, '\0', POPT_ARG_NONE, N_("Disable OPAL2 SUM (Single User Mod ARG(OPT_DISABLE_VERACRYPT, '\0', POPT_ARG_NONE, N_("Do not scan for VeraCrypt compatible device"), NULL, CRYPT_ARG_BOOL, {}, OPT_DISABLE_VERACRYPT_ACTIONS) +ARG(OPT_DUMP_HW_OPAL, '\0', POPT_ARG_NONE, N_("Dump info about HW OPAL device"), NULL, CRYPT_ARG_BOOL, {}, OPT_DUMP_HW_OPAL_ACTIONS) + ARG(OPT_DUMP_JSON, '\0', POPT_ARG_NONE, N_("Dump info in JSON format (LUKS2 only)"), NULL, CRYPT_ARG_BOOL, {}, {}) ARG(OPT_DUMP_VOLUME_KEY, '\0', POPT_ARG_NONE, N_("Dump volume key instead of keyslots info"), NULL, CRYPT_ARG_BOOL, {}, {}) diff --git a/src/cryptsetup_args.h b/src/cryptsetup_args.h index 696cbd148..71170303e 100644 --- a/src/cryptsetup_args.h +++ b/src/cryptsetup_args.h @@ -45,6 +45,7 @@ #define OPT_ALLOW_DISCARDS_ACTIONS { OPEN_ACTION } #define OPT_DEFERRED_ACTIONS { CLOSE_ACTION } #define OPT_DEVICE_SIZE_ACTIONS { OPEN_ACTION, RESIZE_ACTION, REENCRYPT_ACTION } +#define OPT_DUMP_HW_OPAL_ACTIONS { LUKSDUMP_ACTION } #define OPT_DISABLE_BLKID_ACTIONS { FORMAT_ACTION, REENCRYPT_ACTION } #define OPT_DISABLE_SUM_ACTIONS { FORMAT_ACTION } #define OPT_DISABLE_VERACRYPT_ACTIONS { OPEN_ACTION, TCRYPTDUMP_ACTION } diff --git a/src/utils_arg_names.h b/src/utils_arg_names.h index 677bd9da2..796e5a08b 100644 --- a/src/utils_arg_names.h +++ b/src/utils_arg_names.h @@ -35,6 +35,7 @@ #define OPT_DISABLE_LOCKS "disable-locks" #define OPT_DISABLE_SUM "disable-sum" #define OPT_DISABLE_VERACRYPT "disable-veracrypt" +#define OPT_DUMP_HW_OPAL "dump-hw-opal" #define OPT_DUMP_JSON "dump-json-metadata" #define OPT_DUMP_MASTER_KEY "dump-master-key" #define OPT_DUMP_VOLUME_KEY "dump-volume-key" From 4cad810faff3769f7d126914885becc463106869 Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Tue, 7 Apr 2026 14:57:17 +0200 Subject: [PATCH 243/244] Add opaldump support in cryptsetup. Adds new action opaldump for printing OPAL device specific informations. It can be used on any device even device without LUKS2 metadata. --- man/Makemodule.am | 2 + man/common_options.adoc | 6 +-- man/cryptsetup-opaldump.8.adoc | 59 +++++++++++++++++++++++++ man/cryptsetup.8.adoc | 9 ++++ man/meson.build | 4 ++ src/cryptsetup.c | 81 ++++++++++++++++++++++++++++++++++ src/cryptsetup_args.h | 1 + 7 files changed, 159 insertions(+), 3 deletions(-) create mode 100644 man/cryptsetup-opaldump.8.adoc diff --git a/man/Makemodule.am b/man/Makemodule.am index 03beb7a09..bf55a596b 100644 --- a/man/Makemodule.am +++ b/man/Makemodule.am @@ -30,6 +30,7 @@ ADOCFILES = $(ADOCFILES_COMMON) \ man/cryptsetup-tcryptDump.8.adoc \ man/cryptsetup-bitlkDump.8.adoc \ man/cryptsetup-fvault2Dump.8.adoc \ + man/cryptsetup-opaldump.8.adoc \ man/cryptsetup-repair.8.adoc \ man/cryptsetup-benchmark.8.adoc \ man/cryptsetup-ssh.8.adoc \ @@ -66,6 +67,7 @@ CRYPTSETUP_MANPAGES = \ man/cryptsetup-tcryptDump.8 \ man/cryptsetup-bitlkDump.8 \ man/cryptsetup-fvault2Dump.8 \ + man/cryptsetup-opaldump.8 \ man/cryptsetup-repair.8 \ man/cryptsetup-benchmark.8 diff --git a/man/common_options.adoc b/man/common_options.adoc index 5135a1c8b..ecc721967 100644 --- a/man/common_options.adoc +++ b/man/common_options.adoc @@ -144,7 +144,7 @@ Do not load the volume key in the kernel keyring; store it directly in the dm-cr This option is supported only for the LUKS2 type. endif::[] -ifndef::ACTION_BENCHMARK,ACTION_BITLKDUMP,ACTION_TCRYPTDUMP[] +ifndef::ACTION_BENCHMARK,ACTION_BITLKDUMP,ACTION_TCRYPTDUMP,ACTION_OPALDUMP[] *--disable-locks*:: Disable lock protection for metadata on disk. This option is valid only for LUKS2 and is ignored for other formats. @@ -262,7 +262,7 @@ Use _cryptsetup --help_ to show the defaults. endif::[] endif::[] -ifndef::ACTION_BENCHMARK,ACTION_BITLKDUMP[] +ifndef::ACTION_BENCHMARK,ACTION_BITLKDUMP,ACTION_OPALDUMP[] *--header* __:: ifndef::ACTION_OPEN,ACTION_ERASE[] Use a detached (separated) metadata device or file where the LUKS header is stored. @@ -1042,7 +1042,7 @@ Do not activate the device, just verify the passphrase. The device mapping name is not mandatory if this option is used. endif::[] -ifdef::ACTION_OPEN,ACTION_LUKSFORMAT,ACTION_LUKSADDKEY,ACTION_LUKSCHANGEKEY,ACTION_LUKSCONVERTKEY,ACTION_LUKSREMOVEKEY,ACTION_LUKSKILLSLOT,ACTION_LUKSDUMP,ACTION_REENCRYPT,ACTION_REPAIR,ACTION_LUKSRESUME,ACTION_RESIZE,ACTION_TCRYPTDUMP,ACTION_BITLKDUMP[] +ifdef::ACTION_OPEN,ACTION_LUKSFORMAT,ACTION_LUKSADDKEY,ACTION_LUKSCHANGEKEY,ACTION_LUKSCONVERTKEY,ACTION_LUKSREMOVEKEY,ACTION_LUKSKILLSLOT,ACTION_LUKSDUMP,ACTION_OPALDUMP,ACTION_REENCRYPT,ACTION_REPAIR,ACTION_LUKSRESUME,ACTION_RESIZE,ACTION_TCRYPTDUMP,ACTION_BITLKDUMP[] *--timeout*, *-t* _seconds_:: The number of seconds to wait before a timeout on passphrase input via terminal. It is relevant every time a passphrase is asked. diff --git a/man/cryptsetup-opaldump.8.adoc b/man/cryptsetup-opaldump.8.adoc new file mode 100644 index 000000000..f350cef60 --- /dev/null +++ b/man/cryptsetup-opaldump.8.adoc @@ -0,0 +1,59 @@ += cryptsetup-opaldump(8) +:doctype: manpage +:manmanual: Maintenance Commands +:mansource: cryptsetup {release-version} +:man-linkstyle: pass:[blue R < >] +:COMMON_OPTIONS: +:ACTION_OPALDUMP: + +== Name + +cryptsetup-opaldump - dump the OPAL information of a SED (Self Encrypting Drive) device + +== SYNOPSIS + +*cryptsetup _opaldump_ [] * + +== DESCRIPTION + +Dump the hardware encryption information of a SED (Self Encrypting Drive) device that provides an *OPAL* interface. + +Unlike *luksDump*, this action does not require the device to contain LUKS2 metadata; it queries the drive itself and can be used on any OPAL-capable device. + +The command first prints the OPAL subsystem status of the device (for example, whether the drive supports OPAL2, or OPAL2 with Single User Mode (SUM)). + +If the drive is OPAL-enabled, an OPAL Admin password is requested (interactively or with a timeout controlled by --timeout) and used to query the drive. +On success, a table of the configured OPAL locking ranges is printed, with the following columns: + +*ID*:: +The locking range identifier. + +*Offset (bytes)*:: +The start of the locking range on the device, in bytes. Any partition table present on the device is ignored. + +*Length (bytes)*:: +The size of the locking range, in bytes. + +*ReadLocking*:: +Whether read locking is enabled for the range (enabled/disabled). + +*WriteLocking*:: +Whether write locking is enabled for the range (enabled/disabled). + +*Mode*:: +The current lock state of the range (read-write, read-only or locked). + +*SUM*:: +Whether the range is managed in Single User Mode (enabled/disabled, or unknown if the drive does not report it). + +*RangePolicy*:: +The range policy reported by the drive (enabled/disabled, or unknown). + +OPAL support requires at least kernel v6.4. + +Note that the OPAL Admin password protects the hardware encryption configuration of the whole drive; handle it with the same care as a volume key. + +** can be [--timeout]. + +include::man/common_options.adoc[] +include::man/common_footer.adoc[] diff --git a/man/cryptsetup.8.adoc b/man/cryptsetup.8.adoc index 2d97edc47..3045f41b2 100644 --- a/man/cryptsetup.8.adoc +++ b/man/cryptsetup.8.adoc @@ -383,6 +383,15 @@ PSID must be entered without dashes, spaces or underscores. *WARNING*: A factory reset will cause ALL data on the device to be lost, regardless of the partition it is run on, if any, and regardless of any LUKS2 header backup. +=== DUMP +*opaldump * + +Dump the OPAL information (subsystem status and configured locking ranges) of a device that provides an *OPAL* interface. +The device does not need to contain LUKS2 metadata; an OPAL Admin password is requested to query the drive. +See *cryptsetup-opaldump*(8). + +To dump the OPAL locking range associated with an existing LUKS2 device instead, use *luksDump* with the --dump-hw-opal option. + == MISCELLANEOUS ACTIONS === REPAIR diff --git a/man/meson.build b/man/meson.build index 74df0b317..1a49dc547 100644 --- a/man/meson.build +++ b/man/meson.build @@ -128,6 +128,10 @@ cryptsetup_manpages = [ 'cryptsetup-fvault2Dump.8.adoc', [], ], + [ + 'cryptsetup-opaldump.8.adoc', + [], + ], [ 'cryptsetup-repair.8.adoc', [], diff --git a/src/cryptsetup.c b/src/cryptsetup.c index a50349510..ac5012f43 100644 --- a/src/cryptsetup.c +++ b/src/cryptsetup.c @@ -3014,6 +3014,86 @@ static int action_luksRestore(void) return r; } +static int action_opaldump(void) +{ + int r, response_count; + crypt_status_hw_encryption_info ci; + struct crypt_hw_opal_range *response = NULL; + char *admin_pin = NULL; + size_t count, i = 0, admin_pin_size = 0; + struct crypt_device *cd = NULL; + + if ((r = crypt_init(&cd, action_argv[0]))) + return r; + + ci = crypt_status_hw_encryption(cd); + if (ci == CRYPT_HW_INVALID) { + log_err(_("Device %s or kernel does not support OPAL2 encryption."), + crypt_get_device_name(cd)); + r = -EINVAL; + goto out; + } + + if (ci == CRYPT_HW_OTHER) { + log_err(_("Unsupported HW OPAL profile on device %s."), + crypt_get_device_name(cd)); + r = -EINVAL; + goto out; + } + + r = crypt_get_hw_opal_enabled(cd); + if (r <= 0) { + log_err(_("Device %s was not configured for OPAL2 encryption."), + crypt_get_device_name(cd)); + r = -EINVAL; + goto out; + } + + r = crypt_hw_opal_locking_ranges_max(cd); + if (r < 0) + goto out; + response_count = r; + + response = malloc(sizeof(*response) * response_count); + if (!response) { + r = -ENOMEM; + goto out; + } + + r = tools_get_key(_("Enter OPAL Admin password: "), &admin_pin, &admin_pin_size, + 0, 0, NULL, ARG_UINT32(OPT_TIMEOUT_ID), 0, 0, cd); + if (r < 0) + goto out; + + r = crypt_get_hw_opal_locking_ranges(cd, admin_pin, admin_pin_size, response, response_count); + if (!r) { + log_std(_("No OPAL2 segment configured on device %s.\n"), action_argv[0]); + r = -ENOENT; + } else if (r == -EPERM) { + log_err(_("Invalid OPAL Admin password provided.")); + } else if (r < 0) + log_err(_("Failed to query device %s for OPAL2 segments."), action_argv[0]); + + if (r < 0) + goto out; + + count = (size_t)r; + + log_std("OPAL information for %s\n", crypt_get_device_name(cd)); + log_std("OPAL subsystem: %s\n", crypt_hw_status_to_string(ci)); + + print_opal_table_header(); + while (i < count) + print_opal_table_line(response + i++); + + r = 0; +out: + crypt_safe_free(admin_pin); + crypt_free(cd); + free(response); + return r; +} + static const char *_get_device_type(void) { const char *type, *name = NULL; @@ -3703,6 +3783,7 @@ static struct action_type { { UUID_ACTION, action_luksUUID, NULL, 1, N_(""), N_("print UUID of LUKS device") }, { ISLUKS_ACTION, action_isLuks, NULL, 1, N_(""), N_("tests for LUKS partition header") }, { LUKSDUMP_ACTION, action_luksDump, verify_luksDump, 1, N_(""), N_("dump LUKS partition information") }, + { OPALDUMP_ACTION, action_opaldump, NULL, 1, N_(""), N_("dump OPAL2 device information") }, { TCRYPTDUMP_ACTION, action_tcryptDump, verify_tcryptdump, 1, N_(""), N_("dump TCRYPT device information") }, { BITLKDUMP_ACTION, action_bitlkDump, NULL, 1, N_(""), N_("dump BITLK device information") }, { FVAULT2DUMP_ACTION, action_fvault2Dump, NULL, 1, N_(""), N_("dump FVAULT2 device information") }, diff --git a/src/cryptsetup_args.h b/src/cryptsetup_args.h index 71170303e..2417bbb32 100644 --- a/src/cryptsetup_args.h +++ b/src/cryptsetup_args.h @@ -29,6 +29,7 @@ #define KILLKEY_ACTION "luksKillSlot" #define LUKSDUMP_ACTION "luksDump" #define OPEN_ACTION "open" +#define OPALDUMP_ACTION "opaldump" #define REENCRYPT_ACTION "reencrypt" #define REMOVEKEY_ACTION "luksRemoveKey" #define REPAIR_ACTION "repair" From 102e91cb0fee849bb86fb1ec4d6ea218e45563cd Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Tue, 22 Sep 2026 11:25:59 +0200 Subject: [PATCH 244/244] tests: add opaldump and luksDump --dump-hw-opal tests Add compat-test-opal coverage for the new OPAL dump features: the standalone opaldump action and the luksDump --dump-hw-opal option, for both --hw-opal and --hw-opal-only formatted devices. Also covers the error paths: wrong OPAL Admin password, non-OPAL device, wrong passphrase and a SW-only LUKS2 device. Co-Authored-By: Claude Opus 4.8 --- tests/compat-test-opal | 63 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/tests/compat-test-opal b/tests/compat-test-opal index cfe274914..67e168ff1 100755 --- a/tests/compat-test-opal +++ b/tests/compat-test-opal @@ -38,6 +38,9 @@ TOKEN_FILE0=test-token-file0 TOKEN_FILE1=test-token-file1 KEY_FILE0=test-key-file0 KEY_FILE1=test-key-file1 +OPALDUMP_OUT=opaldump_out +LUKSDUMP_OUT=luksdump_out +IMG_OPALDUMP=test_image_opaldump FAST_PBKDF_OPT="--pbkdf pbkdf2 --pbkdf-force-iterations 1000" @@ -50,7 +53,8 @@ remove_mapping() [ -b /dev/mapper/"$DEV_NAME"_dif ] && dmsetup remove --retry "$DEV_NAME"_dif rm -f $KEY1 $KEY2 $KEY5 $KEYE $HEADER_IMG $VK_FILE \ $HEADER_LUKS2_INV missing-file $TOKEN_FILE0 $TOKEN_FILE1 test_image_* \ - $KEY_FILE0 $KEY_FILE1 $KEY_PWD1 $NO_HEADER_IMG >/dev/null 2>&1 + $KEY_FILE0 $KEY_FILE1 $KEY_PWD1 $NO_HEADER_IMG \ + $OPALDUMP_OUT $LUKSDUMP_OUT $IMG_OPALDUMP >/dev/null 2>&1 # unlink all test keys if [ -n "$TEST_KEYRING" ]; then @@ -459,6 +463,31 @@ test_device_detached_header() #hdr, #opal_mode, #format_params, #--integrity-no- rm -f $1 } +# $1 opal format flag (--hw-opal | --hw-opal-only) +# Requires an OPAL LUKS2 device formatted with $OPAL2_ADMIN_PIN already present. +opaldump_check() #opal_mode +{ + echo $OPAL2_ADMIN_PIN | $CRYPTSETUP opaldump $OPAL2_DEV > $OPALDUMP_OUT 2>/dev/null || fail "opaldump failed ($1)." + grep -q "OPAL subsystem:" $OPALDUMP_OUT || fail "opaldump: missing OPAL subsystem info ($1)." + grep -q "OPAL Locking Ranges:" $OPALDUMP_OUT || fail "opaldump: missing OPAL locking ranges table ($1)." + rm -f $OPALDUMP_OUT +} + +# $1 opal format flag (--hw-opal | --hw-opal-only) +# Requires an OPAL LUKS2 device unlockable with $PWD1 already present. +luksdump_opal_check() #opal_mode +{ + echo $PWD1 | $CRYPTSETUP luksDump --dump-hw-opal $OPAL2_DEV > $LUKSDUMP_OUT 2>/dev/null || fail "luksDump --dump-hw-opal failed ($1)." + grep -q "OPAL keysize:" $LUKSDUMP_OUT || fail "luksDump --dump-hw-opal: missing OPAL keysize ($1)." + grep -q "OPAL subsystem:" $LUKSDUMP_OUT || fail "luksDump --dump-hw-opal: missing OPAL subsystem ($1)." + grep -q "OPAL Locking Ranges:" $LUKSDUMP_OUT || fail "luksDump --dump-hw-opal: missing OPAL locking ranges table ($1)." + # Only dm-crypt over OPAL prints the software cipher info tagged as "(over HW OPAL)". + if [ "$1" = "--hw-opal" ]; then + grep -q "(over HW OPAL)" $LUKSDUMP_OUT || fail "luksDump --dump-hw-opal: missing '(over HW OPAL)' cipher info." + fi + rm -f $LUKSDUMP_OUT +} + run_token_tests() { $CRYPTSETUP token add $OPAL2_DEV --key-description $TEST_TOKEN0 --token-id 3 || fail $CRYPTSETUP luksDump $OPAL2_DEV | grep -q -e "3: luks2-keyring" || fail @@ -1394,8 +1423,40 @@ prepare "[47] OPAL2 + auth encryption test (detached header)" wipe test_device_detached_header $HEADER_IMG --hw-opal "-c aes-gcm-random --integrity aead" --integrity-no-wipe test_device_detached_header $HEADER_IMG --hw-opal "-s 280 -c aes-ccm-random --integrity aead" --integrity-no-wipe +prepare "[48] opaldump action" wipe +echo -e "$PWD1\n$OPAL2_ADMIN_PIN" | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 --hw-opal-only $OPAL2_DEV || fail +opaldump_check --hw-opal-only + +echo -e "$PWD1\n$OPAL2_ADMIN_PIN" | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 --hw-opal $OPAL2_DEV || fail +opaldump_check --hw-opal +# A wrong OPAL Admin password must be rejected. Executed exactly ONCE on purpose: +# every failed OPAL authenticate counts against the drive's Admin TryLimit. +echo "$PWDW" | $CRYPTSETUP opaldump $OPAL2_DEV > $OPALDUMP_OUT 2>&1 && fail "opaldump accepted a wrong OPAL Admin password." +grep -q "Invalid OPAL Admin password provided." $OPALDUMP_OUT || fail "opaldump did not report invalid OPAL Admin password." +rm -f $OPALDUMP_OUT +# opaldump on a device without OPAL support must be rejected (no drive authenticate). +dd if=/dev/zero of=$IMG_OPALDUMP bs=1M count=16 >/dev/null 2>&1 || fail +$CRYPTSETUP opaldump $IMG_OPALDUMP >/dev/null 2>&1 && fail "opaldump accepted a non-OPAL device." +rm -f $IMG_OPALDUMP + +prepare "[49] luksDump --dump-hw-opal" wipe +echo -e "$PWD1\n$OPAL2_ADMIN_PIN" | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 --hw-opal-only $OPAL2_DEV || fail +luksdump_opal_check --hw-opal-only + +echo -e "$PWD1\n$OPAL2_ADMIN_PIN" | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 --hw-opal $OPAL2_DEV || fail +luksdump_opal_check --hw-opal +# A wrong passphrase must fail (safe: fails at LUKS unlock, never touches the OPAL SP). +echo "$PWDW" | $CRYPTSETUP luksDump --dump-hw-opal $OPAL2_DEV >/dev/null 2>&1 && fail "luksDump --dump-hw-opal accepted a wrong passphrase." + +prepare "[50] luksDump --dump-hw-opal rejects SW-only LUKS2 device" wipe +echo $PWD1 | $CRYPTSETUP -q luksFormat $FAST_PBKDF_OPT --type luks2 $OPAL2_DEV || fail +echo $PWD1 | $CRYPTSETUP luksDump --dump-hw-opal $OPAL2_DEV 2>&1 | grep -q "not configured for OPAL2 encryption" || fail "luksDump --dump-hw-opal did not reject a SW-only LUKS2 device." + # FIXME: Add partition based tests remove_mapping reset_device_psid_nofail + +echo $OPAL2_ADMIN_PIN | $CRYPTSETUP opaldump $OPAL2_DEV >/dev/null 2>&1 && fail "opaldump passed on device after PSID reset" + exit 0