X-Git-Url: https://git.distorted.org.uk/~mdw/tripe/blobdiff_plain/f884ef9d0e31b0394b000b834d135f9c68cb0720..15e8239f47dbd30b4da82dfedf983e07bc2f4122:/server/tests.at?ds=sidebyside diff --git a/server/tests.at b/server/tests.at index 19790a91..7a64cb44 100644 --- a/server/tests.at +++ b/server/tests.at @@ -38,6 +38,8 @@ m4_define([TRIPE], $abs_top_builddir/server/tripe -F -d. -aadmin -p0 -b127.0.0.1 -talice]) m4_define([TRIPECTL], [$abs_top_builddir/client/tripectl -d. -aadmin]) m4_define([USLIP], [$abs_top_builddir/uslip/tripe-uslip]) +m4_define([PKSTREAM], + [$abs_top_builddir/pkstream/pkstream -b127.0.0.1 -p127.0.0.1]) m4_define([MITM], [$abs_top_builddir/proxy/tripe-mitm]) ## Sequences. (These are used for testing the replay protection machinery.) @@ -150,7 +152,7 @@ $3 { for (i = 0; i < npat; i++) { n = length(pat[[i]]); - if (substr($[]0, 0, n) == pat[[i]]) + if (substr($[]0, 1, n) == pat[[i]]) next; } print $[]0; @@ -173,6 +175,13 @@ m4_define([WITH_TRIPE], [WITH_TRIPEX([.], [$1], [$2])]) m4_define([WITH_2TRIPES], [WITH_TRIPEX([$1], [$3 $4], [WITH_TRIPEX([$2], [$3 $5], [$6])])]) +## WITH_3TRIPES(adir, bdir, cdir, allargs, aargs, bargs, cargs, body) +m4_define([WITH_3TRIPES], + [WITH_TRIPEX([$1], [$4 $5], + [WITH_TRIPEX([$2], [$4 $6], + [WITH_TRIPEX([$3], [$4 $7], + [$8])])])]) + ## RETRY(n, body) m4_define([RETRY], [ n=0 rc=1 @@ -236,13 +245,15 @@ m4_define([AWAIT_KXDONE], [ TRIPECTL -d$4 WARN test POP ]) -## ESTABLISH(adir, aname, aopts, bdir, bname, bopts) +## ESTABLISH(adir, aname, aopts, bdir, bname, bopts, [aport], [bport]) m4_define([ESTABLISH], [ ## Set up the establishment. AWAIT_KXDONE([$1], [$2], [$4], [$5], [ - AT_CHECK([TRIPECTL -d$1 ADD -cork $6 $5 INET 127.0.0.1 $(cat $4/port)]) - AT_CHECK([TRIPECTL -d$4 ADD $3 $2 INET 127.0.0.1 $(cat $1/port)]) + AT_CHECK([TRIPECTL -d$1 ADD -cork $6 $5 INET 127.0.0.1 \ + m4_if([$8], [], [$(cat $4/port)], [$8])]) + AT_CHECK([TRIPECTL -d$4 ADD $3 $2 INET 127.0.0.1 \ + m4_if([$7], [], [$(cat $1/port)], [$7])]) ]) ## Check transport pinging. @@ -286,7 +297,7 @@ m4_define([TRIPECTL_COMMAND], [ ### Make sure the thing basically works. AT_SETUP([server basics]) -SETUPDIR([ec]) +SETUPDIR([alpha]) AT_CHECK([echo port | TRIPE -p54321],, [INFO 54321[]nl[]OK[]nl]) AT_CLEANUP @@ -295,7 +306,7 @@ AT_CLEANUP AT_SETUP([server challenges]) AT_KEYWORDS([chal]) -SETUPDIR([ec]) +SETUPDIR([alpha]) WITH_TRIPE(, [ ## A simple test. @@ -353,11 +364,79 @@ AT_SETUP([server communication]) AT_KEYWORDS([comm]) export TRIPE_SLIPIF=USLIP -for i in alice bob; do (mkdir $i; cd $i; SETUPDIR([ec])); done +for k in alpha beta-new; do + for p in alice bob; do ( + rm -rf $p; mkdir $p; cd $p; SETUPDIR([$k]) + ); done + WITH_2TRIPES([alice], [bob], [-nslip], [-talice], [-tbob], [ + ESTABLISH([alice], [not-alice], [-key alice], + [bob], [bob], []) + ]) +done -WITH_2TRIPES([alice], [bob], [-nslip], [-talice], [-tbob], [ - ESTABLISH([alice], [not-alice], [-key alice], - [bob], [bob], []) +AT_CLEANUP + +###-------------------------------------------------------------------------- +### Mobile peer tracking. + +AT_SETUP([peer tracking]) +AT_KEYWORDS([mobile]) +export TRIPE_SLIPIF=USLIP + +for p in alice bob carol; do (mkdir $p; cd $p; SETUPDIR([alpha])); done + +## WITH_PKSTREAM(adir, aport, bdir, bport, body) +m4_define([WITH_PKSTREAM], [ + echo >&2 "pkstream: $1 <--> :$2 <-pkstream-> :$4 <--> $3" + PKSTREAM -l$4 127.0.0.1:$4 127.0.0.1:$(cat $3/port)& pkstream_$3_$1=$! + sleep 1 + PKSTREAM -c127.0.0.1:$4 127.0.0.1:$2 127.0.0.1:$(cat $1/port)& + pkstream_$1_$3=$! + set +x + $5 + kill $pkstream_$3_$1 $pkstream_$1_$3 +]) + +WITH_3TRIPES([alice], [bob], [carol], [-nslip], + [-talice], [-tbob], [-tcarol], [ + + ## We need an indirection layer between the two peers so that we can + ## simulate the effects of NAT remapping. The nearest thing we have to + ## this is pkstream, so we may as well use that. + ## + ## alice <--> :5311 <-pkstream-> :5312 <--> bob + ## alice <--> :5321 <-pkstream-> :5322 <--> carol + + WITH_PKSTREAM([alice], [5311], [bob], [5312], [ + ESTABLISH([alice], [alice], [], [bob], [bob], [-mobile], [5312], [5311]) + ]) + + WITH_PKSTREAM([alice], [5319], [bob], [5312], [ + COMMS_EPING([bob], [bob], [alice], [alice]) + COMMS_SLIP([bob], [bob], [alice], [alice]) + ]) + + WITH_PKSTREAM([alice], [5321], [carol], [5322], [ + ESTABLISH([alice], [alice], [], [carol], [carol], [-mobile], + [5322], [5321]) + ]) + + WITH_PKSTREAM([alice], [5311], [bob], [5312], [ + WITH_PKSTREAM([alice], [5321], [carol], [5322], [ + COMMS_EPING([bob], [bob], [alice], [alice]) + COMMS_EPING([carol], [carol], [alice], [alice]) + COMMS_SLIP([bob], [bob], [alice], [alice]) + COMMS_SLIP([carol], [carol], [alice], [alice]) + ])]) + + WITH_PKSTREAM([alice], [5321], [bob], [5312], [ + WITH_PKSTREAM([alice], [5311], [carol], [5322], [ + COMMS_EPING([bob], [bob], [alice], [alice]) + COMMS_EPING([carol], [carol], [alice], [alice]) + COMMS_SLIP([bob], [bob], [alice], [alice]) + COMMS_SLIP([carol], [carol], [alice], [alice]) + ])]) + wait ]) AT_CLEANUP @@ -369,7 +448,7 @@ AT_SETUP([server retry]) AT_KEYWORDS([backoff]) export TRIPE_SLIPIF=USLIP -for i in alice bob; do (mkdir $i; cd $i; SETUPDIR([dh])); done +for i in alice bob; do (mkdir $i; cd $i; SETUPDIR([beta])); done WITH_2TRIPES([alice], [bob], [-nslip], [-talice], [-tbob], [ @@ -401,11 +480,152 @@ WITH_2TRIPES([alice], [bob], [-nslip], [-talice], [-tbob], [ AT_CLEANUP ###-------------------------------------------------------------------------- +### Key management. + +AT_SETUP([server key-management]) +AT_KEYWORDS([keymgmt]) +export TRIPE_SLIPIF=USLIP + +## Determine all of the nets and the principals. +princs="" +nets=" " +while read princ pnets; do + princs="$princs $princ" + for n in $pnets; do + case " $nets " in *" $n "*) ;; *) nets="$nets$n " ;; esac + done +done <