summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--util.rkt29
-rw-r--r--whirlpool.rkt11
2 files changed, 31 insertions, 9 deletions
diff --git a/util.rkt b/util.rkt
new file mode 100644
index 0000000..5c1f2d3
--- /dev/null
+++ b/util.rkt
@@ -0,0 +1,29 @@
+#lang typed/racket
+;;; Copyright 2011, Matthias Andreas Benkard.
+;;;
+;;;-----------------------------------------------------------------------------
+;;; This program is free software: you can redistribute it and/or modify
+;;; it under the terms of the GNU Affero General Public License as published by
+;;; the Free Software Foundation, either version 3 of the License, or
+;;; (at your option) any later version.
+;;;
+;;; This program 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 Affero General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU Affero General Public License
+;;; along with this program. If not, see <http://www.gnu.org/licenses/>.
+;;;-----------------------------------------------------------------------------
+;;;
+
+(provide integer->bytes)
+
+(define: (integer->bytes [x : Exact-Nonnegative-Integer]) : Bytes
+ (let: loop : Bytes
+ ([acc : (Listof Byte) (list)]
+ [x : Exact-Nonnegative-Integer x])
+ (if (zero? x)
+ (list->bytes acc)
+ (loop (cons (bitwise-and #xff x) acc)
+ (arithmetic-shift x -8)))))
diff --git a/whirlpool.rkt b/whirlpool.rkt
index b1347e9..d57cf51 100644
--- a/whirlpool.rkt
+++ b/whirlpool.rkt
@@ -23,6 +23,8 @@
;;; It is optimized for clarity, not performance.
;;;
+(require "util.rkt")
+
(provide: [whirlpool (Bytes -> Exact-Nonnegative-Integer)])
(define-type Matrix Exact-Nonnegative-Integer)
@@ -201,15 +203,6 @@
([byte : Byte (in-bytes b)])
(+ (arithmetic-shift acc 8) byte)))
-(define: (integer->bytes [x : Exact-Nonnegative-Integer]) : Bytes
- (let: loop : Bytes
- ([acc : (Listof Byte) (list)]
- [x : Exact-Nonnegative-Integer x])
- (if (zero? x)
- (list->bytes acc)
- (loop (cons (bitwise-and #xff x) acc)
- (arithmetic-shift x -8)))))
-
(define: (length->bytes [n : Exact-Nonnegative-Integer]) : Bytes
(let ([b (integer->bytes n)])
(bytes-append (make-bytes (- 32 (bytes-length b)) 0) b)))