anchor.diff:  FULLNAME and KEY must be provided."
     (make-opaque-auth :auth-des 
   		    (if nickname
  -			(make-xunion :adn-nickname nickname)
  +			(make-xunion :nickname nickname)
   			(let ((c (make-dh-cipher public-key)))
   			  (make-xunion 
  -			   :adn-fullname 
  +			   :fullname 
   			   (make-authdes-fullname 
   			    :name fullname
   			    :key (dh-encrypt c conversation-key)
  
positive.code: 						   v))
  				     0 4)))))))
  
  
  (defun pack-and-encrypt (key timestamp window)
    (let ((v (flexi-streams:with-output-to-sequence (s)
  	     (%write-authdes-timestamp s timestamp)
  	     (nibbles:write-ub32/be window s)
  	     (nibbles:write-ub32/be (1- window) s))))
      (dh-encrypt (make-dh-cipher key t)
  		v)))
  
  (defun make-des-client-verifier (key window)
    (let ((v (pack-and-encrypt key (des-timestamp) window)))
      (make-authdes-verf-client :adv-timestamp (subseq v 0 8)
  			      :adv-winverf (subseq v 12 16))))
  
  (defun make-des-server-verifier (key timestamp window nickname)
    (let ((v (pack-and-encrypt key 
  			     (des-timestamp (1- (getf timestamp :seconds))
  					    (getf timestamp :useconds))
  			     window)))
      (make-authdes-verf-server :adv-timeverf (subseq v 0 8)
  			      :adv-nickname nickname)))
  
  
  
  
negative.code: 
  ;; client contexts -- basically information about which clients have been authenticated
  (defstruct des-context 
    fullname nickname timestamp key window)
  
  (defvar *des-contexts* (make-cyclic-buffer 10))
  
  (defun add-des-context (fullname timestamp key window)
    (let ((c (make-des-context :fullname fullname
  			     :nickname (random (expt 2 32))
  			     :timestamp timestamp
  			     :key key
  			     :window window)))
      (cyclic-push *des-contexts* c)
      c))
  
  