(encode-hex-string
            (md5-binary
             (concat "AUTHENTICATE:" digest-uri
-                    (if (string-equal "auth-int" qop)
+                    (if (member qop '("auth-int" "auth-conf"))
                         ":00000000000000000000000000000000")))))))
       (fillarray passphrase 0))))
 
         (nonce-count
          (or (sasl-client-property client 'nonce-count)
               sasl-digest-md5-nonce-count))
+        (qop
+         (or (sasl-client-property client 'qop)
+             (setq qop "auth")))
         (digest-uri
          (sasl-digest-md5-digest-uri
           (sasl-client-service client)(sasl-client-server client)))
          (or (sasl-client-property client 'cnonce)
              (sasl-digest-md5-cnonce))))
     (sasl-client-set-property client 'nonce-count (1+ nonce-count))
+    (unless (string= qop "auth")
+      (sasl-error (format "Unsupported \"qop-value\": %s" qop)))
     (concat
      "username=\"" (sasl-client-name client) "\","
      "realm=\"" realm "\","
      "cnonce=\"" cnonce "\","
      (format "nc=%08x," nonce-count)
      "digest-uri=\"" digest-uri "\","
+     "qop=" qop ","
      "response="
      (sasl-digest-md5-response-value
       (sasl-client-name client)
       (plist-get plist 'nonce)
       cnonce
       nonce-count
-      (or (sasl-client-property client 'qop)
-         "auth")
+      qop
       digest-uri
       (plist-get plist 'authzid)))))