+2008-05-08 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * rfc2104.el (rfc2104-hexstring-to-bitstring): Rename it back from
+ rfc2104-hexstring-to-byte-list. Return a unibyte string.
+ (rfc2104-hash): Use it.
+
2008-05-08 Juanma Barranquero <lekktu@gmail.com>
* gnus-art.el (gnus-article-toggle-truncate-lines):
(gnus-extract-address-component-email): Convenience functions around
`gnus-extract-address-components'.
- * gnus-registry.el (gnus-registry-split-fancy-with-parent): Use
- `gnus-extract-address-component-email' to fix bug of comparing full
+ * gnus-registry.el (gnus-registry-split-fancy-with-parent):
+ Use `gnus-extract-address-component-email' to fix bug of comparing full
sender name to `user-mail-address'.
2008-05-05 Teodor Zlatanov <tzz@lifelogs.com>
2008-02-01 Kenichi Handa <handa@m17n.org>
- * rfc2104.el (rfc2104-hexstring-to-byte-list): Renamed from
+ * rfc2104.el (rfc2104-hexstring-to-byte-list): Rename from
rfc2104-hexstring-to-bitstring and changed to return a byte list.
(rfc2104-hash): Convert the result of concat to unibyte string.
(gnus-gnus-to-quick-newsrc-format): Insert coding cookie.
* mm-util.el (mm-hack-charsets, mm-iso-8859-15-compatible)
- (mm-iso-8859-x-to-15-table, mm-iso-8859-x-to-15-region): Deleted.
+ (mm-iso-8859-x-to-15-table, mm-iso-8859-x-to-15-region): Delete.
(mm-find-mime-charset-region): Remove hack-charsets stuff.
2008-01-24 Michael Sperber <sperber@deinprogramm.de>
;;; Commentary:
-;;; This is a quick'n'dirty, low performance, implementation of RFC2104.
-;;;
-;;; Example:
-;;;
-;;; (require 'md5)
-;;; (rfc2104-hash 'md5 64 16 "Jefe" "what do ya want for nothing?")
-;;; "750c783e6ab0b503eaa86e310a5db738"
-;;;
-;;; (require 'sha-1)
-;;; (rfc2104-hash 'sha1-encode 64 20 "Jefe" "what do ya want for nothing?")
-;;; "effcdf6ae5eb2fa2d27416d5f184df9c259a7c79"
-;;;
-;;; 64 is block length of hash function (64 for MD5 and SHA), 16 is
-;;; resulting hash length (16 for MD5, 20 for SHA).
-;;;
-;;; Tested with Emacs 20.2 and XEmacs 20.3.
-;;;
-;;; Test case reference: RFC 2202.
-
-;;; Release history:
-;;;
-;;; 1998-08-16 initial release posted to gnu.emacs.sources
-;;; 1998-08-17 use append instead of char-list-to-string
-;;; 1998-08-26 don't require hexl
-;;; 1998-09-25 renamed from hmac.el to rfc2104.el, also renamed functions
-;;; 1999-10-23 included in pgnus
-;;; 2000-08-15 `rfc2104-hexstring-to-bitstring'
-;;; 2000-05-12 added sha-1 example, added test case reference
-;;; 2003-11-13 change rfc2104-hexstring-to-bitstring to ...-byte-list
+;; This is a quick'n'dirty, low performance, implementation of RFC2104.
+;;
+;; Example:
+;;
+;; (require 'md5)
+;; (rfc2104-hash 'md5 64 16 "Jefe" "what do ya want for nothing?")
+;; "750c783e6ab0b503eaa86e310a5db738"
+;;
+;; (require 'sha-1)
+;; (rfc2104-hash 'sha1-encode 64 20 "Jefe" "what do ya want for nothing?")
+;; "effcdf6ae5eb2fa2d27416d5f184df9c259a7c79"
+;;
+;; 64 is block length of hash function (64 for MD5 and SHA), 16 is
+;; resulting hash length (16 for MD5, 20 for SHA).
+;;
+;; Tested with Emacs 20.2 and XEmacs 20.3.
+;;
+;; Test case reference: RFC 2202.
+
+;;; History:
+
+;; 1998-08-16 initial release posted to gnu.emacs.sources
+;; 1998-08-17 use append instead of char-list-to-string
+;; 1998-08-26 don't require hexl
+;; 1998-09-25 renamed from hmac.el to rfc2104.el, also renamed functions
+;; 1999-10-23 included in pgnus
+;; 2000-08-15 `rfc2104-hexstring-to-bitstring'
+;; 2000-05-12 added sha-1 example, added test case reference
+;; 2003-11-13 change rfc2104-hexstring-to-bitstring to ...-byte-list
;;; Code:
(rfc2104-hex-to-int (reverse (append str nil))))
0))
-(defun rfc2104-hexstring-to-byte-list (str)
+(defun rfc2104-hexstring-to-bitstring (str)
(let (out)
(while (< 0 (length str))
(push (rfc2104-hex-to-int (substring str -2)) out)
(setq str (substring str 0 -2)))
- out))
+ (apply (if (fboundp 'unibyte-string) 'unibyte-string 'string) out)))
(defun rfc2104-hash (hash block-length hash-length key text)
(let* (;; if key is longer than B, reset it to HASH(key)
(setq k_ipad (mapcar (lambda (c) (logxor c rfc2104-ipad)) k_ipad))
(setq k_opad (mapcar (lambda (c) (logxor c rfc2104-opad)) k_opad))
;; perform outer hash
- (funcall hash
- (encode-coding-string
- (concat k_opad (rfc2104-hexstring-to-byte-list
+ (funcall hash (concat k_opad (rfc2104-hexstring-to-bitstring
;; perform inner hash
- (funcall hash (concat k_ipad text))))
- 'iso-latin-1))))
+ (funcall hash (concat k_ipad text)))))))
(provide 'rfc2104)