diff --git a/core/java/src/net/i2p/crypto/DSAEngine.java b/core/java/src/net/i2p/crypto/DSAEngine.java
index 8b0383b379e35393a7e3dee99497cc5219bbfa69..e4a8e675888b3f915a6fefc817c283b1c7d07d32 100644
--- a/core/java/src/net/i2p/crypto/DSAEngine.java
+++ b/core/java/src/net/i2p/crypto/DSAEngine.java
@@ -42,6 +42,7 @@ import java.security.interfaces.ECKey;
 import java.security.interfaces.RSAKey;
 
 import net.i2p.I2PAppContext;
+import net.i2p.crypto.eddsa.EdDSAEngine;
 import net.i2p.crypto.eddsa.EdDSAKey;
 import net.i2p.data.Hash;
 import net.i2p.data.Signature;
@@ -517,7 +518,7 @@ public class DSAEngine {
 
         java.security.Signature jsig;
         if (type.getBaseAlgorithm() == SigAlgo.EdDSA)
-            jsig = new net.i2p.crypto.eddsa.EdDSAEngine(type.getDigestInstance());
+            jsig = new EdDSAEngine(type.getDigestInstance());
         else
             jsig = java.security.Signature.getInstance(type.getAlgorithmName());
         PublicKey pubKey = SigUtil.toJavaKey(verifyingKey);
@@ -566,7 +567,7 @@ public class DSAEngine {
         String algo = getRawAlgo(type);
         java.security.Signature jsig;
         if (type.getBaseAlgorithm() == SigAlgo.EdDSA)
-            jsig = new net.i2p.crypto.eddsa.EdDSAEngine(); // Ignore algo, EdDSAKey includes a hash specification.
+            jsig = new EdDSAEngine(); // Ignore algo, EdDSAKey includes a hash specification.
         else
             jsig = java.security.Signature.getInstance(algo);
         jsig.initVerify(pubKey);
@@ -608,7 +609,7 @@ public class DSAEngine {
 
         java.security.Signature jsig;
         if (type.getBaseAlgorithm() == SigAlgo.EdDSA)
-            jsig = new net.i2p.crypto.eddsa.EdDSAEngine(type.getDigestInstance());
+            jsig = new EdDSAEngine(type.getDigestInstance());
         else
             jsig = java.security.Signature.getInstance(type.getAlgorithmName());
         PrivateKey privKey = SigUtil.toJavaKey(privateKey);
@@ -651,7 +652,7 @@ public class DSAEngine {
 
         java.security.Signature jsig;
         if (type.getBaseAlgorithm() == SigAlgo.EdDSA)
-            jsig = new net.i2p.crypto.eddsa.EdDSAEngine(); // Ignore algo, EdDSAKey includes a hash specification.
+            jsig = new EdDSAEngine(); // Ignore algo, EdDSAKey includes a hash specification.
         else
             jsig = java.security.Signature.getInstance(algo);
         jsig.initSign(privKey, _context.random());
diff --git a/core/java/src/net/i2p/crypto/eddsa/EdDSAEngine.java b/core/java/src/net/i2p/crypto/eddsa/EdDSAEngine.java
index a7c41fba3733dfa2df783fc31fe6aeba236557dc..6cf9b4d859d371dbc50af63e074799354c7faab9 100644
--- a/core/java/src/net/i2p/crypto/eddsa/EdDSAEngine.java
+++ b/core/java/src/net/i2p/crypto/eddsa/EdDSAEngine.java
@@ -16,6 +16,7 @@ import net.i2p.crypto.eddsa.math.GroupElement;
 import net.i2p.crypto.eddsa.math.ScalarOps;
 
 /**
+ * @since 0.9.15
  * @author str4d
  *
  */
diff --git a/core/java/src/net/i2p/crypto/eddsa/EdDSAKey.java b/core/java/src/net/i2p/crypto/eddsa/EdDSAKey.java
index e093660f06ff1b7b3c1b55ed0a38331e092c4863..d710d8c2f68ccd59da9adc81740c866a003e552b 100644
--- a/core/java/src/net/i2p/crypto/eddsa/EdDSAKey.java
+++ b/core/java/src/net/i2p/crypto/eddsa/EdDSAKey.java
@@ -4,6 +4,8 @@ import net.i2p.crypto.eddsa.spec.EdDSAParameterSpec;
 
 /**
  * Common interface for all EdDSA keys.
+ *
+ * @since 0.9.15
  * @author str4d
  *
  */
diff --git a/core/java/src/net/i2p/crypto/eddsa/EdDSAPrivateKey.java b/core/java/src/net/i2p/crypto/eddsa/EdDSAPrivateKey.java
index bbe7e1c6d31e4e60068a04baf29fafde13f96f1b..d3945976aa494fc7e933b82d32fcc458d069e132 100644
--- a/core/java/src/net/i2p/crypto/eddsa/EdDSAPrivateKey.java
+++ b/core/java/src/net/i2p/crypto/eddsa/EdDSAPrivateKey.java
@@ -8,6 +8,8 @@ import net.i2p.crypto.eddsa.spec.EdDSAPrivateKeySpec;
 
 /**
  * An EdDSA private key.
+ *
+ * @since 0.9.15
  * @author str4d
  *
  */
diff --git a/core/java/src/net/i2p/crypto/eddsa/EdDSAPublicKey.java b/core/java/src/net/i2p/crypto/eddsa/EdDSAPublicKey.java
index e7505013ae5e089da3498be6757cf7eaf55f6ab2..8e436bd1d8b305cd761fc6d4334748427e8efb3f 100644
--- a/core/java/src/net/i2p/crypto/eddsa/EdDSAPublicKey.java
+++ b/core/java/src/net/i2p/crypto/eddsa/EdDSAPublicKey.java
@@ -8,6 +8,8 @@ import net.i2p.crypto.eddsa.spec.EdDSAPublicKeySpec;
 
 /**
  * An EdDSA public key.
+ *
+ * @since 0.9.15
  * @author str4d
  *
  */
diff --git a/core/java/src/net/i2p/crypto/eddsa/KeyFactory.java b/core/java/src/net/i2p/crypto/eddsa/KeyFactory.java
index e4daf36eb186033343681247c79c13204ab26c25..950130ac987fd290c835117a281cb58a8656e04d 100644
--- a/core/java/src/net/i2p/crypto/eddsa/KeyFactory.java
+++ b/core/java/src/net/i2p/crypto/eddsa/KeyFactory.java
@@ -12,6 +12,7 @@ import net.i2p.crypto.eddsa.spec.EdDSAPrivateKeySpec;
 import net.i2p.crypto.eddsa.spec.EdDSAPublicKeySpec;
 
 /**
+ * @since 0.9.15
  * @author str4d
  *
  */
diff --git a/core/java/src/net/i2p/crypto/eddsa/KeyPairGenerator.java b/core/java/src/net/i2p/crypto/eddsa/KeyPairGenerator.java
index 81508f77c7fb4c3e2617c8edcd3f656cd3f629c1..a3db1035ab07c3c053bf32d10598a06dad7c17f8 100644
--- a/core/java/src/net/i2p/crypto/eddsa/KeyPairGenerator.java
+++ b/core/java/src/net/i2p/crypto/eddsa/KeyPairGenerator.java
@@ -17,6 +17,8 @@ import net.i2p.crypto.eddsa.spec.EdDSAPublicKeySpec;
 
 /**
  *  Default strength is 256
+ *
+ *  @since 0.9.15
  */
 public class KeyPairGenerator extends KeyPairGeneratorSpi {
     private static final int DEFAULT_STRENGTH = 256;
diff --git a/core/java/src/net/i2p/crypto/eddsa/Utils.java b/core/java/src/net/i2p/crypto/eddsa/Utils.java
index 3d743f81bf0cfb64ffe535b81c8b1c394603a6a9..8c8bb2ea3918beece079a8b348f7cf7e2be09fda 100644
--- a/core/java/src/net/i2p/crypto/eddsa/Utils.java
+++ b/core/java/src/net/i2p/crypto/eddsa/Utils.java
@@ -1,6 +1,10 @@
 package net.i2p.crypto.eddsa;
 
 /**
+ * Basic utilities for eddsa.
+ * Not for external use, not maintained as a public API.
+ *
+ * @since 0.9.15
  * @author str4d
  *
  */
diff --git a/core/java/src/net/i2p/crypto/eddsa/math/Curve.java b/core/java/src/net/i2p/crypto/eddsa/math/Curve.java
index 38f690e3faab189990ea11c567deaa04e96b54af..4cbc74757a2ea81410219c0a3cc56351e137f7cc 100644
--- a/core/java/src/net/i2p/crypto/eddsa/math/Curve.java
+++ b/core/java/src/net/i2p/crypto/eddsa/math/Curve.java
@@ -5,6 +5,8 @@ import java.io.Serializable;
 /**
  * A twisted Edwards curve.
  * Points on the curve satisfy -x^2 + y^2 = 1 + d x^2y^2
+ *
+ * @since 0.9.15
  * @author str4d
  *
  */
diff --git a/core/java/src/net/i2p/crypto/eddsa/math/Encoding.java b/core/java/src/net/i2p/crypto/eddsa/math/Encoding.java
index 4a3681fa77a9d52773567abce06cfe2209eed809..932165beefe51fbba8cb71958988b898a1d08895 100644
--- a/core/java/src/net/i2p/crypto/eddsa/math/Encoding.java
+++ b/core/java/src/net/i2p/crypto/eddsa/math/Encoding.java
@@ -3,6 +3,8 @@ package net.i2p.crypto.eddsa.math;
 /**
  * Common interface for all (b-1)-bit encodings of elements
  * of EdDSA finite fields.
+ *
+ * @since 0.9.15
  * @author str4d
  *
  */
diff --git a/core/java/src/net/i2p/crypto/eddsa/math/Field.java b/core/java/src/net/i2p/crypto/eddsa/math/Field.java
index 040b3ffe01740e5b3fc174dbb44c7eecadbf606d..ce89b7851928d018fafffda26e8322a4a1cfe126 100644
--- a/core/java/src/net/i2p/crypto/eddsa/math/Field.java
+++ b/core/java/src/net/i2p/crypto/eddsa/math/Field.java
@@ -4,6 +4,8 @@ import java.io.Serializable;
 
 /**
  * An EdDSA finite field. Includes several pre-computed values.
+ *
+ * @since 0.9.15
  * @author str4d
  *
  */
diff --git a/core/java/src/net/i2p/crypto/eddsa/math/FieldElement.java b/core/java/src/net/i2p/crypto/eddsa/math/FieldElement.java
index a2b10b9f1c57a32031904526cf9baf2715611f32..4d9fc6a528bcd94a8ddcf730445c3710bc650dec 100644
--- a/core/java/src/net/i2p/crypto/eddsa/math/FieldElement.java
+++ b/core/java/src/net/i2p/crypto/eddsa/math/FieldElement.java
@@ -1,5 +1,10 @@
 package net.i2p.crypto.eddsa.math;
 
+/**
+ *
+ * @since 0.9.15
+ *
+ */
 public abstract class FieldElement {
     protected final Field f;
 
diff --git a/core/java/src/net/i2p/crypto/eddsa/math/GroupElement.java b/core/java/src/net/i2p/crypto/eddsa/math/GroupElement.java
index e8afdc90b9e5ecb4c54ad7c0d01e5530dab39aae..1e416abe05fa26a14948058734e6ec968ffee10a 100644
--- a/core/java/src/net/i2p/crypto/eddsa/math/GroupElement.java
+++ b/core/java/src/net/i2p/crypto/eddsa/math/GroupElement.java
@@ -6,6 +6,8 @@ import net.i2p.crypto.eddsa.Utils;
 
 /**
  * A point (x,y) on an EdDSA curve.
+ *
+ * @since 0.9.15
  * @author str4d
  *
  */
diff --git a/core/java/src/net/i2p/crypto/eddsa/math/ScalarOps.java b/core/java/src/net/i2p/crypto/eddsa/math/ScalarOps.java
index 7073bd73fb63cc0d70e6c1a32c9bbeb160eb7783..d90a80bcbe7ae7bba5a1482de1d7aff106c3775c 100644
--- a/core/java/src/net/i2p/crypto/eddsa/math/ScalarOps.java
+++ b/core/java/src/net/i2p/crypto/eddsa/math/ScalarOps.java
@@ -1,5 +1,10 @@
 package net.i2p.crypto.eddsa.math;
 
+/**
+ *
+ * @since 0.9.15
+ *
+ */
 public interface ScalarOps {
     /**
      * Reduce the given scalar mod l.
diff --git a/core/java/src/net/i2p/crypto/eddsa/spec/EdDSAGenParameterSpec.java b/core/java/src/net/i2p/crypto/eddsa/spec/EdDSAGenParameterSpec.java
index 860bc5b9f88c5a510cb8f89cb13028551849cc08..2b3bfcd9317be7d2e48c2bbe8216f0bada35cc43 100644
--- a/core/java/src/net/i2p/crypto/eddsa/spec/EdDSAGenParameterSpec.java
+++ b/core/java/src/net/i2p/crypto/eddsa/spec/EdDSAGenParameterSpec.java
@@ -5,6 +5,8 @@ import java.security.spec.AlgorithmParameterSpec;
 /**
  * Implementation of AlgorithmParameterSpec that holds the name of a named
  * EdDSA curve specification.
+ *
+ * @since 0.9.15
  * @author str4d
  *
  */
diff --git a/core/java/src/net/i2p/crypto/eddsa/spec/EdDSANamedCurveSpec.java b/core/java/src/net/i2p/crypto/eddsa/spec/EdDSANamedCurveSpec.java
index f5d63c8418b7dacedec452b9ef2de21296427485..e51f27738981f20dbce8b8f85a6c7cf204311eff 100644
--- a/core/java/src/net/i2p/crypto/eddsa/spec/EdDSANamedCurveSpec.java
+++ b/core/java/src/net/i2p/crypto/eddsa/spec/EdDSANamedCurveSpec.java
@@ -6,6 +6,8 @@ import net.i2p.crypto.eddsa.math.ScalarOps;
 
 /**
  * EdDSA Curve specification that can also be referred to by name.
+ *
+ * @since 0.9.15
  * @author str4d
  *
  */
diff --git a/core/java/src/net/i2p/crypto/eddsa/spec/EdDSANamedCurveTable.java b/core/java/src/net/i2p/crypto/eddsa/spec/EdDSANamedCurveTable.java
index 076e2e660d68b4354b49e11390bad92cddde0b22..07fba43c33b765625cf26894ff1d828267f5791b 100644
--- a/core/java/src/net/i2p/crypto/eddsa/spec/EdDSANamedCurveTable.java
+++ b/core/java/src/net/i2p/crypto/eddsa/spec/EdDSANamedCurveTable.java
@@ -10,6 +10,8 @@ import net.i2p.crypto.eddsa.math.ed25519.Ed25519ScalarOps;
 
 /**
  * The named EdDSA curves.
+ *
+ * @since 0.9.15
  * @author str4d
  *
  */
diff --git a/core/java/src/net/i2p/crypto/eddsa/spec/EdDSAParameterSpec.java b/core/java/src/net/i2p/crypto/eddsa/spec/EdDSAParameterSpec.java
index f24677476df710c21f1a57b90df0f3b712eabc70..4ace0fb62c699355c1d2712c3e0cabb39648c9b6 100644
--- a/core/java/src/net/i2p/crypto/eddsa/spec/EdDSAParameterSpec.java
+++ b/core/java/src/net/i2p/crypto/eddsa/spec/EdDSAParameterSpec.java
@@ -12,6 +12,8 @@ import java.io.Serializable;
 
 /**
  * Parameter specification for an EdDSA algorithm.
+ *
+ * @since 0.9.15
  * @author str4d
  *
  */
diff --git a/core/java/src/net/i2p/crypto/eddsa/spec/EdDSAPrivateKeySpec.java b/core/java/src/net/i2p/crypto/eddsa/spec/EdDSAPrivateKeySpec.java
index f09585e56af110a88b388326c5fb57b0a215d998..26f5c3a2d4f3f0f8d754d818e807ec784c4c79a0 100644
--- a/core/java/src/net/i2p/crypto/eddsa/spec/EdDSAPrivateKeySpec.java
+++ b/core/java/src/net/i2p/crypto/eddsa/spec/EdDSAPrivateKeySpec.java
@@ -8,6 +8,8 @@ import java.util.Arrays;
 import net.i2p.crypto.eddsa.math.GroupElement;
 
 /**
+ *
+ * @since 0.9.15
  * @author str4d
  *
  */
diff --git a/core/java/src/net/i2p/crypto/eddsa/spec/EdDSAPublicKeySpec.java b/core/java/src/net/i2p/crypto/eddsa/spec/EdDSAPublicKeySpec.java
index 1a27edb718d509704848f6f53f69e325ca6186f6..0389260a0ccc4681b43ad5374a784dcd0486500a 100644
--- a/core/java/src/net/i2p/crypto/eddsa/spec/EdDSAPublicKeySpec.java
+++ b/core/java/src/net/i2p/crypto/eddsa/spec/EdDSAPublicKeySpec.java
@@ -5,6 +5,8 @@ import java.security.spec.KeySpec;
 import net.i2p.crypto.eddsa.math.GroupElement;
 
 /**
+ *
+ * @since 0.9.15
  * @author str4d
  *
  */