changeset 19633:25317a11d7a1

(pop3-md5): New function. (pop3-apop): Use pop3-md5, not md5. (pop3-md5-program): New variable.
author Richard M. Stallman <rms@gnu.org>
date Sun, 31 Aug 1997 07:58:03 +0000
parents eb2d6de004b1
children 118761d47324
files lisp/gnus/pop3.el
diffstat 1 files changed, 15 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/gnus/pop3.el	Sun Aug 31 04:24:03 1997 +0000
+++ b/lisp/gnus/pop3.el	Sun Aug 31 07:58:03 1997 +0000
@@ -265,15 +265,28 @@
 		(pop3-quit process)))))
     ))
 
+(defvar pop3-md5-program "md5"
+  "*Program to encode its input in MD5.")
+
+(defun pop3-md5 (string)
+  (with-temp-buffer
+    (insert string)
+    (call-process-region (point-min) (point-max)
+			 (or shell-file-name "/bin/sh")
+			 t (current-buffer) nil
+			 "-c" pop3-md5-program)
+    ;; The meaningful output is the first 32 characters.
+    ;; Don't return the newline that follows them!
+    (buffer-substring (point-min) (+ (point-min) 32))))
+
 (defun pop3-apop (process user)
   "Send alternate authentication information to the server."
-  (if (not (fboundp 'md5)) (autoload 'md5 "md5"))
   (let ((pass pop3-password))
     (if (and pop3-password-required (not pass))
 	(setq pass
 	      (pop3-read-passwd (format "Password for %s: " pop3-maildrop))))
     (if pass
-	(let ((hash (md5 (concat pop3-timestamp pass))))
+	(let ((hash (pop3-md5 (concat pop3-timestamp pass))))
 	  (pop3-send-command process (format "APOP %s %s" user hash))
 	  (let ((response (pop3-read-response process t)))
 	    (if (not (and response (string-match "+OK" response)))