#	$OpenBSD: banner.sh,v 1.4 2021/08/08 06:38:33 dtucker Exp $
#	Placed in the Public Domain.

tid="banner"
echo "Banner $OBJ/banner.in" >> $OBJ/sshd_proxy

rm -f $OBJ/banner.out $OBJ/banner.in $OBJ/empty.in
> $OBJ/empty.in

SSH_ARGS=

cmp_banner() {
$SSH $SSH_ARGS -F $OBJ/ssh_proxy otherhost true 2>$OBJ/banner.out
r=$?
test $r -ne 0 && return $r

grep -v 'sshd* runs in FIPS mode' $OBJ/banner.out > $OBJ/banner.out1
mv $OBJ/banner.out1 $OBJ/banner.out

cmp $1 $OBJ/banner.out
}


trace "test missing banner file"
verbose "test $tid: missing banner file"
cmp_banner $OBJ/empty.in || \
	fail "missing banner file"

for s in 0 10 100 1000 10000 100000 ; do
	if [ "$s" = "0" ]; then
		# create empty banner
		> $OBJ/banner.in
	elif [ "$s" = "10" ]; then
		# create 10-byte banner file
		echo "abcdefghi" >$OBJ/banner.in
	else
		# increase size 10x
		cp $OBJ/banner.in $OBJ/banner.out
		for i in 0 1 2 3 4 5 6 7 8 ; do
			cat $OBJ/banner.out >> $OBJ/banner.in
		done
	fi

	trace "test banner size $s"
	verbose "test $tid: size $s"
	cmp_banner $OBJ/banner.in || \
		fail "banner size $s mismatch"
done

trace "test suppress banner (-q)"
verbose "test $tid: suppress banner (-q)"
# ssh-log-wrapper drops "-q" to preserve debug output so use -qq as work-around
SSH_ARGS=-qq
cmp_banner $OBJ/empty.in || \
	fail "suppress banner (-q)"

rm -f $OBJ/banner.out $OBJ/banner.in $OBJ/empty.in
