generic: add helpers for dumping fs-verity metadata

In common/verity, add helper functions for dumping a file's fs-verity
metadata using the new FS_IOC_READ_VERITY_METADATA ioctl.

Signed-off-by: Eric Biggers <ebiggers@google.com>
This commit is contained in:
Eric Biggers
2021-02-24 14:35:35 -08:00
committed by Eryu Guan
parent c363e7a1fc
commit 45495efc38
+36
View File
@@ -120,6 +120,27 @@ _restore_fsverity_signatures()
fi fi
} }
# Require userspace and kernel support for 'fsverity dump_metadata'.
# $1 must be a file with fs-verity enabled.
_require_fsverity_dump_metadata()
{
local verity_file=$1
local tmpfile=$tmp.require_fsverity_dump_metadata
if _fsv_dump_merkle_tree "$verity_file" 2>"$tmpfile" >/dev/null; then
return
fi
if grep -q "^ERROR: unrecognized command: 'dump_metadata'$" "$tmpfile"
then
_notrun "Missing 'fsverity dump_metadata' command"
fi
if grep -q "^ERROR: FS_IOC_READ_VERITY_METADATA failed on '.*': Inappropriate ioctl for device$" "$tmpfile"
then
_notrun "Kernel doesn't support FS_IOC_READ_VERITY_METADATA"
fi
_fail "Unexpected output from 'fsverity dump_metadata': $(<"$tmpfile")"
}
_scratch_mkfs_verity() _scratch_mkfs_verity()
{ {
case $FSTYP in case $FSTYP in
@@ -157,6 +178,21 @@ _fsv_scratch_begin_subtest()
echo -e "\n# $msg" echo -e "\n# $msg"
} }
_fsv_dump_merkle_tree()
{
$FSVERITY_PROG dump_metadata merkle_tree "$@"
}
_fsv_dump_descriptor()
{
$FSVERITY_PROG dump_metadata descriptor "$@"
}
_fsv_dump_signature()
{
$FSVERITY_PROG dump_metadata signature "$@"
}
_fsv_enable() _fsv_enable()
{ {
$FSVERITY_PROG enable "$@" $FSVERITY_PROG enable "$@"