cpsa-2.0.0: doc/or.scm
;;; Otway-Rees Protocol
;;; Standard version using variables of sort mesg
(defprotocol or basic
(defrole init (vars (a b s name) (na text) (k skey) (m text))
(trace
(send (cat m a b (enc na m a b (ltk a s))))
(recv (cat m (enc na k (ltk a s))))))
(defrole resp
(vars (a b s name) (nb text) (k skey) (m text) (x y mesg))
(trace
(recv (cat m a b x))
(send (cat m a b x (enc nb m a b (ltk b s))))
(recv (cat m y (enc nb k (ltk b s))))
(send y)))
(defrole serv (vars (a b s name) (na nb text) (k skey) (m text))
(trace
(recv (cat m a b (enc na m a b (ltk a s))
(enc nb m a b (ltk b s))))
(send (cat m (enc na k (ltk a s)) (enc nb k (ltk b s)))))
(uniq-orig k)))
(defskeleton or
(vars (nb text) (s a b name))
(defstrand resp 4 (a a) (b b) (s s) (nb nb))
(non-orig (ltk a s) (ltk b s))
(uniq-orig nb))