cpsa-3.3.0: tst/dh-ca.scm
(herald dhca (algebra diffie-hellman))
(defprotocol dhca diffie-hellman
(defrole init
(vars (x expn) (a b ca name) (h base) (n text))
(trace
(send (enc "reg" (exp (gen) x) a (privk a)))
(recv (enc (exp (gen) x) a (privk ca)))
(send (cat (exp (gen) x) (enc (exp (gen) x) a (privk ca))))
(recv (cat h (enc h b (privk ca)) (enc n (exp h x))))
(send (enc "check" n (exp h x))))
(uniq-gen x)
(non-orig (privk ca)))
(defrole resp
(vars (y expn) (a b ca name) (h base) (n text))
(trace
(send (enc "reg" (exp (gen) y) b (privk b)))
(recv (enc (exp (gen) y) b (privk ca)))
(recv (cat h (enc h a (privk ca))))
(send (cat (exp (gen) y) (enc (exp (gen) y) b (privk ca))
(enc n (exp h y))))
(recv (enc "check" n (exp h y))))
(uniq-gen y)
(non-orig (privk ca)))
(defrole ca (vars (subject ca name) (h base))
(trace
(recv (enc "reg" h subject (privk subject)))
(send (enc h subject (privk ca))))
(non-orig (privk subject))
)
(comment A diffie-hellman exchange which uses a certificate
authority to certify long-term DH values)
)
(defskeleton dhca
(vars )
(defstrand init 5 )
(comment Full initiator POV No need to make extra assumptions))
(defskeleton dhca
(vars (n text))
(defstrand resp 5 (n n))
(uniq-orig n)
(comment Full responder point of view with freshly chosen n)
)
(defskeleton dhca
(vars (a b ca name) (x y expn) (n text))
(defstrand init 5 (x x) (h (exp (gen) y)) (ca ca) (a a) (b b) (n n))
(defstrand resp 5 (y y) (h (exp (gen) x)) (ca ca) (a a) (b b) (n n))
(uniq-orig n)
(comment point of view in which init and resp each complete and
they agree on the relevant parameters)
)