    rcvd-xtn]
   (let [rcvd-prfx (-> header
                       vec
-                      (subvec 0 (dec shared/header-length))
+                      (subvec 0 (dec K/header-length))
                       byte-array)
         verified (not= 0
                        ;; Q: Why did DJB use a bitwise and here?

          {:keys [::shared/text ::shared/working-nonce]} working-area]
      (log/info (str "Incoming HELLO\n"
                     "Client short-term PK:\n"
                     (with-out-str (bs/print-bytes client-short-pk))
                     "\nMy long-term PK:\n"
                     (with-out-str (bs/print-bytes (.getPublicKey long-keys)))
                     "\nOur shared secret:\n"
                     (with-out-str (bs/print-bytes shared-secret))))
      (b-t/byte-copy! working-nonce
                      shared/hello-nonce-prefix)
      (.readBytes nonce-suffix working-nonce shared/client-nonce-prefix-length shared/client-nonce-suffix-length)

    (let [actual (.array buffer)]
      (crypto/secret-box actual actual K/server-cookie-length working-nonce minute-key)
      (log/info (str "Encrypted cookie:\n"
                     (with-out-str (b-s/print-bytes actual))))
      ;; Copy that encrypted cookie into the text working area
      (.getBytes buffer 0 text 32 K/server-cookie-length)
      (log/info (str "After copying " K/server-cookie-length " bytes of that into text, it looks like\n"
                     (with-out-str (b-s/print-bytes text))))
      ;; Along with the nonce
      ;; Note that this overwrites the first 16 bytes of the box we just wrapped.
      ;; Go with the assumption that those are the initial garbage 0 bytes that should
