--- /dev/null
+#!/bin/bash
+
+MTU=1439
+[ $# -gt 0 ] && MTU=$1
+
+TEST=$(basename $0 .sh)
+
+LRED=enp0s9://78:a1:35:10:10:10
+LBLK=enp0s8://78:a1:35:20:20:20
+RRED=enp0s9://78:a1:35:01:01:01
+RBLK=enp0s8://78:a1:35:02:02:02
+
+LOOP=lo://00:00:00:00:00:00
+
+CRYPTOMOD=./cryptomod.exe
+SIMULATOR=./simulator.exe
+VPN=./ulvpn.exe
+
+ulimit -c unlimited
+
+launch() { echo -ne "\033[0;1m$@\033[0;0m: "; }
+title() { echo -e "\033[0;1m$@\033[0;0m"; }
+pass() { echo -e "\033[1;32m$@\033[0;0m"; }
+warn() { echo -e "\033[1;33m$@\033[0;0m"; }
+fail() { echo -e "\033[1;31m$@\033[0;0m"; }
+
+if [ ! -f init.done ]; then
+ launch create configuration files
+
+ dd if=/dev/random of=crypto.key bs=1 count=32 2>/dev/null
+ dd if=/dev/random of=prng.key bs=1 count=16 2>/dev/null
+
+ cat > provisioning.eth <<EOF
+SLEEP 500
+T:PROVISIONING LOAD_KEY_REQ KEYID=0 KEY=@crypto.key
+R:PROVISIONING LOAD_KEY_RESP STATUS=0
+T:PROVISIONING LOAD_KEY_REQ KEYID=1 KEY=@prng.key
+R:PROVISIONING LOAD_KEY_RESP STATUS=0
+EOF
+
+ cat > plaintext.txt <<EOF
+Inter quos Paulus eminebat notarius ortus in Hispania, glabro quidam sub vultu latens, odorandi vias periculorum occultas perquam sagax. is in Brittanniam missus ut militares quosdam perduceret ausos conspirasse Magnentio, cum reniti non possent, iussa licentius supergressus fluminis modo fortunis conplurium sese repentinus infudit et ferebatur per strages multiplices ac ruinas, vinculis membra ingenuorum adfligens et quosdam obterens manicis, crimina scilicet multa consarcinando a veritate longe discreta. unde admissum est facinus impium, quod Constanti tempus nota inusserat sempiterna.
+
+Ideo urbs venerabilis post superbas efferatarum gentium cervices oppressas latasque leges fundamenta libertatis et retinacula sempiterna velut frugi parens et prudens et dives Caesaribus tamquam liberis suis regenda patrimonii iura permisit.
+
+Ut enim quisque sibi plurimum confidit et ut quisque maxime virtute et sapientia sic munitus est, ut nullo egeat suaque omnia in se ipso posita iudicet, ita in amicitiis expetendis colendisque maxime excellit. Quid enim? Africanus indigens mei? Minime hercule! ac ne ego quidem illius; sed ego admiratione quadam virtutis eius, ille vicissim opinione fortasse non nulla, quam de meis moribus habebat, me dilexit; auxit benevolentiam consuetudo. Sed quamquam utilitates multae et magnae consecutae sunt, non sunt tamen ab earum spe causae diligendi profectae.
+
+Et Epigonus quidem amictu tenus philosophus, ut apparuit, prece frustra temptata, sulcatis lateribus mortisque metu admoto turpi confessione cogitatorum socium, quae nulla erant, fuisse firmavit cum nec vidisset quicquam nec audisset penitus expers forensium rerum; Eusebius vero obiecta fidentius negans, suspensus in eodem gradu constantiae stetit latrocinium illud esse, non iudicium clamans."
+EOF
+
+ success OK
+
+ touch init.done
+fi
+
+pids=
+if $(uname -n | fgrep -q debian-lite); then
+ title Remote
+
+ title starting software crypto module
+ $CRYPTOMOD -v 1 -V 1 -l cryptomod.log \
+ -s BYPASS_B2R -t $LOOP/080D -r $LOOP/083D \
+ -s BYPASS_R2B -t $LOOP/082D -r $LOOP/081D \
+ -s CONTROL -t $LOOP/080E -r $LOOP/081E \
+ -s CROSS_CRYPTO_B2R -t $LOOP/0809 -r $LOOP/0839 \
+ -s CROSS_CRYPTO_R2B -t $LOOP/0829 -r $LOOP/0819 \
+ -s PROVISIONING -t $LOOP/080B -r $LOOP/081B &
+ pids="$pids $!"
+ sleep 1
+
+ launch provisioning software cryptomod
+ $SIMULATOR -v1 -V1 -s PROVISIONING -r $LOOP/080B -t $LOOP/081B provisioning.eth && pass OK || { fail KO; exit 1; }
+
+ title starting vpn
+ $VPN -v 1 -V 1 -l ulvpn.log \
+ -d tun://tun0:$MTU \
+ -l tun://10.2.1.1 -r tun://10.2.0.0 \
+ -t udp://10.1.0.2:1234 -u udp://10.1.0.1:1234 \
+ -x $LOOP/0829 $LOOP/0839 \
+ -y $LOOP/0809 $LOOP/0819 | \
+ awk '{print "vpn:", $0}'
+
+else
+ title Local
+
+ launch provisioning hardware cryptomod
+ $SIMULATOR -v1 -V1 -s PROVISIONING -r $RRED/080B -t $RRED/080B provisioning.eth && pass OK || { fail KO; exit 1; }
+
+ title starting vpn
+ $VPN -v1 -V1 \
+ -d tun://tun0:$MTU \
+ -l tun://10.2.0.1 -r tun://10.2.1.0 \
+ -t udp://10.1.0.1:1234 -u udp://10.1.0.2:1234 \
+ -x $RBLK/0809 $RBLK/0809 \
+ -y $RRED/0809 $RRED/0809 | \
+ awk '{print "vpn:", $0}'
+
+fi
+
+for p in $pids; do
+ echo killing $p
+ kill -TERM $p
+done
+
+title end