anchor.diff:             (read-challenge-message stream)
            (let ((new-challenge (generate-challenge))
                  (digest (calculate-digest challenge cookie)))
  -           (write-sequence (make-challenge-reply-message new-challenge digest)
  -                           stream)
  +           (write-challenge-reply-message stream new-challenge digest)
              (finish-output stream)
              (unless (equal-digests (calculate-digest new-challenge cookie)
                                     (read-challenge-ack-message stream))
  
positive.code: (defun perform-server-handshake (stream cookie)
    (multiple-value-bind (version flags full-node-name) (read-name-message stream)
      ;; TODO: Check if node is allowed to connect to us
      (write-sequence (make-status-message "ok") stream)
      (let ((challenge (generate-challenge)))
        (write-sequence (make-challenge-message +highest-version-supported+
                                                (capability-flags)
                                                challenge
                                                (this-node))
                        stream)
        (finish-output stream)
        (multiple-value-bind (new-challenge digest)
            (read-challenge-reply-message stream)
          (unless (equal-digests (calculate-digest challenge cookie) digest)
            (error 'handshake-failed-error
                   :reason "Received incorrect digest"))
          (write-sequence
           (make-challenge-ack-message (calculate-digest new-challenge cookie))
           stream)
          (finish-output stream)
          (values full-node-name flags version) )))) ;; Connect successful
  
  
negative.code: ;; 16 bytes: Digest
  ;;
  
  (defun write-challenge-ack-message (stream digest)
    (write-uint16 (1+ (length digest)) stream)
    (write-char #\a stream)
    (write-sequence digest stream)
    t)
  
  (defun read-challenge-ack-message (stream)
    (handler-case
  