emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to sasl-digest.el


From: Glenn Morris
Subject: [Emacs-diffs] Changes to sasl-digest.el
Date: Sun, 02 Dec 2007 21:50:44 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Glenn Morris <gm>       07/12/02 21:50:44

Index: sasl-digest.el
===================================================================
RCS file: sasl-digest.el
diff -N sasl-digest.el
--- sasl-digest.el      28 Nov 2007 07:52:37 -0000      1.2
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,159 +0,0 @@
-;;; sasl-digest.el --- DIGEST-MD5 module for the SASL client framework
-
-;; Copyright (C) 2000, 2007  Free Software Foundation, Inc.
-
-;; Author: Daiki Ueno <address@hidden>
-;;     Kenichi OKADA <address@hidden>
-;; Keywords: SASL, DIGEST-MD5
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 3, or (at your option)
-;; any later version.
-
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
-
-;;; Commentary:
-
-;; This program is implemented from draft-leach-digest-sasl-05.txt.
-;;
-;; It is caller's responsibility to base64-decode challenges and
-;; base64-encode responses in IMAP4 AUTHENTICATE command.
-;;
-;; Passphrase should be longer than 16 bytes. (See RFC 2195)
-
-;;; Commentary:
-
-(require 'sasl)
-(require 'hmac-md5)
-
-(defvar sasl-digest-md5-nonce-count 1)
-(defvar sasl-digest-md5-unique-id-function
-  sasl-unique-id-function)
-
-(defvar sasl-digest-md5-syntax-table
-  (let ((table (make-syntax-table)))
-    (modify-syntax-entry ?= "." table)
-    (modify-syntax-entry ?, "." table)
-    table)
-  "A syntax table for parsing digest-challenge attributes.")
-
-(defconst sasl-digest-md5-steps
-  '(ignore                             ;no initial response
-    sasl-digest-md5-response
-    ignore))                           ;""
-
-(defun sasl-digest-md5-parse-string (string)
-  "Parse STRING and return a property list.
-The value is a cons cell of the form \(realm nonce qop-options stale maxbuf
-charset algorithm cipher-opts auth-param)."
-  (with-temp-buffer
-    (set-syntax-table sasl-digest-md5-syntax-table)
-    (save-excursion
-      (insert string)
-      (goto-char (point-min))
-      (insert "(")
-      (while (progn (forward-sexp) (not (eobp)))
-       (delete-char 1)
-       (insert " "))
-      (insert ")")
-      (read (point-min-marker)))))
-
-(defun sasl-digest-md5-digest-uri (serv-type host &optional serv-name)
-  (concat serv-type "/" host
-         (if (and serv-name
-                  (not (string= host serv-name)))
-             (concat "/" serv-name))))
-
-(defun sasl-digest-md5-cnonce ()
-  (let ((sasl-unique-id-function sasl-digest-md5-unique-id-function))
-    (sasl-unique-id)))
-
-(defun sasl-digest-md5-response-value (username
-                                      realm
-                                      nonce
-                                      cnonce
-                                      nonce-count
-                                      qop
-                                      digest-uri
-                                      authzid)
-  (let ((passphrase
-        (sasl-read-passphrase
-         (format "DIGEST-MD5 passphrase for %s: "
-                 username))))
-    (unwind-protect
-       (encode-hex-string
-        (md5-binary
-         (concat
-          (encode-hex-string
-           (md5-binary (concat (md5-binary 
-                                (concat username ":" realm ":" passphrase))
-                               ":" nonce ":" cnonce
-                               (if authzid 
-                                   (concat ":" authzid)))))
-          ":" nonce
-          ":" (format "%08x" nonce-count) ":" cnonce ":" qop ":"
-          (encode-hex-string
-           (md5-binary
-            (concat "AUTHENTICATE:" digest-uri
-                    (if (member qop '("auth-int" "auth-conf"))
-                        ":00000000000000000000000000000000")))))))
-      (fillarray passphrase 0))))
-
-(defun sasl-digest-md5-response (client step)
-  (let* ((plist
-         (sasl-digest-md5-parse-string (sasl-step-data step)))
-        (realm
-         (or (sasl-client-property client 'realm)
-             (plist-get plist 'realm))) ;need to check
-        (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)))
-        (cnonce
-         (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 "\","
-     "nonce=\"" (plist-get plist 'nonce) "\","
-     "cnonce=\"" cnonce "\","
-     (format "nc=%08x," nonce-count)
-     "digest-uri=\"" digest-uri "\","
-     "qop=" qop ","
-     "response="
-     (sasl-digest-md5-response-value
-      (sasl-client-name client)
-      realm
-      (plist-get plist 'nonce)
-      cnonce
-      nonce-count
-      qop
-      digest-uri
-      (plist-get plist 'authzid)))))
-
-(put 'sasl-digest 'sasl-mechanism
-     (sasl-make-mechanism "DIGEST-MD5" sasl-digest-md5-steps))
-
-(provide 'sasl-digest)
-
-;;; arch-tag: 786e02ed-1bc4-4b3c-bf34-96c27e31084d
-;;; sasl-digest.el ends here




reply via email to

[Prev in Thread] Current Thread [Next in Thread]