packages feed

cpsa-4.4.1: coq/Examples/yahalom.scm

;; Yahalom protocol

(herald yahalom
	(bound 20)
	)

(defprotocol yahalom basic

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

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

  (defrole serv-init
    (vars (pub chan) (s a b name) (na nb text))
    (trace
     (recv pub (cat b (enc a na nb (ltk b s))))
     )
    (inputs pub b (ltk b s))
    (outputs a na nb)
    )

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

  )

(defskeleton yahalom
  (vars (a b s name))
  (defstrand init 3 (a a) (b b) (s s))
  (non-orig (ltk a s) (ltk b s))
  )

(defskeleton yahalom
  (vars (b a s name))
  (defstrand resp 3 (b b) (a a) (s s))
  (non-orig (ltk b s) (ltk a s))
  )

(defskeleton yahalom
  (vars (s b name))
  (defstrand serv-init 1 (s s) (b b))
  (non-orig (ltk b s))
  )