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

bounty: Edwards-curve Digital Signature Algorithm (EdDSA) #78

Open
7 tasks
0xJepsen opened this issue May 23, 2024 · 8 comments
Open
7 tasks

bounty: Edwards-curve Digital Signature Algorithm (EdDSA) #78

0xJepsen opened this issue May 23, 2024 · 8 comments
Assignees
Labels
bounty 🏴‍☠️ Closing this rewards a bounty! feature ✨ New feature or request priority-high 🔥 High priority tasks

Comments

@0xJepsen
Copy link
Contributor

0xJepsen commented May 23, 2024

Bounty description

Implement the Edwards-curve Digital Signature Algorithm (EdDSA) for ronkathon. EdDSA is a modern digital signature scheme, and this implementation should focus on the Edwards25519 curve variant.

Implementation requirements

  • Implement key generation for Ed25519 curve
    • Generate public / private key pairs
    • Ensure proper key formatting and encoding
  • Implement the EdDSA signing function, following the EdDSA specification for Ed25519
    • Implement proper message preprocessing
    • Generate valid signatures
  • Implement the EdDSA sig verification function
  • Implement proper error handling and input validation
  • Create comprehensive unit tests, including test vectors from the EdDSA specification;
    • Test various message lengths and edge cases

Bonus features

  • Add a benchmarking suite to test performance
  • Implement batch signature verification for improved efficiency

Resources

RFC 8032: Edwards-Curve Digital Signature Algorithm (EdDSA)
Curve25519: new Diffie-Hellman speed records
EdDSA for more curves
The Ed25519 signature scheme

Criteria

Bounties will be rewarded based on the following criteria:

  1. Correctness and security: A thorough review of the implementation should convince our team that they are correct and secure, with all requirements met.
  2. Code clarity and quality: Succinct, easy-to-follow code with appropriate naming conventions. Utilize Rust’s type system for flexibility and security (e.g., compile-time checks where possible), and avoid external crates. Optimizations should be a lower priority than clarity, but can be included behind a feature flag as a bonus.
  3. Documentation quality: Provide comprehensive README’s, Cargo docs, and inline comments where code itself is not self-explanatory. Prioritize clarity and readability.
@0xJepsen 0xJepsen self-assigned this May 23, 2024
@pluto pluto deleted a comment from brunny-eth Sep 11, 2024
@pluto pluto deleted a comment from brunny-eth Sep 11, 2024
@pluto pluto deleted a comment from 0xJepsen Sep 11, 2024
@Autoparallel Autoparallel pinned this issue Sep 11, 2024
@Autoparallel Autoparallel changed the title feat: tiny Edwards-curve Digital Signature Algorithm (EdDSA) bounty: Edwards-curve Digital Signature Algorithm (EdDSA) Sep 11, 2024
@mrdaybird
Copy link
Contributor

mrdaybird commented Nov 9, 2024

Can I take this up? @0xJepsen @Autoparallel

@mrdaybird
Copy link
Contributor

mrdaybird commented Dec 18, 2024

I am working on this if that is not an issue.

@Autoparallel
Copy link
Contributor

@mrdaybird can you compare your intention against: #125

I'd love to carry #125 across into main. Perhaps we can get EdDSA done alongside this?a

@Autoparallel
Copy link
Contributor

Assigned nonetheless

@mrdaybird
Copy link
Contributor

mrdaybird commented Dec 18, 2024

@mrdaybird can you compare your intention against: #125

My intent was to create a separate folder for different types(ecdsa, eddsa...) of digital signature (something like src/digital_signatures) and explain digital signatures in depth (something like merkle tree doc but more math ig).

I am not sure how it fits with #125. I think the major part of #125 is "tripartite ecdh and tate pairing" (ecdh itself is already there), I think fitting eddsa will be a different tangent for that PR, also I have different goals, i.e. 1. explain digital signatures through eddsa and 2. implement eddsa

@Autoparallel

@Autoparallel
Copy link
Contributor

This sounds good to me. Go ahead and cook on what you're interested in cooking in :)

If there is a crossover episode into #125 that'd be based.

@Autoparallel
Copy link
Contributor

@brunny-eth Just pinging you since this is a bounty issue.

@Autoparallel
Copy link
Contributor

This is still a bounty. Bot removed a label inadvertently and I typoed the color formatting in the label 🤕

@Autoparallel Autoparallel added priority-high 🔥 High priority tasks feature ✨ New feature or request bounty 🏴‍☠️ Closing this rewards a bounty! labels Dec 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bounty 🏴‍☠️ Closing this rewards a bounty! feature ✨ New feature or request priority-high 🔥 High priority tasks
Projects
None yet
Development

No branches or pull requests

3 participants