From 428d50003c3c190b847065e33e4a8fcac4b1f615 Mon Sep 17 00:00:00 2001 From: str4d Date: Sun, 6 May 2018 05:19:05 +1200 Subject: [PATCH 1/5] Update contributors --- pom.xml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pom.xml b/pom.xml index 49061fd3..f624dc56 100644 --- a/pom.xml +++ b/pom.xml @@ -197,5 +197,17 @@ Ilya Maykov ilyam@fb.com + + Mark Raynsford + code@io7m.com + + + rick.parker + rick.parker@r3cev.com + + + Christian Sailer + christian.sailer@r3.com + From 9d6c031df750038166d9311005747ed276f2bb03 Mon Sep 17 00:00:00 2001 From: str4d Date: Sun, 6 May 2018 05:34:59 +1200 Subject: [PATCH 2/5] Tidy up README --- README.md | 41 ++++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 2024c20d..b1d9d6d1 100644 --- a/README.md +++ b/README.md @@ -3,11 +3,13 @@ EdDSA-Java [![Build Status](https://travis-ci.org/str4d/ed25519-java.svg?branch=master)](https://travis-ci.org/str4d/ed25519-java) -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). +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). There are two internal implementations: -* A port of the radix-2^51 operations in ref10 - fast and constant-time, but only useful for Ed25519. -* A generic version using BigIntegers for calculation - a bit slower and not constant-time, but compatible with any EdDSA parameter specification. +- A port of the radix-2^51 operations in ref10 - fast and constant-time, but only useful for Ed25519. +- A generic version using BigIntegers for calculation - a bit slower and not constant-time, but compatible + with any EdDSA parameter specification. To use @@ -66,25 +68,30 @@ Important changes ### 0.3.0 -- 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()` which boosts the performance of the public key constructor when the key is just -being passed around rather than used. +- 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. ### 0.2.0 -- Ed25519 is now named `Ed25519` in `EdDSANamedCurveTable`, and the previous public constant - (containing the older inaccurate name) has been removed. +- Ed25519 is now named `Ed25519` in `EdDSANamedCurveTable`, and the previous public constant (containing the + older inaccurate name) has been removed. Credits ------- -* The Ed25519 class was originally ported by k3d3 from [the Python Ed25519 reference implementation](https://ed25519.cr.yp.to/python/ed25519.py). -* 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). -* [BloodyRookie](https://github.com/BloodyRookie) reviewed the code, adding many useful comments, unit tests and literature. +- The Ed25519 class was originally ported by k3d3 from + [the Python Ed25519 reference implementation](https://ed25519.cr.yp.to/python/ed25519.py). +- 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). +- [BloodyRookie](https://github.com/BloodyRookie) reviewed the code, adding many useful comments, unit tests + and literature. From 5d0fd0263ae9688b6a9f7a4bd2c54e89cc8ace4b Mon Sep 17 00:00:00 2001 From: str4d Date: Sun, 6 May 2018 07:32:28 +1200 Subject: [PATCH 3/5] Test against Java 10 --- .travis.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.travis.yml b/.travis.yml index 7d234505..e59a3e9c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,6 +8,11 @@ jdk: matrix: include: + - env: JDK='OpenJDK 10' + before_install: wget https://github.com/sormuras/bach/raw/master/install-jdk.sh + install: + - . ./install-jdk.sh -F 10 -L GPL + - mvn install -DskipTests=true -Dmaven.javadoc.skip=true -Dgpg.skip=true -B -V - addons: apt: packages: From 5bf723980944abe379cf8760d4fdb44ee0d2ff0c Mon Sep 17 00:00:00 2001 From: str4d Date: Sun, 6 May 2018 08:23:29 +1200 Subject: [PATCH 4/5] Bump plugin versions --- pom.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/pom.xml b/pom.xml index f624dc56..475eeb27 100644 --- a/pom.xml +++ b/pom.xml @@ -56,17 +56,17 @@ 1.6 ${project.build.sourceEncoding} - 3.1 + 3.7.0 org.apache.maven.plugins maven-surefire-plugin - 2.17 + 2.21.0 org.apache.felix maven-bundle-plugin - 3.0.1 + 3.5.0 true @@ -86,7 +86,7 @@ org.apache.maven.plugins maven-source-plugin - 2.2.1 + 3.0.1 attach-sources @@ -99,7 +99,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 2.9.1 + 3.0.0 UTF-8 UTF-8 @@ -129,7 +129,7 @@ org.apache.maven.plugins maven-gpg-plugin - 1.5 + 1.6 sign-artifacts @@ -143,7 +143,7 @@ org.sonatype.plugins nexus-staging-maven-plugin - 1.6.7 + 1.6.8 true ossrh @@ -163,7 +163,7 @@ junit junit - 4.11 + 4.12 maven-plugin test From 3cffbfcb35efadbfac6d55a5bf26975bd8d63e0e Mon Sep 17 00:00:00 2001 From: str4d Date: Sun, 6 May 2018 08:24:41 +1200 Subject: [PATCH 5/5] eddsa-0.3.0 --- src/net/i2p/crypto/eddsa/EdDSASecurityProvider.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/net/i2p/crypto/eddsa/EdDSASecurityProvider.java b/src/net/i2p/crypto/eddsa/EdDSASecurityProvider.java index d03ee6f7..88c4a512 100644 --- a/src/net/i2p/crypto/eddsa/EdDSASecurityProvider.java +++ b/src/net/i2p/crypto/eddsa/EdDSASecurityProvider.java @@ -26,7 +26,7 @@ public class EdDSASecurityProvider extends Provider { public static final String PROVIDER_NAME = "EdDSA"; public EdDSASecurityProvider() { - super(PROVIDER_NAME, 0.2 /* should match POM major.minor version */, "str4d " + PROVIDER_NAME + " security provider wrapper"); + super(PROVIDER_NAME, 0.3 /* should match POM major.minor version */, "str4d " + PROVIDER_NAME + " security provider wrapper"); AccessController.doPrivileged(new PrivilegedAction() { @Override