summaryrefslogtreecommitdiff
path: root/libs/sftp/src/main/java/org
diff options
context:
space:
mode:
authorJoel Klinghed <the_jk@spawned.biz>2024-10-31 22:38:03 +0100
committerJoel Klinghed <the_jk@spawned.biz>2024-10-31 22:40:33 +0100
commit284a09b19bc3be8849fc71acd0ad407c43ec7380 (patch)
tree616691547cf01371131aabd2585dc82b81da2826 /libs/sftp/src/main/java/org
parent542454c4056fb5361c982c5ecdd2aef38b9c6b9f (diff)
sftp: Simplify authentication with private key
Let ssh2 derive the public key from the private key. Much easier.
Diffstat (limited to 'libs/sftp/src/main/java/org')
-rw-r--r--libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/NativeSftp.kt30
-rw-r--r--libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/SftpConnection.kt2
-rw-r--r--libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/SftpCredentials.kt1
3 files changed, 4 insertions, 29 deletions
diff --git a/libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/NativeSftp.kt b/libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/NativeSftp.kt
index 52d7a0a..342076a 100644
--- a/libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/NativeSftp.kt
+++ b/libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/NativeSftp.kt
@@ -18,7 +18,7 @@ internal object NativeSftp {
fun lastError(): String
fun connect(host: String, port: Int = 22): Boolean
fun handshake(): Fingerprint?
- fun authenticate(username: String, password: String?, keyPair: KeyPair?): Boolean
+ fun authenticate(username: String, password: String?, privateKey: ByteArray?): Boolean
fun newSftpSession(): SftpSession?
}
@@ -87,29 +87,6 @@ internal object NativeSftp {
}
}
- data class KeyPair(
- val public: ByteArray,
- val private: ByteArray,
- ) {
- override fun equals(other: Any?): Boolean {
- if (this === other) return true
- if (javaClass != other?.javaClass) return false
-
- other as KeyPair
-
- if (!public.contentEquals(other.public)) return false
- if (!private.contentEquals(other.private)) return false
-
- return true
- }
-
- override fun hashCode(): Int {
- var result = public.contentHashCode()
- result = 31 * result + private.contentHashCode()
- return result
- }
- }
-
private class NativeSshSession(private var ptr: Long): SshSession {
override fun destroy() {
if (ptr == 0L) return
@@ -133,9 +110,9 @@ internal object NativeSftp {
override fun authenticate(
username: String,
password: String?,
- keyPair: KeyPair?
+ privateKey: ByteArray?,
): Boolean {
- return nativeSshSessionAuthenticate(ptr, username, password, keyPair?.public, keyPair?.private)
+ return nativeSshSessionAuthenticate(ptr, username, password, privateKey)
}
override fun newSftpSession(): SftpSession? {
@@ -263,7 +240,6 @@ internal object NativeSftp {
ptr: Long,
username: String,
password: String?,
- publicKey: ByteArray?,
privateKey: ByteArray?,
): Boolean
private external fun nativeSshSessionNewSftpSession(ptr: Long): Long
diff --git a/libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/SftpConnection.kt b/libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/SftpConnection.kt
index 5809186..43eb88a 100644
--- a/libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/SftpConnection.kt
+++ b/libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/SftpConnection.kt
@@ -85,7 +85,7 @@ internal class SftpConnection(uri: Uri, credentials: SftpCredentials) {
if (!sshSession.authenticate(
credentials.username,
credentials.passphrase ?: "",
- NativeSftp.KeyPair(credentials.publicKey, credentials.privateKey),
+ credentials.privateKey,
)
) return false
}
diff --git a/libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/SftpCredentials.kt b/libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/SftpCredentials.kt
index 0097000..90f5bd1 100644
--- a/libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/SftpCredentials.kt
+++ b/libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/SftpCredentials.kt
@@ -6,7 +6,6 @@ sealed class SftpCredentials(
class SftpPasswordCredentials(username: String, val password: String): SftpCredentials(username)
class SftpKeyCredentials(
username: String,
- val publicKey: ByteArray,
val privateKey: ByteArray,
val passphrase: String?,
): SftpCredentials(username)