menu "Hardware handling / blockdevices and filesystem maintenance"
source "package/acpid/Config.in"
-source "package/cryptsetup/Config.in"
+source "package/xcryptsetup/Config.in"
source "package/dbus/Config.in"
source "package/dbus-glib/Config.in"
source "package/devmem2/Config.in"
+++ /dev/null
-config BR2_PACKAGE_CRYPTSETUP
- bool "cryptsetup"
- default n
- select BR2_PACKAGE_LIBGCRYPT
- select BR2_PACKAGE_POPT
- help
- Not avaiable
-
+++ /dev/null
-#############################################################
-#
-# cryptsetup
-#
-#############################################################
-CRYPTSETUP_VERSION:=1.0.7
-CRYPTSETUP_SOURCE:=cryptsetup-$(CRYPTSETUP_VERSION).tar.bz2
-CRYPTSETUP_SITE:=http://cryptsetup.googlecode.com/files
-CRYPTSETUP_DIR:=$(BUILD_DIR)/cryptsetup-$(CRYPTSETUP_VERSION)
-CRYPTSETUP_BINARY:=src/cryptsetup
-CRYPTSETUP_TARGET_BINARY:=sbin/cryptsetup
-
-$(DL_DIR)/$(CRYPTSETUP_SOURCE):
- $(WGET) -P $(DL_DIR) $(CRYPTSETUP_SITE)/$(CRYPTSETUP_SOURCE)
-
-$(CRYPTSETUP_DIR)/.source: $(DL_DIR)/$(CRYPTSETUP_SOURCE)
- $(BZCAT) $(DL_DIR)/$(CRYPTSETUP_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
- toolchain/patch-kernel.sh $(CRYPTSETUP_DIR) package/cryptsetup/ \*.diff
- touch $@
-
-$(CRYPTSETUP_DIR)/.configured: $(CRYPTSETUP_DIR)/.source
- (cd $(CRYPTSETUP_DIR); rm -rf config.cache; \
- $(TARGET_CONFIGURE_OPTS) \
- $(TARGET_CONFIGURE_ARGS) \
- $(TARGET_CONFIGURE_ENV) \
- ./configure \
- --target=$(GNU_TARGET_NAME) \
- --host=$(GNU_TARGET_NAME) \
- --build=$(GNU_HOST_NAME) \
- --prefix=/usr \
- --sysconfdir=/etc \
- --disable-shared-library \
- $(DISABLE_NLS); \
- $(SED) 's:^hardcode_libdir_flag_spec.*$$:hardcode_libdir_flag_spec=" -D__LIBTOOL_IS_A_FOOL__ ":' -i libtool; \
- )
- touch $@
-
-$(CRYPTSETUP_DIR)/$(CRYPTSETUP_BINARY): $(CRYPTSETUP_DIR)/.configured
- $(MAKE) CC=$(TARGET_CC) -C $(CRYPTSETUP_DIR)
-
-$(TARGET_DIR)/$(CRYPTSETUP_TARGET_BINARY): $(CRYPTSETUP_DIR)/$(CRYPTSETUP_BINARY)
- $(MAKE) prefix=$(TARGET_DIR)/usr exec_prefix=$(TARGET_DIR) -C $(CRYPTSETUP_DIR) install
- rm $(TARGET_DIR)/lib/libcryptsetup*
- rmdir $(TARGET_DIR)/lib/cryptsetup
- rm $(TARGET_DIR)/usr/include/libcryptsetup.h
- rm -Rf $(TARGET_DIR)/usr/share/man
- $(STRIPCMD) $(TARGET_DIR)/$(CRYPTSETUP_TARGET_BINARY)
-
-
-cryptsetup: libgcrypt libgpg-error popt e2fsprogs uclibc $(TARGET_DIR)/$(CRYPTSETUP_TARGET_BINARY)
-
-cryptsetup-source: $(DL_DIR)/$(CRYPTSETUP_SOURCE)
-
-
-cryptsetup-clean:
- $(MAKE) prefix=$(TARGET_DIR)/usr exec_prefix=$(TARGET_DIR) -C $(CRYPTSETUP_DIR) uninstall
- -$(MAKE) -C $(CRYPTSETUP_DIR) clean
-
-cryptsetup-dirclean:
- rm -rf $(CRYPTSETUP_DIR)
-
-#############################################################
-#
-# Toplevel Makefile options
-#
-#############################################################
-ifeq ($(strip $(BR2_PACKAGE_CRYPTSETUP)),y)
-TARGETS+=cryptsetup
-endif
-
+++ /dev/null
-diff -ru cryptsetup-1.0.7.orig/lib/libcryptsetup.h cryptsetup-1.0.7/lib/libcryptsetup.h
---- cryptsetup-1.0.7.orig/lib/libcryptsetup.h 2009-07-22 11:12:44.000000000 +0000
-+++ cryptsetup-1.0.7/lib/libcryptsetup.h 2009-12-17 22:00:00.000000000 +0000
-@@ -64,6 +64,7 @@
- int crypt_isLuks(struct crypt_options *options);
- int crypt_luksFormat(struct crypt_options *options);
- int crypt_luksDump(struct crypt_options *options);
-+int crypt_luksCheckKey(struct crypt_options *options);
-
- void crypt_get_error(char *buf, size_t size);
- void crypt_put_options(struct crypt_options *options);
-diff -ru cryptsetup-1.0.7.orig/lib/setup.c cryptsetup-1.0.7/lib/setup.c
---- cryptsetup-1.0.7.orig/lib/setup.c 2009-07-22 11:12:44.000000000 +0000
-+++ cryptsetup-1.0.7/lib/setup.c 2009-12-17 22:27:20.000000000 +0000
-@@ -744,6 +744,57 @@
- return luks_remove_helper(arg, backend, options, 1);
- }
-
-+static int __crypt_luks_check_key(int arg, struct setup_backend *backend, struct crypt_options *options)
-+{
-+ struct luks_masterkey *mk=NULL;
-+ struct luks_phdr hdr;
-+ char *prompt = NULL;
-+ char *password=NULL; unsigned int passwordLen;
-+ unsigned int keyIndex;
-+ const char *device = options->device;
-+ int r;
-+
-+ if (!LUKS_device_ready(options->device, O_RDWR))
-+ return -ENOTBLK;
-+
-+ r = LUKS_read_phdr(device, &hdr);
-+ if(r < 0) return r;
-+
-+ if(asprintf(&prompt, "Enter LUKS passphrase for %s: ", device) < 0)
-+ return -ENOMEM;
-+ get_key(prompt,
-+ &password,
-+ &passwordLen,
-+ 0,
-+ options->key_file,
-+ options->passphrase_fd,
-+ options->timeout,
-+ options->flags & ~(CRYPT_FLAG_VERIFY | CRYPT_FLAG_VERIFY_IF_POSSIBLE));
-+
-+ if(!password) {
-+ r = -EINVAL; goto out;
-+ }
-+ if (options->key_slot != -1) {
-+ mk=LUKS_alloc_masterkey(hdr.keyBytes);
-+ r = LUKS_open_key(device, options->key_slot, password, passwordLen, &hdr, mk, backend);
-+ } else
-+ r = LUKS_open_any_key_with_hdr(device, password, passwordLen, &hdr, &mk, backend);
-+ if(r < 0) {
-+ options->icb->log(CRYPT_LOG_ERROR,"No key available with this passphrase.\n");
-+ r = -EPERM; goto out;
-+ } else
-+ logger(options, CRYPT_LOG_NORMAL,"key slot %d unlocked.\n", r);
-+
-+ r = 0;
-+out:
-+ safe_free(password);
-+ LUKS_dealloc_masterkey(mk);
-+
-+ free(prompt);
-+
-+ return r;
-+}
-+
-
- static int crypt_job(int (*job)(int arg, struct setup_backend *backend,
- struct crypt_options *options),
-@@ -891,6 +942,11 @@
- return 0;
- }
-
-+int crypt_luksCheckKey(struct crypt_options *options)
-+{
-+ return crypt_job(__crypt_luks_check_key, 0, options);
-+}
-+
-
- void crypt_get_error(char *buf, size_t size)
- {
-diff -ru cryptsetup-1.0.7.orig/src/cryptsetup.c cryptsetup-1.0.7/src/cryptsetup.c
---- cryptsetup-1.0.7.orig/src/cryptsetup.c 2009-07-22 11:12:44.000000000 +0000
-+++ cryptsetup-1.0.7/src/cryptsetup.c 2009-12-17 22:11:15.000000000 +0000
-@@ -49,6 +49,7 @@
- static int action_isLuks(int arg);
- static int action_luksUUID(int arg);
- static int action_luksDump(int arg);
-+static int action_luksCheckKey(int arg);
-
- static struct action_type {
- const char *type;
-@@ -72,6 +73,7 @@
- { "luksClose", action_remove, 0, 1, N_("<name>"), N_("remove LUKS mapping") },
- { "luksDump", action_luksDump, 0, 1, N_("<device>"), N_("dump LUKS partition information") },
- { "luksDelKey", action_luksDelKey, 0, 2, N_("<device> <key slot>"), N_("identical to luksKillSlot - DEPRECATED - see man page") },
-+ { "luksCheckKey", action_luksCheckKey, 0, 1, N_("<device>"), N_("check key can open LUKS device") },
- { "reload", action_create, 1, 2, N_("<name> <device>"), N_("modify active device - DEPRECATED - see man page") },
- { NULL, NULL, 0, 0, NULL }
- };
-@@ -402,6 +404,25 @@
- return r;
- }
-
-+static int action_luksCheckKey(int arg)
-+{
-+ struct crypt_options options = {
-+ .device = action_argv[0],
-+ .key_file = opt_key_file,
-+ .key_slot = opt_key_slot,
-+ .timeout = opt_timeout,
-+ .tries = opt_tries,
-+ .icb = &cmd_icb,
-+ };
-+ int r;
-+
-+ opt_verbose = 1;
-+ options.flags = CRYPT_FLAG_NON_EXCLUSIVE_ACCESS;
-+ r = crypt_luksCheckKey(&options);
-+ show_status(-r);
-+ return r;
-+}
-+
- static void usage(poptContext popt_context, int exitcode,
- const char *error, const char *more)
- {
rm -rf $(TARGET_DIR)/usr/share/doc
touch -c $@
-e2fsprogs: uclibc util-linux-ng pkgconfig \
+e2fsprogs: uclibc util-linux-ng \
$(TARGET_DIR)/$(E2FSPROGS_TARGET_BINARY)
e2fsprogs-clean:
--- /dev/null
+config BR2_PACKAGE_CRYPTSETUP
+ bool "cryptsetup"
+ default n
+ select BR2_PACKAGE_LIBGCRYPT
+ select BR2_PACKAGE_POPT
+ help
+ Not avaiable
+
--- /dev/null
+diff -ru cryptsetup-1.0.7.orig/lib/libcryptsetup.h cryptsetup-1.0.7/lib/libcryptsetup.h
+--- cryptsetup-1.0.7.orig/lib/libcryptsetup.h 2009-07-22 11:12:44.000000000 +0000
++++ cryptsetup-1.0.7/lib/libcryptsetup.h 2009-12-17 22:00:00.000000000 +0000
+@@ -64,6 +64,7 @@
+ int crypt_isLuks(struct crypt_options *options);
+ int crypt_luksFormat(struct crypt_options *options);
+ int crypt_luksDump(struct crypt_options *options);
++int crypt_luksCheckKey(struct crypt_options *options);
+
+ void crypt_get_error(char *buf, size_t size);
+ void crypt_put_options(struct crypt_options *options);
+diff -ru cryptsetup-1.0.7.orig/lib/setup.c cryptsetup-1.0.7/lib/setup.c
+--- cryptsetup-1.0.7.orig/lib/setup.c 2009-07-22 11:12:44.000000000 +0000
++++ cryptsetup-1.0.7/lib/setup.c 2009-12-17 22:27:20.000000000 +0000
+@@ -744,6 +744,57 @@
+ return luks_remove_helper(arg, backend, options, 1);
+ }
+
++static int __crypt_luks_check_key(int arg, struct setup_backend *backend, struct crypt_options *options)
++{
++ struct luks_masterkey *mk=NULL;
++ struct luks_phdr hdr;
++ char *prompt = NULL;
++ char *password=NULL; unsigned int passwordLen;
++ unsigned int keyIndex;
++ const char *device = options->device;
++ int r;
++
++ if (!LUKS_device_ready(options->device, O_RDWR))
++ return -ENOTBLK;
++
++ r = LUKS_read_phdr(device, &hdr);
++ if(r < 0) return r;
++
++ if(asprintf(&prompt, "Enter LUKS passphrase for %s: ", device) < 0)
++ return -ENOMEM;
++ get_key(prompt,
++ &password,
++ &passwordLen,
++ 0,
++ options->key_file,
++ options->passphrase_fd,
++ options->timeout,
++ options->flags & ~(CRYPT_FLAG_VERIFY | CRYPT_FLAG_VERIFY_IF_POSSIBLE));
++
++ if(!password) {
++ r = -EINVAL; goto out;
++ }
++ if (options->key_slot != -1) {
++ mk=LUKS_alloc_masterkey(hdr.keyBytes);
++ r = LUKS_open_key(device, options->key_slot, password, passwordLen, &hdr, mk, backend);
++ } else
++ r = LUKS_open_any_key_with_hdr(device, password, passwordLen, &hdr, &mk, backend);
++ if(r < 0) {
++ options->icb->log(CRYPT_LOG_ERROR,"No key available with this passphrase.\n");
++ r = -EPERM; goto out;
++ } else
++ logger(options, CRYPT_LOG_NORMAL,"key slot %d unlocked.\n", r);
++
++ r = 0;
++out:
++ safe_free(password);
++ LUKS_dealloc_masterkey(mk);
++
++ free(prompt);
++
++ return r;
++}
++
+
+ static int crypt_job(int (*job)(int arg, struct setup_backend *backend,
+ struct crypt_options *options),
+@@ -891,6 +942,11 @@
+ return 0;
+ }
+
++int crypt_luksCheckKey(struct crypt_options *options)
++{
++ return crypt_job(__crypt_luks_check_key, 0, options);
++}
++
+
+ void crypt_get_error(char *buf, size_t size)
+ {
+diff -ru cryptsetup-1.0.7.orig/src/cryptsetup.c cryptsetup-1.0.7/src/cryptsetup.c
+--- cryptsetup-1.0.7.orig/src/cryptsetup.c 2009-07-22 11:12:44.000000000 +0000
++++ cryptsetup-1.0.7/src/cryptsetup.c 2009-12-17 22:11:15.000000000 +0000
+@@ -49,6 +49,7 @@
+ static int action_isLuks(int arg);
+ static int action_luksUUID(int arg);
+ static int action_luksDump(int arg);
++static int action_luksCheckKey(int arg);
+
+ static struct action_type {
+ const char *type;
+@@ -72,6 +73,7 @@
+ { "luksClose", action_remove, 0, 1, N_("<name>"), N_("remove LUKS mapping") },
+ { "luksDump", action_luksDump, 0, 1, N_("<device>"), N_("dump LUKS partition information") },
+ { "luksDelKey", action_luksDelKey, 0, 2, N_("<device> <key slot>"), N_("identical to luksKillSlot - DEPRECATED - see man page") },
++ { "luksCheckKey", action_luksCheckKey, 0, 1, N_("<device>"), N_("check key can open LUKS device") },
+ { "reload", action_create, 1, 2, N_("<name> <device>"), N_("modify active device - DEPRECATED - see man page") },
+ { NULL, NULL, 0, 0, NULL }
+ };
+@@ -402,6 +404,25 @@
+ return r;
+ }
+
++static int action_luksCheckKey(int arg)
++{
++ struct crypt_options options = {
++ .device = action_argv[0],
++ .key_file = opt_key_file,
++ .key_slot = opt_key_slot,
++ .timeout = opt_timeout,
++ .tries = opt_tries,
++ .icb = &cmd_icb,
++ };
++ int r;
++
++ opt_verbose = 1;
++ options.flags = CRYPT_FLAG_NON_EXCLUSIVE_ACCESS;
++ r = crypt_luksCheckKey(&options);
++ show_status(-r);
++ return r;
++}
++
+ static void usage(poptContext popt_context, int exitcode,
+ const char *error, const char *more)
+ {
--- /dev/null
+#############################################################
+#
+# cryptsetup
+#
+#############################################################
+CRYPTSETUP_VERSION:=1.0.7
+CRYPTSETUP_SOURCE:=cryptsetup-$(CRYPTSETUP_VERSION).tar.bz2
+CRYPTSETUP_SITE:=http://cryptsetup.googlecode.com/files
+CRYPTSETUP_DIR:=$(BUILD_DIR)/cryptsetup-$(CRYPTSETUP_VERSION)
+CRYPTSETUP_BINARY:=src/cryptsetup
+CRYPTSETUP_TARGET_BINARY:=sbin/cryptsetup
+
+$(DL_DIR)/$(CRYPTSETUP_SOURCE):
+ $(WGET) -P $(DL_DIR) $(CRYPTSETUP_SITE)/$(CRYPTSETUP_SOURCE)
+
+$(CRYPTSETUP_DIR)/.source: $(DL_DIR)/$(CRYPTSETUP_SOURCE)
+ $(BZCAT) $(DL_DIR)/$(CRYPTSETUP_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
+ toolchain/patch-kernel.sh $(CRYPTSETUP_DIR) package/cryptsetup/ \*.diff
+ touch $@
+
+$(CRYPTSETUP_DIR)/.configured: $(CRYPTSETUP_DIR)/.source
+ (cd $(CRYPTSETUP_DIR); rm -rf config.cache; \
+ $(TARGET_CONFIGURE_OPTS) \
+ $(TARGET_CONFIGURE_ARGS) \
+ $(TARGET_CONFIGURE_ENV) \
+ ./configure \
+ --target=$(GNU_TARGET_NAME) \
+ --host=$(GNU_TARGET_NAME) \
+ --build=$(GNU_HOST_NAME) \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --disable-shared-library \
+ $(DISABLE_NLS); \
+ $(SED) 's:^hardcode_libdir_flag_spec.*$$:hardcode_libdir_flag_spec=" -D__LIBTOOL_IS_A_FOOL__ ":' -i libtool; \
+ )
+ touch $@
+
+$(CRYPTSETUP_DIR)/$(CRYPTSETUP_BINARY): $(CRYPTSETUP_DIR)/.configured
+ $(MAKE) CC=$(TARGET_CC) -C $(CRYPTSETUP_DIR)
+
+$(TARGET_DIR)/$(CRYPTSETUP_TARGET_BINARY): $(CRYPTSETUP_DIR)/$(CRYPTSETUP_BINARY)
+ $(MAKE) prefix=$(TARGET_DIR)/usr exec_prefix=$(TARGET_DIR) -C $(CRYPTSETUP_DIR) install
+ rm $(TARGET_DIR)/lib/libcryptsetup*
+ rmdir $(TARGET_DIR)/lib/cryptsetup
+ rm $(TARGET_DIR)/usr/include/libcryptsetup.h
+ rm -Rf $(TARGET_DIR)/usr/share/man
+ $(STRIPCMD) $(TARGET_DIR)/$(CRYPTSETUP_TARGET_BINARY)
+
+
+xcryptsetup: libgcrypt libgpg-error popt e2fsprogs uclibc $(TARGET_DIR)/$(CRYPTSETUP_TARGET_BINARY)
+
+xcryptsetup-source: $(DL_DIR)/$(CRYPTSETUP_SOURCE)
+
+
+xcryptsetup-clean:
+ $(MAKE) prefix=$(TARGET_DIR)/usr exec_prefix=$(TARGET_DIR) -C $(CRYPTSETUP_DIR) uninstall
+ -$(MAKE) -C $(CRYPTSETUP_DIR) clean
+
+xcryptsetup-dirclean:
+ rm -rf $(CRYPTSETUP_DIR)
+
+#############################################################
+#
+# Toplevel Makefile options
+#
+#############################################################
+ifeq ($(strip $(BR2_PACKAGE_CRYPTSETUP)),y)
+TARGETS+=xcryptsetup
+endif
+