Thanks for assigning this issue to me. I’m starting to work on it and will keep this PR’s description up to date as I form a plan and make progress.
This section details on the original issue you should resolve
<issue_title>
_ecmult_wnafrelies oninthaving at least 32 value bits</issue_title> <issue_description>The currentsecp256k1_ecmult_wnafneeds the unstated and unchecked assumption thatinthas at least 32 value bits when it VERIFY_CHECKs thatw <= 31. In practice, we call it only withWINDOW_A == 5andWINDOW_G == ECMULT_WINDOW_SIZEwhere the latter is configurable in the range2..24.A consequence of this “bug” is that the code fails on a 16-bit platform if you set
ECMULT_WINDOW_SIZE > 16. I don’t think we need to support this, but code without unchecked assumptions is bad. So I suggest that we rewrite the function to useint32_tinstead ofinteven if we don’t use my macro approach. (We can keep the “bit position” arguments and variablesint.)Alternatively, we could add the assumption that
INT_MAX >= INT32_MAXbut this forbids 16-bit platforms, and the code seems to work on them in principle; see #792 (comment).Originally posted by @real-or-random in #1761#pullrequestreview-3432695127 </issue_description>
<agent_instructions>Use the suggestion to use
int32_tinstead ofint. Keep the “bit positions” variables and argumentsint.</agent_instructions>Comments on the Issue (you are @copilot in this section)
- Fixes bitcoin-core/secp256k1#1769
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.