(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)))))