packages feed

cpsa-2.0.0: tst/dh.sch

;; Diffie-Hellman Key Exchange

;; The Diffie-Hellman problem is given (exp (gen) m), and (exp (gen) n),
;; compute the value of (exp (gen) (mul m n)).

(defprotocol dhke diffie-hellman
  (defrole init (vars (a b name) (g base) (m expn))
    (trace
     (send (cat a (enc "i" (exp (gen) m) (privk a))))
     (recv (cat b (enc g (privk b)) (enc "r" a b (exp g m))))
     (send (enc "i" a b (exp g m))))
    (uniq-orig (exp (gen) m)))
  (defrole resp (vars (a b name) (h base) (n expn))
    (trace
     (recv (cat a (enc "i" h (privk a))))
     (send (cat b (enc (exp (gen) n) (privk b)) (enc "r" a b (exp h n))))
     (recv (enc "i" a b (exp h n))))
    (uniq-orig (exp (gen) n))))

(defskeleton dhke (vars (a b name) (h base) (n expn))
  (defstrand resp 3 (a a) (b b) (h h) (n n))
  (non-orig (privk a) (privk b) (exp h n)))

(defskeleton dhke (vars (a b name))
  (defstrand resp 3 (a a) (b b))
  (non-orig (privk a) (privk b)))