cpsa-3.4.1: tst/reflect.scm
(herald reflect)
;; A simple protocol vulnerable to a reflection attack
(defprotocol reflect basic
(defrole init
(vars (a b akey))
(trace
(send (enc b (invk a)))
(recv (enc a (invk b)))))
(defrole resp
(vars (a b akey))
(trace
(recv (enc b (invk a)))
(send (enc a (invk b))))))
;; Expect two shapes
(defskeleton reflect
(vars (a b akey))
(defstrand resp 1 (a a) (b b))
(non-orig (invk a) (invk b)))
(defskeleton reflect
(vars (a b akey))
(defstrand init 2 (a a) (b b))
(non-orig (invk a) (invk b)))
(defskeleton reflect
(vars (a b akey))
(defstrand resp 1 (a a) (b (invk b)))
(non-orig (invk a) b))