You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3818 lines
115 KiB
3818 lines
115 KiB
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)"
|
|
|