diff options
author | Matthias Andreas Benkard <code@mail.matthias.benkard.de> | 2011-08-15 23:49:20 +0200 |
---|---|---|
committer | Matthias Andreas Benkard <code@mail.matthias.benkard.de> | 2011-08-15 23:49:20 +0200 |
commit | 3aaa523f41df21b493133c4f3580c4cfed1611ff (patch) | |
tree | acec99251a78478f6742ffd046a13c98f48014b0 | |
parent | 978197a92b8ac2959532dea20c3c0632c0149a82 (diff) |
Move integer->bytes to util.rkt.
-rw-r--r-- | util.rkt | 29 | ||||
-rw-r--r-- | whirlpool.rkt | 11 |
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))) |