Package: mount Version: 2.10f-5.1 Debian Woody for PowerPC. Potato seems to share the same mount package so this is a bug in 'frozen' FWIW. Bug applies to all architectures AFAICS.
The 'mount' and 'losetup' commands do not work properly with the international kernel. If I compile Serpent into the kernel, and do # losetup -e serpent /dev/loop0 <file> I get "Unsupported encryption type serpent". The first problem is that the binary package 2.10f-5.1 does not support Serpent--doing a 'strings /sbin/losetup | grep serpent' returns nothing. This is very odd since the source package for the same version has Serpent support (it's added by the .diff.gz file). It appears that the PowerPC version of the package (at least) was miscompiled. Once I started hacking around in the source, I found that support was missing in the password prompt code for Serpent and several other ciphers. I ended up getting the latest util-linux patch from the kerneli tree and applying it by hand (only the password stuff was missing as it ended up). The code as it's distributed also depends on an up-to-date <linux/loop.h> to compile. The version distributed with libc6 2.1.3-10 is missing #defines for Serpent and many other ciphers. The util-linux source includes its own version of loop.h for international support, but it's not used. So here's the patch: diff -ru util-linux-2.10f.orig/mount/Makefile util-linux-2.10f/mount/Makefile --- util-linux-2.10f.orig/mount/Makefile Tue Aug 8 22:03:31 2000 +++ util-linux-2.10f/mount/Makefile Tue Aug 8 22:29:32 2000 @@ -1,7 +1,7 @@ include ../make_include include ../MCONFIG -CFLAGS = -I$(LIB) $(OPT) +CFLAGS = -I$(LIB) -Iint-headers $(OPT) WARNFLAGS = -Wall -Wstrict-prototypes -Wmissing-prototypes DEFINES = -DHAVE_NFS diff -ru util-linux-2.10f.orig/mount/lomount.c util-linux-2.10f/mount/lomount.c --- util-linux-2.10f.orig/mount/lomount.c Tue Aug 8 22:03:31 2000 +++ util-linux-2.10f/mount/lomount.c Tue Aug 8 22:37:21 2000 @@ -236,6 +236,10 @@ case LO_CRYPT_IDEA: case LO_CRYPT_CAST128: + case LO_CRYPT_SERPENT: + case LO_CRYPT_MARS: + case LO_CRYPT_RC6: + case LO_CRYPT_DFC: pass = getpass("Password :"); MDcalc((byte *)loopinfo.lo_encrypt_key,pass,strlen(pass)); loopinfo.lo_encrypt_key_size=16; /* 128 Bit key */ diff -ru util-linux-2.10f.orig/mount/losetup.c util-linux-2.10f/mount/losetup.c --- util-linux-2.10f.orig/mount/losetup.c Tue Aug 8 22:03:31 2000 +++ util-linux-2.10f/mount/losetup.c Tue Aug 8 22:39:42 2000 @@ -151,8 +151,12 @@ MDcalc((byte *)loopinfo.lo_encrypt_key,pass,strlen(pass)); loopinfo.lo_encrypt_key_size=20; /* 160 Bit key */ break; - case LO_CRYPT_CAST128: case LO_CRYPT_IDEA: + case LO_CRYPT_CAST128: + case LO_CRYPT_SERPENT: + case LO_CRYPT_MARS: + case LO_CRYPT_RC6: + case LO_CRYPT_DFC: pass = getpass("Passphrase :"); MDcalc((byte *)loopinfo.lo_encrypt_key,pass,strlen(pass)); loopinfo.lo_encrypt_key_size=16; /* 128 Bit key */