86996
|
1 ;;; sasl-ntlm.el --- NTLM (NT Lan Manager) module for the SASL client framework
|
|
2
|
|
3 ;; Copyright (C) 2000, 2007 Free Software Foundation, Inc.
|
|
4
|
|
5 ;; Author: Taro Kawagishi <tarok@transpulse.org>
|
|
6 ;; Keywords: SASL, NTLM
|
|
7 ;; Version: 1.00
|
|
8 ;; Created: February 2001
|
|
9
|
|
10 ;; This file is part of GNU Emacs.
|
|
11
|
|
12 ;; GNU Emacs is free software; you can redistribute it and/or modify
|
|
13 ;; it under the terms of the GNU General Public License as published by
|
|
14 ;; the Free Software Foundation; either version 3, or (at your option)
|
|
15 ;; any later version.
|
|
16
|
|
17 ;; GNU Emacs is distributed in the hope that it will be useful,
|
|
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
20 ;; GNU General Public License for more details.
|
|
21
|
|
22 ;; You should have received a copy of the GNU General Public License
|
|
23 ;; along with GNU Emacs; see the file COPYING. If not, write to the
|
|
24 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
25 ;; Boston, MA 02110-1301, USA.
|
|
26
|
|
27 ;;; Commentary:
|
|
28
|
|
29 ;; This is a SASL interface layer for NTLM authentication message
|
|
30 ;; generation by ntlm.el
|
|
31
|
|
32 ;;; Code:
|
|
33
|
|
34 (require 'sasl)
|
|
35 (require 'ntlm)
|
|
36
|
|
37 (defconst sasl-ntlm-steps
|
|
38 '(ignore ;nothing to do before making
|
|
39 sasl-ntlm-request ;authentication request
|
|
40 sasl-ntlm-response) ;response to challenge
|
|
41 "A list of functions to be called in sequnece for the NTLM
|
|
42 authentication steps. Ther are called by 'sasl-next-step.")
|
|
43
|
|
44 (defun sasl-ntlm-request (client step)
|
|
45 "SASL step function to generate a NTLM authentication request to the server.
|
|
46 Called from 'sasl-next-step.
|
|
47 CLIENT is a vector [mechanism user service server sasl-client-properties]
|
|
48 STEP is a vector [<previous step function> <result of previous step function>]"
|
|
49 (let ((user (sasl-client-name client)))
|
|
50 (ntlm-build-auth-request user)))
|
|
51
|
|
52 (defun sasl-ntlm-response (client step)
|
|
53 "SASL step function to generate a NTLM response against the server
|
|
54 challenge stored in the 2nd element of STEP. Called from 'sasl-next-step."
|
|
55 (let* ((user (sasl-client-name client))
|
|
56 (passphrase
|
|
57 (sasl-read-passphrase (format "NTLM passphrase for %s: " user)))
|
|
58 (challenge (sasl-step-data step)))
|
|
59 (ntlm-build-auth-response challenge user
|
|
60 (ntlm-get-password-hashes passphrase))))
|
|
61
|
|
62 (put 'sasl-ntlm 'sasl-mechanism
|
|
63 (sasl-make-mechanism "NTLM" sasl-ntlm-steps))
|
|
64
|
|
65 (provide 'sasl-ntlm)
|
|
66
|
|
67 ;;; arch-tag: 1d9164c1-1df0-418f-b7ab-360157fd05dc
|
|
68 ;;; sasl-ntlm.el ends here
|