cpsa-3.6.11: tst/doorsep2invk.tst
(herald doorsep2invk (comment "Door Simple Example Protocol"))
(comment "CPSA 3.6.11")
(comment "All input read from tst/doorsep2invk.scm")
(defprotocol doorsep basic
(defrole init
(vars (self peer akey) (skey skey) (data text))
(trace (send (enc (enc skey (invk self)) peer))
(recv (enc data skey)) (send data))
(uniq-orig skey))
(defrole resp
(vars (self peer akey) (skey skey) (data text))
(trace (recv (enc (enc skey (invk peer)) self))
(send (enc data skey)) (recv data))
(uniq-orig data))
(comment "Doorsep's protocol using unnamed asymmetric keys"))
(defskeleton doorsep
(vars (text+0 text) (skey+0 skey) (akey+1 akey+0 akey+3 akey))
(defstrand init 1 (skey skey+0) (self (invk akey+3)) (peer akey+0))
(defstrand resp 3 (data text+0) (skey skey+0) (self akey+1)
(peer (invk akey+3)))
(precedes ((0 0) (1 0)))
(non-orig akey+3 (invk akey+0))
(uniq-orig text+0 skey+0)
(goals
(forall
((text+0 text) (skey+0 skey) (akey+1 akey+0 akey+3 akey)
(z z-0 strd))
(implies
(and (p "resp" z 3) (p "init" z-0 1) (p "resp" "data" z text+0)
(p "resp" "skey" z skey+0) (p "resp" "self" z akey+1)
(p "resp" "peer" z (invk akey+3)) (p "init" "skey" z-0 skey+0)
(p "init" "self" z-0 (invk akey+3))
(p "init" "peer" z-0 akey+0) (prec z-0 0 z 0) (non akey+3)
(non (invk akey+0)) (uniq-at skey+0 z-0 0)
(uniq-at text+0 z 1)) (and))))
(traces ((send (enc (enc skey+0 akey+3) akey+0)))
((recv (enc (enc skey+0 akey+3) akey+1)) (send (enc text+0 skey+0))
(recv text+0)))
(label 0)
(unrealized (1 0) (1 2))
(origs (text+0 (1 1)) (skey+0 (0 0)))
(comment "1 in cohort - 1 not yet seen"))
(defskeleton doorsep
(vars (text+0 text) (skey+0 skey) (akey+0 akey+3 akey))
(defstrand init 1 (skey skey+0) (self (invk akey+3)) (peer akey+0))
(defstrand resp 3 (data text+0) (skey skey+0) (self akey+0)
(peer (invk akey+3)))
(precedes ((0 0) (1 0)))
(non-orig akey+3 (invk akey+0))
(uniq-orig text+0 skey+0)
(operation encryption-test (contracted (akey+1 akey+0))
(enc skey+0 akey+3) (1 0) (enc (enc skey+0 akey+3) akey+0))
(traces ((send (enc (enc skey+0 akey+3) akey+0)))
((recv (enc (enc skey+0 akey+3) akey+0)) (send (enc text+0 skey+0))
(recv text+0)))
(label 1)
(parent 0)
(unrealized (1 2))
(origs (text+0 (1 1)) (skey+0 (0 0)))
(comment "2 in cohort - 2 not yet seen"))
(defskeleton doorsep
(vars (text+0 text) (skey+0 skey) (self peer akey))
(defstrand resp 3 (data text+0) (skey skey+0) (self peer) (peer self))
(defstrand init 3 (data text+0) (skey skey+0) (self self) (peer peer))
(precedes ((0 1) (1 1)) ((1 0) (0 0)) ((1 2) (0 2)))
(non-orig (invk self) (invk peer))
(uniq-orig text+0 skey+0)
(operation nonce-test (displaced 0 2 init 3) text+0 (1 2)
(enc text+0 skey+0))
(traces
((recv (enc (enc skey+0 (invk self)) peer))
(send (enc text+0 skey+0)) (recv text+0))
((send (enc (enc skey+0 (invk self)) peer))
(recv (enc text+0 skey+0)) (send text+0)))
(label 2)
(parent 1)
(unrealized)
(shape)
(satisfies yes)
(maps
((1 0)
((text+0 text+0) (skey+0 skey+0) (akey+1 peer) (akey+0 peer)
(akey+3 (invk self)))))
(origs (skey+0 (1 0)) (text+0 (0 1))))
(defskeleton doorsep
(vars (text+0 text) (skey+0 skey) (akey+0 akey+3 akey))
(defstrand init 1 (skey skey+0) (self (invk akey+3)) (peer akey+0))
(defstrand resp 3 (data text+0) (skey skey+0) (self akey+0)
(peer (invk akey+3)))
(deflistener skey+0)
(precedes ((0 0) (1 0)) ((0 0) (2 0)) ((2 1) (1 2)))
(non-orig akey+3 (invk akey+0))
(uniq-orig text+0 skey+0)
(operation nonce-test (added-listener skey+0) text+0 (1 2)
(enc text+0 skey+0))
(traces ((send (enc (enc skey+0 akey+3) akey+0)))
((recv (enc (enc skey+0 akey+3) akey+0)) (send (enc text+0 skey+0))
(recv text+0)) ((recv skey+0) (send skey+0)))
(label 3)
(parent 1)
(unrealized (2 0))
(dead)
(comment "empty cohort"))
(comment "Nothing left to do")