Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Secp256k1 RecoveryID correction for KMS-genrated signatures #2134

Merged
merged 7 commits into from
Aug 28, 2024

Conversation

Dentosal
Copy link
Member

@Dentosal Dentosal commented Aug 27, 2024

AWS KMS doesn't insert recovery ids into otherwise-recoverable secp256k1 signatures. This PR patches the process in the same way we already do in fuel-vm.

Checklist

  • Breaking changes are clearly marked as such in the PR description and changelog (I guess. Fixing the incorrect behavior is a fix, not a breaking change, although it changes how the code behaves.)
  • New behavior is reflected in tests

Before requesting review

  • I have reviewed the code myself
  • I have created follow-up issues caused by this PR and linked them here

@Dentosal Dentosal added the bug Something isn't working label Aug 27, 2024
@Dentosal Dentosal self-assigned this Aug 27, 2024
@Dentosal Dentosal changed the title Perform recovery id correction for KMS signatures as well Perform recovery id correction for KMS signatures Aug 27, 2024
@Dentosal Dentosal marked this pull request as ready for review August 27, 2024 13:57
@Dentosal Dentosal requested a review from a team August 27, 2024 13:57
@Dentosal Dentosal changed the title Perform recovery id correction for KMS signatures Secp256k1 RecoveryID correction for KMS signatures Aug 27, 2024
@Dentosal Dentosal changed the title Secp256k1 RecoveryID correction for KMS signatures Secp256k1 RecoveryID correction for KMS-genrated signatures Aug 27, 2024
rymnc
rymnc previously approved these changes Aug 27, 2024
Copy link
Member

@rymnc rymnc left a comment

Choose a reason for hiding this comment

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

LGTM

- [2119](https://github.com/FuelLabs/fuel-core/pull/2119): GraphQL query fields for retrieving information about upgrades.
- [2116](https://github.com/FuelLabs/fuel-core/pull/2116): Replace `H160` in config and cli options of relayer by `Bytes20` of `fuel-types`
### Fixed
- [2134](https://github.com/FuelLabs/fuel-core/pull/2134): Perform RecoveryID normalization for AWS KMS -generated signatures.
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
- [2134](https://github.com/FuelLabs/fuel-core/pull/2134): Perform RecoveryID normalization for AWS KMS -generated signatures.
- [2134](https://github.com/FuelLabs/fuel-core/pull/2134): Perform RecoveryID normalization for AWS KMS generated signatures.

Copy link
Member Author

Choose a reason for hiding this comment

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

Oh good point I ddn't realize the space-before-dash compound-noun-modifiers are nonstandard English. After a long consultation with ChatGPT and couple of style guides, I'm still convinced that the form I used clearner than the alternative without the dash. If you feel strongly about this, the sentence could be reformulated as

Perform RecoveryID normalization for signatures generated by AWS KMS.

netrome
netrome previously approved these changes Aug 28, 2024
Copy link
Contributor

@netrome netrome left a comment

Choose a reason for hiding this comment

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

I don't fully understand why we can guarantee that the reduced x form is never generated, but given the explicit assertion this seems intentional - hence I'll approve.

@Dentosal Dentosal dismissed stale reviews from netrome and rymnc via 8ed3df7 August 28, 2024 08:57
@Dentosal Dentosal requested review from rymnc and a team August 28, 2024 09:00
@Dentosal Dentosal merged commit 3b84ec1 into master Aug 28, 2024
35 checks passed
@Dentosal Dentosal deleted the dento/kms-recovery-id-fix branch August 28, 2024 11:03
@xgreenx xgreenx mentioned this pull request Aug 28, 2024
xgreenx added a commit that referenced this pull request Aug 28, 2024
## Version v0.35.0

### Added
- [2122](#2122): Changed the
relayer URI address to be a vector and use a quorum provider. The
`relayer` argument now supports multiple URLs to fetch information from
different sources.
- [2119](#2119): GraphQL query
fields for retrieving information about upgrades.

### Changed
- [2113](#2113): Modify the
way the gas price service and shared algo is initialized to have some
default value based on best guess instead of `None`, and initialize
service before graphql.
- [2112](#2112): Alter the way
the sealed blocks are fetched with a given height.
- [2120](#2120): Added
`submitAndAwaitStatus` subscription endpoint which returns the
`SubmittedStatus` after the transaction is submitted as well as the
`TransactionStatus` subscription.
- [2115](#2115): Add test for
`SignMode` `is_available` method.
- [2124](#2124): Generalize
the way p2p req/res protocol handles requests.

#### Breaking

- [2040](#2040): Added full
`no_std` support state transition related crates. The crates now require
the "alloc" feature to be enabled. Following crates are affected:
  - `fuel-core-types`
  - `fuel-core-storage`
  - `fuel-core-executor`
- [2116](#2116): Replace
`H160` in config and cli options of relayer by `Bytes20` of `fuel-types`

### Fixed
- [2134](#2134): Perform
RecoveryID normalization for AWS KMS -generated signatures.

## What's Changed
* Change TODO clippy to wait for false positive correction by
@AurelienFT in #2110
* Remove option on shared algo, give default algo, reorder service
startup by @MitchTurner in
#2113
* chore(sealed_blocks): optimize fetching of sealed block header at a
given height by @rymnc in
#2112
* chore(p2p_service): remove unnecessary cast to usize by @rymnc in
#2123
* Added a benchmark for the predicate with ed19 verification by @xgreenx
in #2127
* Add test SignMode is_available by @AurelienFT in
#2115
* feat: Add graphql query fields for retreiving information about
upgrades by @netrome in #2119
* Small code optimizations by @MoneyBund in
#2035
* Change relayer URI address to be vector and use quorum provider by
@AurelienFT in #2122
* chore(p2p_service): clean up processing of p2p req/res protocol by
@rymnc in #2124
* feat: add `submitAndAwaitStatus` subscription endpoint by @maschad in
#2120
* Replace H160 in config and cli options of relayer by Bytes20 by
@AurelienFT in #2116
* Secp256k1 RecoveryID correction for KMS-genrated signatures by
@Dentosal in #2134
* Added `no_std` support state transition related crates by @xgreenx in
#2040

## New Contributors
* @MoneyBund made their first contribution in
#2035
* @maschad made their first contribution in
#2120

**Full Changelog**:
v0.34.0...v0.35.0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants