X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=sasl-digest.el;h=9e061b75b49955cdff6284171f357280f93f4e90;hb=bb8ef91e24323a85c97cd39546daf8d079cbae57;hp=a1b08b1c14837e330faa6c62937bb1a428f98cf9;hpb=d636b504b66ac4e69339ff1a6c261acfdf359b12;p=elisp%2Fflim.git diff --git a/sasl-digest.el b/sasl-digest.el index a1b08b1..9e061b7 100644 --- a/sasl-digest.el +++ b/sasl-digest.el @@ -104,7 +104,7 @@ charset algorithm cipher-opts auth-param)." (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)))) @@ -117,6 +117,9 @@ charset algorithm cipher-opts auth-param)." (nonce-count (or (sasl-client-property client 'nonce-count) sasl-digest-md5-nonce-count)) + (qop + (or (sasl-client-property client 'qop) + "auth")) (digest-uri (sasl-digest-md5-digest-uri (sasl-client-service client)(sasl-client-server client))) @@ -124,6 +127,8 @@ charset algorithm cipher-opts auth-param)." (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 "\"," @@ -131,27 +136,17 @@ charset algorithm cipher-opts auth-param)." "cnonce=\"" cnonce "\"," (format "nc=%08x," nonce-count) "digest-uri=\"" digest-uri "\"," - "response=\"" + "qop=" qop "," + "response=" (sasl-digest-md5-response-value (sasl-client-name client) realm (plist-get plist 'nonce) cnonce nonce-count - (or (plist-get plist 'qop) - "auth") + qop digest-uri - (plist-get plist 'authzid)) - "\"," - (mapconcat - #'identity - (delq nil - (mapcar (lambda (prop) - (let ((value (sasl-client-property client prop))) - (if value - (format "%s=%s" prop value)))) - '(maxbuf charset cipher authzid))) - ",")))) + (plist-get plist 'authzid))))) (put 'sasl-digest 'sasl-mechanism (sasl-make-mechanism "DIGEST-MD5" sasl-digest-md5-steps))