diff options
Diffstat (limited to 'checks/checkit')
-rwxr-xr-x | checks/checkit | 109 |
1 files changed, 64 insertions, 45 deletions
diff --git a/checks/checkit b/checks/checkit index 3ffce35c4..09cf7ac8d 100755 --- a/checks/checkit +++ b/checks/checkit @@ -13,7 +13,6 @@ usrpass2="abc" plain_files="plain-1 plain-2 plain-3" data_files="" exp_files="" -last_command="" #-------------------------------- @@ -27,7 +26,6 @@ fatal () { error () { echo "$pgmname:" $* >&2 - echo "($last_command) failed" >&2 exit 1 } @@ -39,9 +37,19 @@ chdir () { cd $1 || fatal "cannot cd to $1" } +cleanup () { + rm $data_files x y z 2>/dev/null + echo "#empty" >./.g10/options +} + + run_g10 () { - last_command="HOME=. ../g10/g10 $*" eval HOME=. ../g10/g10 $* + if [ $? != 0 ] ; then + g10_err=$? + echo "(HOME=. ../g10/g10 $*) failed" >&2 + error "g10 failed: $g10_err" >&2 + fi } #-------------------------------- @@ -50,6 +58,8 @@ run_g10 () { set -e pgmname=$(basename $0) +#trap cleanup EXIT SIGHUP SIGINT SIGQUIT + # some checks [ -d "./.g10" ] || fatal "subdirectory .g10 missing" @@ -59,6 +69,7 @@ done for i in $exp_files; do [ -f $i ] || fatal "$i: script missing" done +# create the keyrings cat <<EOF >./.g10/options no-greeting @@ -68,71 +79,80 @@ EOF # print the G10 version run_g10 --version +# intialize the trustdb -info Checking cleartext signatures -# There is a minor glitch, which appends a lf to the cleartext. -# I do not consider that a bug, but I have to use the head .. mimic. -# It is not clear what should happen to leading LFs, we must -# change the defintion of cleartext, so that only 1 empty line -# must follow the headers, but some specs say: any number of empty lines .. -# clean-sat removes leading LFs -# I know that this does not work for random data files (due to large lines -# or what ever) - I hope we can live with it. -for i in $plain_files; do - echo "$usrpass1" | run_g10 --passphrase-fd 0 -sat -o x --yes $i || error "g10 failed: $?" - run_g10 -o y --yes x || error "g10 failed: $?" - ../tools/clean-sat < $i > z - head -c $[ $(cat y | wc -c) - 1 ] y | diff - z || error "$i: mismatch" +info Checking decryption +for i in $plain_files ; do + echo "$usrpass1" | run_g10 --passphrase-fd 0 -o y --yes $i.asc + cmp $i y || error "$i: mismatch" done +#info Checking cleartext signatures +## There is a minor glitch, which appends a lf to the cleartext. +## I do not consider that a bug, but I have to use the head .. mimic. +## It is not clear what should happen to leading LFs, we must +## change the defintion of cleartext, so that only 1 empty line +## must follow the headers, but some specs say: any number of empty lines .. +## clean-sat removes leading LFs +## I know that this does not work for random data files (due to large lines +## or what ever) - I hope we can live with it. +#for i in $plain_files; do +# echo "$usrpass1" | run_g10 --passphrase-fd 0 -sat -o x --yes $i +# run_g10 -o y --yes x +# ../tools/clean-sat < $i > z +# head -c $[ $(cat y | wc -c) - 1 ] y | diff - z || error "$i: mismatch" +#done + info Creating some random data files for i in 500 9000 32000 80000; do head -c $i /dev/urandom >data-$i data_files="$data_files data-$i" done -info Checking armored signatures -for i in $plain_files $data_files ; do - echo "$usrpass1" | run_g10 --passphrase-fd 0 -sa -o x --yes $i || error "g10 failed: $?" - run_g10 -o y --yes x || error "g10 failed: $?" - cmp $i y || error "$i: mismatch" -done - -info Checking signatures -for i in $plain_files $data_files; do - echo "$usrpass1" | run_g10 --passphrase-fd 0 -s -o x --yes $i || error "g10 failed: $?" - run_g10 -o y --yes x || error "g10 failed: $?" - cmp $i y || error "$i: mismatch" -done +#info Checking armored signatures +#for i in $plain_files $data_files ; do +# echo "$usrpass1" | run_g10 --passphrase-fd 0 -sa -o x --yes $i +# run_g10 -o y --yes x +# cmp $i y || error "$i: mismatch" +#done +# +#info Checking signatures +#for i in $plain_files $data_files; do +# echo "$usrpass1" | run_g10 --passphrase-fd 0 -s -o x --yes $i +# run_g10 -o y --yes x +# cmp $i y || error "$i: mismatch" +#done info Checking armored encryption for i in $plain_files $data_files ; do - run_g10 -ea -o x --yes -r "$usrname2" $i || error "g10 failed: $?" - run_g10 -o y --yes x || error "g10 failed: $?" + info "file $i" + run_g10 -v -ea -o x --yes -r "$usrname2" $i + run_g10 -v -o y --yes x cmp $i y || error "$i: mismatch" done info Checking armored encryption with a pipe for i in $plain_files $data_files ; do + info "file $i" run_g10 -ea --yes -r "$usrname2" < $i | tee x \ - | run_g10 -o y --yes || error "g10 failed: $?" + | run_g10 -o y --yes cmp $i y || error "$i: mismatch" - run_g10 --yes < x > y || error "g10 failed: $?" + run_g10 --yes < x > y cmp $i y || error "$i: mismatch" done info Checking encryption for i in $plain_files $data_files ; do - run_g10 -e -o x --yes -r "$usrname2" $i || error "g10 failed: $?" - run_g10 -o y --yes x || error "g10 failed: $?" + run_g10 -e -o x --yes -r "$usrname2" $i + run_g10 -o y --yes x cmp $i y || error "$i: mismatch" done info Checking encryption with a pipe for i in $plain_files $data_files ; do run_g10 -e --yes -r "$usrname2" < $i \ - | run_g10 --yes > y || error "g10 failed: $?" + | run_g10 --yes > y cmp $i y || error "$i: mismatch" done @@ -141,43 +161,42 @@ info Checking signing and encryption for i in $plain_files $data_files ; do echo "$usrpass1" \ | run_g10 --passphrase-fd 0 -se -o x --yes -r "$usrname2" $i - run_g10 -o y --yes x || error "g10 failed: $?" + run_g10 -o y --yes x cmp $i y || error "$i: mismatch" done info Checking armored signing and encryption for i in $plain_files $data_files ; do echo "$usrpass1" \ - | run_g10 --passphrase-fd 0 -sae -o x --yes -r "$usrname2" $i || error "g10 failed: $?" - run_g10 -o y --yes x || error "g10 failed: $?" + | run_g10 --passphrase-fd 0 -sae -o x --yes -r "$usrname2" $i + run_g10 -o y --yes x cmp $i y || error "$i: mismatch" done info Checking armored detached signatures for i in $plain_files $data_files ; do - echo "$usrpass1" | run_g10 --passphrase-fd 0 -sab -o x --yes $i || error "g10 failed: $?" + echo "$usrpass1" | run_g10 --passphrase-fd 0 -sab -o x --yes $i run_g10 -o /dev/null --yes x <$i || error "$i: bad signature" done info Checking detached signatures for i in $plain_files $data_files ; do - echo "$usrpass1" | run_g10 --passphrase-fd 0 -sb -o x --yes $i || error "g10 failed: $?" + echo "$usrpass1" | run_g10 --passphrase-fd 0 -sb -o x --yes $i run_g10 -o /dev/null --yes x <$i || error "$i: bad signature" done info Checking detached signatures of multiple files i="$plain_files $data_files" -echo "$usrpass1" | run_g10 --passphrase-fd 0 -sb -o x --yes $i || error "g10 failed: $?" +echo "$usrpass1" | run_g10 --passphrase-fd 0 -sb -o x --yes $i cat $i | run_g10 -o /dev/null --yes x || error "$i: bad signature" info Checking armored detached signatures of multiple files i="$plain_files $data_files" -echo "$usrpass1" | run_g10 --passphrase-fd 0 -sab -o x --yes $i || error "g10 failed: $?" +echo "$usrpass1" | run_g10 --passphrase-fd 0 -sab -o x --yes $i cat $i | run_g10 -o /dev/null --yes x || error "$i: bad signature" -rm $data_files x y z info "All tests passed." exit 0 |