packages feed

cpsa-4.4.1: coq/Examples/nsl.scm

(herald "Needham-Schroeder-Lowe")

(defprotocol nsl basic
  (defrole init
    (vars (ch chan) (a b akey) (n1 n2 text))
    (trace
     (send ch (enc n1 a b))
     (recv ch (enc n1 n2 b a))
     (send ch (enc n2 b)))
    (uniq-orig n1)
    (inputs ch (invk a) a b)
    (outputs n1 n2))
  (defrole resp
    (vars (ch chan) (b a akey) (n2 n1 text))
    (trace
     (recv ch (enc n1 a b))
     (send ch (enc n1 n2 b a))
     (recv ch (enc n2 b)))
    (uniq-orig n2)
    (inputs ch (invk b) b a)
    (outputs n2 n1)))

;;; The initiator point-of-view
(defskeleton nsl
  (vars (a b akey))
  (defstrand init 3 (a a) (b b))
  (non-orig (invk b) (invk a)))

;;; The responder point-of-view
(defskeleton nsl
  (vars (a b akey))
  (defstrand resp 3 (a a) (b b))
  (non-orig (invk b) (invk a)))