view lisp/net/sasl-ntlm.el @ 96303:ddedcecb18ef

* unexnext.c: * m/ews4800.h: * m/hp9000s300.h: * m/ibm370aix.h: * m/mips-siemens.h: * m/ncr386.h: * m/next.h: * m/pmax.h: * m/powerpcle.h: * m/tandem-s2.h: * s/386bsd.h: * s/bsd386.h: * s/bsd4-1.h: * s/bsd4-2.h: * s/bsdos2-1.h: * s/bsdos2.h: * s/bsdos3.h: * s/bsdos4.h: * s/nextstep.h: * s/ultrix4-3.h: * s/usg5-0.h: * s/usg5-2-2.h: * s/usg5-2.h: * s/usg5-4-3.h: * s/ux4800.h: * s/uxpds.h: * s/uxpv.h: Remove support for obsolete systems. * s/hpux.h, s/hpux10.h, s/hpux8.h, s/hpux9.h, s/hpux9shr.h: Remove, insert contents in s/hpux-10.20.h * s/aix3-1.h, s/aix3-2-5.h, s/aix3-2.h, s/aix4-1.h, s/aix4.h: Remove, insert contents in s/aix-4.2.h * s/usg5-3.h: Remove, insert contents in s/usg5-4.h. * s/bsd4-3.h: Rename to .. * s/bsd-common.h: ... this. * src/data.c: * src/doc.c: * src/ecrt0.c: * src/emacs.c: * src/fileio.c: * src/floatfns.c: * src/keyboard.c: * src/mem-limits.h: * src/print.c: * src/process.c: * src/sysdep.c: * src/syssignal.h: * src/systty.h: * src/syswait.h: * src/term.c: * src/unexec.c: * src/unexelf.c: * src/unexhp9k800.c: * src/m/hp800.h: * src/m/ibmrs6000.h: * src/m/mips.h: * src/m/vax.h: * src/s/darwin.h: * src/s/freebsd.h: * src/s/gnu.h: * src/s/ms-w32.h: * src/s/msdos.h: * src/s/netbsd.h: * src/s/template.h: Remove references to obsolete variables. * Makefile.in: Add dependencies for all unexec files. (admindir): Remove unused variable. (UNEXEC_SRC): Remove references. * config.nt: Remove reference to UNEXEC_SRC. * lwlib.c: Remove references to obsolete variables. * fakemail.c: Remove references to obsolete variables. * os.texi: Remove references to obsolete systems. * configure.in: * configure: Remove references to obsolete systems.
author Dan Nicolaescu <dann@ics.uci.edu>
date Thu, 26 Jun 2008 04:24:54 +0000
parents 91e5880a36c1
children ce3cca778d10
line wrap: on
line source

;;; sasl-ntlm.el --- NTLM (NT Lan Manager) module for the SASL client framework

;; Copyright (C) 2000, 2007, 2008  Free Software Foundation, Inc.

;; Author: Taro Kawagishi <tarok@transpulse.org>
;; Keywords: SASL, NTLM
;; Version: 1.00
;; Created: February 2001

;; 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 of the License, 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.  If not, see <http://www.gnu.org/licenses/>.

;;; Commentary:

;; This is a SASL interface layer for NTLM authentication message
;; generation by ntlm.el

;;; Code:

(require 'sasl)
(require 'ntlm)

(defconst sasl-ntlm-steps
  '(ignore				;nothing to do before making
    sasl-ntlm-request			;authentication request
    sasl-ntlm-response)			;response to challenge
  "A list of functions to be called in sequnece for the NTLM
authentication steps.  Ther are called by 'sasl-next-step.")

(defun sasl-ntlm-request (client step)
  "SASL step function to generate a NTLM authentication request to the server.
Called from 'sasl-next-step.
CLIENT is a vector [mechanism user service server sasl-client-properties]
STEP is a vector [<previous step function> <result of previous step function>]"
  (let ((user (sasl-client-name client)))
    (ntlm-build-auth-request user)))

(defun sasl-ntlm-response (client step)
  "SASL step function to generate a NTLM response against the server
challenge stored in the 2nd element of STEP.  Called from 'sasl-next-step."
  (let* ((user (sasl-client-name client))
	 (passphrase
	  (sasl-read-passphrase (format "NTLM passphrase for %s: " user)))
	 (challenge (sasl-step-data step)))
    (ntlm-build-auth-response challenge user
			      (ntlm-get-password-hashes passphrase))))

(put 'sasl-ntlm 'sasl-mechanism
     (sasl-make-mechanism "NTLM" sasl-ntlm-steps))

(provide 'sasl-ntlm)

;; arch-tag: 1d9164c1-1df0-418f-b7ab-360157fd05dc
;;; sasl-ntlm.el ends here