I think you're in touch with the guys writing this library, maybe you can ask them ? I don't mind waiting a bit if the artifact comes back, but we can't stay this way forever. Else, yes, maybe revert until the problem is fixed.
2017-03-10 12:10 GMT+01:00 Lyor Goldstein <lyor.goldst...@gmail.com>: > You are right - it disappeared - I can assure you it was there when I > wrote the change. What do you recommend - revert the change until it is > there ? I am all for it... > > On Fri, Mar 10, 2017 at 10:09 AM, Guillaume Nodet <gno...@apache.org> > wrote: > >> Can you remove it from your local repository and try again ? >> It's definitely not in maven central: >> https://repo1.maven.org/maven2/net/i2p/crypto/eddsa/ >> >> 2017-03-10 9:01 GMT+01:00 Lyor Goldstein <lyor.goldst...@gmail.com>: >> >>> The version is 0.1.1 - I had no problem when I did the upgrade - no >>> special repository needed >>> >>> בתאריך 10 במרץ 2017 09:58, "Guillaume Nodet" <gno...@apache.org> כתב: >>> >>> I can't find this artifact in maven central. >>>> Could you add the needed repository please ? >>>> >>>> 2017-03-02 21:00 GMT+01:00 <lgoldst...@apache.org>: >>>> >>>>> Repository: mina-sshd >>>>> Updated Branches: >>>>> refs/heads/master 8e255459a -> cbb92d2a8 >>>>> >>>>> >>>>> [SSHD-727] Upgrade used EdDSA artifact version to 1.1 >>>>> >>>>> >>>>> Project: http://git-wip-us.apache.org/repos/asf/mina-sshd/repo >>>>> Commit: http://git-wip-us.apache.org/repos/asf/mina-sshd/commit/cbb9 >>>>> 2d2a >>>>> Tree: http://git-wip-us.apache.org/repos/asf/mina-sshd/tree/cbb92d2a >>>>> Diff: http://git-wip-us.apache.org/repos/asf/mina-sshd/diff/cbb92d2a >>>>> >>>>> Branch: refs/heads/master >>>>> Commit: cbb92d2a89600ee8a34abdf7d84cdc08291dcbf5 >>>>> Parents: 22dc7c3 >>>>> Author: Lyor Goldstein <lyor.goldst...@gmail.com> >>>>> Authored: Thu Mar 2 21:47:51 2017 +0200 >>>>> Committer: Lyor Goldstein <lyor.goldst...@gmail.com> >>>>> Committed: Thu Mar 2 22:01:14 2017 +0200 >>>>> >>>>> ---------------------------------------------------------------------- >>>>> pom.xml | 6 +- >>>>> .../common/util/security/SecurityUtils.java | 31 +-- >>>>> .../security/eddsa/EdDSASecurityProvider.java | 205 >>>>> ------------------- >>>>> .../eddsa/EdDSASecurityProviderRegistrar.java | 2 +- >>>>> .../eddsa/EdDSASecurityProviderUtils.java | 197 >>>>> ++++++++++++++++++ >>>>> .../OpenSSHEd25519PrivateKeyEntryDecoder.java | 2 +- >>>>> .../common/signature/SignaturesDevelopment.java | 6 +- >>>>> .../util/security/eddsa/Ed25519VectorsTest.java | 12 +- >>>>> .../EdDSASecurityProviderRegistrarTest.java | 2 + >>>>> 9 files changed, 229 insertions(+), 234 deletions(-) >>>>> ---------------------------------------------------------------------- >>>>> >>>>> >>>>> http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/cbb92d2a/pom.xml >>>>> ---------------------------------------------------------------------- >>>>> diff --git a/pom.xml b/pom.xml >>>>> index 806f7fb..06ec711 100644 >>>>> --- a/pom.xml >>>>> +++ b/pom.xml >>>>> @@ -104,7 +104,7 @@ >>>>> <gmaven.plugin.version>2.0</gmaven.plugin.version> >>>>> <groovy.major.version>2</groovy.major.version> >>>>> <groovy.minor.version>4</groovy.minor.version> >>>>> - <groovy.release.version>8</groovy.release.version> >>>>> + <groovy.release.version>9</groovy.release.version> >>>>> <groovy.compliance.level>2.0</groovy.compliance.level> >>>>> <groovy.version>${groovy.major.version}.${groovy.minor.vers >>>>> ion}.${groovy.release.version}</groovy.version> >>>>> >>>>> @@ -202,7 +202,7 @@ >>>>> <dependency> >>>>> <groupId>net.i2p.crypto</groupId> >>>>> <artifactId>eddsa</artifactId> >>>>> - <version>0.1.0</version> >>>>> + <version>0.1.1</version> >>>>> </dependency> >>>>> >>>>> <dependency> >>>>> @@ -594,7 +594,7 @@ >>>>> <dependency> >>>>> <groupId>com.puppycrawl.tools</groupId> >>>>> <artifactId>checkstyle</artifactId> >>>>> - <version>7.5.1</version> >>>>> + <version>7.6</version> >>>>> <exclusions> >>>>> <!-- MCHECKSTYLE-156 --> >>>>> <exclusion> >>>>> >>>>> http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/cbb92d >>>>> 2a/sshd-core/src/main/java/org/apache/sshd/common/util/secur >>>>> ity/SecurityUtils.java >>>>> ---------------------------------------------------------------------- >>>>> diff --git a/sshd-core/src/main/java/org/ >>>>> apache/sshd/common/util/security/SecurityUtils.java >>>>> b/sshd-core/src/main/java/org/apache/sshd/common/util/securi >>>>> ty/SecurityUtils.java >>>>> index 6aff088..b86bcc3 100644 >>>>> --- a/sshd-core/src/main/java/org/apache/sshd/common/util/securi >>>>> ty/SecurityUtils.java >>>>> +++ b/sshd-core/src/main/java/org/apache/sshd/common/util/securi >>>>> ty/SecurityUtils.java >>>>> @@ -73,7 +73,7 @@ import org.apache.sshd.common.util.buffer.Buffer; >>>>> import org.apache.sshd.common.util.security.bouncycastle.BouncyCast >>>>> leGeneratorHostKeyProvider; >>>>> import org.apache.sshd.common.util.security.bouncycastle.BouncyCast >>>>> leKeyPairResourceParser; >>>>> import org.apache.sshd.common.util.security.bouncycastle.BouncyCast >>>>> leRandomFactory; >>>>> -import org.apache.sshd.common.util.security.eddsa.EdDSASecurityProv >>>>> ider; >>>>> +import org.apache.sshd.common.util.security.eddsa.EdDSASecurityProv >>>>> iderUtils; >>>>> import org.apache.sshd.common.util.threads.ThreadUtils; >>>>> import org.apache.sshd.server.keyprovider.AbstractGeneratorHostKeyP >>>>> rovider; >>>>> import org.slf4j.Logger; >>>>> @@ -91,12 +91,13 @@ public final class SecurityUtils { >>>>> public static final String BOUNCY_CASTLE = "BC"; >>>>> >>>>> /** >>>>> - * EDDSA support >>>>> + * EDDSA support - should match {@code EdDSAKey.KEY_ALGORITHM} >>>>> */ >>>>> public static final String EDDSA = "EdDSA"; >>>>> >>>>> // A copy-paste from the original, but we don't want to drag the >>>>> classes into the classpath >>>>> - public static final String CURVE_ED25519_SHA512 = >>>>> "ed25519-sha-512"; >>>>> + // See EdDSANamedCurveTable.CURVE_ED25519_SHA512 >>>>> + public static final String CURVE_ED25519_SHA512 = >>>>> "SHA512withEd25519"; >>>>> >>>>> /** >>>>> * System property used to configure the value for the maximum >>>>> supported Diffie-Hellman >>>>> @@ -538,7 +539,7 @@ public final class SecurityUtils { >>>>> throw new UnsupportedOperationException(EDDSA + " >>>>> provider N/A"); >>>>> } >>>>> >>>>> - return EdDSASecurityProvider.getEDDSAPublicKeyEntryDecoder(); >>>>> + return EdDSASecurityProviderUtils.get >>>>> EDDSAPublicKeyEntryDecoder(); >>>>> } >>>>> >>>>> public static PrivateKeyEntryDecoder<? extends PublicKey, ? >>>>> extends PrivateKey> getOpenSSHEDDSAPrivateKeyEntryDecoder() { >>>>> @@ -546,35 +547,35 @@ public final class SecurityUtils { >>>>> throw new UnsupportedOperationException(EDDSA + " >>>>> provider N/A"); >>>>> } >>>>> >>>>> - return EdDSASecurityProvider.getOpenS >>>>> SHEDDSAPrivateKeyEntryDecoder(); >>>>> + return EdDSASecurityProviderUtils.get >>>>> OpenSSHEDDSAPrivateKeyEntryDecoder(); >>>>> } >>>>> >>>>> public static org.apache.sshd.common.signature.Signature >>>>> getEDDSASigner() { >>>>> if (isEDDSACurveSupported()) { >>>>> - return EdDSASecurityProvider.getEDDSASignature(); >>>>> + return EdDSASecurityProviderUtils.getEDDSASignature(); >>>>> } >>>>> >>>>> throw new UnsupportedOperationException(EDDSA + " Signer not >>>>> available"); >>>>> } >>>>> >>>>> public static int getEDDSAKeySize(Key key) { >>>>> - return EdDSASecurityProvider.getEDDSAKeySize(key); >>>>> + return EdDSASecurityProviderUtils.getEDDSAKeySize(key); >>>>> } >>>>> >>>>> public static Class<? extends PublicKey> getEDDSAPublicKeyType() { >>>>> - return isEDDSACurveSupported() ? >>>>> EdDSASecurityProvider.getEDDSAPublicKeyType() : PublicKey.class; >>>>> + return isEDDSACurveSupported() ? >>>>> EdDSASecurityProviderUtils.getEDDSAPublicKeyType() : PublicKey.class; >>>>> } >>>>> >>>>> public static Class<? extends PrivateKey> >>>>> getEDDSAPrivateKeyType() { >>>>> - return isEDDSACurveSupported() ? >>>>> EdDSASecurityProvider.getEDDSAPrivateKeyType() : PrivateKey.class; >>>>> + return isEDDSACurveSupported() ? >>>>> EdDSASecurityProviderUtils.getEDDSAPrivateKeyType() : >>>>> PrivateKey.class; >>>>> } >>>>> >>>>> public static boolean compareEDDSAPPublicKeys(PublicKey k1, >>>>> PublicKey k2) { >>>>> - return isEDDSACurveSupported() ? >>>>> EdDSASecurityProvider.compareEDDSAPPublicKeys(k1, k2) : false; >>>>> + return isEDDSACurveSupported() ? >>>>> EdDSASecurityProviderUtils.compareEDDSAPPublicKeys(k1, k2) : false; >>>>> } >>>>> >>>>> public static boolean compareEDDSAPrivateKeys(PrivateKey k1, >>>>> PrivateKey k2) { >>>>> - return isEDDSACurveSupported() ? >>>>> EdDSASecurityProvider.compareEDDSAPrivateKeys(k1, k2) : false; >>>>> + return isEDDSACurveSupported() ? >>>>> EdDSASecurityProviderUtils.compareEDDSAPrivateKeys(k1, k2) : false; >>>>> } >>>>> >>>>> public static PublicKey recoverEDDSAPublicKey(PrivateKey key) >>>>> throws GeneralSecurityException { >>>>> @@ -582,7 +583,7 @@ public final class SecurityUtils { >>>>> throw new NoSuchAlgorithmException(EDDSA + " provider not >>>>> supported"); >>>>> } >>>>> >>>>> - return EdDSASecurityProvider.recoverEDDSAPublicKey(key); >>>>> + return EdDSASecurityProviderUtils.recoverEDDSAPublicKey(key); >>>>> } >>>>> >>>>> public static PublicKey generateEDDSAPublicKey(String keyType, >>>>> byte[] seed) throws GeneralSecurityException { >>>>> @@ -594,7 +595,7 @@ public final class SecurityUtils { >>>>> throw new NoSuchAlgorithmException(EDDSA + " provider not >>>>> supported"); >>>>> } >>>>> >>>>> - return EdDSASecurityProvider.generateEDDSAPublicKey(seed); >>>>> + return EdDSASecurityProviderUtils.gen >>>>> erateEDDSAPublicKey(seed); >>>>> } >>>>> >>>>> public static <B extends Buffer> B putRawEDDSAPublicKey(B buffer, >>>>> PublicKey key) { >>>>> @@ -602,7 +603,7 @@ public final class SecurityUtils { >>>>> throw new UnsupportedOperationException(EDDSA + " >>>>> provider not supported"); >>>>> } >>>>> >>>>> - return EdDSASecurityProvider.putRawEDDSAPublicKey(buffer, >>>>> key); >>>>> + return EdDSASecurityProviderUtils.putRawEDDSAPublicKey(buffer, >>>>> key); >>>>> } >>>>> >>>>> public static <B extends Buffer> B putEDDSAKeyPair(B buffer, >>>>> KeyPair kp) { >>>>> @@ -614,7 +615,7 @@ public final class SecurityUtils { >>>>> throw new UnsupportedOperationException(EDDSA + " >>>>> provider not supported"); >>>>> } >>>>> >>>>> - return EdDSASecurityProvider.putEDDSAKeyPair(buffer, pubKey, >>>>> prvKey); >>>>> + return EdDSASecurityProviderUtils.putEDDSAKeyPair(buffer, >>>>> pubKey, prvKey); >>>>> } >>>>> >>>>> public static KeyPair extractEDDSAKeyPair(Buffer buffer, String >>>>> keyType) throws GeneralSecurityException { >>>>> >>>>> http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/cbb92d >>>>> 2a/sshd-core/src/main/java/org/apache/sshd/common/util/secur >>>>> ity/eddsa/EdDSASecurityProvider.java >>>>> ---------------------------------------------------------------------- >>>>> diff --git a/sshd-core/src/main/java/org/ >>>>> apache/sshd/common/util/security/eddsa/EdDSASecurityProvider.java >>>>> b/sshd-core/src/main/java/org/apache/sshd/common/util/securi >>>>> ty/eddsa/EdDSASecurityProvider.java >>>>> deleted file mode 100644 >>>>> index e039547..0000000 >>>>> --- a/sshd-core/src/main/java/org/apache/sshd/common/util/securi >>>>> ty/eddsa/EdDSASecurityProvider.java >>>>> +++ /dev/null >>>>> @@ -1,205 +0,0 @@ >>>>> -/* >>>>> - * Licensed to the Apache Software Foundation (ASF) under one >>>>> - * or more contributor license agreements. See the NOTICE file >>>>> - * distributed with this work for additional information >>>>> - * regarding copyright ownership. The ASF licenses this file >>>>> - * to you under the Apache License, Version 2.0 (the >>>>> - * "License"); you may not use this file except in compliance >>>>> - * with the License. You may obtain a copy of the License at >>>>> - * >>>>> - * http://www.apache.org/licenses/LICENSE-2.0 >>>>> - * >>>>> - * Unless required by applicable law or agreed to in writing, >>>>> - * software distributed under the License is distributed on an >>>>> - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY >>>>> - * KIND, either express or implied. See the License for the >>>>> - * specific language governing permissions and limitations >>>>> - * under the License. >>>>> - */ >>>>> -package org.apache.sshd.common.util.security.eddsa; >>>>> - >>>>> -import java.security.GeneralSecurityException; >>>>> -import java.security.InvalidKeyException; >>>>> -import java.security.Key; >>>>> -import java.security.KeyFactory; >>>>> -import java.security.NoSuchAlgorithmException; >>>>> -import java.security.PrivateKey; >>>>> -import java.security.Provider; >>>>> -import java.security.PublicKey; >>>>> -import java.util.Arrays; >>>>> -import java.util.Objects; >>>>> - >>>>> -import net.i2p.crypto.eddsa.EdDSAKey; >>>>> -import net.i2p.crypto.eddsa.EdDSAPrivateKey; >>>>> -import net.i2p.crypto.eddsa.EdDSAPublicKey; >>>>> -import net.i2p.crypto.eddsa.spec.EdDSANamedCurveTable; >>>>> -import net.i2p.crypto.eddsa.spec.EdDSAParameterSpec; >>>>> -import net.i2p.crypto.eddsa.spec.EdDSAPrivateKeySpec; >>>>> -import net.i2p.crypto.eddsa.spec.EdDSAPublicKeySpec; >>>>> - >>>>> -import org.apache.sshd.common.config.keys.PrivateKeyEntryDecoder; >>>>> -import org.apache.sshd.common.config.keys.PublicKeyEntryDecoder; >>>>> -import org.apache.sshd.common.keyprovider.KeyPairProvider; >>>>> -import org.apache.sshd.common.util.ValidateUtils; >>>>> -import org.apache.sshd.common.util.buffer.Buffer; >>>>> -import org.apache.sshd.common.util.security.SecurityUtils; >>>>> - >>>>> -/** >>>>> - * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD >>>>> Project</a> >>>>> - */ >>>>> -public class EdDSASecurityProvider extends Provider { >>>>> - private static final long serialVersionUID = >>>>> -6183277432144104981L; >>>>> - >>>>> - public EdDSASecurityProvider() { >>>>> - super(SecurityUtils.EDDSA, 0.1, "net.i2p security provider >>>>> wrapper"); >>>>> - >>>>> - // see https://docs.oracle.com/javase >>>>> /8/docs/technotes/guides/security/crypto/HowToImplAProvider.html >>>>> - put("KeyPairGenerator." + SecurityUtils.EDDSA, >>>>> "net.i2p.crypto.eddsa.KeyPairGenerator"); >>>>> - put("KeyFactory." + SecurityUtils.EDDSA, >>>>> "net.i2p.crypto.eddsa.KeyFactory"); >>>>> - put("Signature." + EdDSANamedCurveTable.CURVE_ED25519_SHA512, >>>>> "net.i2p.crypto.eddsa.EdDSAEngine"); >>>>> - } >>>>> - >>>>> - public static Class<? extends PublicKey> getEDDSAPublicKeyType() { >>>>> - return EdDSAPublicKey.class; >>>>> - } >>>>> - >>>>> - public static Class<? extends PrivateKey> >>>>> getEDDSAPrivateKeyType() { >>>>> - return EdDSAPrivateKey.class; >>>>> - } >>>>> - >>>>> - public static int getEDDSAKeySize(Key key) { >>>>> - return (SecurityUtils.isEDDSACurveSupported() && (key >>>>> instanceof EdDSAKey)) ? 256 : -1; >>>>> - } >>>>> - >>>>> - public static boolean compareEDDSAPPublicKeys(PublicKey k1, >>>>> PublicKey k2) { >>>>> - if (!SecurityUtils.isEDDSACurveSupported()) { >>>>> - return false; >>>>> - } >>>>> - >>>>> - if ((k1 instanceof EdDSAPublicKey) && (k2 instanceof >>>>> EdDSAPublicKey)) { >>>>> - if (Objects.equals(k1, k2)) { >>>>> - return true; >>>>> - } else if (k1 == null || k2 == null) { >>>>> - return false; // both null is covered by >>>>> Objects#equals >>>>> - } >>>>> - >>>>> - EdDSAPublicKey ed1 = (EdDSAPublicKey) k1; >>>>> - EdDSAPublicKey ed2 = (EdDSAPublicKey) k2; >>>>> - return Arrays.equals(ed1.getAbyte(), ed2.getAbyte()) >>>>> - && compareEDDSAKeyParams(ed1.getParams(), >>>>> ed2.getParams()); >>>>> - } >>>>> - >>>>> - return false; >>>>> - } >>>>> - >>>>> - public static boolean isEDDSASignatureAlgorithm(String >>>>> algorithm) { >>>>> - return EdDSANamedCurveTable.CURVE_ED2 >>>>> 5519_SHA512.equalsIgnoreCase(algorithm); >>>>> - } >>>>> - >>>>> - public static EdDSAPublicKey recoverEDDSAPublicKey(PrivateKey >>>>> key) throws GeneralSecurityException { >>>>> - ValidateUtils.checkTrue(SecurityUtils.isEDDSACurveSupported(), >>>>> SecurityUtils.EDDSA + " not supported"); >>>>> - if (!(key instanceof EdDSAPrivateKey)) { >>>>> - throw new InvalidKeyException("Private key is not " + >>>>> SecurityUtils.EDDSA); >>>>> - } >>>>> - >>>>> - EdDSAPrivateKey prvKey = (EdDSAPrivateKey) key; >>>>> - EdDSAPublicKeySpec keySpec = new >>>>> EdDSAPublicKeySpec(prvKey.getSeed(), prvKey.getParams()); >>>>> - KeyFactory factory = SecurityUtils.getKeyFactory(Se >>>>> curityUtils.EDDSA); >>>>> - return EdDSAPublicKey.class.cast(fact >>>>> ory.generatePublic(keySpec)); >>>>> - } >>>>> - >>>>> - public static org.apache.sshd.common.signature.Signature >>>>> getEDDSASignature() { >>>>> - ValidateUtils.checkTrue(SecurityUtils.isEDDSACurveSupported(), >>>>> SecurityUtils.EDDSA + " not supported"); >>>>> - return new SignatureEd25519(); >>>>> - } >>>>> - >>>>> - public static boolean isEDDSAKeyFactoryAlgorithm(String >>>>> algorithm) { >>>>> - return SecurityUtils.EDDSA.equalsIgnoreCase(algorithm); >>>>> - } >>>>> - >>>>> - public static boolean isEDDSAKeyPairGeneratorAlgorithm(String >>>>> algorithm) { >>>>> - return SecurityUtils.EDDSA.equalsIgnoreCase(algorithm); >>>>> - } >>>>> - >>>>> - public static PublicKeyEntryDecoder<? extends PublicKey, ? >>>>> extends PrivateKey> getEDDSAPublicKeyEntryDecoder() { >>>>> - ValidateUtils.checkTrue(SecurityUtils.isEDDSACurveSupported(), >>>>> SecurityUtils.EDDSA + " not supported"); >>>>> - return Ed25519PublicKeyDecoder.INSTANCE; >>>>> - } >>>>> - >>>>> - public static PrivateKeyEntryDecoder<? extends PublicKey, ? >>>>> extends PrivateKey> getOpenSSHEDDSAPrivateKeyEntryDecoder() { >>>>> - ValidateUtils.checkTrue(SecurityUtils.isEDDSACurveSupported(), >>>>> SecurityUtils.EDDSA + " not supported"); >>>>> - return OpenSSHEd25519PrivateKeyEntryDecoder.INSTANCE; >>>>> - } >>>>> - >>>>> - public static boolean compareEDDSAPrivateKeys(PrivateKey k1, >>>>> PrivateKey k2) { >>>>> - if (!SecurityUtils.isEDDSACurveSupported()) { >>>>> - return false; >>>>> - } >>>>> - >>>>> - if ((k1 instanceof EdDSAPrivateKey) && (k2 instanceof >>>>> EdDSAPrivateKey)) { >>>>> - if (Objects.equals(k1, k2)) { >>>>> - return true; >>>>> - } else if (k1 == null || k2 == null) { >>>>> - return false; // both null is covered by >>>>> Objects#equals >>>>> - } >>>>> - >>>>> - EdDSAPrivateKey ed1 = (EdDSAPrivateKey) k1; >>>>> - EdDSAPrivateKey ed2 = (EdDSAPrivateKey) k2; >>>>> - return Arrays.equals(ed1.getSeed(), ed2.getSeed()) >>>>> - && compareEDDSAKeyParams(ed1.getParams(), >>>>> ed2.getParams()); >>>>> - } >>>>> - >>>>> - return false; >>>>> - } >>>>> - >>>>> - public static boolean compareEDDSAKeyParams(EdDSAParameterSpec >>>>> s1, EdDSAParameterSpec s2) { >>>>> - if (Objects.equals(s1, s2)) { >>>>> - return true; >>>>> - } else if (s1 == null || s2 == null) { >>>>> - return false; // both null is covered by Objects#equals >>>>> - } else { >>>>> - return Objects.equals(s1.getHashAlgorithm(), >>>>> s2.getHashAlgorithm()) >>>>> - && Objects.equals(s1.getCurve(), s2.getCurve()) >>>>> - && Objects.equals(s1.getB(), s2.getB()); >>>>> - } >>>>> - } >>>>> - >>>>> - public static PublicKey generateEDDSAPublicKey(byte[] seed) >>>>> throws GeneralSecurityException { >>>>> - if (!SecurityUtils.isEDDSACurveSupported()) { >>>>> - throw new NoSuchAlgorithmException(SecurityUtils.EDDSA + >>>>> " not supported"); >>>>> - } >>>>> - >>>>> - EdDSAParameterSpec params = EdDSANamedCurveTable.getByName >>>>> (EdDSANamedCurveTable.CURVE_ED25519_SHA512); >>>>> - EdDSAPublicKeySpec keySpec = new EdDSAPublicKeySpec(seed, >>>>> params); >>>>> - KeyFactory factory = SecurityUtils.getKeyFactory(Se >>>>> curityUtils.EDDSA); >>>>> - return factory.generatePublic(keySpec); >>>>> - } >>>>> - >>>>> - public static PrivateKey generateEDDSAPrivateKey(byte[] seed) >>>>> throws GeneralSecurityException { >>>>> - if (!SecurityUtils.isEDDSACurveSupported()) { >>>>> - throw new NoSuchAlgorithmException(SecurityUtils.EDDSA + >>>>> " not supported"); >>>>> - } >>>>> - >>>>> - EdDSAParameterSpec params = EdDSANamedCurveTable.getByName >>>>> (EdDSANamedCurveTable.CURVE_ED25519_SHA512); >>>>> - EdDSAPrivateKeySpec keySpec = new EdDSAPrivateKeySpec(seed, >>>>> params); >>>>> - KeyFactory factory = SecurityUtils.getKeyFactory(Se >>>>> curityUtils.EDDSA); >>>>> - return factory.generatePrivate(keySpec); >>>>> - } >>>>> - >>>>> - public static <B extends Buffer> B putRawEDDSAPublicKey(B buffer, >>>>> PublicKey key) { >>>>> - ValidateUtils.checkTrue(SecurityUtils.isEDDSACurveSupported(), >>>>> SecurityUtils.EDDSA + " not supported"); >>>>> - EdDSAPublicKey edKey = ValidateUtils.checkInstanceOf(key, >>>>> EdDSAPublicKey.class, "Not an EDDSA public key: %s", key); >>>>> - byte[] seed = Ed25519PublicKeyDecoder.getSeedValue(edKey); >>>>> - ValidateUtils.checkNotNull(seed, "No seed extracted from >>>>> key: %s", edKey.getA()); >>>>> - buffer.putString(KeyPairProvider.SSH_ED25519); >>>>> - buffer.putBytes(seed); >>>>> - return buffer; >>>>> - } >>>>> - >>>>> - public static <B extends Buffer> B putEDDSAKeyPair(B buffer, >>>>> PublicKey pubKey, PrivateKey prvKey) { >>>>> - ValidateUtils.checkTrue(SecurityUtils.isEDDSACurveSupported(), >>>>> SecurityUtils.EDDSA + " not supported"); >>>>> - ValidateUtils.checkInstanceOf(pubKey, EdDSAPublicKey.class, >>>>> "Not an EDDSA public key: %s", pubKey); >>>>> - ValidateUtils.checkInstanceOf(prvKey, EdDSAPrivateKey.class, >>>>> "Not an EDDSA private key: %s", prvKey); >>>>> - throw new UnsupportedOperationException("Full SSHD-440 >>>>> implementation N/A"); >>>>> - } >>>>> -} >>>>> \ No newline at end of file >>>>> >>>>> http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/cbb92d >>>>> 2a/sshd-core/src/main/java/org/apache/sshd/common/util/secur >>>>> ity/eddsa/EdDSASecurityProviderRegistrar.java >>>>> ---------------------------------------------------------------------- >>>>> diff --git a/sshd-core/src/main/java/org/ >>>>> apache/sshd/common/util/security/eddsa/EdDSASecurityProviderRegistrar.java >>>>> b/sshd-core/src/main/java/org/apache/sshd/common/util/securi >>>>> ty/eddsa/EdDSASecurityProviderRegistrar.java >>>>> index b463d27..2bb3f95 100644 >>>>> --- a/sshd-core/src/main/java/org/apache/sshd/common/util/securi >>>>> ty/eddsa/EdDSASecurityProviderRegistrar.java >>>>> +++ b/sshd-core/src/main/java/org/apache/sshd/common/util/securi >>>>> ty/eddsa/EdDSASecurityProviderRegistrar.java >>>>> @@ -36,7 +36,7 @@ import org.apache.sshd.common.util.th >>>>> reads.ThreadUtils; >>>>> * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD >>>>> Project</a> >>>>> */ >>>>> public class EdDSASecurityProviderRegistrar extends >>>>> AbstractSecurityProviderRegistrar { >>>>> - public static final String PROVIDER_CLASS = >>>>> "org.apache.sshd.common.util.security.eddsa.EdDSASecurityProvider"; >>>>> + public static final String PROVIDER_CLASS = >>>>> "net.i2p.crypto.eddsa.EdDSASecurityProvider"; >>>>> // Do not define a static registrar instance to minimize class >>>>> loading issues >>>>> private final AtomicReference<Boolean> supportHolder = new >>>>> AtomicReference<>(null); >>>>> >>>>> >>>>> http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/cbb92d >>>>> 2a/sshd-core/src/main/java/org/apache/sshd/common/util/secur >>>>> ity/eddsa/EdDSASecurityProviderUtils.java >>>>> ---------------------------------------------------------------------- >>>>> diff --git a/sshd-core/src/main/java/org/ >>>>> apache/sshd/common/util/security/eddsa/EdDSASecurityProviderUtils.java >>>>> b/sshd-core/src/main/java/org/apache/sshd/common/util/securi >>>>> ty/eddsa/EdDSASecurityProviderUtils.java >>>>> new file mode 100644 >>>>> index 0000000..b5d79f0 >>>>> --- /dev/null >>>>> +++ b/sshd-core/src/main/java/org/apache/sshd/common/util/securi >>>>> ty/eddsa/EdDSASecurityProviderUtils.java >>>>> @@ -0,0 +1,197 @@ >>>>> +/* >>>>> + * Licensed to the Apache Software Foundation (ASF) under one >>>>> + * or more contributor license agreements. See the NOTICE file >>>>> + * distributed with this work for additional information >>>>> + * regarding copyright ownership. The ASF licenses this file >>>>> + * to you under the Apache License, Version 2.0 (the >>>>> + * "License"); you may not use this file except in compliance >>>>> + * with the License. You may obtain a copy of the License at >>>>> + * >>>>> + * http://www.apache.org/licenses/LICENSE-2.0 >>>>> + * >>>>> + * Unless required by applicable law or agreed to in writing, >>>>> + * software distributed under the License is distributed on an >>>>> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY >>>>> + * KIND, either express or implied. See the License for the >>>>> + * specific language governing permissions and limitations >>>>> + * under the License. >>>>> + */ >>>>> +package org.apache.sshd.common.util.security.eddsa; >>>>> + >>>>> +import java.security.GeneralSecurityException; >>>>> +import java.security.InvalidKeyException; >>>>> +import java.security.Key; >>>>> +import java.security.KeyFactory; >>>>> +import java.security.NoSuchAlgorithmException; >>>>> +import java.security.PrivateKey; >>>>> +import java.security.PublicKey; >>>>> +import java.util.Arrays; >>>>> +import java.util.Objects; >>>>> + >>>>> +import net.i2p.crypto.eddsa.EdDSAKey; >>>>> +import net.i2p.crypto.eddsa.EdDSAPrivateKey; >>>>> +import net.i2p.crypto.eddsa.EdDSAPublicKey; >>>>> +import net.i2p.crypto.eddsa.spec.EdDSANamedCurveTable; >>>>> +import net.i2p.crypto.eddsa.spec.EdDSAParameterSpec; >>>>> +import net.i2p.crypto.eddsa.spec.EdDSAPrivateKeySpec; >>>>> +import net.i2p.crypto.eddsa.spec.EdDSAPublicKeySpec; >>>>> + >>>>> +import org.apache.sshd.common.config.keys.PrivateKeyEntryDecoder; >>>>> +import org.apache.sshd.common.config.keys.PublicKeyEntryDecoder; >>>>> +import org.apache.sshd.common.keyprovider.KeyPairProvider; >>>>> +import org.apache.sshd.common.util.ValidateUtils; >>>>> +import org.apache.sshd.common.util.buffer.Buffer; >>>>> +import org.apache.sshd.common.util.security.SecurityUtils; >>>>> + >>>>> +/** >>>>> + * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD >>>>> Project</a> >>>>> + */ >>>>> +public final class EdDSASecurityProviderUtils { >>>>> + private EdDSASecurityProviderUtils() { >>>>> + throw new UnsupportedOperationException("No instance"); >>>>> + } >>>>> + >>>>> + public static Class<? extends PublicKey> getEDDSAPublicKeyType() { >>>>> + return EdDSAPublicKey.class; >>>>> + } >>>>> + >>>>> + public static Class<? extends PrivateKey> >>>>> getEDDSAPrivateKeyType() { >>>>> + return EdDSAPrivateKey.class; >>>>> + } >>>>> + >>>>> + public static int getEDDSAKeySize(Key key) { >>>>> + return (SecurityUtils.isEDDSACurveSupported() && (key >>>>> instanceof EdDSAKey)) ? 256 : -1; >>>>> + } >>>>> + >>>>> + public static boolean compareEDDSAPPublicKeys(PublicKey k1, >>>>> PublicKey k2) { >>>>> + if (!SecurityUtils.isEDDSACurveSupported()) { >>>>> + return false; >>>>> + } >>>>> + >>>>> + if ((k1 instanceof EdDSAPublicKey) && (k2 instanceof >>>>> EdDSAPublicKey)) { >>>>> + if (Objects.equals(k1, k2)) { >>>>> + return true; >>>>> + } else if (k1 == null || k2 == null) { >>>>> + return false; // both null is covered by >>>>> Objects#equals >>>>> + } >>>>> + >>>>> + EdDSAPublicKey ed1 = (EdDSAPublicKey) k1; >>>>> + EdDSAPublicKey ed2 = (EdDSAPublicKey) k2; >>>>> + return Arrays.equals(ed1.getAbyte(), ed2.getAbyte()) >>>>> + && compareEDDSAKeyParams(ed1.getParams(), >>>>> ed2.getParams()); >>>>> + } >>>>> + >>>>> + return false; >>>>> + } >>>>> + >>>>> + public static boolean isEDDSASignatureAlgorithm(String >>>>> algorithm) { >>>>> + return EdDSANamedCurveTable.CURVE_ED2 >>>>> 5519_SHA512.equalsIgnoreCase(algorithm); >>>>> + } >>>>> + >>>>> + public static EdDSAPublicKey recoverEDDSAPublicKey(PrivateKey >>>>> key) throws GeneralSecurityException { >>>>> + ValidateUtils.checkTrue(SecurityUtils.isEDDSACurveSupported(), >>>>> SecurityUtils.EDDSA + " not supported"); >>>>> + if (!(key instanceof EdDSAPrivateKey)) { >>>>> + throw new InvalidKeyException("Private key is not " + >>>>> SecurityUtils.EDDSA); >>>>> + } >>>>> + >>>>> + EdDSAPrivateKey prvKey = (EdDSAPrivateKey) key; >>>>> + EdDSAPublicKeySpec keySpec = new >>>>> EdDSAPublicKeySpec(prvKey.getSeed(), prvKey.getParams()); >>>>> + KeyFactory factory = SecurityUtils.getKeyFactory(Se >>>>> curityUtils.EDDSA); >>>>> + return EdDSAPublicKey.class.cast(fact >>>>> ory.generatePublic(keySpec)); >>>>> + } >>>>> + >>>>> + public static org.apache.sshd.common.signature.Signature >>>>> getEDDSASignature() { >>>>> + ValidateUtils.checkTrue(SecurityUtils.isEDDSACurveSupported(), >>>>> SecurityUtils.EDDSA + " not supported"); >>>>> + return new SignatureEd25519(); >>>>> + } >>>>> + >>>>> + public static boolean isEDDSAKeyFactoryAlgorithm(String >>>>> algorithm) { >>>>> + return SecurityUtils.EDDSA.equalsIgnoreCase(algorithm); >>>>> + } >>>>> + >>>>> + public static boolean isEDDSAKeyPairGeneratorAlgorithm(String >>>>> algorithm) { >>>>> + return SecurityUtils.EDDSA.equalsIgnoreCase(algorithm); >>>>> + } >>>>> + >>>>> + public static PublicKeyEntryDecoder<? extends PublicKey, ? >>>>> extends PrivateKey> getEDDSAPublicKeyEntryDecoder() { >>>>> + ValidateUtils.checkTrue(SecurityUtils.isEDDSACurveSupported(), >>>>> SecurityUtils.EDDSA + " not supported"); >>>>> + return Ed25519PublicKeyDecoder.INSTANCE; >>>>> + } >>>>> + >>>>> + public static PrivateKeyEntryDecoder<? extends PublicKey, ? >>>>> extends PrivateKey> getOpenSSHEDDSAPrivateKeyEntryDecoder() { >>>>> + ValidateUtils.checkTrue(SecurityUtils.isEDDSACurveSupported(), >>>>> SecurityUtils.EDDSA + " not supported"); >>>>> + return OpenSSHEd25519PrivateKeyEntryDecoder.INSTANCE; >>>>> + } >>>>> + >>>>> + public static boolean compareEDDSAPrivateKeys(PrivateKey k1, >>>>> PrivateKey k2) { >>>>> + if (!SecurityUtils.isEDDSACurveSupported()) { >>>>> + return false; >>>>> + } >>>>> + >>>>> + if ((k1 instanceof EdDSAPrivateKey) && (k2 instanceof >>>>> EdDSAPrivateKey)) { >>>>> + if (Objects.equals(k1, k2)) { >>>>> + return true; >>>>> + } else if (k1 == null || k2 == null) { >>>>> + return false; // both null is covered by >>>>> Objects#equals >>>>> + } >>>>> + >>>>> + EdDSAPrivateKey ed1 = (EdDSAPrivateKey) k1; >>>>> + EdDSAPrivateKey ed2 = (EdDSAPrivateKey) k2; >>>>> + return Arrays.equals(ed1.getSeed(), ed2.getSeed()) >>>>> + && compareEDDSAKeyParams(ed1.getParams(), >>>>> ed2.getParams()); >>>>> + } >>>>> + >>>>> + return false; >>>>> + } >>>>> + >>>>> + public static boolean compareEDDSAKeyParams(EdDSAParameterSpec >>>>> s1, EdDSAParameterSpec s2) { >>>>> + if (Objects.equals(s1, s2)) { >>>>> + return true; >>>>> + } else if (s1 == null || s2 == null) { >>>>> + return false; // both null is covered by Objects#equals >>>>> + } else { >>>>> + return Objects.equals(s1.getHashAlgorithm(), >>>>> s2.getHashAlgorithm()) >>>>> + && Objects.equals(s1.getCurve(), s2.getCurve()) >>>>> + && Objects.equals(s1.getB(), s2.getB()); >>>>> + } >>>>> + } >>>>> + >>>>> + public static PublicKey generateEDDSAPublicKey(byte[] seed) >>>>> throws GeneralSecurityException { >>>>> + if (!SecurityUtils.isEDDSACurveSupported()) { >>>>> + throw new NoSuchAlgorithmException(SecurityUtils.EDDSA + >>>>> " not supported"); >>>>> + } >>>>> + >>>>> + EdDSAParameterSpec params = EdDSANamedCurveTable.getByName >>>>> (EdDSANamedCurveTable.CURVE_ED25519_SHA512); >>>>> + EdDSAPublicKeySpec keySpec = new EdDSAPublicKeySpec(seed, >>>>> params); >>>>> + KeyFactory factory = SecurityUtils.getKeyFactory(Se >>>>> curityUtils.EDDSA); >>>>> + return factory.generatePublic(keySpec); >>>>> + } >>>>> + >>>>> + public static PrivateKey generateEDDSAPrivateKey(byte[] seed) >>>>> throws GeneralSecurityException { >>>>> + if (!SecurityUtils.isEDDSACurveSupported()) { >>>>> + throw new NoSuchAlgorithmException(SecurityUtils.EDDSA + >>>>> " not supported"); >>>>> + } >>>>> + >>>>> + EdDSAParameterSpec params = EdDSANamedCurveTable.getByName >>>>> (EdDSANamedCurveTable.CURVE_ED25519_SHA512); >>>>> + EdDSAPrivateKeySpec keySpec = new EdDSAPrivateKeySpec(seed, >>>>> params); >>>>> + KeyFactory factory = SecurityUtils.getKeyFactory(Se >>>>> curityUtils.EDDSA); >>>>> + return factory.generatePrivate(keySpec); >>>>> + } >>>>> + >>>>> + public static <B extends Buffer> B putRawEDDSAPublicKey(B buffer, >>>>> PublicKey key) { >>>>> + ValidateUtils.checkTrue(SecurityUtils.isEDDSACurveSupported(), >>>>> SecurityUtils.EDDSA + " not supported"); >>>>> + EdDSAPublicKey edKey = ValidateUtils.checkInstanceOf(key, >>>>> EdDSAPublicKey.class, "Not an EDDSA public key: %s", key); >>>>> + byte[] seed = Ed25519PublicKeyDecoder.getSeedValue(edKey); >>>>> + ValidateUtils.checkNotNull(seed, "No seed extracted from >>>>> key: %s", edKey.getA()); >>>>> + buffer.putString(KeyPairProvider.SSH_ED25519); >>>>> + buffer.putBytes(seed); >>>>> + return buffer; >>>>> + } >>>>> + >>>>> + public static <B extends Buffer> B putEDDSAKeyPair(B buffer, >>>>> PublicKey pubKey, PrivateKey prvKey) { >>>>> + ValidateUtils.checkTrue(SecurityUtils.isEDDSACurveSupported(), >>>>> SecurityUtils.EDDSA + " not supported"); >>>>> + ValidateUtils.checkInstanceOf(pubKey, EdDSAPublicKey.class, >>>>> "Not an EDDSA public key: %s", pubKey); >>>>> + ValidateUtils.checkInstanceOf(prvKey, EdDSAPrivateKey.class, >>>>> "Not an EDDSA private key: %s", prvKey); >>>>> + throw new UnsupportedOperationException("Full SSHD-440 >>>>> implementation N/A"); >>>>> + } >>>>> +} >>>>> \ No newline at end of file >>>>> >>>>> http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/cbb92d >>>>> 2a/sshd-core/src/main/java/org/apache/sshd/common/util/secur >>>>> ity/eddsa/OpenSSHEd25519PrivateKeyEntryDecoder.java >>>>> ---------------------------------------------------------------------- >>>>> diff --git a/sshd-core/src/main/java/org/ >>>>> apache/sshd/common/util/security/eddsa/OpenSSHEd25519PrivateKeyEntryDecoder.java >>>>> b/sshd-core/src/main/java/org/apache/sshd/common/util/securi >>>>> ty/eddsa/OpenSSHEd25519PrivateKeyEntryDecoder.java >>>>> index b05a4cc..e5ae0ac 100644 >>>>> --- a/sshd-core/src/main/java/org/apache/sshd/common/util/securi >>>>> ty/eddsa/OpenSSHEd25519PrivateKeyEntryDecoder.java >>>>> +++ b/sshd-core/src/main/java/org/apache/sshd/common/util/securi >>>>> ty/eddsa/OpenSSHEd25519PrivateKeyEntryDecoder.java >>>>> @@ -98,7 +98,7 @@ public class OpenSSHEd25519PrivateKeyEntryDecoder >>>>> extends AbstractPrivateKeyEntr >>>>> >>>>> @Override >>>>> public EdDSAPublicKey recoverPublicKey(EdDSAPrivateKey prvKey) >>>>> throws GeneralSecurityException { >>>>> - return EdDSASecurityProvider.recoverEDDSAPublicKey(prvKey); >>>>> + return EdDSASecurityProviderUtils.rec >>>>> overEDDSAPublicKey(prvKey); >>>>> } >>>>> >>>>> @Override >>>>> >>>>> http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/cbb92d >>>>> 2a/sshd-core/src/test/java/org/apache/sshd/common/signature/ >>>>> SignaturesDevelopment.java >>>>> ---------------------------------------------------------------------- >>>>> diff --git a/sshd-core/src/test/java/org/ >>>>> apache/sshd/common/signature/SignaturesDevelopment.java >>>>> b/sshd-core/src/test/java/org/apache/sshd/common/signature/S >>>>> ignaturesDevelopment.java >>>>> index 6c4929a..180e997 100644 >>>>> --- a/sshd-core/src/test/java/org/apache/sshd/common/signature/S >>>>> ignaturesDevelopment.java >>>>> +++ b/sshd-core/src/test/java/org/apache/sshd/common/signature/S >>>>> ignaturesDevelopment.java >>>>> @@ -25,7 +25,7 @@ import java.security.PublicKey; >>>>> >>>>> import org.apache.sshd.common.util.GenericUtils; >>>>> import org.apache.sshd.common.util.buffer.BufferUtils; >>>>> -import org.apache.sshd.common.util.security.eddsa.EdDSASecurityProv >>>>> ider; >>>>> +import org.apache.sshd.common.util.security.eddsa.EdDSASecurityProv >>>>> iderUtils; >>>>> import org.apache.sshd.util.test.BaseTestSupport; >>>>> >>>>> /** >>>>> @@ -64,9 +64,9 @@ public class SignaturesDevelopment extends >>>>> BaseTestSupport { >>>>> SignatureFactory factory = BuiltinSignatures.resolveFacto >>>>> ry(args[0]); >>>>> // TODO recover public/private keys according to factory name >>>>> byte[] publicKey = BufferUtils.decodeHex(':', args[1]); >>>>> - PublicKey pubKey = EdDSASecurityProvider.generate >>>>> EDDSAPublicKey(publicKey); >>>>> + PublicKey pubKey = EdDSASecurityProviderUtils.gen >>>>> erateEDDSAPublicKey(publicKey); >>>>> byte[] privateKey = BufferUtils.decodeHex(':', args[2]); >>>>> - PrivateKey prvKey = EdDSASecurityProvider.generate >>>>> EDDSAPrivateKey(privateKey); >>>>> + PrivateKey prvKey = EdDSASecurityProviderUtils.gen >>>>> erateEDDSAPrivateKey(privateKey); >>>>> String op = args[3]; >>>>> byte[] data = BufferUtils.decodeHex(':', args[4]); >>>>> byte[] signature = GenericUtils.EMPTY_BYTE_ARRAY; >>>>> >>>>> http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/cbb92d >>>>> 2a/sshd-core/src/test/java/org/apache/sshd/common/util/secur >>>>> ity/eddsa/Ed25519VectorsTest.java >>>>> ---------------------------------------------------------------------- >>>>> diff --git a/sshd-core/src/test/java/org/ >>>>> apache/sshd/common/util/security/eddsa/Ed25519VectorsTest.java >>>>> b/sshd-core/src/test/java/org/apache/sshd/common/util/securi >>>>> ty/eddsa/Ed25519VectorsTest.java >>>>> index fab3294..b58aad3 100644 >>>>> --- a/sshd-core/src/test/java/org/apache/sshd/common/util/securi >>>>> ty/eddsa/Ed25519VectorsTest.java >>>>> +++ b/sshd-core/src/test/java/org/apache/sshd/common/util/securi >>>>> ty/eddsa/Ed25519VectorsTest.java >>>>> @@ -60,9 +60,9 @@ public class Ed25519VectorsTest extends >>>>> BaseTestSupport { >>>>> public Ed25519VectorsTest(String name, String prvKey, String >>>>> pubKey, String msg, String signature) >>>>> throws GeneralSecurityException { >>>>> prvBytes = BufferUtils.decodeHex(BufferUtils.EMPTY_HEX_SEPARATOR, >>>>> prvKey); >>>>> - privateKey = EdDSASecurityProvider.generate >>>>> EDDSAPrivateKey(prvBytes.clone()); >>>>> + privateKey = EdDSASecurityProviderUtils.gen >>>>> erateEDDSAPrivateKey(prvBytes.clone()); >>>>> pubBytes = BufferUtils.decodeHex(BufferUtils.EMPTY_HEX_SEPARATOR, >>>>> pubKey); >>>>> - publicKey = EdDSASecurityProvider.generate >>>>> EDDSAPublicKey(pubBytes.clone()); >>>>> + publicKey = EdDSASecurityProviderUtils.gen >>>>> erateEDDSAPublicKey(pubBytes.clone()); >>>>> msgBytes = BufferUtils.decodeHex(BufferUtils.EMPTY_HEX_SEPARATOR, >>>>> msg); >>>>> expSignature = >>>>> BufferUtils.decodeHex(BufferUtils.EMPTY_HEX_SEPARATOR, >>>>> signature); >>>>> } >>>>> @@ -200,14 +200,14 @@ public class Ed25519VectorsTest extends >>>>> BaseTestSupport { >>>>> >>>>> @Test >>>>> public void testSignature() throws Exception { >>>>> - Signature signer = EdDSASecurityProvider.getEDDSASignature(); >>>>> + Signature signer = EdDSASecurityProviderUtils.get >>>>> EDDSASignature(); >>>>> signer.initSigner(privateKey); >>>>> signer.update(msgBytes.clone()); >>>>> >>>>> byte[] actSignature = signer.sign(); >>>>> assertArrayEquals("Mismatched signature", expSignature, >>>>> actSignature); >>>>> >>>>> - Signature verifier = EdDSASecurityProvider.getEDDSA >>>>> Signature(); >>>>> + Signature verifier = EdDSASecurityProviderUtils.get >>>>> EDDSASignature(); >>>>> verifier.initVerifier(publicKey); >>>>> verifier.update(msgBytes.clone()); >>>>> assertTrue("Verification failed", >>>>> verifier.verify(expSignature)); >>>>> @@ -222,14 +222,14 @@ public class Ed25519VectorsTest extends >>>>> BaseTestSupport { >>>>> System.arraycopy(msgBytes, 0, dataBuf, offset, >>>>> msgBytes.length); >>>>> System.arraycopy(extraData, offset, dataBuf, offset + >>>>> msgBytes.length, extraData.length - offset); >>>>> >>>>> - Signature signer = EdDSASecurityProvider.getEDDSASignature(); >>>>> + Signature signer = EdDSASecurityProviderUtils.get >>>>> EDDSASignature(); >>>>> signer.initSigner(privateKey); >>>>> signer.update(dataBuf.clone(), offset, msgBytes.length); >>>>> >>>>> byte[] actSignature = signer.sign(); >>>>> assertArrayEquals("Mismatched signature", expSignature, >>>>> actSignature); >>>>> >>>>> - Signature verifier = EdDSASecurityProvider.getEDDSA >>>>> Signature(); >>>>> + Signature verifier = EdDSASecurityProviderUtils.get >>>>> EDDSASignature(); >>>>> verifier.initVerifier(publicKey); >>>>> verifier.update(dataBuf.clone(), offset, msgBytes.length); >>>>> assertTrue("Verification failed", >>>>> verifier.verify(expSignature)); >>>>> >>>>> http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/cbb92d >>>>> 2a/sshd-core/src/test/java/org/apache/sshd/common/util/secur >>>>> ity/eddsa/EdDSASecurityProviderRegistrarTest.java >>>>> ---------------------------------------------------------------------- >>>>> diff --git a/sshd-core/src/test/java/org/ >>>>> apache/sshd/common/util/security/eddsa/EdDSASecurityProviderRegistrarTest.java >>>>> b/sshd-core/src/test/java/org/apache/sshd/common/util/securi >>>>> ty/eddsa/EdDSASecurityProviderRegistrarTest.java >>>>> index 9e12fab..f2c1f3f 100644 >>>>> --- a/sshd-core/src/test/java/org/apache/sshd/common/util/securi >>>>> ty/eddsa/EdDSASecurityProviderRegistrarTest.java >>>>> +++ b/sshd-core/src/test/java/org/apache/sshd/common/util/securi >>>>> ty/eddsa/EdDSASecurityProviderRegistrarTest.java >>>>> @@ -26,6 +26,8 @@ import java.util.Arrays; >>>>> import java.util.Collection; >>>>> import java.util.HashSet; >>>>> >>>>> +import net.i2p.crypto.eddsa.EdDSASecurityProvider; >>>>> + >>>>> import org.apache.sshd.common.util.security.SecurityProviderRegistr >>>>> ar; >>>>> import org.apache.sshd.common.util.security.SecurityProviderRegistr >>>>> arTestSupport; >>>>> import org.apache.sshd.common.util.security.SecurityUtils; >>>>> >>>>> >>>> >>>> >>>> -- >>>> ------------------------ >>>> Guillaume Nodet >>>> >>>> >> >> >> -- >> ------------------------ >> Guillaume Nodet >> >> > -- ------------------------ Guillaume Nodet