packages feed

cpsa-3.6.8: tst/doorsep.scm

(herald doorsep (comment "Door Simple Example Protocol"))

(defprotocol doorsep basic
  (defrole person
    (vars (p d akey) (k skey) (t text))
    (trace
     (send (enc (enc k (invk p)) d))
     (recv (enc t k))
     (send t))
    (uniq-orig k)
    )
  (defrole door
    (vars (p d akey) (k skey) (t text))
    (trace
     (recv (enc (enc k (invk p)) d))
     (send (enc t k))
     (recv t))
    )
  (defrule trust
    (forall ((z strd) (p d akey) (k skey))
	    (implies
	     (and (p "person" z 1)
		  (p "person" "p" z p)
		  (p "person" "d" z d)
		  (p "person" "k" z k)
		  (fact trust p))
	     (and (non (invk d))
		  (uniq k))))))

(defskeleton doorsep
  (vars (p akey) (t text))
  (defstrand door 3 (p p) (t t))
  (non-orig (invk p))
  (uniq-orig t)
  (facts (trust p))
  (comment "Analyze from the door's perspective"))

(defskeleton doorsep
  (vars (p akey) (t text))
  (defstrand door 3 (p p) (t t))
  (non-orig (invk p))
  (uniq-orig t)
  (comment "Analyze from the door's perspective when we don't trust p"))