packages feed

cpsa-4.4.1: coq/Examples/otway_rees.scm

;; Simplified Otway-Rees protocol
;; As described in "Prudent Engineering Practices"
;; by Abadi and Needham

(herald otway-rees)

(defprotocol otway-rees basic

  (defrole init
    (vars (pub chan) (a b s name) (na text) (kab skey))
    (trace
     (send pub (cat a b na))
     (recv pub (enc na a b kab (ltk a s)))
     )
    (uniq-orig na)
    (inputs pub a b (ltk a s))
    (outputs kab)
    )

  (defrole resp
    (vars (pub1 pub2 chan) (b a s name) (na nb text) (kab skey)
	  (pkg mesg))
    (trace
     (recv pub1 (cat a b na))
     (send pub2 (cat a b na nb))
     (recv pub2 (cat pkg (enc nb a b kab (ltk b s))))
     (send pub1 pkg)
     )
    (uniq-orig nb)
    (inputs pub1 pub2 b (ltk b s))
    (outputs a kab)
    )

  (defrole serv
    (vars (pub chan) (s a b name) (na nb text) (kab skey))
    (trace
     (recv pub (cat a b na nb))
     (send pub (cat (enc na a b kab (ltk a s))
		    (enc nb a b kab (ltk b s))))
     )
    (uniq-orig kab)
    (inputs pub a b (ltk a s) (ltk b s))
    (outputs kab)
    )

  )

(defskeleton otway-rees
  (vars (a s name))
  (defstrand init 2 (a a) (s s))
  (non-orig (ltk a s))
  )

(defskeleton otway-rees
  (vars (b s name))
  (defstrand resp 4 (b b) (s s))
  (non-orig (ltk b s))
  )

(defskeleton otway-rees
  (vars (s a b name))
  (defstrand serv 2 (s s) (a a) (b b))
  (non-orig (ltk a s) (ltk b s))
  )