Activity Overview

Commits and releases over time

  • Commits
  • Releases
  • Authors

Repository Explorer

37 commits in all time Aug 14, 2026 01:32 – Nov 12, 2026 01:32 UTC
Rexicon226 falcon
Merge 4f4ae0e98b7d1f6b007cf9db21e7df3a475f9c4f into 19f185792c39326bebc173b2a100c2c247423be3
Git Commit f1617d2f Branch pull/15/merge Document 4/322 ++ 12 --
winder falcon
Merge f80e6bb4e49f97026404389b59a16026f05cdd48 into 19f185792c39326bebc173b2a100c2c247423be3
Git Commit 375bfb1f Branch pull/11/merge Document 1/21 ++ 0 --
jannotti falcon
Merge pull request #19 from nullun/det512-fixups
det512 follow-ups: fix pre-existing defects carried over from det1024
Git Commit 19f18579 Branch main Document 8/58 ++ 25 --
winder falcon
Merge f80e6bb4e49f97026404389b59a16026f05cdd48 into 625fa80016d717b3f154d289b18b9458a036a210
Git Commit 767bdc17 Branch pull/11/merge Document 1/21 ++ 0 --
Rexicon226 falcon
Merge 4f4ae0e98b7d1f6b007cf9db21e7df3a475f9c4f into 625fa80016d717b3f154d289b18b9458a036a210
Git Commit a34b857a Branch pull/15/merge Document 4/322 ++ 12 --
nullun falcon
Merge c4d9b518fa55e4424232cadd06ed369789f3f45b into 625fa80016d717b3f154d289b18b9458a036a210
Git Commit 398c2bbe Branch pull/19/merge Document 8/58 ++ 25 --
nullun falcon
falcon.go: document the inline cgo buffer arguments
The per-call-site "if len(b) == 0 { NULL } else { &b[0] }" branches
look like they should be a shared helper, but the duplication is
load-bearing: cgo enforces its pointer-passing rules against the
syntactic form of the call arguments, so an inline &b[0] is checked
against just the slice's backing array, while the same pointer
returned from a helper is resolved to its entire containing
allocation -- and panics when the caller's slice aliases a struct
that also holds Go pointers, exactly what TestPointerToPointer and
TestDet512PointerToPointer construct. Say so where the next reader
would reach for the helper.
Git Commit edeaf0b0 Branch pull/19/head Document 1/10 ++ 0 --
nullun falcon
Reject malformed deterministic public key headers
falcon_det{1024,512}_pubkey_coeffs skipped the first byte of the key and
decoded the remaining bytes without ever looking at it, so a buffer whose
header byte is wrong (a key for a different logn, or bytes that are not a
Falcon public key at all) was unpacked as though it were valid, returning 0
and a coefficient vector that does not correspond to any det key. The
verify entry points do not have this gap: they go through falcon_verify,
which checks the header before touching the rest of the key. Check the
byte here the same way and return FALCON_ERR_FORMAT, which the header's
"non-zero error code if pubkey is invalid" contract already promises.
Git Commit c36bd28b Branch pull/19/head Document 3/9 ++ 0 --
nullun falcon
Link only required deterministic variants
deterministic1024.o and deterministic512.o were in the shared OBJ list, so
every binary linked both, including test_falcon and speed, which use
neither, and each KAT driver, which uses only its own variant. Give each
test_deterministic<n> binary its own deterministic<n>.o prerequisite and
keep the generic objects in OBJ, so a binary pulls in only the variant it
exercises. The objects still have their own rules and "clean" still
removes them.
Git Commit c4d9b518 Branch pull/19/head Document 1/8 ++ 8 --
nullun falcon
deterministic.h: document the get_salt_version length precondition
falcon_det{1024,512}_get_salt_version take no length parameter and
read the signature's second byte unconditionally, unlike the other
entry points, which validate their input's length or take a fixed-size
format. Spell out the resulting >= 2 bytes precondition so callers
handling untrusted input know to check it (as the Go binding does).
Git Commit 3347e506 Branch pull/19/head Document 1/3 ++ 1 --
nullun falcon
tests: print the CT salt version in its failure diagnostic
The CT-format salt-version check compares vct but its error message
printed the stale v from the earlier compressed-format check, so a
failure would report the (correct) compressed version instead of the
offending CT one.
Git Commit 141d5481 Branch pull/19/head Document 2/2 ++ 2 --
nullun falcon
tests: avoid the zero-length VLA in the KAT drivers
test_inner declared its message buffer as uint8_t data[data_len], and
the KAT loop starts at data_len = 0; a zero-length variable-length
array is undefined behavior (C11 6.7.6.2p5) and trips
-fsanitize=vla-bound before the first KAT is checked. data_len is
bounded by NUM_KATS, so use a fixed-size buffer of that length.
Git Commit d168e5e5 Branch pull/19/head Document 2/8 ++ 2 --
nullun falcon
Makefile: complete the deterministic*.o header prerequisites
deterministic{1024,512}.c include inner.h (and, through it, config.h
and fpr.h), but their object rules named only deterministic.h and
falcon.h, so an edit to e.g. FALCON_FPEMU in config.h left stale
deterministic objects in an incremental build. List the same headers
as the other object rules.
Git Commit 497fe726 Branch pull/19/head Document 1/2 ++ 2 --
nullun falcon
deterministic.c.tmpl: align hash_to_point_ct's temporary buffer
hash_to_point_coeffs declared its scratch space as a uint8_t array,
but Zf(hash_to_point_ct) documents that tmp[] must have 16-bit
alignment (it stores uint16_t through it). Declare the buffer as
uint16_t so the alignment holds by construction; on strict-alignment
targets the byte array was undefined behavior. No output change: the
KATs are unaffected.
Git Commit b4beae01 Branch pull/19/head Document 3/12 ++ 6 --
nullun falcon
deterministic.h: parenthesize the signature-size macros
FALCON_DET{1024,512}_SIG_COMPRESSED_MAXSIZE and _SIG_CT_SIZE expanded
to an unparenthesized "...-40+1", which miscomputes inside a larger
expression such as FALCON_DET512_SIG_CT_SIZE * 2. All existing uses
are value-unchanged.
Git Commit 177a64f6 Branch pull/19/head Document 1/4 ++ 4 --
jannotti falcon
Merge pull request #18 from nullun/det512-build
Add FALCON-DET512 via a single generated template
Git Commit 625fa800 Branch main Document 17/2,524 ++ 52 --
nullun falcon
Merge a24293c87a515a45fb2e8b734abd87dfedf70698 into 956d9bc0ab8c503e0133259488cd8e0aedc0986d
Git Commit 5430b0ea Branch pull/18/merge Document 17/2,524 ++ 52 --
jannotti falcon
updated spec for f512
Git Commit a24293c8 Branch pull/18/head Document 1/0 ++ 0 --
nullun falcon
Merge ef88247076d39bcac53be0831f4db105fae15b9e into 956d9bc0ab8c503e0133259488cd8e0aedc0986d
Git Commit c3b5444c Branch pull/18/merge Document 16/2,524 ++ 52 --
jannotti falcon
Chris Peikert code review
Git Commit ef882470 Branch pull/18/head Document 3/84 ++ 4 --
nullun falcon
Merge a5265c7ecca6db6038f0bb25391dbce07446f862 into 956d9bc0ab8c503e0133259488cd8e0aedc0986d
Git Commit e67be0fd Branch pull/18/merge Document 16/2,441 ++ 49 --
nullun falcon
Merge e753f8d4b99d7f6eab02256ff625b0014a05aa8d into 956d9bc0ab8c503e0133259488cd8e0aedc0986d
Git Commit 95eb1c64 Branch pull/18/merge Document 20/4,079 ++ 49 --
cce falcon
Add a portable KAT format, and a tool to produce and check it
The committed KAT arrays derive each key from a seeded PRNG, which no
other implementation can reproduce. tests/kat_tool re-exports the same
vectors with keys, public keys and messages as literal bytes, so a port
in another language needs only a signer.

  make kat         regenerate the committed files
  make check-kat   re-derive every record and compare (added to CI)
  make kat-full    write the exhaustive 512-record sets

See kat/README.md for the format.
Git Commit e753f8d4 Branch pull/18/head Document 7/1,640 ++ 2 --
jannotti falcon
Add some sanity checks
Ensure a pure falcon.h re-implementation matches what the KATs we
generated.

Confirm that f512 won't verify f1024 signatures and vice versa
Git Commit a5265c7e Branch pull/18/head Document 4/354 ++ 2 --
jannotti falcon
Add some sanity checks
Ensure a pure falcon.h re-implementation matches what the KATs we
generated.

Confirm that f512 won't verify f1024 signatures and vice versa
Git Commit 396ffbbf Branch det512-build Document 4/354 ++ 2 --