From 2c5a2e96008cfa1b58ee70ce2b17b104f614ef37 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Sat, 9 Jul 2016 13:53:30 -0500 Subject: [PATCH] =?UTF-8?q?checksums.common:=20Checksums=20was=20calculati?= =?UTF-8?q?ng=20the=20new=20length=20based=20on=20the=20entire=20array,=20?= =?UTF-8?q?not=20on=20the=20number=20of=20recently=20added=20bytes.=20Repo?= =?UTF-8?q?rted=20by=20=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4?= =?UTF-8?q?=D1=80=20Ilin.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- basis/checksums/common/common.factor | 20 +++++++++++--------- basis/checksums/sha/sha-tests.factor | 8 ++++++++ 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/basis/checksums/common/common.factor b/basis/checksums/common/common.factor index 8e062bb0d1..aaa2e97357 100644 --- a/basis/checksums/common/common.factor +++ b/basis/checksums/common/common.factor @@ -39,16 +39,18 @@ GENERIC: checksum-block ( bytes checksum-state -- ) GENERIC: get-checksum ( checksum-state -- value ) : add-checksum-bytes ( checksum-state data -- checksum-state' ) - over bytes>> [ push-all ] keep - [ dup length pick block-size>> >= ] [ - over block-size>> cut-slice [ - over checksum-block - [ block-size>> ] keep [ + ] change-bytes-read - ] dip - ] while - >byte-vector - [ >>bytes ] [ length [ + ] curry change-bytes-read ] bi ; + over bytes>> [ push-all ] keep + [ dup length pick block-size>> >= ] + [ + over block-size>> cut-slice [ + over checksum-block + [ block-size>> ] keep [ + ] change-bytes-read + ] dip + ] while + >byte-vector >>bytes + ] keep + length [ + ] curry change-bytes-read ; : add-checksum-stream ( checksum-state stream -- checksum-state ) [ [ add-checksum-bytes ] each-block ] with-input-stream ; diff --git a/basis/checksums/sha/sha-tests.factor b/basis/checksums/sha/sha-tests.factor index 7ac9e17243..08be4db777 100644 --- a/basis/checksums/sha/sha-tests.factor +++ b/basis/checksums/sha/sha-tests.factor @@ -67,3 +67,11 @@ IN: checksums.sha.tests "asdf" binary add-checksum-stream [ get-checksum ] [ get-checksum ] bi = ] unit-test + + +CONSTANT: bytes-a B{ 0 1 0 0 0 0 0 0 } +CONSTANT: bytes-b B{ 1 2 3 4 5 6 7 8 } +{ t } [ + sha1 initialize-checksum-state bytes-a bytes-b append add-checksum-bytes get-checksum + sha1 initialize-checksum-state bytes-a add-checksum-bytes bytes-b add-checksum-bytes get-checksum +] unit-test