"Fossies" - the Fresh Open Source Software Archive

Member "cryptsetup-2.4.3/tests/generators/generate-luks2-segment-wrong-backup-key-1.img.sh" (13 Jan 2022, 1679 Bytes) of package /linux/misc/cryptsetup-2.4.3.tar.xz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Bash source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file.

A hint: This file contains one or more very long lines, so maybe it is better readable using the pure text view mode that shows the contents as wrapped lines within the browser window.


    1 #!/bin/bash
    2 
    3 . lib.sh
    4 
    5 #
    6 # *** Description ***
    7 #
    8 # generate primary header with wrong backup segment id
    9 #
   10 # secondary header is corrupted on purpose as well
   11 #
   12 
   13 # $1 full target dir
   14 # $2 full source luks2 image
   15 
   16 function prepare()
   17 {
   18     cp $SRC_IMG $TGT_IMG
   19     test -d $TMPDIR || mkdir $TMPDIR
   20     read_luks2_json0 $TGT_IMG $TMPDIR/json0
   21     read_luks2_bin_hdr0 $TGT_IMG $TMPDIR/hdr0
   22     read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr1
   23 }
   24 
   25 function generate()
   26 {
   27     # create illegal backup segment key (used to be bug in 32bit implementations)
   28     json_str=$(jq -c '(.segments."0".offset | tonumber) as $i | .segments[range(1;65) | tostring] = { "type" : "linear", "offset" : ($i + 512 | tostring), "size" : "512" } | .segments."268435472" = { "type":"linear","offset":"512","size":"512","flags":["backup-x"]}' $TMPDIR/json0)
   29     test ${#json_str} -lt $((LUKS2_JSON_SIZE*512)) || exit 2
   30 
   31     write_luks2_json "$json_str" $TMPDIR/json0
   32 
   33     merge_bin_hdr_with_json $TMPDIR/hdr0 $TMPDIR/json0 $TMPDIR/area0
   34     erase_checksum $TMPDIR/area0
   35     chks0=$(calc_sha256_checksum_file $TMPDIR/area0)
   36     write_checksum $chks0 $TMPDIR/area0
   37     write_luks2_hdr0 $TMPDIR/area0 $TGT_IMG
   38     kill_bin_hdr $TMPDIR/hdr1
   39     write_luks2_hdr1 $TMPDIR/hdr1 $TGT_IMG
   40 }
   41 
   42 function check()
   43 {
   44     read_luks2_bin_hdr1 $TGT_IMG $TMPDIR/hdr_res1
   45     local str_res1=$(head -c 6 $TMPDIR/hdr_res1)
   46     test "$str_res1" = "VACUUM" || exit 2
   47 
   48     read_luks2_json0 $TGT_IMG $TMPDIR/json_res0
   49     jq -c 'if .segments | length < 64
   50            then error("Unexpected segments count") else empty end' $TMPDIR/json_res0 || exit 5
   51 }
   52 
   53 function cleanup()
   54 {
   55     rm -f $TMPDIR/*
   56     rm -fd $TMPDIR
   57 }
   58 
   59 test $# -eq 2 || exit 1
   60 
   61 TGT_IMG=$1/$(test_img_name $0)
   62 SRC_IMG=$2
   63 
   64 prepare
   65 generate
   66 check
   67 cleanup