packages feed

cpsa-4.4.4: tst/dhstatic-state.scm

(herald dhstatic-state
	(algebra diffie-hellman)
	(bound 16))

(defprotocol dhstatic-state diffie-hellman
  (defrole cert
    (vars (subj ca name) (serial data) (galpha mesg))
    (trace
     (recv (sig (cert-req subj galpha ca) (privk "sig" subj)))
     (send (sig (cert subj galpha ca serial)
		(privk "sig" ca))))
    (uniq-orig serial)
    (comment "Certificate Authority"))

  (defrole get-cert
    (vars (self ca name) (serial data) (ra rndx)
	  (static-key locn) (ignore mesg))
    (trace
     (send (sig (cert-req self (exp (gen) ra) ca) (privk "sig" self)))
     (recv (sig (cert self (exp (gen) ra) ca serial)
		(privk "sig" ca)))
     (load static-key ignore)
     (stor static-key (cat "privkey" self ra serial ca)))

    (uniq-gen ra)
    (comment "Get certified"))

  (defrole init
    (vars (a b ca name) (ra rndx) (serial-a serial-b data)
	  (alpha expt) (n text) (static-key locn))
    (trace
     (load static-key (cat "privkey" a ra serial-a ca))
     (recv (sig (cert b (exp (gen) alpha) ca serial-b)
		(privk "sig" ca)))
     (send (enc n a b serial-a serial-b (exp (exp (gen) alpha) ra)))
     (recv n))
    (uniq-orig n)
    (gen-st (cat "privkey" a ra serial-a ca))
    (facts (neq a b))
    (comment "Initiator is A"))

  (defrole resp
    (vars (a b ca name) (rb rndx) (serial-b serial-a data)
	  (alpha expt) (n text) (static-key locn))
    (trace
     (load static-key (cat "privkey" b rb serial-b ca))
     (recv (sig (cert a (exp (gen) alpha) ca serial-a)
		(privk "sig" ca)))
     (recv (enc n a b serial-a serial-b (exp (exp (gen) alpha) rb)))
     (send n))
    (facts (neq a b))
    (gen-st (cat "privkey" b rb serial-b ca))
    (comment "Responder is B"))

  (lang (cert-req (tupl 3))
	(cert (tupl 4))
	(sig sign)))

(defskeleton dhstatic-state
  (vars (ca b name))
  (defstrand init 4 (ca ca) (b b))
  (non-orig (privk "sig" ca) (privk "sig" b)))

(defskeleton dhstatic-state
  (vars (ca a name))
  (defstrand resp 4 (ca ca) (a a))
  (non-orig (privk "sig" ca) (privk "sig" a)))