Skip to content

Conversation

@SucharMistrz
Copy link
Collaborator

This branch fixes 2 issues related to EDPoint representation. First and foremost, it addresses an issue with the modulo P operations missing in some cases and, as a result, the parameter T being inconsistently calculated. Secondly, deriving an ED25519PublicKey from an ED25519PrivateKey now ensures the underlying EDPoint is scaled to affine coordinates, allowing us to easily compare any actually derived ED25519PublicKey with the expected results of EDPoint.fromBytes().

List of changes:

  • updated ed25519_private_key.dart, so that publicKey getter always constructs the public key from an EDPoint scaled to affine coordinates, ensuring consistency with the EDPoint form produced by EDPoint.fromBytes()
  • updated ed_point.dart, adding modulo P operations where they were missing, which also ensures consistency of the fromBytes() default constructor with the EDPoint form produced by scaleToAffineCoordinates(), as well as fixing an incorrect value for the parameter T in * operator
  • unrelated with the domain: fixed solana-specific ed25519_derivator_test.dart using Ethereum derivation path in tests

This branch fixes 2 issues related to EDPoint representation. First and foremost, it addresses an issue with the modulo P operations missing in some cases and, as a result, the parameter T being inconsistently calculated. Secondly, deriving an ED25519PublicKey from an ED25519PrivateKey now ensures the underlying EDPoint is scaled to affine coordinates, allowing us to easily compare any actually derived ED25519PublicKey with the expected results of EDPoint.fromBytes().

List of changes:
- updated ed25519_private_key.dart, so that publicKey getter always constructs the public key from an EDPoint scaled to affine coordinates, ensuring consistency with the EDPoint form produced by EDPoint.fromBytes()
- updated ed_point.dart, adding modulo P operations where they were missing, which also ensures consistency of the fromBytes() default constructor with the EDPoint form produced by scaleToAffineCoordinates(), as well as fixing an incorrect value for the parameter T in * operator
- unrelated with the domain: fixed solana-specific ed25519_derivator_test.dart using Ethereum derivation path in tests
@kronikarz kronikarz merged commit 2bacef5 into master Dec 15, 2025
2 checks passed
@kronikarz kronikarz deleted the ks-bugfix/inconsistent-edpoint-representation branch December 15, 2025 14:10
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.

4 participants