From: Christian Limpach Date: Fri, 8 Jan 2010 03:30:25 +0000 (+0000) Subject: Rename cryptsetup to xcryptsetup since busybox dependencies are a joke... X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=f857d913b0de6d54299d546618c9e7048170d46a;p=xenclient%2Fbuild.git Rename cryptsetup to xcryptsetup since busybox dependencies are a joke... --- diff --git a/package/Config.in b/package/Config.in index 6ecf304..5601122 100644 --- a/package/Config.in +++ b/package/Config.in @@ -232,7 +232,7 @@ endmenu 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" diff --git a/package/cryptsetup/Config.in b/package/cryptsetup/Config.in deleted file mode 100644 index 09c4353..0000000 --- a/package/cryptsetup/Config.in +++ /dev/null @@ -1,8 +0,0 @@ -config BR2_PACKAGE_CRYPTSETUP - bool "cryptsetup" - default n - select BR2_PACKAGE_LIBGCRYPT - select BR2_PACKAGE_POPT - help - Not avaiable - diff --git a/package/cryptsetup/cryptsetup.mk b/package/cryptsetup/cryptsetup.mk deleted file mode 100644 index a0cad18..0000000 --- a/package/cryptsetup/cryptsetup.mk +++ /dev/null @@ -1,70 +0,0 @@ -############################################################# -# -# 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 - diff --git a/package/cryptsetup/luks-check-key.diff b/package/cryptsetup/luks-check-key.diff deleted file mode 100644 index 29c91a2..0000000 --- a/package/cryptsetup/luks-check-key.diff +++ /dev/null @@ -1,129 +0,0 @@ -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_(""), N_("remove LUKS mapping") }, - { "luksDump", action_luksDump, 0, 1, N_(""), N_("dump LUKS partition information") }, - { "luksDelKey", action_luksDelKey, 0, 2, N_(" "), N_("identical to luksKillSlot - DEPRECATED - see man page") }, -+ { "luksCheckKey", action_luksCheckKey, 0, 1, N_(""), N_("check key can open LUKS device") }, - { "reload", action_create, 1, 2, N_(" "), 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) - { diff --git a/package/e2fsprogs/e2fsprogs.mk b/package/e2fsprogs/e2fsprogs.mk index c2ad7df..09fd53d 100644 --- a/package/e2fsprogs/e2fsprogs.mk +++ b/package/e2fsprogs/e2fsprogs.mk @@ -123,7 +123,7 @@ endif 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: diff --git a/package/xcryptsetup/Config.in b/package/xcryptsetup/Config.in new file mode 100644 index 0000000..09c4353 --- /dev/null +++ b/package/xcryptsetup/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_CRYPTSETUP + bool "cryptsetup" + default n + select BR2_PACKAGE_LIBGCRYPT + select BR2_PACKAGE_POPT + help + Not avaiable + diff --git a/package/xcryptsetup/luks-check-key.diff b/package/xcryptsetup/luks-check-key.diff new file mode 100644 index 0000000..29c91a2 --- /dev/null +++ b/package/xcryptsetup/luks-check-key.diff @@ -0,0 +1,129 @@ +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_(""), N_("remove LUKS mapping") }, + { "luksDump", action_luksDump, 0, 1, N_(""), N_("dump LUKS partition information") }, + { "luksDelKey", action_luksDelKey, 0, 2, N_(" "), N_("identical to luksKillSlot - DEPRECATED - see man page") }, ++ { "luksCheckKey", action_luksCheckKey, 0, 1, N_(""), N_("check key can open LUKS device") }, + { "reload", action_create, 1, 2, N_(" "), 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) + { diff --git a/package/xcryptsetup/xcryptsetup.mk b/package/xcryptsetup/xcryptsetup.mk new file mode 100644 index 0000000..bfddfa0 --- /dev/null +++ b/package/xcryptsetup/xcryptsetup.mk @@ -0,0 +1,70 @@ +############################################################# +# +# 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 +