X-Git-Url: http://cgit.sxemacs.org/?p=gnus;a=blobdiff_plain;f=lisp%2Fmd4.el;h=372d33d28959d35137fa48901159a50ce9962d3f;hp=33d0d323954df3261640f2667ada8e22c12df1a4;hb=d8b872b8a3b98292e6f3e81f5d40ba263c55ce2b;hpb=125d88b46ad2efa065f06d5dac37a245b488985a diff --git a/lisp/md4.el b/lisp/md4.el index 33d0d3239..372d33d28 100644 --- a/lisp/md4.el +++ b/lisp/md4.el @@ -1,28 +1,26 @@ ;;; md4.el --- MD4 Message Digest Algorithm. -;; Copyright (C) 2004 Free Software Foundation, Inc. -;; Copyright (C) 2001 Taro Kawagishi +;; Copyright (C) 2001, 2004, 2007-2015 Free Software Foundation, Inc. + ;; Author: Taro Kawagishi ;; Keywords: MD4 ;; Version: 1.00 ;; Created: February 2001 -;; This file is part of FLIM (Faithful Library about Internet Message). +;; This file is part of GNU Emacs. -;; This program is free software; you can redistribute it and/or modify +;; 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 2, or (at your option) -;; any later version. -;; -;; This program is distributed in the hope that it will be useful, +;; 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 this program; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; along with GNU Emacs. If not, see . ;;; Code: @@ -30,11 +28,12 @@ ;;; MD4 hash calculation (defvar md4-buffer (make-vector 4 '(0 . 0)) - "work buffer of four 32-bit integers") + "Work buffer of four 32-bit integers.") (defun md4 (in n) - "Returns the MD4 hash string of 16 bytes long for a string IN of N -bytes long. N is required to handle strings containing character 0." + "Return the MD4 hash for a string IN of length N bytes. +The returned hash is 16 bytes long. N is required to handle +strings containing the character 0." (let (m (b (cons 0 (* n 8))) (i 0) @@ -88,11 +87,10 @@ bytes long. N is required to handle strings containing character 0." (defsubst md4-H (x y z) (logxor x y z)) (defmacro md4-make-step (name func) - (` - (defun (, name) (a b c d xk s ac) + `(defun ,name (a b c d xk s ac) (let* - ((h1 (+ (car a) ((, func) (car b) (car c) (car d)) (car xk) (car ac))) - (l1 (+ (cdr a) ((, func) (cdr b) (cdr c) (cdr d)) (cdr xk) (cdr ac))) + ((h1 (+ (car a) (,func (car b) (car c) (car d)) (car xk) (car ac))) + (l1 (+ (cdr a) (,func (cdr b) (cdr c) (cdr d)) (cdr xk) (cdr ac))) (h2 (logand 65535 (+ h1 (lsh l1 -16)))) (l2 (logand 65535 l1)) ;; cyclic shift of 32 bits integer @@ -102,7 +100,7 @@ bytes long. N is required to handle strings containing character 0." (l3 (logand 65535 (if (> s 15) (+ (lsh l2 (- s 32)) (lsh h2 (- s 16))) (+ (lsh l2 s) (lsh h2 (- s 16))))))) - (cons h3 l3))))) + (cons h3 l3)))) (md4-make-step md4-round1 md4-F) (md4-make-step md4-round2 md4-G) @@ -118,8 +116,9 @@ bytes long. N is required to handle strings containing character 0." (cons (logand (car x) (car y)) (logand (cdr x) (cdr y)))) (defun md4-64 (m) - "Calculate md4 of 64 bytes chunk M which is represented as 16 pairs of -32 bits integers. The resulting md4 value is placed in md4-buffer." + "Calculate MD4 hash of M. +M is a 64-bytes chunk, represented as 16 pairs of 32-bit integers. +The resulting MD4 value is placed in `md4-buffer'." (let ((a (aref md4-buffer 0)) (b (aref md4-buffer 1)) (c (aref md4-buffer 2)) @@ -202,8 +201,9 @@ bytes long. N is required to handle strings containing character 0." str)) (defun md4-pack-int32 (int32) - "Pack 32 bits integer in a 4 bytes string as little endian. A 32 bits -integer is represented as a pair of two 16 bits integers (cons high low)." + "Pack 32 bits integer in a 4 bytes string as little endian. +A 32 bits integer is represented as a pair of two 16 bits +integers (cons high low)." (let ((str (make-string 4 0)) (h (car int32)) (l (cdr int32))) (aset str 0 (logand l 255)) @@ -225,5 +225,4 @@ integer is represented as a pair of two 16 bits integers (cons high low)." (provide 'md4) -;;; arch-tag: 99d706fe-089b-42ea-9507-67ae41091e6e ;;; md4.el ends here