Mark Spanbroek 996a1c8a7a Ensure that we don't have any side-effects
Required for integration into libp2p, and a
good idea in general :)
2023-11-02 09:31:10 +01:00

19 lines
480 B
Nim

import ./types
import constantine/math/arithmetic
import constantine/math/io/io_bigints
func unmarshal*(
_: type F,
bytes: openArray[byte],
endian: static Endianness): seq[F] =
const chunkLen = 31
var elements: seq[F]
var i = 0
while i < bytes.len:
let chunk = bytes[i..<min(i + chunkLen, bytes.len)]
let bigint = B.unmarshal(chunk, endian)
let element = F.fromBig(bigint)
elements.add(element)
i += chunkLen
return elements