Joost Rijneveld
fe252b8093
Move ull-byte-conversions to separate utils file
pirms 7 gadiem
Joost Rijneveld
b9b84b9f9e
Consistently return -1 on failure
pirms 7 gadiem
Joost Rijneveld
1cba1e7be8
Make core_fast use the secret key for the state
This ensures that xmss_core and xmss_core_fast offer the same API.
Note that xmss_core_fast still needs a major refactor, and this
wrapper is not exactly very clean. There is a considerable chance
this refactor will change the format of the state in the secret key.
pirms 7 gadiem
Joost Rijneveld
2e96b03106
Clean up and simplify hash function definitions
pirms 7 gadiem
Joost Rijneveld
384b228c58
Support messages that exceed the stack size
Previous code allocated an array on the stack of mlen bytes, but
it should be possible to also sign heap-space messages. By relying
on the fact that sm and m fit the message + signature, we move
the message so that 4*n bytes of prefix can be added.
pirms 7 gadiem
Joost Rijneveld
59d304027c
Let xmss_core decide on secret key size
This allows different backends to store additional state information
in the secret key while the rest of the codebase remains agnostic.
In particular, this prepares for a common xmss_core.h API for both
the standard and the BDS-traversal-based implementations.
pirms 7 gadiem
Joost Rijneveld
7c6354f762
Rename parameters for readability and consistency
pirms 7 gadiem
Joost Rijneveld
270e6cd753
Reorder ull_to_bytes parameters to group output
pirms 7 gadiem
Joost Rijneveld
305bd614bb
Perform various reformatting / renaming
pirms 7 gadiem
Joost Rijneveld
2a89ca2874
Resolve comparison warnings
pirms 7 gadiem
Joost Rijneveld
f3bad4a272
Simplify licensing using LICENSE file
pirms 7 gadiem
Joost Rijneveld
6a8571d880
Revert to using runtime-only parameter struct
Using global defines for parameters (as seems to be typical in
academic crypto code) does not play nice with multithreading at all.
pirms 7 gadiem
Joost Rijneveld
9d5884e120
Refactor for more consistent style and readability
pirms 7 gadiem
Joost Rijneveld
65ee8202d8
Refactor to prepare for runtime parameters
pirms 7 gadiem
Joost Rijneveld
3c0f6668ef
Add parameter for hash alg family, support SHAKE
pirms 7 gadiem
Joost Rijneveld
8befb0d550
Add SHAKE128 and SHAKE256
This also performs numerous consistency fixes
pirms 7 gadiem
Joost Rijneveld
5122ac6f73
Reduce code duplication
A large number of functions was repeated in xmss_fast; these are now
shared between the two implementations via the xmss_commons file.
Notably, we ensure compatability by sharing the verification functions.
pirms 7 gadiem
Joost Rijneveld
1e00c92c18
Refactor to use compile-time parameter sets
This starts a cleanup / refactor, but there is still some low-hanging fruit.
pirms 7 gadiem
Joost Rijneveld
d4bc8656e3
Fix bug in addressing during fast xmssmt key gen
pirms 7 gadiem
Andreas
9f512fa8dc
v06
pirms 8 gadiem
Andreas
ddddfd9739
handle that most machines are little endian but addresses here are big endian...
pirms 8 gadiem
Andreas
2c290d39be
upgraded to draft-06
pirms 8 gadiem
Andreas
c37b9dcfca
SWITCH from v01 to v03
Versions are incompatible due to different address formats and differing message compression!
pirms 8 gadiem
Andreas
622a9513b1
local changes
pirms 8 gadiem
Joost Rijneveld
c1f0721f4a
Also fix int overflow for systems with 4-byte ULs
pirms 8 gadiem
Joost Rijneveld
951848fe89
Remove redundant address changes
pirms 8 gadiem
Joost Rijneveld
e2f1cee548
Fix error for d=1 cases as introduced by 719cb46
pirms 8 gadiem
Joost Rijneveld
1e503b665e
Make codestyle more consistent, fix -Wextra warns
pirms 8 gadiem
Joost Rijneveld
719cb467df
Prevent allocating for a 'next' tree on top layer
pirms 8 gadiem
Joost Rijneveld
8cbbfe0f05
Prevent int overflow for h >= 32
pirms 8 gadiem
Joost Rijneveld
97331f09c0
Fix update bug (partially re-implement BDS)
The bug occured for cases where d=3 and indicated
a lack of updates. Re-implementing the higher-level
structure of BDS resolved this.
pirms 8 gadiem
Joost Rijneveld
17c5b2842f
Make address masks more explicit and strict
pirms 8 gadiem
Andreas
9d9b782ff9
added support for n = m = 64
pirms 9 gadiem
Joost Rijneveld
f5a5231c72
Do not perform bds_round for the last leaf
pirms 9 gadiem
Joost Rijneveld
2af61cea82
Check if a NEXT-tree exists before updating it
pirms 9 gadiem
Joost Rijneveld
4c19fe61e4
Make XMSSMT also use BDS tree traversal
pirms 9 gadiem
Joost Rijneveld
a075747462
Store BDS state in passable struct, not in globals
pirms 9 gadiem
Joost Rijneveld
a33aef699c
Adhere to more strict storage bounds
pirms 9 gadiem
Joost Rijneveld
5d469d118f
Use BDS for auth paths in XMSS (but not XMSSMT yet)
pirms 9 gadiem
Joost Rijneveld
1511c0bdf7
Add xmss_fast starting point before BDS
pirms 9 gadiem
Andreas
136f10dae0
Added support for n=m=64
pirms 9 gadiem
Joost Rijneveld
71da95c8b4
Change 'uint' to standard 'unsigned int'
pirms 9 gadiem
Andreas
481cc106b6
finished xmssmt
pirms 9 gadiem
Andreas
d80a463e53
added copyright notes for publishing. Removed unused file.
pirms 9 gadiem
Andreas
1826fb26ff
Initial commit
pirms 9 gadiem