Update of /project/crypticl/cvsroot/crypticl/src In directory clnet:/tmp/cvs-serv6364
Modified Files: common.lisp Log Message: Adding utils needed by SHA-256.
--- /project/crypticl/cvsroot/crypticl/src/common.lisp 2005/10/01 16:34:44 1.4 +++ /project/crypticl/cvsroot/crypticl/src/common.lisp 2007/01/06 12:42:11 1.5 @@ -104,14 +104,22 @@ (ldb (byte 32 0) (reduce #'+ args)))
-(defun 32-left-rot (a by) +(defun left-rot-32 (a by) "Left rotation modulo 32. If number longer than 32 bits, ignore extra bits." - (let ((break (- 32 by))) - (dpb (ldb (byte break 0) a) - (byte break by) - (ldb (byte by break) - a)))) - + (let ((pivot (- 32 by))) + (dpb (ldb (byte pivot 0) a) + (byte pivot by) + (ldb (byte by pivot) a)))) + +(defun right-rot-32 (a by) + "Right rotation modulo 32. If number longer than 32 bits, ignore extra bits. + +1) Shift the (32 - by) left bits to the right by places +2) Shift the right by bits all over to the left. +" + (let ((leftpart (- 32 by))) + (+ (ash a (- by)) + (ash (ldb (byte by 0) a) leftpart))))
(defun make-string-reader-function (string) "Return a function that reads one byte at a time from a string or nil