From 1b4baeaaf4560b5ceb8b20a8b1903470a5eff7ab Mon Sep 17 00:00:00 2001 From: Tom French Date: Tue, 17 Sep 2024 23:24:08 +0100 Subject: [PATCH] . --- src/lib.nr | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/src/lib.nr b/src/lib.nr index f1a8a78..48d6c3c 100644 --- a/src/lib.nr +++ b/src/lib.nr @@ -213,25 +213,7 @@ impl StringBo for i in 0..InputBytes { body[i] = data[i]; } - StringBody { body, chunks: StringBody::compute_chunks(body), byte_length: length } - } - - /** - * @brief given an input byte array, convert into 31-byte chunks - * cost is ~0.5 gates per byte - **/ - fn compute_chunks(body: [u8; MaxPaddedBytes]) -> [Field; PaddedChunks] { - let mut chunks: [Field; PaddedChunks] = [0; PaddedChunks]; - for i in 0..PaddedChunks { - let mut limb: Field = 0; - for j in 0..31 { - limb *= 256; - limb += body[i * 31 + j] as Field; - } - chunks[i] = limb; - std::as_witness(chunks[i]); - } - chunks + StringBody { body, chunks: compute_chunks(body), byte_length: length } } /** @@ -419,6 +401,23 @@ impl StringBo } } +/// Given an input byte array, convert into 31-byte chunks +/// +/// Cost: ~0.5 gates per byte +fn compute_chunks(body: [u8; MaxPaddedBytes]) -> [Field; PaddedChunks] { + let mut chunks: [Field; PaddedChunks] = [0; PaddedChunks]; + for i in 0..PaddedChunks { + let mut limb: Field = 0; + for j in 0..31 { + limb *= 256; + limb += body[i * 31 + j] as Field; + } + chunks[i] = limb; + std::as_witness(chunks[i]); + } + chunks +} + #[test] fn test() { let haystack_text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.".as_bytes();