Add support for other keytypes to openssh-key-v1 keyfiles (#485)

* Added support for RSA to openssh-key-v1 keyfile

* Fixed exception

* Added ECDSA support to openssh-key-v1

* Added integration tests for different keytypes
This commit is contained in:
Jeroen van Erp
2019-01-17 13:01:49 +01:00
committed by GitHub
parent 00cd335f47
commit cac340dd43
20 changed files with 287 additions and 22 deletions

View File

@@ -24,7 +24,7 @@ import spock.lang.Specification
class IntegrationBaseSpec extends Specification {
protected static final int DOCKER_PORT = 2222
protected static final String USERNAME = "sshj"
protected static final String KEYFILE = "src/test/resources/id_rsa"
protected static final String KEYFILE = "src/itest/resources/keyfiles/id_rsa"
protected final static String SERVER_IP = System.getProperty("serverIP", "127.0.0.1")
protected static SSHClient getConnectedClient(Config config) {

View File

@@ -57,15 +57,27 @@ class IntegrationSpec extends IntegrationBaseSpec {
thrown(TransportException.class)
}
def "should authenticate"() {
@Unroll
def "should authenticate with key #key"() {
given:
SSHClient client = getConnectedClient()
when:
client.authPublickey(USERNAME, KEYFILE)
def keyProvider = passphrase != null ? client.loadKeys("src/itest/resources/keyfiles/$key", passphrase) : client.loadKeys("src/itest/resources/keyfiles/$key")
client.authPublickey(USERNAME, keyProvider)
then:
client.isAuthenticated()
where:
key | passphrase
// "id_ecdsa_nistp256" | null // TODO: Need to improve PKCS8 key support.
"id_ecdsa_opensshv1" | null
"id_ed25519_opensshv1" | null
"id_ed25519_opensshv1_aes256cbc.pem" | "foobar"
"id_ed25519_opensshv1_protected" | "sshjtest"
"id_rsa" | null
"id_rsa_opensshv1" | null
}
def "should not authenticate with wrong key"() {
@@ -73,7 +85,7 @@ class IntegrationSpec extends IntegrationBaseSpec {
SSHClient client = getConnectedClient()
when:
client.authPublickey("sshj", "src/test/resources/id_dsa")
client.authPublickey("sshj", "src/itest/resources/keyfiles/id_unknown_key")
then:
thrown(UserAuthException.class)