Move here from ../gnus.
[bpt/emacs.git] / lisp / net / sasl-ntlm.el
CommitLineData
369fc5a6
GM
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
42authentication 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.
46Called from 'sasl-next-step.
47CLIENT is a vector [mechanism user service server sasl-client-properties]
48STEP 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
54challenge 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