A summary of data about the Ruby ecosystem.

https://github.com/RubyCrypto/ed25519

Ed25519 high-performance public-key signature system as a RubyGem (MRI C extension and JRuby Java extension)
https://github.com/RubyCrypto/ed25519

Keywords

cryptography curve25519 digital-signatures ed25519 elliptic-curves

Keywords from Contributors

activerecord rubygem crash-reporting rack activejob mvc feature-flag multithreading

Last synced: about 21 hours ago
JSON representation

Repository metadata

Ed25519 high-performance public-key signature system as a RubyGem (MRI C extension and JRuby Java extension)

README.md

ed25519.rb Latest Version Yard Docs License: MIT CI Status

A Ruby binding to the Ed25519 elliptic curve public-key signature system
described in RFC 8032.

Two implementations are provided: a MRI C extension which uses the "ref10"
implementation from the SUPERCOP benchmark suite, and a pure Java version
based on str4d/ed25519-java.

Ed25519 is one of two notable algorithms implemented atop the Curve25519
elliptic curve. The x25519 gem is a related project of this one,
and implements the X25519 Diffie-Hellman key exchange algorithm on the
Montgomery form of Curve25519.

What is Ed25519?

Ed25519 is a modern implementation of a Schnorr signature system using
elliptic curve groups.

Ed25519 provides a 128-bit security level, that is to say, all known attacks
take at least 2^128 operations, providing the same security level as AES-128,
NIST P-256, and RSA-3072.

Ed25519 Diagram

Ed25519 has a number of unique properties that make it one of the best-in-class
digital signature algorithms:

  • Small keys: Ed25519 keys are only 256-bits (32 bytes), making them
    small enough to easily copy around. Ed25519 also allows the public key
    to be derived from the private key, meaning that it doesn't need to be
    included in a serialized private key in cases you want both.
  • Small signatures: Ed25519 signatures are only 512-bits (64 bytes),
    one of the smallest signature sizes available.
  • Deterministic: Unlike (EC)DSA, Ed25519 does not rely on an entropy
    source when signing messages. This can be a potential attack vector if
    the entropy source is not generating good random numbers. Ed25519 avoids
    this problem entirely and will always generate the same signature for the
    same data.
  • Collision Resistant: Hash-function collisions do not break this
    system. This adds a layer of defense against the possibility of weakness
    in the selected hash function.

You can read more on Dan Bernstein's Ed25519 site.

Is it any good?

Yes.

Help and Discussion

Have questions? Want to suggest a feature or change? Join a discussion group:

Requirements

ed25519.rb is supported on and tested against the following platforms:

  • MRI 3.0, 3.1, 3.2, 3.3, 3.4
  • JRuby 9.4.12, 10.0.0

Installation

Add this line to your application's Gemfile:

gem 'ed25519'

And then execute:

$ bundle

Or install it yourself as:

$ gem install ed25519

Usage

Require ed25519.rb in your Ruby program:

require "ed25519"

Generate a new random signing key:

signing_key = Ed25519::SigningKey.generate

Sign a message with the signing key:

signature = signing_key.sign(message)

Obtain the verify key for a given signing key:

verify_key = signing_key.verify_key

Check the validity of a signature:

verify_key.verify(signature, message)

The verify method will return true if the signature verifies, or raise
Ed25519::VerifyError if verification fails.

Serializing Keys

Keys can be serialized as 32-byte binary strings as follows:

signature_key_bytes = signing_key.to_bytes
verify_key_bytes = verify_key.to_bytes

The binary serialization can be passed directly into the constructor for a given key type:

signing_key = Ed25519::SigningKey.new(signature_key_bytes)
verify_key  = Ed25519::VerifyKey.new(verify_key_bytes)

Security Notes

The Ed25519 "ref10" implementation from SUPERCOP was lovingly crafted by expert
security boffins with great care taken to prevent timing attacks. The same
cannot be said for the C code used in the ed25519.rb C extension or in the
entirety of the provided Java implementation.

Care should be taken to avoid leaking to the attacker how long it takes to
generate keys or sign messages (at least until ed25519.rb itself can be audited
by experts who can fix any potential timing vulnerabilities)

ed25519.rb relies on a strong SecureRandom for key generation.
Weaknesses in the random number source can potentially result in insecure keys.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/RubyCrypto/ed25519.
This project is intended to be a safe, welcoming space for collaboration,
and contributors areexpected to adhere to the Contributor Covenant
code of conduct.

License

Copyright (c) 2012-2025 Tony Arcieri. Distributed under the MIT License. See
LICENSE for further details.

Code of Conduct

Everyone interacting in the ed25519.rb project’s codebases, issue trackers, chat
rooms and mailing lists is expected to follow the code of conduct.


Owner metadata


GitHub Events

Total
Last Year

Committers metadata

Last synced: 2 days ago

Total Commits: 117
Total Committers: 8
Avg Commits per committer: 14.625
Development Distribution Score (DDS): 0.137

Commits in past year: 6
Committers in past year: 3
Avg Commits per committer in past year: 2.0
Development Distribution Score (DDS) in past year: 0.333

Name Email Commits
Tony Arcieri b****e@g****m 101
Alexey Zapparov a****y@z****m 5
Utkarsh Gupta u****h@d****g 4
ghosteathuman 4****n 2
Peter Goldstein p****n@g****m 2
Jeremy Evans c****e@j****t 1
Dennis Martinez d****s@d****m 1
Alex Kotov k****n@g****m 1

Committer domains:


Issue and Pull Request metadata

Last synced: about 1 month ago

Total issues: 13
Total pull requests: 33
Average time to close issues: 6 days
Average time to close pull requests: about 1 month
Total issue authors: 11
Total pull request authors: 10
Average comments per issue: 5.08
Average comments per pull request: 0.94
Merged pull request: 31
Bot issues: 0
Bot pull requests: 0

Past year issues: 1
Past year pull requests: 3
Past year average time to close issues: 14 days
Past year average time to close pull requests: 29 minutes
Past year issue authors: 1
Past year pull request authors: 2
Past year average comments per issue: 24.0
Past year average comments per pull request: 0.67
Past year merged pull request: 3
Past year bot issues: 0
Past year bot pull requests: 0

More stats: https://issues.ecosyste.ms/repositories/lookup?url=https://github.com/RubyCrypto/ed25519

Top Issue Authors

  • tarcieri (3)
  • xuxiaohu (1)
  • rschultheis (1)
  • da2x (1)
  • zw963 (1)
  • johndbritton (1)
  • jboler (1)
  • rchekaluk (1)
  • lukef (1)
  • jepzen (1)
  • og1en (1)

Top Pull Request Authors

  • tarcieri (22)
  • petergoldstein (2)
  • ixti (2)
  • rschultheis (2)
  • ghosteathuman (2)
  • jeremyevans (2)
  • utkarsh2102 (2)
  • dennmart (2)
  • kotovalexarian (1)
  • deepj (1)

Top Issue Labels

Top Pull Request Labels

  • hacktoberfest-accepted (2)

Package metadata

gem.coop: ed25519

A Ruby binding to the Ed25519 elliptic curve public-key signature system described in RFC 8032.

  • Homepage: https://github.com/RubyCrypto/ed25519
  • Documentation: http://www.rubydoc.info/gems/ed25519/
  • Licenses: MIT
  • Latest release: 1.4.0 (published 10 months ago)
  • Last Synced: 2026-03-01T20:02:17.455Z (1 day ago)
  • Versions: 19
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 109,798,034 Total
  • Docker Downloads: 652,501,926
  • Rankings:
    • Dependent repos count: 0.0%
    • Dependent packages count: 0.0%
    • Average: 0.095%
    • Docker downloads count: 0.138%
    • Downloads: 0.243%
  • Maintainers (1)
rubygems.org: ed25519

A Ruby binding to the Ed25519 elliptic curve public-key signature system described in RFC 8032.

  • Homepage: https://github.com/RubyCrypto/ed25519
  • Documentation: http://www.rubydoc.info/gems/ed25519/
  • Licenses: MIT
  • Latest release: 1.4.0 (published 10 months ago)
  • Last Synced: 2026-02-28T12:03:19.421Z (3 days ago)
  • Versions: 19
  • Dependent Packages: 105
  • Dependent Repositories: 3,789
  • Downloads: 109,737,188 Total
  • Docker Downloads: 652,501,926
  • Rankings:
    • Docker downloads count: 0.215%
    • Dependent packages count: 0.335%
    • Downloads: 0.377%
    • Dependent repos count: 0.512%
    • Average: 2.203%
    • Stargazers count: 5.375%
    • Forks count: 6.405%
  • Maintainers (1)
gem.coop: ed-precompiled_ed25519

A Ruby binding to the Ed25519 elliptic curve public-key signature system described in RFC 8032.

  • Homepage: https://github.com/RubyCrypto/ed25519
  • Documentation: http://www.rubydoc.info/gems/ed-precompiled_ed25519/
  • Licenses: MIT
  • Latest release: 1.4.0 (published 5 months ago)
  • Last Synced: 2026-02-28T12:03:19.847Z (3 days ago)
  • Versions: 3
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 718 Total
  • Rankings:
    • Dependent repos count: 0.0%
    • Dependent packages count: 0.0%
    • Stargazers count: 5.214%
    • Forks count: 6.346%
    • Average: 22.309%
    • Downloads: 99.983%
  • Maintainers (1)
rubygems.org: ed-precompiled_ed25519

A Ruby binding to the Ed25519 elliptic curve public-key signature system described in RFC 8032.

  • Homepage: https://github.com/RubyCrypto/ed25519
  • Documentation: http://www.rubydoc.info/gems/ed-precompiled_ed25519/
  • Licenses: MIT
  • Latest release: 1.4.0 (published 5 months ago)
  • Last Synced: 2026-02-28T12:03:19.858Z (3 days ago)
  • Versions: 3
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 718 Total
  • Rankings:
    • Stargazers count: 4.885%
    • Forks count: 5.96%
    • Dependent packages count: 14.23%
    • Average: 32.26%
    • Dependent repos count: 43.588%
    • Downloads: 92.636%
  • Maintainers (1)
ubuntu-24.04: ruby-ed25519

  • Homepage: https://github.com/RubyCrypto/ed25519
  • Licenses:
  • Latest release: 1.3.0+ds-1build4 (published 18 days ago)
  • Last Synced: 2026-02-13T01:02:53.682Z (18 days ago)
  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Rankings:
ubuntu-23.10: ruby-ed25519

  • Homepage: https://github.com/RubyCrypto/ed25519
  • Licenses:
  • Latest release: 1.3.0+ds-1build2 (published 18 days ago)
  • Last Synced: 2026-02-13T18:18:24.347Z (18 days ago)
  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Rankings:
    • Dependent repos count: 0.0%
    • Dependent packages count: 0.0%
    • Average: 100%
ubuntu-23.04: ruby-ed25519

  • Homepage: https://github.com/RubyCrypto/ed25519
  • Licenses:
  • Latest release: 1.3.0+ds-1build2 (published 20 days ago)
  • Last Synced: 2026-02-11T06:38:26.008Z (20 days ago)
  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Rankings:
    • Dependent repos count: 0.0%
    • Dependent packages count: 0.0%
    • Average: 100%
ubuntu-24.10: ruby-ed25519

  • Homepage: https://github.com/RubyCrypto/ed25519
  • Licenses:
  • Latest release: 1.3.0+ds-1build5 (published 22 days ago)
  • Last Synced: 2026-02-09T16:27:53.463Z (22 days ago)
  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Rankings:
debian-12: ruby-ed25519

  • Homepage: https://github.com/RubyCrypto/ed25519
  • Documentation: https://packages.debian.org/bookworm/ruby-ed25519
  • Licenses:
  • Latest release: 1.3.0+ds-1 (published 18 days ago)
  • Last Synced: 2026-02-12T23:28:29.216Z (18 days ago)
  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Rankings:
    • Dependent repos count: 0.0%
    • Dependent packages count: 0.0%
    • Average: 100%
debian-13: ruby-ed25519

  • Homepage: https://github.com/RubyCrypto/ed25519
  • Documentation: https://packages.debian.org/trixie/ruby-ed25519
  • Licenses:
  • Latest release: 1.4.0+ds-1 (published 19 days ago)
  • Last Synced: 2026-02-13T13:14:58.578Z (18 days ago)
  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Rankings:
    • Dependent repos count: 0.0%
    • Dependent packages count: 0.0%
    • Average: 100%
ubuntu-22.04: ruby-ed25519

  • Homepage: https://github.com/RubyCrypto/ed25519
  • Licenses:
  • Latest release: 1.3.0+ds-1 (published 18 days ago)
  • Last Synced: 2026-02-13T13:16:03.812Z (18 days ago)
  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Rankings:
    • Dependent repos count: 0.0%
    • Dependent packages count: 0.0%
    • Average: 100%

Dependencies

Gemfile rubygems
  • coveralls >= 0 development
  • rake >= 0 development
  • rake-compiler ~> 1.0 development
  • rspec ~> 3.7 development
  • rubocop ~> 1.12.1 development
  • rubocop-packaging ~> 0.5.1 development
ed25519.gemspec rubygems
  • bundler >= 0 development
.github/workflows/ci.yml actions
  • actions/cache v3 composite
  • actions/checkout v3 composite
  • actions/checkout v2 composite
  • ruby/setup-ruby v1 composite

Score: 27.99508812604516