From bd5b805b80b6005a3e5de412dec15783284d205d Mon Sep 17 00:00:00 2001 From: Balazs Komuves Date: Tue, 22 Oct 2024 12:23:05 +0200 Subject: [PATCH] add some convenience functions converting digests to field element sequences --- goldilocks_hash/goldilocks.nim | 1 + goldilocks_hash/types.nim | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/goldilocks_hash/goldilocks.nim b/goldilocks_hash/goldilocks.nim index d13db8d..c9f3f4c 100644 --- a/goldilocks_hash/goldilocks.nim +++ b/goldilocks_hash/goldilocks.nim @@ -6,6 +6,7 @@ import ./types # build system hack const + # REMARK: currentSourcePath = ~/.nimble/pkgs/goldilocks_hash-0.0.1/goldilocks_hash/goldilocks.nim root = currentSourcePath.parentDir.parentDir {. passc: "-I" & root & "/cbits" .} diff --git a/goldilocks_hash/types.nim b/goldilocks_hash/types.nim index 6b4173c..6072c44 100644 --- a/goldilocks_hash/types.nim +++ b/goldilocks_hash/types.nim @@ -1,4 +1,5 @@ +import std/sequtils import std/strformat #------------------------------------------------------------------------------- @@ -55,6 +56,15 @@ proc `$`*(x: Digest): string = return $(fromDigest(x)) #------------------------------------------------------------------------------- +func digestToFeltSeq*( d: Digest ): seq[F] = + var output: seq[F] = newSeq[F]( 4 ) + let f4 = fromDigest( d ) + output[0] = f4[0] + output[1] = f4[1] + output[2] = f4[2] + output[3] = f4[3] + return output + func digestSeqToFeltSeq*( ds: seq[Digest] ): seq[F] = let n = ds.len var output: seq[F] = newSeq[F]( 4*n ) @@ -67,6 +77,9 @@ func digestSeqToFeltSeq*( ds: seq[Digest] ): seq[F] = output[j+3] = f4[3] return output +func digestSeqToFeltSeqSeq*( ds: seq[Digest] ): seq[seq[F]] + = ds.map(digestToFeltSeq) + #------------------------------------------------------------------------------- func numberOfBits*(T: type): int {.compileTime.} =