anchor.diff:  	    number (ash number -8)))
       key))
   
  +(defun dh-conversation-key ()
  +  "Generate a random 56-bit (8-octet) DES key to be used as the conversation key"
  +  (let ((key (nibbles:make-octet-vector 8)))
  +    (dotimes (i 8)
  +      (let ((n (random 256)))
  +	(when (zerop (logcount n))
  +	  (setf n (1+ n)))
  +	(setf (aref key i) n)))
  +    key))
  +
   (defun dh-secret-key ()
     "Generate a random secret key"
     (do ((secret 0)
  
positive.code: ;; the verifier sent by the client
  (defxstruct authdes-verf-client ()
    (adv-timestamp (:varray* :octet)) ;; encrypted timestamp
    (adv-winverf (:array :octet 4))) ;; encrypted (window - 1)
  
  ;; the verifier sent by the server 
  (defxstruct authdes-verf-server ()
  
negative.code: (defvar *des-public-keys* nil
    "List of public keys for each client that may talk to the server.")
  
  (defstruct des-key fullname key nickname)
  
  (defun add-des-public-key (fullname key)
    (push (make-des-key :fullname fullname
  