http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-common/src/test/resources/org/apache/sshd/client/config/keys/id_ecdsa
----------------------------------------------------------------------
diff --git 
a/sshd-common/src/test/resources/org/apache/sshd/client/config/keys/id_ecdsa 
b/sshd-common/src/test/resources/org/apache/sshd/client/config/keys/id_ecdsa
new file mode 100644
index 0000000..31b1268
--- /dev/null
+++ b/sshd-common/src/test/resources/org/apache/sshd/client/config/keys/id_ecdsa
@@ -0,0 +1,5 @@
+-----BEGIN EC PRIVATE KEY-----
+MHcCAQEEIPKmiQzAASg656IP4PuuElLdLdO/MIXrGxQG6tGkKZ1HoAoGCCqGSM49
+AwEHoUQDQgAEobHtw9wkL332ep9fi8Gw5g8sEGwslNonPUCDR6YUZ9mjOehliLpF
+DLHLxlIFafrVM+LIpagjpRKZcnpGPWQDnA==
+-----END EC PRIVATE KEY-----

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-common/src/test/resources/org/apache/sshd/client/config/keys/id_rsa
----------------------------------------------------------------------
diff --git 
a/sshd-common/src/test/resources/org/apache/sshd/client/config/keys/id_rsa 
b/sshd-common/src/test/resources/org/apache/sshd/client/config/keys/id_rsa
new file mode 100644
index 0000000..afc6aa8
--- /dev/null
+++ b/sshd-common/src/test/resources/org/apache/sshd/client/config/keys/id_rsa
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEoQIBAAKCAQEAxr3N5fkt966xJINl0hH7Q6lLDRR1D0yMjcXCE5roE9VFut2c
+tGFuo90TCOxkPOMnwzwConeyScVF4ConZeWsxbG9VtRh61IeZ6R5P5ZTvE9xPdZB
+gIEWvU1bRfrrOfSMihqF98pODspE6NoTtND2eglwSGwxcYFmpdTAmu+8qgxgGxlE
+aaCjqwdiNPZhygrH81Mv2ruolNeZkn4Bj+wFFmZTD/waN1pQaMf+SO1+kEYIYFNl
+5+8JRGuUcr8MhHHJB+gwqMTF2BSBVITJzZUiQR0TMtkK6Vbs7yt1F9hhzDzAFDwh
+V+rsfNQaOHpl3zP07qH+/99A0XG1CVcEdHqVMwIBIwKCAQALW02YHN4OJz1Siypj
+xoNi87slUaBKBF/NlkWauGUIcpZFMTwnkIn6vCz5MhRbQC4oadRDzFNUrC/g7HdH
+prlqYe2P7uEGIfMb3YNFdk3tgOHmRsHqFgFMpVWsOjlTxNTUsQ74N3Isuxnha4wY
+9f90sBULc+WRdRvO9jbkSDaqoYVKAqCFWtocL+ZWwBXWrIrsQW4PElgZ/duc5DX7
+eeJ5DXCSj9dO+1KxsWEOKaoeABEegrRVys1/shcDNPhf/p0QShKIdPcpnDUc8cny
+1bq8GSt6jEQ+tuRoSnYrY+RD+mlkHrx373Xc1a9woV+QKTThmd9TQ8gzHMHNqq0a
+7kR7AoGBAOuPOTRiKaDtQyMTEX7eeHsPNE24EgvONjNpxyQ6gKGthG5SiB0IO7mP
+r7EggbR2EY8eMCY5HjvxzxgH86n2Pqbzsr6UlQq7YTPupCm/7fPgRknu917GA20f
+1cuY8B04Jp4FIGryBmCcScX6usXXhjfAvYCWWfkSytA8gX9+b1TNAoGBANf8shbp
+wRnQfgAzw2S+xs29pdwa6Jb/xuLvHSyklmgidrK4nsVI8G+zeCqwkqkNM02sM+vR
+c8EX7+myrGf+S2V3JS3AMNXEhavrWVH0CuqFHlBjSwHZ0uKuPpWHlCnud+23AdQz
+Bf1H7tYKt5es3J/B37o4YxhAL6U9qq+ewZH/AoGBAOTURjLjA94oT9jt870SoOyS
+bVLQEYfPol3UeE8UQnEsN4Ec+UDGK2PNaNfzsTL2WjNB5aF5UJIA184znD60seQC
+raMxQFORdF5ViYekgMEFwJ+XrnlSpD4e7PGqgtqOUWZOH33VKsRADSa5DTU3xDYo
+8porp9wDoHKD64MqXYWTAoGADFeVJeF4v6WDivukw+2k9dBSntz3WRXuG5iilNY0
+evqnsnDzITdeMkTFCcDycA9iBHA9ezCKRYxW2id3kOn1rgbO7KvliI7jESNkMJGa
+OUlvck7RFgxyc1pp+ep9fr0rbKtfMLJ1Xu4q56jXSn7oCSEFeFr+WSg9PKRwJ0rm
+fV8CgYAkYOiNY8jH5lwwoPWOIPJg62zdzmRQktrU3z7Nzk5udN6JnG3g57QjkozX
+AgHARKQ2MuXW9OfOnYNhbGeavcBQmg5XUx3eL4PRFw8mFZdjpBD/kM/dfCEwEta3
+FpRlVGn0RNqVV5xxClObD/CikkDqKZG4MSj3CrO3JK33gl1Lgg==
+-----END RSA PRIVATE KEY-----

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-common/src/test/resources/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest-DSA-KeyPair
----------------------------------------------------------------------
diff --git 
a/sshd-common/src/test/resources/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest-DSA-KeyPair
 
b/sshd-common/src/test/resources/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest-DSA-KeyPair
new file mode 100644
index 0000000..217d508
--- /dev/null
+++ 
b/sshd-common/src/test/resources/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest-DSA-KeyPair
@@ -0,0 +1,21 @@
+-----BEGIN OPENSSH PRIVATE KEY-----
+b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABsQAAAAdzc2gtZH
+NzAAAAgQD3axy1MBdh4TJC+T22DKKDe7sXnDrgJRs1jBcDl/qPdQDoLlvvTd8oHggXkIzI
+6Tx2ldiJ3KADMkDg1sBSU5zenIr9wisfEQOLNqfIOOirR9Z8jULGVlDO+pPwps0P9bcOka
+JCAfABNth6Oaz3NJjfFD8ZmmWDVaN2rSi1J3mjnwAAABUA5be00MaSti06Hor265V8Ggtj
+i/0AAACAa9MU8kBJ4Z1+UsrWruVr72eckEwjOPcRFeA6MoSM70GGdYVkLyQ78MMjKAFZcb
+seYT3lsja+c4LQ7yErROHSGFo+ImQnYGY3Cos2mS8tRBHtZ4YmKsBmS3Zrb4lEfauA1pgD
+pcGrUAavniKIAB/C9cpvj+IpZ36+rHpap4JKJ7kAAACAQP4NRzjtauzrDJvs73c0DPczAk
+LAan+90ouvIuI0CmMxFrSqLIIEaX3cB/P4dkKtBsMh0CxwJpoXfn+TO+1j7i08GuMONeqB
+3lOHn1/MB2qUAZh/kdU8RUsxWkrG80JMeP1kew1sHaoRfOUZ8+Xw/RL7nNmhhmHJR3rkgR
+8EoWEAAAHoMgIkejICJHoAAAAHc3NoLWRzcwAAAIEA92sctTAXYeEyQvk9tgyig3u7F5w6
+4CUbNYwXA5f6j3UA6C5b703fKB4IF5CMyOk8dpXYidygAzJA4NbAUlOc3pyK/cIrHxEDiz
+anyDjoq0fWfI1CxlZQzvqT8KbND/W3DpGiQgHwATbYejms9zSY3xQ/GZplg1Wjdq0otSd5
+o58AAAAVAOW3tNDGkrYtOh6K9uuVfBoLY4v9AAAAgGvTFPJASeGdflLK1q7la+9nnJBMIz
+j3ERXgOjKEjO9BhnWFZC8kO/DDIygBWXG7HmE95bI2vnOC0O8hK0Th0hhaPiJkJ2BmNwqL
+NpkvLUQR7WeGJirAZkt2a2+JRH2rgNaYA6XBq1AGr54iiAAfwvXKb4/iKWd+vqx6WqeCSi
+e5AAAAgED+DUc47Wrs6wyb7O93NAz3MwJCwGp/vdKLryLiNApjMRa0qiyCBGl93Afz+HZC
+rQbDIdAscCaaF35/kzvtY+4tPBrjDjXqgd5Th59fzAdqlAGYf5HVPEVLMVpKxvNCTHj9ZH
+sNbB2qEXzlGfPl8P0S+5zZoYZhyUd65IEfBKFhAAAAFGL9BNpShiQnNZ1noW8Woxyq1GuH
+AAAADnJvb3RAdWJ1bnR1LTE1AQIDBAU=
+-----END OPENSSH PRIVATE KEY-----
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-common/src/test/resources/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest-DSA-KeyPair.pub
----------------------------------------------------------------------
diff --git 
a/sshd-common/src/test/resources/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest-DSA-KeyPair.pub
 
b/sshd-common/src/test/resources/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest-DSA-KeyPair.pub
new file mode 100644
index 0000000..c3feece
--- /dev/null
+++ 
b/sshd-common/src/test/resources/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest-DSA-KeyPair.pub
@@ -0,0 +1 @@
+ssh-dss 
AAAAB3NzaC1kc3MAAACBAPdrHLUwF2HhMkL5PbYMooN7uxecOuAlGzWMFwOX+o91AOguW+9N3ygeCBeQjMjpPHaV2IncoAMyQODWwFJTnN6civ3CKx8RA4s2p8g46KtH1nyNQsZWUM76k/CmzQ/1tw6RokIB8AE22Ho5rPc0mN8UPxmaZYNVo3atKLUneaOfAAAAFQDlt7TQxpK2LToeivbrlXwaC2OL/QAAAIBr0xTyQEnhnX5Sytau5WvvZ5yQTCM49xEV4DoyhIzvQYZ1hWQvJDvwwyMoAVlxux5hPeWyNr5zgtDvIStE4dIYWj4iZCdgZjcKizaZLy1EEe1nhiYqwGZLdmtviUR9q4DWmAOlwatQBq+eIogAH8L1ym+P4ilnfr6selqngkonuQAAAIBA/g1HOO1q7OsMm+zvdzQM9zMCQsBqf73Si68i4jQKYzEWtKosggRpfdwH8/h2Qq0GwyHQLHAmmhd+f5M77WPuLTwa4w416oHeU4efX8wHapQBmH+R1TxFSzFaSsbzQkx4/WR7DWwdqhF85Rnz5fD9Evuc2aGGYclHeuSBHwShYQ==
 root@ubuntu-15
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-common/src/test/resources/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest-ECDSA-KeyPair
----------------------------------------------------------------------
diff --git 
a/sshd-common/src/test/resources/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest-ECDSA-KeyPair
 
b/sshd-common/src/test/resources/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest-ECDSA-KeyPair
new file mode 100644
index 0000000..403ff40
--- /dev/null
+++ 
b/sshd-common/src/test/resources/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest-ECDSA-KeyPair
@@ -0,0 +1,12 @@
+-----BEGIN OPENSSH PRIVATE KEY-----
+b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAArAAAABNlY2RzYS
+1zaGEyLW5pc3RwNTIxAAAACG5pc3RwNTIxAAAAhQQAGRPv5eCmd3jFTCWrioWVHgQhHn/d
+ir8nriiEonZDPP+hEjX1AiYyahfvFWoqKI4lKRzoEmF5Wk6ct+9LM0JFGcEAck7Z3J/NXt
+CnHeEvnusHMoANjhKLExBURROOOTGziyHMuGBMBIgRFnf4rBhiTzduexJnaMglyqxIrDpG
+hOxwhQAAAAEQxPcsaMT3LGgAAAATZWNkc2Etc2hhMi1uaXN0cDUyMQAAAAhuaXN0cDUyMQ
+AAAIUEABkT7+Xgpnd4xUwlq4qFlR4EIR5/3Yq/J64ohKJ2Qzz/oRI19QImMmoX7xVqKiiO
+JSkc6BJheVpOnLfvSzNCRRnBAHJO2dyfzV7Qpx3hL57rBzKADY4SixMQVEUTjjkxs4shzL
+hgTASIERZ3+KwYYk83bnsSZ2jIJcqsSKw6RoTscIUAAAAAQQ+HCwVtvFlnRydGXZ+xpyKM
+KxDp5h7YMg5/dpRFrp3qNonm5/RHoT2Hw9i5GZtrXT2xPiR69wLOzTb4pnIWlENfAAAADn
+Jvb3RAdWJ1bnR1LTE1AQIDBAU=
+-----END OPENSSH PRIVATE KEY-----
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-common/src/test/resources/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest-ECDSA-KeyPair.pub
----------------------------------------------------------------------
diff --git 
a/sshd-common/src/test/resources/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest-ECDSA-KeyPair.pub
 
b/sshd-common/src/test/resources/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest-ECDSA-KeyPair.pub
new file mode 100644
index 0000000..bd43737
--- /dev/null
+++ 
b/sshd-common/src/test/resources/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest-ECDSA-KeyPair.pub
@@ -0,0 +1 @@
+ecdsa-sha2-nistp521 
AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAAZE+/l4KZ3eMVMJauKhZUeBCEef92KvyeuKISidkM8/6ESNfUCJjJqF+8VaioojiUpHOgSYXlaTpy370szQkUZwQByTtncn81e0Kcd4S+e6wcygA2OEosTEFRFE445MbOLIcy4YEwEiBEWd/isGGJPN257EmdoyCXKrEisOkaE7HCFAA==
 root@ubuntu-15

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-common/src/test/resources/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest-ED25519-KeyPair
----------------------------------------------------------------------
diff --git 
a/sshd-common/src/test/resources/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest-ED25519-KeyPair
 
b/sshd-common/src/test/resources/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest-ED25519-KeyPair
new file mode 100644
index 0000000..3176f3b
--- /dev/null
+++ 
b/sshd-common/src/test/resources/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest-ED25519-KeyPair
@@ -0,0 +1,7 @@
+-----BEGIN OPENSSH PRIVATE KEY-----
+b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
+QyNTUxOQAAACB0Tsaj0scs8fYKMlnz2Mncky545NoICP9eGMGIpo5G3QAAAJjCVtyJwlbc
+iQAAAAtzc2gtZWQyNTUxOQAAACB0Tsaj0scs8fYKMlnz2Mncky545NoICP9eGMGIpo5G3Q
+AAAEDjQpuV2OWHZVy7R09w6bw2DnBa1UdZrsAmQ7dPyxasx3ROxqPSxyzx9goyWfPYydyT
+Lnjk2ggI/14YwYimjkbdAAAADnJvb3RAdWJ1bnR1LTE1AQIDBAUGBw==
+-----END OPENSSH PRIVATE KEY-----
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-common/src/test/resources/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest-ED25519-KeyPair.pub
----------------------------------------------------------------------
diff --git 
a/sshd-common/src/test/resources/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest-ED25519-KeyPair.pub
 
b/sshd-common/src/test/resources/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest-ED25519-KeyPair.pub
new file mode 100644
index 0000000..128e883
--- /dev/null
+++ 
b/sshd-common/src/test/resources/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest-ED25519-KeyPair.pub
@@ -0,0 +1 @@
+ssh-ed25519 
AAAAC3NzaC1lZDI1NTE5AAAAIHROxqPSxyzx9goyWfPYydyTLnjk2ggI/14YwYimjkbd 
root@ubuntu-15
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-common/src/test/resources/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest-RSA-KeyPair
----------------------------------------------------------------------
diff --git 
a/sshd-common/src/test/resources/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest-RSA-KeyPair
 
b/sshd-common/src/test/resources/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest-RSA-KeyPair
new file mode 100644
index 0000000..84ee354
--- /dev/null
+++ 
b/sshd-common/src/test/resources/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest-RSA-KeyPair
@@ -0,0 +1,49 @@
+-----BEGIN OPENSSH PRIVATE KEY-----
+b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAACFwAAAAdzc2gtcn
+NhAAAAAwEAAQAAAgEArsY72FUUnK8yLqaY3WkotvMFm2aryoVVPbaHiXMqmKTTQPBFshwe
+Rk+wEJBE7th4fIq2MuTu+hMxEQ8+oYJ47Ka1+F96QE1F0uu1Tuec/ZpeuEiXsTBApWZ5Sa
+AMqQ3gMflfqgp96ipV3SOpLyEG9GIqVMJYNE/ggwIV7Uc4ybC21Zy3I7QOfHho8BeaMjV/
+703rlu2UWs8Twjo7VMWLvnGMUjNMzNGql9WouLEzHshmkUZBRdKvnTjsT9vx1q5OycaH/g
+Hos23EbNzn50rbiIm93PcZ/otGBjjfbHcsRmjxZhqCzLss5Nr93PLIePN8Cez91S7aLjCw
+Ri4ugKxK0EZwNHnHPi0yR0eI1eMfJLttdYnrOZiSxEVbCsZiDfTybuBYUDaH2EtgmzH9N2
+5IZeJOjrjE68NZhiwXnaIoHvfpkPTkWMSGLsLY3Kg0dYwUbAy9ErqkS/MEMmN70OxIxqTI
+hFSZ0bv3FBbZTZnl/GAEWmV+KSjURKuJlS9EBYE4ZvzYhGi6K7g3IQJZwrcqy6s8u24r5u
+qAQCihfuWFabq4nSYB1zczQ7Qq+V8wemak6lgoFGq4f58k3FUhkJbwQRFJoQYvaMI63dls
+9q67bkocjycsGPvWDU7IE9dVs36z7FevlQjsoHwAr4+0T1PFsqHn++KJ0p3AlopIV7ObS0
+cAAAdIyEoveMhKL3gAAAAHc3NoLXJzYQAAAgEArsY72FUUnK8yLqaY3WkotvMFm2aryoVV
+PbaHiXMqmKTTQPBFshweRk+wEJBE7th4fIq2MuTu+hMxEQ8+oYJ47Ka1+F96QE1F0uu1Tu
+ec/ZpeuEiXsTBApWZ5SaAMqQ3gMflfqgp96ipV3SOpLyEG9GIqVMJYNE/ggwIV7Uc4ybC2
+1Zy3I7QOfHho8BeaMjV/703rlu2UWs8Twjo7VMWLvnGMUjNMzNGql9WouLEzHshmkUZBRd
+KvnTjsT9vx1q5OycaH/gHos23EbNzn50rbiIm93PcZ/otGBjjfbHcsRmjxZhqCzLss5Nr9
+3PLIePN8Cez91S7aLjCwRi4ugKxK0EZwNHnHPi0yR0eI1eMfJLttdYnrOZiSxEVbCsZiDf
+TybuBYUDaH2EtgmzH9N25IZeJOjrjE68NZhiwXnaIoHvfpkPTkWMSGLsLY3Kg0dYwUbAy9
+ErqkS/MEMmN70OxIxqTIhFSZ0bv3FBbZTZnl/GAEWmV+KSjURKuJlS9EBYE4ZvzYhGi6K7
+g3IQJZwrcqy6s8u24r5uqAQCihfuWFabq4nSYB1zczQ7Qq+V8wemak6lgoFGq4f58k3FUh
+kJbwQRFJoQYvaMI63dls9q67bkocjycsGPvWDU7IE9dVs36z7FevlQjsoHwAr4+0T1PFsq
+Hn++KJ0p3AlopIV7ObS0cAAAADAQABAAACAEC2ca42Qn2JeSFA2lUQ/NxQu4DA0VcZa2iA
+T0sbc2g1j2r6DDRYqPULyHs5j+yIBoTGr5PEpJ+/v2k7pcsTjkbBq5sdbxyj//iLAgUHSV
++1auD9L/2Rij4z5TDXrBhkZODcHwnM/LZZmpVZAOnMZtDSEC52D0a/VLfta8UBnAtB/VC2
+yDDWGI8J3oEXnCZ/HLG0vkiSC15cUkqWWSWYR5fqXzSIfiVQdMPnfqN0KSN6vE+KHd0Gl7
+O1QfqHy9HblJytf+kTN+BIAnT0joFbfFHf/ob0j5FqbDEdmcyFi8U+UjOmGUxI+eR7GYhX
+9NakAQeD0rC+ulZj/MDflKRcJw6+H/wHn2pdhahZY1A644SFin4SliFKl57njRkY/psjSg
+jpP0Nneg4+YFyFk9iUnmzxStJwuGE48I5eRESTFKgaMce5IVGOpz/YchQ9AL+ll2Qy6JfN
+nhpjuZD6Zh5KwsuLtCbaGfu8K8bbMEZg8F7jU6UdbpLmRLroKt6yFhffEp/tRrsX2hFoMt
+qCMpTEX2G+EzItPfFzq3/bFtnMxHmDiu4P8J03ALza/0OSIa4bdqMYG+97VBMbMeT6U76Q
+iYoDJH5/cdCBO/Cx+elM7oyFOFaV928h+6p01LGywcQdsgFPDyHSjXnF9t1fnLN4vhz5vU
+9QiVY7ldr+3PfxxpnRAAABAQDI87mazAnKsSJtkl70etg7vexltSxqkbhV/Hd5TYVMn19v
+U6rIjCY7q2xlHaUJdDNggwMpU679amkRP5BFPk9G4u8Xf5MyyDQpv+Hgpl7H0B1qEeJsBs
+huxURrX3EhLmb3300onEZXvlRwKOelIoVx5RZLUPhY0SbjBgH4sbO9NlYzs8xp4nLyK/jq
+DsqzmkkoQvK8zMybs3JwtGmTjDHvzmgcBgpm+s9gXyDJn3xe4CBW7v92N5/7eUehdXwomL
+4eDs/gR9QRb71bBSv9UaF5nK/TGJlysiM71JhBa2lmXlWg7KhALAu3SdTxxdvw0oyY+q6F
+E8zC0ljNMId8imVoAAABAQDi0m1WAW02b/IqwsJz0CAJXGpvhnhTSak3muZhTM0LPoavIe
+ow9KYL5Or4kQvbQXraYcaaRTp1Q9yJOrnXszAUWCGzqe38bLsI/SoRynLQaGEhdy1gr4tP
+WFKw0M34AshzyauEwHAVJIm6KZW/LgHsrxSXPFAABNQkQtB4olokNgSb/bysgo06OkkMBr
+N8mfY40m90RjTIvg3Cwei7xmna67MO1Bxzis8c7qQlf4hshFwnp+ixeLuhteYG1/DGxkfz
+yZ4UYXVKiuq3Xq+jFpYbKJeU17HL5TQFX34KCMN0BsMCcHLJ222IZkvFZj50715Z+jh/Vp
+xa6et++PX26BnVAAABAQDFQc26F12qnGA4heqa7Ig9WspGLEB4x5+cANOKaT/LtUFYWaYd
+O7Meeijkk+C1XcoOMac62QysRmjk8JEWdxgLiCFuKLp+6vxZLmEXBrBF0guHGv4/HlbpYn
+CxpMenxr0dhhwd2Flr1VtiadzEAfnc6MZE4byU8vVssYXORpVYIU46uI2OzIalnBhTXJYW
+KuamE/R+O1+dqnGgevQqUBkA5p4k8w+RMEY3hvSuNd6TFy5uoLXkCyOOpo60fGFVqMZyvJ
+IgU1et0umOA/JHrGzKHAl7WibRo4kf5MrPRLiDeDu92mqpwOl9NQjuTMR0OdZcXwOdrlG+
+daAgz5LetOKrAAAADnJvb3RAdWJ1bnR1LTE1AQIDBA==
+-----END OPENSSH PRIVATE KEY-----
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-common/src/test/resources/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest-RSA-KeyPair.pub
----------------------------------------------------------------------
diff --git 
a/sshd-common/src/test/resources/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest-RSA-KeyPair.pub
 
b/sshd-common/src/test/resources/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest-RSA-KeyPair.pub
new file mode 100644
index 0000000..c59321c
--- /dev/null
+++ 
b/sshd-common/src/test/resources/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest-RSA-KeyPair.pub
@@ -0,0 +1 @@
+ssh-rsa 
AAAAB3NzaC1yc2EAAAADAQABAAACAQCuxjvYVRScrzIuppjdaSi28wWbZqvKhVU9toeJcyqYpNNA8EWyHB5GT7AQkETu2Hh8irYy5O76EzERDz6hgnjsprX4X3pATUXS67VO55z9ml64SJexMEClZnlJoAypDeAx+V+qCn3qKlXdI6kvIQb0YipUwlg0T+CDAhXtRzjJsLbVnLcjtA58eGjwF5oyNX/vTeuW7ZRazxPCOjtUxYu+cYxSM0zM0aqX1ai4sTMeyGaRRkFF0q+dOOxP2/HWrk7Jxof+AeizbcRs3OfnStuIib3c9xn+i0YGON9sdyxGaPFmGoLMuyzk2v3c8sh483wJ7P3VLtouMLBGLi6ArErQRnA0ecc+LTJHR4jV4x8ku211ies5mJLERVsKxmIN9PJu4FhQNofYS2CbMf03bkhl4k6OuMTrw1mGLBedoige9+mQ9ORYxIYuwtjcqDR1jBRsDL0SuqRL8wQyY3vQ7EjGpMiEVJnRu/cUFtlNmeX8YARaZX4pKNREq4mVL0QFgThm/NiEaLoruDchAlnCtyrLqzy7bivm6oBAKKF+5YVpuridJgHXNzNDtCr5XzB6ZqTqWCgUarh/nyTcVSGQlvBBEUmhBi9owjrd2Wz2rrtuShyPJywY+9YNTsgT11WzfrPsV6+VCOygfACvj7RPU8Wyoef74onSncCWikhXs5tLRw==
 root@ubuntu-15

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-common/src/test/resources/org/apache/sshd/common/util/security/EDDSAProviderTest-EDDSA-OpenSSH-KeyPair
----------------------------------------------------------------------
diff --git 
a/sshd-common/src/test/resources/org/apache/sshd/common/util/security/EDDSAProviderTest-EDDSA-OpenSSH-KeyPair
 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/EDDSAProviderTest-EDDSA-OpenSSH-KeyPair
new file mode 100644
index 0000000..59af379
--- /dev/null
+++ 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/EDDSAProviderTest-EDDSA-OpenSSH-KeyPair
@@ -0,0 +1,7 @@
+-----BEGIN OPENSSH PRIVATE KEY-----
+b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
+QyNTUxOQAAACB0Tsaj0scs8fYKMlnz2Mncky545NoICP9eGMGIpo5G3QAAAJjCVtyJwlbc
+iQAAAAtzc2gtZWQyNTUxOQAAACB0Tsaj0scs8fYKMlnz2Mncky545NoICP9eGMGIpo5G3Q
+AAAEDjQpuV2OWHZVy7R09w6bw2DnBa1UdZrsAmQ7dPyxasx3ROxqPSxyzx9goyWfPYydyT
+Lnjk2ggI/14YwYimjkbdAAAADnJvb3RAdWJ1bnR1LTE1AQIDBAUGBw==
+-----END OPENSSH PRIVATE KEY-----

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-common/src/test/resources/org/apache/sshd/common/util/security/EDDSAProviderTest-EDDSA-OpenSSH-KeyPair.pub
----------------------------------------------------------------------
diff --git 
a/sshd-common/src/test/resources/org/apache/sshd/common/util/security/EDDSAProviderTest-EDDSA-OpenSSH-KeyPair.pub
 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/EDDSAProviderTest-EDDSA-OpenSSH-KeyPair.pub
new file mode 100644
index 0000000..128e883
--- /dev/null
+++ 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/EDDSAProviderTest-EDDSA-OpenSSH-KeyPair.pub
@@ -0,0 +1 @@
+ssh-ed25519 
AAAAC3NzaC1lZDI1NTE5AAAAIHROxqPSxyzx9goyWfPYydyTLnjk2ggI/14YwYimjkbd 
root@ubuntu-15
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-DSA-KeyPair
----------------------------------------------------------------------
diff --git 
a/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-DSA-KeyPair
 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-DSA-KeyPair
new file mode 100644
index 0000000..1d3ef24
--- /dev/null
+++ 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-DSA-KeyPair
@@ -0,0 +1,12 @@
+-----BEGIN DSA PRIVATE KEY-----
+MIIBvAIBAAKBgQDIPyMbBuQcZxeYDOyCqqkdK37cWQvp+RpWzvieB/oiG/ykfDQX
+oZMRtwqwWTBfejNitbBBmC6G/t5OK+9aFmj7pfJ+a7fZKXfiUquIg9soDsoOindf
+2AwR6MZ3os8uiP2xrC8IQAClnETa15mFShs4a4b2VjddgCQ6tphnY97MywIVAPtr
+YyW11RIXsVTf/9KlbhYaNlt5AoGAX9JzbHykC/0xDKOyKU6xDIOVdEZ0ooAl9Psl
+BEUuNhlv2XgmQScO6C9l2W7gbbut7zIw4FaZ2/dgXa3D4IyexBVug5XMnrssErZo
+NcoF5g0dgEAsb9Hl9gkIK3VHM5kWteeUg1VE700JTtSMisdL8CgIdR+xN8iVH5Ew
+CbLWxmECgYEAtv+cdRfNevYFkp55jVqazc8zRLvfb64jzgc5oSJVc64kFs4yx+ab
+YpGX9WxNxDlG6g2WiY8voDBB0YnUJsn0kVRjBKX9OceROxrfT4K4dVbQZsdt+SLa
+XWL4lGJFrFZL3LZqvySvq6xfhJfakQDDivW4hUOhFPXPHrE5/Ia3T7ACFQCE6flG
+nmVCAbzo9YsbdJWBnxMnBA==
+-----END DSA PRIVATE KEY-----
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-DSA-KeyPair.pub
----------------------------------------------------------------------
diff --git 
a/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-DSA-KeyPair.pub
 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-DSA-KeyPair.pub
new file mode 100644
index 0000000..c0790ed
--- /dev/null
+++ 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-DSA-KeyPair.pub
@@ -0,0 +1 @@
+ssh-dss 
AAAAB3NzaC1kc3MAAACBAMg/IxsG5BxnF5gM7IKqqR0rftxZC+n5GlbO+J4H+iIb/KR8NBehkxG3CrBZMF96M2K1sEGYLob+3k4r71oWaPul8n5rt9kpd+JSq4iD2ygOyg6Kd1/YDBHoxneizy6I/bGsLwhAAKWcRNrXmYVKGzhrhvZWN12AJDq2mGdj3szLAAAAFQD7a2MltdUSF7FU3//SpW4WGjZbeQAAAIBf0nNsfKQL/TEMo7IpTrEMg5V0RnSigCX0+yUERS42GW/ZeCZBJw7oL2XZbuBtu63vMjDgVpnb92BdrcPgjJ7EFW6DlcyeuywStmg1ygXmDR2AQCxv0eX2CQgrdUczmRa155SDVUTvTQlO1IyKx0vwKAh1H7E3yJUfkTAJstbGYQAAAIEAtv+cdRfNevYFkp55jVqazc8zRLvfb64jzgc5oSJVc64kFs4yx+abYpGX9WxNxDlG6g2WiY8voDBB0YnUJsn0kVRjBKX9OceROxrfT4K4dVbQZsdt+SLaXWL4lGJFrFZL3LZqvySvq6xfhJfakQDDivW4hUOhFPXPHrE5/Ia3T7A=
 dsa-key-20130709
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-EC-256-KeyPair
----------------------------------------------------------------------
diff --git 
a/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-EC-256-KeyPair
 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-EC-256-KeyPair
new file mode 100644
index 0000000..31b1268
--- /dev/null
+++ 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-EC-256-KeyPair
@@ -0,0 +1,5 @@
+-----BEGIN EC PRIVATE KEY-----
+MHcCAQEEIPKmiQzAASg656IP4PuuElLdLdO/MIXrGxQG6tGkKZ1HoAoGCCqGSM49
+AwEHoUQDQgAEobHtw9wkL332ep9fi8Gw5g8sEGwslNonPUCDR6YUZ9mjOehliLpF
+DLHLxlIFafrVM+LIpagjpRKZcnpGPWQDnA==
+-----END EC PRIVATE KEY-----

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-EC-256-KeyPair.pub
----------------------------------------------------------------------
diff --git 
a/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-EC-256-KeyPair.pub
 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-EC-256-KeyPair.pub
new file mode 100644
index 0000000..1c9763f
--- /dev/null
+++ 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-EC-256-KeyPair.pub
@@ -0,0 +1 @@
+ecdsa-sha2-nistp256 
AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKGx7cPcJC999nqfX4vBsOYPLBBsLJTaJz1Ag0emFGfZoznoZYi6RQyxy8ZSBWn61TPiyKWoI6USmXJ6Rj1kA5w=
 root@osv-linux
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-EC-384-KeyPair
----------------------------------------------------------------------
diff --git 
a/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-EC-384-KeyPair
 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-EC-384-KeyPair
new file mode 100644
index 0000000..29af76f
--- /dev/null
+++ 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-EC-384-KeyPair
@@ -0,0 +1,6 @@
+-----BEGIN EC PRIVATE KEY-----
+MIGkAgEBBDB15z4n/vjug4fcEXPcgeonCHQuxJOwgFDIap/rgtM3EwuFDpE9wkfM
+K64UwV1ZSlygBwYFK4EEACKhZANiAARSJmbXE4/ONrLZXFRyxQRcUxMe5bt41vWm
+Qr3dK/X1DSmei20T4epdaCeKMwK58O163kAVHOaDXfRweUTSfI5dZ1l2OXFwQOzH
+Gayma2JpPs8TYR+lC/pDC2iZMp4CR0M=
+-----END EC PRIVATE KEY-----

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-EC-384-KeyPair.pub
----------------------------------------------------------------------
diff --git 
a/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-EC-384-KeyPair.pub
 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-EC-384-KeyPair.pub
new file mode 100644
index 0000000..93ceef0
--- /dev/null
+++ 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-EC-384-KeyPair.pub
@@ -0,0 +1 @@
+ecdsa-sha2-nistp384 
AAAAE2VjZHNhLXNoYTItbmlzdHAzODQAAAAIbmlzdHAzODQAAABhBFImZtcTj842stlcVHLFBFxTEx7lu3jW9aZCvd0r9fUNKZ6LbRPh6l1oJ4ozArnw7XreQBUc5oNd9HB5RNJ8jl1nWXY5cXBA7McZrKZrYmk+zxNhH6UL+kMLaJkyngJHQw==
 root@osv-linux
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-EC-521-KeyPair
----------------------------------------------------------------------
diff --git 
a/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-EC-521-KeyPair
 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-EC-521-KeyPair
new file mode 100644
index 0000000..43f79d7
--- /dev/null
+++ 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-EC-521-KeyPair
@@ -0,0 +1,7 @@
+-----BEGIN EC PRIVATE KEY-----
+MIHcAgEBBEIBUacw+zn8Mw0PYaqqtAlOyaVXARegI6sK5YBhl5E1l9sqTzVN77ce
+1RrqQ8smfvZ6Hiw5gdGcPTszbiorVV5npg6gBwYFK4EEACOhgYkDgYYABACg4siC
+q1iqr4U/spXmw6b2VwBMsof7XLQGoD9wfwUikb8XWthNSmPP1nL6rlzJ5j8Bezn9
+BSSDfVAJfgqxmGIHdgHRVc0mkdq1/Q/DKhBgRyjZc29eo0o2ck3SNGNVaAabRYj6
+ck/iub/U6trKM7bdqy/joYYMwZdxLyYW5YxkPbqEfQ==
+-----END EC PRIVATE KEY-----

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-EC-521-KeyPair.pub
----------------------------------------------------------------------
diff --git 
a/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-EC-521-KeyPair.pub
 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-EC-521-KeyPair.pub
new file mode 100644
index 0000000..520b64e
--- /dev/null
+++ 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-EC-521-KeyPair.pub
@@ -0,0 +1 @@
+ecdsa-sha2-nistp521 
AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBACg4siCq1iqr4U/spXmw6b2VwBMsof7XLQGoD9wfwUikb8XWthNSmPP1nL6rlzJ5j8Bezn9BSSDfVAJfgqxmGIHdgHRVc0mkdq1/Q/DKhBgRyjZc29eo0o2ck3SNGNVaAabRYj6ck/iub/U6trKM7bdqy/joYYMwZdxLyYW5YxkPbqEfQ==
 root@osv-linux
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-RSA-KeyPair
----------------------------------------------------------------------
diff --git 
a/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-RSA-KeyPair
 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-RSA-KeyPair
new file mode 100644
index 0000000..afc6aa8
--- /dev/null
+++ 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-RSA-KeyPair
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEoQIBAAKCAQEAxr3N5fkt966xJINl0hH7Q6lLDRR1D0yMjcXCE5roE9VFut2c
+tGFuo90TCOxkPOMnwzwConeyScVF4ConZeWsxbG9VtRh61IeZ6R5P5ZTvE9xPdZB
+gIEWvU1bRfrrOfSMihqF98pODspE6NoTtND2eglwSGwxcYFmpdTAmu+8qgxgGxlE
+aaCjqwdiNPZhygrH81Mv2ruolNeZkn4Bj+wFFmZTD/waN1pQaMf+SO1+kEYIYFNl
+5+8JRGuUcr8MhHHJB+gwqMTF2BSBVITJzZUiQR0TMtkK6Vbs7yt1F9hhzDzAFDwh
+V+rsfNQaOHpl3zP07qH+/99A0XG1CVcEdHqVMwIBIwKCAQALW02YHN4OJz1Siypj
+xoNi87slUaBKBF/NlkWauGUIcpZFMTwnkIn6vCz5MhRbQC4oadRDzFNUrC/g7HdH
+prlqYe2P7uEGIfMb3YNFdk3tgOHmRsHqFgFMpVWsOjlTxNTUsQ74N3Isuxnha4wY
+9f90sBULc+WRdRvO9jbkSDaqoYVKAqCFWtocL+ZWwBXWrIrsQW4PElgZ/duc5DX7
+eeJ5DXCSj9dO+1KxsWEOKaoeABEegrRVys1/shcDNPhf/p0QShKIdPcpnDUc8cny
+1bq8GSt6jEQ+tuRoSnYrY+RD+mlkHrx373Xc1a9woV+QKTThmd9TQ8gzHMHNqq0a
+7kR7AoGBAOuPOTRiKaDtQyMTEX7eeHsPNE24EgvONjNpxyQ6gKGthG5SiB0IO7mP
+r7EggbR2EY8eMCY5HjvxzxgH86n2Pqbzsr6UlQq7YTPupCm/7fPgRknu917GA20f
+1cuY8B04Jp4FIGryBmCcScX6usXXhjfAvYCWWfkSytA8gX9+b1TNAoGBANf8shbp
+wRnQfgAzw2S+xs29pdwa6Jb/xuLvHSyklmgidrK4nsVI8G+zeCqwkqkNM02sM+vR
+c8EX7+myrGf+S2V3JS3AMNXEhavrWVH0CuqFHlBjSwHZ0uKuPpWHlCnud+23AdQz
+Bf1H7tYKt5es3J/B37o4YxhAL6U9qq+ewZH/AoGBAOTURjLjA94oT9jt870SoOyS
+bVLQEYfPol3UeE8UQnEsN4Ec+UDGK2PNaNfzsTL2WjNB5aF5UJIA184znD60seQC
+raMxQFORdF5ViYekgMEFwJ+XrnlSpD4e7PGqgtqOUWZOH33VKsRADSa5DTU3xDYo
+8porp9wDoHKD64MqXYWTAoGADFeVJeF4v6WDivukw+2k9dBSntz3WRXuG5iilNY0
+evqnsnDzITdeMkTFCcDycA9iBHA9ezCKRYxW2id3kOn1rgbO7KvliI7jESNkMJGa
+OUlvck7RFgxyc1pp+ep9fr0rbKtfMLJ1Xu4q56jXSn7oCSEFeFr+WSg9PKRwJ0rm
+fV8CgYAkYOiNY8jH5lwwoPWOIPJg62zdzmRQktrU3z7Nzk5udN6JnG3g57QjkozX
+AgHARKQ2MuXW9OfOnYNhbGeavcBQmg5XUx3eL4PRFw8mFZdjpBD/kM/dfCEwEta3
+FpRlVGn0RNqVV5xxClObD/CikkDqKZG4MSj3CrO3JK33gl1Lgg==
+-----END RSA PRIVATE KEY-----

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-RSA-KeyPair.pub
----------------------------------------------------------------------
diff --git 
a/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-RSA-KeyPair.pub
 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-RSA-KeyPair.pub
new file mode 100644
index 0000000..9fac6f7
--- /dev/null
+++ 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/SecurityUtilsTest-RSA-KeyPair.pub
@@ -0,0 +1 @@
+ssh-rsa 
AAAAB3NzaC1yc2EAAAABIwAAAQEAxr3N5fkt966xJINl0hH7Q6lLDRR1D0yMjcXCE5roE9VFut2ctGFuo90TCOxkPOMnwzwConeyScVF4ConZeWsxbG9VtRh61IeZ6R5P5ZTvE9xPdZBgIEWvU1bRfrrOfSMihqF98pODspE6NoTtND2eglwSGwxcYFmpdTAmu+8qgxgGxlEaaCjqwdiNPZhygrH81Mv2ruolNeZkn4Bj+wFFmZTD/waN1pQaMf+SO1+kEYIYFNl5+8JRGuUcr8MhHHJB+gwqMTF2BSBVITJzZUiQR0TMtkK6Vbs7yt1F9hhzDzAFDwhV+rsfNQaOHpl3zP07qH+/99A0XG1CVcEdHqVMw==
 lgoldstein@LGOLDSTEIN-WIN7

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-common/src/test/resources/org/apache/sshd/common/util/security/super-secret-passphrase-RSA-AES-128-key
----------------------------------------------------------------------
diff --git 
a/sshd-common/src/test/resources/org/apache/sshd/common/util/security/super-secret-passphrase-RSA-AES-128-key
 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/super-secret-passphrase-RSA-AES-128-key
new file mode 100644
index 0000000..2b93a42
--- /dev/null
+++ 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/super-secret-passphrase-RSA-AES-128-key
@@ -0,0 +1,30 @@
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: AES-128-CBC,D41AC063160FCC09B1E1931FB43BCEAA
+
+V218dGT2pUpimnwEVn+2ljvK6mvm2aNLlaakMunlHfIswrakJ1WTs8a61pYILOn9
+MGHrCiqe6ZI7FBJ2wXpSxhcuM3fzk6/dW4Ghh4EHG1Y94w97EizxNfyz/iI2XQw0
+i6ttaDLVzP8UcSRElqG+Zpe1A7EE/DkdkXD3f/DaGHtu1zirVeaEIggMLjfTdwnR
+sH9VnUZhe74VdPV0x16h7JjLt5fcbIjqJ6NWW4QvQpPBv3k0oiUy/nP4FXg1b7VW
+7SowuCPi+mF821hj4xSO8ETlAU1eZdtgXqtejtKm0iDtsjnTBZPvDDrq5ephBlxO
+k7JBJG1LFUiDIGnpxos5nCsKEo8UAw9a5/D4xE3C6UTocXon28XGzVCbkZBN6jcd
+UbpjCVwKMJmFL97487u9S57xrGTmJdi1AtF9Rei8juTTQY4+r3l2c7JtdtcbLUhj
+iLvdYnbh6kUEyE19/+omJaWGQlFhYp7ZMRRQSiz6TD8lhSIBPpXzs+uMfhkrifVk
+3WpjRoikmPOOFLtecee5Rp+SpGd700XgLnxwZ47l0FNfrKKqd3+nZX4JILQ2M0JP
+sBx8gcIew8aUqMzWrwZxbrt9Pd1+2kSNVG9hpLoNoA4WpQnYQMo4L0eTCeMNUOap
+f9H0Hh3QnqXTPHbcYZJCGE2RUxLzn/d7rUxUdEzER+pkhJcw9JbV/izTrpDHs9bM
+cfBLggQvs+UIBww2OFz2BztwoQzsSEuNW/SxG/y6SfRUQq5TZw9NxYnrrqfBXKtx
+svB1JVbn2fKq2Lvi8AZ1fF3tyrNot/tptDf0yDHejWDUvVx5cXsKVK2BbVjbZ88k
+mBtUbw7ea9Ev7ZsihNB2EdhPjLhhKlKLIZznPKeXL3GDTXqCgCxTVh4wLvaR8rDU
+C3Isil4WprCeynmZpOe7bxAZDm2QCobnDB8sLQqBI4zgH8X/1iyXJVdSKfK9vxcB
+sJ5pYCcS2q0C+CJkn6HVTlMQ5CyyzvPaDJukJoxwxsZ5hgCsUHFzrvyGnXqGfTBD
+qEW+oA7cj48CfweV5pXHj+mZpCrpn1zRVJRz4h1FZRsttPGtBRAlns5I3kh5BPRs
+4m1BO1jiWyp/7HkUrDRhEf/QeJsP+mTH32pQgnngZ/AGA0PUcKanMUpe1d2ju83V
+EIcTz9ycTHPiOAM6GaVt54fKj9WRBU+7pf14ZdJmfhp6twc0jNtaTh+/I6Pfb0jN
+0d6yKV//pOeJJBNhuOJgm/0vfkOnOojIJchOQCRt5Lg/a4fD/JXtLOed2zOQa+0J
+3d8Y93mQX/iN1wi95/sG79YBYF3FkJYVhjosSKbiIaxIn76zIx4IAlziycDKvgpr
+JgZcVvCDc4flwrf3Cv/uHK7UWOE+16X1CfAy8JzFg5bhiMmhgsJyHmd+zDGrY6NX
+zz+wLmwOenEwC40gpt89OXbgMcwJMtfiSusatRtZ+AAs0jb/8jExVXfcYE3m3r1/
+FqLZ7seTQT2D01YoPlwUtSPxzaZbziAJ/NaGmURnBGVibDCJxwUAiOSIQH4prIfg
+Q2FCJeMTbLV43Lanlby5nrmLkzsw3uo1MO8Of1DbcnVUHNSwrp/nNzrYdxBLIvqS
+-----END RSA PRIVATE KEY-----

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-common/src/test/resources/org/apache/sshd/common/util/security/super-secret-passphrase-RSA-AES-128-key.pub
----------------------------------------------------------------------
diff --git 
a/sshd-common/src/test/resources/org/apache/sshd/common/util/security/super-secret-passphrase-RSA-AES-128-key.pub
 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/super-secret-passphrase-RSA-AES-128-key.pub
new file mode 100644
index 0000000..b1d66a6
--- /dev/null
+++ 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/super-secret-passphrase-RSA-AES-128-key.pub
@@ -0,0 +1 @@
+ssh-rsa 
AAAAB3NzaC1yc2EAAAADAQABAAABAQC/oDbs/yYxBdT02ldP6JIrcETJQ+TCml1tHYuo8cIQp0DZCgRZiEZ4foucAT8R/vLK01nnjRzrI42MXiCzyAHb1sPRD0Fsbpa4TFJczPBBRM2mp56airnArQUMmg/ZKlOf82hn+u7Kgn+ljyjYG5FrdoUBju62i0H4+oBfX+pTkd5ruUgqLyPUC3qtNLwjS4PIPAda/pfpsi9UawQ4ommWCCLlwK55NiSrPDBwKNuVWROcQps2NZRxzRLQEiiCEVBEdiUqqUQ+dg2beLV/4cCS860ZZRvCfe+ko8TUBJ7SLtcrvOEYJOKIZDVhcnQKN/wyXCHExSYytUconlFn/9YX
 root@devenv-aas
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-common/src/test/resources/org/apache/sshd/common/util/security/super-secret-passphrase-RSA-AES-192-key
----------------------------------------------------------------------
diff --git 
a/sshd-common/src/test/resources/org/apache/sshd/common/util/security/super-secret-passphrase-RSA-AES-192-key
 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/super-secret-passphrase-RSA-AES-192-key
new file mode 100644
index 0000000..014410d
--- /dev/null
+++ 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/super-secret-passphrase-RSA-AES-192-key
@@ -0,0 +1,30 @@
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: AES-192-CBC,EDF8E3E634D2106991113815A3C1F11F
+
+PZaaf2TCSCRmPZDnUa9Hq+RVGAXRXl8T8rduiqFLKG2Vk192AEo4WRPWhIcJ4ov+
+o6N69V0Fj/NrRyuwjihQQM27gTK2JK8cvDen+WB3mp5wmfFaazHXO21xNGMAp3bm
+obEeO+NHaG0080yxQ4AU2BzPZ1q/ePjDGBiENUsBAHeZvN2fM5uI4Cs9pqko2OM/
+ZiJQkn2QlnpSPm8B7kspqpEV9bn1peVYAMIkp/yES18Kw50kan3R2CqccutVQfdP
+8ddTPPUvWUrDSrW/Ae2qZvRoCXVLDhy1jBKQDMUCrxqDJCo58GR0FWxK4nhCgfeL
+wmxGaKL/3uKDl5otkj93C1qCbEvQCJm5rcwEjkRVfeSPvNNh+WQrJE7uNcJB4kXX
+tF8c5peZI8ymdlFFXlCqjVpdhJh0YKRhpxhWKLA15I1bbwwY4/mwIIMyXOcAQo58
+G7XOwBPw01/lSJ/YTR8y1ubFbWJ6LgoLgSzsOLnBxJJji148UiNDPPbal0FN8vK2
+VsSRBrjrNHSmh+BSA0AStq4QtQpwNMU0qKFLzx5HvoYiaSG+OKtJLZNqTGzDG5aS
+Xe8rNoTQTaZBy5yTY1zTn2lMFngWSt/aYyXfc1BXdYyTOk/eoGHtXxp91nQtCdkG
+4VMMfPlnbW1Q2Cq4ATdcIUPPKLaNVlP2TbloBb1wYjXy8RfFFqZVNOLnxXnXOXUG
+U5SlG44XV5AouwhrlUPrm+0+9jIh4pO4sfG0ldGwabGbUMZ6vvgcU9w1yRcsjycG
+v9yH7CfFKKXjUL5RR2weZVD8vRjQMbfVHRt3P4NFClI6e1gXx92FmT7x97866e+T
+TohyC7uZQq2prBzt8BwxFP0h19+CiTVzofe2I9x+Hce67F+ATnLq9fxOnjZlwK1i
+K95eK+Itc9zSu9tIZGaLvghOExZ24893Ncz5NJ2nn0YptxSi24e8PcECHhSUrjv9
+1VOi8JUmv58bQ5ocuUlHmB2FkpnsYUNjtQx1OT2IRovQJIDCttHhT3QIGoiqoeTw
+sSwyz0gDYzAJtuVkSZxqXJ4LEMozaA3uwxv0TfaQordm+GuGKuV5MsKyEQtITUk5
+5bgQfS0VQqkbq2fRjtd3nIJWCF5otrVulY0tzoTBjGZ2trNj5nz5ZEUTFdRSAaxb
+F+i3Mv8gGPC+2YIo8feDCHnRQ1AALjLon8nKefRsWAOYUozNCtHvu4g7WK6+GcPd
+eiYM7tbSrNCHg+KdB+eWrJCfVCgVHTj8mGb3EiH6oxgx51TmlyuQYJAVseWjQOdm
+IDKiAsNNZijmgMWLsFZG1VvF/446VWIGkSW9eB6bB7aR1Kg4F18VkXdn+SPmaHrC
+NHhNa9dOmcOvlNXIs7jlTjRVEC0pp8DH0AUdPjqlR/F1IHb7uFyqlza8Cqb7PZJs
+x+9GbSwuyKLKLvMzmsnBtpRT32Srsbx6pWst40gaoOMFxto22vmGxz4IABGi96V/
+NrrDHtuZ5OaePl7GihKcUCSSVcoFO2jKKNMMHSSVGhxkfir7qGzMe5LZ9/zl+bvW
+vBS0wSPUd+P3mLc0m53mH+g26I479ryX6/2W+GecB1h5p7S7vJMPQjqZAJskogf5
+-----END RSA PRIVATE KEY-----

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-common/src/test/resources/org/apache/sshd/common/util/security/super-secret-passphrase-RSA-AES-192-key.pub
----------------------------------------------------------------------
diff --git 
a/sshd-common/src/test/resources/org/apache/sshd/common/util/security/super-secret-passphrase-RSA-AES-192-key.pub
 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/super-secret-passphrase-RSA-AES-192-key.pub
new file mode 100644
index 0000000..3fda036
--- /dev/null
+++ 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/super-secret-passphrase-RSA-AES-192-key.pub
@@ -0,0 +1 @@
+ssh-rsa 
AAAAB3NzaC1yc2EAAAADAQABAAABAQCutvykV6G6t4JlLhlJOQKknSB++PXLTtuSjXaH77hUUEl/yc9VbEsfOz1NySBRQDWT0sgRZ1D2YAxaIvK9+0wZPnRNO1ptDrwj650Gflh8vKkEQOlHH7ISTxQTHtyHGeXfm3Bl+qqxTMPG5gcxxkKINMvKAkNYBnOyVX1OXUvqtM1jx6THlfWPQ9yFuVmZDVj1W5VItxjG293RejbjN1EjhhGRBiqwczcIPgPiMDfR0+xFNEQt6YD4k9TFEkLmIfCn+fcqKJhP/z99bRosMHtkRwfX/Rco+G9dRwe1sHvVH7ETeS7v3vl3WoM58AlpYYGUIXsxozRdGE93AmTkaSIj
 SecurityUtilsTest
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-common/src/test/resources/org/apache/sshd/common/util/security/super-secret-passphrase-RSA-AES-256-key
----------------------------------------------------------------------
diff --git 
a/sshd-common/src/test/resources/org/apache/sshd/common/util/security/super-secret-passphrase-RSA-AES-256-key
 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/super-secret-passphrase-RSA-AES-256-key
new file mode 100644
index 0000000..26b699e
--- /dev/null
+++ 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/super-secret-passphrase-RSA-AES-256-key
@@ -0,0 +1,30 @@
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: AES-256-CBC,4FF564F3E05187BEDEDA0529D44EE13E
+
+z7KGBVkxJzNS1Z8vMurcYmHhlbxnUYHry87VgzV38UkwsLSo5FIPNUaxvLPeD3Im
+YW4hQ/1Z+3onSwTgaUqxih6YK+fHS0RZD5R4HjOWaERCPZa5/oDciLrjOU3EKkSV
+n84/ezqUn8GlMJYcpB2sURCmnJZ6erHCVSPAhVlsrWPO9uZHx8BpaclqsvC4Gq7a
+C4liGjDNsFvVO998eDIDLmHeO+qGnyeQK+pu3/+Ausvd9QjUf4L3T+Lu+Cgr0w59
+tB3TxeGxPel9Av88VYIhCddIEvRyMcN8lzLrrYrsLNPMmaF1x2uNDORJCTlEjvLw
+QG6zugofiUVdZdsWRPFmM8DbujeoUHkPkwImXedhiKz1Tp0Rz6gqGx6tzsqEe0kD
+eS2e0Ibj41fFxpkQlaG/xDliUvntkoQ6v7ZKbXQrsBP4hyoMcjeUMhWL+5shkJEV
+RzvZOl7WKoovFnf3glLdiDFqlfLK5BhBJckLmdmnVvsD1HYeKqSDrx+r3hUF3yZ5
+Obxxk++QTC1qHhnyAwqW7Y2owq81pmOhgxKqh/4OoxYV0trIgzI47+5hKsp12Van
+7qBCfTtXv4IlBKaKARTroQ2sDPAi1B2j8mU5lrGm81BzsLSqh1IJjOMsccWNfjMS
+jQMKvcQN94y7AvxcBDGVn9FZftNWs9/ZwitRCFfrz/n0u6hLDQBbH6muDffo4ZhF
+ZiH23W743N/ZASC/kA7LZ3pmH6TNl2Zf1gP+tTrfXu17BRDJYi8VqHBcuck/M4Ox
+qOpP4mK2B/aAVmTkty67+QJerIwsW+h8LsjkQTnXGoneobsx2nL8OvJtPHkOUo4b
+1zFyFvQK+V8DWWAml4Y8V+4NCgrybqqK11ApRl7FfaOyCMgZ+AvqzjK3E5s1gsaf
+AaxORV0iDE0Y8nhq9EEhDNTr5Yi6FeHuRmVsack1AQqYn1U64k21x4ZEmDjslq9t
+WKizqG6jz6xtRtsypr0oCBYirt8p5qDmeO58MdES6A+nkOZC0ysyhizpDWdj01rQ
+6w3el0t/wUh1lBC3UCTeD7Vz20B1rAs5AlbdFmOUGHoH2Hjty1DQVZ+Fl5/K9AQi
+yaVR07IDE45i9rvl7DThRHT6Qd0KAb7bIo+Xlz/xKUgA0UVLkpfGtgDNi1DSTsBQ
+m6xlvR9M3tmMwnHlOEfX8YAGIQR9JLiImUtypjXnp6IdxCn682UIWC9XakqMFbzS
+Hm4Y0VBHYPisByl7PuavEP69pgYVdt1PqFFOc3xL42QVihYsM9huw1j4rlP7/jXB
+zJyH6yuqZHV7BYmurBByxRCe4joN24D6HYWTLKhPjgIG++n/IZ+PO7s0khrTh3Pl
+L3bOujyLtr88w6PPhBOCVDPgmJEC6lIGC8zhh+S9Knewr50PsvOoQVKGDTSPO+G7
+NNa/ugN9/eTeO2ru2y6HuahWrf2seKrTQB8JVYP0SZkOe4zVdMRR5M559iLIdh0e
+U/hrj6v/dYVbIkmSWdhtxx0jXbM2VlWTeQQjUYzeVumVhZ1pk2P0LeHrSWhHa5h2
+hadw69Ht0hRTbljZ1MHjK9BbQI1Ph+YBuDr0aPVBf2ePYFvPObw2Mik7ctiDlmQT
+-----END RSA PRIVATE KEY-----

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-common/src/test/resources/org/apache/sshd/common/util/security/super-secret-passphrase-RSA-AES-256-key.pub
----------------------------------------------------------------------
diff --git 
a/sshd-common/src/test/resources/org/apache/sshd/common/util/security/super-secret-passphrase-RSA-AES-256-key.pub
 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/super-secret-passphrase-RSA-AES-256-key.pub
new file mode 100644
index 0000000..6a3a0ac
--- /dev/null
+++ 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/super-secret-passphrase-RSA-AES-256-key.pub
@@ -0,0 +1 @@
+ssh-rsa 
AAAAB3NzaC1yc2EAAAADAQABAAABAQDNUSajd7RzgqvQ2Q2em3CFA4Fh2f8YJkzJTPrcn9L9SFZnent2rABlVVr216jh3hAjhRFEkRhsoWUxUB7UYN6Ox/hGXrfCtD9wB0QbpOjNb0tnSovl3e+LfnWO5mpaRAb9croiuKVwQXuiwLNOQqs5C2wvLJhc77U4myuvFycYQ9Gh9g12g05Q8Qs+Du6hFSV1n1ZDMTtiVYknhe2gCLmBh1ghpaGeG3eWpd8EXumTrpwrylb1hJtj4yo748dXFa/YUJpqzCNyoA+0aY+v0MwgxZcS6zWt5VQ3yqRi4YrXX7vvhz80rKmJQlEhvM9rVKAwKc/qkJdTWlU+v0+/zY7/
 hello@world
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-common/src/test/resources/org/apache/sshd/common/util/security/super-secret-passphrase-RSA-DES-EDE3-key
----------------------------------------------------------------------
diff --git 
a/sshd-common/src/test/resources/org/apache/sshd/common/util/security/super-secret-passphrase-RSA-DES-EDE3-key
 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/super-secret-passphrase-RSA-DES-EDE3-key
new file mode 100644
index 0000000..e6f6156
--- /dev/null
+++ 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/super-secret-passphrase-RSA-DES-EDE3-key
@@ -0,0 +1,30 @@
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: DES-EDE3-CBC,7DD956370CB0B83E
+
+oTBNWVUGIKQ3LX/bIE+upuTtiVSWQ9ooTxdNJRIpGsq6oTevtxgkuIF9oO+ShZJq
+zf/mTQPtAyRHSX8JsTKw9GZhd5w7c07V3wfzx689RHFCZDW1DIl67KvwyhRwfRtY
+HXZGYPW/XmOgh3Gw31csmLlJd42r8d+7MRIfmo25SO5Sy67mNccRJikdbYa/HH50
+yMVaf7o73tLLIS3WNnhaKjf9hRsSW370aICk3hfS/NMriae0xAMpqpYQmGkn9Zhh
+zTg+Kjo0FiEZEnMNKZQRRWx7VsoQRfrebOZq3LF7tfEnJcKneJ+grvQp0FpkEMzN
+JeiaEwtoIrXRU5KENQbEnXqF2Mpai6ejh5lVflcHqI01lwWGWkwxnNpxgMbWCKuB
+Unad3fQQLFQU67B8jQpES2AQVXO7UaaDHNtATftC2gFpBktlkSurT/KZBT4bVfS7
+z3K9gFB/lYrji2ef+xuzbLmq+eja9OlZIVxH7RTxODkyrxeNhtEUXJgezOB64Cny
+YFrsDPcR8rSRc5SjMMuAy2dSkyndSp3m2YmtVFHibPrX18K2lblRkiuVDci0EX4p
+1XzaCJ9mhdtMedpIzFdwgCOt/M8OBw9g02qgOK1uBu37tXdACNxhX/wrFPCtbJjD
+yBwnBbXoeca8ZF45uw1egKlHaY2d7kTsH+bdx04bTo4Xq0+lXMALxxkfwTOt27xL
+JQp15AFm6ZAshVt7hxCtm512HoSkkFYMPUPawH9HVZE6f4sbNBlbqgCmYhD5HPMN
+Kd3ssQWTXwiOSd+k8HuBUBhtdZsgdpSdR5xH9wEymS9fcGmrf2yLuRlxhvoqo44X
++go5CqLoAKoUtVJdtZrkmMdF1OxufDBZ16+fKN8NNE8vQv8Kt221yg/mmDy3t6mh
+axynBSxk1Qtjz2H9iZJ5nglF2Hceb1FQXHGlLCNv+cwA9vRC0pQJ25fPHVhvxhmW
+gnLJ5OY+zXENUWvMIeAGCSfjSVtnSVWAfdJ7kgHZc/wCWO6rYAwlfsPDq8ZdQ8Za
+4Hm6sUnkHHtagvJZahjdSPoziE68FiHqFU3PdmuQsZpCFOzloxahWImgx0UM9n8k
+2DlRPK6bMBCjpUrb5D0jp8YU2KDepw2D4O7RaFLh47w78oxrO1gABY23M4JQfUiP
+lzsfsGy9OI1twCcsJhFOX95nL9w+hlvFALTkY5UT3dB3eWP3k2nE12UxQhE3hVZ9
+vI100y2m/FUnKkeGYkvhRw9yD611jjYuRYGL3LsKNaOK97Ses+vAB0LNOss+12vz
+7bYvDUVJ5csfpPGqxyzYwIbytDwUcvxTLxRlgQNb2YMqzSmVodO0lyXdNF1/KUFF
+nIdlh0KSe4BALzYhya9V71MngLHFifp/erS4gdnFbbBCmZTEZhziBnqimRPoN5Co
+K+22blcRkDytiL+NTRybvfOYvy6Ulb4OK/So+Y5r1B5KGhJqFWSeo0g2ftAB6r1h
+HSbfoxYO/xCMQy7aNXuJI0giVRThcQsQapTO2DMeymt/0nj8qEPF0dubtbmgJ4dd
+aZuYaY1Qxk0umVfq9zHsRTbRb+16TuZtp+7brDDRpRe6lSzdbTNShg==
+-----END RSA PRIVATE KEY-----

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-common/src/test/resources/org/apache/sshd/common/util/security/super-secret-passphrase-RSA-DES-EDE3-key.pub
----------------------------------------------------------------------
diff --git 
a/sshd-common/src/test/resources/org/apache/sshd/common/util/security/super-secret-passphrase-RSA-DES-EDE3-key.pub
 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/super-secret-passphrase-RSA-DES-EDE3-key.pub
new file mode 100644
index 0000000..f5c8c85
--- /dev/null
+++ 
b/sshd-common/src/test/resources/org/apache/sshd/common/util/security/super-secret-passphrase-RSA-DES-EDE3-key.pub
@@ -0,0 +1 @@
+ssh-rsa 
AAAAB3NzaC1yc2EAAAABIwAAAQEAxvz5QWkCxznYbBOUbMFsCf+PJLauyZTcPsHLPZ/lHYH7EIa9s8NWbfFyTJXVwcuJiDCoRZ8d7KBahAuNjGeXsuJQuCqlLLl6GKoFnI0hnbKbFHDDSub+s3WvLdaTeF22qlTmlPb3RFYUO0cWk9MVpVNM6ev33CUGv4Dmbr0dZNkgUOkcPHiQpxKizsED+EWSVh1Ptx8AEDObNyFHJljbHUeJrHTIlcaekJheRXQWLvsJqKD0TN+Dkvi044MDWG9VjVyNsyXBCz1Vk9VaK1dNkkH+RDGTsFvFj7IPwBS/FliEVRrKOUgjMrmKUPbAm8IblIsno+HLZ60OB6X6hu2iHw==
 lgoldstein@LGOLDSTEIN-WIN7

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-contrib/pom.xml
----------------------------------------------------------------------
diff --git a/sshd-contrib/pom.xml b/sshd-contrib/pom.xml
index 672069b..ac00587 100644
--- a/sshd-contrib/pom.xml
+++ b/sshd-contrib/pom.xml
@@ -67,7 +67,7 @@
             <artifactId>eddsa</artifactId>
             <optional>true</optional>
         </dependency>
-
+            <!-- Test dependencies -->
         <dependency>
             <groupId>org.apache.sshd</groupId>
             <artifactId>sshd-core</artifactId>
@@ -76,6 +76,13 @@
             <scope>test</scope>
         </dependency>
         <dependency>
+            <groupId>org.apache.sshd</groupId>
+            <artifactId>sshd-common</artifactId>
+            <version>${project.version}</version>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>jcl-over-slf4j</artifactId>
             <scope>test</scope>

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-contrib/src/test/java/org/apache/sshd/server/scp/SimpleAccessControlScpEventListenerTest.java
----------------------------------------------------------------------
diff --git 
a/sshd-contrib/src/test/java/org/apache/sshd/server/scp/SimpleAccessControlScpEventListenerTest.java
 
b/sshd-contrib/src/test/java/org/apache/sshd/server/scp/SimpleAccessControlScpEventListenerTest.java
index 4312dda..ecc9678 100644
--- 
a/sshd-contrib/src/test/java/org/apache/sshd/server/scp/SimpleAccessControlScpEventListenerTest.java
+++ 
b/sshd-contrib/src/test/java/org/apache/sshd/server/scp/SimpleAccessControlScpEventListenerTest.java
@@ -36,7 +36,7 @@ import org.apache.sshd.common.scp.ScpException;
 import org.apache.sshd.common.scp.ScpHelper;
 import org.apache.sshd.server.SshServer;
 import org.apache.sshd.util.test.BaseTestSupport;
-import org.apache.sshd.util.test.Utils;
+import org.apache.sshd.util.test.CommonTestSupportUtils;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.FixMethodOrder;
@@ -94,12 +94,12 @@ public class SimpleAccessControlScpEventListenerTest 
extends BaseTestSupport {
                 ScpClient scp = creator.createScpClient(session);
                 Path targetPath = detectTargetFolder();
                 Path parentPath = targetPath.getParent();
-                Path scpRoot = Utils.resolve(targetPath, 
ScpHelper.SCP_COMMAND_PREFIX, getClass().getSimpleName(), getCurrentTestName());
-                Utils.deleteRecursive(scpRoot);
+                Path scpRoot = CommonTestSupportUtils.resolve(targetPath, 
ScpHelper.SCP_COMMAND_PREFIX, getClass().getSimpleName(), getCurrentTestName());
+                CommonTestSupportUtils.deleteRecursive(scpRoot);
 
                 Path remoteDir = 
assertHierarchyTargetFolderExists(scpRoot.resolve("remote"));
                 Path remoteFile = remoteDir.resolve("file.txt");
-                String remotePath = 
Utils.resolveRelativeRemotePath(parentPath, remoteFile);
+                String remotePath = 
CommonTestSupportUtils.resolveRelativeRemotePath(parentPath, remoteFile);
                 byte[] data = (getClass().getName() + "#" + 
getCurrentTestName()).getBytes(StandardCharsets.UTF_8);
                 Files.write(remoteFile, data);
                 byte[] downloaded = scp.downloadBytes(remotePath);

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-contrib/src/test/java/org/apache/sshd/server/subsystem/sftp/SimpleAccessControlSftpEventListenerTest.java
----------------------------------------------------------------------
diff --git 
a/sshd-contrib/src/test/java/org/apache/sshd/server/subsystem/sftp/SimpleAccessControlSftpEventListenerTest.java
 
b/sshd-contrib/src/test/java/org/apache/sshd/server/subsystem/sftp/SimpleAccessControlSftpEventListenerTest.java
index ddbe162..f824811 100644
--- 
a/sshd-contrib/src/test/java/org/apache/sshd/server/subsystem/sftp/SimpleAccessControlSftpEventListenerTest.java
+++ 
b/sshd-contrib/src/test/java/org/apache/sshd/server/subsystem/sftp/SimpleAccessControlSftpEventListenerTest.java
@@ -38,7 +38,7 @@ import org.apache.sshd.common.subsystem.sftp.SftpException;
 import org.apache.sshd.server.SshServer;
 import org.apache.sshd.server.scp.ScpCommandFactory;
 import org.apache.sshd.util.test.BaseTestSupport;
-import org.apache.sshd.util.test.Utils;
+import org.apache.sshd.util.test.CommonTestSupportUtils;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.FixMethodOrder;
@@ -89,7 +89,7 @@ public class SimpleAccessControlSftpEventListenerTest extends 
BaseTestSupport {
     public void testReadOnlyFileAccess() throws Exception {
         Path targetPath = detectTargetFolder();
         Path parentPath = targetPath.getParent();
-        Path lclSftp = Utils.resolve(targetPath, 
SftpConstants.SFTP_SUBSYSTEM_NAME, getClass().getSimpleName(), 
getCurrentTestName());
+        Path lclSftp = CommonTestSupportUtils.resolve(targetPath, 
SftpConstants.SFTP_SUBSYSTEM_NAME, getClass().getSimpleName(), 
getCurrentTestName());
         Path testFile = 
assertHierarchyTargetFolderExists(lclSftp).resolve("file.txt");
         byte[] data = (getClass().getName() + "#" + 
getCurrentTestName()).getBytes(StandardCharsets.UTF_8);
         Files.deleteIfExists(testFile);
@@ -103,7 +103,7 @@ public class SimpleAccessControlSftpEventListenerTest 
extends BaseTestSupport {
                 session.auth().verify(5L, TimeUnit.SECONDS);
 
                 try (SftpClient sftp = 
SftpClientFactory.instance().createSftpClient(session)) {
-                    String file = Utils.resolveRelativeRemotePath(parentPath, 
testFile);
+                    String file = 
CommonTestSupportUtils.resolveRelativeRemotePath(parentPath, testFile);
                     try (CloseableHandle handle = sftp.open(file, 
OpenMode.Read)) {
                         byte[] actual = new byte[data.length];
                         int readLen = sftp.read(handle, 0L, actual);
@@ -139,7 +139,7 @@ public class SimpleAccessControlSftpEventListenerTest 
extends BaseTestSupport {
     public void testReadOnlyDirectoryAccess() throws Exception {
         Path targetPath = detectTargetFolder();
         Path parentPath = targetPath.getParent();
-        Path lclSftp = Utils.resolve(targetPath, 
SftpConstants.SFTP_SUBSYSTEM_NAME, getClass().getSimpleName(), 
getCurrentTestName());
+        Path lclSftp = CommonTestSupportUtils.resolve(targetPath, 
SftpConstants.SFTP_SUBSYSTEM_NAME, getClass().getSimpleName(), 
getCurrentTestName());
         Path testFile = 
assertHierarchyTargetFolderExists(lclSftp).resolve("file.txt");
         byte[] data = (getClass().getName() + "#" + 
getCurrentTestName()).getBytes(StandardCharsets.UTF_8);
         Files.deleteIfExists(testFile);
@@ -153,12 +153,12 @@ public class SimpleAccessControlSftpEventListenerTest 
extends BaseTestSupport {
                 session.auth().verify(5L, TimeUnit.SECONDS);
 
                 try (SftpClient sftp = 
SftpClientFactory.instance().createSftpClient(session)) {
-                    String folder = 
Utils.resolveRelativeRemotePath(parentPath, targetPath);
+                    String folder = 
CommonTestSupportUtils.resolveRelativeRemotePath(parentPath, targetPath);
                     for (SftpClient.DirEntry entry : sftp.readDir(folder)) {
                         assertNotNull("No entry", entry);
                     }
 
-                    String file = Utils.resolveRelativeRemotePath(parentPath, 
testFile);
+                    String file = 
CommonTestSupportUtils.resolveRelativeRemotePath(parentPath, testFile);
                     try {
                         sftp.remove(file);
                         fail("Unexpected file remove success");

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/pom.xml
----------------------------------------------------------------------
diff --git a/sshd-core/pom.xml b/sshd-core/pom.xml
index 0bcab83..c81d75e 100644
--- a/sshd-core/pom.xml
+++ b/sshd-core/pom.xml
@@ -39,9 +39,11 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
+            <groupId>org.apache.sshd</groupId>
+            <artifactId>sshd-common</artifactId>
+            <version>${project.version}</version>
         </dependency>
+
         <dependency>
             <groupId>tomcat</groupId>
             <artifactId>tomcat-apr</artifactId>
@@ -68,6 +70,14 @@
 
             <!-- test dependencies -->
         <dependency>
+            <groupId>org.apache.sshd</groupId>
+            <artifactId>sshd-common</artifactId>
+            <version>${project.version}</version>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
             <groupId>org.apache.mina</groupId>
             <artifactId>mina-core</artifactId>
             <scope>test</scope>
@@ -117,11 +127,6 @@
             <artifactId>ganymed-ssh2</artifactId>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>org.apache.servicemix.bundles</groupId>
-            
<artifactId>org.apache.servicemix.bundles.not-yet-commons-ssl</artifactId>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
 
     <build>

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/main/filtered-resources/org/apache/sshd/sshd-version.properties
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/filtered-resources/org/apache/sshd/sshd-version.properties 
b/sshd-core/src/main/filtered-resources/org/apache/sshd/sshd-version.properties
deleted file mode 100644
index 2c32c28..0000000
--- 
a/sshd-core/src/main/filtered-resources/org/apache/sshd/sshd-version.properties
+++ /dev/null
@@ -1,23 +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.
-##
-
-groupId=${pom.groupId}
-artifactId=${pom.artifactId}
-version=${pom.version}
-sshd-version=${pom.artifactId}-${pom.version}

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/main/java/org/apache/sshd/client/SshClient.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/SshClient.java 
b/sshd-core/src/main/java/org/apache/sshd/client/SshClient.java
index 533cae5..76f2350 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/SshClient.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/SshClient.java
@@ -25,6 +25,7 @@ import java.net.InetSocketAddress;
 import java.net.SocketAddress;
 import java.net.SocketTimeoutException;
 import java.nio.file.LinkOption;
+import java.nio.file.Path;
 import java.security.GeneralSecurityException;
 import java.security.KeyPair;
 import java.util.ArrayList;
@@ -47,6 +48,7 @@ import 
org.apache.sshd.client.auth.password.UserAuthPasswordFactory;
 import org.apache.sshd.client.auth.pubkey.UserAuthPublicKeyFactory;
 import org.apache.sshd.client.config.hosts.HostConfigEntry;
 import org.apache.sshd.client.config.hosts.HostConfigEntryResolver;
+import org.apache.sshd.client.config.keys.ClientIdentity;
 import org.apache.sshd.client.config.keys.ClientIdentityLoader;
 import org.apache.sshd.client.config.keys.DefaultClientIdentitiesWatcher;
 import org.apache.sshd.client.future.ConnectFuture;
@@ -68,6 +70,7 @@ import org.apache.sshd.common.ServiceFactory;
 import org.apache.sshd.common.channel.Channel;
 import org.apache.sshd.common.config.keys.FilePasswordProvider;
 import org.apache.sshd.common.config.keys.KeyUtils;
+import org.apache.sshd.common.config.keys.PublicKeyEntry;
 import org.apache.sshd.common.future.SshFutureListener;
 import org.apache.sshd.common.helpers.AbstractFactoryManager;
 import org.apache.sshd.common.io.IoConnectFuture;
@@ -769,4 +772,61 @@ public class SshClient extends AbstractFactoryManager 
implements ClientFactoryMa
     public static SshClient setUpDefaultClient() {
         return ClientBuilder.builder().build();
     }
+
+    /**
+     * @param <C>           The generic client class
+     * @param client        The {@link SshClient} to updated
+     * @param strict        If {@code true} then files that do not have the 
required
+     *                      access rights are excluded from consideration
+     * @param supportedOnly If {@code true} then ignore identities that are not
+     *                      supported internally
+     * @param provider      A {@link FilePasswordProvider} - may be {@code 
null}
+     *                      if the loaded keys are <U>guaranteed</U> not to be 
encrypted. The argument
+     *                      to {@link 
FilePasswordProvider#getPassword(String)} is the path of the
+     *                      file whose key is to be loaded
+     * @param options       The {@link LinkOption}s to apply when checking
+     *                      for existence
+     * @return The updated <tt>client</tt> instance - provided a non-{@code 
null}
+     * {@link KeyPairProvider} was generated
+     * @throws IOException              If failed to access the file system
+     * @throws GeneralSecurityException If failed to load the keys
+     * @see #setKeyPairProvider(SshClient, Path, boolean, boolean, 
FilePasswordProvider, LinkOption...)
+     */
+    public static <C extends SshClient> C setKeyPairProvider(
+            C client, boolean strict, boolean supportedOnly, 
FilePasswordProvider provider, LinkOption... options)
+            throws IOException, GeneralSecurityException {
+        return setKeyPairProvider(client, 
PublicKeyEntry.getDefaultKeysFolderPath(), strict, supportedOnly, provider, 
options);
+    }
+
+    /**
+     * @param <C>           The generic client class
+     * @param client        The {@link SshClient} to updated
+     * @param dir           The folder to scan for the built-in identities
+     * @param strict        If {@code true} then files that do not have the 
required
+     *                      access rights are excluded from consideration
+     * @param supportedOnly If {@code true} then ignore identities that are not
+     *                      supported internally
+     * @param provider      A {@link FilePasswordProvider} - may be {@code 
null}
+     *                      if the loaded keys are <U>guaranteed</U> not to be 
encrypted. The argument
+     *                      to {@link 
FilePasswordProvider#getPassword(String)} is the path of the
+     *                      file whose key is to be loaded
+     * @param options       The {@link LinkOption}s to apply when checking
+     *                      for existence
+     * @return The updated <tt>client</tt> instance - provided a non-{@code 
null}
+     * {@link KeyPairProvider} was generated
+     * @throws IOException              If failed to access the file system
+     * @throws GeneralSecurityException If failed to load the keys
+     * @see #loadDefaultKeyPairProvider(Path, boolean, boolean, 
FilePasswordProvider, LinkOption...)
+     */
+    public static <C extends SshClient> C setKeyPairProvider(
+            C client, Path dir, boolean strict, boolean supportedOnly, 
FilePasswordProvider provider, LinkOption... options)
+            throws IOException, GeneralSecurityException {
+        KeyPairProvider kpp =
+            ClientIdentity.loadDefaultKeyPairProvider(dir, strict, 
supportedOnly, provider, options);
+        if (kpp != null) {
+            client.setKeyPairProvider(kpp);
+        }
+
+        return client;
+    }
 }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/main/java/org/apache/sshd/client/auth/AuthenticationIdentitiesProvider.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/client/auth/AuthenticationIdentitiesProvider.java
 
b/sshd-core/src/main/java/org/apache/sshd/client/auth/AuthenticationIdentitiesProvider.java
deleted file mode 100644
index cfd1f85..0000000
--- 
a/sshd-core/src/main/java/org/apache/sshd/client/auth/AuthenticationIdentitiesProvider.java
+++ /dev/null
@@ -1,125 +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.client.auth;
-
-import java.security.KeyPair;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.apache.sshd.client.auth.password.PasswordIdentityProvider;
-import org.apache.sshd.common.config.keys.KeyUtils;
-import org.apache.sshd.common.keyprovider.KeyIdentityProvider;
-import org.apache.sshd.common.util.GenericUtils;
-
-/**
- * @author <a href="mailto:[email protected]";>Apache MINA SSHD Project</a>
- */
-public interface AuthenticationIdentitiesProvider extends KeyIdentityProvider, 
PasswordIdentityProvider {
-
-    /**
-     * Compares 2 password identities - returns zero ONLY if <U>both</U> 
compared
-     * objects are {@link String}s and equal to each other
-     */
-    Comparator<Object> PASSWORD_IDENTITY_COMPARATOR = (o1, o2) -> {
-        if (!(o1 instanceof String) || !(o2 instanceof String)) {
-            return -1;
-        } else {
-            return ((String) o1).compareTo((String) o2);
-        }
-    };
-
-    /**
-     * Compares 2 {@link KeyPair} identities - returns zero ONLY if 
<U>both</U> compared
-     * objects are {@link KeyPair}s and equal to each other
-     */
-    Comparator<Object> KEYPAIR_IDENTITY_COMPARATOR = (o1, o2) -> {
-        if ((!(o1 instanceof KeyPair)) || (!(o2 instanceof KeyPair))) {
-            return -1;
-        } else if (KeyUtils.compareKeyPairs((KeyPair) o1, (KeyPair) o2)) {
-            return 0;
-        } else {
-            return 1;
-        }
-    };
-
-    /**
-     * @return All the currently available identities - passwords, keys, etc...
-     */
-    Iterable<?> loadIdentities();
-
-    static int findIdentityIndex(List<?> identities, Comparator<? super 
Object> comp, Object target) {
-        for (int index = 0; index < identities.size(); index++) {
-            Object value = identities.get(index);
-            if (comp.compare(value, target) == 0) {
-                return index;
-            }
-        }
-
-        return -1;
-    }
-
-    /**
-     * @param identities The {@link Iterable} identities - OK if {@code 
null}/empty
-     * @return An {@link AuthenticationIdentitiesProvider} wrapping the 
identities
-     */
-    static AuthenticationIdentitiesProvider wrapIdentities(Iterable<?> 
identities) {
-        return new AuthenticationIdentitiesProvider() {
-            @Override
-            public Iterable<KeyPair> loadKeys() {
-                return selectIdentities(KeyPair.class);
-            }
-
-            @Override
-            public Iterable<String> loadPasswords() {
-                return selectIdentities(String.class);
-            }
-
-            @Override
-            public Iterable<?> loadIdentities() {
-                return selectIdentities(Object.class);
-            }
-
-            // NOTE: returns a NEW Collection on every call so that the 
original
-            //      identities remain unchanged
-            private <T> Collection<T> selectIdentities(Class<T> type) {
-                Collection<T> matches = null;
-                for (Iterator<?> iter = GenericUtils.iteratorOf(identities); 
iter.hasNext();) {
-                    Object o = iter.next();
-                    Class<?> t = o.getClass();
-                    if (!type.isAssignableFrom(t)) {
-                        continue;
-                    }
-
-                    if (matches == null) {
-                        matches = new LinkedList<>();
-                    }
-
-                    matches.add(type.cast(o));
-                }
-
-                return (matches == null) ? Collections.<T>emptyList() : 
matches;
-            }
-        };
-    }
-}

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/main/java/org/apache/sshd/client/auth/hostbased/HostKeyIdentityProvider.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/client/auth/hostbased/HostKeyIdentityProvider.java
 
b/sshd-core/src/main/java/org/apache/sshd/client/auth/hostbased/HostKeyIdentityProvider.java
deleted file mode 100644
index 81c26ca..0000000
--- 
a/sshd-core/src/main/java/org/apache/sshd/client/auth/hostbased/HostKeyIdentityProvider.java
+++ /dev/null
@@ -1,53 +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.client.auth.hostbased;
-
-import java.security.KeyPair;
-import java.security.cert.X509Certificate;
-import java.util.AbstractMap.SimpleImmutableEntry;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.sshd.common.util.GenericUtils;
-
-/**
- * @author <a href="mailto:[email protected]";>Apache MINA SSHD Project</a>
- */
-@FunctionalInterface
-public interface HostKeyIdentityProvider {
-    /**
-     * @return The host keys as a {@link java.util.Map.Entry} of key + 
certificates (which can be {@code null}/empty)
-     */
-    Iterable<? extends Map.Entry<KeyPair, List<X509Certificate>>> 
loadHostKeys();
-
-    static Iterator<? extends Map.Entry<KeyPair, List<X509Certificate>>> 
iteratorOf(HostKeyIdentityProvider provider) {
-        return GenericUtils.iteratorOf((provider == null) ? null : 
provider.loadHostKeys());
-    }
-
-    static HostKeyIdentityProvider wrap(KeyPair... pairs) {
-        return wrap(GenericUtils.asList(pairs));
-    }
-
-    static HostKeyIdentityProvider wrap(Iterable<? extends KeyPair> pairs) {
-        return () -> GenericUtils.wrapIterable(pairs, kp -> new 
SimpleImmutableEntry<>(kp, Collections.<X509Certificate>emptyList()));
-    }
-}

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/main/java/org/apache/sshd/client/auth/keyboard/UserAuthKeyboardInteractive.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/client/auth/keyboard/UserAuthKeyboardInteractive.java
 
b/sshd-core/src/main/java/org/apache/sshd/client/auth/keyboard/UserAuthKeyboardInteractive.java
index d765b11..479e5bc 100644
--- 
a/sshd-core/src/main/java/org/apache/sshd/client/auth/keyboard/UserAuthKeyboardInteractive.java
+++ 
b/sshd-core/src/main/java/org/apache/sshd/client/auth/keyboard/UserAuthKeyboardInteractive.java
@@ -25,7 +25,6 @@ import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.sshd.client.ClientAuthenticationManager;
 import org.apache.sshd.client.auth.AbstractUserAuth;
-import org.apache.sshd.client.auth.password.PasswordIdentityProvider;
 import org.apache.sshd.client.session.ClientSession;
 import org.apache.sshd.common.RuntimeSshException;
 import org.apache.sshd.common.SshConstants;
@@ -87,7 +86,7 @@ public class UserAuthKeyboardInteractive extends 
AbstractUserAuth {
     @Override
     public void init(ClientSession session, String service) throws Exception {
         super.init(session, service);
-        passwords = PasswordIdentityProvider.iteratorOf(session);
+        passwords = ClientSession.passwordIteratorOf(session);
         maxTrials = 
session.getIntProperty(ClientAuthenticationManager.PASSWORD_PROMPTS, 
ClientAuthenticationManager.DEFAULT_PASSWORD_PROMPTS);
         ValidateUtils.checkTrue(maxTrials > 0, "Non-positive max. trials: %d", 
maxTrials);
     }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/main/java/org/apache/sshd/client/auth/password/PasswordIdentityProvider.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/client/auth/password/PasswordIdentityProvider.java
 
b/sshd-core/src/main/java/org/apache/sshd/client/auth/password/PasswordIdentityProvider.java
deleted file mode 100644
index 6af6696..0000000
--- 
a/sshd-core/src/main/java/org/apache/sshd/client/auth/password/PasswordIdentityProvider.java
+++ /dev/null
@@ -1,183 +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.client.auth.password;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.function.Function;
-import java.util.function.Supplier;
-
-import org.apache.sshd.client.session.ClientSession;
-import org.apache.sshd.common.util.GenericUtils;
-
-/**
- * @author <a href="mailto:[email protected]";>Apache MINA SSHD Project</a>
- */
-@FunctionalInterface
-public interface PasswordIdentityProvider {
-
-    /**
-     * An &quot;empty&quot implementation of {@link PasswordIdentityProvider} 
that returns
-     * and empty group of passwords
-     */
-    PasswordIdentityProvider EMPTY_PASSWORDS_PROVIDER = new 
PasswordIdentityProvider() {
-        @Override
-        public Iterable<String> loadPasswords() {
-            return Collections.emptyList();
-        }
-
-        @Override
-        public String toString() {
-            return "EMPTY";
-        }
-    };
-
-    /**
-     * Invokes {@link PasswordIdentityProvider#loadPasswords()} and returns 
the result.
-     * Ignores {@code null} providers (i.e., returns an empty iterable 
instance)
-     */
-    Function<PasswordIdentityProvider, Iterable<String>> LOADER = p ->
-            (p == null) ? Collections.emptyList() : p.loadPasswords();
-
-    /**
-     * @return The currently available passwords - ignored if {@code null}
-     */
-    Iterable<String> loadPasswords();
-
-    /**
-     * Creates a &quot;unified&quot; {@link Iterator} of passwords out of the 
registered
-     * passwords and the extra available ones as a single iterator of passwords
-     *
-     * @param session The {@link ClientSession} - ignored if {@code null} 
(i.e., empty
-     * iterator returned)
-     * @return The wrapping iterator
-     * @see ClientSession#getRegisteredIdentities()
-     * @see ClientSession#getPasswordIdentityProvider()
-     */
-    static Iterator<String> iteratorOf(ClientSession session) {
-        return (session == null) ? Collections.<String>emptyIterator() : 
iteratorOf(session.getRegisteredIdentities(), 
session.getPasswordIdentityProvider());
-    }
-
-    /**
-     * Creates a &quot;unified&quot; {@link Iterator} of passwords out of 2 
possible
-     * {@link PasswordIdentityProvider}
-     *
-     * @param identities The registered passwords
-     * @param passwords Extra available passwords
-     * @return The wrapping iterator
-     * @see #resolvePasswordIdentityProvider(PasswordIdentityProvider, 
PasswordIdentityProvider)
-     */
-    static Iterator<String> iteratorOf(PasswordIdentityProvider identities, 
PasswordIdentityProvider passwords) {
-        return iteratorOf(resolvePasswordIdentityProvider(identities, 
passwords));
-    }
-
-    /**
-     * Resolves a non-{@code null} iterator of the available passwords
-     *
-     * @param provider The {@link PasswordIdentityProvider} - ignored if 
{@code null} (i.e.,
-     * return an empty iterator)
-     * @return A non-{@code null} iterator - which may be empty if no provider 
or no passwords
-     */
-    static Iterator<String> iteratorOf(PasswordIdentityProvider provider) {
-        return GenericUtils.iteratorOf((provider == null) ? null : 
provider.loadPasswords());
-    }
-
-    /**
-     * <P>Creates a &quot;unified&quot; {@link PasswordIdentityProvider} out 
of 2 possible ones
-     * as follows:</P></BR>
-     * <UL>
-     *      <LI>If both are {@code null} then return {@code null}.</LI>
-     *      <LI>If either one is {@code null} then use the non-{@code null} 
one.</LI>
-     *      <LI>If both are the same instance then use it.</U>
-     *      <LI>Otherwise, returns a wrapper that groups both providers.</LI>
-     * </UL>
-     * @param identities The registered passwords
-     * @param passwords The extra available passwords
-     * @return The resolved provider
-     * @see #multiProvider(PasswordIdentityProvider...)
-     */
-    static PasswordIdentityProvider 
resolvePasswordIdentityProvider(PasswordIdentityProvider identities, 
PasswordIdentityProvider passwords) {
-        if ((passwords == null) || (identities == passwords)) {
-            return identities;
-        } else if (identities == null) {
-            return passwords;
-        } else {
-            return multiProvider(identities, passwords);
-        }
-    }
-
-    /**
-     * Wraps a group of {@link PasswordIdentityProvider} into a single one
-     *
-     * @param providers The providers - ignored if {@code null}/empty (i.e., 
returns
-     * {@link #EMPTY_PASSWORDS_PROVIDER}
-     * @return The wrapping provider
-     * @see #multiProvider(Collection)
-     */
-    static PasswordIdentityProvider multiProvider(PasswordIdentityProvider... 
providers) {
-        return multiProvider(GenericUtils.asList(providers));
-    }
-
-    /**
-     * Wraps a group of {@link PasswordIdentityProvider} into a single one
-     *
-     * @param providers The providers - ignored if {@code null}/empty (i.e., 
returns
-     * {@link #EMPTY_PASSWORDS_PROVIDER}
-     * @return The wrapping provider
-     */
-    static PasswordIdentityProvider multiProvider(Collection<? extends 
PasswordIdentityProvider> providers) {
-        return GenericUtils.isEmpty(providers) ? EMPTY_PASSWORDS_PROVIDER : 
wrapPasswords(iterableOf(providers));
-    }
-
-    /**
-     * Wraps a group of {@link PasswordIdentityProvider} into an {@link 
Iterable} of their combined passwords
-     *
-     * @param providers The providers - ignored if {@code null}/empty (i.e., 
returns an empty iterable instance)
-     * @return The wrapping iterable
-     */
-    static Iterable<String> iterableOf(Collection<? extends 
PasswordIdentityProvider> providers) {
-        Iterable<Supplier<Iterable<String>>> passwordSuppliers =
-                GenericUtils.<PasswordIdentityProvider, 
Supplier<Iterable<String>>>wrapIterable(providers, p -> p::loadPasswords);
-        return GenericUtils.multiIterableSuppliers(passwordSuppliers);
-    }
-
-    /**
-     * Wraps a group of passwords into a {@link PasswordIdentityProvider}
-     *
-     * @param passwords The passwords - ignored if {@code null}/empty
-     * (i.e., returns {@link #EMPTY_PASSWORDS_PROVIDER})
-     * @return The provider wrapper
-     */
-    static PasswordIdentityProvider wrapPasswords(String... passwords) {
-        return wrapPasswords(GenericUtils.asList(passwords));
-    }
-
-    /**
-     * Wraps a group of passwords into a {@link PasswordIdentityProvider}
-     *
-     * @param passwords The passwords {@link Iterable} - ignored if {@code 
null}
-     * (i.e., returns {@link #EMPTY_PASSWORDS_PROVIDER})
-     * @return The provider wrapper
-     */
-    static PasswordIdentityProvider wrapPasswords(Iterable<String> passwords) {
-        return (passwords == null) ? EMPTY_PASSWORDS_PROVIDER : () -> 
passwords;
-    }
-}

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/main/java/org/apache/sshd/client/auth/password/UserAuthPassword.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/client/auth/password/UserAuthPassword.java
 
b/sshd-core/src/main/java/org/apache/sshd/client/auth/password/UserAuthPassword.java
index 53ec529..6785305 100644
--- 
a/sshd-core/src/main/java/org/apache/sshd/client/auth/password/UserAuthPassword.java
+++ 
b/sshd-core/src/main/java/org/apache/sshd/client/auth/password/UserAuthPassword.java
@@ -48,7 +48,7 @@ public class UserAuthPassword extends AbstractUserAuth {
     @Override
     public void init(ClientSession session, String service) throws Exception {
         super.init(session, service);
-        passwords = PasswordIdentityProvider.iteratorOf(session);
+        passwords = ClientSession.passwordIteratorOf(session);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/main/java/org/apache/sshd/client/auth/pubkey/PublicKeyIdentity.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/client/auth/pubkey/PublicKeyIdentity.java
 
b/sshd-core/src/main/java/org/apache/sshd/client/auth/pubkey/PublicKeyIdentity.java
deleted file mode 100644
index 51444ae..0000000
--- 
a/sshd-core/src/main/java/org/apache/sshd/client/auth/pubkey/PublicKeyIdentity.java
+++ /dev/null
@@ -1,42 +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.client.auth.pubkey;
-
-import java.security.PublicKey;
-
-/**
- * Represents a public key identity
- *
- * @author <a href="mailto:[email protected]";>Apache MINA SSHD Project</a>
- */
-public interface PublicKeyIdentity {
-    /**
-     * @return The {@link PublicKey} identity value
-     */
-    PublicKey getPublicKey();
-
-    /**
-     * Proves the public key identity by signing the given data
-     *
-     * @param data Data to sign
-     * @return Signed data - using the identity
-     * @throws Exception If failed to sign the data
-     */
-    byte[] sign(byte[] data) throws Exception;
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/main/java/org/apache/sshd/client/auth/pubkey/UserAuthPublicKeyIterator.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/client/auth/pubkey/UserAuthPublicKeyIterator.java
 
b/sshd-core/src/main/java/org/apache/sshd/client/auth/pubkey/UserAuthPublicKeyIterator.java
index 202b0a8..02ce1dc 100644
--- 
a/sshd-core/src/main/java/org/apache/sshd/client/auth/pubkey/UserAuthPublicKeyIterator.java
+++ 
b/sshd-core/src/main/java/org/apache/sshd/client/auth/pubkey/UserAuthPublicKeyIterator.java
@@ -70,7 +70,7 @@ public class UserAuthPublicKeyIterator extends 
AbstractKeyPairIterator<PublicKey
             }
         }
 
-        identities.add(Stream.of(KeyIdentityProvider.providerOf(session))
+        identities.add(Stream.of(ClientSession.providerOf(session))
             .map(KeyIdentityProvider::loadKeys)
             .flatMap(GenericUtils::stream)
             .map(kp -> new KeyPairIdentity(signatureFactories, session, kp)));

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/main/java/org/apache/sshd/client/config/SshClientConfigFileReader.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/client/config/SshClientConfigFileReader.java
 
b/sshd-core/src/main/java/org/apache/sshd/client/config/SshClientConfigFileReader.java
index ccd8f26..c205377 100644
--- 
a/sshd-core/src/main/java/org/apache/sshd/client/config/SshClientConfigFileReader.java
+++ 
b/sshd-core/src/main/java/org/apache/sshd/client/config/SshClientConfigFileReader.java
@@ -32,7 +32,8 @@ public final class SshClientConfigFileReader {
         throw new UnsupportedOperationException("No instance allowed");
     }
 
-    public static <C extends SshClient> C configure(C client, PropertyResolver 
props, boolean lenient, boolean ignoreUnsupported) {
+    public static <C extends SshClient> C configure(
+            C client, PropertyResolver props, boolean lenient, boolean 
ignoreUnsupported) {
         SshConfigFileReader.configure((AbstractFactoryManager) client, props, 
lenient, ignoreUnsupported);
         SshConfigFileReader.configureKeyExchanges(client, props, lenient, 
ClientBuilder.DH2KEX, ignoreUnsupported);
         return client;

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/main/java/org/apache/sshd/client/config/hosts/ConfigFileHostEntryResolver.java
----------------------------------------------------------------------
diff --git 
a/sshd-core/src/main/java/org/apache/sshd/client/config/hosts/ConfigFileHostEntryResolver.java
 
b/sshd-core/src/main/java/org/apache/sshd/client/config/hosts/ConfigFileHostEntryResolver.java
deleted file mode 100644
index f1c9ea8..0000000
--- 
a/sshd-core/src/main/java/org/apache/sshd/client/config/hosts/ConfigFileHostEntryResolver.java
+++ /dev/null
@@ -1,107 +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.client.config.hosts;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.LinkOption;
-import java.nio.file.Path;
-import java.util.Collection;
-import java.util.List;
-import java.util.Objects;
-import java.util.concurrent.atomic.AtomicReference;
-
-import org.apache.sshd.common.util.GenericUtils;
-import org.apache.sshd.common.util.io.IoUtils;
-import org.apache.sshd.common.util.io.ModifiableFileWatcher;
-
-/**
- * Watches for changes in a configuration file and automatically reloads any 
changes
- *
- * @author <a href="mailto:[email protected]";>Apache MINA SSHD Project</a>
- */
-public class ConfigFileHostEntryResolver extends ModifiableFileWatcher 
implements HostConfigEntryResolver {
-    private final AtomicReference<HostConfigEntryResolver> delegateHolder = // 
assumes initially empty
-            new AtomicReference<>(HostConfigEntryResolver.EMPTY);
-
-    public ConfigFileHostEntryResolver(File file) {
-        this(Objects.requireNonNull(file, "No file to watch").toPath());
-    }
-
-    public ConfigFileHostEntryResolver(Path file) {
-        this(file, IoUtils.EMPTY_LINK_OPTIONS);
-    }
-
-    public ConfigFileHostEntryResolver(Path file, LinkOption... options) {
-        super(file, options);
-    }
-
-    @Override
-    public HostConfigEntry resolveEffectiveHost(String host, int port, String 
username) throws IOException {
-        try {
-            HostConfigEntryResolver delegate = 
Objects.requireNonNull(resolveEffectiveResolver(host, port, username), "No 
delegate");
-            HostConfigEntry entry = delegate.resolveEffectiveHost(host, port, 
username);
-            if (log.isDebugEnabled()) {
-                log.debug("resolveEffectiveHost({}@{}:{}) => {}", username, 
host, port, entry);
-            }
-
-            return entry;
-        } catch (Throwable e) {
-            if (log.isDebugEnabled()) {
-                log.debug("resolveEffectiveHost({}@{}:{}) failed ({}) to 
resolve: {}",
-                          username, host, port, e.getClass().getSimpleName(), 
e.getMessage());
-            }
-
-            if (log.isTraceEnabled()) {
-                log.trace("resolveEffectiveHost(" + username + "@" + host + 
":" + port + ") resolution failure details", e);
-            }
-            if (e instanceof IOException) {
-                throw (IOException) e;
-            } else {
-                throw new IOException(e);
-            }
-        }
-    }
-
-    protected HostConfigEntryResolver resolveEffectiveResolver(String host, 
int port, String username) throws IOException {
-        if (checkReloadRequired()) {
-            delegateHolder.set(HostConfigEntryResolver.EMPTY);  // start fresh
-
-            Path path = getPath();
-            if (exists()) {
-                Collection<HostConfigEntry> entries = 
reloadHostConfigEntries(path, host, port, username);
-                if (GenericUtils.size(entries) > 0) {
-                    
delegateHolder.set(HostConfigEntry.toHostConfigEntryResolver(entries));
-                }
-            } else {
-                log.info("resolveEffectiveResolver({}@{}:{}) no configuration 
file at {}", username, host, port, path);
-            }
-        }
-
-        return delegateHolder.get();
-    }
-
-    protected List<HostConfigEntry> reloadHostConfigEntries(Path path, String 
host, int port, String username) throws IOException {
-        List<HostConfigEntry> entries = 
HostConfigEntry.readHostConfigEntries(path);
-        log.info("resolveEffectiveResolver({}@{}:{}) loaded {} entries from 
{}", username, host, port, GenericUtils.size(entries), path);
-        updateReloadAttributes();
-        return entries;
-    }
-}

Reply via email to