mirror of
https://github.com/mtrojnar/osslsigncode.git
synced 2025-07-04 04:02:47 -05:00
new testing framework
This commit is contained in:

committed by
Michał Trojnara

parent
6edd56bfac
commit
f004aa3f48
@ -7,7 +7,8 @@ cd "${result_path}"
|
||||
|
||||
test_result() {
|
||||
#1 last exit status
|
||||
#2 test name
|
||||
#2 test number
|
||||
#3 test name
|
||||
|
||||
local result=0
|
||||
|
||||
@ -16,7 +17,7 @@ test_result() {
|
||||
printf "%s\n" "Test succeeded"
|
||||
else
|
||||
printf "%s\n" "Test failed"
|
||||
printf "%-80s\t%s\n" "$2" "failed" 1>&3
|
||||
printf "%03d. %-90s\t%s\n" "$2" "$3" "failed" 1>&3
|
||||
result=1
|
||||
fi
|
||||
return "$result"
|
||||
@ -32,21 +33,24 @@ modify_blob() {
|
||||
initial_blob=$(echo -n "$3" | xxd -p)
|
||||
modified_blob=$(echo -n "FAKE" | xxd -p)
|
||||
zero_blob="00000000"
|
||||
|
||||
xxd -p -c 1000 "test_$1.$2" | \
|
||||
sed "s/$initial_blob$zero_blob/$initial_blob$modified_blob/" | \
|
||||
xxd -p -r > "test_$1_changed.$2"
|
||||
xxd -p -r > "changed_$1.$2"
|
||||
|
||||
../../osslsigncode verify \
|
||||
-CAfile "${script_path}/../certs/CACert.pem" \
|
||||
-CRLfile "${script_path}/../certs/CACertCRL.pem" \
|
||||
-in "test_$1_changed.$2" 2>> "verify.log" 1>&2
|
||||
-in "changed_$1.$2" 2>> "verify.log" 1>&2
|
||||
result=$?
|
||||
|
||||
if test "$result" -ne 0 \
|
||||
-o $(grep -e "Calculated DigitalSignature" -e "Calculated message digest" "verify.log" | uniq | wc -l) -ne 1
|
||||
-o $(grep -e "Calculated DigitalSignature" -e "Calculated message digest" "verify.log" | uniq | wc -l) -gt 1
|
||||
then
|
||||
printf "Failed: verify error or non-unique message digests found\n" 2>> "verify.log" 1>&2
|
||||
result=1
|
||||
else
|
||||
rm -f "test_$1_changed.$2"
|
||||
rm -f "changed_$1.$2"
|
||||
fi
|
||||
|
||||
return "$result"
|
||||
@ -55,29 +59,19 @@ modify_blob() {
|
||||
search_pattern() {
|
||||
# $1 test number
|
||||
# $2 filename extension
|
||||
# $3 ASCII or HEX "$7 pattern" format
|
||||
# $4 pattern searched in a binary file or verify.log
|
||||
# $5 modify requirement
|
||||
# $3 pattern searched in a binary file or verify.log
|
||||
|
||||
local result=0
|
||||
|
||||
if test "$3" = "ASCII"
|
||||
if ! grep -q "$3" "verify.log"
|
||||
then
|
||||
hex_pattern=$(echo -n "$4" | xxd -p)
|
||||
else
|
||||
hex_pattern=$4
|
||||
hex_pattern=$(echo -n "$3" | xxd -p)
|
||||
if ! xxd -p -c 1000 "test_$1.$2" | grep "$hex_pattern" 2>> /dev/null 1>&2
|
||||
then
|
||||
result=1
|
||||
printf "Failed: $3 not found\n"
|
||||
fi
|
||||
fi
|
||||
if ! grep -q "$4" "verify.log" && \
|
||||
! xxd -p -c 1000 "test_$1.$2" | grep "$hex_pattern" 2>> /dev/null 1>&2
|
||||
then
|
||||
result=1
|
||||
printf "Failed: $4 not found\n"
|
||||
elif test "$5" = "MODIFY"
|
||||
then
|
||||
modify_blob "$1" "$2" "$4"
|
||||
result=$?
|
||||
fi
|
||||
|
||||
return "$result"
|
||||
}
|
||||
|
||||
@ -88,11 +82,11 @@ verify_signature() {
|
||||
# $4 expected result
|
||||
# $5 fake time
|
||||
# $6 sha256sum requirement
|
||||
# $7 ASCII or HEX "$7 pattern" format
|
||||
# $8 pattern searched in a binary file or verify.log
|
||||
# $9 modify requirement
|
||||
# $7 pattern searched in the verify.log file
|
||||
# $8 modify requirement
|
||||
|
||||
local result=0
|
||||
|
||||
printf "" > "verify.log"
|
||||
if test "$1" -eq 0
|
||||
then
|
||||
@ -106,23 +100,31 @@ verify_signature() {
|
||||
-in "test_tmp.tmp" 2>> "verify.log" 1>&2'
|
||||
result=$?
|
||||
rm -f "test_tmp.tmp"
|
||||
if test "$result" -eq 0 -a "$7" != "UNUSED_PATTERN" -a "$8" != "UNUSED_PATTERN"
|
||||
|
||||
if test "$result" -eq 0 -a "$7" != "UNUSED_PATTERN"
|
||||
then
|
||||
search_pattern "$2" "$3" "$7" "$8" "$9"
|
||||
search_pattern "$2" "$3" "$7"
|
||||
result=$?
|
||||
fi
|
||||
|
||||
if test "$result" -eq 0 -a "$8" == "MODIFY"
|
||||
then
|
||||
modify_blob "$2" "$3" "$7"
|
||||
result=$?
|
||||
fi
|
||||
|
||||
if test "$6" = "sha256sum"
|
||||
then
|
||||
sha256sum "test_$2.$3" 2>> "sha256sum_$3.log" 1>&2
|
||||
sha256sum "test_$2.$3" 2>> "sha256sum/$3.log" 1>&2
|
||||
fi
|
||||
|
||||
if test "$4" = "success" -a "$result" -eq 0
|
||||
then
|
||||
rm -f "test_$2.$3" "test_$2_signed.$3" "test_$2_modifed.$3" "test_$2_changed.$3"
|
||||
rm -f "test_$2_a.$3" "test_$2_b.$3"
|
||||
result=0
|
||||
rm -f "test_$2.$3" "signed_$2.$3" "signed1_$2.$3" "signed2_$2.$3"
|
||||
elif test "$4" = "fail" -a "$result" -eq 1
|
||||
then
|
||||
rm -f "test_$2.$3" "test_$2_signed.$3" "test_$2_modifed.$3" "test_$2_changed.$3"
|
||||
rm -f "test_$2.$3" "signed_$2.$3" "signed1_$2.$3" "signed2_$2.$3"
|
||||
rm -f "changed_$2.$3"
|
||||
cat "verify.log" >> "results.log"
|
||||
result=0
|
||||
else
|
||||
|
Reference in New Issue
Block a user