From 3aaa523f41df21b493133c4f3580c4cfed1611ff Mon Sep 17 00:00:00 2001 From: Matthias Andreas Benkard Date: Mon, 15 Aug 2011 23:49:20 +0200 Subject: Move integer->bytes to util.rkt. --- util.rkt | 29 +++++++++++++++++++++++++++++ whirlpool.rkt | 11 ++--------- 2 files changed, 31 insertions(+), 9 deletions(-) create mode 100644 util.rkt 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 . +;;;----------------------------------------------------------------------------- +;;; + +(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))) -- cgit v1.2.3