Str4d Ed25519 Java Versions Save

Pure Java implementation of EdDSA

v0.3.0

6 years ago

Notable changes in this release:

  • The library has been extensively profiled for contention issues in a multi-threaded environment. The only remaining potential contention is in EdDSANamedCurveTable.defineCurve(), which will be rarely called.
  • The public constant for the curve name has returned as ED_25519, and the curve specification has a public constant ED_25519_CURVE_SPEC to avoid repeated lookups when converting to and from encoded form for the public or private keys.
  • GroupElement is now completely immutable, and all fields final, to avoid the need for synchronized blocks over mutable fields. This required some new constructors and paths to construction.
  • EdDSAPublicKeySpec.getNegativeA() and EdDSAPublicKey.getNegativeA() now evaluate lazily, taking advantage of the immutability of GroupElement.negate(). This boosts the performance of the public key constructor when the key is just being passed around rather than used.
  • Support for X509Key wrapped EdDSA public keys.

For all details, see the milestone.

v0.2.0

7 years ago

Notable changes in this release:

  • The OIDs and PKI encodings of public and private keys have changed to match draft-ietf-curdle-pkix-04.
    • The previous encoding can still be read, but only the new encoding will be written out.
  • The named curve spec now uses the canonical name Ed25519 per RFC 8032 and draft-ietf-curdle-pkix-04.
  • The library contains a JCA security provider (named EdDSA).
  • A constant-time issue has been fixed (https://github.com/str4d/ed25519-java/pull/31).

For all details, see the milestone.

v0.1.0

8 years ago

This is the first release of the library. Features:

  • Ed25519-specific implementation
    • Based on ref10 with constant-time signing
  • Generic BigInteger-based implementation
    • Supports any EdDSA parameter specification
    • Not constant-time
  • JCA-compatible
    • Instantiate EdDSAEngine as a Signature
  • One-shot signing methods
    • Instantiate EdDSAEngine directly