Repository: mina-sshd Updated Branches: refs/heads/master 8f2fb4453 -> e94b082b3
[SSHD-710] Added partial buffer signature vector tests for Ed25519 keys Project: http://git-wip-us.apache.org/repos/asf/mina-sshd/repo Commit: http://git-wip-us.apache.org/repos/asf/mina-sshd/commit/e94b082b Tree: http://git-wip-us.apache.org/repos/asf/mina-sshd/tree/e94b082b Diff: http://git-wip-us.apache.org/repos/asf/mina-sshd/diff/e94b082b Branch: refs/heads/master Commit: e94b082b38dac01b7ee0e4e5376e78fda67d12f2 Parents: 8f2fb44 Author: Lyor Goldstein <lyor.goldst...@gmail.com> Authored: Mon Nov 14 20:54:40 2016 +0200 Committer: Lyor Goldstein <lyor.goldst...@gmail.com> Committed: Mon Nov 14 20:54:40 2016 +0200 ---------------------------------------------------------------------- .../util/security/eddsa/Ed25519VectorsTest.java | 27 ++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/e94b082b/sshd-core/src/test/java/org/apache/sshd/common/util/security/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/security/eddsa/Ed25519VectorsTest.java index 637032d..fab3294 100644 --- 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/security/eddsa/Ed25519VectorsTest.java @@ -19,6 +19,7 @@ package org.apache.sshd.common.util.security.eddsa; +import java.nio.charset.StandardCharsets; import java.security.GeneralSecurityException; import java.security.PrivateKey; import java.security.PublicKey; @@ -201,14 +202,36 @@ public class Ed25519VectorsTest extends BaseTestSupport { public void testSignature() throws Exception { Signature signer = EdDSASecurityProvider.getEDDSASignature(); signer.initSigner(privateKey); - signer.update(msgBytes); + signer.update(msgBytes.clone()); byte[] actSignature = signer.sign(); assertArrayEquals("Mismatched signature", expSignature, actSignature); Signature verifier = EdDSASecurityProvider.getEDDSASignature(); verifier.initVerifier(publicKey); - verifier.update(msgBytes); + verifier.update(msgBytes.clone()); + assertTrue("Verification failed", verifier.verify(expSignature)); + } + + @Test + public void testPartialBufferSignature() throws Exception { + byte[] extraData = getCurrentTestName().getBytes(StandardCharsets.UTF_8); + byte[] dataBuf = new byte[msgBytes.length + extraData.length]; + int offset = extraData.length / 2; + System.arraycopy(extraData, 0, dataBuf, 0, offset); + System.arraycopy(msgBytes, 0, dataBuf, offset, msgBytes.length); + System.arraycopy(extraData, offset, dataBuf, offset + msgBytes.length, extraData.length - offset); + + Signature signer = EdDSASecurityProvider.getEDDSASignature(); + signer.initSigner(privateKey); + signer.update(dataBuf.clone(), offset, msgBytes.length); + + byte[] actSignature = signer.sign(); + assertArrayEquals("Mismatched signature", expSignature, actSignature); + + Signature verifier = EdDSASecurityProvider.getEDDSASignature(); + verifier.initVerifier(publicKey); + verifier.update(dataBuf.clone(), offset, msgBytes.length); assertTrue("Verification failed", verifier.verify(expSignature)); } }