Mark Spanbroek
29efc3793a
re-enable Nim 2.0 in CI
2024-07-15 12:33:37 +02:00
Mark Spanbroek
4104602f85
update constantine to version 0.1.0
2024-07-15 12:29:09 +02:00
Balazs Komuves
8a54c69032
pin the constantine dependency (there was a breaking refactoring recently)
2024-07-12 12:06:22 +02:00
Ben Bierens
ad26df8846
Merge pull request #19 from codex-storage/export-fromBytes
...
exports fromBytes from the library
2024-01-18 09:09:24 +01:00
Ben Bierens
74dbf15788
Merge pull request #18 from codex-storage/convert-from-32-bytes
...
Convert from 32 bytes
2024-01-18 09:09:18 +01:00
Eric
0346982f2c
exports fromBytes from the library
2024-01-09 12:29:02 +11:00
benbierens
eef2603c11
Adds equality compare for field elements
2024-01-08 11:29:30 +01:00
Dmitriy Ryajov
3b403b0752
fix style check
2023-12-22 12:51:53 -06:00
benbierens
ff6e7589ac
Adds test for preserving field element after conversion
2023-12-22 12:49:08 -06:00
benbierens
1d12c38584
Adds check to ensure value fits in prime field.
2023-12-22 12:49:08 -06:00
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