66 Commits

Author SHA1 Message Date
Balazs Komuves
7749c368a9
Merge pull request #21 from codex-storage/bump-constantine-gcc14
bumps constantine, updates curves
2025-01-21 17:18:31 +01:00
Arnaud
4e2c6e619b
Add 2.0.14 to testing matrix 2025-01-07 10:27:25 +01:00
Arnaud
f5a3511349
Update constantine to the last commit hash
Signed-off-by: Arnaud <arnaud@status.im>
2024-12-04 13:02:20 +01:00
benbierens
e173dd817b
bumps constantine, updates curves 2024-08-08 14:45:13 +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