mirror of
https://gitlab.com/cryptsetup/cryptsetup.git
synced 2025-12-07 00:40:01 +01:00
Compare commits
36 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d42e87ac78 | ||
|
|
4635d7bf31 | ||
|
|
6b81dd6a6f | ||
|
|
cddf4d859d | ||
|
|
5ec2bba807 | ||
|
|
b237358079 | ||
|
|
355bd4a224 | ||
|
|
cd57ff672c | ||
|
|
cdd6f94c56 | ||
|
|
4ac7e5a4d2 | ||
|
|
fd833b625d | ||
|
|
e38a19f5e9 | ||
|
|
f47b7ba425 | ||
|
|
5107296213 | ||
|
|
19dc09131d | ||
|
|
78d014e27d | ||
|
|
c10aff8a9d | ||
|
|
611278ca39 | ||
|
|
a35c0694b1 | ||
|
|
1dcd5a3de5 | ||
|
|
346e1d1264 | ||
|
|
39d5fd28ed | ||
|
|
0516a1a676 | ||
|
|
17c87c1148 | ||
|
|
566f48f7a4 | ||
|
|
4f14b43a3d | ||
|
|
4a42f27d78 | ||
|
|
d39b33a371 | ||
|
|
71c0c1f26d | ||
|
|
743fbbc451 | ||
|
|
7d207b7725 | ||
|
|
0007cd537d | ||
|
|
a058606210 | ||
|
|
f46683d0c2 | ||
|
|
37708b7cad | ||
|
|
ba7e7f94bf |
31
ChangeLog
31
ChangeLog
@@ -1,3 +1,34 @@
|
||||
2010-05-23 Milan Broz <mbroz@redhat.com>
|
||||
* Fix luksClose operation for stacked DM devices.
|
||||
* Version 1.1.1.
|
||||
|
||||
2010-05-03 Milan Broz <mbroz@redhat.com>
|
||||
* Fix automatic dm-crypt module loading.
|
||||
* Escape hyphens in man page.
|
||||
* Version 1.1.1-rc2.
|
||||
|
||||
2010-04-30 Milan Broz <mbroz@redhat.com>
|
||||
* Try to use pkgconfig for device mapper library.
|
||||
* Detect old dm-crypt module and disable LUKS suspend/resume.
|
||||
* Fix apitest to work on older systems.
|
||||
* Allow no hash specification in plain device constructor.
|
||||
* Fix luksOpen reading of passphrase on stdin (if "-" keyfile specified).
|
||||
* Fix isLuks to initialise crypto backend (blkid instead is suggested anyway).
|
||||
* Version 1.1.1-rc1.
|
||||
|
||||
2010-04-12 Milan Broz <mbroz@redhat.com>
|
||||
* Fix package config to use proper package version.
|
||||
* Avoid class C++ keyword in library header.
|
||||
* Detect and use devmapper udev support if available (disable by --disable-udev).
|
||||
|
||||
2010-04-06 Milan Broz <mbroz@redhat.com>
|
||||
* Prefer some device paths in status display.
|
||||
* Support device topology detectionfor data alignment.
|
||||
|
||||
2010-02-25 Milan Broz <mbroz@redhat.com>
|
||||
* Do not verify unlocking passphrase in luksAddKey command.
|
||||
* Properly initialise crypto backend in header backup/restore commands.
|
||||
|
||||
2010-01-17 Milan Broz <mbroz@redhat.com>
|
||||
* If gcrypt compiled with capabilities, document workaround for cryptsetup (see lib/gcrypt.c).
|
||||
* Version 1.1.0.
|
||||
|
||||
55
configure.in
55
configure.in
@@ -1,5 +1,10 @@
|
||||
AC_PREREQ(2.57)
|
||||
AC_INIT(cryptsetup,1.1.0)
|
||||
AC_INIT(cryptsetup,1.1.1)
|
||||
|
||||
dnl library version from <major>.<minor>.<release>[-<suffix>]
|
||||
LIBCRYPTSETUP_VERSION=$(echo $PACKAGE_VERSION | cut -f1 -d-)
|
||||
LIBCRYPTSETUP_VERSION_INFO=1:0:0
|
||||
|
||||
AC_CONFIG_SRCDIR(src/cryptsetup.c)
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
|
||||
@@ -37,7 +42,7 @@ LIBS=$saved_LIBS
|
||||
|
||||
AM_PATH_LIBGCRYPT(1.1.42,,[AC_MSG_ERROR('You need the gcrypt library')])
|
||||
|
||||
AC_CHECK_FUNCS([setlocale, posix_memalign])
|
||||
AC_CHECK_FUNCS([posix_memalign])
|
||||
|
||||
AC_C_CONST
|
||||
AC_C_BIGENDIAN
|
||||
@@ -71,11 +76,34 @@ AM_CONDITIONAL(STATIC_LIBRARY, test x$enable_shared_library = xno)
|
||||
AC_ARG_ENABLE(selinux,
|
||||
[ --disable-selinux disable selinux support [[default=auto]]],[], [])
|
||||
|
||||
AC_ARG_ENABLE([udev],AS_HELP_STRING([--disable-udev],[disable udev support]),[], enable_udev=yes)
|
||||
|
||||
dnl Try to use pkg-config for devmapper, but fallback to old detection
|
||||
saved_LIBS=$LIBS
|
||||
AC_CHECK_LIB(devmapper, dm_task_set_name,,[AC_MSG_ERROR('You need the device-mapper library')])
|
||||
AC_CHECK_LIB(devmapper, dm_task_set_message,,
|
||||
[AC_MSG_ERROR([The device-mapper library on your system is too old.])])
|
||||
DEVMAPPER_LIBS=$LIBS
|
||||
if AC_RUN_LOG([pkg-config --exists --print-errors devmapper]); then
|
||||
PKG_PROG_PKG_CONFIG
|
||||
if test x$enable_static = xyes; then
|
||||
PKG_CONFIG="$PKG_CONFIG --static"
|
||||
fi
|
||||
PKG_CHECK_MODULES([DEVMAPPER], [devmapper >= 1.02.03])
|
||||
LIBS="$LIBS $DEVMAPPER_LIBS"
|
||||
else
|
||||
AC_CHECK_LIB(devmapper, dm_task_set_name,,
|
||||
[AC_MSG_ERROR('You need the device-mapper library')])
|
||||
AC_CHECK_LIB(devmapper, dm_task_set_message,,
|
||||
[AC_MSG_ERROR([The device-mapper library on your system is too old.])])
|
||||
DEVMAPPER_LIBS=$LIBS
|
||||
fi
|
||||
|
||||
AC_CHECK_FUNCS([dm_task_set_cookie], [have_cookie=yes], [have_cookie=no])
|
||||
if test "x$enable_udev" = xyes; then
|
||||
if test "x$have_cookie" = xno; then
|
||||
AC_MSG_WARN([The device-mapper library on your system has no udev support, udev support disabled.])
|
||||
else
|
||||
AC_DEFINE(USE_UDEV, 1, [Try to use udev synchronisation?])
|
||||
fi
|
||||
fi
|
||||
|
||||
LIBS=$saved_LIBS
|
||||
if test "x$enable_selinux" != xno; then
|
||||
AC_CHECK_LIB(sepol, sepol_bool_set)
|
||||
@@ -91,20 +119,13 @@ if test "x$enable_selinux" != xno; then
|
||||
fi
|
||||
fi
|
||||
|
||||
if test x$enable_static = xyes; then
|
||||
saved_LIBS2=$LIBS
|
||||
LIBS="$LIBS -static"
|
||||
# Check if it there is still not some missing dependency like static selinux libs
|
||||
AC_SEARCH_LIBS([dm_set_selinux_context], [devmapper],,
|
||||
[AC_MSG_ERROR([Your system requires SElinux libraries for static compilation.])])
|
||||
LIBS=$saved_LIBS2
|
||||
fi
|
||||
|
||||
LIBS=$saved_LIBS
|
||||
|
||||
DEVMAPPER_LIBS="$DEVMAPPER_LIBS $LIB_PTHREAD"
|
||||
AC_SUBST(DEVMAPPER_LIBS)
|
||||
AC_SUBST(SELINUX_STATIC_LIBS)
|
||||
AC_SUBST([DEVMAPPER_LIBS])
|
||||
AC_SUBST([SELINUX_STATIC_LIBS])
|
||||
AC_SUBST([LIBCRYPTSETUP_VERSION])
|
||||
AC_SUBST([LIBCRYPTSETUP_VERSION_INFO])
|
||||
|
||||
dnl ==========================================================================
|
||||
AC_DEFUN([CS_DEFINE],
|
||||
|
||||
@@ -26,7 +26,7 @@ libcryptsetup_la_DEPENDENCIES = libcryptsetup.sym
|
||||
libcryptsetup_la_LDFLAGS = \
|
||||
$(_STATIC_LIBRARY) \
|
||||
-Wl,--version-script=$(top_srcdir)/lib/libcryptsetup.sym \
|
||||
-version-info 1:0:0
|
||||
-version-info @LIBCRYPTSETUP_VERSION_INFO@
|
||||
|
||||
libcryptsetup_la_CFLAGS = -Wall @LIBGCRYPT_CFLAGS@
|
||||
|
||||
|
||||
@@ -23,8 +23,10 @@ int init_crypto(void)
|
||||
* and it locks its memory space anyway.
|
||||
*/
|
||||
#if 0
|
||||
log_dbg("Initializing crypto backend (secure memory disabled).");
|
||||
gcry_control (GCRYCTL_DISABLE_SECMEM);
|
||||
#else
|
||||
log_dbg("Initializing crypto backend (using secure memory).");
|
||||
gcry_control (GCRYCTL_SUSPEND_SECMEM_WARN);
|
||||
gcry_control (GCRYCTL_INIT_SECMEM, 16384, 0);
|
||||
gcry_control (GCRYCTL_RESUME_SECMEM_WARN);
|
||||
|
||||
@@ -120,4 +120,9 @@ void debug_processes_using_device(const char *name);
|
||||
int crypt_memlock_inc(struct crypt_device *ctx);
|
||||
int crypt_memlock_dec(struct crypt_device *ctx);
|
||||
|
||||
void get_topology_alignment(const char *device,
|
||||
unsigned long *required_alignment, /* bytes */
|
||||
unsigned long *alignment_offset, /* bytes */
|
||||
unsigned long default_alignment);
|
||||
|
||||
#endif /* INTERNAL_H */
|
||||
|
||||
@@ -37,24 +37,24 @@ int crypt_init_by_name(struct crypt_device **cd, const char *name);
|
||||
*
|
||||
* @cd - crypt device handle (can be NULL to set default log function)
|
||||
* @usrptr - provided identification in callback
|
||||
* @class - log type below (debug messages can uses other levels)
|
||||
* @level - log level below (debug messages can uses other levels)
|
||||
* @msg - log message
|
||||
*/
|
||||
#define CRYPT_LOG_NORMAL 0
|
||||
#define CRYPT_LOG_ERROR 1
|
||||
#define CRYPT_LOG_DEBUG -1 /* always on stdout */
|
||||
void crypt_set_log_callback(struct crypt_device *cd,
|
||||
void (*log)(int class, const char *msg, void *usrptr),
|
||||
void (*log)(int level, const char *msg, void *usrptr),
|
||||
void *usrptr);
|
||||
|
||||
/**
|
||||
* Log message through log function.
|
||||
*
|
||||
* @cd - crypt device handle
|
||||
* @class - log type
|
||||
* @level - log level
|
||||
* @msg - log message
|
||||
*/
|
||||
void crypt_log(struct crypt_device *cd, int class, const char *msg);
|
||||
void crypt_log(struct crypt_device *cd, int level, const char *msg);
|
||||
|
||||
/**
|
||||
* Set confirmation callback (yes/no)
|
||||
@@ -518,7 +518,7 @@ void crypt_set_debug_level(int level);
|
||||
|
||||
struct interface_callbacks {
|
||||
int (*yesDialog)(char *msg);
|
||||
void (*log)(int class, char *msg);
|
||||
void (*log)(int level, char *msg);
|
||||
};
|
||||
|
||||
#define CRYPT_FLAG_VERIFY (1 << 0)
|
||||
|
||||
@@ -5,6 +5,6 @@ includedir=@includedir@
|
||||
|
||||
Name: cryptsetup
|
||||
Description: cryptsetup library
|
||||
Version: 1.0.0
|
||||
Version: @LIBCRYPTSETUP_VERSION@
|
||||
Cflags: -I${includedir}
|
||||
Libs: -L${libdir} -lcryptsetup
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/stat.h>
|
||||
#include <stdio.h>
|
||||
#include <dirent.h>
|
||||
#include <errno.h>
|
||||
#include <libdevmapper.h>
|
||||
#include <linux/dm-ioctl.h>
|
||||
#include <fcntl.h>
|
||||
#include <linux/fs.h>
|
||||
#include <uuid/uuid.h>
|
||||
@@ -14,14 +12,39 @@
|
||||
#include "luks.h"
|
||||
|
||||
#define DEVICE_DIR "/dev"
|
||||
#define DM_UUID_LEN 129
|
||||
#define DM_UUID_PREFIX "CRYPT-"
|
||||
#define DM_UUID_PREFIX_LEN 6
|
||||
#define DM_CRYPT_TARGET "crypt"
|
||||
#define RETRY_COUNT 5
|
||||
|
||||
/* Set if dm-crypt version was probed */
|
||||
static int _dm_crypt_checked = 0;
|
||||
static int _dm_crypt_wipe_key_supported = 0;
|
||||
|
||||
static int _dm_use_count = 0;
|
||||
static struct crypt_device *_context = NULL;
|
||||
|
||||
/* Compatibility for old device-mapper without udev support */
|
||||
#ifndef HAVE_DM_TASK_SET_COOKIE
|
||||
#define CRYPT_TEMP_UDEV_FLAGS 0
|
||||
static int dm_task_set_cookie(struct dm_task *dmt, uint32_t *cookie, uint16_t flags) { return 0; }
|
||||
static int dm_udev_wait(uint32_t cookie) { return 0; };
|
||||
#else
|
||||
#define CRYPT_TEMP_UDEV_FLAGS DM_UDEV_DISABLE_SUBSYSTEM_RULES_FLAG | \
|
||||
DM_UDEV_DISABLE_DISK_RULES_FLAG | \
|
||||
DM_UDEV_DISABLE_OTHER_RULES_FLAG
|
||||
#endif
|
||||
|
||||
static int _dm_use_udev()
|
||||
{
|
||||
#ifdef USE_UDEV /* cannot be enabled if devmapper is too old */
|
||||
return dm_udev_get_sync_support();
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
static void set_dm_error(int level, const char *file, int line,
|
||||
const char *f, ...)
|
||||
{
|
||||
@@ -40,14 +63,58 @@ static void set_dm_error(int level, const char *file, int line,
|
||||
va_end(va);
|
||||
}
|
||||
|
||||
static int _dm_simple(int task, const char *name);
|
||||
static int _dm_simple(int task, const char *name, int udev_wait);
|
||||
|
||||
static void _dm_set_crypt_compat(int maj, int min, int patch)
|
||||
{
|
||||
log_dbg("Detected dm-crypt target of version %i.%i.%i.", maj, min, patch);
|
||||
|
||||
if (maj >= 1 && min >=2)
|
||||
_dm_crypt_wipe_key_supported = 1;
|
||||
else
|
||||
log_dbg("Suspend and resume disabled, no wipe key support.");
|
||||
|
||||
_dm_crypt_checked = 1;
|
||||
}
|
||||
|
||||
static int _dm_check_versions(void)
|
||||
{
|
||||
struct dm_task *dmt;
|
||||
struct dm_versions *target, *last_target;
|
||||
|
||||
if (_dm_crypt_checked)
|
||||
return 1;
|
||||
|
||||
if (!(dmt = dm_task_create(DM_DEVICE_LIST_VERSIONS)))
|
||||
return 0;
|
||||
|
||||
if (!dm_task_run(dmt)) {
|
||||
dm_task_destroy(dmt);
|
||||
return 0;
|
||||
}
|
||||
|
||||
target = dm_task_get_versions(dmt);
|
||||
do {
|
||||
last_target = target;
|
||||
if (!strcmp(DM_CRYPT_TARGET, target->name)) {
|
||||
_dm_set_crypt_compat((int)target->version[0],
|
||||
(int)target->version[1],
|
||||
(int)target->version[2]);
|
||||
}
|
||||
target = (void *) target + target->next;
|
||||
} while (last_target != target);
|
||||
|
||||
dm_task_destroy(dmt);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int dm_init(struct crypt_device *context, int check_kernel)
|
||||
{
|
||||
if (!_dm_use_count++) {
|
||||
log_dbg("Initialising device-mapper backend%s.",
|
||||
check_kernel ? "" : " (NO kernel check requested)");
|
||||
if (check_kernel && !_dm_simple(DM_DEVICE_LIST_VERSIONS, NULL)) {
|
||||
log_dbg("Initialising device-mapper backend%s, UDEV is %sabled.",
|
||||
check_kernel ? "" : " (NO kernel check requested)",
|
||||
_dm_use_udev() ? "en" : "dis");
|
||||
if (check_kernel && !_dm_check_versions()) {
|
||||
log_err(context, _("Cannot initialize device-mapper. Is dm_mod kernel module loaded?\n"));
|
||||
return -1;
|
||||
}
|
||||
@@ -75,7 +142,7 @@ void dm_exit(void)
|
||||
}
|
||||
}
|
||||
|
||||
static char *__lookup_dev(char *path, dev_t dev)
|
||||
static char *__lookup_dev(char *path, dev_t dev, int dir_level, const int max_level)
|
||||
{
|
||||
struct dirent *entry;
|
||||
struct stat st;
|
||||
@@ -84,6 +151,10 @@ static char *__lookup_dev(char *path, dev_t dev)
|
||||
DIR *dir;
|
||||
int space;
|
||||
|
||||
/* Ignore strange nested directories */
|
||||
if (dir_level > max_level)
|
||||
return NULL;
|
||||
|
||||
path[PATH_MAX - 1] = '\0';
|
||||
ptr = path + strlen(path);
|
||||
*ptr++ = '/';
|
||||
@@ -95,20 +166,22 @@ static char *__lookup_dev(char *path, dev_t dev)
|
||||
return NULL;
|
||||
|
||||
while((entry = readdir(dir))) {
|
||||
if (entry->d_name[0] == '.' &&
|
||||
(entry->d_name[1] == '\0' || (entry->d_name[1] == '.' &&
|
||||
entry->d_name[2] == '\0')))
|
||||
if (entry->d_name[0] == '.' ||
|
||||
!strncmp(entry->d_name, "..", 2))
|
||||
continue;
|
||||
|
||||
strncpy(ptr, entry->d_name, space);
|
||||
if (lstat(path, &st) < 0)
|
||||
if (stat(path, &st) < 0)
|
||||
continue;
|
||||
|
||||
if (S_ISDIR(st.st_mode)) {
|
||||
result = __lookup_dev(path, dev);
|
||||
result = __lookup_dev(path, dev, dir_level + 1, max_level);
|
||||
if (result)
|
||||
break;
|
||||
} else if (S_ISBLK(st.st_mode)) {
|
||||
/* workaround: ignore dm-X devices, these are internal kernel names */
|
||||
if (dir_level == 0 && !strncmp(entry->d_name, "dm-", 3))
|
||||
continue;
|
||||
if (st.st_rdev == dev) {
|
||||
result = strdup(path);
|
||||
break;
|
||||
@@ -117,22 +190,38 @@ static char *__lookup_dev(char *path, dev_t dev)
|
||||
}
|
||||
|
||||
closedir(dir);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
static char *lookup_dev(const char *dev)
|
||||
static char *lookup_dev(const char *dev_id)
|
||||
{
|
||||
uint32_t major, minor;
|
||||
char buf[PATH_MAX + 1];
|
||||
dev_t dev;
|
||||
char *result, buf[PATH_MAX + 1];
|
||||
|
||||
if (sscanf(dev, "%" PRIu32 ":%" PRIu32, &major, &minor) != 2)
|
||||
if (sscanf(dev_id, "%" PRIu32 ":%" PRIu32, &major, &minor) != 2)
|
||||
return NULL;
|
||||
|
||||
dev = makedev(major, minor);
|
||||
strncpy(buf, DEVICE_DIR, PATH_MAX);
|
||||
buf[PATH_MAX] = '\0';
|
||||
|
||||
return __lookup_dev(buf, makedev(major, minor));
|
||||
/* First try low level device */
|
||||
if ((result = __lookup_dev(buf, dev, 0, 0)))
|
||||
return result;
|
||||
|
||||
/* If it is dm, try DM dir */
|
||||
if (dm_is_dm_major(major)) {
|
||||
strncpy(buf, dm_dir(), PATH_MAX);
|
||||
if ((result = __lookup_dev(buf, dev, 0, 0)))
|
||||
return result;
|
||||
}
|
||||
|
||||
strncpy(buf, DEVICE_DIR, PATH_MAX);
|
||||
result = __lookup_dev(buf, dev, 0, 4);
|
||||
|
||||
/* If not found, return major:minor */
|
||||
return result ?: strdup(dev_id);
|
||||
}
|
||||
|
||||
static int _dev_read_ahead(const char *dev, uint32_t *read_ahead)
|
||||
@@ -185,10 +274,14 @@ out:
|
||||
}
|
||||
|
||||
/* DM helpers */
|
||||
static int _dm_simple(int task, const char *name)
|
||||
static int _dm_simple(int task, const char *name, int udev_wait)
|
||||
{
|
||||
int r = 0;
|
||||
struct dm_task *dmt;
|
||||
uint32_t cookie = 0;
|
||||
|
||||
if (!_dm_use_udev())
|
||||
udev_wait = 0;
|
||||
|
||||
if (!(dmt = dm_task_create(task)))
|
||||
return 0;
|
||||
@@ -196,8 +289,14 @@ static int _dm_simple(int task, const char *name)
|
||||
if (name && !dm_task_set_name(dmt, name))
|
||||
goto out;
|
||||
|
||||
if (udev_wait && !dm_task_set_cookie(dmt, &cookie, 0))
|
||||
goto out;
|
||||
|
||||
r = dm_task_run(dmt);
|
||||
|
||||
if (udev_wait)
|
||||
(void)dm_udev_wait(cookie);
|
||||
|
||||
out:
|
||||
dm_task_destroy(dmt);
|
||||
return r;
|
||||
@@ -226,8 +325,8 @@ static int _error_device(const char *name, size_t size)
|
||||
if (!dm_task_run(dmt))
|
||||
goto error;
|
||||
|
||||
if (!_dm_simple(DM_DEVICE_RESUME, name)) {
|
||||
_dm_simple(DM_DEVICE_CLEAR, name);
|
||||
if (!_dm_simple(DM_DEVICE_RESUME, name, 1)) {
|
||||
_dm_simple(DM_DEVICE_CLEAR, name, 0);
|
||||
goto error;
|
||||
}
|
||||
|
||||
@@ -248,7 +347,7 @@ int dm_remove_device(const char *name, int force, uint64_t size)
|
||||
return -EINVAL;
|
||||
|
||||
do {
|
||||
r = _dm_simple(DM_DEVICE_REMOVE, name) ? 0 : -EINVAL;
|
||||
r = _dm_simple(DM_DEVICE_REMOVE, name, 1) ? 0 : -EINVAL;
|
||||
if (--retries && r) {
|
||||
log_dbg("WARNING: other process locked internal device %s, %s.",
|
||||
name, retries ? "retrying remove" : "giving up");
|
||||
@@ -321,18 +420,22 @@ int dm_create_device(const char *name,
|
||||
int reload)
|
||||
{
|
||||
struct dm_task *dmt = NULL;
|
||||
struct dm_task *dmt_query = NULL;
|
||||
struct dm_info dmi;
|
||||
char *params = NULL;
|
||||
char *error = NULL;
|
||||
char dev_uuid[DM_UUID_LEN] = {0};
|
||||
int r = -EINVAL;
|
||||
uint32_t read_ahead = 0;
|
||||
uint32_t cookie = 0;
|
||||
uint16_t udev_flags = 0;
|
||||
|
||||
params = get_params(device, skip, offset, cipher, key_size, key);
|
||||
if (!params)
|
||||
goto out_no_removal;
|
||||
|
||||
if (type && !strncmp(type, "TEMP", 4))
|
||||
udev_flags = CRYPT_TEMP_UDEV_FLAGS;
|
||||
|
||||
/* All devices must have DM_UUID, only resize on old device is exception */
|
||||
if (reload) {
|
||||
if (!(dmt = dm_task_create(DM_DEVICE_RELOAD)))
|
||||
@@ -351,8 +454,10 @@ int dm_create_device(const char *name,
|
||||
|
||||
if (!dm_task_set_uuid(dmt, dev_uuid))
|
||||
goto out_no_removal;
|
||||
}
|
||||
|
||||
if (_dm_use_udev() && !dm_task_set_cookie(dmt, &cookie, udev_flags))
|
||||
goto out_no_removal;
|
||||
}
|
||||
|
||||
if (read_only && !dm_task_set_ro(dmt))
|
||||
goto out_no_removal;
|
||||
@@ -376,6 +481,8 @@ int dm_create_device(const char *name,
|
||||
goto out;
|
||||
if (uuid && !dm_task_set_uuid(dmt, dev_uuid))
|
||||
goto out;
|
||||
if (_dm_use_udev() && !dm_task_set_cookie(dmt, &cookie, udev_flags))
|
||||
goto out;
|
||||
if (!dm_task_run(dmt))
|
||||
goto out;
|
||||
}
|
||||
@@ -385,6 +492,11 @@ int dm_create_device(const char *name,
|
||||
|
||||
r = 0;
|
||||
out:
|
||||
if (_dm_use_udev()) {
|
||||
(void)dm_udev_wait(cookie);
|
||||
cookie = 0;
|
||||
}
|
||||
|
||||
if (r < 0 && !reload) {
|
||||
if (get_error())
|
||||
error = strdup(get_error());
|
||||
@@ -398,12 +510,14 @@ out:
|
||||
}
|
||||
|
||||
out_no_removal:
|
||||
if (cookie && _dm_use_udev())
|
||||
(void)dm_udev_wait(cookie);
|
||||
|
||||
if (params)
|
||||
safe_free(params);
|
||||
if (dmt)
|
||||
dm_task_destroy(dmt);
|
||||
if(dmt_query)
|
||||
dm_task_destroy(dmt_query);
|
||||
|
||||
dm_task_update_nodes();
|
||||
return r;
|
||||
}
|
||||
@@ -598,11 +712,17 @@ static int _dm_message(const char *name, const char *msg)
|
||||
|
||||
int dm_suspend_and_wipe_key(const char *name)
|
||||
{
|
||||
if (!_dm_simple(DM_DEVICE_SUSPEND, name))
|
||||
if (!_dm_check_versions())
|
||||
return -ENOTSUP;
|
||||
|
||||
if (!_dm_crypt_wipe_key_supported)
|
||||
return -ENOTSUP;
|
||||
|
||||
if (!_dm_simple(DM_DEVICE_SUSPEND, name, 0))
|
||||
return -EINVAL;
|
||||
|
||||
if (!_dm_message(name, "key wipe")) {
|
||||
_dm_simple(DM_DEVICE_RESUME, name);
|
||||
_dm_simple(DM_DEVICE_RESUME, name, 1);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -617,6 +737,12 @@ int dm_resume_and_reinstate_key(const char *name,
|
||||
char *msg;
|
||||
int r = 0;
|
||||
|
||||
if (!_dm_check_versions())
|
||||
return -ENOTSUP;
|
||||
|
||||
if (!_dm_crypt_wipe_key_supported)
|
||||
return -ENOTSUP;
|
||||
|
||||
msg = safe_alloc(msg_size);
|
||||
if (!msg)
|
||||
return -ENOMEM;
|
||||
@@ -626,7 +752,7 @@ int dm_resume_and_reinstate_key(const char *name,
|
||||
hex_key(&msg[8], key_size, key);
|
||||
|
||||
if (!_dm_message(name, msg) ||
|
||||
!_dm_simple(DM_DEVICE_RESUME, name))
|
||||
!_dm_simple(DM_DEVICE_RESUME, name, 1))
|
||||
r = -EINVAL;
|
||||
|
||||
safe_free(msg);
|
||||
|
||||
80
lib/setup.c
80
lib/setup.c
@@ -30,7 +30,7 @@ struct crypt_device {
|
||||
char *plain_uuid;
|
||||
|
||||
/* callbacks definitions */
|
||||
void (*log)(int class, const char *msg, void *usrptr);
|
||||
void (*log)(int level, const char *msg, void *usrptr);
|
||||
void *log_usrptr;
|
||||
int (*confirm)(const char *msg, void *usrptr);
|
||||
void *confirm_usrptr;
|
||||
@@ -39,7 +39,7 @@ struct crypt_device {
|
||||
};
|
||||
|
||||
/* Log helper */
|
||||
static void (*_default_log)(int class, const char *msg, void *usrptr) = NULL;
|
||||
static void (*_default_log)(int level, const char *msg, void *usrptr) = NULL;
|
||||
static int _debug_level = 0;
|
||||
|
||||
void crypt_set_debug_level(int level)
|
||||
@@ -52,15 +52,15 @@ int crypt_get_debug_level()
|
||||
return _debug_level;
|
||||
}
|
||||
|
||||
void crypt_log(struct crypt_device *cd, int class, const char *msg)
|
||||
void crypt_log(struct crypt_device *cd, int level, const char *msg)
|
||||
{
|
||||
if (cd && cd->log)
|
||||
cd->log(class, msg, cd->log_usrptr);
|
||||
cd->log(level, msg, cd->log_usrptr);
|
||||
else if (_default_log)
|
||||
_default_log(class, msg, NULL);
|
||||
_default_log(level, msg, NULL);
|
||||
}
|
||||
|
||||
void logger(struct crypt_device *cd, int class, const char *file,
|
||||
void logger(struct crypt_device *cd, int level, const char *file,
|
||||
int line, const char *format, ...)
|
||||
{
|
||||
va_list argp;
|
||||
@@ -69,8 +69,8 @@ void logger(struct crypt_device *cd, int class, const char *file,
|
||||
va_start(argp, format);
|
||||
|
||||
if (vasprintf(&target, format, argp) > 0) {
|
||||
if (class >= 0) {
|
||||
crypt_log(cd, class, target);
|
||||
if (level >= 0) {
|
||||
crypt_log(cd, level, target);
|
||||
#ifdef CRYPT_DEBUG
|
||||
} else if (_debug_level)
|
||||
printf("# %s:%d %s\n", file ?: "?", line, target);
|
||||
@@ -112,7 +112,8 @@ static char *process_key(struct crypt_device *cd, const char *hash_name,
|
||||
/* key is coming from tty, fd or binary stdin */
|
||||
if (hash_name) {
|
||||
if (hash(NULL, hash_name, key, key_size, pass, passLen) < 0) {
|
||||
log_err(cd, _("Key processing error.\n"));
|
||||
log_err(cd, _("Key processing error (using hash algorithm %s).\n"),
|
||||
hash_name);
|
||||
safe_free(key);
|
||||
return NULL;
|
||||
}
|
||||
@@ -419,10 +420,10 @@ static int open_from_hdr_and_mk(struct crypt_device *cd,
|
||||
return r;
|
||||
}
|
||||
|
||||
static void log_wrapper(int class, const char *msg, void *usrptr)
|
||||
static void log_wrapper(int level, const char *msg, void *usrptr)
|
||||
{
|
||||
void (*xlog)(int class, char *msg) = usrptr;
|
||||
xlog(class, (char *)msg);
|
||||
void (*xlog)(int level, char *msg) = usrptr;
|
||||
xlog(level, (char *)msg);
|
||||
}
|
||||
|
||||
static int yesDialog_wrapper(const char *msg, void *usrptr)
|
||||
@@ -556,7 +557,7 @@ static int _crypt_init(struct crypt_device **cd,
|
||||
}
|
||||
|
||||
void crypt_set_log_callback(struct crypt_device *cd,
|
||||
void (*log)(int class, const char *msg, void *usrptr),
|
||||
void (*log)(int level, const char *msg, void *usrptr),
|
||||
void *usrptr)
|
||||
{
|
||||
if (!cd)
|
||||
@@ -823,7 +824,7 @@ int crypt_luksOpen(struct crypt_options *options)
|
||||
if (options->flags & CRYPT_FLAG_NON_EXCLUSIVE_ACCESS)
|
||||
flags |= CRYPT_ACTIVATE_NO_UUID;
|
||||
|
||||
if (options->key_file)
|
||||
if (options->key_file && strcmp(options->key_file, "-"))
|
||||
r = crypt_activate_by_keyfile(cd, options->name,
|
||||
CRYPT_ANY_SLOT, options->key_file, options->key_size,
|
||||
flags);
|
||||
@@ -921,6 +922,11 @@ int crypt_isLuks(struct crypt_options *options)
|
||||
|
||||
log_dbg("Check device %s for LUKS header.", options->device);
|
||||
|
||||
if (init_crypto()) {
|
||||
log_err(cd, _("Cannot initialize crypto backend.\n"));
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
r = crypt_init(&cd, options->device);
|
||||
if (r < 0)
|
||||
return -EINVAL;
|
||||
@@ -1056,7 +1062,7 @@ static int _crypt_format_plain(struct crypt_device *cd,
|
||||
const char *uuid,
|
||||
struct crypt_params_plain *params)
|
||||
{
|
||||
if (!cipher || !cipher_mode || !params || !params->hash) {
|
||||
if (!cipher || !cipher_mode) {
|
||||
log_err(cd, _("Invalid plain crypt parameters.\n"));
|
||||
return -EINVAL;
|
||||
}
|
||||
@@ -1072,14 +1078,13 @@ static int _crypt_format_plain(struct crypt_device *cd,
|
||||
if (uuid)
|
||||
cd->plain_uuid = strdup(uuid);
|
||||
|
||||
if (params->hash)
|
||||
if (params && params->hash)
|
||||
cd->plain_hdr.hash = strdup(params->hash);
|
||||
|
||||
cd->plain_hdr.offset = params->offset;
|
||||
cd->plain_hdr.skip = params->skip;
|
||||
cd->plain_hdr.offset = params ? params->offset : 0;
|
||||
cd->plain_hdr.skip = params ? params->skip : 0;
|
||||
|
||||
if ((params->hash && !cd->plain_hdr.hash) ||
|
||||
!cd->plain_cipher || !cd->plain_cipher_mode)
|
||||
if (!cd->plain_cipher || !cd->plain_cipher_mode)
|
||||
return -ENOMEM;
|
||||
|
||||
return 0;
|
||||
@@ -1092,16 +1097,25 @@ static int _crypt_format_luks1(struct crypt_device *cd,
|
||||
struct crypt_params_luks1 *params)
|
||||
{
|
||||
int r;
|
||||
unsigned long required_alignment = DEFAULT_ALIGNMENT;
|
||||
unsigned long alignment_offset = 0;
|
||||
|
||||
if (!cd->device) {
|
||||
log_err(cd, _("Can't format LUKS without device.\n"));
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (params && params->data_alignment)
|
||||
required_alignment = params->data_alignment * SECTOR_SIZE;
|
||||
else
|
||||
get_topology_alignment(cd->device, &required_alignment,
|
||||
&alignment_offset, DEFAULT_ALIGNMENT);
|
||||
|
||||
r = LUKS_generate_phdr(&cd->hdr, cd->volume_key, cipher, cipher_mode,
|
||||
(params && params->hash) ? params->hash : "sha1",
|
||||
uuid, LUKS_STRIPES,
|
||||
params ? params->data_alignment: DEFAULT_ALIGNMENT,
|
||||
required_alignment / SECTOR_SIZE,
|
||||
alignment_offset / SECTOR_SIZE,
|
||||
cd->iteration_time, &cd->PBKDF2_per_sec, cd);
|
||||
if(r < 0)
|
||||
return r;
|
||||
@@ -1213,6 +1227,12 @@ int crypt_header_backup(struct crypt_device *cd,
|
||||
if ((requested_type && !isLUKS(requested_type)) || !backup_file)
|
||||
return -EINVAL;
|
||||
|
||||
/* Some hash functions need initialized gcrypt library */
|
||||
if (init_crypto()) {
|
||||
log_err(cd, _("Cannot initialize crypto backend.\n"));
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
log_dbg("Requested header backup of device %s (%s) to "
|
||||
"file %s.", cd->device, requested_type, backup_file);
|
||||
|
||||
@@ -1226,6 +1246,12 @@ int crypt_header_restore(struct crypt_device *cd,
|
||||
if (requested_type && !isLUKS(requested_type))
|
||||
return -EINVAL;
|
||||
|
||||
/* Some hash functions need initialized gcrypt library */
|
||||
if (init_crypto()) {
|
||||
log_err(cd, _("Cannot initialize crypto backend.\n"));
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
log_dbg("Requested header restore to device %s (%s) from "
|
||||
"file %s.", cd->device, requested_type, backup_file);
|
||||
|
||||
@@ -1283,7 +1309,9 @@ int crypt_suspend(struct crypt_device *cd,
|
||||
}
|
||||
|
||||
r = dm_suspend_and_wipe_key(name);
|
||||
if (r)
|
||||
if (r == -ENOTSUP)
|
||||
log_err(cd, "Suspend is not supported for device %s.\n", name);
|
||||
else if (r)
|
||||
log_err(cd, "Error during suspending device %s.\n", name);
|
||||
out:
|
||||
if (!cd)
|
||||
@@ -1327,7 +1355,9 @@ int crypt_resume_by_passphrase(struct crypt_device *cd,
|
||||
if (r >= 0) {
|
||||
keyslot = r;
|
||||
r = dm_resume_and_reinstate_key(name, mk->keyLength, mk->key);
|
||||
if (r)
|
||||
if (r == -ENOTSUP)
|
||||
log_err(cd, "Resume is not supported for device %s.\n", name);
|
||||
else if (r)
|
||||
log_err(cd, "Error during resuming device %s.\n", name);
|
||||
} else
|
||||
r = keyslot;
|
||||
@@ -1511,7 +1541,7 @@ int crypt_keyslot_add_by_keyfile(struct crypt_device *cd,
|
||||
keyfile, keyfile_size);
|
||||
else
|
||||
key_from_terminal(cd, _("Enter any passphrase: "),
|
||||
&password, &passwordLen, 1);
|
||||
&password, &passwordLen, 0);
|
||||
|
||||
if (!password)
|
||||
return -EINVAL;
|
||||
@@ -1838,7 +1868,7 @@ int crypt_volume_key_get(struct crypt_device *cd,
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
if (isPLAIN(cd->type)) {
|
||||
if (isPLAIN(cd->type) && cd->plain_hdr.hash) {
|
||||
processed_key = process_key(cd, cd->plain_hdr.hash, NULL, key_len,
|
||||
passphrase, passphrase_size);
|
||||
if (!processed_key) {
|
||||
|
||||
58
lib/utils.c
58
lib/utils.c
@@ -371,8 +371,8 @@ static int interactive_pass(const char *prompt, char *pass, size_t maxlen,
|
||||
tcsetattr(infd, TCSAFLUSH, &orig);
|
||||
|
||||
out_err:
|
||||
if (!failed)
|
||||
(void)write(outfd, "\n", 1);
|
||||
if (!failed && write(outfd, "\n", 1));
|
||||
|
||||
if (infd != STDIN_FILENO)
|
||||
close(infd);
|
||||
return failed;
|
||||
@@ -683,3 +683,57 @@ int crypt_memlock_dec(struct crypt_device *ctx)
|
||||
}
|
||||
return _memlock_count ? 1 : 0;
|
||||
}
|
||||
|
||||
/* DEVICE TOPOLOGY */
|
||||
|
||||
/* block device topology ioctls, introduced in 2.6.32 */
|
||||
#ifndef BLKIOMIN
|
||||
#define BLKIOMIN _IO(0x12,120)
|
||||
#define BLKIOOPT _IO(0x12,121)
|
||||
#define BLKALIGNOFF _IO(0x12,122)
|
||||
#endif
|
||||
|
||||
void get_topology_alignment(const char *device,
|
||||
unsigned long *required_alignment, /* bytes */
|
||||
unsigned long *alignment_offset, /* bytes */
|
||||
unsigned long default_alignment)
|
||||
{
|
||||
unsigned int dev_alignment_offset = 0;
|
||||
unsigned long min_io_size = 0, opt_io_size = 0;
|
||||
int fd;
|
||||
|
||||
*required_alignment = default_alignment;
|
||||
*alignment_offset = 0;
|
||||
|
||||
fd = open(device, O_RDONLY);
|
||||
if (fd == -1)
|
||||
return;
|
||||
|
||||
/* minimum io size */
|
||||
if (ioctl(fd, BLKIOMIN, &min_io_size) == -1) {
|
||||
log_dbg("Topology info for %s not supported, using default offset %lu bytes.",
|
||||
device, default_alignment);
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* optimal io size */
|
||||
if (ioctl(fd, BLKIOOPT, &opt_io_size) == -1)
|
||||
opt_io_size = min_io_size;
|
||||
|
||||
/* alignment offset, bogus -1 means misaligned/unknown */
|
||||
if (ioctl(fd, BLKALIGNOFF, &dev_alignment_offset) == -1 || (int)dev_alignment_offset < 0)
|
||||
dev_alignment_offset = 0;
|
||||
|
||||
if (*required_alignment < min_io_size)
|
||||
*required_alignment = min_io_size;
|
||||
|
||||
if (*required_alignment < opt_io_size)
|
||||
*required_alignment = opt_io_size;
|
||||
|
||||
*alignment_offset = (unsigned long)dev_alignment_offset;
|
||||
|
||||
log_dbg("Topology: IO (%lu/%lu), offset = %lu; Required alignment is %lu bytes.",
|
||||
min_io_size, opt_io_size, *alignment_offset, *required_alignment);
|
||||
out:
|
||||
(void)close(fd);
|
||||
}
|
||||
|
||||
@@ -105,13 +105,13 @@ static char *_error_hint(char *cipherName, char *cipherMode, size_t keyLength)
|
||||
kernel_minor = atoi(tmp);
|
||||
|
||||
if (!strncmp(cipherMode, "xts", 3) && (keyLength != 256 && keyLength != 512))
|
||||
hint = "Key size in XTS mode must be 256 or 512 bits.";
|
||||
hint = _("Key size in XTS mode must be 256 or 512 bits.\n");
|
||||
else if (!strncmp(cipherMode, "xts", 3) && kernel_minor < 24)
|
||||
hint = "Block mode XTS is available since kernel 2.6.24.";
|
||||
hint = _("Block mode XTS is available since kernel 2.6.24.\n");
|
||||
if (!strncmp(cipherMode, "lrw", 3) && (keyLength != 256 && keyLength != 512))
|
||||
hint = "Key size in LRW mode must be 256 or 512 bits.";
|
||||
hint = _("Key size in LRW mode must be 256 or 512 bits.\n");
|
||||
else if (!strncmp(cipherMode, "lrw", 3) && kernel_minor < 20)
|
||||
hint = "Block mode LRW is available since kernel 2.6.20.";
|
||||
hint = _("Block mode LRW is available since kernel 2.6.20.\n");
|
||||
#endif
|
||||
return hint;
|
||||
}
|
||||
|
||||
@@ -424,6 +424,7 @@ int LUKS_generate_phdr(struct luks_phdr *header,
|
||||
const char *cipherName, const char *cipherMode, const char *hashSpec,
|
||||
const char *uuid, unsigned int stripes,
|
||||
unsigned int alignPayload,
|
||||
unsigned int alignOffset,
|
||||
uint32_t iteration_time_ms,
|
||||
uint64_t *PBKDF2_per_sec,
|
||||
struct crypt_device *ctx)
|
||||
@@ -488,7 +489,8 @@ int LUKS_generate_phdr(struct luks_phdr *header,
|
||||
}
|
||||
currentSector = round_up_modulo(currentSector, alignPayload);
|
||||
|
||||
header->payloadOffset=currentSector;
|
||||
/* alignOffset - offset from natural device alignment provided by topology info */
|
||||
header->payloadOffset = currentSector + alignOffset;
|
||||
|
||||
if (uuid && !uuid_parse(uuid, partitionUuid)) {
|
||||
log_err(ctx, _("Wrong UUID format provided, generating new one.\n"));
|
||||
|
||||
@@ -91,6 +91,7 @@ int LUKS_generate_phdr(
|
||||
const char *uuid,
|
||||
unsigned int stripes,
|
||||
unsigned int alignPayload,
|
||||
unsigned int alignOffset,
|
||||
uint32_t iteration_time_ms,
|
||||
uint64_t *PBKDF2_per_sec,
|
||||
struct crypt_device *ctx);
|
||||
|
||||
@@ -125,13 +125,13 @@ The hash string is passed to libgcrypt, so all hashes accepted by gcrypt are sup
|
||||
Default is set during compilation, compatible values with old version of cryptsetup are
|
||||
\fB"ripemd160"\fR for \fIcreate\fR action and \fB"sha1"\fR for \fIluksFormat\fR.
|
||||
|
||||
Use \fIcryptsetup --help\fR to show defaults.
|
||||
Use \fIcryptsetup \-\-help\fR to show defaults.
|
||||
.TP
|
||||
.B "\-\-cipher, \-c"
|
||||
set cipher specification string.
|
||||
|
||||
Default mode is configurable during compilation,
|
||||
you can see compiled-in default using \fIcryptsetup --help\fR.
|
||||
you can see compiled-in default using \fIcryptsetup \-\-help\fR.
|
||||
If not changed, the default is for plain dm-crypt and LUKS mappings
|
||||
"aes-cbc-essiv:sha256".
|
||||
|
||||
@@ -164,7 +164,7 @@ Has to be a multiple of 8 bits. The key size is limited by the used cipher. See
|
||||
Can be used for \fIcreate\fR or \fIluksFormat\fR, all other LUKS actions will use key-size specified by the LUKS header.
|
||||
Default is set during compilation, if not changed it is 256 bits.
|
||||
|
||||
Use \fIcryptsetup --help\fR to show defaults.
|
||||
Use \fIcryptsetup \-\-help\fR to show defaults.
|
||||
|
||||
For \fIluksOpen\fR this option specifies number of bits read from the key-file (default is exhaustive read from key-file).
|
||||
.TP
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
de
|
||||
fr
|
||||
id
|
||||
it
|
||||
nl
|
||||
sv
|
||||
vi
|
||||
|
||||
268
po/id.po
268
po/id.po
@@ -1,14 +1,14 @@
|
||||
# Pesan bahasa Indonesia untuk cryptsetup.
|
||||
# Copyright (C) 2009 Free Software Foundation, Inc.
|
||||
# This file is put in the public domain.
|
||||
# Arif E. Nugroho <arif_endro@yahoo.com>, 2009.
|
||||
# Arif E. Nugroho <arif_endro@yahoo.com>, 2009, 2010.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: cryptsetup 1.1.0-rc3\n"
|
||||
"Project-Id-Version: cryptsetup 1.1.0-rc4\n"
|
||||
"Report-Msgid-Bugs-To: dm-crypt@saout.de\n"
|
||||
"POT-Creation-Date: 2009-11-16 21:41+0100\n"
|
||||
"PO-Revision-Date: 2009-11-28 09:00+0700\n"
|
||||
"POT-Creation-Date: 2009-12-30 20:09+0100\n"
|
||||
"PO-Revision-Date: 2010-01-27 07:30+0700\n"
|
||||
"Last-Translator: Arif E. Nugroho <arif_endro@yahoo.com>\n"
|
||||
"Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -89,7 +89,7 @@ msgstr "Kunci %d tidak aktif. Tidak dapat menghapus.\n"
|
||||
msgid "This is the last keyslot. Device will become unusable after purging this key."
|
||||
msgstr "Ini adalah slot kunci terakhir. Perangkat mungkin akan menjadi tidak stabil setelah menghapus kunci ini."
|
||||
|
||||
#: lib/setup.c:364 lib/setup.c:1650 lib/setup.c:1703 lib/setup.c:1760
|
||||
#: lib/setup.c:364 lib/setup.c:1651 lib/setup.c:1704 lib/setup.c:1761
|
||||
#, c-format
|
||||
msgid "Device %s already exists.\n"
|
||||
msgstr "Perangkat %s telah ada.\n"
|
||||
@@ -99,16 +99,16 @@ msgstr "Perangkat %s telah ada.\n"
|
||||
msgid "Invalid key size %d.\n"
|
||||
msgstr "Besar kunci %d tidak valid.\n"
|
||||
|
||||
#: lib/setup.c:471 lib/setup.c:1655
|
||||
#: lib/setup.c:471 lib/setup.c:1656
|
||||
#, c-format
|
||||
msgid "Enter passphrase for %s: "
|
||||
msgstr "Masukan kata sandi untuk %s: "
|
||||
|
||||
#: lib/setup.c:600 lib/setup.c:628 lib/setup.c:1364 lib/setup.c:1711
|
||||
#: lib/setup.c:600 lib/setup.c:628 lib/setup.c:1365 lib/setup.c:1712
|
||||
msgid "Enter passphrase: "
|
||||
msgstr "Masukan kata sandi: "
|
||||
|
||||
#: lib/setup.c:661 lib/setup.c:1040 lib/setup.c:1802
|
||||
#: lib/setup.c:661 lib/setup.c:1040 lib/setup.c:1803
|
||||
#, c-format
|
||||
msgid "Device %s is not active.\n"
|
||||
msgstr "Perangkat %s tidak aktif.\n"
|
||||
@@ -133,146 +133,185 @@ msgstr "Ukuran kunci tidak valid.\n"
|
||||
msgid "Can't format LUKS without device.\n"
|
||||
msgstr "Tidak dapat memformat LUKS tanpat perangkat.\n"
|
||||
|
||||
#: lib/setup.c:1111
|
||||
#: lib/setup.c:1112
|
||||
#, c-format
|
||||
msgid "Can't wipe header on device %s.\n"
|
||||
msgstr "Tidak dapat menghapus kepala di perangkat %s.\n"
|
||||
|
||||
#: lib/setup.c:1153
|
||||
#: lib/setup.c:1154
|
||||
#, c-format
|
||||
msgid "Unkown crypt device type %s requesed.\n"
|
||||
msgstr "Tipe perangkat crypt %s yang diminta tidak dikenal.\n"
|
||||
msgid "Unknown crypt device type %s requested.\n"
|
||||
msgstr "Tipe perangkat sandi %s yang diminta tidak diketahui.\n"
|
||||
|
||||
#: lib/setup.c:1186
|
||||
#: lib/setup.c:1187
|
||||
msgid "Cannot initialize crypto backend.\n"
|
||||
msgstr "Tidak dapat menginisialisasi backend crypto.\n"
|
||||
|
||||
#: lib/setup.c:1260
|
||||
#: lib/setup.c:1261
|
||||
#, c-format
|
||||
msgid "Volume %s is not active.\n"
|
||||
msgstr "Volume %s tidak aktif.\n"
|
||||
|
||||
#: lib/setup.c:1273
|
||||
#: lib/setup.c:1274
|
||||
#, c-format
|
||||
msgid "Volume %s is already suspended.\n"
|
||||
msgstr "Volume %s telah disuspend.\n"
|
||||
|
||||
#: lib/setup.c:1299 lib/setup.c:1346 lib/setup.c:1405 lib/setup.c:1483
|
||||
#: lib/setup.c:1555 lib/setup.c:1600 lib/setup.c:1694 lib/setup.c:1751
|
||||
#: lib/setup.c:1872 lib/setup.c:1955 lib/setup.c:2055
|
||||
#: lib/setup.c:1300 lib/setup.c:1347 lib/setup.c:1406 lib/setup.c:1484
|
||||
#: lib/setup.c:1556 lib/setup.c:1601 lib/setup.c:1695 lib/setup.c:1752
|
||||
#: lib/setup.c:1873 lib/setup.c:1956 lib/setup.c:2056
|
||||
msgid "This operation is supported only for LUKS device.\n"
|
||||
msgstr "Operasi ini hanya didukunga untuk perangkat LUKS.\n"
|
||||
|
||||
#: lib/setup.c:1310 lib/setup.c:1357
|
||||
#: lib/setup.c:1311 lib/setup.c:1358
|
||||
#, c-format
|
||||
msgid "Volume %s is not suspended.\n"
|
||||
msgstr "Volume %s tidak disuspend.\n"
|
||||
|
||||
#: lib/setup.c:1419 lib/setup.c:1497
|
||||
#: lib/setup.c:1420 lib/setup.c:1498
|
||||
msgid "Cannot add key slot, all slots disabled and no volume key provided.\n"
|
||||
msgstr "Tidak dapat menambahkan slot kunci, seluruh slot tidak aktif dan tidak ada volume kunci yang disediakan.\n"
|
||||
|
||||
#: lib/setup.c:1428 lib/setup.c:1503 lib/setup.c:1506
|
||||
#: lib/setup.c:1429 lib/setup.c:1504 lib/setup.c:1507
|
||||
msgid "Enter any passphrase: "
|
||||
msgstr "Masukan kata sandi: "
|
||||
|
||||
#: lib/setup.c:1447 lib/setup.c:1521 lib/setup.c:1525 lib/setup.c:1578
|
||||
#: lib/setup.c:1448 lib/setup.c:1522 lib/setup.c:1526 lib/setup.c:1579
|
||||
msgid "Enter new passphrase for key slot: "
|
||||
msgstr "Masukan kasa sandi baru untuk slot kunci: "
|
||||
|
||||
#: lib/setup.c:1569 lib/setup.c:1771 lib/setup.c:1883
|
||||
#: lib/setup.c:1570 lib/setup.c:1772 lib/setup.c:1884
|
||||
msgid "Volume key does not match the volume.\n"
|
||||
msgstr "Kunci volume tidak cocok dengan volume.\n"
|
||||
|
||||
#: lib/setup.c:1606
|
||||
#: lib/setup.c:1607
|
||||
#, c-format
|
||||
msgid "Key slot %d is invalid.\n"
|
||||
msgstr "Slot kunci %d tidak valid.\n"
|
||||
|
||||
#: lib/setup.c:1611
|
||||
#: lib/setup.c:1612
|
||||
#, c-format
|
||||
msgid "Key slot %d is not used.\n"
|
||||
msgstr "Slot kunci %d tidak digunakan.\n"
|
||||
|
||||
#: lib/setup.c:1798
|
||||
#: lib/setup.c:1799
|
||||
#, c-format
|
||||
msgid "Device %s is busy.\n"
|
||||
msgstr "Perangkat %s sibuk.\n"
|
||||
|
||||
#: lib/setup.c:1806
|
||||
#: lib/setup.c:1807
|
||||
#, c-format
|
||||
msgid "Invalid device %s.\n"
|
||||
msgstr "Perangkat %s tidak valid.\n"
|
||||
|
||||
#: lib/setup.c:1830
|
||||
#: lib/setup.c:1831
|
||||
msgid "Volume key buffer too small.\n"
|
||||
msgstr "Penyangga kunci volume terlalu kecil.\n"
|
||||
|
||||
#: lib/setup.c:1838
|
||||
#: lib/setup.c:1839
|
||||
msgid "Cannot retrieve volume key for plain device.\n"
|
||||
msgstr "Tidak dapat mendapatkan kunci volume untuk perangkat.\n"
|
||||
|
||||
#: lib/setup.c:1860
|
||||
#: lib/setup.c:1861
|
||||
#, c-format
|
||||
msgid "This operation is not supported for %s crypt device.\n"
|
||||
msgstr "Operasi ini tidak didukung untuk perangkat crypt %s.\n"
|
||||
|
||||
#: lib/utils.c:521
|
||||
#: lib/utils.c:416
|
||||
#, c-format
|
||||
msgid "Failed to open key file %s.\n"
|
||||
msgstr "Gagal membuka berkas kunci %s.\n"
|
||||
|
||||
#: lib/utils.c:436
|
||||
msgid "Error reading passphrase from terminal.\n"
|
||||
msgstr "Kesalahan dalam pembacaan kata sandi dari terminal.\n"
|
||||
|
||||
#: lib/utils.c:441
|
||||
msgid "Verify passphrase: "
|
||||
msgstr "Memverifikasi kata sandi: "
|
||||
|
||||
#: lib/utils.c:443
|
||||
msgid "Passphrases do not match.\n"
|
||||
msgstr "Kata sandi tidak cocok.\n"
|
||||
|
||||
#: lib/utils.c:458
|
||||
msgid "Can't do passphrase verification on non-tty inputs.\n"
|
||||
msgstr "Tidak dapat melakukan verifikasi kata sandi di masukan bukan tty.\n"
|
||||
|
||||
#: lib/utils.c:471
|
||||
#, c-format
|
||||
msgid "Failed to stat key file %s.\n"
|
||||
msgstr "Gagal memperoleh data statistik berkas kunci %s.\n"
|
||||
|
||||
#: lib/utils.c:475
|
||||
#, c-format
|
||||
msgid "Warning: exhausting read requested, but key file %s is not a regular file, function might never return.\n"
|
||||
msgstr "Peringatan: pembacaan yang melelahkan diminta, tetapi berkas kunci %s bukan sebuah berkas biasa, fungsi mungkin tidak pernah kembali.\n"
|
||||
|
||||
#: lib/utils.c:487
|
||||
msgid "Out of memory while reading passphrase.\n"
|
||||
msgstr "Kehabisan memori ketika membaca kata sandi.\n"
|
||||
|
||||
#: lib/utils.c:494
|
||||
msgid "Error reading passphrase.\n"
|
||||
msgstr "Kesalahan dalam pembacaan kata sandi.\n"
|
||||
|
||||
#: lib/utils.c:531
|
||||
#, c-format
|
||||
msgid "Device %s doesn't exist or access denied.\n"
|
||||
msgstr "Perangkat %s tidak ada atau akses ditolak.\n"
|
||||
|
||||
#: lib/utils.c:528
|
||||
#: lib/utils.c:538
|
||||
#, c-format
|
||||
msgid "Cannot open device %s for %s%s access.\n"
|
||||
msgstr "Tidak dapat membuka perangkat %s untuk akses %s%s.\n"
|
||||
|
||||
#: lib/utils.c:529
|
||||
#: lib/utils.c:539
|
||||
msgid "exclusive "
|
||||
msgstr "ekslusif "
|
||||
|
||||
#: lib/utils.c:530
|
||||
#: lib/utils.c:540
|
||||
msgid "writable"
|
||||
msgstr "dapat-ditulis"
|
||||
|
||||
#: lib/utils.c:530
|
||||
#: lib/utils.c:540
|
||||
msgid "read-only"
|
||||
msgstr "baca-saja"
|
||||
|
||||
#: lib/utils.c:537
|
||||
#: lib/utils.c:547
|
||||
#, c-format
|
||||
msgid "Cannot read device %s.\n"
|
||||
msgstr "Tidak dapat membaca perangkat %s.\n"
|
||||
|
||||
#: lib/utils.c:567
|
||||
#: lib/utils.c:577
|
||||
#, c-format
|
||||
msgid "Cannot open device: %s\n"
|
||||
msgstr "Tidak dapat membuka perangkat: %s\n"
|
||||
|
||||
#: lib/utils.c:577
|
||||
#: lib/utils.c:587
|
||||
#, c-format
|
||||
msgid "BLKROGET failed on device %s.\n"
|
||||
msgstr "BLKROGET gagal di perangkat %s.\n"
|
||||
|
||||
#: lib/utils.c:602
|
||||
#: lib/utils.c:612
|
||||
#, c-format
|
||||
msgid "BLKGETSIZE failed on device %s.\n"
|
||||
msgstr "BLKGETSIZE gagal di perangkat %s.\n"
|
||||
|
||||
#: lib/utils.c:650
|
||||
#: lib/utils.c:660
|
||||
msgid "WARNING!!! Possibly insecure memory. Are you root?\n"
|
||||
msgstr "PERINGATAN!!! Kemungkinan menggunakan memori tidak aman. Apakah anda root?\n"
|
||||
|
||||
#: lib/utils.c:656
|
||||
#: lib/utils.c:666
|
||||
msgid "Cannot get process priority.\n"
|
||||
msgstr "Tidak dapat mendapatkan prioritas proses.\n"
|
||||
|
||||
#: lib/utils.c:659 lib/utils.c:672
|
||||
#: lib/utils.c:669 lib/utils.c:682
|
||||
#, c-format
|
||||
msgid "setpriority %u failed: %s"
|
||||
msgstr "setpriority %u gagal: %s"
|
||||
|
||||
#: lib/utils.c:670
|
||||
#: lib/utils.c:680
|
||||
msgid "Cannot unlock memory."
|
||||
msgstr "Tidak dapat membuka kunci memori."
|
||||
|
||||
@@ -408,57 +447,57 @@ msgstr "Error selama memperbarui header LUKS di perangkat %s.\n"
|
||||
msgid "Error re-reading LUKS header after update on device %s.\n"
|
||||
msgstr "Error membaca-kembali header LUKS setelah memperbarui di perangkat %s.\n"
|
||||
|
||||
#: luks/keymanage.c:422
|
||||
msgid "Cannot create LUKS header: reading random salt failed.\n"
|
||||
msgstr "Tidak dapat membuat header LUKS: pembacaan garam acak gagal.\n"
|
||||
|
||||
#: luks/keymanage.c:433
|
||||
#, c-format
|
||||
msgid "Cannot create LUKS header: header digest failed (using hash %s).\n"
|
||||
msgstr "Tidak dapat membuat header LUKS: digest header gagal (menggunakan hash %s).\n"
|
||||
|
||||
#: luks/keymanage.c:450
|
||||
msgid "Wrong UUID format provided, generating new one.\n"
|
||||
msgstr "Format UUID yang disediakan berbeda, membuat yang baru.\n"
|
||||
|
||||
#: luks/keymanage.c:475
|
||||
#, c-format
|
||||
msgid "Key slot %d active, purge first.\n"
|
||||
msgstr "Slot kunci %d aktif, hapus terlebih dahulu.\n"
|
||||
|
||||
#: luks/keymanage.c:480
|
||||
#, c-format
|
||||
msgid "Key slot %d material includes too few stripes. Header manipulation?\n"
|
||||
msgstr "Slot kunci %d material terdapat terlalu sedikit stripes. Manipulasi header?\n"
|
||||
|
||||
#: luks/keymanage.c:489
|
||||
#: luks/keymanage.c:394
|
||||
#, c-format
|
||||
msgid "Not compatible PBKDF2 options (using hash algorithm %s)."
|
||||
msgstr "Pilihan PBKDF2 tidak kompatibel (menggunakan algoritma hash %s)."
|
||||
|
||||
#: luks/keymanage.c:536
|
||||
#: luks/keymanage.c:439
|
||||
msgid "Cannot create LUKS header: reading random salt failed.\n"
|
||||
msgstr "Tidak dapat membuat header LUKS: pembacaan garam acak gagal.\n"
|
||||
|
||||
#: luks/keymanage.c:456
|
||||
#, c-format
|
||||
msgid "Cannot create LUKS header: header digest failed (using hash %s).\n"
|
||||
msgstr "Tidak dapat membuat header LUKS: digest header gagal (menggunakan hash %s).\n"
|
||||
|
||||
#: luks/keymanage.c:473
|
||||
msgid "Wrong UUID format provided, generating new one.\n"
|
||||
msgstr "Format UUID yang disediakan berbeda, membuat yang baru.\n"
|
||||
|
||||
#: luks/keymanage.c:500
|
||||
#, c-format
|
||||
msgid "Key slot %d active, purge first.\n"
|
||||
msgstr "Slot kunci %d aktif, hapus terlebih dahulu.\n"
|
||||
|
||||
#: luks/keymanage.c:505
|
||||
#, c-format
|
||||
msgid "Key slot %d material includes too few stripes. Header manipulation?\n"
|
||||
msgstr "Slot kunci %d material terdapat terlalu sedikit stripes. Manipulasi header?\n"
|
||||
|
||||
#: luks/keymanage.c:564
|
||||
msgid "Failed to write to key storage.\n"
|
||||
msgstr "Gagal untuk menulis di penyimpanan kunci.\n"
|
||||
|
||||
#: luks/keymanage.c:613
|
||||
#: luks/keymanage.c:641
|
||||
msgid "Failed to read from key storage.\n"
|
||||
msgstr "Gagal untuk membaca dari penyimpanan kunci.\n"
|
||||
|
||||
#: luks/keymanage.c:622
|
||||
#: luks/keymanage.c:650
|
||||
#, c-format
|
||||
msgid "Key slot %d unlocked.\n"
|
||||
msgstr "Slot kunci %d tidak terkunci.\n"
|
||||
|
||||
#: luks/keymanage.c:655
|
||||
#: luks/keymanage.c:683
|
||||
msgid "No key available with this passphrase.\n"
|
||||
msgstr "Tidak ada kunci tersedia dengan kata sandi ini.\n"
|
||||
|
||||
#: luks/keymanage.c:732
|
||||
#: luks/keymanage.c:760
|
||||
#, c-format
|
||||
msgid "Key slot %d is invalid, please select keyslot between 0 and %d.\n"
|
||||
msgstr "Slot kunci %d tidak valid, mohon pilih slot kunci diantara 0 dan %d.\n"
|
||||
|
||||
#: luks/keymanage.c:744
|
||||
#: luks/keymanage.c:772
|
||||
#, c-format
|
||||
msgid "Cannot wipe device %s.\n"
|
||||
msgstr "Tidak dapat menghapus perangkat %s.\n"
|
||||
@@ -627,136 +666,149 @@ msgstr ""
|
||||
"<slot kunci> adalah nomor slot kunci LUKS untuk dimodifikasi\n"
|
||||
"<berkas kunci> adalah berkas kunci opsional untuk kunci baru untuk aksi luksAddKey\n"
|
||||
|
||||
#: src/cryptsetup.c:691
|
||||
#: src/cryptsetup.c:650
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
"Default compiled-in device cipher parameters:\n"
|
||||
"\tplain: %s, Key: %d bits, Password hashing: %s\n"
|
||||
"\tLUKS1: %s, Key: %d bits, LUKS header hashing: %s\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Parameter baku yang terkompilasi dalam perangkat penyandi:\n"
|
||||
"\tterbuka: %s, Kunci: %d bits, Hash kata sandi : %s\n"
|
||||
"\tLUKS1 : %s, Kunci: %d bits, Hash kepala LUKS: %s\n"
|
||||
|
||||
#: src/cryptsetup.c:697
|
||||
msgid "Show this help message"
|
||||
msgstr "Tampilkan pesan bantuan ini"
|
||||
|
||||
#: src/cryptsetup.c:692
|
||||
#: src/cryptsetup.c:698
|
||||
msgid "Display brief usage"
|
||||
msgstr "Tampilkan penggunaan singkat"
|
||||
|
||||
#: src/cryptsetup.c:696
|
||||
#: src/cryptsetup.c:702
|
||||
msgid "Help options:"
|
||||
msgstr "Pilihan bantuan:"
|
||||
|
||||
#: src/cryptsetup.c:697
|
||||
#: src/cryptsetup.c:703
|
||||
msgid "Shows more detailed error messages"
|
||||
msgstr "Tampilkan pesan kesalahan secara lebih detail"
|
||||
|
||||
#: src/cryptsetup.c:698
|
||||
#: src/cryptsetup.c:704
|
||||
msgid "Show debug messages"
|
||||
msgstr "Tampilkan pesan penelusuran"
|
||||
|
||||
#: src/cryptsetup.c:699
|
||||
#: src/cryptsetup.c:705
|
||||
msgid "The cipher used to encrypt the disk (see /proc/crypto)"
|
||||
msgstr "Cipher yang digunakan untuk mengenkripsi ke disk (lihat /proc/crypto)"
|
||||
|
||||
#: src/cryptsetup.c:700
|
||||
#: src/cryptsetup.c:706
|
||||
msgid "The hash used to create the encryption key from the passphrase"
|
||||
msgstr "Hash yang digunakan untuk membuat kunci enkripsi dari kata sandi"
|
||||
|
||||
#: src/cryptsetup.c:701
|
||||
#: src/cryptsetup.c:707
|
||||
msgid "Verifies the passphrase by asking for it twice"
|
||||
msgstr "Verifikasi kata sandi dengan menanyakan itu dua kali"
|
||||
|
||||
#: src/cryptsetup.c:702
|
||||
#: src/cryptsetup.c:708
|
||||
msgid "Read the key from a file (can be /dev/random)"
|
||||
msgstr "Baca kunci dari sebuah berkas (dapat berupa /dev/random)"
|
||||
|
||||
#: src/cryptsetup.c:703
|
||||
#: src/cryptsetup.c:709
|
||||
msgid "Read the volume (master) key from file."
|
||||
msgstr "Baca volume (master) kunci dari berkas."
|
||||
|
||||
#: src/cryptsetup.c:704
|
||||
#: src/cryptsetup.c:710
|
||||
msgid "The size of the encryption key"
|
||||
msgstr "Besar dari kunci enkripsi"
|
||||
|
||||
#: src/cryptsetup.c:704
|
||||
#: src/cryptsetup.c:710
|
||||
msgid "BITS"
|
||||
msgstr "BITS"
|
||||
|
||||
#: src/cryptsetup.c:705
|
||||
#: src/cryptsetup.c:711
|
||||
msgid "Slot number for new key (default is first free)"
|
||||
msgstr "Nomor slot untuk kunci baru (baku adalah yang kosong pertama)"
|
||||
|
||||
#: src/cryptsetup.c:706
|
||||
#: src/cryptsetup.c:712
|
||||
msgid "The size of the device"
|
||||
msgstr "Besar dari perangkat"
|
||||
|
||||
#: src/cryptsetup.c:706 src/cryptsetup.c:707 src/cryptsetup.c:708
|
||||
#: src/cryptsetup.c:716
|
||||
#: src/cryptsetup.c:712 src/cryptsetup.c:713 src/cryptsetup.c:714
|
||||
#: src/cryptsetup.c:722
|
||||
msgid "SECTORS"
|
||||
msgstr "SEKTOR"
|
||||
|
||||
#: src/cryptsetup.c:707
|
||||
#: src/cryptsetup.c:713
|
||||
msgid "The start offset in the backend device"
|
||||
msgstr "Awal ofset dalam perangkat backend"
|
||||
|
||||
#: src/cryptsetup.c:708
|
||||
#: src/cryptsetup.c:714
|
||||
msgid "How many sectors of the encrypted data to skip at the beginning"
|
||||
msgstr "Berapa banyak sektor dari data terenkripsi yang dilewatkan di awal"
|
||||
|
||||
#: src/cryptsetup.c:709
|
||||
#: src/cryptsetup.c:715
|
||||
msgid "Create a readonly mapping"
|
||||
msgstr "Buat pemetaan baca-saja"
|
||||
|
||||
#: src/cryptsetup.c:710
|
||||
#: src/cryptsetup.c:716
|
||||
msgid "PBKDF2 iteration time for LUKS (in ms)"
|
||||
msgstr "waktu iterasi PBKDF2 untuk LUKS (dalam mdet)"
|
||||
|
||||
#: src/cryptsetup.c:711
|
||||
#: src/cryptsetup.c:717
|
||||
msgid "msecs"
|
||||
msgstr "mdetik"
|
||||
|
||||
#: src/cryptsetup.c:712
|
||||
#: src/cryptsetup.c:718
|
||||
msgid "Do not ask for confirmation"
|
||||
msgstr "Jangan tanya untuk konfirmasi"
|
||||
|
||||
#: src/cryptsetup.c:713
|
||||
#: src/cryptsetup.c:719
|
||||
msgid "Print package version"
|
||||
msgstr "Tampilkan versi paket"
|
||||
|
||||
#: src/cryptsetup.c:714
|
||||
#: src/cryptsetup.c:720
|
||||
msgid "Timeout for interactive passphrase prompt (in seconds)"
|
||||
msgstr "Waktu habis untuk pertanyaan interaktif kata sandi (dalam detik)"
|
||||
|
||||
#: src/cryptsetup.c:714
|
||||
#: src/cryptsetup.c:720
|
||||
msgid "secs"
|
||||
msgstr "detik"
|
||||
|
||||
#: src/cryptsetup.c:715
|
||||
msgid "How often the input of the passphrase canbe retried"
|
||||
#: src/cryptsetup.c:721
|
||||
msgid "How often the input of the passphrase can be retried"
|
||||
msgstr "Seberapa sering masukan dari kata sandi dapat dicoba"
|
||||
|
||||
#: src/cryptsetup.c:716
|
||||
#: src/cryptsetup.c:722
|
||||
msgid "Align payload at <n> sector boundaries - for luksFormat"
|
||||
msgstr "Sesuaikan muatan di batas sektor <n> - untuk luksFormat"
|
||||
|
||||
#: src/cryptsetup.c:717
|
||||
#: src/cryptsetup.c:723
|
||||
msgid "(Obsoleted, see man page.)"
|
||||
msgstr "(Ditinggalkan, lihat halaman petunjuk penggunaan.)"
|
||||
|
||||
#: src/cryptsetup.c:718
|
||||
#: src/cryptsetup.c:724
|
||||
msgid "File with LUKS header and keyslots backup."
|
||||
msgstr "Berkas dengan header LUKS dan cadangan slot kunci."
|
||||
|
||||
#: src/cryptsetup.c:736
|
||||
#: src/cryptsetup.c:742
|
||||
msgid "[OPTION...] <action> <action-specific>]"
|
||||
msgstr "[PILIHAN...] <aksi> <aksi-spesifik>]"
|
||||
|
||||
#: src/cryptsetup.c:772
|
||||
#: src/cryptsetup.c:778
|
||||
msgid "Key size must be a multiple of 8 bits"
|
||||
msgstr "Kunci harus kelipatan dari 8 bit"
|
||||
|
||||
#: src/cryptsetup.c:776
|
||||
#: src/cryptsetup.c:782
|
||||
msgid "Argument <action> missing."
|
||||
msgstr "Argumen <aksi> hilang."
|
||||
|
||||
#: src/cryptsetup.c:782
|
||||
#: src/cryptsetup.c:788
|
||||
msgid "Unknown action."
|
||||
msgstr "Aksi tidak diketahui."
|
||||
|
||||
#: src/cryptsetup.c:797
|
||||
#: src/cryptsetup.c:803
|
||||
#, c-format
|
||||
msgid "%s: requires %s as arguments"
|
||||
msgstr "%s: membutuhkan %s sebagai argumen"
|
||||
|
||||
814
po/it.po
Normal file
814
po/it.po
Normal file
@@ -0,0 +1,814 @@
|
||||
# Italian translation for cryptsetup.
|
||||
# Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
# This file is put in the public domain.
|
||||
# Sergio Zanchetta <primes2h@ubuntu.com>, 2010.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: cryptsetup-1.1.0-rc4\n"
|
||||
"Report-Msgid-Bugs-To: dm-crypt@saout.de\n"
|
||||
"POT-Creation-Date: 2009-12-30 20:09+0100\n"
|
||||
"PO-Revision-Date: 2010-03-03 15:10+0100\n"
|
||||
"Last-Translator: Sergio Zanchetta <primes2h@ubuntu.com>\n"
|
||||
"Language-Team: Italian <tp@lists.linux.it>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: lib/libdevmapper.c:48
|
||||
msgid "Cannot initialize device-mapper. Is dm_mod kernel module loaded?\n"
|
||||
msgstr "Impossibile inizializzare device-mapper. Il modulo kernel dm_mod è caricato?\n"
|
||||
|
||||
#: lib/libdevmapper.c:304
|
||||
#, c-format
|
||||
msgid "DM-UUID for device %s was truncated.\n"
|
||||
msgstr "DM-UUID per il device %s è stato troncato.\n"
|
||||
|
||||
#: lib/setup.c:103
|
||||
#, c-format
|
||||
msgid "Cannot not read %d bytes from key file %s.\n"
|
||||
msgstr "Impossibile leggere %d byte dal file chiave %s.\n"
|
||||
|
||||
#: lib/setup.c:115
|
||||
msgid "Key processing error.\n"
|
||||
msgstr "Errore nell'elaborazione della chiave.\n"
|
||||
|
||||
#: lib/setup.c:169
|
||||
msgid "All key slots full.\n"
|
||||
msgstr "Tutti gli slot di chiave sono pieni.\n"
|
||||
|
||||
#: lib/setup.c:176 lib/setup.c:304 lib/setup.c:778
|
||||
#, c-format
|
||||
msgid "Key slot %d is invalid, please select between 0 and %d.\n"
|
||||
msgstr "Lo slot di chiave %d non è valido, selezionarne uno tra 0 e %d.\n"
|
||||
|
||||
#: lib/setup.c:182
|
||||
#, c-format
|
||||
msgid "Key slot %d is full, please select another one.\n"
|
||||
msgstr "Lo slot di chiave %d è pieno, selezionarne un altro.\n"
|
||||
|
||||
#: lib/setup.c:201
|
||||
msgid "Enter any remaining LUKS passphrase: "
|
||||
msgstr "Inserire qualunque passphrase LUKS rimanente: "
|
||||
|
||||
#: lib/setup.c:222
|
||||
#, c-format
|
||||
msgid "Key slot %d verified.\n"
|
||||
msgstr "Slot di chiave %d verificato.\n"
|
||||
|
||||
#: lib/setup.c:257
|
||||
#, c-format
|
||||
msgid "Cannot get info about device %s.\n"
|
||||
msgstr "Impossibile ottenere informazioni sul device %s.\n"
|
||||
|
||||
#: lib/setup.c:264
|
||||
#, c-format
|
||||
msgid "Device %s has zero size.\n"
|
||||
msgstr "Il device %s ha dimensione zero.\n"
|
||||
|
||||
#: lib/setup.c:268
|
||||
#, c-format
|
||||
msgid "Device %s is too small.\n"
|
||||
msgstr "Il device %s è troppo piccolo.\n"
|
||||
|
||||
#: lib/setup.c:293
|
||||
msgid "Enter LUKS passphrase to be deleted: "
|
||||
msgstr "Inserire la passphrase LUKS da eliminare: "
|
||||
|
||||
#: lib/setup.c:299
|
||||
#, c-format
|
||||
msgid "key slot %d selected for deletion.\n"
|
||||
msgstr "slot di chiave %d selezionato per l'eliminazione.\n"
|
||||
|
||||
#: lib/setup.c:310
|
||||
#, c-format
|
||||
msgid "Key %d not active. Can't wipe.\n"
|
||||
msgstr "Chiave %d non attiva. Impossibile ripulirla.\n"
|
||||
|
||||
#: lib/setup.c:316
|
||||
msgid "This is the last keyslot. Device will become unusable after purging this key."
|
||||
msgstr "Questo è l'ultimo slot di chiave. Il device sarà inutilizzabile dopo aver eliminato questa chiave."
|
||||
|
||||
#: lib/setup.c:364 lib/setup.c:1651 lib/setup.c:1704 lib/setup.c:1761
|
||||
#, c-format
|
||||
msgid "Device %s already exists.\n"
|
||||
msgstr "Il device %s è già esistente.\n"
|
||||
|
||||
#: lib/setup.c:369
|
||||
#, c-format
|
||||
msgid "Invalid key size %d.\n"
|
||||
msgstr "Dimensione della chiave non valida %d.\n"
|
||||
|
||||
#: lib/setup.c:471 lib/setup.c:1656
|
||||
#, c-format
|
||||
msgid "Enter passphrase for %s: "
|
||||
msgstr "Inserire passphrase per %s: "
|
||||
|
||||
#: lib/setup.c:600 lib/setup.c:628 lib/setup.c:1365 lib/setup.c:1712
|
||||
msgid "Enter passphrase: "
|
||||
msgstr "Inserire passphrase: "
|
||||
|
||||
#: lib/setup.c:661 lib/setup.c:1040 lib/setup.c:1803
|
||||
#, c-format
|
||||
msgid "Device %s is not active.\n"
|
||||
msgstr "Il device %s non è attivo.\n"
|
||||
|
||||
#: lib/setup.c:770
|
||||
msgid "No known cipher specification pattern detected.\n"
|
||||
msgstr "Rilevato un modello di specifica cifrario non conosciuto.\n"
|
||||
|
||||
#: lib/setup.c:784
|
||||
msgid "Enter LUKS passphrase: "
|
||||
msgstr "Inserire passphrase LUKS: "
|
||||
|
||||
#: lib/setup.c:1060
|
||||
msgid "Invalid plain crypt parameters.\n"
|
||||
msgstr "Parametri di cifratura in chiaro non validi.\n"
|
||||
|
||||
#: lib/setup.c:1065
|
||||
msgid "Invalid key size.\n"
|
||||
msgstr "Dimensione della chiave non valida.\n"
|
||||
|
||||
#: lib/setup.c:1097
|
||||
msgid "Can't format LUKS without device.\n"
|
||||
msgstr "Impossibile formattare LUKS senza device.\n"
|
||||
|
||||
#: lib/setup.c:1112
|
||||
#, c-format
|
||||
msgid "Can't wipe header on device %s.\n"
|
||||
msgstr "Impossibile ripulire l'header sul device %s.\n"
|
||||
|
||||
#: lib/setup.c:1154
|
||||
#, c-format
|
||||
msgid "Unknown crypt device type %s requested.\n"
|
||||
msgstr "Richiesto device cifrato di tipo %s sconosciuto.\n"
|
||||
|
||||
#: lib/setup.c:1187
|
||||
msgid "Cannot initialize crypto backend.\n"
|
||||
msgstr "Impossibile inizializzare il backend crypto.\n"
|
||||
|
||||
#: lib/setup.c:1261
|
||||
#, c-format
|
||||
msgid "Volume %s is not active.\n"
|
||||
msgstr "Il volume %s non è attivo.\n"
|
||||
|
||||
#: lib/setup.c:1274
|
||||
#, c-format
|
||||
msgid "Volume %s is already suspended.\n"
|
||||
msgstr "Il volume %s è già sospeso.\n"
|
||||
|
||||
#: lib/setup.c:1300 lib/setup.c:1347 lib/setup.c:1406 lib/setup.c:1484
|
||||
#: lib/setup.c:1556 lib/setup.c:1601 lib/setup.c:1695 lib/setup.c:1752
|
||||
#: lib/setup.c:1873 lib/setup.c:1956 lib/setup.c:2056
|
||||
msgid "This operation is supported only for LUKS device.\n"
|
||||
msgstr "Questa operazione è supportata solo per i device LUKS.\n"
|
||||
|
||||
#: lib/setup.c:1311 lib/setup.c:1358
|
||||
#, c-format
|
||||
msgid "Volume %s is not suspended.\n"
|
||||
msgstr "Il volume %s non è sospeso.\n"
|
||||
|
||||
#: lib/setup.c:1420 lib/setup.c:1498
|
||||
msgid "Cannot add key slot, all slots disabled and no volume key provided.\n"
|
||||
msgstr "Impossibile aggiungere slot di chiave, tutti gli slot disabilitati e nessuna chiave di volume fornita.\n"
|
||||
|
||||
#: lib/setup.c:1429 lib/setup.c:1504 lib/setup.c:1507
|
||||
msgid "Enter any passphrase: "
|
||||
msgstr "Inserire una qualsiasi passphrase: "
|
||||
|
||||
#: lib/setup.c:1448 lib/setup.c:1522 lib/setup.c:1526 lib/setup.c:1579
|
||||
msgid "Enter new passphrase for key slot: "
|
||||
msgstr "Inserire nuova passphrase per lo slot di chiave: "
|
||||
|
||||
#: lib/setup.c:1570 lib/setup.c:1772 lib/setup.c:1884
|
||||
msgid "Volume key does not match the volume.\n"
|
||||
msgstr "La chiave di volume non corrisponde al volume.\n"
|
||||
|
||||
#: lib/setup.c:1607
|
||||
#, c-format
|
||||
msgid "Key slot %d is invalid.\n"
|
||||
msgstr "Lo slot di chiave %d non è valido.\n"
|
||||
|
||||
#: lib/setup.c:1612
|
||||
#, c-format
|
||||
msgid "Key slot %d is not used.\n"
|
||||
msgstr "Lo slot di chiave %d non è utilizzato.\n"
|
||||
|
||||
#: lib/setup.c:1799
|
||||
#, c-format
|
||||
msgid "Device %s is busy.\n"
|
||||
msgstr "Il device %s è occupato.\n"
|
||||
|
||||
#: lib/setup.c:1807
|
||||
#, c-format
|
||||
msgid "Invalid device %s.\n"
|
||||
msgstr "Device %s non valido.\n"
|
||||
|
||||
#: lib/setup.c:1831
|
||||
msgid "Volume key buffer too small.\n"
|
||||
msgstr "Buffer di chiave del volume troppo piccolo.\n"
|
||||
|
||||
#: lib/setup.c:1839
|
||||
msgid "Cannot retrieve volume key for plain device.\n"
|
||||
msgstr "Impossibile recuperare la chiave di volume per device in chiaro.\n"
|
||||
|
||||
#: lib/setup.c:1861
|
||||
#, c-format
|
||||
msgid "This operation is not supported for %s crypt device.\n"
|
||||
msgstr "Questa operazione non è supportata per il device cifrato %s.\n"
|
||||
|
||||
#: lib/utils.c:416
|
||||
#, c-format
|
||||
msgid "Failed to open key file %s.\n"
|
||||
msgstr "Impossibile aprire il file chiave %s.\n"
|
||||
|
||||
#: lib/utils.c:436
|
||||
msgid "Error reading passphrase from terminal.\n"
|
||||
msgstr "Errore nella lettura della passphrase dal terminale.\n"
|
||||
|
||||
#: lib/utils.c:441
|
||||
msgid "Verify passphrase: "
|
||||
msgstr "Verifica passphrase: "
|
||||
|
||||
#: lib/utils.c:443
|
||||
msgid "Passphrases do not match.\n"
|
||||
msgstr "Le passphrase non corrispondono.\n"
|
||||
|
||||
#: lib/utils.c:458
|
||||
msgid "Can't do passphrase verification on non-tty inputs.\n"
|
||||
msgstr "Impossibile verificare la passphrase da un input non tty.\n"
|
||||
|
||||
#: lib/utils.c:471
|
||||
#, c-format
|
||||
msgid "Failed to stat key file %s.\n"
|
||||
msgstr "Stat del file chiave %s non riuscito.\n"
|
||||
|
||||
#: lib/utils.c:475
|
||||
#, c-format
|
||||
msgid "Warning: exhausting read requested, but key file %s is not a regular file, function might never return.\n"
|
||||
msgstr "Attenzione: è richiesta una lettura esaustiva, ma essendo %s un file chiave non regolare la funzione potrebbe non ritornare mai.\n"
|
||||
|
||||
#: lib/utils.c:487
|
||||
msgid "Out of memory while reading passphrase.\n"
|
||||
msgstr "Memoria esaurita durante la lettura della passphrase.\n"
|
||||
|
||||
#: lib/utils.c:494
|
||||
msgid "Error reading passphrase.\n"
|
||||
msgstr "Errore nella lettura della passphrase.\n"
|
||||
|
||||
#: lib/utils.c:531
|
||||
#, c-format
|
||||
msgid "Device %s doesn't exist or access denied.\n"
|
||||
msgstr "Il device %s non esiste oppure è negato l'accesso.\n"
|
||||
|
||||
#: lib/utils.c:538
|
||||
#, c-format
|
||||
msgid "Cannot open device %s for %s%s access.\n"
|
||||
msgstr "Impossibile aprire il device %s per l'accesso %s%s.\n"
|
||||
|
||||
#: lib/utils.c:539
|
||||
msgid "exclusive "
|
||||
msgstr "esclusivo "
|
||||
|
||||
#: lib/utils.c:540
|
||||
msgid "writable"
|
||||
msgstr "in scrittura"
|
||||
|
||||
#: lib/utils.c:540
|
||||
msgid "read-only"
|
||||
msgstr "in sola lettura"
|
||||
|
||||
#: lib/utils.c:547
|
||||
#, c-format
|
||||
msgid "Cannot read device %s.\n"
|
||||
msgstr "Impossibile leggere il device %s.\n"
|
||||
|
||||
#: lib/utils.c:577
|
||||
#, c-format
|
||||
msgid "Cannot open device: %s\n"
|
||||
msgstr "Impossibile aprire il device: %s\n"
|
||||
|
||||
#: lib/utils.c:587
|
||||
#, c-format
|
||||
msgid "BLKROGET failed on device %s.\n"
|
||||
msgstr "BLKROGET non riuscito sul device %s.\n"
|
||||
|
||||
#: lib/utils.c:612
|
||||
#, c-format
|
||||
msgid "BLKGETSIZE failed on device %s.\n"
|
||||
msgstr "BLKGETSIZE non riuscito sul device %s.\n"
|
||||
|
||||
#: lib/utils.c:660
|
||||
msgid "WARNING!!! Possibly insecure memory. Are you root?\n"
|
||||
msgstr "ATTENZIONE!!! È possibile che la memoria non sia sicura. Si è root?\n"
|
||||
|
||||
#: lib/utils.c:666
|
||||
msgid "Cannot get process priority.\n"
|
||||
msgstr "Impossibile ottenere la priorità del processo.\n"
|
||||
|
||||
#: lib/utils.c:669 lib/utils.c:682
|
||||
#, c-format
|
||||
msgid "setpriority %u failed: %s"
|
||||
msgstr "setpriority %u non riuscito: %s"
|
||||
|
||||
#: lib/utils.c:680
|
||||
msgid "Cannot unlock memory."
|
||||
msgstr "Impossibile sbloccare la memoria."
|
||||
|
||||
#: luks/keyencryption.c:68
|
||||
#, c-format
|
||||
msgid "Unable to obtain sector size for %s"
|
||||
msgstr "Impossibile ottenere la dimensione del settore per %s"
|
||||
|
||||
#: luks/keyencryption.c:137
|
||||
msgid "Failed to obtain device mapper directory."
|
||||
msgstr "Recupero della directory device mapper non riuscito."
|
||||
|
||||
#: luks/keyencryption.c:153
|
||||
#, 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).\n"
|
||||
"%s"
|
||||
msgstr ""
|
||||
"Impostazione mappatura di chiave dm-crypt non riuscita per il device %s.\n"
|
||||
"Controllare che il kernel supporti il cifrario %s (controllare il syslog per maggiori informazioni).\n"
|
||||
"%s"
|
||||
|
||||
#: luks/keyencryption.c:163
|
||||
msgid "Failed to open temporary keystore device.\n"
|
||||
msgstr "Apertura del device temporaneo di deposito chiavi non riuscita.\n"
|
||||
|
||||
#: luks/keyencryption.c:170
|
||||
msgid "Failed to access temporary keystore device.\n"
|
||||
msgstr "Accesso al device temporaneo di deposito chiavi non riuscito.\n"
|
||||
|
||||
#: luks/keymanage.c:91
|
||||
#, c-format
|
||||
msgid "Requested file %s already exist.\n"
|
||||
msgstr "Il file %s richiesto esiste già.\n"
|
||||
|
||||
#: luks/keymanage.c:111
|
||||
#, c-format
|
||||
msgid "Device %s is not LUKS device.\n"
|
||||
msgstr "Il device %s non è un device LUKS.\n"
|
||||
|
||||
#: luks/keymanage.c:131
|
||||
#, c-format
|
||||
msgid "Cannot write header backup file %s.\n"
|
||||
msgstr "Impossibile scrivere il file di backup dell'header %s.\n"
|
||||
|
||||
#: luks/keymanage.c:158
|
||||
#, c-format
|
||||
msgid "Backup file %s doesn't exist.\n"
|
||||
msgstr "Il file di backup %s non esiste.\n"
|
||||
|
||||
#: luks/keymanage.c:166
|
||||
msgid "Backup file do not contain valid LUKS header.\n"
|
||||
msgstr "Il file di backup non contiene un header LUKS valido.\n"
|
||||
|
||||
#: luks/keymanage.c:179
|
||||
#, c-format
|
||||
msgid "Cannot open header backup file %s.\n"
|
||||
msgstr "Impossibile aprire il file di backup dell'header %s.\n"
|
||||
|
||||
#: luks/keymanage.c:185
|
||||
#, c-format
|
||||
msgid "Cannot read header backup file %s.\n"
|
||||
msgstr "Impossibile leggere il file di backup dell'header %s.\n"
|
||||
|
||||
#: luks/keymanage.c:196
|
||||
msgid "Data offset or key size differs on device and backup, restore failed.\n"
|
||||
msgstr "L'offset di dati oppure la dimensione della chiave sono diversi tra il device e il backup, ripristino non riuscito.\n"
|
||||
|
||||
#: luks/keymanage.c:204
|
||||
#, c-format
|
||||
msgid "Device %s %s%s"
|
||||
msgstr "Il device %s %s%s"
|
||||
|
||||
#: luks/keymanage.c:205
|
||||
msgid "does not contain LUKS header. Replacing header can destroy data on that device."
|
||||
msgstr "non contiene un header LUKS. La sostituzione dell'header può distruggere i dati in quel device."
|
||||
|
||||
#: luks/keymanage.c:206
|
||||
msgid "already contains LUKS header. Replacing header will destroy existing keyslots."
|
||||
msgstr "contiene già un header LUKS. Sostituendo l'header verranno distrutti gli slot di chiave esistenti."
|
||||
|
||||
#: luks/keymanage.c:207
|
||||
msgid ""
|
||||
"\n"
|
||||
"WARNING: real device header has different UUID than backup!"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"ATTENZIONE: l'header reale del device ha un UUID diverso da quello di backup."
|
||||
|
||||
#: luks/keymanage.c:222 luks/keymanage.c:319 luks/keymanage.c:354
|
||||
#, c-format
|
||||
msgid "Cannot open device %s.\n"
|
||||
msgstr "Impossibile aprire il device %s.\n"
|
||||
|
||||
#: luks/keymanage.c:254
|
||||
#, c-format
|
||||
msgid "%s is not LUKS device.\n"
|
||||
msgstr "%s non è un device LUKS.\n"
|
||||
|
||||
#: luks/keymanage.c:256
|
||||
#, c-format
|
||||
msgid "%s is not LUKS device."
|
||||
msgstr "%s non è un device LUKS."
|
||||
|
||||
#: luks/keymanage.c:259
|
||||
#, c-format
|
||||
msgid "Unsupported LUKS version %d.\n"
|
||||
msgstr "Versione %d di LUKS non supportata.\n"
|
||||
|
||||
#: luks/keymanage.c:262
|
||||
#, c-format
|
||||
msgid "Requested LUKS hash %s is not supported.\n"
|
||||
msgstr "L'hash %s di LUKS richiesto non è supportato.\n"
|
||||
|
||||
#: luks/keymanage.c:293
|
||||
#, c-format
|
||||
msgid "Cannot open file %s.\n"
|
||||
msgstr "Impossibile aprire il file %s.\n"
|
||||
|
||||
#: luks/keymanage.c:331
|
||||
#, c-format
|
||||
msgid "LUKS header detected but device %s is too small.\n"
|
||||
msgstr "Rilevato un header LUKS ma il device %s è troppo piccolo.\n"
|
||||
|
||||
#: luks/keymanage.c:375
|
||||
#, c-format
|
||||
msgid "Error during update of LUKS header on device %s.\n"
|
||||
msgstr "Errore durante l'aggiornamento dell'header LUKS sul device %s.\n"
|
||||
|
||||
#: luks/keymanage.c:382
|
||||
#, c-format
|
||||
msgid "Error re-reading LUKS header after update on device %s.\n"
|
||||
msgstr "Errore nella rilettura dell'header LUKS dopo l'aggiornamento sul dispositivo %s.\n"
|
||||
|
||||
#: luks/keymanage.c:394
|
||||
#, c-format
|
||||
msgid "Not compatible PBKDF2 options (using hash algorithm %s)."
|
||||
msgstr "Opzioni PBKDF2 non compatibili (usando l'algoritmo di hash %s)."
|
||||
|
||||
#: luks/keymanage.c:439
|
||||
msgid "Cannot create LUKS header: reading random salt failed.\n"
|
||||
msgstr "Impossibile creare l'header LUKS: lettura salt casuale non riuscita.\n"
|
||||
|
||||
#: luks/keymanage.c:456
|
||||
#, c-format
|
||||
msgid "Cannot create LUKS header: header digest failed (using hash %s).\n"
|
||||
msgstr "Impossibile creare l'header LUKS: digest dell'header non riuscito (usando l'hash %s).\n"
|
||||
|
||||
#: luks/keymanage.c:473
|
||||
msgid "Wrong UUID format provided, generating new one.\n"
|
||||
msgstr "Fornito un formato UUID errato, generato uno nuovo.\n"
|
||||
|
||||
#: luks/keymanage.c:500
|
||||
#, c-format
|
||||
msgid "Key slot %d active, purge first.\n"
|
||||
msgstr "Slot di chiave %d attivo, eliminarlo prima.\n"
|
||||
|
||||
#: luks/keymanage.c:505
|
||||
#, c-format
|
||||
msgid "Key slot %d material includes too few stripes. Header manipulation?\n"
|
||||
msgstr "Il materiale dello slot di chiave %d contiene troppe poche strisce. Manipolazione dell'header?\n"
|
||||
|
||||
#: luks/keymanage.c:564
|
||||
msgid "Failed to write to key storage.\n"
|
||||
msgstr "Scrittura nel deposito chiavi non riuscita.\n"
|
||||
|
||||
#: luks/keymanage.c:641
|
||||
msgid "Failed to read from key storage.\n"
|
||||
msgstr "Lettura dal deposito chiavi non riuscita.\n"
|
||||
|
||||
#: luks/keymanage.c:650
|
||||
#, c-format
|
||||
msgid "Key slot %d unlocked.\n"
|
||||
msgstr "Slot di chiave %d sbloccato.\n"
|
||||
|
||||
#: luks/keymanage.c:683
|
||||
msgid "No key available with this passphrase.\n"
|
||||
msgstr "Nessuna chiave disponibile con questa passphrase.\n"
|
||||
|
||||
#: luks/keymanage.c:760
|
||||
#, c-format
|
||||
msgid "Key slot %d is invalid, please select keyslot between 0 and %d.\n"
|
||||
msgstr "Lo slot di chiave %d non è valido, selezionarne uno tra 0 e %d.\n"
|
||||
|
||||
#: luks/keymanage.c:772
|
||||
#, c-format
|
||||
msgid "Cannot wipe device %s.\n"
|
||||
msgstr "Impossibile ripulire il device %s.\n"
|
||||
|
||||
#: src/cryptsetup.c:71 src/cryptsetup.c:89
|
||||
msgid "<name> <device>"
|
||||
msgstr "<nome> <device>"
|
||||
|
||||
#: src/cryptsetup.c:71
|
||||
msgid "create device"
|
||||
msgstr "crea il device"
|
||||
|
||||
#: src/cryptsetup.c:72 src/cryptsetup.c:73 src/cryptsetup.c:74
|
||||
#: src/cryptsetup.c:82
|
||||
msgid "<name>"
|
||||
msgstr "<nome>"
|
||||
|
||||
#: src/cryptsetup.c:72
|
||||
msgid "remove device"
|
||||
msgstr "rimuove il device"
|
||||
|
||||
#: src/cryptsetup.c:73
|
||||
msgid "resize active device"
|
||||
msgstr "ridimensiona il device attivo"
|
||||
|
||||
#: src/cryptsetup.c:74
|
||||
msgid "show device status"
|
||||
msgstr "mostra lo stato del device"
|
||||
|
||||
#: src/cryptsetup.c:75 src/cryptsetup.c:77
|
||||
msgid "<device> [<new key file>]"
|
||||
msgstr "<device> [<nuovo file chiave>]"
|
||||
|
||||
#: src/cryptsetup.c:75
|
||||
msgid "formats a LUKS device"
|
||||
msgstr "formatta un device LUKS"
|
||||
|
||||
#: src/cryptsetup.c:76
|
||||
msgid "<device> <name> "
|
||||
msgstr "<device> <nome> "
|
||||
|
||||
#: src/cryptsetup.c:76
|
||||
msgid "open LUKS device as mapping <name>"
|
||||
msgstr "apre il device LUKS come mappatura in <nome>"
|
||||
|
||||
#: src/cryptsetup.c:77
|
||||
msgid "add key to LUKS device"
|
||||
msgstr "aggiunge la chiave al device LUKS"
|
||||
|
||||
#: src/cryptsetup.c:78
|
||||
msgid "<device> [<key file>]"
|
||||
msgstr "<device> [<file chiave>]"
|
||||
|
||||
#: src/cryptsetup.c:78
|
||||
msgid "removes supplied key or key file from LUKS device"
|
||||
msgstr "rimuove la chiave fornita o il file chiave dal device LUKS"
|
||||
|
||||
#: src/cryptsetup.c:79 src/cryptsetup.c:88
|
||||
msgid "<device> <key slot>"
|
||||
msgstr "<device> <slot di chiave>"
|
||||
|
||||
#: src/cryptsetup.c:79
|
||||
msgid "wipes key with number <key slot> from LUKS device"
|
||||
msgstr "ripulisce la chiave con numero <slot di chiave> dal device LUKS"
|
||||
|
||||
#: src/cryptsetup.c:80 src/cryptsetup.c:81 src/cryptsetup.c:83
|
||||
#: src/cryptsetup.c:84 src/cryptsetup.c:85 src/cryptsetup.c:86
|
||||
#: src/cryptsetup.c:87
|
||||
msgid "<device>"
|
||||
msgstr "<device>"
|
||||
|
||||
#: src/cryptsetup.c:80
|
||||
msgid "print UUID of LUKS device"
|
||||
msgstr "stampa l'UUID del device LUKS"
|
||||
|
||||
#: src/cryptsetup.c:81
|
||||
msgid "tests <device> for LUKS partition header"
|
||||
msgstr "esegue il test del <device> per l'header della partizione LUKS"
|
||||
|
||||
#: src/cryptsetup.c:82
|
||||
msgid "remove LUKS mapping"
|
||||
msgstr "rimuove la mappatura LUKS"
|
||||
|
||||
#: src/cryptsetup.c:83
|
||||
msgid "dump LUKS partition information"
|
||||
msgstr "esegue il dump delle informazioni sulla partizione LUKS"
|
||||
|
||||
#: src/cryptsetup.c:84
|
||||
msgid "Suspend LUKS device and wipe key (all IOs are frozen)."
|
||||
msgstr "Sospende il device LUKS e ripulisce la chiave (tutti gli IO sono congelati)"
|
||||
|
||||
#: src/cryptsetup.c:85
|
||||
msgid "Resume suspended LUKS device."
|
||||
msgstr "Ripristina il device LUKS sospeso."
|
||||
|
||||
#: src/cryptsetup.c:86
|
||||
msgid "Backup LUKS device header and keyslots"
|
||||
msgstr "Fa il backup dell'header del device e degli slot di chiave"
|
||||
|
||||
#: src/cryptsetup.c:87
|
||||
msgid "Restore LUKS device header and keyslots"
|
||||
msgstr "Ripristina l'header del device LUKS e gli slot di chiave"
|
||||
|
||||
#: src/cryptsetup.c:88
|
||||
msgid "identical to luksKillSlot - DEPRECATED - see man page"
|
||||
msgstr "identico a luksKillSlot - DEPRECATO - consultare la pagina man"
|
||||
|
||||
#: src/cryptsetup.c:89
|
||||
msgid "modify active device - DEPRECATED - see man page"
|
||||
msgstr "modifica il device attivo - DEPRECATO - consultare la pagina man"
|
||||
|
||||
#: src/cryptsetup.c:180
|
||||
msgid "Command successful.\n"
|
||||
msgstr "Comando eseguito con successo.\n"
|
||||
|
||||
#: src/cryptsetup.c:194
|
||||
#, c-format
|
||||
msgid "Command failed with code %i"
|
||||
msgstr "Comando non riuscito con codice %i"
|
||||
|
||||
#: src/cryptsetup.c:222
|
||||
msgid ""
|
||||
"The reload action is deprecated. Please use \"dmsetup reload\" in case you really need this functionality.\n"
|
||||
"WARNING: do not use reload to touch LUKS devices. If that is the case, hit Ctrl-C now.\n"
|
||||
msgstr ""
|
||||
"L'azione reload è deprecata. Usare \"dmsetup reload\" nel caso sia necessaria questa funzionalità.\n"
|
||||
"ATTENZIONE: non usare ricarica per fare il touch del device LUKS. In questo caso, premere Ctrl-C adesso.\n"
|
||||
|
||||
#: src/cryptsetup.c:390
|
||||
#, c-format
|
||||
msgid "This will overwrite data on %s irrevocably."
|
||||
msgstr "Ciò sovrascriverà i dati in %s in modo irreversibile."
|
||||
|
||||
#: src/cryptsetup.c:391
|
||||
msgid "memory allocation error in action_luksFormat"
|
||||
msgstr "errore di allocazione di memoria in action_luksFormat"
|
||||
|
||||
#: src/cryptsetup.c:421
|
||||
msgid "Obsolete option --non-exclusive is ignored.\n"
|
||||
msgstr "Opzione obsoleta, --non-exclusive ignorato.\n"
|
||||
|
||||
#: src/cryptsetup.c:581 src/cryptsetup.c:603
|
||||
msgid "Option --header-backup-file is required.\n"
|
||||
msgstr "È richiesta l'opzione --header-backup-file.\n"
|
||||
|
||||
#: src/cryptsetup.c:637
|
||||
msgid ""
|
||||
"\n"
|
||||
"<action> is one of:\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"<azione> è una tra:\n"
|
||||
|
||||
#: src/cryptsetup.c:643
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
"<name> is the device to create under %s\n"
|
||||
"<device> is the encrypted device\n"
|
||||
"<key slot> is the LUKS key slot number to modify\n"
|
||||
"<key file> optional key file for the new key for luksAddKey action\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"<nome> è il device da creare in %s\n"
|
||||
"<device> è il device cifrato\n"
|
||||
"<slot di chiave> è il numero dello slot di chiave LUKS da modificare\n"
|
||||
"<file chiave> è il file chiave opzionale per la nuova chiave per l'azione luksAddKey\n"
|
||||
|
||||
#: src/cryptsetup.c:650
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
"Default compiled-in device cipher parameters:\n"
|
||||
"\tplain: %s, Key: %d bits, Password hashing: %s\n"
|
||||
"\tLUKS1: %s, Key: %d bits, LUKS header hashing: %s\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Parametri predefiniti del cifrario del device:\n"
|
||||
"\tin chiaro: %s, chiave: %d bit, hash della password: %s\n"
|
||||
"\tLUKS1: %s, chiave: %d bit, hash dell'header LUKS: %s\n"
|
||||
|
||||
#: src/cryptsetup.c:697
|
||||
msgid "Show this help message"
|
||||
msgstr "Mostra questo messaggio d'aiuto"
|
||||
|
||||
#: src/cryptsetup.c:698
|
||||
msgid "Display brief usage"
|
||||
msgstr "Mostra il modo d'uso sintetico"
|
||||
|
||||
#: src/cryptsetup.c:702
|
||||
msgid "Help options:"
|
||||
msgstr "Opzioni di aiuto:"
|
||||
|
||||
#: src/cryptsetup.c:703
|
||||
msgid "Shows more detailed error messages"
|
||||
msgstr "Mostra i messaggi di errore con maggior dettaglio"
|
||||
|
||||
#: src/cryptsetup.c:704
|
||||
msgid "Show debug messages"
|
||||
msgstr "Mostra i messaggi di debug"
|
||||
|
||||
#: src/cryptsetup.c:705
|
||||
msgid "The cipher used to encrypt the disk (see /proc/crypto)"
|
||||
msgstr "Il cifrario usato per cifrare il disco (vedere /proc/crypto)"
|
||||
|
||||
#: src/cryptsetup.c:706
|
||||
msgid "The hash used to create the encryption key from the passphrase"
|
||||
msgstr "L'hash usato per creare la chiave di cifratura dalla passphrase"
|
||||
|
||||
#: src/cryptsetup.c:707
|
||||
msgid "Verifies the passphrase by asking for it twice"
|
||||
msgstr "Verifica la passphrase chiedendola due volte"
|
||||
|
||||
#: src/cryptsetup.c:708
|
||||
msgid "Read the key from a file (can be /dev/random)"
|
||||
msgstr "Legge la chiave da un file (può essere /dev/random)"
|
||||
|
||||
#: src/cryptsetup.c:709
|
||||
msgid "Read the volume (master) key from file."
|
||||
msgstr "Legge la chiave (master) del volume dal file."
|
||||
|
||||
#: src/cryptsetup.c:710
|
||||
msgid "The size of the encryption key"
|
||||
msgstr "La dimensione della chiave di cifratura"
|
||||
|
||||
#: src/cryptsetup.c:710
|
||||
msgid "BITS"
|
||||
msgstr "BIT"
|
||||
|
||||
#: src/cryptsetup.c:711
|
||||
msgid "Slot number for new key (default is first free)"
|
||||
msgstr "Numero dello slot per la nuova chiave (il primo libero è quello predefinito)"
|
||||
|
||||
#: src/cryptsetup.c:712
|
||||
msgid "The size of the device"
|
||||
msgstr "La dimensione del device"
|
||||
|
||||
#: src/cryptsetup.c:712 src/cryptsetup.c:713 src/cryptsetup.c:714
|
||||
#: src/cryptsetup.c:722
|
||||
msgid "SECTORS"
|
||||
msgstr "SETTORI"
|
||||
|
||||
#: src/cryptsetup.c:713
|
||||
msgid "The start offset in the backend device"
|
||||
msgstr "L'offset iniziale del device di backend"
|
||||
|
||||
#: src/cryptsetup.c:714
|
||||
msgid "How many sectors of the encrypted data to skip at the beginning"
|
||||
msgstr "Quanti settori dei dati cifrati saltare dall'inizio"
|
||||
|
||||
#: src/cryptsetup.c:715
|
||||
msgid "Create a readonly mapping"
|
||||
msgstr "Crea una mappatura in sola lettura"
|
||||
|
||||
#: src/cryptsetup.c:716
|
||||
msgid "PBKDF2 iteration time for LUKS (in ms)"
|
||||
msgstr "Tempo di iterazione di PBKDF2 per LUKS (in ms)"
|
||||
|
||||
#: src/cryptsetup.c:717
|
||||
msgid "msecs"
|
||||
msgstr "msec"
|
||||
|
||||
#: src/cryptsetup.c:718
|
||||
msgid "Do not ask for confirmation"
|
||||
msgstr "Non chiede conferma"
|
||||
|
||||
#: src/cryptsetup.c:719
|
||||
msgid "Print package version"
|
||||
msgstr "Stampa la versione del pacchetto"
|
||||
|
||||
#: src/cryptsetup.c:720
|
||||
msgid "Timeout for interactive passphrase prompt (in seconds)"
|
||||
msgstr "Timeout per il prompt interattivo della passphrase (in secondi)"
|
||||
|
||||
#: src/cryptsetup.c:720
|
||||
msgid "secs"
|
||||
msgstr "sec"
|
||||
|
||||
#: src/cryptsetup.c:721
|
||||
msgid "How often the input of the passphrase can be retried"
|
||||
msgstr "Quante volte può essere ritentato l'inserimento della passphrase"
|
||||
|
||||
#: src/cryptsetup.c:722
|
||||
msgid "Align payload at <n> sector boundaries - for luksFormat"
|
||||
msgstr "Allinea il payload agli estremi del settore <n> - per luksFormat"
|
||||
|
||||
#: src/cryptsetup.c:723
|
||||
msgid "(Obsoleted, see man page.)"
|
||||
msgstr "(Obsoleto, consultare la pagina man.)"
|
||||
|
||||
#: src/cryptsetup.c:724
|
||||
msgid "File with LUKS header and keyslots backup."
|
||||
msgstr "File con header LUKS e backup degli slot di chiave."
|
||||
|
||||
#: src/cryptsetup.c:742
|
||||
msgid "[OPTION...] <action> <action-specific>]"
|
||||
msgstr "[OPZIONE...] <azione> <azione-specifica>]"
|
||||
|
||||
#: src/cryptsetup.c:778
|
||||
msgid "Key size must be a multiple of 8 bits"
|
||||
msgstr "La dimensione della chiave deve essere un multiplo di 8 bit"
|
||||
|
||||
#: src/cryptsetup.c:782
|
||||
msgid "Argument <action> missing."
|
||||
msgstr "Argomento <azione> mancante."
|
||||
|
||||
#: src/cryptsetup.c:788
|
||||
msgid "Unknown action."
|
||||
msgstr "Azione sconosciuta."
|
||||
|
||||
#: src/cryptsetup.c:803
|
||||
#, c-format
|
||||
msgid "%s: requires %s as arguments"
|
||||
msgstr "%s: richiede %s come argomenti"
|
||||
821
po/nl.po
Normal file
821
po/nl.po
Normal file
@@ -0,0 +1,821 @@
|
||||
# Dutch translation of cryptsetup.
|
||||
# This file is distributed under the same license as the cryptsetup package.
|
||||
# Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
# Koen Torfs <koen@indigetesdii.org>, 2010.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: cryptsetup-1.1.1-rc1\n"
|
||||
"Report-Msgid-Bugs-To: dm-crypt@saout.de\n"
|
||||
"POT-Creation-Date: 2010-05-01 16:21+0200\n"
|
||||
"PO-Revision-Date: 2010-05-15 23:29+0100\n"
|
||||
"Last-Translator: Koen Torfs <koen@indigetesdii.org>\n"
|
||||
"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: lib/libdevmapper.c:105
|
||||
msgid "Cannot find compatible device-mapper kernel modules.\n"
|
||||
msgstr "Kan compatibele kernelmodules voor apparaatstoewijzer niet vinden.\n"
|
||||
|
||||
#: lib/libdevmapper.c:111
|
||||
msgid "Cannot initialize device-mapper. Is dm_mod kernel module loaded?\n"
|
||||
msgstr "Kan apparaatstoewijzer niet initialiseren. Is kernelmodule dm_mod geladen?\n"
|
||||
|
||||
#: lib/libdevmapper.c:408
|
||||
#, c-format
|
||||
msgid "DM-UUID for device %s was truncated.\n"
|
||||
msgstr "DM-UUID voor apparaat %s was afgekapt.\n"
|
||||
|
||||
#: lib/setup.c:103
|
||||
#, c-format
|
||||
msgid "Cannot not read %d bytes from key file %s.\n"
|
||||
msgstr "Kan %d bytes uit sleutelbestand %s niet lezen.\n"
|
||||
|
||||
#: lib/setup.c:115
|
||||
#, c-format
|
||||
msgid "Key processing error (using hash algorithm %s).\n"
|
||||
msgstr "Sleutelbehandelingsfout (met hash-algoritme %s in gebruik).\n"
|
||||
|
||||
#: lib/setup.c:170
|
||||
msgid "All key slots full.\n"
|
||||
msgstr "Alle sleutelplaatsen vol.\n"
|
||||
|
||||
#: lib/setup.c:177 lib/setup.c:305 lib/setup.c:779
|
||||
#, c-format
|
||||
msgid "Key slot %d is invalid, please select between 0 and %d.\n"
|
||||
msgstr "Sleutelplaats %d is ongeldig, selecteer een plaats tussen 0 en %d.\n"
|
||||
|
||||
#: lib/setup.c:183
|
||||
#, c-format
|
||||
msgid "Key slot %d is full, please select another one.\n"
|
||||
msgstr "Sleutelplaats %d is vol, selecteer een andere.\n"
|
||||
|
||||
#: lib/setup.c:202
|
||||
msgid "Enter any remaining LUKS passphrase: "
|
||||
msgstr "Voer enig LUKS-wachtwoord in: "
|
||||
|
||||
#: lib/setup.c:223
|
||||
#, c-format
|
||||
msgid "Key slot %d verified.\n"
|
||||
msgstr "Sleutelplaats %d geverifieerd.\n"
|
||||
|
||||
#: lib/setup.c:258
|
||||
#, c-format
|
||||
msgid "Cannot get info about device %s.\n"
|
||||
msgstr "Kan geen informatie verkrijgen over apparaat %s.\n"
|
||||
|
||||
#: lib/setup.c:265
|
||||
#, c-format
|
||||
msgid "Device %s has zero size.\n"
|
||||
msgstr "Apparaat %s heeft grootte nul.\n"
|
||||
|
||||
#: lib/setup.c:269
|
||||
#, c-format
|
||||
msgid "Device %s is too small.\n"
|
||||
msgstr "Apparaat %s is te klein.\n"
|
||||
|
||||
#: lib/setup.c:294
|
||||
msgid "Enter LUKS passphrase to be deleted: "
|
||||
msgstr "Voer het te verwijderen LUKS-wachtwoord in: "
|
||||
|
||||
#: lib/setup.c:300
|
||||
#, c-format
|
||||
msgid "key slot %d selected for deletion.\n"
|
||||
msgstr "sleutelplaats %d geselecteerd voor verwijdering.\n"
|
||||
|
||||
#: lib/setup.c:311
|
||||
#, c-format
|
||||
msgid "Key %d not active. Can't wipe.\n"
|
||||
msgstr "Sleutel %d niet actief. Kan niet uitvegen.\n"
|
||||
|
||||
#: lib/setup.c:317
|
||||
msgid "This is the last keyslot. Device will become unusable after purging this key."
|
||||
msgstr "Dit is de laatste sleutelplaats. Apparaat zal onbruikbaar worden na het verwijderen van deze sleutel."
|
||||
|
||||
#: lib/setup.c:365 lib/setup.c:1687 lib/setup.c:1740 lib/setup.c:1797
|
||||
#, c-format
|
||||
msgid "Device %s already exists.\n"
|
||||
msgstr "Apparaat %s bestaat reeds.\n"
|
||||
|
||||
#: lib/setup.c:370
|
||||
#, c-format
|
||||
msgid "Invalid key size %d.\n"
|
||||
msgstr "Ongeldige sleutelgrootte %d.\n"
|
||||
|
||||
#: lib/setup.c:472 lib/setup.c:1692
|
||||
#, c-format
|
||||
msgid "Enter passphrase for %s: "
|
||||
msgstr "Voer wachtwoord in voor %s: "
|
||||
|
||||
#: lib/setup.c:601 lib/setup.c:629 lib/setup.c:1401 lib/setup.c:1748
|
||||
msgid "Enter passphrase: "
|
||||
msgstr "Voer wachtwoord in: "
|
||||
|
||||
#: lib/setup.c:662 lib/setup.c:1046 lib/setup.c:1839
|
||||
#, c-format
|
||||
msgid "Device %s is not active.\n"
|
||||
msgstr "Apparaat %s is niet actief.\n"
|
||||
|
||||
#: lib/setup.c:771
|
||||
msgid "No known cipher specification pattern detected.\n"
|
||||
msgstr "Geen bekend specificatiepatroon voor het sleutelalgoritme gevonden.\n"
|
||||
|
||||
#: lib/setup.c:785
|
||||
msgid "Enter LUKS passphrase: "
|
||||
msgstr "Voer LUKS-wachtwoord in: "
|
||||
|
||||
#: lib/setup.c:926 lib/setup.c:1153 lib/setup.c:1207 lib/setup.c:1232
|
||||
#: lib/setup.c:1251
|
||||
msgid "Cannot initialize crypto backend.\n"
|
||||
msgstr "Kan versleutelingsbackend niet initialiseren.\n"
|
||||
|
||||
#: lib/setup.c:1066
|
||||
msgid "Invalid plain crypt parameters.\n"
|
||||
msgstr "Ongeldige normale versleutelingsparameters.\n"
|
||||
|
||||
#: lib/setup.c:1071
|
||||
msgid "Invalid key size.\n"
|
||||
msgstr "Ongeldige sleutelgrootte.\n"
|
||||
|
||||
#: lib/setup.c:1104
|
||||
msgid "Can't format LUKS without device.\n"
|
||||
msgstr "Kan LUKS niet formatteren zonder apparaat.\n"
|
||||
|
||||
#: lib/setup.c:1126
|
||||
#, c-format
|
||||
msgid "Can't wipe header on device %s.\n"
|
||||
msgstr "Kan koptekst op apparaat %s niet uitvegen.\n"
|
||||
|
||||
#: lib/setup.c:1174
|
||||
#, c-format
|
||||
msgid "Unknown crypt device type %s requested.\n"
|
||||
msgstr "Onbekend versleutelingsapparaattype %s aangevraagd.\n"
|
||||
|
||||
#: lib/setup.c:1293
|
||||
#, c-format
|
||||
msgid "Volume %s is not active.\n"
|
||||
msgstr "Opslagmedium %s is niet actief.\n"
|
||||
|
||||
#: lib/setup.c:1306
|
||||
#, c-format
|
||||
msgid "Volume %s is already suspended.\n"
|
||||
msgstr "Opslagmedium %s is reeds geschorst.\n"
|
||||
|
||||
#: lib/setup.c:1334 lib/setup.c:1383 lib/setup.c:1442 lib/setup.c:1520
|
||||
#: lib/setup.c:1592 lib/setup.c:1637 lib/setup.c:1731 lib/setup.c:1788
|
||||
#: lib/setup.c:1909 lib/setup.c:1992 lib/setup.c:2092
|
||||
msgid "This operation is supported only for LUKS device.\n"
|
||||
msgstr "Deze operatie wordt enkel ondersteund voor LUKS-apparaten.\n"
|
||||
|
||||
#: lib/setup.c:1345 lib/setup.c:1394
|
||||
#, c-format
|
||||
msgid "Volume %s is not suspended.\n"
|
||||
msgstr "Opslagmedium %s is niet geschorst.\n"
|
||||
|
||||
#: lib/setup.c:1456 lib/setup.c:1534
|
||||
msgid "Cannot add key slot, all slots disabled and no volume key provided.\n"
|
||||
msgstr "Kan geen sleutelplaats toevoegen, alle plaatsen zijn uitgeschakeld en geen sleutel tot het opslagmedium voorzien.\n"
|
||||
|
||||
#: lib/setup.c:1465 lib/setup.c:1540 lib/setup.c:1543
|
||||
msgid "Enter any passphrase: "
|
||||
msgstr "Voer een wachtwoord in: "
|
||||
|
||||
#: lib/setup.c:1484 lib/setup.c:1558 lib/setup.c:1562 lib/setup.c:1615
|
||||
msgid "Enter new passphrase for key slot: "
|
||||
msgstr "Voer een nieuw wachtwoord in voor de sleutelplaats: "
|
||||
|
||||
#: lib/setup.c:1606 lib/setup.c:1808 lib/setup.c:1920
|
||||
msgid "Volume key does not match the volume.\n"
|
||||
msgstr "Sleutel tot opslagmedium komt niet overeen met het opslagmedium.\n"
|
||||
|
||||
#: lib/setup.c:1643
|
||||
#, c-format
|
||||
msgid "Key slot %d is invalid.\n"
|
||||
msgstr "Sleutelplaats %d is ongeldig.\n"
|
||||
|
||||
#: lib/setup.c:1648
|
||||
#, c-format
|
||||
msgid "Key slot %d is not used.\n"
|
||||
msgstr "Sleutelplaats %d is niet in gebruik.\n"
|
||||
|
||||
#: lib/setup.c:1835
|
||||
#, c-format
|
||||
msgid "Device %s is busy.\n"
|
||||
msgstr "Apparaat %s is bezig.\n"
|
||||
|
||||
#: lib/setup.c:1843
|
||||
#, c-format
|
||||
msgid "Invalid device %s.\n"
|
||||
msgstr "Ongeldig apparaat %s.\n"
|
||||
|
||||
#: lib/setup.c:1867
|
||||
msgid "Volume key buffer too small.\n"
|
||||
msgstr "Sleutelbuffer van het opslagmedium is te klein.\n"
|
||||
|
||||
#: lib/setup.c:1875
|
||||
msgid "Cannot retrieve volume key for plain device.\n"
|
||||
msgstr "Kan sleutel tot het opslagmedium voor apparaat niet ophalen.\n"
|
||||
|
||||
#: lib/setup.c:1897
|
||||
#, c-format
|
||||
msgid "This operation is not supported for %s crypt device.\n"
|
||||
msgstr "Deze operatie wordt niet ondersteund voor versleutelapparaat %s.\n"
|
||||
|
||||
#: lib/utils.c:416
|
||||
#, c-format
|
||||
msgid "Failed to open key file %s.\n"
|
||||
msgstr "Openen van sleutelbestand %s gefaald.\n"
|
||||
|
||||
#: lib/utils.c:436
|
||||
msgid "Error reading passphrase from terminal.\n"
|
||||
msgstr "Fout bij het lezen van het wachtwoord uit de terminal.\n"
|
||||
|
||||
#: lib/utils.c:441
|
||||
msgid "Verify passphrase: "
|
||||
msgstr "Verifieer wachtwoord: "
|
||||
|
||||
#: lib/utils.c:443
|
||||
msgid "Passphrases do not match.\n"
|
||||
msgstr "Wachtwoorden komen niet overeen.\n"
|
||||
|
||||
#: lib/utils.c:458
|
||||
msgid "Can't do passphrase verification on non-tty inputs.\n"
|
||||
msgstr "Kan geen wachtwoordverificatie uitvoeren op invoer van buiten de terminal.\n"
|
||||
|
||||
#: lib/utils.c:471
|
||||
#, c-format
|
||||
msgid "Failed to stat key file %s.\n"
|
||||
msgstr "Stat op sleutelbestand %s gefaald.\n"
|
||||
|
||||
#: lib/utils.c:475
|
||||
#, c-format
|
||||
msgid "Warning: exhausting read requested, but key file %s is not a regular file, function might never return.\n"
|
||||
msgstr "Let op: volledige lezing aangevraagd, maar sleutelbestand %s is geen regulier bestand, functie zal misschien nooit terugkeren.\n"
|
||||
|
||||
#: lib/utils.c:487
|
||||
msgid "Out of memory while reading passphrase.\n"
|
||||
msgstr "Geen geheugen meer beschikbaar bij lezen wachtwoord.\n"
|
||||
|
||||
#: lib/utils.c:494
|
||||
msgid "Error reading passphrase.\n"
|
||||
msgstr "Fout bij het lezen van het wachtwoord.\n"
|
||||
|
||||
#: lib/utils.c:531
|
||||
#, c-format
|
||||
msgid "Device %s doesn't exist or access denied.\n"
|
||||
msgstr "Apparaat %s bestaat niet of toegang geweigerd.\n"
|
||||
|
||||
#: lib/utils.c:538
|
||||
#, c-format
|
||||
msgid "Cannot open device %s for %s%s access.\n"
|
||||
msgstr "Kan apparaat %s niet openen voor %s%s toegang.\n"
|
||||
|
||||
#: lib/utils.c:539
|
||||
msgid "exclusive "
|
||||
msgstr "exclusief "
|
||||
|
||||
#: lib/utils.c:540
|
||||
msgid "writable"
|
||||
msgstr "schrijfbaar"
|
||||
|
||||
#: lib/utils.c:540
|
||||
msgid "read-only"
|
||||
msgstr "alleen-lezen"
|
||||
|
||||
#: lib/utils.c:547
|
||||
#, c-format
|
||||
msgid "Cannot read device %s.\n"
|
||||
msgstr "Kan apparaat niet lezen: %s.\n"
|
||||
|
||||
#: lib/utils.c:577
|
||||
#, c-format
|
||||
msgid "Cannot open device: %s\n"
|
||||
msgstr "Kan apparaat niet openen: %s\n"
|
||||
|
||||
#: lib/utils.c:587
|
||||
#, c-format
|
||||
msgid "BLKROGET failed on device %s.\n"
|
||||
msgstr "BLKROGET gefaald op apparaat %s.\n"
|
||||
|
||||
#: lib/utils.c:612
|
||||
#, c-format
|
||||
msgid "BLKGETSIZE failed on device %s.\n"
|
||||
msgstr "BLKGETSIZE gefaald op apparaat %s.\n"
|
||||
|
||||
#: lib/utils.c:660
|
||||
msgid "WARNING!!! Possibly insecure memory. Are you root?\n"
|
||||
msgstr "LET OP!!! Mogelijk onveilig geheugen. Ben je systeembeheerder?\n"
|
||||
|
||||
#: lib/utils.c:666
|
||||
msgid "Cannot get process priority.\n"
|
||||
msgstr "Kan geen procesprioriteit verkrijgen.\n"
|
||||
|
||||
#: lib/utils.c:669 lib/utils.c:682
|
||||
#, c-format
|
||||
msgid "setpriority %u failed: %s"
|
||||
msgstr "setpriority %u gefaald: %s"
|
||||
|
||||
#: lib/utils.c:680
|
||||
msgid "Cannot unlock memory."
|
||||
msgstr "Kan de vergrendeling van het geheugen niet opheffen."
|
||||
|
||||
#: luks/keyencryption.c:68
|
||||
#, c-format
|
||||
msgid "Unable to obtain sector size for %s"
|
||||
msgstr "Kan geen sectorgrootte verkrijgen voor %s"
|
||||
|
||||
#: luks/keyencryption.c:137
|
||||
msgid "Failed to obtain device mapper directory."
|
||||
msgstr "Kan geen map voor de apparaatstoewijzer verkrijgen."
|
||||
|
||||
#: luks/keyencryption.c:153
|
||||
#, 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).\n"
|
||||
"%s"
|
||||
msgstr ""
|
||||
"Kan dm-crypt sleuteltoewijzing niet instellen voor apparaat %s.\n"
|
||||
"Kijk na of de kernel versleutelalgoritme %s ondersteunt (bekijk syslog voor meer informatie).\n"
|
||||
"%s"
|
||||
|
||||
#: luks/keyencryption.c:163
|
||||
msgid "Failed to open temporary keystore device.\n"
|
||||
msgstr "Openen van het tijdelijke sleutelopslagapparaat gefaald.\n"
|
||||
|
||||
#: luks/keyencryption.c:170
|
||||
msgid "Failed to access temporary keystore device.\n"
|
||||
msgstr "Kan geen toegang verkrijgen tot tijdelijk sleutelopslagapparaat.\n"
|
||||
|
||||
#: luks/keymanage.c:94
|
||||
#, c-format
|
||||
msgid "Requested file %s already exist.\n"
|
||||
msgstr "Aangevraagd bestand %s bestaat reeds.\n"
|
||||
|
||||
#: luks/keymanage.c:114 luks/keymanage.c:257
|
||||
#, c-format
|
||||
msgid "Device %s is not a valid LUKS device.\n"
|
||||
msgstr "Apparaat %s is geen geldig LUKS-apparaat.\n"
|
||||
|
||||
#: luks/keymanage.c:134
|
||||
#, c-format
|
||||
msgid "Cannot write header backup file %s.\n"
|
||||
msgstr "Kan reservekopie %s van koptekst niet schrijven.\n"
|
||||
|
||||
#: luks/keymanage.c:161
|
||||
#, c-format
|
||||
msgid "Backup file %s doesn't exist.\n"
|
||||
msgstr "Reservekopie %s bestaat niet.\n"
|
||||
|
||||
#: luks/keymanage.c:169
|
||||
msgid "Backup file do not contain valid LUKS header.\n"
|
||||
msgstr "Reservekopie heeft geen geldige LUKS-koptekst.\n"
|
||||
|
||||
#: luks/keymanage.c:182
|
||||
#, c-format
|
||||
msgid "Cannot open header backup file %s.\n"
|
||||
msgstr "Kan reservekopie %s van het kopbestand niet openen.\n"
|
||||
|
||||
#: luks/keymanage.c:188
|
||||
#, c-format
|
||||
msgid "Cannot read header backup file %s.\n"
|
||||
msgstr "Kan reservekopie %s van het kopbestand niet lezen.\n"
|
||||
|
||||
#: luks/keymanage.c:199
|
||||
msgid "Data offset or key size differs on device and backup, restore failed.\n"
|
||||
msgstr "Verschillende dataplaats of sleutelgrootte in apparaat en reservekopie, herstelling gefaald.\n"
|
||||
|
||||
#: luks/keymanage.c:207
|
||||
#, c-format
|
||||
msgid "Device %s %s%s"
|
||||
msgstr "Apparaat %s %s%s"
|
||||
|
||||
#: luks/keymanage.c:208
|
||||
msgid "does not contain LUKS header. Replacing header can destroy data on that device."
|
||||
msgstr "bevat geen LUKS-kopbestand. Het kopbestand vervangen kan data op het apparaat vernietigen."
|
||||
|
||||
#: luks/keymanage.c:209
|
||||
msgid "already contains LUKS header. Replacing header will destroy existing keyslots."
|
||||
msgstr "bevat reeds een LUKS-kopbestand. Het kopbestand vervangen zal bestaande sleutelplaatsen vernietigen."
|
||||
|
||||
#: luks/keymanage.c:210
|
||||
msgid ""
|
||||
"\n"
|
||||
"WARNING: real device header has different UUID than backup!"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"LET OP: originele apparaatskoptekst heeft een ander UUID dan de reservekopie!"
|
||||
|
||||
#: luks/keymanage.c:225 luks/keymanage.c:338 luks/keymanage.c:373
|
||||
#, c-format
|
||||
msgid "Cannot open device %s.\n"
|
||||
msgstr "Kan apparaat %s niet openen.\n"
|
||||
|
||||
#: luks/keymanage.c:259
|
||||
#, c-format
|
||||
msgid "Device %s is not a valid LUKS device."
|
||||
msgstr "Apparaat %s is geen geldig LUKS-apparaat."
|
||||
|
||||
#: luks/keymanage.c:262
|
||||
#, c-format
|
||||
msgid "Unsupported LUKS version %d.\n"
|
||||
msgstr "Niet ondersteunde LUKS-versie %d.\n"
|
||||
|
||||
#: luks/keymanage.c:265
|
||||
#, c-format
|
||||
msgid "Requested LUKS hash %s is not supported.\n"
|
||||
msgstr "Aangevraagde LUKS-hash %s wordt niet ondersteund.\n"
|
||||
|
||||
#: luks/keymanage.c:310
|
||||
#, c-format
|
||||
msgid "Cannot open file %s.\n"
|
||||
msgstr "Kan bestand %s niet openen.\n"
|
||||
|
||||
#: luks/keymanage.c:350
|
||||
#, c-format
|
||||
msgid "LUKS header detected but device %s is too small.\n"
|
||||
msgstr "LUKS-kopbestand gevonden maar apparaat %s is te klein.\n"
|
||||
|
||||
#: luks/keymanage.c:394
|
||||
#, c-format
|
||||
msgid "Error during update of LUKS header on device %s.\n"
|
||||
msgstr "Fout bij het bijwerken van LUKS-kopbestand op apparaat %s.\n"
|
||||
|
||||
#: luks/keymanage.c:401
|
||||
#, c-format
|
||||
msgid "Error re-reading LUKS header after update on device %s.\n"
|
||||
msgstr "Fout bij het herlezen van LUKS-kopbestand na bijwerken van apparaat %s.\n"
|
||||
|
||||
#: luks/keymanage.c:413
|
||||
#, c-format
|
||||
msgid "Not compatible PBKDF2 options (using hash algorithm %s).\n"
|
||||
msgstr "Niet-compatibele PBKDF2 opties (met hash-algoritme %s in gebruik).\n"
|
||||
|
||||
#: luks/keymanage.c:461
|
||||
msgid "Cannot create LUKS header: reading random salt failed.\n"
|
||||
msgstr "Kan LUKS-koptekst niet aanmaken: lezen van random salt gefaald.\n"
|
||||
|
||||
#: luks/keymanage.c:478
|
||||
#, c-format
|
||||
msgid "Cannot create LUKS header: header digest failed (using hash %s).\n"
|
||||
msgstr "Kan LUKS-koptekst niet aanmaken: verwerking van koptekst gefaald (met hash %s in gebruik).\n"
|
||||
|
||||
#: luks/keymanage.c:496
|
||||
msgid "Wrong UUID format provided, generating new one.\n"
|
||||
msgstr "Verkeerd UUID-formaat verschaft, een nieuwe wordt aangemaakt.\n"
|
||||
|
||||
#: luks/keymanage.c:523
|
||||
#, c-format
|
||||
msgid "Key slot %d active, purge first.\n"
|
||||
msgstr "Sleutelplaats %d actief, ruim eerst op.\n"
|
||||
|
||||
#: luks/keymanage.c:528
|
||||
#, c-format
|
||||
msgid "Key slot %d material includes too few stripes. Header manipulation?\n"
|
||||
msgstr "Inhoud van sleutelplaats %d bevat te weinig fragmenten. Koptekstmanipulatie?\n"
|
||||
|
||||
#: luks/keymanage.c:587
|
||||
msgid "Failed to write to key storage.\n"
|
||||
msgstr "Schrijven naar sleutelopslag gefaald.\n"
|
||||
|
||||
#: luks/keymanage.c:664
|
||||
msgid "Failed to read from key storage.\n"
|
||||
msgstr "Lezen uit sleutelopslag gefaald.\n"
|
||||
|
||||
#: luks/keymanage.c:673
|
||||
#, c-format
|
||||
msgid "Key slot %d unlocked.\n"
|
||||
msgstr "Sleutelplaats %d ontgrendeld.\n"
|
||||
|
||||
#: luks/keymanage.c:706
|
||||
msgid "No key available with this passphrase.\n"
|
||||
msgstr "Geen sleutel beschikbaar met dit wachtwoord.\n"
|
||||
|
||||
#: luks/keymanage.c:783
|
||||
#, c-format
|
||||
msgid "Key slot %d is invalid, please select keyslot between 0 and %d.\n"
|
||||
msgstr "Sleutelplaats %d is ongeldig, selecteer een sleutelplaats tussen 0 en %d.\n"
|
||||
|
||||
#: luks/keymanage.c:795
|
||||
#, c-format
|
||||
msgid "Cannot wipe device %s.\n"
|
||||
msgstr "Kan apparaat %s niet uitvegen.\n"
|
||||
|
||||
#: src/cryptsetup.c:71 src/cryptsetup.c:89
|
||||
msgid "<name> <device>"
|
||||
msgstr "<naam> <apparaat>"
|
||||
|
||||
#: src/cryptsetup.c:71
|
||||
msgid "create device"
|
||||
msgstr "apparaat aanmaken"
|
||||
|
||||
#: src/cryptsetup.c:72 src/cryptsetup.c:73 src/cryptsetup.c:74
|
||||
#: src/cryptsetup.c:82
|
||||
msgid "<name>"
|
||||
msgstr "<naam>"
|
||||
|
||||
#: src/cryptsetup.c:72
|
||||
msgid "remove device"
|
||||
msgstr "apparaat verwijderen"
|
||||
|
||||
#: src/cryptsetup.c:73
|
||||
msgid "resize active device"
|
||||
msgstr "actief apparaat vergroten of verkleinen"
|
||||
|
||||
#: src/cryptsetup.c:74
|
||||
msgid "show device status"
|
||||
msgstr "apparaatstatus tonen"
|
||||
|
||||
#: src/cryptsetup.c:75 src/cryptsetup.c:77
|
||||
msgid "<device> [<new key file>]"
|
||||
msgstr "<apparaat> [<nieuw sleutelbestand>]"
|
||||
|
||||
#: src/cryptsetup.c:75
|
||||
msgid "formats a LUKS device"
|
||||
msgstr "formatteert een LUKS-apparaat"
|
||||
|
||||
#: src/cryptsetup.c:76
|
||||
msgid "<device> <name> "
|
||||
msgstr "<apparaat> <naam> "
|
||||
|
||||
#: src/cryptsetup.c:76
|
||||
msgid "open LUKS device as mapping <name>"
|
||||
msgstr "LUKS-apparaat als toewijzing <naam> openen"
|
||||
|
||||
#: src/cryptsetup.c:77
|
||||
msgid "add key to LUKS device"
|
||||
msgstr "sleutel aan LUKS-apparaat toevoegen"
|
||||
|
||||
#: src/cryptsetup.c:78
|
||||
msgid "<device> [<key file>]"
|
||||
msgstr "<apparaat> [<sleutelbestand>]"
|
||||
|
||||
#: src/cryptsetup.c:78
|
||||
msgid "removes supplied key or key file from LUKS device"
|
||||
msgstr "verwijdert verschafte sleutel of sleutelbestand van LUKS-apparaat"
|
||||
|
||||
#: src/cryptsetup.c:79 src/cryptsetup.c:88
|
||||
msgid "<device> <key slot>"
|
||||
msgstr "<apparaat> <sleutelplaats>"
|
||||
|
||||
#: src/cryptsetup.c:79
|
||||
msgid "wipes key with number <key slot> from LUKS device"
|
||||
msgstr "verwijdert sleutel met nummer <sleutelplaats> van LUKS-apparaat"
|
||||
|
||||
#: src/cryptsetup.c:80 src/cryptsetup.c:81 src/cryptsetup.c:83
|
||||
#: src/cryptsetup.c:84 src/cryptsetup.c:85 src/cryptsetup.c:86
|
||||
#: src/cryptsetup.c:87
|
||||
msgid "<device>"
|
||||
msgstr "<apparaat>"
|
||||
|
||||
#: src/cryptsetup.c:80
|
||||
msgid "print UUID of LUKS device"
|
||||
msgstr "UUID van LUKS-apparaat tonen"
|
||||
|
||||
#: src/cryptsetup.c:81
|
||||
msgid "tests <device> for LUKS partition header"
|
||||
msgstr "test <apparaat> voor LUKS-partitiekoptekst"
|
||||
|
||||
#: src/cryptsetup.c:82
|
||||
msgid "remove LUKS mapping"
|
||||
msgstr "LUKS-toewijzing verwijderen"
|
||||
|
||||
#: src/cryptsetup.c:83
|
||||
msgid "dump LUKS partition information"
|
||||
msgstr "LUKS partitie-informatie dumpen"
|
||||
|
||||
#: src/cryptsetup.c:84
|
||||
msgid "Suspend LUKS device and wipe key (all IOs are frozen)."
|
||||
msgstr "LUKS-apparaat schorsen en sleutel wissen (alle IOs zijn geblokkeerd)."
|
||||
|
||||
#: src/cryptsetup.c:85
|
||||
msgid "Resume suspended LUKS device."
|
||||
msgstr "Geschorst LUKS-apparaat hervatten."
|
||||
|
||||
#: src/cryptsetup.c:86
|
||||
msgid "Backup LUKS device header and keyslots"
|
||||
msgstr "Maak een reservekopie van LUKS-apparaatskopbestand en sleutelplaatsen"
|
||||
|
||||
#: src/cryptsetup.c:87
|
||||
msgid "Restore LUKS device header and keyslots"
|
||||
msgstr "Herstel LUKS-apparaatskopbestand en sleutelplaatsen"
|
||||
|
||||
#: src/cryptsetup.c:88
|
||||
msgid "identical to luksKillSlot - DEPRECATED - see man page"
|
||||
msgstr "identiek aan luksKillSlot - VEROUDERD - zie man-pagina"
|
||||
|
||||
#: src/cryptsetup.c:89
|
||||
msgid "modify active device - DEPRECATED - see man page"
|
||||
msgstr "actief apparaat wijzigen - VEROUDERD - zie man-pagina"
|
||||
|
||||
#: src/cryptsetup.c:180
|
||||
msgid "Command successful.\n"
|
||||
msgstr "Opdracht succesvol.\n"
|
||||
|
||||
#: src/cryptsetup.c:194
|
||||
#, c-format
|
||||
msgid "Command failed with code %i"
|
||||
msgstr "Opdracht gefaald met code %i"
|
||||
|
||||
#: src/cryptsetup.c:222
|
||||
msgid ""
|
||||
"The reload action is deprecated. Please use \"dmsetup reload\" in case you really need this functionality.\n"
|
||||
"WARNING: do not use reload to touch LUKS devices. If that is the case, hit Ctrl-C now.\n"
|
||||
msgstr ""
|
||||
"De herlaadactie is verouderd. Gebruik “dmsetup reload” indien je deze functionaliteit echt nodig hebt.\n"
|
||||
"LET OP: gebruik de herlaadactie niet om LUKS-apparaten te “touchen”. Indien je dat wil doen, typ nu Ctrl-C.\n"
|
||||
|
||||
#: src/cryptsetup.c:390
|
||||
#, c-format
|
||||
msgid "This will overwrite data on %s irrevocably."
|
||||
msgstr "Dit zal data op %s onherroepelijk overschrijven."
|
||||
|
||||
#: src/cryptsetup.c:391
|
||||
msgid "memory allocation error in action_luksFormat"
|
||||
msgstr "geheugentoewijzingsfout in action_luksFormat"
|
||||
|
||||
#: src/cryptsetup.c:421
|
||||
msgid "Obsolete option --non-exclusive is ignored.\n"
|
||||
msgstr "Verouderde optie --non-exclusive wordt genegeerd.\n"
|
||||
|
||||
#: src/cryptsetup.c:581 src/cryptsetup.c:603
|
||||
msgid "Option --header-backup-file is required.\n"
|
||||
msgstr "Optie --header-backup-file is vereist.\n"
|
||||
|
||||
#: src/cryptsetup.c:637
|
||||
msgid ""
|
||||
"\n"
|
||||
"<action> is one of:\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"<actie> is een van:\n"
|
||||
|
||||
#: src/cryptsetup.c:643
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
"<name> is the device to create under %s\n"
|
||||
"<device> is the encrypted device\n"
|
||||
"<key slot> is the LUKS key slot number to modify\n"
|
||||
"<key file> optional key file for the new key for luksAddKey action\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"<naam> is het apparaat aan te maken onder %s\n"
|
||||
"<apparaat> is het versleutelde apparaat\n"
|
||||
"<sleutelplaats> is het nummer van de te wijzigen LUKS-sleutelplaats\n"
|
||||
"<sleutelbestand> optioneel sleutelbestand voor de nieuwe sleutel voor de luksAddKey-actie\n"
|
||||
|
||||
#: src/cryptsetup.c:650
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
"Default compiled-in device cipher parameters:\n"
|
||||
"\tplain: %s, Key: %d bits, Password hashing: %s\n"
|
||||
"\tLUKS1: %s, Key: %d bits, LUKS header hashing: %s\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Standaard meegecompileerde parameters van het apparaatsversleutelingsalgoritme:\n"
|
||||
"\tplain: %s, Sleutel: %d bits, Wachtwoordhashing: %s\n"
|
||||
"\tLUKS1: %s, Sleutel: %d bits, LUKS-kopteksthashing: %s\n"
|
||||
|
||||
#: src/cryptsetup.c:697
|
||||
msgid "Show this help message"
|
||||
msgstr "Deze helpboodschap tonen"
|
||||
|
||||
#: src/cryptsetup.c:698
|
||||
msgid "Display brief usage"
|
||||
msgstr "Kort gebruik tonen"
|
||||
|
||||
#: src/cryptsetup.c:702
|
||||
msgid "Help options:"
|
||||
msgstr "Helpopties:"
|
||||
|
||||
#: src/cryptsetup.c:703
|
||||
msgid "Shows more detailed error messages"
|
||||
msgstr "Toont meer gedetailleerde foutboodschappen"
|
||||
|
||||
#: src/cryptsetup.c:704
|
||||
msgid "Show debug messages"
|
||||
msgstr "Debugboodschappen tonen"
|
||||
|
||||
#: src/cryptsetup.c:705
|
||||
msgid "The cipher used to encrypt the disk (see /proc/crypto)"
|
||||
msgstr "Het gebruikte versleutelalgoritme om de schijf te versleutelen (zie /proc/crypto)"
|
||||
|
||||
#: src/cryptsetup.c:706
|
||||
msgid "The hash used to create the encryption key from the passphrase"
|
||||
msgstr "De gebruikte hash om de encryptiesleutel uit het wachtwoord aan te maken"
|
||||
|
||||
#: src/cryptsetup.c:707
|
||||
msgid "Verifies the passphrase by asking for it twice"
|
||||
msgstr "Verifieert het wachtwoord door het twee keer te vragen"
|
||||
|
||||
#: src/cryptsetup.c:708
|
||||
msgid "Read the key from a file (can be /dev/random)"
|
||||
msgstr "De sleutel uit een bestand lezen (mag /dev/random zijn)"
|
||||
|
||||
#: src/cryptsetup.c:709
|
||||
msgid "Read the volume (master) key from file."
|
||||
msgstr "Lees de (hoofd)sleutel tot het opslagmedium uit een bestand."
|
||||
|
||||
#: src/cryptsetup.c:710
|
||||
msgid "The size of the encryption key"
|
||||
msgstr "De grootte van de encryptiesleutel"
|
||||
|
||||
#: src/cryptsetup.c:710
|
||||
msgid "BITS"
|
||||
msgstr "BITS"
|
||||
|
||||
#: src/cryptsetup.c:711
|
||||
msgid "Slot number for new key (default is first free)"
|
||||
msgstr "Plaatsnummer voor nieuwe sleutel (standaard is de eerste open plaats)"
|
||||
|
||||
#: src/cryptsetup.c:712
|
||||
msgid "The size of the device"
|
||||
msgstr "De grootte van het apparaat"
|
||||
|
||||
#: src/cryptsetup.c:712 src/cryptsetup.c:713 src/cryptsetup.c:714
|
||||
#: src/cryptsetup.c:721
|
||||
msgid "SECTORS"
|
||||
msgstr "SECTOREN"
|
||||
|
||||
#: src/cryptsetup.c:713
|
||||
msgid "The start offset in the backend device"
|
||||
msgstr "De startplaats in het backend-apparaat"
|
||||
|
||||
#: src/cryptsetup.c:714
|
||||
msgid "How many sectors of the encrypted data to skip at the beginning"
|
||||
msgstr "Hoeveel sectoren van de versleutelde data aan het begin over te slaan"
|
||||
|
||||
#: src/cryptsetup.c:715
|
||||
msgid "Create a readonly mapping"
|
||||
msgstr "Maak een alleen-lezen toewijzing aan"
|
||||
|
||||
#: src/cryptsetup.c:716
|
||||
msgid "PBKDF2 iteration time for LUKS (in ms)"
|
||||
msgstr "PBKDF2 herhalingstijd voor LUKS (in ms)"
|
||||
|
||||
#: src/cryptsetup.c:716
|
||||
msgid "msecs"
|
||||
msgstr "milliseconden"
|
||||
|
||||
#: src/cryptsetup.c:717
|
||||
msgid "Do not ask for confirmation"
|
||||
msgstr "Niet om bevestiging vragen"
|
||||
|
||||
#: src/cryptsetup.c:718
|
||||
msgid "Print package version"
|
||||
msgstr "Pakketversie tonen"
|
||||
|
||||
#: src/cryptsetup.c:719
|
||||
msgid "Timeout for interactive passphrase prompt (in seconds)"
|
||||
msgstr "Timeout voor interactieve wachtwoordprompt (in seconden)"
|
||||
|
||||
#: src/cryptsetup.c:719
|
||||
msgid "secs"
|
||||
msgstr "seconden"
|
||||
|
||||
#: src/cryptsetup.c:720
|
||||
msgid "How often the input of the passphrase can be retried"
|
||||
msgstr "Hoe vaak de invoering van het wachtwoord opnieuw geprobeerd kan worden"
|
||||
|
||||
#: src/cryptsetup.c:721
|
||||
msgid "Align payload at <n> sector boundaries - for luksFormat"
|
||||
msgstr "Lijn payload uit op <n> sectorgrenzen - voor luksFormat"
|
||||
|
||||
#: src/cryptsetup.c:722
|
||||
msgid "(Obsoleted, see man page.)"
|
||||
msgstr "(Verouderd, zie man-pagina.)"
|
||||
|
||||
#: src/cryptsetup.c:723
|
||||
msgid "File with LUKS header and keyslots backup."
|
||||
msgstr "Bestand met reservekopie van LUKS-kopbestand en sleutelplaatsen."
|
||||
|
||||
#: src/cryptsetup.c:741
|
||||
msgid "[OPTION...] <action> <action-specific>]"
|
||||
msgstr "[OPTIE…] <actie> <actie-specifiek>]"
|
||||
|
||||
#: src/cryptsetup.c:777
|
||||
msgid "Key size must be a multiple of 8 bits"
|
||||
msgstr "Sleutelgrootte moet een meervoud zijn van 8 bits"
|
||||
|
||||
#: src/cryptsetup.c:781
|
||||
msgid "Argument <action> missing."
|
||||
msgstr "Argument <actie> ontbreekt."
|
||||
|
||||
#: src/cryptsetup.c:787
|
||||
msgid "Unknown action."
|
||||
msgstr "Onbekende actie."
|
||||
|
||||
#: src/cryptsetup.c:802
|
||||
#, c-format
|
||||
msgid "%s: requires %s as arguments"
|
||||
msgstr "%s: vereist %s als argumenten"
|
||||
|
||||
#~ msgid "%s is not LUKS device.\n"
|
||||
#~ msgstr "%s is geen LUKS-apparaat.\n"
|
||||
|
||||
#~ msgid "%s is not LUKS device."
|
||||
#~ msgstr "%s is geen LUKS-apparaat."
|
||||
818
po/vi.po
Normal file
818
po/vi.po
Normal file
@@ -0,0 +1,818 @@
|
||||
# Vietnamese translation for CryptSetup.
|
||||
# Copyright © 2010 Free Software Foundation, Inc.
|
||||
# This file is distributed under the same license as the cryptsetup package.
|
||||
# Clytie Siddall <clytie@riverland.net.au>, 2010.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: cryptsetup 1.1.1-rc1\n"
|
||||
"Report-Msgid-Bugs-To: dm-crypt@saout.de\n"
|
||||
"POT-Creation-Date: 2010-05-01 16:21+0200\n"
|
||||
"PO-Revision-Date: 2010-05-03 18:14+0930\n"
|
||||
"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
|
||||
"Language-Team: Vietnamese <vi-VN@googlegroups.com>\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-Generator: LocFactoryEditor 1.8\n"
|
||||
|
||||
#: lib/libdevmapper.c:105
|
||||
msgid "Cannot find compatible device-mapper kernel modules.\n"
|
||||
msgstr "Không tìm thấy mô-đun hạt nhân ánh xạ thiết bị tương thích.\n"
|
||||
|
||||
#: lib/libdevmapper.c:111
|
||||
msgid "Cannot initialize device-mapper. Is dm_mod kernel module loaded?\n"
|
||||
msgstr "Không thể sơ khởi tiến trình ánh xạ thiết bị. Mô-đun hạt nhân « dm_mod » được nạp chưa?\n"
|
||||
|
||||
#: lib/libdevmapper.c:408
|
||||
#, c-format
|
||||
msgid "DM-UUID for device %s was truncated.\n"
|
||||
msgstr "Mã số DM-UUID cho thiết bị %s bị cắt bớt.\n"
|
||||
|
||||
#: lib/setup.c:103
|
||||
#, c-format
|
||||
msgid "Cannot not read %d bytes from key file %s.\n"
|
||||
msgstr "Không thể đọc %d byte từ tập tin khoá %s.\n"
|
||||
|
||||
#: lib/setup.c:115
|
||||
#, c-format
|
||||
msgid "Key processing error (using hash algorithm %s).\n"
|
||||
msgstr "Lỗi xử lý khoá (dùng thuật toán chuỗi duy nhất %s).\n"
|
||||
|
||||
#: lib/setup.c:170
|
||||
msgid "All key slots full.\n"
|
||||
msgstr "Mọi khe khoá đều bị đầy.\n"
|
||||
|
||||
#: lib/setup.c:177 lib/setup.c:305 lib/setup.c:779
|
||||
#, c-format
|
||||
msgid "Key slot %d is invalid, please select between 0 and %d.\n"
|
||||
msgstr "Khe khoá %d không đúng, hãy chọn một giá trị trong phạm vi 0 đến %d.\n"
|
||||
|
||||
#: lib/setup.c:183
|
||||
#, c-format
|
||||
msgid "Key slot %d is full, please select another one.\n"
|
||||
msgstr "Khe khoá %d bị đầy, hãy chọn một khe khác.\n"
|
||||
|
||||
#: lib/setup.c:202
|
||||
msgid "Enter any remaining LUKS passphrase: "
|
||||
msgstr "Gõ cụm từ mật khẩu LUKS nào còn lại:"
|
||||
|
||||
#: lib/setup.c:223
|
||||
#, c-format
|
||||
msgid "Key slot %d verified.\n"
|
||||
msgstr "Khe khoá %d được thẩm định.\n"
|
||||
|
||||
#: lib/setup.c:258
|
||||
#, c-format
|
||||
msgid "Cannot get info about device %s.\n"
|
||||
msgstr "Không thể lấy thông tin về thiết bị %s.\n"
|
||||
|
||||
#: lib/setup.c:265
|
||||
#, c-format
|
||||
msgid "Device %s has zero size.\n"
|
||||
msgstr "Thiết bị %s có kích cỡ số không.\n"
|
||||
|
||||
#: lib/setup.c:269
|
||||
#, c-format
|
||||
msgid "Device %s is too small.\n"
|
||||
msgstr "Thiết bị %s có kích cỡ quá nhỏ.\n"
|
||||
|
||||
#: lib/setup.c:294
|
||||
msgid "Enter LUKS passphrase to be deleted: "
|
||||
msgstr "Gõ cụm từ mật khẩu LUKS cần xoá:"
|
||||
|
||||
#: lib/setup.c:300
|
||||
#, c-format
|
||||
msgid "key slot %d selected for deletion.\n"
|
||||
msgstr "khe khoá %d được chọn để xoá.\n"
|
||||
|
||||
#: lib/setup.c:311
|
||||
#, c-format
|
||||
msgid "Key %d not active. Can't wipe.\n"
|
||||
msgstr "Khoá %d không hoạt động thì không xoá được.\n"
|
||||
|
||||
#: lib/setup.c:317
|
||||
msgid "This is the last keyslot. Device will become unusable after purging this key."
|
||||
msgstr "Đây là khe khoá cuối cùng. Sau khi tẩy khoá này thì thiết bị không dùng được."
|
||||
|
||||
#: lib/setup.c:365 lib/setup.c:1687 lib/setup.c:1740 lib/setup.c:1797
|
||||
#, c-format
|
||||
msgid "Device %s already exists.\n"
|
||||
msgstr "Thiết bị %s đã có.\n"
|
||||
|
||||
#: lib/setup.c:370
|
||||
#, c-format
|
||||
msgid "Invalid key size %d.\n"
|
||||
msgstr "Kích cỡ khoá không đúng %d.\n"
|
||||
|
||||
#: lib/setup.c:472 lib/setup.c:1692
|
||||
#, c-format
|
||||
msgid "Enter passphrase for %s: "
|
||||
msgstr "Gõ cụm từ mật khẩu cho %s: "
|
||||
|
||||
#: lib/setup.c:601 lib/setup.c:629 lib/setup.c:1401 lib/setup.c:1748
|
||||
msgid "Enter passphrase: "
|
||||
msgstr "Gõ cụm từ mật khẩu: "
|
||||
|
||||
#: lib/setup.c:662 lib/setup.c:1046 lib/setup.c:1839
|
||||
#, c-format
|
||||
msgid "Device %s is not active.\n"
|
||||
msgstr "Thiết bị %s không hoạt động.\n"
|
||||
|
||||
#: lib/setup.c:771
|
||||
msgid "No known cipher specification pattern detected.\n"
|
||||
msgstr "Không phát hiện mẫu chỉ thị mật mã đã biết.\n"
|
||||
|
||||
#: lib/setup.c:785
|
||||
msgid "Enter LUKS passphrase: "
|
||||
msgstr "Gõ cụm từ mật khẩu LUKS: "
|
||||
|
||||
#: lib/setup.c:926 lib/setup.c:1153 lib/setup.c:1207 lib/setup.c:1232
|
||||
#: lib/setup.c:1251
|
||||
msgid "Cannot initialize crypto backend.\n"
|
||||
msgstr "Không thể sơ khởi hậu phương mật mã.\n"
|
||||
|
||||
#: lib/setup.c:1066
|
||||
msgid "Invalid plain crypt parameters.\n"
|
||||
msgstr "Sai lập tham số mật mã bình thường.\n"
|
||||
|
||||
#: lib/setup.c:1071
|
||||
msgid "Invalid key size.\n"
|
||||
msgstr "Kích cỡ khoá không đúng.\n"
|
||||
|
||||
#: lib/setup.c:1104
|
||||
msgid "Can't format LUKS without device.\n"
|
||||
msgstr "Không thể định dạng LUKS mà không có thiết bị.\n"
|
||||
|
||||
#: lib/setup.c:1126
|
||||
#, c-format
|
||||
msgid "Can't wipe header on device %s.\n"
|
||||
msgstr "Không thể xoá phần đầu trên thiết bị %s.\n"
|
||||
|
||||
#: lib/setup.c:1174
|
||||
#, c-format
|
||||
msgid "Unknown crypt device type %s requested.\n"
|
||||
msgstr "Không rõ kiểu thiết bị mật mã %s được yêu cầu.\n"
|
||||
|
||||
#: lib/setup.c:1293
|
||||
#, c-format
|
||||
msgid "Volume %s is not active.\n"
|
||||
msgstr "Khối tin %s không hoạt động.\n"
|
||||
|
||||
#: lib/setup.c:1306
|
||||
#, c-format
|
||||
msgid "Volume %s is already suspended.\n"
|
||||
msgstr "Khối %s đã bị ngưng.\n"
|
||||
|
||||
#: lib/setup.c:1334 lib/setup.c:1383 lib/setup.c:1442 lib/setup.c:1520
|
||||
#: lib/setup.c:1592 lib/setup.c:1637 lib/setup.c:1731 lib/setup.c:1788
|
||||
#: lib/setup.c:1909 lib/setup.c:1992 lib/setup.c:2092
|
||||
msgid "This operation is supported only for LUKS device.\n"
|
||||
msgstr "Thao tác này được hỗ trợ chỉ cho thiết bị LUKS.\n"
|
||||
|
||||
#: lib/setup.c:1345 lib/setup.c:1394
|
||||
#, c-format
|
||||
msgid "Volume %s is not suspended.\n"
|
||||
msgstr "Khối %s không bị ngưng.\n"
|
||||
|
||||
#: lib/setup.c:1456 lib/setup.c:1534
|
||||
msgid "Cannot add key slot, all slots disabled and no volume key provided.\n"
|
||||
msgstr "Không thể thêm khe khoá vì mọi khe đều bị tắt và không cung cấp khoá khối tin.\n"
|
||||
|
||||
#: lib/setup.c:1465 lib/setup.c:1540 lib/setup.c:1543
|
||||
msgid "Enter any passphrase: "
|
||||
msgstr "Gõ bất cứ cụm từ mật khẩu nào: "
|
||||
|
||||
#: lib/setup.c:1484 lib/setup.c:1558 lib/setup.c:1562 lib/setup.c:1615
|
||||
msgid "Enter new passphrase for key slot: "
|
||||
msgstr "Gõ cụm từ mật khẩu mới cho khe khoá: "
|
||||
|
||||
#: lib/setup.c:1606 lib/setup.c:1808 lib/setup.c:1920
|
||||
msgid "Volume key does not match the volume.\n"
|
||||
msgstr "Khoá khối tin không tương ứng với khối tin đó.\n"
|
||||
|
||||
#: lib/setup.c:1643
|
||||
#, c-format
|
||||
msgid "Key slot %d is invalid.\n"
|
||||
msgstr "Khe khoá %d không đúng.\n"
|
||||
|
||||
#: lib/setup.c:1648
|
||||
#, c-format
|
||||
msgid "Key slot %d is not used.\n"
|
||||
msgstr "Khe khoá %d không được dùng.\n"
|
||||
|
||||
#: lib/setup.c:1835
|
||||
#, c-format
|
||||
msgid "Device %s is busy.\n"
|
||||
msgstr "Thiết bị %s đang bận.\n"
|
||||
|
||||
#: lib/setup.c:1843
|
||||
#, c-format
|
||||
msgid "Invalid device %s.\n"
|
||||
msgstr "Thiết bị không đúng %s.\n"
|
||||
|
||||
#: lib/setup.c:1867
|
||||
msgid "Volume key buffer too small.\n"
|
||||
msgstr "Vùng đệm khoá khối tin quá nhỏ.\n"
|
||||
|
||||
#: lib/setup.c:1875
|
||||
msgid "Cannot retrieve volume key for plain device.\n"
|
||||
msgstr "Không thể lấy khoá khối tin cho thiết bị bình thường.\n"
|
||||
|
||||
#: lib/setup.c:1897
|
||||
#, c-format
|
||||
msgid "This operation is not supported for %s crypt device.\n"
|
||||
msgstr "Thao tác này không được hỗ trợ cho thiết bị mật mã %s.\n"
|
||||
|
||||
#: lib/utils.c:416
|
||||
#, c-format
|
||||
msgid "Failed to open key file %s.\n"
|
||||
msgstr "Lỗi mở tập tin khoá %s.\n"
|
||||
|
||||
#: lib/utils.c:436
|
||||
msgid "Error reading passphrase from terminal.\n"
|
||||
msgstr "Gặp lỗi khi đọc cụm từ mật khẩu từ thiết bị cuối.\n"
|
||||
|
||||
#: lib/utils.c:441
|
||||
msgid "Verify passphrase: "
|
||||
msgstr "Thẩm tra cụm từ mật khẩu: "
|
||||
|
||||
#: lib/utils.c:443
|
||||
msgid "Passphrases do not match.\n"
|
||||
msgstr "Hai cụm từ mật khẩu không trùng nhau.\n"
|
||||
|
||||
#: lib/utils.c:458
|
||||
msgid "Can't do passphrase verification on non-tty inputs.\n"
|
||||
msgstr "Không thể thẩm tra cụm từ mật khẩu trên đầu vào khác TTY.\n"
|
||||
|
||||
#: lib/utils.c:471
|
||||
#, c-format
|
||||
msgid "Failed to stat key file %s.\n"
|
||||
msgstr "Lỗi lấy trạng thái về tập tin khoá %s.\n"
|
||||
|
||||
#: lib/utils.c:475
|
||||
#, c-format
|
||||
msgid "Warning: exhausting read requested, but key file %s is not a regular file, function might never return.\n"
|
||||
msgstr "Cảnh báo : yêu cầu một hàm đọc vét kiệt mà tập tin khoá %s không phải là một tập tin thông thường thì có thể là hàm chưa bao giờ trả lại.\n"
|
||||
|
||||
#: lib/utils.c:487
|
||||
msgid "Out of memory while reading passphrase.\n"
|
||||
msgstr "Tràn bộ nhớ trong khi đọc cụm từ mật khẩu.\n"
|
||||
|
||||
#: lib/utils.c:494
|
||||
msgid "Error reading passphrase.\n"
|
||||
msgstr "Lỗi đọc cụm từ mật khẩu.\n"
|
||||
|
||||
#: lib/utils.c:531
|
||||
#, c-format
|
||||
msgid "Device %s doesn't exist or access denied.\n"
|
||||
msgstr "Thiết bị %s không tồn tại hoặc không đủ quyền truy cập.\n"
|
||||
|
||||
#: lib/utils.c:538
|
||||
#, c-format
|
||||
msgid "Cannot open device %s for %s%s access.\n"
|
||||
msgstr "Không thể mở thiết bị %s cho truy cập %s%s.\n"
|
||||
|
||||
#: lib/utils.c:539
|
||||
msgid "exclusive "
|
||||
msgstr "dành riêng"
|
||||
|
||||
#: lib/utils.c:540
|
||||
msgid "writable"
|
||||
msgstr "ghi được"
|
||||
|
||||
#: lib/utils.c:540
|
||||
msgid "read-only"
|
||||
msgstr "chỉ đọc"
|
||||
|
||||
#: lib/utils.c:547
|
||||
#, c-format
|
||||
msgid "Cannot read device %s.\n"
|
||||
msgstr "Không thể đọc thiết bị %s.\n"
|
||||
|
||||
#: lib/utils.c:577
|
||||
#, c-format
|
||||
msgid "Cannot open device: %s\n"
|
||||
msgstr "Không thể mở thiết bị: %s\n"
|
||||
|
||||
#: lib/utils.c:587
|
||||
#, c-format
|
||||
msgid "BLKROGET failed on device %s.\n"
|
||||
msgstr "BLKROGET bị lỗi trên thiết bị %s.\n"
|
||||
|
||||
#: lib/utils.c:612
|
||||
#, c-format
|
||||
msgid "BLKGETSIZE failed on device %s.\n"
|
||||
msgstr "BLKGETSIZE bị lỗi trên thiết bị %s.\n"
|
||||
|
||||
#: lib/utils.c:660
|
||||
msgid "WARNING!!! Possibly insecure memory. Are you root?\n"
|
||||
msgstr "CẢNH BÁO ! Có thể là vùng nhớ không an toàn. Bạn đang chạy dưới người chủ (root) không?\n"
|
||||
|
||||
#: lib/utils.c:666
|
||||
msgid "Cannot get process priority.\n"
|
||||
msgstr "Không thể lấy mức ưu tiên của tiến trình.\n"
|
||||
|
||||
#: lib/utils.c:669 lib/utils.c:682
|
||||
#, c-format
|
||||
msgid "setpriority %u failed: %s"
|
||||
msgstr "setpriority %u bị lỗi: %s"
|
||||
|
||||
#: lib/utils.c:680
|
||||
msgid "Cannot unlock memory."
|
||||
msgstr "Không thể mở khoá vùng nhớ."
|
||||
|
||||
#: luks/keyencryption.c:68
|
||||
#, c-format
|
||||
msgid "Unable to obtain sector size for %s"
|
||||
msgstr "Không thể lấy kích cỡ rãnh ghi cho %s"
|
||||
|
||||
#: luks/keyencryption.c:137
|
||||
msgid "Failed to obtain device mapper directory."
|
||||
msgstr "Lỗi lấy thư mục trình ánh xạ thiết bị."
|
||||
|
||||
#: luks/keyencryption.c:153
|
||||
#, 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).\n"
|
||||
"%s"
|
||||
msgstr ""
|
||||
"Lỗi thiết lập chức năng ánh xạ khoá dm-crypt cho thiết bị %s.\n"
|
||||
"Kiểm tra lại hạt nhân hỗ trợ mật mã %s\n"
|
||||
"(xem sổ theo dõi hệ thống để tìm thêm thông tin.)\n"
|
||||
"%s"
|
||||
|
||||
#: luks/keyencryption.c:163
|
||||
msgid "Failed to open temporary keystore device.\n"
|
||||
msgstr "Lỗi mở thiết bị lưu trữ khoá tạm thời.\n"
|
||||
|
||||
#: luks/keyencryption.c:170
|
||||
msgid "Failed to access temporary keystore device.\n"
|
||||
msgstr "Lỗi truy cập đến thiết bị lưu trữ khoá tạm thời.\n"
|
||||
|
||||
#: luks/keymanage.c:94
|
||||
#, c-format
|
||||
msgid "Requested file %s already exist.\n"
|
||||
msgstr "Yêu cầu tập tin %s đã có.\n"
|
||||
|
||||
#: luks/keymanage.c:114 luks/keymanage.c:257
|
||||
#, c-format
|
||||
msgid "Device %s is not a valid LUKS device.\n"
|
||||
msgstr "Thiết bị %s không phải là một thiết bị kiểu LUKS đúng.\n"
|
||||
|
||||
#: luks/keymanage.c:134
|
||||
#, c-format
|
||||
msgid "Cannot write header backup file %s.\n"
|
||||
msgstr "Không thể ghi nhớ tập tin sao lưu phần đầu %s.\n"
|
||||
|
||||
#: luks/keymanage.c:161
|
||||
#, c-format
|
||||
msgid "Backup file %s doesn't exist.\n"
|
||||
msgstr "Tập tin sao lưu %s không tồn tại.\n"
|
||||
|
||||
#: luks/keymanage.c:169
|
||||
msgid "Backup file do not contain valid LUKS header.\n"
|
||||
msgstr "Tập tin sao lưu không chứa phần đầu LUKS đúng.\n"
|
||||
|
||||
#: luks/keymanage.c:182
|
||||
#, c-format
|
||||
msgid "Cannot open header backup file %s.\n"
|
||||
msgstr "Không mở được tập tin sao lưu phần đầu %s.\n"
|
||||
|
||||
#: luks/keymanage.c:188
|
||||
#, c-format
|
||||
msgid "Cannot read header backup file %s.\n"
|
||||
msgstr "Không đọc được tập tin sao lưu phần đầu %s.\n"
|
||||
|
||||
#: luks/keymanage.c:199
|
||||
msgid "Data offset or key size differs on device and backup, restore failed.\n"
|
||||
msgstr "Khoảng bù dữ liệu hoặc kích cỡ khoá vẫn khác nhau trên thiết bị và bản sao lưu thì chức năng phục hồi bị lỗi.\n"
|
||||
|
||||
#: luks/keymanage.c:207
|
||||
#, c-format
|
||||
msgid "Device %s %s%s"
|
||||
msgstr "Thiết bị %s %s%s"
|
||||
|
||||
#: luks/keymanage.c:208
|
||||
msgid "does not contain LUKS header. Replacing header can destroy data on that device."
|
||||
msgstr "không chứa phần đầu LUKS. Thay thế phần đầu thì cũng có thể hủy dữ liệu trên thiết bị đó."
|
||||
|
||||
#: luks/keymanage.c:209
|
||||
msgid "already contains LUKS header. Replacing header will destroy existing keyslots."
|
||||
msgstr "đã chứa phần đầu LUKS. Thay thế phần đầu thì cũng hủy các khe khoá đã có."
|
||||
|
||||
#: luks/keymanage.c:210
|
||||
msgid ""
|
||||
"\n"
|
||||
"WARNING: real device header has different UUID than backup!"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"CẢNH BÁO: phần đầu thiết bị thật có mã số UUID khác với bản sao lưu !"
|
||||
|
||||
#: luks/keymanage.c:225 luks/keymanage.c:338 luks/keymanage.c:373
|
||||
#, c-format
|
||||
msgid "Cannot open device %s.\n"
|
||||
msgstr "Không thể mở thiết bị %s.\n"
|
||||
|
||||
#: luks/keymanage.c:259
|
||||
#, c-format
|
||||
msgid "Device %s is not a valid LUKS device."
|
||||
msgstr "Thiết bị %s không phải là một thiết bị kiểu LUKS đúng."
|
||||
|
||||
#: luks/keymanage.c:262
|
||||
#, c-format
|
||||
msgid "Unsupported LUKS version %d.\n"
|
||||
msgstr "Phiên bản LUKS không được hỗ trợ %d.\n"
|
||||
|
||||
#: luks/keymanage.c:265
|
||||
#, c-format
|
||||
msgid "Requested LUKS hash %s is not supported.\n"
|
||||
msgstr "Không hỗ trợ chuỗi duy nhất LUKS %s được yêu cầu.\n"
|
||||
|
||||
#: luks/keymanage.c:310
|
||||
#, c-format
|
||||
msgid "Cannot open file %s.\n"
|
||||
msgstr "Không thể mở tập tin %s.\n"
|
||||
|
||||
#: luks/keymanage.c:350
|
||||
#, c-format
|
||||
msgid "LUKS header detected but device %s is too small.\n"
|
||||
msgstr "Phát hiện được phần đầu LUKS mà thiết bị %s quá nhỏ.\n"
|
||||
|
||||
#: luks/keymanage.c:394
|
||||
#, c-format
|
||||
msgid "Error during update of LUKS header on device %s.\n"
|
||||
msgstr "Gặp lỗi trong khi cập nhật phần đầu LUKS trên thiết bị %s.\n"
|
||||
|
||||
#: luks/keymanage.c:401
|
||||
#, c-format
|
||||
msgid "Error re-reading LUKS header after update on device %s.\n"
|
||||
msgstr "Gặp lỗi trong khi đọc lại phần đầu LUKS sau khi cập nhật trên thiết bị %s.\n"
|
||||
|
||||
#: luks/keymanage.c:413
|
||||
#, c-format
|
||||
msgid "Not compatible PBKDF2 options (using hash algorithm %s).\n"
|
||||
msgstr "Gặp các tuỳ chọn PBKDF2 không tương thích (dùng thuật toán chuỗi duy nhất %s).\n"
|
||||
|
||||
#: luks/keymanage.c:461
|
||||
msgid "Cannot create LUKS header: reading random salt failed.\n"
|
||||
msgstr "Không thể tạo phần đầu LUKS: lỗi đọc salt ngẫu nhiên.\n"
|
||||
|
||||
#: luks/keymanage.c:478
|
||||
#, c-format
|
||||
msgid "Cannot create LUKS header: header digest failed (using hash %s).\n"
|
||||
msgstr "Không thể tạo phần đầu LUKS: lỗi tạo bản tóm tắt (dùng chuỗi duy nhất %s).\n"
|
||||
|
||||
#: luks/keymanage.c:496
|
||||
msgid "Wrong UUID format provided, generating new one.\n"
|
||||
msgstr "Đưa ra định dạng mã số UUID không đúng nên tạo định dạng mới.\n"
|
||||
|
||||
#: luks/keymanage.c:523
|
||||
#, c-format
|
||||
msgid "Key slot %d active, purge first.\n"
|
||||
msgstr "Khe khoá %d vẫn hoạt động: cần tẩy trước.\n"
|
||||
|
||||
#: luks/keymanage.c:528
|
||||
#, c-format
|
||||
msgid "Key slot %d material includes too few stripes. Header manipulation?\n"
|
||||
msgstr "Nguyên liệu khe khoá %d gồm có quá ít sọc. Có nên thao tác phần đầu không?\n"
|
||||
|
||||
#: luks/keymanage.c:587
|
||||
msgid "Failed to write to key storage.\n"
|
||||
msgstr "Lỗi ghi khoá vào kho lưu khoá.\n"
|
||||
|
||||
#: luks/keymanage.c:664
|
||||
msgid "Failed to read from key storage.\n"
|
||||
msgstr "Lỗi đọc từ kho lưu khoá.\n"
|
||||
|
||||
#: luks/keymanage.c:673
|
||||
#, c-format
|
||||
msgid "Key slot %d unlocked.\n"
|
||||
msgstr "Khe khoá %d được mở khoá.\n"
|
||||
|
||||
#: luks/keymanage.c:706
|
||||
msgid "No key available with this passphrase.\n"
|
||||
msgstr "Không có khoá sẵn sàng dùng với cụm từ mật khẩu này.\n"
|
||||
|
||||
#: luks/keymanage.c:783
|
||||
#, c-format
|
||||
msgid "Key slot %d is invalid, please select keyslot between 0 and %d.\n"
|
||||
msgstr "Khe khoá %d không đúng: hãy chọn khe khoá trong phạm vi 0 đến %d.\n"
|
||||
|
||||
#: luks/keymanage.c:795
|
||||
#, c-format
|
||||
msgid "Cannot wipe device %s.\n"
|
||||
msgstr "Không thể xoá thiết bị %s.\n"
|
||||
|
||||
#: src/cryptsetup.c:71 src/cryptsetup.c:89
|
||||
msgid "<name> <device>"
|
||||
msgstr "<tên> <thiết_bị>"
|
||||
|
||||
#: src/cryptsetup.c:71
|
||||
msgid "create device"
|
||||
msgstr "tạo thiết bị"
|
||||
|
||||
#: src/cryptsetup.c:72 src/cryptsetup.c:73 src/cryptsetup.c:74
|
||||
#: src/cryptsetup.c:82
|
||||
msgid "<name>"
|
||||
msgstr "<tên>"
|
||||
|
||||
#: src/cryptsetup.c:72
|
||||
msgid "remove device"
|
||||
msgstr "gỡ bỏ thiết bị"
|
||||
|
||||
#: src/cryptsetup.c:73
|
||||
msgid "resize active device"
|
||||
msgstr "thay đổi kích cỡ của thiết bị hoạt động"
|
||||
|
||||
#: src/cryptsetup.c:74
|
||||
msgid "show device status"
|
||||
msgstr "hiển thị trạng thái về thiết bị"
|
||||
|
||||
#: src/cryptsetup.c:75 src/cryptsetup.c:77
|
||||
msgid "<device> [<new key file>]"
|
||||
msgstr "<thiết_bị> [<tập_tin_khoá_mới>]"
|
||||
|
||||
#: src/cryptsetup.c:75
|
||||
msgid "formats a LUKS device"
|
||||
msgstr "định dạng một thiết bị kiểu LUKS"
|
||||
|
||||
#: src/cryptsetup.c:76
|
||||
msgid "<device> <name> "
|
||||
msgstr "<thiết_bị> <tên> "
|
||||
|
||||
#: src/cryptsetup.c:76
|
||||
msgid "open LUKS device as mapping <name>"
|
||||
msgstr "mở thiết bị LUKS như là bản ánh xạ <tên>"
|
||||
|
||||
#: src/cryptsetup.c:77
|
||||
msgid "add key to LUKS device"
|
||||
msgstr "thêm khoá vào thiết bị LUKS"
|
||||
|
||||
#: src/cryptsetup.c:78
|
||||
msgid "<device> [<key file>]"
|
||||
msgstr "<thiết_bị> [<tập_tin_khoá>]"
|
||||
|
||||
#: src/cryptsetup.c:78
|
||||
msgid "removes supplied key or key file from LUKS device"
|
||||
msgstr "gỡ bỏ khỏi thiết bị LUKS khoá hoặc tập tin khoá đưa ra"
|
||||
|
||||
#: src/cryptsetup.c:79 src/cryptsetup.c:88
|
||||
msgid "<device> <key slot>"
|
||||
msgstr "<thiết_bị> <khe_khoá>"
|
||||
|
||||
#: src/cryptsetup.c:79
|
||||
msgid "wipes key with number <key slot> from LUKS device"
|
||||
msgstr "xoá khỏi thiết bị LUKS khoá có số <khe_khoá>"
|
||||
|
||||
#: src/cryptsetup.c:80 src/cryptsetup.c:81 src/cryptsetup.c:83
|
||||
#: src/cryptsetup.c:84 src/cryptsetup.c:85 src/cryptsetup.c:86
|
||||
#: src/cryptsetup.c:87
|
||||
msgid "<device>"
|
||||
msgstr "<thiết_bị>"
|
||||
|
||||
#: src/cryptsetup.c:80
|
||||
msgid "print UUID of LUKS device"
|
||||
msgstr "in ra mã số UUID của thiết bị LUKS"
|
||||
|
||||
#: src/cryptsetup.c:81
|
||||
msgid "tests <device> for LUKS partition header"
|
||||
msgstr "thử <thiết_bị> có phần đầu phân vùng LUKS không"
|
||||
|
||||
#: src/cryptsetup.c:82
|
||||
msgid "remove LUKS mapping"
|
||||
msgstr "gỡ bỏ sự ánh xạ LUKS"
|
||||
|
||||
#: src/cryptsetup.c:83
|
||||
msgid "dump LUKS partition information"
|
||||
msgstr "đổ thông tin về phân vùng LUKS"
|
||||
|
||||
#: src/cryptsetup.c:84
|
||||
msgid "Suspend LUKS device and wipe key (all IOs are frozen)."
|
||||
msgstr "Ngưng thiết bị LUKS và xoá khoá (thì mọi việc V/R đều đông cứng)."
|
||||
|
||||
#: src/cryptsetup.c:85
|
||||
msgid "Resume suspended LUKS device."
|
||||
msgstr "Tiếp tục lại sử dụng thiết bị LUKS bị ngưng."
|
||||
|
||||
#: src/cryptsetup.c:86
|
||||
msgid "Backup LUKS device header and keyslots"
|
||||
msgstr "Sao lưu phần đầu và các khe khoá của thiết bị LUKS"
|
||||
|
||||
#: src/cryptsetup.c:87
|
||||
msgid "Restore LUKS device header and keyslots"
|
||||
msgstr "Phục hồi phần đầu và các khe khoá của thiết bị LUKS"
|
||||
|
||||
#: src/cryptsetup.c:88
|
||||
msgid "identical to luksKillSlot - DEPRECATED - see man page"
|
||||
msgstr "trùng với luksKillSlot - BỊ PHẢN ĐỐI - xem trang hướng dẫn"
|
||||
|
||||
#: src/cryptsetup.c:89
|
||||
msgid "modify active device - DEPRECATED - see man page"
|
||||
msgstr "sửa đổi thiết bị hoạt động - BỊ PHẢN ĐỐI - xem trang hướng dẫn"
|
||||
|
||||
#: src/cryptsetup.c:180
|
||||
msgid "Command successful.\n"
|
||||
msgstr "Câu lệnh đã chạy thành công.\n"
|
||||
|
||||
#: src/cryptsetup.c:194
|
||||
#, c-format
|
||||
msgid "Command failed with code %i"
|
||||
msgstr "Câu lệnh đã thất bại với mã %i"
|
||||
|
||||
#: src/cryptsetup.c:222
|
||||
msgid ""
|
||||
"The reload action is deprecated. Please use \"dmsetup reload\" in case you really need this functionality.\n"
|
||||
"WARNING: do not use reload to touch LUKS devices. If that is the case, hit Ctrl-C now.\n"
|
||||
msgstr ""
|
||||
"Hành động nạp lại bị phản đối. Hãy sử dụng « dmsetup reload » trong trường hợp bạn thực sự yêu cầu chức năng này.\n"
|
||||
"CẢNH BÁO : đừng sử dụng chức năng nạp lại để thao tác thiết bị kiểu LUKS. Trong trường hợp đó, bấm tổ hợp phím Ctrl-C ngay bây giờ.\n"
|
||||
|
||||
#: src/cryptsetup.c:390
|
||||
#, c-format
|
||||
msgid "This will overwrite data on %s irrevocably."
|
||||
msgstr "Hành động này sẽ ghi đè lên dữ liệu trên thiết bị %s một cách không phục hồi được."
|
||||
|
||||
#: src/cryptsetup.c:391
|
||||
msgid "memory allocation error in action_luksFormat"
|
||||
msgstr "gặp lỗi phân cấp vùng nhớ trong « action_luksFormat »"
|
||||
|
||||
#: src/cryptsetup.c:421
|
||||
msgid "Obsolete option --non-exclusive is ignored.\n"
|
||||
msgstr "Tuỳ chọn cũ « --non-exclusive » bị bỏ qua.\n"
|
||||
|
||||
#: src/cryptsetup.c:581 src/cryptsetup.c:603
|
||||
msgid "Option --header-backup-file is required.\n"
|
||||
msgstr "Tuỳ chọn « --header-backup-file » cũng cần thiết.\n"
|
||||
|
||||
#: src/cryptsetup.c:637
|
||||
msgid ""
|
||||
"\n"
|
||||
"<action> is one of:\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"<hành_vi> là một của những điều dưới đây:\n"
|
||||
|
||||
#: src/cryptsetup.c:643
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
"<name> is the device to create under %s\n"
|
||||
"<device> is the encrypted device\n"
|
||||
"<key slot> is the LUKS key slot number to modify\n"
|
||||
"<key file> optional key file for the new key for luksAddKey action\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"<tên> là thiết bị cần tạo dưới %s\n"
|
||||
"<thiết_bị> là thiết bị đã mật mã\n"
|
||||
"<khe_khoá> là số thứ tự khe khoá LUKS cần sửa đổi\n"
|
||||
"<tập_tin_khoá> là tập tin khoá tuỳ chọn cho khoá mới trong hành động luksAddKey\n"
|
||||
|
||||
#: src/cryptsetup.c:650
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
"Default compiled-in device cipher parameters:\n"
|
||||
"\tplain: %s, Key: %d bits, Password hashing: %s\n"
|
||||
"\tLUKS1: %s, Key: %d bits, LUKS header hashing: %s\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Các tham số mặc định về mật mã thiết bị biên dịch vào:\n"
|
||||
"\tbình thường: %s, Khoá: %d bit, Tạo chuỗi duy nhất mật khẩu: %s\n"
|
||||
"\tLUKS1: %s, Khoá: %d bit, Tạo chuỗi duy nhất phần đầu LUKS: %s\n"
|
||||
|
||||
#: src/cryptsetup.c:697
|
||||
msgid "Show this help message"
|
||||
msgstr "Hiển thị trợ giúp này"
|
||||
|
||||
#: src/cryptsetup.c:698
|
||||
msgid "Display brief usage"
|
||||
msgstr " Hiển thị thông điệp ngắn về cách sử dụng"
|
||||
|
||||
#: src/cryptsetup.c:702
|
||||
msgid "Help options:"
|
||||
msgstr "Tùy chọn trợ giúp:"
|
||||
|
||||
#: src/cryptsetup.c:703
|
||||
msgid "Shows more detailed error messages"
|
||||
msgstr "Hiển thị các thông điệp lỗi chi tiết hơn"
|
||||
|
||||
#: src/cryptsetup.c:704
|
||||
msgid "Show debug messages"
|
||||
msgstr "Hiển thị thông điệp gỡ lỗi"
|
||||
|
||||
#: src/cryptsetup.c:705
|
||||
msgid "The cipher used to encrypt the disk (see /proc/crypto)"
|
||||
msgstr "Mật mã dùng để bảo vệ đĩa (xem « /proc/crypto »)"
|
||||
|
||||
#: src/cryptsetup.c:706
|
||||
msgid "The hash used to create the encryption key from the passphrase"
|
||||
msgstr "Chuỗi duy nhất dùng để tạo khoá mật mã từ cụm từ mật khẩu"
|
||||
|
||||
#: src/cryptsetup.c:707
|
||||
msgid "Verifies the passphrase by asking for it twice"
|
||||
msgstr "Thẩm tra cụm từ mật khẩu bằng cách yêu cầu nó hai lần"
|
||||
|
||||
#: src/cryptsetup.c:708
|
||||
msgid "Read the key from a file (can be /dev/random)"
|
||||
msgstr "Đọc khoá từ một tập tin nào đó (có thể là « /dev/random »)"
|
||||
|
||||
#: src/cryptsetup.c:709
|
||||
msgid "Read the volume (master) key from file."
|
||||
msgstr "Đọc khoá khối tin (chủ) từ tập tin."
|
||||
|
||||
#: src/cryptsetup.c:710
|
||||
msgid "The size of the encryption key"
|
||||
msgstr "Kích cỡ của khoá mật mã"
|
||||
|
||||
#: src/cryptsetup.c:710
|
||||
msgid "BITS"
|
||||
msgstr "BIT"
|
||||
|
||||
#: src/cryptsetup.c:711
|
||||
msgid "Slot number for new key (default is first free)"
|
||||
msgstr "Số thứ tự khe cho khoá mới (mặc định là khe trống thứ nhất)"
|
||||
|
||||
#: src/cryptsetup.c:712
|
||||
msgid "The size of the device"
|
||||
msgstr "Kích cỡ của thiết bị"
|
||||
|
||||
#: src/cryptsetup.c:712 src/cryptsetup.c:713 src/cryptsetup.c:714
|
||||
#: src/cryptsetup.c:721
|
||||
msgid "SECTORS"
|
||||
msgstr "RÃNH GHI"
|
||||
|
||||
#: src/cryptsetup.c:713
|
||||
msgid "The start offset in the backend device"
|
||||
msgstr "Khoảng bù đầu tiên trong thiết bị hậu phương"
|
||||
|
||||
#: src/cryptsetup.c:714
|
||||
msgid "How many sectors of the encrypted data to skip at the beginning"
|
||||
msgstr "Bao nhiêu rãnh ghi dữ liệu mật mã cần bỏ qua ở đầu"
|
||||
|
||||
#: src/cryptsetup.c:715
|
||||
msgid "Create a readonly mapping"
|
||||
msgstr "Tạo một sự ánh xạ chỉ cho phép đọc"
|
||||
|
||||
#: src/cryptsetup.c:716
|
||||
msgid "PBKDF2 iteration time for LUKS (in ms)"
|
||||
msgstr "Thời gian lặp lại PBKDF2 cho LUKS (theo mili-giây)"
|
||||
|
||||
#: src/cryptsetup.c:716
|
||||
msgid "msecs"
|
||||
msgstr "mili-giây"
|
||||
|
||||
#: src/cryptsetup.c:717
|
||||
msgid "Do not ask for confirmation"
|
||||
msgstr "Đừng yêu cầu xác nhận"
|
||||
|
||||
#: src/cryptsetup.c:718
|
||||
msgid "Print package version"
|
||||
msgstr "In ra phiên bản gói"
|
||||
|
||||
#: src/cryptsetup.c:719
|
||||
msgid "Timeout for interactive passphrase prompt (in seconds)"
|
||||
msgstr "Thời hạn khi nhắc gõ cụm từ mật khẩu (theo giây)"
|
||||
|
||||
#: src/cryptsetup.c:719
|
||||
msgid "secs"
|
||||
msgstr "giây"
|
||||
|
||||
#: src/cryptsetup.c:720
|
||||
msgid "How often the input of the passphrase can be retried"
|
||||
msgstr "Số các lần có thể thử lại gõ cụm từ mật khẩu"
|
||||
|
||||
#: src/cryptsetup.c:721
|
||||
msgid "Align payload at <n> sector boundaries - for luksFormat"
|
||||
msgstr "Sắp hàng trọng tải ở <n> biên giới rãnh ghi — cho định dạng luksFormat"
|
||||
|
||||
#: src/cryptsetup.c:722
|
||||
msgid "(Obsoleted, see man page.)"
|
||||
msgstr "(Bị phản đối, xem trang hướng dẫn.)"
|
||||
|
||||
#: src/cryptsetup.c:723
|
||||
msgid "File with LUKS header and keyslots backup."
|
||||
msgstr "Tập tin chứa bản sao lưu phần đầu và các khe khoá của thiết bị LUKS."
|
||||
|
||||
#: src/cryptsetup.c:741
|
||||
msgid "[OPTION...] <action> <action-specific>]"
|
||||
msgstr "[TÙY_CHỌN...] <hành_vi> <đặc_trưng_cho_hành_vi>]"
|
||||
|
||||
#: src/cryptsetup.c:777
|
||||
msgid "Key size must be a multiple of 8 bits"
|
||||
msgstr "Kích cỡ khoá phải là bội số cho 8 bit"
|
||||
|
||||
#: src/cryptsetup.c:781
|
||||
msgid "Argument <action> missing."
|
||||
msgstr "Đối số <hành_vi> còn thiếu."
|
||||
|
||||
#: src/cryptsetup.c:787
|
||||
msgid "Unknown action."
|
||||
msgstr "Hành động không rõ."
|
||||
|
||||
#: src/cryptsetup.c:802
|
||||
#, c-format
|
||||
msgid "%s: requires %s as arguments"
|
||||
msgstr "%s: cần thiết %s làm đối số"
|
||||
@@ -19,9 +19,9 @@ _STATIC_LDADD = @LIBGCRYPT_LIBS@ -lgpg-error @SELINUX_STATIC_LIBS@
|
||||
endif
|
||||
|
||||
cryptsetup_LDADD = \
|
||||
@POPT_LIBS@ \
|
||||
$(top_builddir)/lib/libcryptsetup.la \
|
||||
$(_STATIC_LDADD)
|
||||
$(_STATIC_LDADD) \
|
||||
@POPT_LIBS@
|
||||
|
||||
|
||||
cryptsetup_LDFLAGS = \
|
||||
|
||||
@@ -90,7 +90,7 @@ static struct action_type {
|
||||
{ NULL, NULL, 0, 0, 0, NULL, NULL }
|
||||
};
|
||||
|
||||
static void clogger(struct crypt_device *cd, int class, const char *file,
|
||||
static void clogger(struct crypt_device *cd, int level, const char *file,
|
||||
int line, const char *format, ...)
|
||||
{
|
||||
va_list argp;
|
||||
@@ -99,8 +99,8 @@ static void clogger(struct crypt_device *cd, int class, const char *file,
|
||||
va_start(argp, format);
|
||||
|
||||
if (vasprintf(&target, format, argp) > 0) {
|
||||
if (class >= 0) {
|
||||
crypt_log(cd, class, target);
|
||||
if (level >= 0) {
|
||||
crypt_log(cd, level, target);
|
||||
#ifdef CRYPT_DEBUG
|
||||
} else if (opt_debug)
|
||||
printf("# %s:%d %s\n", file ?: "?", line, target);
|
||||
@@ -137,8 +137,8 @@ static int yesDialog(char *msg)
|
||||
return r;
|
||||
}
|
||||
|
||||
static void cmdLineLog(int class, char *msg) {
|
||||
switch(class) {
|
||||
static void cmdLineLog(int level, char *msg) {
|
||||
switch(level) {
|
||||
|
||||
case CRYPT_LOG_NORMAL:
|
||||
fputs(msg, stdout);
|
||||
@@ -157,9 +157,9 @@ static struct interface_callbacks cmd_icb = {
|
||||
.log = cmdLineLog,
|
||||
};
|
||||
|
||||
static void _log(int class, const char *msg, void *usrptr)
|
||||
static void _log(int level, const char *msg, void *usrptr)
|
||||
{
|
||||
cmdLineLog(class, (char *)msg);
|
||||
cmdLineLog(level, (char *)msg);
|
||||
}
|
||||
|
||||
static int _yesDialog(const char *msg, void *usrptr)
|
||||
@@ -459,7 +459,7 @@ static int action_luksRemoveKey(int arg)
|
||||
|
||||
static int _action_luksAddKey_useMK()
|
||||
{
|
||||
int r = -EINVAL, keysize;
|
||||
int r = -EINVAL, keysize = 0;
|
||||
char *key = NULL;
|
||||
struct crypt_device *cd = NULL;
|
||||
|
||||
|
||||
@@ -1,170 +1,13 @@
|
||||
TESTS = apitest
|
||||
TESTS = api-test compat-test align-test
|
||||
|
||||
EXTRA_DIST = fileDiffer.py compatimage.img.bz2
|
||||
EXTRA_DIST = fileDiffer.py compatimage.img.bz2 align-test compat-test
|
||||
|
||||
apitest_SOURCES = apitest.c
|
||||
apitest_LDADD = ../lib/libcryptsetup.la
|
||||
apitest_LDFLAGS = -static
|
||||
apitest_CFLAGS = -g -Wall -O0 -I$(top_srcdir)/lib/
|
||||
api_test_SOURCES = api-test.c
|
||||
api_test_LDADD = ../lib/libcryptsetup.la
|
||||
api_test_LDFLAGS = -static
|
||||
api_test_CFLAGS = -g -Wall -O0 -I$(top_srcdir)/lib/
|
||||
|
||||
check_PROGRAMS = apitest
|
||||
check_PROGRAMS = api-test
|
||||
|
||||
compatimage.img:
|
||||
@bzip2 -k -d compatimage.img.bz2
|
||||
|
||||
# LUKS tests
|
||||
ORIG_IMG = /tmp/luks-test-orig
|
||||
IMG = /tmp/luks-test
|
||||
IMG1 = /tmp/luks-test1
|
||||
|
||||
|
||||
LUKS_HEADER = S0-5 S6-7 S8-39 S40-71 S72-103 S104-107 S108-111 R112-131 R132-163 S164-167 S168-207 A0-591
|
||||
|
||||
KEY_SLOT0 = S208-211 S212-215 R216-247 S248-251 S251-255
|
||||
KEY_MATERIAL0 = R4096-68096
|
||||
KEY_MATERIAL0_EXT = R4096-68096
|
||||
|
||||
KEY_SLOT1 = S256-259 S260-263 R264-295 S296-299 S300-303
|
||||
KEY_MATERIAL1 = R69632-133632
|
||||
KEY_MATERIAL1_EXT = S69632-133632
|
||||
|
||||
LOOPDEV = /dev/loop5
|
||||
|
||||
test:
|
||||
# (cd ..; make clean; make CFLAGS=-Werror)
|
||||
@if [ `id -u` != 0 ]; then \
|
||||
echo Not root; \
|
||||
fi
|
||||
@if [ ! -e /tmp/key1 ]; then \
|
||||
dd if=/dev/urandom of=/tmp/key1 count=1 bs=32; \
|
||||
fi
|
||||
@bzip2 -cd compatimage.img.bz2 > $(IMG)
|
||||
@-/sbin/losetup -d $(LOOPDEV)
|
||||
@/sbin/losetup $(LOOPDEV) $(IMG)
|
||||
|
||||
@echo Case: open - compat image - acceptance check
|
||||
# Image must not change
|
||||
@cp $(IMG) $(ORIG_IMG)
|
||||
echo "compatkey" | ../src/cryptsetup -v luksOpen $(LOOPDEV) dummy
|
||||
@sync
|
||||
./fileDiffer.py $(IMG) $(ORIG_IMG)
|
||||
@-ls -l /dev/mapper/dummy > /dev/null
|
||||
@../src/cryptsetup remove dummy
|
||||
@echo "success"
|
||||
|
||||
|
||||
@echo Case: open - compat image - denial check
|
||||
# Image must not change
|
||||
@cp $(IMG) $(ORIG_IMG)
|
||||
echo "wrongkey" | ../src/cryptsetup -v luksOpen $(LOOPDEV) dummy || true
|
||||
@sync
|
||||
./fileDiffer.py $(IMG) $(ORIG_IMG)
|
||||
@echo "success"
|
||||
|
||||
@echo Case: format
|
||||
# All headers items and first key material section must change
|
||||
@cp $(IMG) $(ORIG_IMG)
|
||||
echo "key0" | ../src/cryptsetup -v -i 1000 -c aes-cbc-essiv:sha256 -s 128 luksFormat $(LOOPDEV)
|
||||
@sync
|
||||
./fileDiffer.py $(IMG) $(ORIG_IMG) $(LUKS_HEADER) $(KEY_SLOT0) $(KEY_MATERIAL0)
|
||||
|
||||
@echo Case: format using hash sha512
|
||||
@cp $(IMG) $(ORIG_IMG)
|
||||
echo "key0" | ../src/cryptsetup -v -i 1000 -h sha512 -c aes-cbc-essiv:sha256 -s 128 luksFormat $(LOOPDEV)
|
||||
@sync
|
||||
./fileDiffer.py $(IMG) $(ORIG_IMG) $(LUKS_HEADER) $(KEY_SLOT0) $(KEY_MATERIAL0)
|
||||
|
||||
@echo Case: open
|
||||
# Image must not change
|
||||
@cp $(IMG) $(ORIG_IMG)
|
||||
echo "key0" | ../src/cryptsetup -v luksOpen $(LOOPDEV) dummy
|
||||
@sync
|
||||
./fileDiffer.py $(IMG) $(ORIG_IMG)
|
||||
@-ls -l /dev/mapper/dummy > /dev/null
|
||||
@../src/cryptsetup remove dummy
|
||||
@echo "success"
|
||||
|
||||
@echo Case: add key
|
||||
# Key Slot 1 and key material section 1 must change, the rest must not.
|
||||
@cp $(IMG) $(ORIG_IMG)
|
||||
echo -e "key0\nkey1" | ../src/cryptsetup -v luksAddKey $(LOOPDEV)
|
||||
@sync
|
||||
./fileDiffer.py $(IMG) $(ORIG_IMG) $(KEY_SLOT1) $(KEY_MATERIAL1)
|
||||
echo "key1" | ../src/cryptsetup -v luksOpen $(LOOPDEV) dummy
|
||||
@-ls -l /dev/mapper/dummy > /dev/null
|
||||
@../src/cryptsetup -v remove dummy
|
||||
@echo "success"
|
||||
|
||||
# Unsuccessful Key Delete - nothing may change
|
||||
@echo Case: unsuccessful delete
|
||||
@cp $(IMG) $(ORIG_IMG)
|
||||
echo "invalid" | ../src/cryptsetup -v luksDelKey $(LOOPDEV) 1 || true
|
||||
@sync
|
||||
./fileDiffer.py $(IMG) $(ORIG_IMG)
|
||||
@echo "success"
|
||||
|
||||
# Delete Key Test
|
||||
# Key Slot 1 and key material section 1 must change, the rest must not
|
||||
@echo Case: successful delete
|
||||
@cp $(IMG) $(ORIG_IMG)
|
||||
../src/cryptsetup -v -q luksDelKey $(LOOPDEV) 1
|
||||
@sync
|
||||
./fileDiffer.py $(IMG) $(ORIG_IMG) $(KEY_SLOT1) $(KEY_MATERIAL1_EXT)
|
||||
echo "key1" | ../src/cryptsetup -v luksOpen $(LOOPDEV) dummy 2>/dev/null || true
|
||||
echo "key0" | ../src/cryptsetup -v luksOpen $(LOOPDEV) dummy 2>/dev/null
|
||||
@../src/cryptsetup -v remove dummy
|
||||
@echo "success"
|
||||
|
||||
# Non-Exclusive Open test
|
||||
# @echo Case: Non-Exclusive Open
|
||||
# echo "key0" | ../src/cryptsetup -v --readonly luksOpen $(LOOPDEV) dummy1 2>/dev/null
|
||||
# must fail
|
||||
# echo "key0" | ../src/cryptsetup -v --readonly luksOpen $(LOOPDEV) dummy2 2>/dev/null || true
|
||||
# echo "key0" | ../src/cryptsetup -v --non-exclusive --readonly luksOpen $(LOOPDEV) dummy2 2>/dev/null
|
||||
# @../src/cryptsetup -v remove dummy1
|
||||
# @../src/cryptsetup -v remove dummy2
|
||||
|
||||
|
||||
# Key Slot 1 and key material section 1 must change, the rest must not
|
||||
@echo Case: add key test for key files
|
||||
@cp $(IMG) $(ORIG_IMG)
|
||||
echo "key0" | ../src/cryptsetup -v luksAddKey $(LOOPDEV) /tmp/key1
|
||||
@sync
|
||||
./fileDiffer.py $(IMG) $(ORIG_IMG) $(KEY_SLOT1) $(KEY_MATERIAL1)
|
||||
../src/cryptsetup -d /tmp/key1 -v luksOpen $(LOOPDEV) dummy
|
||||
@-ls -l /dev/mapper/dummy > /dev/null
|
||||
@../src/cryptsetup -v remove dummy
|
||||
@echo "success"
|
||||
|
||||
@echo Case: delete key test with /tmp/key1 as remaining key
|
||||
# Key Slot 1 and key material section 1 must change, the rest must not
|
||||
@cp $(IMG) $(ORIG_IMG)
|
||||
../src/cryptsetup -v -d /tmp/key1 luksDelKey $(LOOPDEV) 0
|
||||
@sync
|
||||
./fileDiffer.py $(IMG) $(ORIG_IMG) $(KEY_SLOT0) $(KEY_MATERIAL0_EXT)
|
||||
echo "key0" | ../src/cryptsetup -v luksOpen $(LOOPDEV) dummy 2>/dev/null || true
|
||||
../src/cryptsetup -v luksOpen -d /tmp/key1 $(LOOPDEV) dummy 2>/dev/null
|
||||
@../src/cryptsetup -v remove dummy
|
||||
@echo "success"
|
||||
|
||||
# Delete last slot
|
||||
@echo Case: delete last key
|
||||
@cp $(IMG) $(ORIG_IMG)
|
||||
@echo "key0" | ../src/cryptsetup -v luksFormat $(LOOPDEV)
|
||||
echo "key0" | ../src/cryptsetup -v luksKillSlot $(LOOPDEV) 0
|
||||
@sync
|
||||
echo "key0" | ../src/cryptsetup -v luksOpen $(LOOPDEV) dummy 2>/dev/null || true
|
||||
@echo "success"
|
||||
|
||||
# Format test for ESSIV, and some other parameters.
|
||||
@echo Case: parameter variation test
|
||||
@dd if=/dev/zero of=$(IMG) count=20000
|
||||
@cp $(IMG) $(ORIG_IMG)
|
||||
@../src/cryptsetup -q -v -i 1000 -c aes-cbc-essiv:sha256 -s 128 luksFormat $(LOOPDEV) /tmp/key1
|
||||
@sync
|
||||
./fileDiffer.py $(IMG) $(ORIG_IMG) $(LUKS_HEADER) $(KEY_SLOT0) $(KEY_MATERIAL0)
|
||||
@../src/cryptsetup -d /tmp/key1 -v luksOpen $(LOOPDEV) dummy
|
||||
@-ls -l /dev/mapper/dummy > /dev/null && echo "success"
|
||||
@../src/cryptsetup -v remove dummy
|
||||
|
||||
@-/sbin/losetup -d $(LOOPDEV)
|
||||
|
||||
102
tests/align-test
Executable file
102
tests/align-test
Executable file
@@ -0,0 +1,102 @@
|
||||
#!/bin/bash
|
||||
|
||||
CRYPTSETUP="../src/cryptsetup"
|
||||
DEV=""
|
||||
|
||||
cleanup() {
|
||||
udevadm settle 2>/dev/null 2>&1
|
||||
rmmod scsi_debug 2>/dev/null
|
||||
sleep 2
|
||||
}
|
||||
|
||||
fail()
|
||||
{
|
||||
[ -n "$1" ] && echo "$1"
|
||||
cleanup
|
||||
exit 100
|
||||
}
|
||||
|
||||
add_device() {
|
||||
modprobe scsi_debug $@
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "This kernel seems to not support proper scsi_debug module, test skipped."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
sleep 2
|
||||
DEV=$(grep scsi_debug /sys/block/*/device/model | cut -f4 -d /)
|
||||
|
||||
if [ ! -e /sys/block/$DEV/alignment_offset ] ; then
|
||||
echo "This kernel seems to not support topology info, test skipped."
|
||||
cleanup
|
||||
exit 0
|
||||
fi
|
||||
|
||||
DEV="/dev/$DEV"
|
||||
[ -b $DEV ] || fail "Cannot find $DEV."
|
||||
}
|
||||
|
||||
|
||||
format() # key_bits expected [forced]
|
||||
{
|
||||
if [ -z "$3" ] ; then
|
||||
echo -n "Formatting using topology info ($1 bits key)...."
|
||||
echo xxx| $CRYPTSETUP luksFormat $DEV -q -s $1
|
||||
else
|
||||
echo -n "Formatting using forced offset $3 ($1 bits key)..."
|
||||
echo xxx| $CRYPTSETUP luksFormat $DEV -q -s $1 --align-payload=$2
|
||||
fi
|
||||
|
||||
ALIGN=$($CRYPTSETUP luksDump $DEV |grep "Payload offset" | sed -e s/.*\\t//)
|
||||
#echo "ALIGN = $ALIGN"
|
||||
|
||||
if [ $ALIGN -ne $2 ] ; then
|
||||
echo "FAIL"
|
||||
echo "Expected alignment differs: expected $2 != detected $ALIGN"
|
||||
fail
|
||||
fi
|
||||
echo "PASSED"
|
||||
}
|
||||
|
||||
if [ $(id -u) != 0 ]; then
|
||||
echo "WARNING: You must be root to run this test, test skipped."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
modprobe --dry-run scsi_debug || exit 0
|
||||
cleanup
|
||||
|
||||
echo "# Create desktop-class 4K drive"
|
||||
echo "# (logical_block_size=512, physical_block_size=4096, alignment_offset=0)"
|
||||
add_device dev_size_mb=16 sector_size=512 physblk_exp=3 num_tgts=1
|
||||
format 256 2112
|
||||
format 128 1088
|
||||
format 256 8192 8192
|
||||
format 128 8192 8192
|
||||
cleanup
|
||||
|
||||
echo "# Create desktop-class 4K drive w/ 63-sector DOS partition compensation"
|
||||
echo "# (logical_block_size=512, physical_block_size=4096, alignment_offset=3584)"
|
||||
add_device dev_size_mb=16 sector_size=512 physblk_exp=3 lowest_aligned=7 num_tgts=1
|
||||
format 256 2119
|
||||
format 128 1095
|
||||
cleanup
|
||||
|
||||
echo "# Create enterprise-class 4K drive"
|
||||
echo "# (logical_block_size=4096, physical_block_size=4096, alignment_offset=0)"
|
||||
add_device dev_size_mb=16 sector_size=4096 num_tgts=1
|
||||
format 256 2560
|
||||
format 128 1536
|
||||
cleanup
|
||||
|
||||
echo "# Create classic 512b drive and stack dm-linear"
|
||||
echo "# (logical_block_size=512, physical_block_size=512, alignment_offset=0)"
|
||||
add_device dev_size_mb=16 sector_size=512 num_tgts=1
|
||||
DEV2=$DEV
|
||||
DEV=/dev/mapper/luks0xbabe
|
||||
dmsetup create luks0xbabe --table "0 32768 linear $DEV2 0"
|
||||
format 256 2112
|
||||
format 128 1088
|
||||
format 128 8192 8192
|
||||
dmsetup remove luks0xbabe
|
||||
cleanup
|
||||
@@ -58,6 +58,8 @@ static int _verbose = 1;
|
||||
static char global_log[4096];
|
||||
static int global_lines = 0;
|
||||
|
||||
static int gcrypt_compatible = 0;
|
||||
|
||||
// Helpers
|
||||
static int _prepare_keyfile(const char *name, const char *passphrase)
|
||||
{
|
||||
@@ -109,15 +111,15 @@ static int yesDialog(char *msg)
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void cmdLineLog(int class, char *msg)
|
||||
static void cmdLineLog(int level, char *msg)
|
||||
{
|
||||
strncat(global_log, msg, sizeof(global_log));
|
||||
strncat(global_log, msg, sizeof(global_log) - strlen(global_log));
|
||||
global_lines++;
|
||||
}
|
||||
|
||||
static void new_log(int class, const char *msg, void *usrptr)
|
||||
static void new_log(int level, const char *msg, void *usrptr)
|
||||
{
|
||||
cmdLineLog(class, (char*)msg);
|
||||
cmdLineLog(level, (char*)msg);
|
||||
}
|
||||
|
||||
|
||||
@@ -134,41 +136,46 @@ static struct interface_callbacks cmd_icb = {
|
||||
|
||||
static void _cleanup(void)
|
||||
{
|
||||
int r;
|
||||
struct stat st;
|
||||
|
||||
//system("udevadm settle");
|
||||
//r = system("udevadm settle");
|
||||
|
||||
if (!stat(DMDIR CDEVICE_1, &st))
|
||||
system("dmsetup remove " CDEVICE_1);
|
||||
r = system("dmsetup remove " CDEVICE_1);
|
||||
|
||||
if (!stat(DMDIR CDEVICE_2, &st))
|
||||
system("dmsetup remove " CDEVICE_2);
|
||||
r = system("dmsetup remove " CDEVICE_2);
|
||||
|
||||
if (!stat(DEVICE_EMPTY, &st))
|
||||
system("dmsetup remove " DEVICE_EMPTY_name);
|
||||
r = system("dmsetup remove " DEVICE_EMPTY_name);
|
||||
|
||||
if (!stat(DEVICE_ERROR, &st))
|
||||
system("dmsetup remove " DEVICE_ERROR_name);
|
||||
r = system("dmsetup remove " DEVICE_ERROR_name);
|
||||
|
||||
if (!strncmp("/dev/loop", DEVICE_1, 9))
|
||||
system("losetup -d " DEVICE_1);
|
||||
r = system("losetup -d " DEVICE_1);
|
||||
|
||||
if (!strncmp("/dev/loop", DEVICE_2, 9))
|
||||
system("losetup -d " DEVICE_2);
|
||||
r = system("losetup -d " DEVICE_2);
|
||||
|
||||
system("rm -f " IMAGE_EMPTY);
|
||||
r = system("rm -f " IMAGE_EMPTY);
|
||||
_remove_keyfiles();
|
||||
}
|
||||
|
||||
static void _setup(void)
|
||||
{
|
||||
system("dmsetup create " DEVICE_EMPTY_name " --table \"0 10000 zero\"");
|
||||
system("dmsetup create " DEVICE_ERROR_name " --table \"0 10000 error\"");
|
||||
if (!strncmp("/dev/loop", DEVICE_1, 9))
|
||||
system("losetup " DEVICE_1 " " IMAGE1);
|
||||
int r;
|
||||
|
||||
r = system("dmsetup create " DEVICE_EMPTY_name " --table \"0 10000 zero\"");
|
||||
r = system("dmsetup create " DEVICE_ERROR_name " --table \"0 10000 error\"");
|
||||
if (!strncmp("/dev/loop", DEVICE_1, 9)) {
|
||||
r = system(" [ ! -e " IMAGE1 " ] && bzip2 -dk " IMAGE1 ".bz2");
|
||||
r = system("losetup " DEVICE_1 " " IMAGE1);
|
||||
}
|
||||
if (!strncmp("/dev/loop", DEVICE_2, 9)) {
|
||||
system("dd if=/dev/zero of=" IMAGE_EMPTY " bs=1M count=4");
|
||||
system("losetup " DEVICE_2 " " IMAGE_EMPTY);
|
||||
r = system("dd if=/dev/zero of=" IMAGE_EMPTY " bs=1M count=4");
|
||||
r = system("losetup " DEVICE_2 " " IMAGE_EMPTY);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -473,7 +480,7 @@ void DeviceResizeGame(void)
|
||||
co.size = 0;
|
||||
co.offset = 444;
|
||||
co.skip = 555;
|
||||
co.cipher = "aes-cbc-benbi";
|
||||
co.cipher = "aes-cbc-essiv:sha256";
|
||||
OK_(crypt_update_device(&co));
|
||||
EQ_(_get_device_size(DMDIR CDEVICE_2), (orig_size - 444));
|
||||
|
||||
@@ -481,7 +488,7 @@ void DeviceResizeGame(void)
|
||||
co.icb = &cmd_icb,
|
||||
co.name = CDEVICE_2;
|
||||
EQ_(crypt_query_device(&co), 1);
|
||||
EQ_(strcmp(co.cipher, "aes-cbc-benbi"), 0);
|
||||
EQ_(strcmp(co.cipher, "aes-cbc-essiv:sha256"), 0);
|
||||
EQ_(co.key_size, 128 / 8);
|
||||
EQ_(co.offset, 444);
|
||||
EQ_(co.skip, 555);
|
||||
@@ -515,6 +522,18 @@ static void AddDevicePlain(void)
|
||||
|
||||
FAIL_(crypt_init(&cd, ""), "empty device string");
|
||||
|
||||
// default is "plain" hash - no password hash
|
||||
OK_(crypt_init(&cd, DEVICE_1));
|
||||
OK_(crypt_format(cd, CRYPT_PLAIN, cipher, cipher_mode, NULL, NULL, key_size, NULL));
|
||||
OK_(crypt_activate_by_volume_key(cd, CDEVICE_1, key, key_size, 0));
|
||||
EQ_(crypt_status(cd, CDEVICE_1), CRYPT_ACTIVE);
|
||||
// FIXME: this should get key from active device?
|
||||
//OK_(crypt_volume_key_get(cd, CRYPT_ANY_SLOT, key2, &key_size, passphrase, strlen(passphrase)));
|
||||
//OK_(memcmp(key, key2, key_size));
|
||||
OK_(crypt_deactivate(cd, CDEVICE_1));
|
||||
crypt_free(cd);
|
||||
|
||||
// Now use hashed password
|
||||
OK_(crypt_init(&cd, DEVICE_1));
|
||||
OK_(crypt_format(cd, CRYPT_PLAIN, cipher, cipher_mode, NULL, NULL, key_size, ¶ms));
|
||||
OK_(crypt_activate_by_passphrase(cd, CDEVICE_1, CRYPT_ANY_SLOT, passphrase, strlen(passphrase), 0));
|
||||
@@ -585,13 +604,19 @@ static void UseLuksDevice(void)
|
||||
|
||||
static void SuspendDevice(void)
|
||||
{
|
||||
int suspend_status;
|
||||
struct crypt_device *cd;
|
||||
|
||||
OK_(crypt_init(&cd, DEVICE_1));
|
||||
OK_(crypt_load(cd, CRYPT_LUKS1, NULL));
|
||||
OK_(crypt_activate_by_passphrase(cd, CDEVICE_1, CRYPT_ANY_SLOT, KEY1, strlen(KEY1), 0));
|
||||
|
||||
OK_(crypt_suspend(cd, CDEVICE_1));
|
||||
suspend_status = crypt_suspend(cd, CDEVICE_1);
|
||||
if (suspend_status == -ENOTSUP) {
|
||||
printf("WARNING: Suspend/Resume not supported, skipping test.\n");
|
||||
goto out;
|
||||
}
|
||||
OK_(suspend_status);
|
||||
FAIL_(crypt_suspend(cd, CDEVICE_1), "already suspended");
|
||||
|
||||
FAIL_(crypt_resume_by_passphrase(cd, CDEVICE_1, CRYPT_ANY_SLOT, KEY1, strlen(KEY1)-1), "wrong key");
|
||||
@@ -604,7 +629,7 @@ static void SuspendDevice(void)
|
||||
OK_(crypt_resume_by_keyfile(cd, CDEVICE_1, CRYPT_ANY_SLOT, KEYFILE1, 0));
|
||||
FAIL_(crypt_resume_by_keyfile(cd, CDEVICE_1, CRYPT_ANY_SLOT, KEYFILE1, 0), "not suspended");
|
||||
_remove_keyfiles();
|
||||
|
||||
out:
|
||||
OK_(crypt_deactivate(cd, CDEVICE_1));
|
||||
crypt_free(cd);
|
||||
}
|
||||
@@ -688,11 +713,34 @@ static void NonFIPSAlg(void)
|
||||
char *cipher = "aes";
|
||||
char *cipher_mode = "cbc-essiv:sha256";
|
||||
|
||||
if (!gcrypt_compatible) {
|
||||
printf("WARNING: old libgcrypt, skipping test.\n");
|
||||
return;
|
||||
}
|
||||
OK_(crypt_init(&cd, DEVICE_2));
|
||||
OK_(crypt_format(cd, CRYPT_LUKS1, cipher, cipher_mode, NULL, key, key_size, ¶ms));
|
||||
crypt_free(cd);
|
||||
}
|
||||
|
||||
|
||||
static void _gcrypt_compatible()
|
||||
{
|
||||
int maj, min, patch;
|
||||
FILE *f;
|
||||
|
||||
if (!(f = popen("libgcrypt-config --version", "r")))
|
||||
return;
|
||||
|
||||
if (fscanf(f, "%d.%d.%d", &maj, &min, &patch) == 3 &&
|
||||
maj >= 1 && min >= 4)
|
||||
gcrypt_compatible = 1;
|
||||
if (_debug)
|
||||
printf("libgcrypt version %d.%d.%d detected.\n", maj, min, patch);
|
||||
|
||||
(void)fclose(f);
|
||||
return;
|
||||
}
|
||||
|
||||
int main (int argc, char *argv[])
|
||||
{
|
||||
int i;
|
||||
@@ -711,6 +759,7 @@ int main (int argc, char *argv[])
|
||||
|
||||
_cleanup();
|
||||
_setup();
|
||||
_gcrypt_compatible();
|
||||
|
||||
crypt_set_debug_level(_debug ? CRYPT_DEBUG_ALL : CRYPT_DEBUG_NONE);
|
||||
|
||||
@@ -729,7 +778,6 @@ int main (int argc, char *argv[])
|
||||
RUN_(UseLuksDevice, "Use pre-formated LUKS device");
|
||||
RUN_(SuspendDevice, "Suspend/Resume test");
|
||||
|
||||
|
||||
_cleanup();
|
||||
return 0;
|
||||
}
|
||||
149
tests/compat-test
Executable file
149
tests/compat-test
Executable file
@@ -0,0 +1,149 @@
|
||||
#!/bin/bash
|
||||
|
||||
CRYPTSETUP=../src/cryptsetup
|
||||
|
||||
LOOPDEV=/dev/loop5
|
||||
DEV_NAME=dummy
|
||||
DEV_NAME2=dummy2
|
||||
ORIG_IMG=luks-test-orig
|
||||
IMG=luks-test
|
||||
IMG1=luks-test1
|
||||
KEY1=key1
|
||||
|
||||
LUKS_HEADER="S0-5 S6-7 S8-39 S40-71 S72-103 S104-107 S108-111 R112-131 R132-163 S164-167 S168-207 A0-591"
|
||||
KEY_SLOT0="S208-211 S212-215 R216-247 S248-251 S251-255"
|
||||
KEY_MATERIAL0="R4096-68096"
|
||||
KEY_MATERIAL0_EXT="R4096-68096"
|
||||
|
||||
KEY_SLOT1="S256-259 S260-263 R264-295 S296-299 S300-303"
|
||||
KEY_MATERIAL1="R69632-133632"
|
||||
KEY_MATERIAL1_EXT="S69632-133632"
|
||||
|
||||
function remove_mapping()
|
||||
{
|
||||
[ -b /dev/mapper/$DEV_NAME2 ] && dmsetup remove $DEV_NAME2
|
||||
[ -b /dev/mapper/$DEV_NAME ] && dmsetup remove $DEV_NAME
|
||||
losetup -d $LOOPDEV >/dev/null 2>&1
|
||||
rm -f $ORIG_IMG $IMG $IMG1 $KEY1 >/dev/null 2>&1
|
||||
}
|
||||
|
||||
function fail()
|
||||
{
|
||||
remove_mapping
|
||||
echo "FAILED"
|
||||
exit 2
|
||||
}
|
||||
|
||||
function prepare()
|
||||
{
|
||||
if [ $(id -u) != 0 ]; then
|
||||
echo "WARNING: You must be root to run this test, test skipped."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
[ -b /dev/mapper/$DEV_NAME ] && dmsetup remove $DEV_NAME
|
||||
|
||||
if [ ! -e $KEY1 ]; then
|
||||
dd if=/dev/urandom of=$KEY1 count=1 bs=32 >/dev/null 2>&1
|
||||
fi
|
||||
|
||||
if [ ! -e $IMG ]; then
|
||||
bzip2 -cd compatimage.img.bz2 > $IMG
|
||||
losetup -d $LOOPDEV >/dev/null 2>&1
|
||||
losetup $LOOPDEV $IMG
|
||||
fi
|
||||
|
||||
cp $IMG $ORIG_IMG
|
||||
|
||||
[ -n "$1" ] && echo "CASE: $1"
|
||||
}
|
||||
|
||||
function check()
|
||||
{
|
||||
sync
|
||||
./fileDiffer.py $IMG $ORIG_IMG $1|| fail
|
||||
}
|
||||
|
||||
function check_exists()
|
||||
{
|
||||
[ -b /dev/mapper/$DEV_NAME ] || fail
|
||||
check $1
|
||||
}
|
||||
|
||||
# LUKS tests
|
||||
|
||||
prepare "[1] open - compat image - acceptance check"
|
||||
echo "compatkey" | $CRYPTSETUP luksOpen $LOOPDEV $DEV_NAME || fail
|
||||
check_exists
|
||||
|
||||
prepare "[2] open - compat image - denial check"
|
||||
echo "wrongkey" | $CRYPTSETUP luksOpen $LOOPDEV $DEV_NAME && fail
|
||||
check
|
||||
|
||||
# All headers items and first key material section must change
|
||||
prepare "[3] format"
|
||||
echo "key0" | $CRYPTSETUP -i 1000 -c aes-cbc-essiv:sha256 -s 128 luksFormat $LOOPDEV || fail
|
||||
check "$LUKS_HEADER $KEY_SLOT0 $KEY_MATERIAL0"
|
||||
|
||||
prepare "[4] format using hash sha512"
|
||||
echo "key0" | $CRYPTSETUP -i 1000 -h sha512 -c aes-cbc-essiv:sha256 -s 128 luksFormat $LOOPDEV || fail
|
||||
check "$LUKS_HEADER $KEY_SLOT0 $KEY_MATERIAL0"
|
||||
|
||||
prepare "[5] open"
|
||||
echo "key0" | $CRYPTSETUP luksOpen $LOOPDEV $DEV_NAME || fail
|
||||
check_exists
|
||||
|
||||
# Key Slot 1 and key material section 1 must change, the rest must not.
|
||||
prepare "[6] add key"
|
||||
echo -e "key0\nkey1" | $CRYPTSETUP luksAddKey $LOOPDEV || fail
|
||||
check "$KEY_SLOT1 $KEY_MATERIAL1"
|
||||
echo "key1" | $CRYPTSETUP luksOpen $LOOPDEV $DEV_NAME || fail
|
||||
|
||||
# Unsuccessful Key Delete - nothing may change
|
||||
prepare "[7] unsuccessful delete"
|
||||
echo "invalid" | $CRYPTSETUP luksDelKey $LOOPDEV 1 && fail
|
||||
check
|
||||
|
||||
# Delete Key Test
|
||||
# Key Slot 1 and key material section 1 must change, the rest must not
|
||||
prepare "[8] successful delete"
|
||||
$CRYPTSETUP -q luksDelKey $LOOPDEV 1 || fail
|
||||
check "$KEY_SLOT1 $KEY_MATERIAL1_EXT"
|
||||
echo "key1" | $CRYPTSETUP luksOpen $LOOPDEV $DEV_NAME && fail
|
||||
echo "key0" | $CRYPTSETUP luksOpen $LOOPDEV $DEV_NAME || fail
|
||||
|
||||
# Key Slot 1 and key material section 1 must change, the rest must not
|
||||
prepare "[9] add key test for key files"
|
||||
echo "key0" | $CRYPTSETUP luksAddKey $LOOPDEV $KEY1 || fail
|
||||
check "$KEY_SLOT1 $KEY_MATERIAL1"
|
||||
$CRYPTSETUP -d $KEY1 luksOpen $LOOPDEV $DEV_NAME || fail
|
||||
|
||||
# Key Slot 1 and key material section 1 must change, the rest must not
|
||||
prepare "[10] delete key test with key1 as remaining key"
|
||||
$CRYPTSETUP -d $KEY1 luksDelKey $LOOPDEV 0 || fail
|
||||
check "$KEY_SLOT0 $KEY_MATERIAL0_EXT"
|
||||
echo "key0" | $CRYPTSETUP luksOpen $LOOPDEV $DEV_NAME && fail
|
||||
$CRYPTSETUP luksOpen -d $KEY1 $LOOPDEV $DEV_NAME || fail
|
||||
|
||||
# Delete last slot
|
||||
prepare "[11] delete last key"
|
||||
echo "key0" | $CRYPTSETUP luksFormat $LOOPDEV || fail
|
||||
echo "key0" | $CRYPTSETUP luksKillSlot $LOOPDEV 0 || fail
|
||||
echo "key0" | $CRYPTSETUP luksOpen $LOOPDEV $DEV_NAME && fail
|
||||
|
||||
# Format test for ESSIV, and some other parameters.
|
||||
prepare "[12] parameter variation test"
|
||||
$CRYPTSETUP -q -i 1000 -c aes-cbc-essiv:sha256 -s 128 luksFormat $LOOPDEV $KEY1 || fail
|
||||
check "$LUKS_HEADER $KEY_SLOT0 $KEY_MATERIAL0"
|
||||
$CRYPTSETUP -d $KEY1 luksOpen $LOOPDEV $DEV_NAME || fail
|
||||
|
||||
prepare "[13] open/close - stacked devices"
|
||||
echo "key0" | $CRYPTSETUP -q luksFormat $LOOPDEV || fail
|
||||
echo "key0" | $CRYPTSETUP -q luksOpen $LOOPDEV $DEV_NAME || fail
|
||||
echo "key0" | $CRYPTSETUP -q luksFormat /dev/mapper/$DEV_NAME || fail
|
||||
echo "key0" | $CRYPTSETUP -q luksOpen /dev/mapper/$DEV_NAME $DEV_NAME2 || fail
|
||||
$CRYPTSETUP -q luksClose $DEV_NAME2 || fail
|
||||
$CRYPTSETUP -q luksClose $DEV_NAME || fail
|
||||
|
||||
remove_mapping
|
||||
exit 0
|
||||
Reference in New Issue
Block a user