Add ReprEndianness enum and PrimeField::REPR_ENDIANNESS#158
Open
tarcieri wants to merge 1 commit into
Open
Conversation
Adds an enum and associated constant with default `ReprEndianness::Little` for describing the endianness of the binary representation of field elements, as proposed in zkcrypto/rfcs#4
tarcieri
added a commit
to RustCrypto/traits
that referenced
this pull request
Jun 21, 2026
Removes the `FieldBytesEncoding` trait and replaces it with:
- `Curve::FIELD_ENDIANNESS` which defaults to `ByteOrder::BigEndian`
- `field::{bytes_to_uint, uint_to_bytes}` generic free functions
This constant annoyingly duplicates the ones we have elsewhere, but
without getting it upstream into `ff` (zkcrypto/ff#158) there is no
single other convenient place to hang it but here.
Ideally this functionality could be phased out completely, but there are
still places that need it for now (e.g. legacy `rfc6979`, ECDSA
recovery).
In a future breaking release after the imminent one, we need to refactor
everything so the base and scalar fields are treated completely
separately. At that point, hopefully this all can and will need to go
away, and we will be able to leverage an upstream endianness constant
instead of having to stick (another) one in `elliptic-curve`.
tarcieri
added a commit
to RustCrypto/traits
that referenced
this pull request
Jun 21, 2026
…2457) Removes the `FieldBytesEncoding` trait and replaces it with: - `Curve::FIELD_ENDIANNESS` which defaults to `ByteOrder::BigEndian` - `field::{bytes_to_uint, uint_to_bytes}` generic free functions This constant annoyingly duplicates the ones we have elsewhere, but without getting it upstream into `ff` (zkcrypto/ff#158) there is no single other convenient place to hang it but here. Ideally this functionality could be phased out completely, but there are still places that need it for now (e.g. legacy `rfc6979`, ECDSA recovery). In a future breaking release after the imminent one, we need to refactor everything so the base and scalar fields are treated completely separately. At that point, hopefully this all can and will need to go away, and we will be able to leverage an upstream endianness constant instead of having to stick (another) one in `elliptic-curve`.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds an enum and associated constant with default
ReprEndianness::Littlefor describing the endianness of the binary representation of field elements, as proposed in zkcrypto/rfcs#4.Because the constant has a default, this is a non-breaking change.