mirror of
https://gitlab.com/cryptsetup/cryptsetup.git
synced 2025-12-15 12:50:06 +01:00
Fix loopaesOpen for keyfile on standard input.
The change in keyfile processing caused that special loopAES keyfiles are no longer read from stdin if key-file argument is "-". Fix it by using /dev/stdin in cryptsetup if "-" is detected. (The libcryptsetup API no longer parses spacial meaning of "-" internally). Fixes #364.
This commit is contained in:
@@ -271,8 +271,8 @@ static int action_open_loopaes(void)
|
|||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
r = crypt_activate_by_keyfile_device_offset(cd, action_argv[1], CRYPT_ANY_SLOT,
|
r = crypt_activate_by_keyfile_device_offset(cd, action_argv[1], CRYPT_ANY_SLOT,
|
||||||
opt_key_file, opt_keyfile_size,
|
tools_is_stdin(opt_key_file) ? "/dev/stdin" : opt_key_file, opt_keyfile_size,
|
||||||
opt_keyfile_offset, activate_flags);
|
opt_keyfile_offset, activate_flags);
|
||||||
out:
|
out:
|
||||||
crypt_free(cd);
|
crypt_free(cd);
|
||||||
|
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ function get_expsum() # $offset
|
|||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
function check_sum() # $key $keysize $offset
|
function check_sum() # $key $keysize $offset [stdin|keyfile]
|
||||||
{
|
{
|
||||||
# Fill device with zeroes and reopen it
|
# Fill device with zeroes and reopen it
|
||||||
dd if=/dev/zero of=/dev/mapper/$DEV_NAME bs=1k $LOOP_DD_PARAM >/dev/null 2>&1
|
dd if=/dev/zero of=/dev/mapper/$DEV_NAME bs=1k $LOOP_DD_PARAM >/dev/null 2>&1
|
||||||
@@ -95,14 +95,18 @@ function check_sum() # $key $keysize $offset
|
|||||||
dmremove $DEV_NAME
|
dmremove $DEV_NAME
|
||||||
|
|
||||||
EXPSUM=$(get_expsum $3)
|
EXPSUM=$(get_expsum $3)
|
||||||
$CRYPTSETUP loopaesOpen $LOOPDEV $DEV_NAME -s $2 --key-file $1 $(get_offset_params $3) >/dev/null 2>&1
|
if [ "$4" == "stdin" ] ; then
|
||||||
|
cat $1 | $CRYPTSETUP loopaesOpen $LOOPDEV $DEV_NAME -s $2 --key-file - $(get_offset_params $3) >/dev/null 2>&1
|
||||||
|
else
|
||||||
|
$CRYPTSETUP loopaesOpen $LOOPDEV $DEV_NAME -s $2 --key-file $1 $(get_offset_params $3) >/dev/null 2>&1
|
||||||
|
fi
|
||||||
ret=$?
|
ret=$?
|
||||||
VSUM=$(sha256sum /dev/mapper/$DEV_NAME | cut -d' ' -f 1)
|
VSUM=$(sha256sum /dev/mapper/$DEV_NAME | cut -d' ' -f 1)
|
||||||
if [ $ret -eq 0 -a "$VSUM" = "$EXPSUM" ] ; then
|
if [ $ret -eq 0 -a "$VSUM" = "$EXPSUM" ] ; then
|
||||||
echo -n "[OK]"
|
echo -n "[$4:OK]"
|
||||||
else
|
else
|
||||||
echo "[FAIL]"
|
echo "[$4:FAIL]"
|
||||||
echo " Expecting $EXPSUM got $VSUM."
|
[ "$VSUM" != "$EXPSUM" ] && echo " Expecting $EXPSUM got $VSUM."
|
||||||
fail
|
fail
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -121,7 +125,7 @@ function check_sum_losetup() # $key $alg
|
|||||||
echo "[OK]"
|
echo "[OK]"
|
||||||
else
|
else
|
||||||
echo "[FAIL]"
|
echo "[FAIL]"
|
||||||
echo " Expecting $EXPSUM got $VSUM (loop-AES)."
|
[ "$VSUM" != "$EXPSUM" ] && echo " Expecting $EXPSUM got $VSUM (loop-AES)."
|
||||||
fail
|
fail
|
||||||
fi
|
fi
|
||||||
losetup -d $LOOPDEV >/dev/null 2>&1
|
losetup -d $LOOPDEV >/dev/null 2>&1
|
||||||
@@ -157,7 +161,9 @@ for key_size in $KEY_SIZES ; do
|
|||||||
2>/dev/null
|
2>/dev/null
|
||||||
[ $? -ne 0 ] && echo "[SKIPPED]" && continue
|
[ $? -ne 0 ] && echo "[SKIPPED]" && continue
|
||||||
check_exists
|
check_exists
|
||||||
check_sum $key $key_size $offset
|
check_sum $key $key_size $offset keyfile
|
||||||
|
$CRYPTSETUP loopaesClose $DEV_NAME || fail
|
||||||
|
check_sum $key $key_size $offset stdin
|
||||||
$CRYPTSETUP loopaesClose $DEV_NAME || fail
|
$CRYPTSETUP loopaesClose $DEV_NAME || fail
|
||||||
check_sum_losetup $key AES$key_size $offset
|
check_sum_losetup $key AES$key_size $offset
|
||||||
done
|
done
|
||||||
|
|||||||
Reference in New Issue
Block a user