Skip to content

crypto: Restrict conjugate() to degree-2 extension fields#1485

Merged
chfast merged 2 commits intomasterfrom
crypto/conjugate
Apr 14, 2026
Merged

crypto: Restrict conjugate() to degree-2 extension fields#1485
chfast merged 2 commits intomasterfrom
crypto/conjugate

Conversation

@chfast
Copy link
Copy Markdown
Member

@chfast chfast commented Apr 6, 2026

The conjugate operation (negating the second coefficient) is only mathematically correct for degree-2 extensions. Add a requires clause to prevent misuse on degree-3+ types where it would produce incorrect results silently.

The conjugate operation (negating the second coefficient) is only
mathematically correct for degree-2 extensions. Add a requires clause
to prevent misuse on degree-3+ types where it would produce incorrect
results silently.
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR prevents mathematically incorrect use of ExtFieldElem::conjugate() by restricting it to quadratic (degree-2) extension fields, where conjugation is defined as negating the second coefficient.

Changes:

  • Add a C++20 requires(DEGREE == 2) constraint to ExtFieldElem::conjugate().
  • Simplify the conjugation implementation to directly return (a, -b) for degree-2 elements.
  • Update the doc comment to explicitly document the degree-2 semantics.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@codecov
Copy link
Copy Markdown

codecov bot commented Apr 6, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 96.74%. Comparing base (1ed243d) to head (eb0eab2).
⚠️ Report is 1 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1485      +/-   ##
==========================================
- Coverage   96.74%   96.74%   -0.01%     
==========================================
  Files         156      156              
  Lines       14166    14163       -3     
  Branches     3337     3336       -1     
==========================================
- Hits        13705    13702       -3     
  Misses        317      317              
  Partials      144      144              
Flag Coverage Δ
eest-develop 92.07% <100.00%> (-0.01%) ⬇️
eest-develop-gmp 27.57% <100.00%> (-0.02%) ⬇️
eest-legacy 15.04% <0.00%> (+<0.01%) ⬆️
eest-libsecp256k1 29.27% <100.00%> (-0.02%) ⬇️
eest-stable 91.98% <100.00%> (-0.01%) ⬇️
evmone-unittests 91.52% <100.00%> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Components Coverage Δ
core 96.01% <100.00%> (-0.01%) ⬇️
tooling 84.60% <ø> (ø)
tests 99.79% <ø> (ø)
Files with missing lines Coverage Δ
lib/evmone_precompiles/pairing/field_template.hpp 100.00% <100.00%> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@chfast chfast merged commit 06adc75 into master Apr 14, 2026
23 checks passed
@chfast chfast deleted the crypto/conjugate branch April 14, 2026 18:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants