Repository navigation
fix(build): rebuild the Ed25519 low-order test #93 removed - #128
Kartikey1306 wants to merge 1 commit into
Conversation
master has not compiled tests/test_crypto_ed25519_loworder.c since embeddedos-org#93. The file is still in the tree; nothing builds it. embeddedos-org#101 registered it alongside the fix it guards. embeddedos-org#93 branched before that, so when it removed duplicate test targets, this one looked like one more duplicate -- it was not, and it was the only non-duplicate the diff touched: $ comm -23 <targets before embeddedos-org#93> <targets after embeddedos-org#93> test_crypto_ed25519_loworder That is the regression test for embeddedos-org#98: an all-zero public key is one of Ed25519's eight low-order points, and before embeddedos-org#101 it accepted forged signatures over messages nobody signed. Between embeddedos-org#93 merging and this commit, nothing checked that the fix was still there. The test is load-bearing, not decorative. Disabling the subgroup check in services/crypto/src/ed25519_verify.c and rebuilding: test_all_zero_key_is_rejected [FAIL] ed25519_verify(...) != 1 Restored, it is 5/5 and the whole suite is 39/39. tests/unit/test_cmake_test_registration.py already fails on this -- it is what surfaced it, on an unrelated toolchain PR (embeddedos-org#126) whose own change is one file under toolchains/. That guard was in place when embeddedos-org#93 merged; embeddedos-org#93's checks were never run, so nothing evaluated it.
|
Closing as a duplicate of #127, which does the same restore and has already Both PRs add back the Two sessions were working these repos in parallel and both reached this Handing the one thing this PR had that #127 does not — the history in a The evidence gathered here still stands and is worth keeping in the record:
That last point is the reusable one, and it is the argument for #121. |
masterhas not compiledtests/test_crypto_ed25519_loworder.csince #93. Thefile is still in the tree; no
add_executable()builds it.This is why #126 is red — its own change is one file under
toolchains/,and the failure is in
Run Python testson the Linux host. #126 did not causeit and cannot fix it.
What happened
#101 registered the target alongside the fix it guards. #93 branched before
that, so when it removed duplicate test targets, this one looked like one more
duplicate. It was not, and it was the only non-duplicate the diff touched:
The four lines it removed:
Everything else #93 removed was a genuine duplicate, and removing those was
right.
Why it matters
That is the regression test for #98. An all-zero public key is one of
Ed25519's eight low-order points; before #101 it accepted forged signatures
over messages nobody signed, which is how
eos_pkgaccepted arbitrarypackages. Between #93 merging and this PR, nothing checked that the fix was
still in place.
A missing
add_executablefails nothing — the file simply stops being built —so the suite stayed green while the guard was gone.
The test is load-bearing, not decorative
Verified rather than assumed. Disabling the subgroup check in
services/crypto/src/ed25519_verify.cand rebuilding the restored target:Restored: 5/5, including
test_every_low_order_key_is_rejectedandtest_rfc8032_vector_still_verifies(so a verifier that rejected everythingwould not pass either).
Verification
test_cmake_test_registration.pyonmastertest_crypto_ed25519_loworderctestpytest tests/The part worth acting on beyond this patch
tests/unit/test_cmake_test_registration.py— the guard that catches exactlythis — was already on
masterwhen #93 merged. It would have failed on#93. It did not run, because #93's checks sat at
action_requiredand nothingevaluated them before the merge.
So the guard worked; the gate around it did not exist. That is the concrete
case for #92 and for #121, which adds a single
CI Gatecheck that branchprotection can require. This is the second time the same shape has cost this
repository a test:
test_mpu_validatecarries a comment in this very filesaying it "landed with the fix it guards (#109) and lost its registration to a
merge".
I flagged this failure mode on #94 before #93 merged — that PR removes
test_crcandtest_crypto_failclosedthe same way, andtest_crypto_failclosedguards theEOS_ALLOW_STUB_CRYPTOfail-closed policyfrom #84. Worth rebasing #94 before it lands.