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 constantED_25519_CURVE_SPECto avoid repeated lookups when converting to and from encoded form for the public or private keys. GroupElementis now completely immutable, and all fields final, to avoid the need forsynchronizedblocks over mutable fields. This required some new constructors and paths to construction.EdDSAPublicKeySpec.getNegativeA()andEdDSAPublicKey.getNegativeA()now evaluate lazily, taking advantage of the immutability ofGroupElement.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.