You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is an implementation of EdDSA in Java. Structurally, it is based on the ref10 implementation in SUPERCOP (see https://ed25519.cr.yp.to/software.html).
6
+
This is an implementation of EdDSA in Java. Structurally, it is based on the ref10 implementation in SUPERCOP
7
+
(see https://ed25519.cr.yp.to/software.html).
7
8
8
9
There are two internal implementations:
9
-
* A port of the radix-2^51 operations in ref10 - fast and constant-time, but only useful for Ed25519.
10
-
* A generic version using BigIntegers for calculation - a bit slower and not constant-time, but compatible with any EdDSA parameter specification.
10
+
- A port of the radix-2^51 operations in ref10 - fast and constant-time, but only useful for Ed25519.
11
+
- A generic version using BigIntegers for calculation - a bit slower and not constant-time, but compatible
12
+
with any EdDSA parameter specification.
11
13
12
14
13
15
To use
@@ -66,25 +68,30 @@ Important changes
66
68
67
69
### 0.3.0
68
70
69
-
- The library has been extensively profiled for contention issues in a multi-threaded environment. The only remaining potential
70
-
contention is in `EdDSANamedCurveTable.defineCurve()`, which will be rarely called.
71
-
- The public constant for the curve name has returned as `ED_25519` and the curve specification has a public constant
72
-
`ED_25519_CURVE_SPEC` to avoid repeated lookups when converting to and from encoded form for the public or private keys.
73
-
-`GroupElement` is now completely immutable and all fields final to avoid the need for `synchronized` blocks over mutable fields.
74
-
This required some new constructors and paths to construction.
75
-
-`EdDSAPublicKeySpec.getNegativeA()` and `EdDSAPublicKey.getNegativeA()` now evaluate lazily, taking advantage of the
76
-
immutability of `GroupElement.negate()` which boosts the performance of the public key constructor when the key is just
77
-
being passed around rather than used.
71
+
- The library has been extensively profiled for contention issues in a multi-threaded environment. The only
72
+
remaining potential contention is in `EdDSANamedCurveTable.defineCurve()`, which will be rarely called.
73
+
- The public constant for the curve name has returned as `ED_25519`, and the curve specification has a public
74
+
constant `ED_25519_CURVE_SPEC` to avoid repeated lookups when converting to and from encoded form for the
75
+
public or private keys.
76
+
-`GroupElement` is now completely immutable, and all fields final, to avoid the need for `synchronized`
77
+
blocks over mutable fields. This required some new constructors and paths to construction.
78
+
-`EdDSAPublicKeySpec.getNegativeA()` and `EdDSAPublicKey.getNegativeA()` now evaluate lazily, taking
79
+
advantage of the immutability of `GroupElement.negate()`. This boosts the performance of the public key
80
+
constructor when the key is just being passed around rather than used.
78
81
- Support for X509Key wrapped EdDSA public keys.
79
82
80
83
### 0.2.0
81
84
82
-
- Ed25519 is now named `Ed25519` in `EdDSANamedCurveTable`, and the previous public constant
83
-
(containing the older inaccurate name) has been removed.
85
+
- Ed25519 is now named `Ed25519` in `EdDSANamedCurveTable`, and the previous public constant (containing the
86
+
older inaccurate name) has been removed.
84
87
85
88
Credits
86
89
-------
87
90
88
-
* The Ed25519 class was originally ported by k3d3 from [the Python Ed25519 reference implementation](https://ed25519.cr.yp.to/python/ed25519.py).
89
-
* Useful comments and tweaks were found in [the GNUnet implementation of Ed25519](https://gnunet.org/svn/gnunet-java/src/main/java/org/gnunet/util/crypto/) (based on k3d3's class).
90
-
*[BloodyRookie](https://github.com/BloodyRookie) reviewed the code, adding many useful comments, unit tests and literature.
91
+
- The Ed25519 class was originally ported by k3d3 from
0 commit comments