diff --git a/src/itest/docker-image/Dockerfile b/src/itest/docker-image/Dockerfile index 67977b02..1b8bb509 100644 --- a/src/itest/docker-image/Dockerfile +++ b/src/itest/docker-image/Dockerfile @@ -4,6 +4,8 @@ ADD id_rsa.pub /home/sshj/.ssh/authorized_keys ADD test-container/ssh_host_ecdsa_key /etc/ssh/ssh_host_ecdsa_key ADD test-container/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub +ADD test-container/ssh_host_ed25519_key /etc/ssh/ssh_host_ed25519_key +ADD test-container/ssh_host_ed25519_key.pub /etc/ssh/ssh_host_ed25519_key.pub ADD test-container/sshd_config /etc/ssh/sshd_config RUN apk add --no-cache tini @@ -14,6 +16,8 @@ RUN \ chmod 600 /home/sshj/.ssh/authorized_keys && \ chmod 600 /etc/ssh/ssh_host_ecdsa_key && \ chmod 644 /etc/ssh/ssh_host_ecdsa_key.pub && \ + chmod 600 /etc/ssh/ssh_host_ed25519_key && \ + chmod 644 /etc/ssh/ssh_host_ed25519_key.pub && \ chown -R sshj:sshj /home/sshj ENTRYPOINT ["/sbin/tini", "/entrypoint.sh"] \ No newline at end of file diff --git a/src/itest/docker-image/test-container/ssh_host_ed25519_key b/src/itest/docker-image/test-container/ssh_host_ed25519_key new file mode 100644 index 00000000..a58a68fb --- /dev/null +++ b/src/itest/docker-image/test-container/ssh_host_ed25519_key @@ -0,0 +1,7 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW +QyNTUxOQAAACBFG9PKAq8FtH0me+LHUE6YaVANCMqy/Znkffzief1W/gAAAKCyyoBkssqA +ZAAAAAtzc2gtZWQyNTUxOQAAACBFG9PKAq8FtH0me+LHUE6YaVANCMqy/Znkffzief1W/g +AAAED+Yfza2xk5LqP9pN6TpvhWYP0L60zOQJpHhbEuiS3LLkUb08oCrwW0fSZ74sdQTphp +UA0IyrL9meR9/OJ5/Vb+AAAAF2FqdmFuZXJwQEhlaW1kYWxsLmxvY2FsAQIDBAUG +-----END OPENSSH PRIVATE KEY----- diff --git a/src/itest/docker-image/test-container/ssh_host_ed25519_key.pub b/src/itest/docker-image/test-container/ssh_host_ed25519_key.pub new file mode 100644 index 00000000..fec9b06f --- /dev/null +++ b/src/itest/docker-image/test-container/ssh_host_ed25519_key.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEUb08oCrwW0fSZ74sdQTphpUA0IyrL9meR9/OJ5/Vb+ ajvanerp@Heimdall.local diff --git a/src/itest/groovy/com/hierynomus/sshj/IntegrationSpec.groovy b/src/itest/groovy/com/hierynomus/sshj/IntegrationSpec.groovy index 84a9ee17..59a70de9 100644 --- a/src/itest/groovy/com/hierynomus/sshj/IntegrationSpec.groovy +++ b/src/itest/groovy/com/hierynomus/sshj/IntegrationSpec.groovy @@ -15,23 +15,34 @@ */ package com.hierynomus.sshj +import com.hierynomus.sshj.signature.SignatureEdDSA import net.schmizz.sshj.DefaultConfig import net.schmizz.sshj.SSHClient +import net.schmizz.sshj.signature.SignatureECDSA import net.schmizz.sshj.transport.TransportException import net.schmizz.sshj.userauth.UserAuthException +import spock.lang.Unroll class IntegrationSpec extends IntegrationBaseSpec { - def "should accept correct key"() { + @Unroll + def "should accept correct key for #signatureName"() { given: - SSHClient sshClient = new SSHClient(new DefaultConfig()) - sshClient.addHostKeyVerifier("d3:6a:a9:52:05:ab:b5:48:dd:73:60:18:0c:3a:f0:a3") // test-containers/ssh_host_ecdsa_key's fingerprint + def config = new DefaultConfig() + config.setSignatureFactories(signatureFactory) + SSHClient sshClient = new SSHClient(config) + sshClient.addHostKeyVerifier(fingerprint) // test-containers/ssh_host_ecdsa_key's fingerprint when: sshClient.connect(SERVER_IP, DOCKER_PORT) then: sshClient.isConnected() + + where: + signatureFactory << [new SignatureECDSA.Factory256(), new SignatureEdDSA.Factory()] + fingerprint << ["d3:6a:a9:52:05:ab:b5:48:dd:73:60:18:0c:3a:f0:a3", "dc:68:38:ce:fc:6f:2c:d6:6d:6b:34:eb:5c:f0:41:6a"] + signatureName = signatureFactory.getName() } def "should decline wrong key"() throws IOException {