54 Commits

Author SHA1 Message Date
benbierens
fbf95e21b8
Adds method for converting 32 bytes to field element 2023-12-22 12:49:07 -06:00
Dmitriy Ryajov
aceccb2367
style check complains about style in codex 2023-12-22 12:49:07 -06:00
Ben Bierens
9be7b0c134
Merge pull request #16 from codex-storage/fix-undeclared-curve
Fix: workaround for "undeclared identifier: 'getCurveOrder'"
2023-11-27 12:35:15 +01:00
Mark Spanbroek
77f0aafacc Fix: workaround for "undeclared identifier: 'getCurveOrder'" 2023-11-27 12:27:26 +01:00
Mark Spanbroek
c4569bcba0 Add sponge-merkle digest 2023-11-27 12:22:06 +01:00
Ben Bierens
cfb4f97023
Merge pull request #15 from codex-storage/integers-to-field
integers to field elements
2023-11-24 12:39:03 +01:00
Mark Spanbroek
ddff11d4f0 Convert all types of integers to field element 2023-11-23 17:07:17 +01:00
Mark Spanbroek
f76d8dd654 Move int.toF() function into io module 2023-11-23 16:37:41 +01:00
Mark Spanbroek
b953cde5f8 Check streaming algorithm against reference implementation 2023-11-23 14:29:28 +01:00
Mark Spanbroek
fe3e3230f4 Streaming API for merkle root calculation 2023-11-23 14:29:28 +01:00
Mark Spanbroek
16e20ee8f7 Add test vectors
Co-Authored-By: Balazs Komuves <bkomuves@gmail.com>
2023-11-20 11:40:56 +01:00
Mark Spanbroek
c4b4936e26 Handle merkleRoot of empty sequence
Co-Authored-By: Balazs Komuves <bkomuves@gmail.com>
2023-11-20 11:40:56 +01:00
Mark Spanbroek
cce9c13a04 Remove if statement at compile time 2023-11-20 11:40:56 +01:00
Mark Spanbroek
a311828b9e Do not expose isBottomLayer parameter on API 2023-11-20 11:40:56 +01:00
Mark Spanbroek
4bd56bb839 Ensure that merkle root of single element is compressed 2023-11-20 11:40:56 +01:00
Mark Spanbroek
9c7690ff0c Use different compress functions for bottom layer and odd nodes 2023-11-20 11:40:56 +01:00
Mark Spanbroek
94f9d1fdd3 Move merkleRoot() into its own module 2023-11-20 11:40:56 +01:00
Mark Spanbroek
af67374929 Fix: add missing import
Fixes "attempting to call undeclared routine: 'elements'"
when calling Sponge.digest from a project using the
nimble package
2023-11-16 10:23:04 +01:00
Mark Spanbroek
8b7a4a3151 Allow for keyed compression 2023-11-13 14:24:06 +01:00
Mark Spanbroek
6fddd3e39e Move compress() into its own module 2023-11-13 14:24:06 +01:00
Mark Spanbroek
457b8623be Add usage example to Readme
- unit test that example code works
- fixes for said unit test
2023-11-13 11:46:45 +01:00
Mark Spanbroek
70c03b834f Add Sponge.digest() call that takes bytes 2023-11-13 11:46:45 +01:00
Mark Spanbroek
d8a176930d Pad byte sequences with 0x1
To ensure unique field elements for sequences that
end with 0x0.
2023-11-13 11:46:45 +01:00
Mark Spanbroek
ce1d79a59b Streaming API for converting bytes to field elements 2023-11-13 11:46:45 +01:00
Mark Spanbroek
fd260207b2 Remove unused import 2023-11-13 11:46:45 +01:00
Mark Spanbroek
4825c0a88c Add streaming API for sponge 2023-11-13 11:46:45 +01:00
Mark Spanbroek
3cbd9a3a4c Fix merkle root of odd number of elements 2023-11-13 11:40:35 +01:00
Mark Spanbroek
9c1d18e1a2 Address review comments
Co-Authored-By: Dmitriy Ryajov <dryajov@gmail.com>
2023-11-13 11:40:01 +01:00
Balazs Komuves
f5835d5fdc add domain separation for the sponge construction 2023-11-13 11:40:01 +01:00
Balazs Komuves
01aa256970 minor improvements 2023-11-13 11:40:01 +01:00
Balazs Komuves
929793b9ad add sponge construction 2023-11-13 11:40:01 +01:00
Mark Spanbroek
573a77f14f Export conversion of field elements to bytes on main API 2023-11-08 11:13:45 +01:00
Mark Spanbroek
dbe3d8a692 Rename marshal -> toBytes, unmarshal -> fromBytes
For two reasons:
- to distinguish them from the marshalling functions
  from constantine
- they do not follow the convention that something
  that is marshalled can be unmarshalled, because
  they take in 31 bytes but produce 32 bytes
2023-11-08 11:13:45 +01:00
Mark Spanbroek
1c7c5d4ec4 Conversion of field elements into bytes 2023-11-08 11:13:45 +01:00
Mark Spanbroek
5e980dd816 Document conversion of bytes into field elements 2023-11-02 09:31:10 +01:00
Mark Spanbroek
03ed357ca4 Only support unmarshalling of little-endian bytes
Big-endian bytes had weird padding; 0's to the right,
then a single 0 to the left.
2023-11-02 09:31:10 +01:00
Mark Spanbroek
10b4a3659a Pad big endian bytes with 0's to the right 2023-11-02 09:31:10 +01:00
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
Mark Spanbroek
43c2aab913 move unmarshal into its own module called 'io'
Includes separate tests for unmarshalling that
were previously tested as part of the merkleRoot
calculation.

Includes tests for unmarshalling little endian
and big endian byte arrays.
2023-11-02 09:31:10 +01:00
Mark Spanbroek
e19a08e6c3 Test merkleRoot() against reference
Co-Authored-By: Balazs Komuves <bkomuves@gmail.com>
2023-11-02 09:31:10 +01:00
Mark Spanbroek
4668f09496 Determine merkle root of byte arrays 2023-11-02 09:31:10 +01:00
Mark Spanbroek
40eac466e2 Add installation instructions to Readme 2023-10-26 09:52:28 +02:00
Mark Spanbroek
331a68e4bd Add continous integration through Github actions 2023-10-26 09:52:28 +02:00
Mark Spanbroek
1d9d0d1f54 Perform string to array conversion at compiletime 2023-10-26 09:52:28 +02:00
Mark Spanbroek
0e91bea0f6 Convert under_scores to camelCase 2023-10-26 09:52:28 +02:00
Mark Spanbroek
f73bce6aa1 convert visual inspection tests to unit tests 2023-10-26 09:52:28 +02:00
Mark Spanbroek
b72c92639b Fix imports 2023-10-26 09:52:28 +02:00
Mark Spanbroek
0cdbed1dc2 Remove trailing whitespace 2023-10-26 09:52:28 +02:00
Mark Spanbroek
5220f372c1 Add nimble dependency on constantine 2023-10-26 09:52:28 +02:00
Mark Spanbroek
660330d216 Add nimble file 2023-10-26 09:52:28 +02:00