#!/bin/sh
# 20211230
# Jan Mojzis
# Public domain.

#!/bin/sh
set -e

PATH="/usr/sbin:${PATH}"
export PATH

# change directory to $AUTOPKGTEST_TMP
cd "$AUTOPKGTEST_TMP"

# create server key
curvecpmakekey serverkey

# print public-key to serverkey.hex
curvecpprintkey serverkey > serverkey.hex

# create random datafile
dd if=/dev/urandom of=data.in bs=1 count=32 2>/dev/null

# start curvecpserver
curvecpserver this.machine.name serverkey 127.0.0.1 10000 31415926535897932384626433832795 curvecpmessage sh -c 'cat data.in' 2>curvecpserver.log &
curvecpserverpid=$!

sleep 1

cleanup() {
  ex=$?
  # kill curvecpserverpid
  kill -TERM "${curvecpserverpid}" 1>/dev/null 2>/dev/null || :
  kill -KILL "${curvecpserverpid}" 1>/dev/null 2>/dev/null || :
  if [ ${ex} -gt 0 ]; then
    (
      echo "curvecp clientext. test failed"
      echo "curvecpserver.log:"
      cat curvecpserver.log
      echo "curvecpclient.log: "
      cat curvecpclient.log
    ) >&2
  fi
  rm -rf curvecpserver.log curvecpclient.log serverkey serverkey.hex data.in data.out
  exit "${ex}"
}
trap "cleanup" EXIT TERM INT

# run curvecpclient
curvecpclient this.machine.name `cat serverkey.hex` 127.0.0.1 10000 31415926535897932384626433832795 curvecpmessage -c sh -c 'cat <&6 >data.out' 2>"curvecpclient.log"

if [ x"`sha512sum < data.in`" != x"`sha512sum < data.out`" ]; then
  exit 111
fi
exit 0
