3819 lines
115 KiB
Diff
3819 lines
115 KiB
Diff
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-invalid-json-size-c2.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-invalid-json-size-c2.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-invalid-json-size-c2.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-invalid-json-size-c2.img.sh 2019-03-27 20:59:49.443269763 +0100
|
|
@@ -0,0 +1,85 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate primary header with config json size mismatching
|
|
+# value in binary header
|
|
+#
|
|
+# secondary header is corrupted on purpose as well
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ JS=$(((LUKS2_HDR_SIZE-LUKS2_BIN_HDR_SIZE)*512))
|
|
+ TEST_MDA_SIZE=$LUKS2_HDR_SIZE_32K
|
|
+ TEST_MDA_SIZE_BYTES=$((TEST_MDA_SIZE*512))
|
|
+ TEST_JSN_SIZE=$((TEST_MDA_SIZE-LUKS2_BIN_HDR_SIZE))
|
|
+
|
|
+ json_str=$(jq -c '.' $TMPDIR/json0)
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0 $TEST_JSN_SIZE
|
|
+
|
|
+ write_bin_hdr_size $TMPDIR/hdr0 $TEST_MDA_SIZE_BYTES
|
|
+ write_bin_hdr_size $TMPDIR/hdr1 $TEST_MDA_SIZE_BYTES
|
|
+ write_bin_hdr_offset $TMPDIR/hdr1 $TEST_MDA_SIZE_BYTES
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0 $TEST_JSN_SIZE
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr1 $TMPDIR/json0 $TMPDIR/area1 $TEST_JSN_SIZE
|
|
+
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+
|
|
+ erase_checksum $TMPDIR/area1
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area1)
|
|
+ write_checksum $chks0 $TMPDIR/area1
|
|
+
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG $TEST_MDA_SIZE
|
|
+ write_luks2_hdr1 $TMPDIR/area1 $TGT_IMG $TEST_MDA_SIZE
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr_res0
|
|
+ local str_res1=$(head -c 4 $TMPDIR/hdr_res0)
|
|
+ test "$str_res1" = "LUKS" || exit 2
|
|
+
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr_res1 $TEST_MDA_SIZE
|
|
+ local str_res1=$(head -c 4 $TMPDIR/hdr_res1)
|
|
+ test "$str_res1" = "SKUL" || exit 2
|
|
+
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json_res0
|
|
+ jq -c --arg js $JS 'if .config.json_size != ( $js | tostring )
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-1m.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-1m.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-1m.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-1m.img.sh 2019-03-27 20:59:49.444269753 +0100
|
|
@@ -0,0 +1,94 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate primary with predefined json_size. There's only limited
|
|
+# set of values allowed as json size in config section of LUKS2
|
|
+# metadata
|
|
+#
|
|
+# secondary header is corrupted on purpose as well
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # 1 MiB metadata
|
|
+ TEST_MDA_SIZE=$LUKS2_HDR_SIZE_1M
|
|
+
|
|
+ TEST_MDA_SIZE_BYTES=$((TEST_MDA_SIZE*512))
|
|
+ TEST_JSN_SIZE=$((TEST_MDA_SIZE-LUKS2_BIN_HDR_SIZE))
|
|
+ KEYSLOTS_OFFSET=$((TEST_MDA_SIZE*1024))
|
|
+ JSON_DIFF=$(((TEST_MDA_SIZE-LUKS2_HDR_SIZE)*1024))
|
|
+ JSON_SIZE=$((TEST_JSN_SIZE*512))
|
|
+ DATA_OFFSET=16777216
|
|
+
|
|
+ json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \
|
|
+ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) |
|
|
+ .config.json_size = $jsize |
|
|
+ .segments."0".offset = $off' $TMPDIR/json0)
|
|
+ test -n "$json_str" || exit 2
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0 $TEST_JSN_SIZE
|
|
+
|
|
+ write_bin_hdr_size $TMPDIR/hdr0 $TEST_MDA_SIZE_BYTES
|
|
+ write_bin_hdr_size $TMPDIR/hdr1 $TEST_MDA_SIZE_BYTES
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0 $TEST_JSN_SIZE
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr1 $TMPDIR/json0 $TMPDIR/area1 $TEST_JSN_SIZE
|
|
+
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+
|
|
+ erase_checksum $TMPDIR/area1
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area1)
|
|
+ write_checksum $chks0 $TMPDIR/area1
|
|
+
|
|
+ kill_bin_hdr $TMPDIR/area1
|
|
+
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG $TEST_MDA_SIZE
|
|
+ write_luks2_hdr1 $TMPDIR/area1 $TGT_IMG $TEST_MDA_SIZE
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr_res1 $TEST_MDA_SIZE
|
|
+ local str_res1=$(head -c 6 $TMPDIR/hdr_res1)
|
|
+ test "$str_res1" = "VACUUM" || exit 2
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 $TEST_JSN_SIZE
|
|
+ jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \
|
|
+ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or
|
|
+ (.config.json_size != $jsize)
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-1m-secondary.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-1m-secondary.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-1m-secondary.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-1m-secondary.img.sh 2019-03-27 20:59:49.444269753 +0100
|
|
@@ -0,0 +1,97 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate secondary header with one of allowed json area
|
|
+# size values. Test whether auto-recovery code is able
|
|
+# to validate secondary header with non-default json area
|
|
+# size.
|
|
+#
|
|
+# primary header is corrupted on purpose.
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # 1 MiB metadata
|
|
+ TEST_MDA_SIZE=$LUKS2_HDR_SIZE_1M
|
|
+
|
|
+ TEST_MDA_SIZE_BYTES=$((TEST_MDA_SIZE*512))
|
|
+ TEST_JSN_SIZE=$((TEST_MDA_SIZE-LUKS2_BIN_HDR_SIZE))
|
|
+ KEYSLOTS_OFFSET=$((TEST_MDA_SIZE*1024))
|
|
+ JSON_DIFF=$(((TEST_MDA_SIZE-LUKS2_HDR_SIZE)*1024))
|
|
+ JSON_SIZE=$((TEST_JSN_SIZE*512))
|
|
+ DATA_OFFSET=16777216
|
|
+
|
|
+ json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \
|
|
+ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) |
|
|
+ .config.json_size = $jsize |
|
|
+ .segments."0".offset = $off' $TMPDIR/json0)
|
|
+ test -n "$json_str" || exit 2
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0 $TEST_JSN_SIZE
|
|
+
|
|
+ write_bin_hdr_size $TMPDIR/hdr0 $TEST_MDA_SIZE_BYTES
|
|
+ write_bin_hdr_size $TMPDIR/hdr1 $TEST_MDA_SIZE_BYTES
|
|
+
|
|
+ write_bin_hdr_offset $TMPDIR/hdr1 $TEST_MDA_SIZE_BYTES
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0 $TEST_JSN_SIZE
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr1 $TMPDIR/json0 $TMPDIR/area1 $TEST_JSN_SIZE
|
|
+
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+
|
|
+ erase_checksum $TMPDIR/area1
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area1)
|
|
+ write_checksum $chks0 $TMPDIR/area1
|
|
+
|
|
+ kill_bin_hdr $TMPDIR/area0
|
|
+
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG $TEST_MDA_SIZE
|
|
+ write_luks2_hdr1 $TMPDIR/area1 $TGT_IMG $TEST_MDA_SIZE
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr_res0 $TEST_MDA_SIZE
|
|
+ local str_res0=$(head -c 6 $TMPDIR/hdr_res0)
|
|
+ test "$str_res0" = "VACUUM" || exit 2
|
|
+ read_luks2_json1 $TGT_IMG $TMPDIR/json_res1 $TEST_JSN_SIZE
|
|
+ jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \
|
|
+ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or
|
|
+ (.config.json_size != $jsize)
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res1 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-128k.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-128k.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-128k.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-128k.img.sh 2019-03-27 20:59:49.445269743 +0100
|
|
@@ -0,0 +1,94 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate primary with predefined json_size. There's only limited
|
|
+# set of values allowed as json size in config section of LUKS2
|
|
+# metadata
|
|
+#
|
|
+# secondary header is corrupted on purpose as well
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # 128KiB metadata
|
|
+ TEST_MDA_SIZE=$LUKS2_HDR_SIZE_128K
|
|
+
|
|
+ TEST_MDA_SIZE_BYTES=$((TEST_MDA_SIZE*512))
|
|
+ TEST_JSN_SIZE=$((TEST_MDA_SIZE-LUKS2_BIN_HDR_SIZE))
|
|
+ KEYSLOTS_OFFSET=$((TEST_MDA_SIZE*1024))
|
|
+ JSON_DIFF=$(((TEST_MDA_SIZE-LUKS2_HDR_SIZE)*1024))
|
|
+ JSON_SIZE=$((TEST_JSN_SIZE*512))
|
|
+ DATA_OFFSET=16777216
|
|
+
|
|
+ json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \
|
|
+ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) |
|
|
+ .config.json_size = $jsize |
|
|
+ .segments."0".offset = $off' $TMPDIR/json0)
|
|
+ test -n "$json_str" || exit 2
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0 $TEST_JSN_SIZE
|
|
+
|
|
+ write_bin_hdr_size $TMPDIR/hdr0 $TEST_MDA_SIZE_BYTES
|
|
+ write_bin_hdr_size $TMPDIR/hdr1 $TEST_MDA_SIZE_BYTES
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0 $TEST_JSN_SIZE
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr1 $TMPDIR/json0 $TMPDIR/area1 $TEST_JSN_SIZE
|
|
+
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+
|
|
+ erase_checksum $TMPDIR/area1
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area1)
|
|
+ write_checksum $chks0 $TMPDIR/area1
|
|
+
|
|
+ kill_bin_hdr $TMPDIR/area1
|
|
+
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG $TEST_MDA_SIZE
|
|
+ write_luks2_hdr1 $TMPDIR/area1 $TGT_IMG $TEST_MDA_SIZE
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr_res1 $TEST_MDA_SIZE
|
|
+ local str_res1=$(head -c 6 $TMPDIR/hdr_res1)
|
|
+ test "$str_res1" = "VACUUM" || exit 2
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 $TEST_JSN_SIZE
|
|
+ jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \
|
|
+ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or
|
|
+ (.config.json_size != $jsize)
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-128k-secondary.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-128k-secondary.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-128k-secondary.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-128k-secondary.img.sh 2019-03-27 20:59:49.445269743 +0100
|
|
@@ -0,0 +1,97 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate secondary header with one of allowed json area
|
|
+# size values. Test whether auto-recovery code is able
|
|
+# to validate secondary header with non-default json area
|
|
+# size.
|
|
+#
|
|
+# primary header is corrupted on purpose.
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # 128 KiB metadata
|
|
+ TEST_MDA_SIZE=$LUKS2_HDR_SIZE_128K
|
|
+
|
|
+ TEST_MDA_SIZE_BYTES=$((TEST_MDA_SIZE*512))
|
|
+ TEST_JSN_SIZE=$((TEST_MDA_SIZE-LUKS2_BIN_HDR_SIZE))
|
|
+ KEYSLOTS_OFFSET=$((TEST_MDA_SIZE*1024))
|
|
+ JSON_DIFF=$(((TEST_MDA_SIZE-LUKS2_HDR_SIZE)*1024))
|
|
+ JSON_SIZE=$((TEST_JSN_SIZE*512))
|
|
+ DATA_OFFSET=16777216
|
|
+
|
|
+ json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \
|
|
+ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) |
|
|
+ .config.json_size = $jsize |
|
|
+ .segments."0".offset = $off' $TMPDIR/json0)
|
|
+ test -n "$json_str" || exit 2
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0 $TEST_JSN_SIZE
|
|
+
|
|
+ write_bin_hdr_size $TMPDIR/hdr0 $TEST_MDA_SIZE_BYTES
|
|
+ write_bin_hdr_size $TMPDIR/hdr1 $TEST_MDA_SIZE_BYTES
|
|
+
|
|
+ write_bin_hdr_offset $TMPDIR/hdr1 $TEST_MDA_SIZE_BYTES
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0 $TEST_JSN_SIZE
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr1 $TMPDIR/json0 $TMPDIR/area1 $TEST_JSN_SIZE
|
|
+
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+
|
|
+ erase_checksum $TMPDIR/area1
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area1)
|
|
+ write_checksum $chks0 $TMPDIR/area1
|
|
+
|
|
+ kill_bin_hdr $TMPDIR/area0
|
|
+
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG $TEST_MDA_SIZE
|
|
+ write_luks2_hdr1 $TMPDIR/area1 $TGT_IMG $TEST_MDA_SIZE
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr_res0 $TEST_MDA_SIZE
|
|
+ local str_res0=$(head -c 6 $TMPDIR/hdr_res0)
|
|
+ test "$str_res0" = "VACUUM" || exit 2
|
|
+ read_luks2_json1 $TGT_IMG $TMPDIR/json_res1 $TEST_JSN_SIZE
|
|
+ jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \
|
|
+ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or
|
|
+ (.config.json_size != $jsize)
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res1 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-16k-secondary.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-16k-secondary.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-16k-secondary.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-16k-secondary.img.sh 2019-03-27 20:59:49.446269734 +0100
|
|
@@ -0,0 +1,97 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate secondary header with one of allowed json area
|
|
+# size values. Test whether auto-recovery code is able
|
|
+# to validate secondary header with non-default json area
|
|
+# size.
|
|
+#
|
|
+# primary header is corrupted on purpose.
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # 16 KiB metadata
|
|
+ TEST_MDA_SIZE=$LUKS2_HDR_SIZE
|
|
+
|
|
+ TEST_MDA_SIZE_BYTES=$((TEST_MDA_SIZE*512))
|
|
+ TEST_JSN_SIZE=$((TEST_MDA_SIZE-LUKS2_BIN_HDR_SIZE))
|
|
+ KEYSLOTS_OFFSET=$((TEST_MDA_SIZE*1024))
|
|
+ JSON_DIFF=$(((TEST_MDA_SIZE-LUKS2_HDR_SIZE)*1024))
|
|
+ JSON_SIZE=$((TEST_JSN_SIZE*512))
|
|
+ DATA_OFFSET=16777216
|
|
+
|
|
+ json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \
|
|
+ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) |
|
|
+ .config.json_size = $jsize |
|
|
+ .segments."0".offset = $off' $TMPDIR/json0)
|
|
+ test -n "$json_str" || exit 2
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0 $TEST_JSN_SIZE
|
|
+
|
|
+ write_bin_hdr_size $TMPDIR/hdr0 $TEST_MDA_SIZE_BYTES
|
|
+ write_bin_hdr_size $TMPDIR/hdr1 $TEST_MDA_SIZE_BYTES
|
|
+
|
|
+ write_bin_hdr_offset $TMPDIR/hdr1 $TEST_MDA_SIZE_BYTES
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0 $TEST_JSN_SIZE
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr1 $TMPDIR/json0 $TMPDIR/area1 $TEST_JSN_SIZE
|
|
+
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+
|
|
+ erase_checksum $TMPDIR/area1
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area1)
|
|
+ write_checksum $chks0 $TMPDIR/area1
|
|
+
|
|
+ kill_bin_hdr $TMPDIR/area0
|
|
+
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG $TEST_MDA_SIZE
|
|
+ write_luks2_hdr1 $TMPDIR/area1 $TGT_IMG $TEST_MDA_SIZE
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr_res0 $TEST_MDA_SIZE
|
|
+ local str_res0=$(head -c 6 $TMPDIR/hdr_res0)
|
|
+ test "$str_res0" = "VACUUM" || exit 2
|
|
+ read_luks2_json1 $TGT_IMG $TMPDIR/json_res1 $TEST_JSN_SIZE
|
|
+ jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \
|
|
+ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or
|
|
+ (.config.json_size != $jsize)
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res1 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-2m.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-2m.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-2m.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-2m.img.sh 2019-03-27 20:59:49.446269734 +0100
|
|
@@ -0,0 +1,94 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate primary with predefined json_size. There's only limited
|
|
+# set of values allowed as json size in config section of LUKS2
|
|
+# metadata
|
|
+#
|
|
+# secondary header is corrupted on purpose as well
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # 2 MiB metadata
|
|
+ TEST_MDA_SIZE=$LUKS2_HDR_SIZE_2M
|
|
+
|
|
+ TEST_MDA_SIZE_BYTES=$((TEST_MDA_SIZE*512))
|
|
+ TEST_JSN_SIZE=$((TEST_MDA_SIZE-LUKS2_BIN_HDR_SIZE))
|
|
+ KEYSLOTS_OFFSET=$((TEST_MDA_SIZE*1024))
|
|
+ JSON_DIFF=$(((TEST_MDA_SIZE-LUKS2_HDR_SIZE)*1024))
|
|
+ JSON_SIZE=$((TEST_JSN_SIZE*512))
|
|
+ DATA_OFFSET=16777216
|
|
+
|
|
+ json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \
|
|
+ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) |
|
|
+ .config.json_size = $jsize |
|
|
+ .segments."0".offset = $off' $TMPDIR/json0)
|
|
+ test -n "$json_str" || exit 2
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0 $TEST_JSN_SIZE
|
|
+
|
|
+ write_bin_hdr_size $TMPDIR/hdr0 $TEST_MDA_SIZE_BYTES
|
|
+ write_bin_hdr_size $TMPDIR/hdr1 $TEST_MDA_SIZE_BYTES
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0 $TEST_JSN_SIZE
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr1 $TMPDIR/json0 $TMPDIR/area1 $TEST_JSN_SIZE
|
|
+
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+
|
|
+ erase_checksum $TMPDIR/area1
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area1)
|
|
+ write_checksum $chks0 $TMPDIR/area1
|
|
+
|
|
+ kill_bin_hdr $TMPDIR/area1
|
|
+
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG $TEST_MDA_SIZE
|
|
+ write_luks2_hdr1 $TMPDIR/area1 $TGT_IMG $TEST_MDA_SIZE
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr_res1 $TEST_MDA_SIZE
|
|
+ local str_res1=$(head -c 6 $TMPDIR/hdr_res1)
|
|
+ test "$str_res1" = "VACUUM" || exit 2
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 $TEST_JSN_SIZE
|
|
+ jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \
|
|
+ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or
|
|
+ (.config.json_size != $jsize)
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-2m-secondary.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-2m-secondary.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-2m-secondary.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-2m-secondary.img.sh 2019-03-27 20:59:49.447269724 +0100
|
|
@@ -0,0 +1,96 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate primary with predefined json_size. There's only limited
|
|
+# set of values allowed as json size in config section of LUKS2
|
|
+# metadata
|
|
+#
|
|
+# secondary header is corrupted on purpose as well
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # 2 MiB metadata
|
|
+ TEST_MDA_SIZE=$LUKS2_HDR_SIZE_2M
|
|
+
|
|
+ TEST_MDA_SIZE_BYTES=$((TEST_MDA_SIZE*512))
|
|
+ TEST_JSN_SIZE=$((TEST_MDA_SIZE-LUKS2_BIN_HDR_SIZE))
|
|
+ KEYSLOTS_OFFSET=$((TEST_MDA_SIZE*1024))
|
|
+ JSON_DIFF=$(((TEST_MDA_SIZE-LUKS2_HDR_SIZE)*1024))
|
|
+ JSON_SIZE=$((TEST_JSN_SIZE*512))
|
|
+ DATA_OFFSET=16777216
|
|
+
|
|
+ json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \
|
|
+ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) |
|
|
+ .config.json_size = $jsize |
|
|
+ .segments."0".offset = $off' $TMPDIR/json0)
|
|
+ test -n "$json_str" || exit 2
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0 $TEST_JSN_SIZE
|
|
+
|
|
+ write_bin_hdr_size $TMPDIR/hdr0 $TEST_MDA_SIZE_BYTES
|
|
+ write_bin_hdr_size $TMPDIR/hdr1 $TEST_MDA_SIZE_BYTES
|
|
+
|
|
+ write_bin_hdr_offset $TMPDIR/hdr1 $TEST_MDA_SIZE_BYTES
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0 $TEST_JSN_SIZE
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr1 $TMPDIR/json0 $TMPDIR/area1 $TEST_JSN_SIZE
|
|
+
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+
|
|
+ erase_checksum $TMPDIR/area1
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area1)
|
|
+ write_checksum $chks0 $TMPDIR/area1
|
|
+
|
|
+ kill_bin_hdr $TMPDIR/area0
|
|
+
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG $TEST_MDA_SIZE
|
|
+ write_luks2_hdr1 $TMPDIR/area1 $TGT_IMG $TEST_MDA_SIZE
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr_res0 $TEST_MDA_SIZE
|
|
+ local str_res0=$(head -c 6 $TMPDIR/hdr_res0)
|
|
+ test "$str_res0" = "VACUUM" || exit 2
|
|
+ read_luks2_json1 $TGT_IMG $TMPDIR/json_res1 $TEST_JSN_SIZE
|
|
+ jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \
|
|
+ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or
|
|
+ (.config.json_size != $jsize)
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res1 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-256k.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-256k.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-256k.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-256k.img.sh 2019-03-27 20:59:49.447269724 +0100
|
|
@@ -0,0 +1,94 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate primary with predefined json_size. There's only limited
|
|
+# set of values allowed as json size in config section of LUKS2
|
|
+# metadata
|
|
+#
|
|
+# secondary header is corrupted on purpose as well
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # 256KiB metadata
|
|
+ TEST_MDA_SIZE=$LUKS2_HDR_SIZE_256K
|
|
+
|
|
+ TEST_MDA_SIZE_BYTES=$((TEST_MDA_SIZE*512))
|
|
+ TEST_JSN_SIZE=$((TEST_MDA_SIZE-LUKS2_BIN_HDR_SIZE))
|
|
+ KEYSLOTS_OFFSET=$((TEST_MDA_SIZE*1024))
|
|
+ JSON_DIFF=$(((TEST_MDA_SIZE-LUKS2_HDR_SIZE)*1024))
|
|
+ JSON_SIZE=$((TEST_JSN_SIZE*512))
|
|
+ DATA_OFFSET=16777216
|
|
+
|
|
+ json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \
|
|
+ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) |
|
|
+ .config.json_size = $jsize |
|
|
+ .segments."0".offset = $off' $TMPDIR/json0)
|
|
+ test -n "$json_str" || exit 2
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0 $TEST_JSN_SIZE
|
|
+
|
|
+ write_bin_hdr_size $TMPDIR/hdr0 $TEST_MDA_SIZE_BYTES
|
|
+ write_bin_hdr_size $TMPDIR/hdr1 $TEST_MDA_SIZE_BYTES
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0 $TEST_JSN_SIZE
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr1 $TMPDIR/json0 $TMPDIR/area1 $TEST_JSN_SIZE
|
|
+
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+
|
|
+ erase_checksum $TMPDIR/area1
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area1)
|
|
+ write_checksum $chks0 $TMPDIR/area1
|
|
+
|
|
+ kill_bin_hdr $TMPDIR/area1
|
|
+
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG $TEST_MDA_SIZE
|
|
+ write_luks2_hdr1 $TMPDIR/area1 $TGT_IMG $TEST_MDA_SIZE
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr_res1 $TEST_MDA_SIZE
|
|
+ local str_res1=$(head -c 6 $TMPDIR/hdr_res1)
|
|
+ test "$str_res1" = "VACUUM" || exit 2
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 $TEST_JSN_SIZE
|
|
+ jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \
|
|
+ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or
|
|
+ (.config.json_size != $jsize)
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-256k-secondary.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-256k-secondary.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-256k-secondary.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-256k-secondary.img.sh 2019-03-27 20:59:49.448269714 +0100
|
|
@@ -0,0 +1,97 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate secondary header with one of allowed json area
|
|
+# size values. Test whether auto-recovery code is able
|
|
+# to validate secondary header with non-default json area
|
|
+# size.
|
|
+#
|
|
+# primary header is corrupted on purpose.
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # 256 KiB metadata
|
|
+ TEST_MDA_SIZE=$LUKS2_HDR_SIZE_256K
|
|
+
|
|
+ TEST_MDA_SIZE_BYTES=$((TEST_MDA_SIZE*512))
|
|
+ TEST_JSN_SIZE=$((TEST_MDA_SIZE-LUKS2_BIN_HDR_SIZE))
|
|
+ KEYSLOTS_OFFSET=$((TEST_MDA_SIZE*1024))
|
|
+ JSON_DIFF=$(((TEST_MDA_SIZE-LUKS2_HDR_SIZE)*1024))
|
|
+ JSON_SIZE=$((TEST_JSN_SIZE*512))
|
|
+ DATA_OFFSET=16777216
|
|
+
|
|
+ json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \
|
|
+ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) |
|
|
+ .config.json_size = $jsize |
|
|
+ .segments."0".offset = $off' $TMPDIR/json0)
|
|
+ test -n "$json_str" || exit 2
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0 $TEST_JSN_SIZE
|
|
+
|
|
+ write_bin_hdr_size $TMPDIR/hdr0 $TEST_MDA_SIZE_BYTES
|
|
+ write_bin_hdr_size $TMPDIR/hdr1 $TEST_MDA_SIZE_BYTES
|
|
+
|
|
+ write_bin_hdr_offset $TMPDIR/hdr1 $TEST_MDA_SIZE_BYTES
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0 $TEST_JSN_SIZE
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr1 $TMPDIR/json0 $TMPDIR/area1 $TEST_JSN_SIZE
|
|
+
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+
|
|
+ erase_checksum $TMPDIR/area1
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area1)
|
|
+ write_checksum $chks0 $TMPDIR/area1
|
|
+
|
|
+ kill_bin_hdr $TMPDIR/area0
|
|
+
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG $TEST_MDA_SIZE
|
|
+ write_luks2_hdr1 $TMPDIR/area1 $TGT_IMG $TEST_MDA_SIZE
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr_res0 $TEST_MDA_SIZE
|
|
+ local str_res0=$(head -c 6 $TMPDIR/hdr_res0)
|
|
+ test "$str_res0" = "VACUUM" || exit 2
|
|
+ read_luks2_json1 $TGT_IMG $TMPDIR/json_res1 $TEST_JSN_SIZE
|
|
+ jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \
|
|
+ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or
|
|
+ (.config.json_size != $jsize)
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res1 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-32k.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-32k.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-32k.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-32k.img.sh 2019-03-27 20:59:49.448269714 +0100
|
|
@@ -0,0 +1,94 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate primary header with non-default metadata json_size.
|
|
+# There's only limited set of values allowed as json size in
|
|
+# config section of LUKS2 metadata
|
|
+#
|
|
+# secondary header is corrupted on purpose as well
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # 32KiB metadata
|
|
+ TEST_MDA_SIZE=$LUKS2_HDR_SIZE_32K
|
|
+
|
|
+ TEST_MDA_SIZE_BYTES=$((TEST_MDA_SIZE*512))
|
|
+ TEST_JSN_SIZE=$((TEST_MDA_SIZE-LUKS2_BIN_HDR_SIZE))
|
|
+ KEYSLOTS_OFFSET=$((TEST_MDA_SIZE*1024))
|
|
+ JSON_DIFF=$(((TEST_MDA_SIZE-LUKS2_HDR_SIZE)*1024))
|
|
+ JSON_SIZE=$((TEST_JSN_SIZE*512))
|
|
+ DATA_OFFSET=16777216
|
|
+
|
|
+ json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \
|
|
+ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) |
|
|
+ .config.json_size = $jsize |
|
|
+ .segments."0".offset = $off' $TMPDIR/json0)
|
|
+ test -n "$json_str" || exit 2
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0 $TEST_JSN_SIZE
|
|
+
|
|
+ write_bin_hdr_size $TMPDIR/hdr0 $TEST_MDA_SIZE_BYTES
|
|
+ write_bin_hdr_size $TMPDIR/hdr1 $TEST_MDA_SIZE_BYTES
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0 $TEST_JSN_SIZE
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr1 $TMPDIR/json0 $TMPDIR/area1 $TEST_JSN_SIZE
|
|
+
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+
|
|
+ erase_checksum $TMPDIR/area1
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area1)
|
|
+ write_checksum $chks0 $TMPDIR/area1
|
|
+
|
|
+ kill_bin_hdr $TMPDIR/area1
|
|
+
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG $TEST_MDA_SIZE
|
|
+ write_luks2_hdr1 $TMPDIR/area1 $TGT_IMG $TEST_MDA_SIZE
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr_res1 $TEST_MDA_SIZE
|
|
+ local str_res1=$(head -c 6 $TMPDIR/hdr_res1)
|
|
+ test "$str_res1" = "VACUUM" || exit 2
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 $TEST_JSN_SIZE
|
|
+ jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \
|
|
+ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or
|
|
+ (.config.json_size != $jsize)
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-32k-secondary.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-32k-secondary.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-32k-secondary.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-32k-secondary.img.sh 2019-03-27 20:59:49.449269705 +0100
|
|
@@ -0,0 +1,97 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate secondary header with one of allowed json area
|
|
+# size values. Test whether auto-recovery code is able
|
|
+# to validate secondary header with non-default json area
|
|
+# size.
|
|
+#
|
|
+# primary header is corrupted on purpose.
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # 32 KiB metadata
|
|
+ TEST_MDA_SIZE=$LUKS2_HDR_SIZE_32K
|
|
+
|
|
+ TEST_MDA_SIZE_BYTES=$((TEST_MDA_SIZE*512))
|
|
+ TEST_JSN_SIZE=$((TEST_MDA_SIZE-LUKS2_BIN_HDR_SIZE))
|
|
+ KEYSLOTS_OFFSET=$((TEST_MDA_SIZE*1024))
|
|
+ JSON_DIFF=$(((TEST_MDA_SIZE-LUKS2_HDR_SIZE)*1024))
|
|
+ JSON_SIZE=$((TEST_JSN_SIZE*512))
|
|
+ DATA_OFFSET=16777216
|
|
+
|
|
+ json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \
|
|
+ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) |
|
|
+ .config.json_size = $jsize |
|
|
+ .segments."0".offset = $off' $TMPDIR/json0)
|
|
+ test -n "$json_str" || exit 2
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0 $TEST_JSN_SIZE
|
|
+
|
|
+ write_bin_hdr_size $TMPDIR/hdr0 $TEST_MDA_SIZE_BYTES
|
|
+ write_bin_hdr_size $TMPDIR/hdr1 $TEST_MDA_SIZE_BYTES
|
|
+
|
|
+ write_bin_hdr_offset $TMPDIR/hdr1 $TEST_MDA_SIZE_BYTES
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0 $TEST_JSN_SIZE
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr1 $TMPDIR/json0 $TMPDIR/area1 $TEST_JSN_SIZE
|
|
+
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+
|
|
+ erase_checksum $TMPDIR/area1
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area1)
|
|
+ write_checksum $chks0 $TMPDIR/area1
|
|
+
|
|
+ kill_bin_hdr $TMPDIR/area0
|
|
+
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG $TEST_MDA_SIZE
|
|
+ write_luks2_hdr1 $TMPDIR/area1 $TGT_IMG $TEST_MDA_SIZE
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr_res0 $TEST_MDA_SIZE
|
|
+ local str_res0=$(head -c 6 $TMPDIR/hdr_res0)
|
|
+ test "$str_res0" = "VACUUM" || exit 2
|
|
+ read_luks2_json1 $TGT_IMG $TMPDIR/json_res1 $TEST_JSN_SIZE
|
|
+ jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \
|
|
+ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or
|
|
+ (.config.json_size != $jsize)
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res1 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-4m.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-4m.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-4m.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-4m.img.sh 2019-03-27 20:59:49.449269705 +0100
|
|
@@ -0,0 +1,94 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate primary with predefined json_size. There's only limited
|
|
+# set of values allowed as json size in config section of LUKS2
|
|
+# metadata
|
|
+#
|
|
+# secondary header is corrupted on purpose as well
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # 4 MiB metadata
|
|
+ TEST_MDA_SIZE=$LUKS2_HDR_SIZE_4M
|
|
+
|
|
+ TEST_MDA_SIZE_BYTES=$((TEST_MDA_SIZE*512))
|
|
+ TEST_JSN_SIZE=$((TEST_MDA_SIZE-LUKS2_BIN_HDR_SIZE))
|
|
+ KEYSLOTS_OFFSET=$((TEST_MDA_SIZE*1024))
|
|
+ JSON_DIFF=$(((TEST_MDA_SIZE-LUKS2_HDR_SIZE)*1024))
|
|
+ JSON_SIZE=$((TEST_JSN_SIZE*512))
|
|
+ DATA_OFFSET=16777216
|
|
+
|
|
+ json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \
|
|
+ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) |
|
|
+ .config.json_size = $jsize |
|
|
+ .segments."0".offset = $off' $TMPDIR/json0)
|
|
+ test -n "$json_str" || exit 2
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0 $TEST_JSN_SIZE
|
|
+
|
|
+ write_bin_hdr_size $TMPDIR/hdr0 $TEST_MDA_SIZE_BYTES
|
|
+ write_bin_hdr_size $TMPDIR/hdr1 $TEST_MDA_SIZE_BYTES
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0 $TEST_JSN_SIZE
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr1 $TMPDIR/json0 $TMPDIR/area1 $TEST_JSN_SIZE
|
|
+
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+
|
|
+ erase_checksum $TMPDIR/area1
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area1)
|
|
+ write_checksum $chks0 $TMPDIR/area1
|
|
+
|
|
+ kill_bin_hdr $TMPDIR/area1
|
|
+
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG $TEST_MDA_SIZE
|
|
+ write_luks2_hdr1 $TMPDIR/area1 $TGT_IMG $TEST_MDA_SIZE
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr_res1 $TEST_MDA_SIZE
|
|
+ local str_res1=$(head -c 6 $TMPDIR/hdr_res1)
|
|
+ test "$str_res1" = "VACUUM" || exit 2
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 $TEST_JSN_SIZE
|
|
+ jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \
|
|
+ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or
|
|
+ (.config.json_size != $jsize)
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-4m-secondary.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-4m-secondary.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-4m-secondary.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-4m-secondary.img.sh 2019-03-27 20:59:49.450269695 +0100
|
|
@@ -0,0 +1,96 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate primary with predefined json_size. There's only limited
|
|
+# set of values allowed as json size in config section of LUKS2
|
|
+# metadata
|
|
+#
|
|
+# secondary header is corrupted on purpose as well
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # 4 MiB metadata
|
|
+ TEST_MDA_SIZE=$LUKS2_HDR_SIZE_4M
|
|
+
|
|
+ TEST_MDA_SIZE_BYTES=$((TEST_MDA_SIZE*512))
|
|
+ TEST_JSN_SIZE=$((TEST_MDA_SIZE-LUKS2_BIN_HDR_SIZE))
|
|
+ KEYSLOTS_OFFSET=$((TEST_MDA_SIZE*1024))
|
|
+ JSON_DIFF=$(((TEST_MDA_SIZE-LUKS2_HDR_SIZE)*1024))
|
|
+ JSON_SIZE=$((TEST_JSN_SIZE*512))
|
|
+ DATA_OFFSET=16777216
|
|
+
|
|
+ json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \
|
|
+ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) |
|
|
+ .config.json_size = $jsize |
|
|
+ .segments."0".offset = $off' $TMPDIR/json0)
|
|
+ test -n "$json_str" || exit 2
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0 $TEST_JSN_SIZE
|
|
+
|
|
+ write_bin_hdr_size $TMPDIR/hdr0 $TEST_MDA_SIZE_BYTES
|
|
+ write_bin_hdr_size $TMPDIR/hdr1 $TEST_MDA_SIZE_BYTES
|
|
+
|
|
+ write_bin_hdr_offset $TMPDIR/hdr1 $TEST_MDA_SIZE_BYTES
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0 $TEST_JSN_SIZE
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr1 $TMPDIR/json0 $TMPDIR/area1 $TEST_JSN_SIZE
|
|
+
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+
|
|
+ erase_checksum $TMPDIR/area1
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area1)
|
|
+ write_checksum $chks0 $TMPDIR/area1
|
|
+
|
|
+ kill_bin_hdr $TMPDIR/area0
|
|
+
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG $TEST_MDA_SIZE
|
|
+ write_luks2_hdr1 $TMPDIR/area1 $TGT_IMG $TEST_MDA_SIZE
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr_res0 $TEST_MDA_SIZE
|
|
+ local str_res0=$(head -c 6 $TMPDIR/hdr_res0)
|
|
+ test "$str_res0" = "VACUUM" || exit 2
|
|
+ read_luks2_json1 $TGT_IMG $TMPDIR/json_res1 $TEST_JSN_SIZE
|
|
+ jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \
|
|
+ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or
|
|
+ (.config.json_size != $jsize)
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res1 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-512k.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-512k.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-512k.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-512k.img.sh 2019-03-27 20:59:49.450269695 +0100
|
|
@@ -0,0 +1,94 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate primary with predefined json_size. There's only limited
|
|
+# set of values allowed as json size in config section of LUKS2
|
|
+# metadata
|
|
+#
|
|
+# secondary header is corrupted on purpose as well
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # 512KiB metadata
|
|
+ TEST_MDA_SIZE=$LUKS2_HDR_SIZE_512K
|
|
+
|
|
+ TEST_MDA_SIZE_BYTES=$((TEST_MDA_SIZE*512))
|
|
+ TEST_JSN_SIZE=$((TEST_MDA_SIZE-LUKS2_BIN_HDR_SIZE))
|
|
+ KEYSLOTS_OFFSET=$((TEST_MDA_SIZE*1024))
|
|
+ JSON_DIFF=$(((TEST_MDA_SIZE-LUKS2_HDR_SIZE)*1024))
|
|
+ JSON_SIZE=$((TEST_JSN_SIZE*512))
|
|
+ DATA_OFFSET=16777216
|
|
+
|
|
+ json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \
|
|
+ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) |
|
|
+ .config.json_size = $jsize |
|
|
+ .segments."0".offset = $off' $TMPDIR/json0)
|
|
+ test -n "$json_str" || exit 2
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0 $TEST_JSN_SIZE
|
|
+
|
|
+ write_bin_hdr_size $TMPDIR/hdr0 $TEST_MDA_SIZE_BYTES
|
|
+ write_bin_hdr_size $TMPDIR/hdr1 $TEST_MDA_SIZE_BYTES
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0 $TEST_JSN_SIZE
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr1 $TMPDIR/json0 $TMPDIR/area1 $TEST_JSN_SIZE
|
|
+
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+
|
|
+ erase_checksum $TMPDIR/area1
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area1)
|
|
+ write_checksum $chks0 $TMPDIR/area1
|
|
+
|
|
+ kill_bin_hdr $TMPDIR/area1
|
|
+
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG $TEST_MDA_SIZE
|
|
+ write_luks2_hdr1 $TMPDIR/area1 $TGT_IMG $TEST_MDA_SIZE
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr_res1 $TEST_MDA_SIZE
|
|
+ local str_res1=$(head -c 6 $TMPDIR/hdr_res1)
|
|
+ test "$str_res1" = "VACUUM" || exit 2
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 $TEST_JSN_SIZE
|
|
+ jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \
|
|
+ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or
|
|
+ (.config.json_size != $jsize)
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-512k-secondary.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-512k-secondary.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-512k-secondary.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-512k-secondary.img.sh 2019-03-27 20:59:49.451269685 +0100
|
|
@@ -0,0 +1,97 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate secondary header with one of allowed json area
|
|
+# size values. Test whether auto-recovery code is able
|
|
+# to validate secondary header with non-default json area
|
|
+# size.
|
|
+#
|
|
+# primary header is corrupted on purpose.
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # 512 KiB metadata
|
|
+ TEST_MDA_SIZE=$LUKS2_HDR_SIZE_512K
|
|
+
|
|
+ TEST_MDA_SIZE_BYTES=$((TEST_MDA_SIZE*512))
|
|
+ TEST_JSN_SIZE=$((TEST_MDA_SIZE-LUKS2_BIN_HDR_SIZE))
|
|
+ KEYSLOTS_OFFSET=$((TEST_MDA_SIZE*1024))
|
|
+ JSON_DIFF=$(((TEST_MDA_SIZE-LUKS2_HDR_SIZE)*1024))
|
|
+ JSON_SIZE=$((TEST_JSN_SIZE*512))
|
|
+ DATA_OFFSET=16777216
|
|
+
|
|
+ json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \
|
|
+ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) |
|
|
+ .config.json_size = $jsize |
|
|
+ .segments."0".offset = $off' $TMPDIR/json0)
|
|
+ test -n "$json_str" || exit 2
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0 $TEST_JSN_SIZE
|
|
+
|
|
+ write_bin_hdr_size $TMPDIR/hdr0 $TEST_MDA_SIZE_BYTES
|
|
+ write_bin_hdr_size $TMPDIR/hdr1 $TEST_MDA_SIZE_BYTES
|
|
+
|
|
+ write_bin_hdr_offset $TMPDIR/hdr1 $TEST_MDA_SIZE_BYTES
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0 $TEST_JSN_SIZE
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr1 $TMPDIR/json0 $TMPDIR/area1 $TEST_JSN_SIZE
|
|
+
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+
|
|
+ erase_checksum $TMPDIR/area1
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area1)
|
|
+ write_checksum $chks0 $TMPDIR/area1
|
|
+
|
|
+ kill_bin_hdr $TMPDIR/area0
|
|
+
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG $TEST_MDA_SIZE
|
|
+ write_luks2_hdr1 $TMPDIR/area1 $TGT_IMG $TEST_MDA_SIZE
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr_res0 $TEST_MDA_SIZE
|
|
+ local str_res0=$(head -c 6 $TMPDIR/hdr_res0)
|
|
+ test "$str_res0" = "VACUUM" || exit 2
|
|
+ read_luks2_json1 $TGT_IMG $TMPDIR/json_res1 $TEST_JSN_SIZE
|
|
+ jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \
|
|
+ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or
|
|
+ (.config.json_size != $jsize)
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res1 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-64k.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-64k.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-64k.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-64k.img.sh 2019-03-27 20:59:49.451269685 +0100
|
|
@@ -0,0 +1,94 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate primary with predefined json_size. There's only limited
|
|
+# set of values allowed as json size in config section of LUKS2
|
|
+# metadata
|
|
+#
|
|
+# secondary header is corrupted on purpose as well
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # 64KiB metadata
|
|
+ TEST_MDA_SIZE=$LUKS2_HDR_SIZE_64K
|
|
+
|
|
+ TEST_MDA_SIZE_BYTES=$((TEST_MDA_SIZE*512))
|
|
+ TEST_JSN_SIZE=$((TEST_MDA_SIZE-LUKS2_BIN_HDR_SIZE))
|
|
+ KEYSLOTS_OFFSET=$((TEST_MDA_SIZE*1024))
|
|
+ JSON_DIFF=$(((TEST_MDA_SIZE-LUKS2_HDR_SIZE)*1024))
|
|
+ JSON_SIZE=$((TEST_JSN_SIZE*512))
|
|
+ DATA_OFFSET=16777216
|
|
+
|
|
+ json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \
|
|
+ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) |
|
|
+ .config.json_size = $jsize |
|
|
+ .segments."0".offset = $off' $TMPDIR/json0)
|
|
+ test -n "$json_str" || exit 2
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0 $TEST_JSN_SIZE
|
|
+
|
|
+ write_bin_hdr_size $TMPDIR/hdr0 $TEST_MDA_SIZE_BYTES
|
|
+ write_bin_hdr_size $TMPDIR/hdr1 $TEST_MDA_SIZE_BYTES
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0 $TEST_JSN_SIZE
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr1 $TMPDIR/json0 $TMPDIR/area1 $TEST_JSN_SIZE
|
|
+
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+
|
|
+ erase_checksum $TMPDIR/area1
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area1)
|
|
+ write_checksum $chks0 $TMPDIR/area1
|
|
+
|
|
+ kill_bin_hdr $TMPDIR/area1
|
|
+
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG $TEST_MDA_SIZE
|
|
+ write_luks2_hdr1 $TMPDIR/area1 $TGT_IMG $TEST_MDA_SIZE
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr_res1 $TEST_MDA_SIZE
|
|
+ local str_res1=$(head -c 6 $TMPDIR/hdr_res1)
|
|
+ test "$str_res1" = "VACUUM" || exit 2
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 $TEST_JSN_SIZE
|
|
+ jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \
|
|
+ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or
|
|
+ (.config.json_size != $jsize)
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-64k-inv-area-c0.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-64k-inv-area-c0.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-64k-inv-area-c0.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-64k-inv-area-c0.img.sh 2019-03-27 20:59:49.452269675 +0100
|
|
@@ -0,0 +1,94 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate primary header with non-default metadata json_size
|
|
+# and keyslots area trespassing in json area.
|
|
+#
|
|
+# secondary header is corrupted on purpose as well
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # 64KiB metadata
|
|
+ TEST_MDA_SIZE=$LUKS2_HDR_SIZE_64K
|
|
+
|
|
+ TEST_MDA_SIZE_BYTES=$((TEST_MDA_SIZE*512))
|
|
+ TEST_JSN_SIZE=$((TEST_MDA_SIZE-LUKS2_BIN_HDR_SIZE))
|
|
+ KEYSLOTS_OFFSET=$((TEST_MDA_SIZE*1024-1))
|
|
+ # overlap in json area by exactly one byte
|
|
+ JSON_DIFF=$(((TEST_MDA_SIZE-LUKS2_HDR_SIZE)*1024-1))
|
|
+ JSON_SIZE=$((TEST_JSN_SIZE*512))
|
|
+ DATA_OFFSET=16777216
|
|
+
|
|
+ json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \
|
|
+ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) |
|
|
+ .config.json_size = $jsize |
|
|
+ .segments."0".offset = $off' $TMPDIR/json0)
|
|
+ test -n "$json_str" || exit 2
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0 $TEST_JSN_SIZE
|
|
+
|
|
+ write_bin_hdr_size $TMPDIR/hdr0 $TEST_MDA_SIZE_BYTES
|
|
+ write_bin_hdr_size $TMPDIR/hdr1 $TEST_MDA_SIZE_BYTES
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0 $TEST_JSN_SIZE
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr1 $TMPDIR/json0 $TMPDIR/area1 $TEST_JSN_SIZE
|
|
+
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+
|
|
+ erase_checksum $TMPDIR/area1
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area1)
|
|
+ write_checksum $chks0 $TMPDIR/area1
|
|
+
|
|
+ kill_bin_hdr $TMPDIR/area1
|
|
+
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG $TEST_MDA_SIZE
|
|
+ write_luks2_hdr1 $TMPDIR/area1 $TGT_IMG $TEST_MDA_SIZE
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr_res1 $TEST_MDA_SIZE
|
|
+ local str_res1=$(head -c 6 $TMPDIR/hdr_res1)
|
|
+ test "$str_res1" = "VACUUM" || exit 2
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 $TEST_JSN_SIZE
|
|
+ jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \
|
|
+ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or
|
|
+ (.config.json_size != $jsize)
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-64k-inv-area-c1.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-64k-inv-area-c1.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-64k-inv-area-c1.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-64k-inv-area-c1.img.sh 2019-03-27 20:59:49.452269675 +0100
|
|
@@ -0,0 +1,96 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate primary header with non-default metadata json_size
|
|
+# and keyslot area overflowing out of keyslots area.
|
|
+#
|
|
+# secondary header is corrupted on purpose as well
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # 64KiB metadata
|
|
+ TEST_MDA_SIZE=$LUKS2_HDR_SIZE_64K
|
|
+
|
|
+ TEST_MDA_SIZE_BYTES=$((TEST_MDA_SIZE*512))
|
|
+ TEST_JSN_SIZE=$((TEST_MDA_SIZE-LUKS2_BIN_HDR_SIZE))
|
|
+ KEYSLOTS_OFFSET=$((TEST_MDA_SIZE*1024))
|
|
+ JSON_DIFF=$(((TEST_MDA_SIZE-LUKS2_HDR_SIZE)*1024))
|
|
+ JSON_SIZE=$((TEST_JSN_SIZE*512))
|
|
+ DATA_OFFSET=16777216
|
|
+
|
|
+ json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \
|
|
+ --arg mda $((2*TEST_MDA_SIZE_BYTES)) \
|
|
+ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) |
|
|
+ .keyslots."7".area.offset = ( ((.config.keyslots_size | tonumber) + ($mda | tonumber) - (.keyslots."7".area.size | tonumber) + 1) | tostring ) |
|
|
+ .config.json_size = $jsize |
|
|
+ .segments."0".offset = $off' $TMPDIR/json0)
|
|
+ test -n "$json_str" || exit 2
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0 $TEST_JSN_SIZE
|
|
+
|
|
+ write_bin_hdr_size $TMPDIR/hdr0 $TEST_MDA_SIZE_BYTES
|
|
+ write_bin_hdr_size $TMPDIR/hdr1 $TEST_MDA_SIZE_BYTES
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0 $TEST_JSN_SIZE
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr1 $TMPDIR/json0 $TMPDIR/area1 $TEST_JSN_SIZE
|
|
+
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+
|
|
+ erase_checksum $TMPDIR/area1
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area1)
|
|
+ write_checksum $chks0 $TMPDIR/area1
|
|
+
|
|
+ kill_bin_hdr $TMPDIR/area1
|
|
+
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG $TEST_MDA_SIZE
|
|
+ write_luks2_hdr1 $TMPDIR/area1 $TGT_IMG $TEST_MDA_SIZE
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr_res1 $TEST_MDA_SIZE
|
|
+ local str_res1=$(head -c 6 $TMPDIR/hdr_res1)
|
|
+ test "$str_res1" = "VACUUM" || exit 2
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 $TEST_JSN_SIZE
|
|
+# .keyslots.7.area.offset = ( ((.config.keyslots_size | tonumber) + ($mda | tonumber) - (.keyslots.7.area.size | tonumber) + 1) | tostring ) |
|
|
+ jq -c --arg mda $((2*TEST_MDA_SIZE_BYTES)) --arg jsize $JSON_SIZE \
|
|
+ 'if (.keyslots."7".area.offset != ( ((.config.keyslots_size | tonumber) + ($mda | tonumber) - (.keyslots."7".area.size | tonumber) + 1) | tostring )) or
|
|
+ (.config.json_size != $jsize)
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-64k-inv-keyslots-size-c0.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-64k-inv-keyslots-size-c0.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-64k-inv-keyslots-size-c0.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-64k-inv-keyslots-size-c0.img.sh 2019-03-27 20:59:49.453269666 +0100
|
|
@@ -0,0 +1,96 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate primary with predefined json_size where keyslots size
|
|
+# overflows in data area (segment offset)
|
|
+#
|
|
+# secondary header is corrupted on purpose as well
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # 64KiB metadata
|
|
+ TEST_MDA_SIZE=$LUKS2_HDR_SIZE_64K
|
|
+
|
|
+ TEST_MDA_SIZE_BYTES=$((TEST_MDA_SIZE*512))
|
|
+ TEST_JSN_SIZE=$((TEST_MDA_SIZE-LUKS2_BIN_HDR_SIZE))
|
|
+ KEYSLOTS_OFFSET=$((TEST_MDA_SIZE*1024))
|
|
+ JSON_DIFF=$(((TEST_MDA_SIZE-LUKS2_HDR_SIZE)*1024))
|
|
+ JSON_SIZE=$((TEST_JSN_SIZE*512))
|
|
+ DATA_OFFSET=16777216
|
|
+
|
|
+ json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \
|
|
+ --arg mda $((2*TEST_MDA_SIZE_BYTES)) \
|
|
+ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) |
|
|
+ .config.json_size = $jsize |
|
|
+ .config.keyslots_size = (((($off | tonumber) - ($mda | tonumber) + 4096)) | tostring ) |
|
|
+ .segments."0".offset = $off' $TMPDIR/json0)
|
|
+ test -n "$json_str" || exit 2
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0 $TEST_JSN_SIZE
|
|
+
|
|
+ write_bin_hdr_size $TMPDIR/hdr0 $TEST_MDA_SIZE_BYTES
|
|
+ write_bin_hdr_size $TMPDIR/hdr1 $TEST_MDA_SIZE_BYTES
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0 $TEST_JSN_SIZE
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr1 $TMPDIR/json0 $TMPDIR/area1 $TEST_JSN_SIZE
|
|
+
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+
|
|
+ erase_checksum $TMPDIR/area1
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area1)
|
|
+ write_checksum $chks0 $TMPDIR/area1
|
|
+
|
|
+ kill_bin_hdr $TMPDIR/area1
|
|
+
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG $TEST_MDA_SIZE
|
|
+ write_luks2_hdr1 $TMPDIR/area1 $TGT_IMG $TEST_MDA_SIZE
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr_res1 $TEST_MDA_SIZE
|
|
+ local str_res1=$(head -c 6 $TMPDIR/hdr_res1)
|
|
+ test "$str_res1" = "VACUUM" || exit 2
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json_res0 $TEST_JSN_SIZE
|
|
+ jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE --arg off $DATA_OFFSET --arg mda $((2*TEST_MDA_SIZE_BYTES)) \
|
|
+ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or
|
|
+ (.config.json_size != $jsize) or
|
|
+ (.config.keyslots_size != (((($off | tonumber) - ($mda | tonumber) + 4096)) | tostring ))
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-64k-secondary.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-64k-secondary.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-metadata-size-64k-secondary.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-metadata-size-64k-secondary.img.sh 2019-03-27 20:59:49.453269666 +0100
|
|
@@ -0,0 +1,97 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate secondary header with one of allowed json area
|
|
+# size values. Test whether auto-recovery code is able
|
|
+# to validate secondary header with non-default json area
|
|
+# size.
|
|
+#
|
|
+# primary header is corrupted on purpose.
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # 64 KiB metadata
|
|
+ TEST_MDA_SIZE=$LUKS2_HDR_SIZE_64K
|
|
+
|
|
+ TEST_MDA_SIZE_BYTES=$((TEST_MDA_SIZE*512))
|
|
+ TEST_JSN_SIZE=$((TEST_MDA_SIZE-LUKS2_BIN_HDR_SIZE))
|
|
+ KEYSLOTS_OFFSET=$((TEST_MDA_SIZE*1024))
|
|
+ JSON_DIFF=$(((TEST_MDA_SIZE-LUKS2_HDR_SIZE)*1024))
|
|
+ JSON_SIZE=$((TEST_JSN_SIZE*512))
|
|
+ DATA_OFFSET=16777216
|
|
+
|
|
+ json_str=$(jq -c --arg jdiff $JSON_DIFF --arg jsize $JSON_SIZE --arg off $DATA_OFFSET \
|
|
+ '.keyslots[].area.offset |= ( . | tonumber + ($jdiff | tonumber) | tostring) |
|
|
+ .config.json_size = $jsize |
|
|
+ .segments."0".offset = $off' $TMPDIR/json0)
|
|
+ test -n "$json_str" || exit 2
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0 $TEST_JSN_SIZE
|
|
+
|
|
+ write_bin_hdr_size $TMPDIR/hdr0 $TEST_MDA_SIZE_BYTES
|
|
+ write_bin_hdr_size $TMPDIR/hdr1 $TEST_MDA_SIZE_BYTES
|
|
+
|
|
+ write_bin_hdr_offset $TMPDIR/hdr1 $TEST_MDA_SIZE_BYTES
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0 $TEST_JSN_SIZE
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr1 $TMPDIR/json0 $TMPDIR/area1 $TEST_JSN_SIZE
|
|
+
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+
|
|
+ erase_checksum $TMPDIR/area1
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area1)
|
|
+ write_checksum $chks0 $TMPDIR/area1
|
|
+
|
|
+ kill_bin_hdr $TMPDIR/area0
|
|
+
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG $TEST_MDA_SIZE
|
|
+ write_luks2_hdr1 $TMPDIR/area1 $TGT_IMG $TEST_MDA_SIZE
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr_res0 $TEST_MDA_SIZE
|
|
+ local str_res0=$(head -c 6 $TMPDIR/hdr_res0)
|
|
+ test "$str_res0" = "VACUUM" || exit 2
|
|
+ read_luks2_json1 $TGT_IMG $TMPDIR/json_res1 $TEST_JSN_SIZE
|
|
+ jq -c --arg koff $KEYSLOTS_OFFSET --arg jsize $JSON_SIZE \
|
|
+ 'if ([.keyslots[].area.offset] | map(tonumber) | min | tostring != $koff) or
|
|
+ (.config.json_size != $jsize)
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res1 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-crypt-missing-encryption.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-segment-crypt-missing-encryption.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-crypt-missing-encryption.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-segment-crypt-missing-encryption.img.sh 2019-03-27 20:59:49.454269656 +0100
|
|
@@ -0,0 +1,67 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate primary header with segment encryption field missing
|
|
+#
|
|
+# secondary header is corrupted on purpose as well
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # remove mandatory encryption field
|
|
+ json_str=$(jq -c 'del(.segments."0".encryption)' $TMPDIR/json0)
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG
|
|
+ kill_bin_hdr $TMPDIR/hdr1
|
|
+ write_luks2_hdr1 $TMPDIR/hdr1 $TGT_IMG
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr_res1
|
|
+ local str_res1=$(head -c 6 $TMPDIR/hdr_res1)
|
|
+ test "$str_res1" = "VACUUM" || exit 2
|
|
+
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json_res0
|
|
+ jq -c 'if .segments."0".encryption
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-crypt-missing-ivoffset.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-segment-crypt-missing-ivoffset.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-crypt-missing-ivoffset.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-segment-crypt-missing-ivoffset.img.sh 2019-03-27 20:59:49.454269656 +0100
|
|
@@ -0,0 +1,67 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate primary header with segment iv_tweak field missing
|
|
+#
|
|
+# secondary header is corrupted on purpose as well
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # remove mandatory encryption field
|
|
+ json_str=$(jq -c 'del(.segments."0".iv_tweak)' $TMPDIR/json0)
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG
|
|
+ kill_bin_hdr $TMPDIR/hdr1
|
|
+ write_luks2_hdr1 $TMPDIR/hdr1 $TGT_IMG
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr_res1
|
|
+ local str_res1=$(head -c 6 $TMPDIR/hdr_res1)
|
|
+ test "$str_res1" = "VACUUM" || exit 2
|
|
+
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json_res0
|
|
+ jq -c 'if .segments."0".iv_tweak
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-crypt-missing-sectorsize.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-segment-crypt-missing-sectorsize.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-crypt-missing-sectorsize.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-segment-crypt-missing-sectorsize.img.sh 2019-03-27 20:59:49.455269646 +0100
|
|
@@ -0,0 +1,67 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate primary header with segment sector_size field missing
|
|
+#
|
|
+# secondary header is corrupted on purpose as well
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # remove mandatory encryption field
|
|
+ json_str=$(jq -c 'del(.segments."0".sector_size)' $TMPDIR/json0)
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG
|
|
+ kill_bin_hdr $TMPDIR/hdr1
|
|
+ write_luks2_hdr1 $TMPDIR/hdr1 $TGT_IMG
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr_res1
|
|
+ local str_res1=$(head -c 6 $TMPDIR/hdr_res1)
|
|
+ test "$str_res1" = "VACUUM" || exit 2
|
|
+
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json_res0
|
|
+ jq -c 'if .segments."0".sector_size
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-crypt-wrong-encryption.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-segment-crypt-wrong-encryption.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-crypt-wrong-encryption.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-segment-crypt-wrong-encryption.img.sh 2019-03-27 20:59:49.455269646 +0100
|
|
@@ -0,0 +1,67 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate primary header with segment wrong encryption field
|
|
+#
|
|
+# secondary header is corrupted on purpose as well
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # remove mandatory encryption field
|
|
+ json_str=$(jq -c '.segments."0".encryption = {}' $TMPDIR/json0)
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG
|
|
+ kill_bin_hdr $TMPDIR/hdr1
|
|
+ write_luks2_hdr1 $TMPDIR/hdr1 $TGT_IMG
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr_res1
|
|
+ local str_res1=$(head -c 6 $TMPDIR/hdr_res1)
|
|
+ test "$str_res1" = "VACUUM" || exit 2
|
|
+
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json_res0
|
|
+ jq -c 'if .segments."0".encryption | type != "object"
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-crypt-wrong-ivoffset.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-segment-crypt-wrong-ivoffset.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-crypt-wrong-ivoffset.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-segment-crypt-wrong-ivoffset.img.sh 2019-03-27 20:59:49.456269637 +0100
|
|
@@ -0,0 +1,67 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate primary header with segment iv_tweak field missing
|
|
+#
|
|
+# secondary header is corrupted on purpose as well
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # remove mandatory encryption field
|
|
+ json_str=$(jq -c '.segments."0".iv_tweak = "dynamic"' $TMPDIR/json0)
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG
|
|
+ kill_bin_hdr $TMPDIR/hdr1
|
|
+ write_luks2_hdr1 $TMPDIR/hdr1 $TGT_IMG
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr_res1
|
|
+ local str_res1=$(head -c 6 $TMPDIR/hdr_res1)
|
|
+ test "$str_res1" = "VACUUM" || exit 2
|
|
+
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json_res0
|
|
+ jq -c 'if .segments."0".iv_tweak != "dynamic"
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-crypt-wrong-sectorsize-0.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-segment-crypt-wrong-sectorsize-0.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-crypt-wrong-sectorsize-0.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-segment-crypt-wrong-sectorsize-0.img.sh 2019-03-27 20:59:49.456269637 +0100
|
|
@@ -0,0 +1,67 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate primary header with wrong segment sector_size field
|
|
+#
|
|
+# secondary header is corrupted on purpose as well
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # remove mandatory encryption field
|
|
+ json_str=$(jq -c '.segments."0".sector_size = 1023' $TMPDIR/json0)
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG
|
|
+ kill_bin_hdr $TMPDIR/hdr1
|
|
+ write_luks2_hdr1 $TMPDIR/hdr1 $TGT_IMG
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr_res1
|
|
+ local str_res1=$(head -c 6 $TMPDIR/hdr_res1)
|
|
+ test "$str_res1" = "VACUUM" || exit 2
|
|
+
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json_res0
|
|
+ jq -c 'if .segments."0".sector_size != 1023
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-crypt-wrong-sectorsize-1.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-segment-crypt-wrong-sectorsize-1.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-crypt-wrong-sectorsize-1.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-segment-crypt-wrong-sectorsize-1.img.sh 2019-03-27 20:59:49.457269627 +0100
|
|
@@ -0,0 +1,67 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate primary header with wrong segment sector_size field
|
|
+#
|
|
+# secondary header is corrupted on purpose as well
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # remove mandatory encryption field
|
|
+ json_str=$(jq -c '.segments."0".sector_size = "4096"' $TMPDIR/json0)
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG
|
|
+ kill_bin_hdr $TMPDIR/hdr1
|
|
+ write_luks2_hdr1 $TMPDIR/hdr1 $TGT_IMG
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr_res1
|
|
+ local str_res1=$(head -c 6 $TMPDIR/hdr_res1)
|
|
+ test "$str_res1" = "VACUUM" || exit 2
|
|
+
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json_res0
|
|
+ jq -c 'if .segments."0".sector_size != "4096"
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-crypt-wrong-sectorsize-2.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-segment-crypt-wrong-sectorsize-2.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-crypt-wrong-sectorsize-2.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-segment-crypt-wrong-sectorsize-2.img.sh 2019-03-27 20:59:49.457269627 +0100
|
|
@@ -0,0 +1,67 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate primary header with wrong segment sector_size field
|
|
+#
|
|
+# secondary header is corrupted on purpose as well
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # remove mandatory encryption field
|
|
+ json_str=$(jq -c '.segments."0".sector_size = -1024' $TMPDIR/json0)
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG
|
|
+ kill_bin_hdr $TMPDIR/hdr1
|
|
+ write_luks2_hdr1 $TMPDIR/hdr1 $TGT_IMG
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr_res1
|
|
+ local str_res1=$(head -c 6 $TMPDIR/hdr_res1)
|
|
+ test "$str_res1" = "VACUUM" || exit 2
|
|
+
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json_res0
|
|
+ jq -c 'if .segments."0".sector_size != -1024
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-missing-offset.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-segment-missing-offset.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-missing-offset.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-segment-missing-offset.img.sh 2019-03-27 20:59:49.458269617 +0100
|
|
@@ -0,0 +1,67 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate primary header with segment offset field missing
|
|
+#
|
|
+# secondary header is corrupted on purpose as well
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # remove mandatory encryption field
|
|
+ json_str=$(jq -c 'del(.segments."0".offset)' $TMPDIR/json0)
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG
|
|
+ kill_bin_hdr $TMPDIR/hdr1
|
|
+ write_luks2_hdr1 $TMPDIR/hdr1 $TGT_IMG
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr_res1
|
|
+ local str_res1=$(head -c 6 $TMPDIR/hdr_res1)
|
|
+ test "$str_res1" = "VACUUM" || exit 2
|
|
+
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json_res0
|
|
+ jq -c 'if .segments."0".offset
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-missing-size.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-segment-missing-size.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-missing-size.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-segment-missing-size.img.sh 2019-03-27 20:59:49.458269617 +0100
|
|
@@ -0,0 +1,67 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate primary header with segment size field missing
|
|
+#
|
|
+# secondary header is corrupted on purpose as well
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # remove mandatory encryption field
|
|
+ json_str=$(jq -c 'del(.segments."0".size)' $TMPDIR/json0)
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG
|
|
+ kill_bin_hdr $TMPDIR/hdr1
|
|
+ write_luks2_hdr1 $TMPDIR/hdr1 $TGT_IMG
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr_res1
|
|
+ local str_res1=$(head -c 6 $TMPDIR/hdr_res1)
|
|
+ test "$str_res1" = "VACUUM" || exit 2
|
|
+
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json_res0
|
|
+ jq -c 'if .segments."0".size
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-missing-type.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-segment-missing-type.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-missing-type.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-segment-missing-type.img.sh 2019-03-27 20:59:49.459269608 +0100
|
|
@@ -0,0 +1,67 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate primary header with segment type field missing
|
|
+#
|
|
+# secondary header is corrupted on purpose as well
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # remove mandatory encryption field
|
|
+ json_str=$(jq -c 'del(.segments."0".type)' $TMPDIR/json0)
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG
|
|
+ kill_bin_hdr $TMPDIR/hdr1
|
|
+ write_luks2_hdr1 $TMPDIR/hdr1 $TGT_IMG
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr_res1
|
|
+ local str_res1=$(head -c 6 $TMPDIR/hdr_res1)
|
|
+ test "$str_res1" = "VACUUM" || exit 2
|
|
+
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json_res0
|
|
+ jq -c 'if .segments."0".type
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-two.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-segment-two.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-two.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-segment-two.img.sh 2019-03-27 20:59:49.459269608 +0100
|
|
@@ -0,0 +1,67 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate primary header with two segments
|
|
+#
|
|
+# secondary header is corrupted on purpose as well
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # remove mandatory encryption field
|
|
+ json_str=$(jq -c '.segments."0".size = "512" | .segments."1" = {type:"some", offset: (.segments."0".offset | tonumber + 512 | tostring), size: "dynamic"}' $TMPDIR/json0)
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG
|
|
+ kill_bin_hdr $TMPDIR/hdr1
|
|
+ write_luks2_hdr1 $TMPDIR/hdr1 $TGT_IMG
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr_res1
|
|
+ local str_res1=$(head -c 6 $TMPDIR/hdr_res1)
|
|
+ test "$str_res1" = "VACUUM" || exit 2
|
|
+
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json_res0
|
|
+ jq -c 'if .segments."1" | type != "object"
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-unknown-type.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-segment-unknown-type.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-unknown-type.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-segment-unknown-type.img.sh 2019-03-27 20:59:49.459269608 +0100
|
|
@@ -0,0 +1,68 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate primary header with generic (unknown) segment type.
|
|
+# It should pass the validation.
|
|
+#
|
|
+# secondary header is corrupted on purpose as well
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # remove mandatory encryption field
|
|
+ json_str=$(jq -c '.segments."0" = {type:"some_type", offset: .segments."0".offset, size: .segments."0".size, a_field:0}' $TMPDIR/json0)
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG
|
|
+ kill_bin_hdr $TMPDIR/hdr1
|
|
+ write_luks2_hdr1 $TMPDIR/hdr1 $TGT_IMG
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr_res1
|
|
+ local str_res1=$(head -c 6 $TMPDIR/hdr_res1)
|
|
+ test "$str_res1" = "VACUUM" || exit 2
|
|
+
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json_res0
|
|
+ jq -c 'if .segments."0".type != "some_type"
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-wrong-flags-element.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-segment-wrong-flags-element.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-wrong-flags-element.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-segment-wrong-flags-element.img.sh 2019-03-27 20:59:49.460269598 +0100
|
|
@@ -0,0 +1,67 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate primary header with segment flags containing invalid type
|
|
+#
|
|
+# secondary header is corrupted on purpose as well
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # remove mandatory encryption field
|
|
+ json_str=$(jq -c '.segments."0".flags = [ "hello", 1 ]' $TMPDIR/json0)
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG
|
|
+ kill_bin_hdr $TMPDIR/hdr1
|
|
+ write_luks2_hdr1 $TMPDIR/hdr1 $TGT_IMG
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr_res1
|
|
+ local str_res1=$(head -c 6 $TMPDIR/hdr_res1)
|
|
+ test "$str_res1" = "VACUUM" || exit 2
|
|
+
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json_res0
|
|
+ jq -c 'if .segments."0".flags != [ "hello", 1 ]
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-wrong-flags.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-segment-wrong-flags.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-wrong-flags.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-segment-wrong-flags.img.sh 2019-03-27 20:59:49.461269588 +0100
|
|
@@ -0,0 +1,67 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate primary header with segment flags field of invalid type
|
|
+#
|
|
+# secondary header is corrupted on purpose as well
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # remove mandatory encryption field
|
|
+ json_str=$(jq -c '.segments."0".flags = "hello"' $TMPDIR/json0)
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG
|
|
+ kill_bin_hdr $TMPDIR/hdr1
|
|
+ write_luks2_hdr1 $TMPDIR/hdr1 $TGT_IMG
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr_res1
|
|
+ local str_res1=$(head -c 6 $TMPDIR/hdr_res1)
|
|
+ test "$str_res1" = "VACUUM" || exit 2
|
|
+
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json_res0
|
|
+ jq -c 'if .segments."0".flags != "hello"
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-wrong-offset.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-segment-wrong-offset.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-wrong-offset.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-segment-wrong-offset.img.sh 2019-03-27 20:59:49.461269588 +0100
|
|
@@ -0,0 +1,67 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate primary header with wrong segment offset field
|
|
+#
|
|
+# secondary header is corrupted on purpose as well
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # remove mandatory encryption field
|
|
+ json_str=$(jq -c '.segments."0".offset = "-42"' $TMPDIR/json0)
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG
|
|
+ kill_bin_hdr $TMPDIR/hdr1
|
|
+ write_luks2_hdr1 $TMPDIR/hdr1 $TGT_IMG
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr_res1
|
|
+ local str_res1=$(head -c 6 $TMPDIR/hdr_res1)
|
|
+ test "$str_res1" = "VACUUM" || exit 2
|
|
+
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json_res0
|
|
+ jq -c 'if .segments."0".offset != "-42"
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-wrong-size-0.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-segment-wrong-size-0.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-wrong-size-0.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-segment-wrong-size-0.img.sh 2019-03-27 20:59:49.462269579 +0100
|
|
@@ -0,0 +1,67 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate primary header with wrong segment size field
|
|
+#
|
|
+# secondary header is corrupted on purpose as well
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # remove mandatory encryption field
|
|
+ json_str=$(jq -c '.segments."0".size = 4096' $TMPDIR/json0)
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG
|
|
+ kill_bin_hdr $TMPDIR/hdr1
|
|
+ write_luks2_hdr1 $TMPDIR/hdr1 $TGT_IMG
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr_res1
|
|
+ local str_res1=$(head -c 6 $TMPDIR/hdr_res1)
|
|
+ test "$str_res1" = "VACUUM" || exit 2
|
|
+
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json_res0
|
|
+ jq -c 'if .segments."0".size != 4096
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-wrong-size-1.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-segment-wrong-size-1.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-wrong-size-1.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-segment-wrong-size-1.img.sh 2019-03-27 20:59:49.462269579 +0100
|
|
@@ -0,0 +1,67 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate primary header with wrong segment size field
|
|
+#
|
|
+# secondary header is corrupted on purpose as well
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # remove mandatory encryption field
|
|
+ json_str=$(jq -c '.segments."0".size = "automatic"' $TMPDIR/json0)
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG
|
|
+ kill_bin_hdr $TMPDIR/hdr1
|
|
+ write_luks2_hdr1 $TMPDIR/hdr1 $TGT_IMG
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr_res1
|
|
+ local str_res1=$(head -c 6 $TMPDIR/hdr_res1)
|
|
+ test "$str_res1" = "VACUUM" || exit 2
|
|
+
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json_res0
|
|
+ jq -c 'if .segments."0".size != "automatic"
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-wrong-size-2.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-segment-wrong-size-2.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-wrong-size-2.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-segment-wrong-size-2.img.sh 2019-03-27 20:59:49.463269569 +0100
|
|
@@ -0,0 +1,67 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate primary header with wrong segment size field
|
|
+#
|
|
+# secondary header is corrupted on purpose as well
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # remove mandatory encryption field
|
|
+ json_str=$(jq -c '.segments."0".size = "511"' $TMPDIR/json0)
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG
|
|
+ kill_bin_hdr $TMPDIR/hdr1
|
|
+ write_luks2_hdr1 $TMPDIR/hdr1 $TGT_IMG
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr_res1
|
|
+ local str_res1=$(head -c 6 $TMPDIR/hdr_res1)
|
|
+ test "$str_res1" = "VACUUM" || exit 2
|
|
+
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json_res0
|
|
+ jq -c 'if .segments."0".size != "511"
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-wrong-type.img.sh cryptsetup-2.0.3/tests/generators/generate-luks2-segment-wrong-type.img.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/generate-luks2-segment-wrong-type.img.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/generate-luks2-segment-wrong-type.img.sh 2019-03-27 20:59:49.463269569 +0100
|
|
@@ -0,0 +1,67 @@
|
|
+#!/bin/bash
|
|
+
|
|
+. lib.sh
|
|
+
|
|
+#
|
|
+# *** Description ***
|
|
+#
|
|
+# generate primary header with wrong segment type field
|
|
+#
|
|
+# secondary header is corrupted on purpose as well
|
|
+#
|
|
+
|
|
+# $1 full target dir
|
|
+# $2 full source luks2 image
|
|
+
|
|
+function prepare()
|
|
+{
|
|
+ cp $SRC_IMG $TGT_IMG
|
|
+ test -d $TMPDIR || mkdir $TMPDIR
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json0
|
|
+ read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
|
|
+}
|
|
+
|
|
+function generate()
|
|
+{
|
|
+ # remove mandatory encryption field
|
|
+ json_str=$(jq -c '.segments."0".type = 42' $TMPDIR/json0)
|
|
+ test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
|
|
+
|
|
+ write_luks2_json "$json_str" $TMPDIR/json0
|
|
+
|
|
+ merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0
|
|
+ erase_checksum $TMPDIR/area0
|
|
+ chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
|
|
+ write_checksum $chks0 $TMPDIR/area0
|
|
+ write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG
|
|
+ kill_bin_hdr $TMPDIR/hdr1
|
|
+ write_luks2_hdr1 $TMPDIR/hdr1 $TGT_IMG
|
|
+}
|
|
+
|
|
+function check()
|
|
+{
|
|
+ read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr_res1
|
|
+ local str_res1=$(head -c 6 $TMPDIR/hdr_res1)
|
|
+ test "$str_res1" = "VACUUM" || exit 2
|
|
+
|
|
+ read_luks2_json0 $TGT_IMG $TMPDIR/json_res0
|
|
+ jq -c 'if .segments."0".type != 42
|
|
+ then error("Unexpected value in result json") else empty end' $TMPDIR/json_res0 || exit 5
|
|
+}
|
|
+
|
|
+function cleanup()
|
|
+{
|
|
+ rm -f $TMPDIR/*
|
|
+ rm -fd $TMPDIR
|
|
+}
|
|
+
|
|
+test $# -eq 2 || exit 1
|
|
+
|
|
+TGT_IMG=$1/$(test_img_name $0)
|
|
+SRC_IMG=$2
|
|
+
|
|
+prepare
|
|
+generate
|
|
+check
|
|
+cleanup
|
|
diff -rupN cryptsetup-2.0.3.old/tests/generators/lib.sh cryptsetup-2.0.3/tests/generators/lib.sh
|
|
--- cryptsetup-2.0.3.old/tests/generators/lib.sh 2019-03-27 20:59:31.664442127 +0100
|
|
+++ cryptsetup-2.0.3/tests/generators/lib.sh 2019-03-27 20:59:49.464269559 +0100
|
|
@@ -1,9 +1,17 @@
|
|
#!/bin/bash
|
|
|
|
-# all in 512 bytes blocks
|
|
-# LUKS2 with 16KiB header
|
|
-LUKS2_HDR_SIZE=32 # 16 KiB
|
|
-LUKS2_BIN_HDR_SIZE=8 # 4096 B
|
|
+# all in 512 bytes blocks (including binary hdr (4KiB))
|
|
+LUKS2_HDR_SIZE=32 # 16 KiB
|
|
+LUKS2_HDR_SIZE_32K=64 # 32 KiB
|
|
+LUKS2_HDR_SIZE_64K=128 # 64 KiB
|
|
+LUKS2_HDR_SIZE_128K=256 # 128 KiB
|
|
+LUKS2_HDR_SIZE_256K=512 # 256 KiB
|
|
+LUKS2_HDR_SIZE_512K=1024 # 512 KiB
|
|
+LUKS2_HDR_SIZE_1M=2048 # 1 MiB
|
|
+LUKS2_HDR_SIZE_2M=4096 # 2 MiB
|
|
+LUKS2_HDR_SIZE_4M=8192 # 4 MiB
|
|
+
|
|
+LUKS2_BIN_HDR_SIZE=8 # 4 KiB
|
|
LUKS2_JSON_SIZE=$((LUKS2_HDR_SIZE-LUKS2_BIN_HDR_SIZE))
|
|
|
|
LUKS2_BIN_HDR_CHKS_OFFSET=0x1C0
|
|
@@ -30,57 +38,88 @@ function test_img_name()
|
|
echo $str
|
|
}
|
|
|
|
+# read primary bin hdr
|
|
+# 1:from 2:to
|
|
function read_luks2_bin_hdr0()
|
|
{
|
|
_dd if=$1 of=$2 bs=512 count=$LUKS2_BIN_HDR_SIZE
|
|
}
|
|
|
|
+# read primary json area
|
|
+# 1:from 2:to 3:[json only size (defaults to 12KiB)]
|
|
function read_luks2_json0()
|
|
{
|
|
- _dd if=$1 of=$2 bs=512 skip=$LUKS2_BIN_HDR_SIZE count=$LUKS2_JSON_SIZE
|
|
+ local _js=${4:-$LUKS2_JSON_SIZE}
|
|
+ local _js=$((_js*512/4096))
|
|
+ _dd if=$1 of=$2 bs=4096 skip=1 count=$_js
|
|
}
|
|
|
|
+# read secondary bin hdr
|
|
+# 1:from 2:to 3:[metadata size (defaults to 16KiB)]
|
|
function read_luks2_bin_hdr1()
|
|
{
|
|
- _dd if=$1 of=$2 skip=$LUKS2_HDR_SIZE bs=512 count=$LUKS2_BIN_HDR_SIZE
|
|
+ _dd if=$1 of=$2 skip=${3:-$LUKS2_HDR_SIZE} bs=512 count=$LUKS2_BIN_HDR_SIZE
|
|
}
|
|
|
|
+# read secondary json area
|
|
+# 1:from 2:to 3:[json only size (defaults to 12KiB)]
|
|
function read_luks2_json1()
|
|
{
|
|
- _dd if=$1 of=$2 bs=512 skip=$((LUKS2_BIN_HDR_SIZE+LUKS2_HDR_SIZE)) count=$LUKS2_JSON_SIZE
|
|
+ local _js=${3:-$LUKS2_JSON_SIZE}
|
|
+ _dd if=$1 of=$2 bs=512 skip=$((2*LUKS2_BIN_HDR_SIZE+_js)) count=$_js
|
|
}
|
|
|
|
+# read primary metadata area (bin + json)
|
|
+# 1:from 2:to 3:[metadata size (defaults to 16KiB)]
|
|
function read_luks2_hdr_area0()
|
|
{
|
|
- _dd if=$1 of=$2 bs=512 count=$LUKS2_HDR_SIZE
|
|
+ local _as=${3:-$LUKS2_HDR_SIZE}
|
|
+ local _as=$((_as*512))
|
|
+ _dd if=$1 of=$2 bs=$_as count=1
|
|
}
|
|
|
|
+# read secondary metadata area (bin + json)
|
|
+# 1:from 2:to 3:[metadata size (defaults to 16KiB)]
|
|
function read_luks2_hdr_area1()
|
|
{
|
|
- _dd if=$1 of=$2 bs=512 skip=$LUKS2_HDR_SIZE count=$LUKS2_HDR_SIZE
|
|
+ local _as=${3:-$LUKS2_HDR_SIZE}
|
|
+ local _as=$((_as*512))
|
|
+ _dd if=$1 of=$2 bs=$_as skip=1 count=1
|
|
}
|
|
|
|
+# write secondary bin hdr
|
|
+# 1:from 2:to 3:[metadata size (defaults to 16KiB)]
|
|
function write_luks2_bin_hdr1()
|
|
{
|
|
- _dd if=$1 of=$2 bs=512 seek=$LUKS2_HDR_SIZE count=$LUKS2_BIN_HDR_SIZE conv=notrunc
|
|
+ _dd if=$1 of=$2 bs=512 seek=${3:-$LUKS2_HDR_SIZE} count=$LUKS2_BIN_HDR_SIZE conv=notrunc
|
|
}
|
|
|
|
+# write primary metadata area (bin + json)
|
|
+# 1:from 2:to 3:[metadata size (defaults to 16KiB)]
|
|
function write_luks2_hdr0()
|
|
{
|
|
- _dd if=$1 of=$2 bs=512 count=$LUKS2_HDR_SIZE conv=notrunc
|
|
+ local _as=${3:-$LUKS2_HDR_SIZE}
|
|
+ local _as=$((_as*512))
|
|
+ _dd if=$1 of=$2 bs=$_as count=1 conv=notrunc
|
|
}
|
|
|
|
+# write secondary metadata area (bin + json)
|
|
+# 1:from 2:to 3:[metadata size (defaults to 16KiB)]
|
|
function write_luks2_hdr1()
|
|
{
|
|
- _dd if=$1 of=$2 bs=512 seek=$LUKS2_HDR_SIZE count=$LUKS2_HDR_SIZE conv=notrunc
|
|
+ local _as=${3:-$LUKS2_HDR_SIZE}
|
|
+ local _as=$((_as*512))
|
|
+ _dd if=$1 of=$2 bs=$_as seek=1 count=1 conv=notrunc
|
|
}
|
|
|
|
-# 1 - json str
|
|
+# write json (includes padding)
|
|
+# 1:json_string 2:to 3:[json size (defaults to 12KiB)]
|
|
function write_luks2_json()
|
|
{
|
|
+ local _js=${3:-$LUKS2_JSON_SIZE}
|
|
local len=${#1}
|
|
- printf '%s' "$1" | _dd of=$2 bs=1 count=$len conv=notrunc
|
|
- _dd if=/dev/zero of=$2 bs=1 seek=$len count=$((LUKS2_JSON_SIZE*512-len))
|
|
+ echo -n -E "$1" > $2
|
|
+ truncate -s $((_js*512)) $2
|
|
}
|
|
|
|
function kill_bin_hdr()
|
|
@@ -117,17 +156,25 @@ function calc_sha256_checksum_stdin()
|
|
sha256sum - | cut -d ' ' -f 1
|
|
}
|
|
|
|
-# 1 - bin
|
|
-# 2 - json
|
|
-# 3 - luks2_hdr_area
|
|
+# merge bin hdr with json to form metadata area
|
|
+# 1:bin_hdr 2:json 3:to 4:[json size (defaults to 12KiB)]
|
|
function merge_bin_hdr_with_json()
|
|
{
|
|
- _dd if=$1 of=$3 bs=512 count=$LUKS2_BIN_HDR_SIZE
|
|
- _dd if=$2 of=$3 bs=512 seek=$LUKS2_BIN_HDR_SIZE count=$LUKS2_JSON_SIZE
|
|
+ local _js=${4:-$LUKS2_JSON_SIZE}
|
|
+ local _js=$((_js*512/4096))
|
|
+ _dd if=$1 of=$3 bs=4096 count=1
|
|
+ _dd if=$2 of=$3 bs=4096 seek=1 count=$_js
|
|
}
|
|
|
|
function _dd()
|
|
{
|
|
- dd $@ 2>/dev/null
|
|
- #dd $@
|
|
+ dd $@ status=none
|
|
+}
|
|
+
|
|
+function write_bin_hdr_size() {
|
|
+ printf '%016x' $2 | xxd -r -p -l 16 | _dd of=$1 bs=8 count=1 seek=1 conv=notrunc
|
|
+}
|
|
+
|
|
+function write_bin_hdr_offset() {
|
|
+ printf '%016x' $2 | xxd -r -p -l 16 | _dd of=$1 bs=8 count=1 seek=32 conv=notrunc
|
|
}
|
|
diff -rupN cryptsetup-2.0.3.old/tests/luks2-validation-test cryptsetup-2.0.3/tests/luks2-validation-test
|
|
--- cryptsetup-2.0.3.old/tests/luks2-validation-test 2019-03-27 20:59:31.654442224 +0100
|
|
+++ cryptsetup-2.0.3/tests/luks2-validation-test 2019-03-27 20:59:49.465269549 +0100
|
|
@@ -3,14 +3,12 @@
|
|
#turn on debug mode by following env. variable _DEBUG=1
|
|
|
|
PS4='$LINENO:'
|
|
-CRYPTSETUP=../cryptsetup
|
|
+[ -z "$CRYPTSETUP_PATH" ] && CRYPTSETUP_PATH=".."
|
|
+CRYPTSETUP=$CRYPTSETUP_PATH/cryptsetup
|
|
|
|
CRYPTSETUP_VALGRIND=../.libs/cryptsetup
|
|
CRYPTSETUP_LIB_VALGRIND=../.libs
|
|
|
|
-DM_CRYPT_SECTOR=512
|
|
-LUKS2_HDR_SIZE=2112 # 16 KiB version, stored twice, including luks2 areas with keyslots
|
|
-
|
|
START_DIR=$(pwd)
|
|
|
|
IMG=luks2-backend.img
|
|
@@ -19,6 +17,8 @@ TST_IMGS=$START_DIR/luks2-images
|
|
|
|
GEN_DIR=generators
|
|
|
|
+FAILS=0
|
|
+
|
|
[ -z "$srcdir" ] && srcdir="."
|
|
|
|
function remove_mapping()
|
|
@@ -29,12 +29,18 @@ function remove_mapping()
|
|
function fail()
|
|
{
|
|
[ -n "$1" ] && echo "$1"
|
|
- echo "FAILED"
|
|
+ echo "FAILED at line $(caller)"
|
|
cd $START_DIR
|
|
remove_mapping
|
|
exit 2
|
|
}
|
|
|
|
+fail_count()
|
|
+{
|
|
+ echo "$1"
|
|
+ FAILS=$((FAILS+1))
|
|
+}
|
|
+
|
|
function skip()
|
|
{
|
|
[ -n "$1" ] && echo "$1"
|
|
@@ -61,23 +67,24 @@ function test_load()
|
|
case "$1" in
|
|
R)
|
|
if [ -n "$_debug" ]; then
|
|
- $CRYPTSETUP luksDump $_debug $IMG || fail "$2"
|
|
+ $CRYPTSETUP luksDump $_debug $IMG
|
|
else
|
|
- $CRYPTSETUP luksDump $_debug $IMG > /dev/null || fail "$2"
|
|
+ $CRYPTSETUP luksDump $_debug $IMG > /dev/null 2>&1
|
|
fi
|
|
+ test $? -eq 0 || return 1
|
|
;;
|
|
F)
|
|
if [ -n "$_debug" ]; then
|
|
- $CRYPTSETUP luksDump $_debug $IMG && fail "$2"
|
|
+ $CRYPTSETUP luksDump $_debug $IMG
|
|
else
|
|
- $CRYPTSETUP luksDump $_debug $IMG > /dev/null 2>&1 && fail "$2"
|
|
+ $CRYPTSETUP luksDump $_debug $IMG > /dev/null 2>&1
|
|
fi
|
|
+ test $? -ne 0 || return 1
|
|
;;
|
|
*)
|
|
fail "Internal test error"
|
|
;;
|
|
esac
|
|
-
|
|
}
|
|
|
|
function RUN()
|
|
@@ -85,7 +92,11 @@ function RUN()
|
|
echo -n "Test image: $1..."
|
|
cp $TST_IMGS/$1 $IMG || fail "Missing test image"
|
|
test_load $2 "$3"
|
|
- echo "OK"
|
|
+ if [ $? -ne 0 ]; then
|
|
+ fail_count "$3"
|
|
+ else
|
|
+ echo "OK"
|
|
+ fi
|
|
}
|
|
|
|
function valgrind_setup()
|
|
@@ -158,11 +169,6 @@ RUN luks2-area-in-json-hdr-space-json0.i
|
|
RUN luks2-missing-keyslot-referenced-in-digest.img "F" "Failed to detect missing keyslot referenced in digest"
|
|
RUN luks2-missing-segment-referenced-in-digest.img "F" "Failed to detect missing segment referenced in digest"
|
|
RUN luks2-missing-keyslot-referenced-in-token.img "F" "Failed to detect missing keyslots referenced in token"
|
|
-RUN luks2-invalid-keyslots-size-c0.img "F" "Failed to detect too large keyslots_size in config section"
|
|
-RUN luks2-invalid-keyslots-size-c1.img "F" "Failed to detect unaligned keyslots_size in config section"
|
|
-RUN luks2-invalid-keyslots-size-c2.img "F" "Failed to detect too small keyslots_size config section"
|
|
-RUN luks2-invalid-json-size-c0.img "F" "Failed to detect invalid json_size config section"
|
|
-RUN luks2-invalid-json-size-c1.img "F" "Failed to detect invalid json_size config section"
|
|
RUN luks2-keyslot-missing-digest.img "F" "Failed to detect missing keyslot digest."
|
|
RUN luks2-keyslot-too-many-digests.img "F" "Failed to detect keyslot has too many digests."
|
|
|
|
@@ -171,4 +177,56 @@ RUN luks2-uint64-max-segment-size.img
|
|
RUN luks2-uint64-overflow-segment-size.img "F" "Failed to detect uint64_t overflow"
|
|
RUN luks2-uint64-signed-segment-size.img "F" "Failed to detect negative value"
|
|
|
|
+echo "[5] Test segments validation"
|
|
+RUN luks2-segment-missing-type.img "F" "Failed to detect missing type field"
|
|
+RUN luks2-segment-wrong-type.img "F" "Failed to detect invalid type field"
|
|
+RUN luks2-segment-missing-offset.img "F" "Failed to detect missing offset field"
|
|
+RUN luks2-segment-wrong-offset.img "F" "Failed to detect invalid offset field"
|
|
+RUN luks2-segment-missing-size.img "F" "Failed to detect missing size field"
|
|
+RUN luks2-segment-wrong-size-0.img "F" "Failed to detect invalid size field"
|
|
+RUN luks2-segment-wrong-size-1.img "F" "Failed to detect invalid size field"
|
|
+RUN luks2-segment-wrong-size-2.img "F" "Failed to detect invalid size field"
|
|
+RUN luks2-segment-crypt-missing-encryption.img "F" "Failed to detect missing encryption field"
|
|
+RUN luks2-segment-crypt-wrong-encryption.img "F" "Failed to detect invalid encryption field"
|
|
+RUN luks2-segment-crypt-missing-ivoffset.img "F" "Failed to detect missing iv_tweak field"
|
|
+RUN luks2-segment-crypt-wrong-ivoffset.img "F" "Failed to detect invalid iv_tweak field"
|
|
+RUN luks2-segment-crypt-missing-sectorsize.img "F" "Failed to detect missing sector_size field"
|
|
+RUN luks2-segment-crypt-wrong-sectorsize-0.img "F" "Failed to detect invalid sector_size field"
|
|
+RUN luks2-segment-crypt-wrong-sectorsize-1.img "F" "Failed to detect invalid sector_size field"
|
|
+RUN luks2-segment-crypt-wrong-sectorsize-2.img "F" "Failed to detect invalid sector_size field"
|
|
+RUN luks2-segment-unknown-type.img "R" "Validation rejected segment with all mandatory fields correct"
|
|
+RUN luks2-segment-two.img "R" "Validation rejected two valid segments"
|
|
+RUN luks2-segment-wrong-flags.img "F" "Failed to detect invalid flags field"
|
|
+RUN luks2-segment-wrong-flags-element.img "F" "Failed to detect invalid flags content"
|
|
+
|
|
+echo "[6] Test metadata size and keyslots size (config section)"
|
|
+RUN luks2-invalid-keyslots-size-c0.img "F" "Failed to detect too large keyslots_size in config section"
|
|
+RUN luks2-invalid-keyslots-size-c1.img "F" "Failed to detect unaligned keyslots_size in config section"
|
|
+RUN luks2-invalid-keyslots-size-c2.img "F" "Failed to detect too small keyslots_size config section"
|
|
+RUN luks2-invalid-json-size-c0.img "F" "Failed to detect invalid json_size config section"
|
|
+RUN luks2-invalid-json-size-c1.img "F" "Failed to detect invalid json_size config section"
|
|
+RUN luks2-invalid-json-size-c2.img "F" "Failed to detect mismatching json size in config and binary hdr"
|
|
+RUN luks2-metadata-size-32k.img "R" "Valid 32KiB metadata size failed to validate"
|
|
+RUN luks2-metadata-size-64k.img "R" "Valid 64KiB metadata size failed to validate"
|
|
+RUN luks2-metadata-size-64k-inv-area-c0.img "F" "Failed to detect keyslot area trespassing in json area"
|
|
+RUN luks2-metadata-size-64k-inv-area-c1.img "F" "Failed to detect keyslot area overflowing keyslots area"
|
|
+RUN luks2-metadata-size-64k-inv-keyslots-size-c0.img "F" "Failed to detect keyslots size overflowing in data area"
|
|
+RUN luks2-metadata-size-128k.img "R" "Valid 128KiB metadata size failed to validate"
|
|
+RUN luks2-metadata-size-256k.img "R" "Valid 256KiB metadata size failed to validate"
|
|
+RUN luks2-metadata-size-512k.img "R" "Valid 512KiB metadata size failed to validate"
|
|
+RUN luks2-metadata-size-1m.img "R" "Valid 1MiB metadata size failed to validate"
|
|
+RUN luks2-metadata-size-2m.img "R" "Valid 2MiB metadata size failed to validate"
|
|
+RUN luks2-metadata-size-4m.img "R" "Valid 4MiB metadata size failed to validate"
|
|
+RUN luks2-metadata-size-16k-secondary.img "R" "Valid 16KiB metadata size in secondary hdr failed to validate"
|
|
+RUN luks2-metadata-size-32k-secondary.img "R" "Valid 32KiB metadata size in secondary hdr failed to validate"
|
|
+RUN luks2-metadata-size-64k-secondary.img "R" "Valid 64KiB metadata size in secondary hdr failed to validate"
|
|
+RUN luks2-metadata-size-128k-secondary.img "R" "Valid 128KiB metadata size in secondary hdr failed to validate"
|
|
+RUN luks2-metadata-size-256k-secondary.img "R" "Valid 256KiB metadata size in secondary hdr failed to validate"
|
|
+RUN luks2-metadata-size-512k-secondary.img "R" "Valid 512KiB metadata size in secondary hdr failed to validate"
|
|
+RUN luks2-metadata-size-1m-secondary.img "R" "Valid 1MiB metadata size in secondary hdr failed to validate"
|
|
+RUN luks2-metadata-size-2m-secondary.img "R" "Valid 2MiB metadata size in secondary hdr failed to validate"
|
|
+RUN luks2-metadata-size-4m-secondary.img "R" "Valid 4MiB metadata size in secondary hdr failed to validate"
|
|
+
|
|
remove_mapping
|
|
+
|
|
+test $FAILS -eq 0 || fail "($FAILS wrong result(s) in total)"
|