packages feed

cpsa-3.3.0: tst/fnof_woolam.scm

(herald "Woo-Lam Protocol, using fnof to emulate ltk function")

(defprotocol woolam basic
  (defrole init (vars (a s name) (n text) (ltkas skey))
    (trace
     (init s)
     (send a)
     (recv n)
     (send (enc n ltkas)))
    (non-orig ltkas)
    (fn-of ("ltk" (ltkas (cat a s))))
    (fn-of ("ltk-inv" ((cat a s) ltkas)))
 )
  (defrole resp (vars (a s b name) (n text) (ltkas ltkbs skey))
    (trace
     (init (cat b s))
     (recv a)
     (send n)
     (recv (enc n ltkas))
     (send (enc a (enc n ltkas) ltkbs))
     (recv (enc a n ltkbs)))
    (non-orig ltkbs)
    (uniq-orig n)
    (fn-of ("ltk" (ltkas (cat a s)) (ltkbs (cat b s))))
    (fn-of ("ltk-inv" ((cat a s) ltkas) ((cat b s) ltkbs)))
 )
  (defrole serv (vars (a s b name) (n text) (ltkbs ltkas skey))
    (trace
     (init (cat b s))
     (recv (enc a (enc n ltkas) ltkbs))
     (send (enc a n ltkbs)))
    (fn-of ("ltk" (ltkas (cat a s)) (ltkbs (cat b s))))
    (fn-of ("ltk-inv" ((cat a s) ltkas) ((cat b s) ltkbs)))
 )
)

(defskeleton woolam (vars (n text) (a s name) (ltkas skey))
  (defstrand resp 5 (a a) (s s) (ltkas ltkas))
  (non-orig ltkas))

;;;  In this version, fn-of is only used for the "forward" direction
;;; of the ltk function.  In other words, if y = ltk(a,b) and z =
;;; ltk(a,b) then y = z.  But if y = ltk(a,b) and z = ltk(c,d) it is
;;; not necessarily the case that a = b and c = d.
(defprotocol woolam2 basic
  (defrole init (vars (a s name) (n text) (ltkas skey))
    (trace
     (init s)
     (send a)
     (recv n)
     (send (enc n ltkas)))
    (non-orig ltkas)
    (fn-of ("ltk" (ltkas (cat a s))))
 )
  (defrole resp (vars (a s b name) (n text) (ltkas ltkbs skey))
    (trace
     (init (cat b s))
     (recv a)
     (send n)
     (recv (enc n ltkas))
     (send (enc a (enc n ltkas) ltkbs))
     (recv (enc a n ltkbs)))
    (non-orig ltkbs)
    (uniq-orig n)
    (fn-of ("ltk" (ltkas (cat a s)) (ltkbs (cat b s))))
 )
  (defrole serv (vars (a s b name) (n text) (ltkbs ltkas skey))
    (trace
     (init (cat b s))
     (recv (enc a (enc n ltkas) ltkbs))
     (send (enc a n ltkbs)))
    (fn-of ("ltk" (ltkas (cat a s)) (ltkbs (cat b s))))
 )
)

(defskeleton woolam2 (vars (n text) (ltkas skey) (a s name))
  (defstrand resp 5 (a a) (s s) (ltkas ltkas))
  (non-orig ltkas))