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

How to Add the Ed448-Goldilocks elliptic curve to the project #2622

Open
mohammad-babaei opened this issue Oct 27, 2023 · 2 comments
Open

How to Add the Ed448-Goldilocks elliptic curve to the project #2622

mohammad-babaei opened this issue Oct 27, 2023 · 2 comments
Labels
effort/days Estimated to take multiple days, but less than a week kind/enhancement A net-new feature or improvement to an existing feature

Comments

@mohammad-babaei
Copy link

mohammad-babaei commented Oct 27, 2023

Description

I would like to explore the possibility of adding the Ed448-Goldilocks elliptic curve support to the go-libp2p project. This would be a significant change and has the potential to enhance the security and performance of the project. I would appreciate guidance and assistance on how to make this enhancement.

Requested Changes

I would like to understand the necessary steps to add the Ed448-Goldilocks elliptic curve to the go-libp2p project. This may include modifications to cryptographic libraries, code changes, and any other related adjustments.

Questions

  1. Could you provide guidance on the codebase files that would need modification for this transition?
  2. Are there any compatibility concerns or potential breaking changes this might introduce?

Additional Information

Please provide any additional context, recommendations, or relevant information related to this elliptic curve change that would help me better understand the process.

Thank you for your assistance and support in considering this change. I'm looking forward to your guidance and expertise on this matter.

@Jorropo
Copy link
Contributor

Jorropo commented Nov 22, 2023

@marten-seemann
Copy link
Contributor

What @Jorropo said.

I'd like to add that it's possible to experiment with this, or even roll it out, without the blessing of the go-libp2p project. You can modify the map of key unmarshallers from your application:

// PubKeyUnmarshallers is a map of unmarshallers by key type
var PubKeyUnmarshallers = map[pb.KeyType]PubKeyUnmarshaller{
pb.KeyType_RSA: UnmarshalRsaPublicKey,
pb.KeyType_Ed25519: UnmarshalEd25519PublicKey,
pb.KeyType_Secp256k1: UnmarshalSecp256k1PublicKey,
pb.KeyType_ECDSA: UnmarshalECDSAPublicKey,
}

That said, it probably makes sense to go the road of properly standardizing this, especially if you want libp2p implementations in other languages to support this as well at some point in the future. Please start a discussion in the specs repo.

@marten-seemann marten-seemann added kind/enhancement A net-new feature or improvement to an existing feature effort/days Estimated to take multiple days, but less than a week need/maintainer-input Needs input from the current maintainer(s) and removed need/maintainer-input Needs input from the current maintainer(s) labels Dec 7, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
effort/days Estimated to take multiple days, but less than a week kind/enhancement A net-new feature or improvement to an existing feature
Projects
None yet
Development

No branches or pull requests

3 participants