#!/bin/sh -ex tmpdir=`mktemp -d 2>/dev/null || mktemp -d -t jose` onexit() { rm -rf $tmpdir } trap onexit EXIT for T in '{"alg":"ECDH"}' '{"alg":"ECDH","crv":"P-256"}' '{"kty":"EC","crv":"P-256"}'; do jose jwk gen -i "$T" -o $tmpdir/exc_a.jwk jose jwk gen -i "$T" -o $tmpdir/exc_b.jwk jose jwk pub -i $tmpdir/exc_a.jwk -o $tmpdir/exc_a.pub.jwk jose jwk pub -i $tmpdir/exc_b.jwk -o $tmpdir/exc_b.pub.jwk a=`jose jwk exc -l $tmpdir/exc_a.jwk -r $tmpdir/exc_b.pub.jwk` b=`jose jwk exc -l $tmpdir/exc_b.jwk -r $tmpdir/exc_a.pub.jwk` c=`jose jwk exc -l $tmpdir/exc_a.jwk -r $tmpdir/exc_b.jwk` d=`jose jwk exc -l $tmpdir/exc_b.jwk -r $tmpdir/exc_a.jwk` test "$a" = "$b" test "$c" = "$d" test "$a" = "$c" ! jose jwk exc -l $tmpdir/exc_a.pub.jwk -r $tmpdir/exc_b.jwk ! jose jwk exc -l $tmpdir/exc_b.pub.jwk -r $tmpdir/exc_a.jwk ! jose jwk exc -l $tmpdir/exc_a.pub.jwk -r $tmpdir/exc_b.pub.jwk ! jose jwk exc -l $tmpdir/exc_b.pub.jwk -r $tmpdir/exc_a.pub.jwk done jose jwk gen -i '{"alg":"ECDH","crv":"P-384"}' -o $tmpdir/exc_c.jwk ! jose jwk exc -l $tmpdir/exc_c.jwk -r $tmpdir/exc_a.pub.jwk jose jwk gen -i '{"kty":"EC","crv":"P-384"}' -o $tmpdir/exc_c.jwk ! jose jwk exc -l $tmpdir/exc_c.jwk -r $tmpdir/exc_a.pub.jwk jose jwk gen -i '{ "alg": "ES256" }' -o $tmpdir/exc_c.jwk ! jose jwk exc -l $tmpdir/exc_c.jwk -r $tmpdir/exc_a.pub.jwk srv=`jose jwk gen -i '{"alg":"ECMR"}'` clt=`jose jwk gen -i '{"alg":"ECMR"}'` eph=`jose jwk gen -i '{"alg":"ECMR"}'` spb=`echo "$srv" | jose jwk pub -i-` cpb=`echo "$clt" | jose jwk pub -i-` key=`echo "$clt$spb" | jose jwk exc -l- -r-` sub=`echo "$eph$spb" | jose jwk exc -l- -r- -i '{"alg":"ECMR"}'` req=`echo "$cpb$eph" | jose jwk exc -l- -r- -i '{"alg":"ECMR"}'` rep=`echo "$srv$req" | jose jwk exc -l- -r- -i '{"alg":"ECMR"}'` rec=`echo "$rep$sub" | jose jwk exc -l- -r-` echo "$key$rec" | jose fmt -j- -Oj- -OE