Package: libpam-mount
Version: 0.9.25-2
Severity: wishlist
Tags: patch

Support for LUKS in mount.crypt and umount.crypt would be nice.

I wrote a litte dpatch, which I use on my system to use LUKS with
libpam-mount.

Regards
Flo
#! /bin/sh /usr/share/dpatch/dpatch-run
## 35_mount_crypt_luks.dpatch by Florian Frank
##
## All lines beginning with `## DP:' are a description of the patch.

@DPATCH@
diff -urNad ./scripts/mount.crypt_old /tmp/scripts/mount.crypt
--- ./scripts/mount.crypt       2005-08-25 17:24:51.206740896 +0200
+++ /tmp/scripts/mount.crypt    2005-08-25 17:24:21.564247240 +0200
@@ -140,8 +140,21 @@
 # FIXME: blind replacement of / with _ may be a bad idea.
 DMDEVICE=`echo $DMDEVICE | sed 's/\//_/g'`
 
-$CRYPTSETUP -c ${CIPHER:-aes} -h ${HASH:-ripemd160} -s ${KEYSIZE:-256} \
-       create $DMDEVICE $DEVICE
+# check for luks
+$CRYPTSETUP isLuks $DEVICE 2>/dev/null
+
+if [ $? -eq 0 ]; then
+       LUKS=true
+else
+       LUKS=false
+fi
+
+if [ x"$LUKS" = xtrue ]; then
+       $CRYPTSETUP luksOpen $DEVICE $DMDEVICE
+else
+       $CRYPTSETUP -c ${CIPHER:-aes} -h ${HASH:-ripemd160} -s ${KEYSIZE:-256} \
+               create $DMDEVICE $DEVICE
+fi
 
 if [ $? -ne 0 ]; then
        echo "${0##*/}: error creating $DMDEVICE" >&2
@@ -153,7 +166,11 @@
        $FSCK -p /dev/mapper/$DMDEVICE
        if [ $? -gt 1 ]; then
                echo "${0##*/}: filesystem $DMDEVICE has errors" >&2
-               $CRYPTSETUP remove $DMDEVICE
+               if [ x"$LUKS" = xtrue ]; then
+                       $CRYPTSETUP luksClose $DMDEVICE
+               else
+                       $CRYPTSETUP remove $DMDEVICE
+               fi
                [ x"$LOOP" = xtrue ] && $LOSETUP -d $DEVICE
                exit 1
        fi
@@ -163,7 +180,11 @@
 $MOUNT ${MOUNTOPTIONS:+-o $MOUNTOPTIONS} /dev/mapper/$DMDEVICE $MOUNT_POINT
 if [ $? -ne 0 ]; then
        echo "${0##*/}: error mounting $DMDEVICE" >&2
-       $CRYPTSETUP remove $DMDEVICE
+       if [ x"$LUKS" = xtrue ]; then
+               $CRYPTSETUP luksClose $DMDEVICE
+       else
+               $CRYPTSETUP remove $DMDEVICE
+       fi
        [ x"$LOOP" = xtrue ] && $LOSETUP -d $DEVICE
        exit 1
 fi
diff -urNad ./scripts/umount.crypt /tmp/scripts/umount.crypt
--- ./scripts/umount.crypt      2005-08-25 17:24:54.808193392 +0200
+++ /tmp/scripts/umount.crypt   2005-08-25 17:24:30.440897784 +0200
@@ -55,7 +55,21 @@
        exit 1
 fi
 
-$CRYPTSETUP remove $DMDEVICE
+# check for luks
+$CRYPTSETUP isLuks $DEVICE 2>/dev/null
+
+if [ $? -eq 0 ]; then
+       LUKS=true
+else
+       LUKS=false
+fi
+
+if [ x"$LUKS" = xtrue ]; then
+       $CRYPTSETUP luksClose $DMDEVICE
+else
+       $CRYPTSETUP remove $DMDEVICE
+fi
+
 if [ $? -ne 0 ]; then
        echo "${0##*/}: error removing $DMDEVICE" >&2
        exit 1

Reply via email to