Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ import org.session.libsession.utilities.serializable.HttpSerializer
data class FileServer(
@Serializable(with = HttpSerializer::class)
val url: HttpUrl,
val publicKeyHex: String
val ed25519PublicKeyHex: String
) {
constructor(url: String, publicKeyHex: String) : this(url.toHttpUrl(), publicKeyHex)
constructor(url: String, ed25519PublicKeyHex: String) : this(url.toHttpUrl(), ed25519PublicKeyHex)
}

val HttpUrl.isOfficial: Boolean
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ package org.session.libsession.messaging.file_server

import android.util.Base64
import kotlinx.coroutines.CancellationException
import network.loki.messenger.libsession_util.Curve25519
import network.loki.messenger.libsession_util.ED25519
import network.loki.messenger.libsession_util.util.BlindKeyAPI
import nl.komponents.kovenant.Promise
import nl.komponents.kovenant.functional.map
import okhttp3.Headers.Companion.toHeaders
import okhttp3.HttpUrl
import okhttp3.MediaType.Companion.toMediaType
Expand All @@ -15,6 +15,7 @@ import org.session.libsession.snode.OnionRequestAPI
import org.session.libsession.snode.utilities.await
import org.session.libsignal.utilities.ByteArraySlice
import org.session.libsignal.utilities.HTTP
import org.session.libsignal.utilities.Hex
import org.session.libsignal.utilities.JsonUtil
import org.session.libsignal.utilities.Log
import org.session.libsignal.utilities.toHexString
Expand All @@ -36,7 +37,7 @@ class FileServerApi @Inject constructor(

val DEFAULT_FILE_SERVER: FileServer = FileServer(
url = "http://filev2.getsession.org",
publicKeyHex = "da21e1d886c6fbaea313f75298bd64aab03a97ce985b46bb2dad9f2089c8ee59"
ed25519PublicKeyHex = "b8eef9821445ae16e2e97ef8aa6fe782fd11ad5253cd6723b281341dba22e371"
)
}

Expand Down Expand Up @@ -97,7 +98,10 @@ class FileServerApi @Inject constructor(
val response = OnionRequestAPI.sendOnionRequest(
request = requestBuilder.build(),
server = request.fileServer.url.host,
x25519PublicKey = request.fileServer.publicKeyHex
x25519PublicKey =
Hex.toStringCondensed(
Curve25519.pubKeyFromED25519(Hex.fromStringCondensed(request.fileServer.ed25519PublicKeyHex))
)
).await()

check(response.code in 200..299) {
Expand Down Expand Up @@ -192,8 +196,8 @@ class FileServerApi @Inject constructor(
): HttpUrl {
val urlFragment = sequenceOf(
"d".takeIf { usesDeterministicEncryption },
if (!fileServer.url.isOfficial || fileServer.publicKeyHex != DEFAULT_FILE_SERVER.publicKeyHex) {
"p=${fileServer.publicKeyHex}"
if (!fileServer.url.isOfficial || fileServer.ed25519PublicKeyHex != DEFAULT_FILE_SERVER.ed25519PublicKeyHex) {
"p=${fileServer.ed25519PublicKeyHex}"
} else {
null
}
Expand Down Expand Up @@ -254,7 +258,7 @@ class FileServerApi @Inject constructor(
// We'll use the public key we get from the URL
return URLParseResult(
fileId = id,
fileServer = FileServer(url = fileServerUrl, publicKeyHex = fileServerPubKeyHex),
fileServer = FileServer(url = fileServerUrl, ed25519PublicKeyHex = fileServerPubKeyHex),
usesDeterministicEncryption = deterministicEncryption
)
}
Expand All @@ -275,7 +279,7 @@ class FileServerApi @Inject constructor(
fileId = id,
fileServer = FileServer(
url = fileServerUrl,
publicKeyHex = DEFAULT_FILE_SERVER.publicKeyHex
ed25519PublicKeyHex = DEFAULT_FILE_SERVER.ed25519PublicKeyHex
),
usesDeterministicEncryption = deterministicEncryption
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -495,11 +495,11 @@ class DebugMenuViewModel @Inject constructor(
private val TEST_FILE_SERVERS: List<FileServer> = listOf(
FileServer(
url = "http://potatofiles.getsession.org",
publicKeyHex = "fc097b06821c98a2db75ce02e521cef5fd9d3446e42e81d843c4c8c4e9260f48",
ed25519PublicKeyHex = "ff86dcd4b26d1bfec944c59859494248626d6428efc12168749d65a1b92f5e28",
),
FileServer(
url = "http://superduperfiles.oxen.io",
publicKeyHex = "16d6c60aebb0851de7e6f4dc0a4734671dbf80f73664c008596511454cb6576d",
ed25519PublicKeyHex = "929e33ded05e653fec04b49645117f51851f102a947e04806791be416ed76602",
)
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ class FileServerApiTest {
usesDeterministicEncryption = true,
fileServer = FileServer(
url = "http://fileserver".toHttpUrl(),
publicKeyHex = "1234"
ed25519PublicKeyHex = "1234"
)
)
),
Expand All @@ -40,7 +40,7 @@ class FileServerApiTest {
usesDeterministicEncryption = true,
fileServer = FileServer(
url = "http://fileserver".toHttpUrl(),
publicKeyHex = "1234"
ed25519PublicKeyHex = "1234"
)
)
),
Expand All @@ -52,7 +52,7 @@ class FileServerApiTest {
usesDeterministicEncryption = false,
fileServer = FileServer(
url = "http://fileserver".toHttpUrl(),
publicKeyHex = "1234"
ed25519PublicKeyHex = "1234"
)
)
),
Expand All @@ -73,7 +73,7 @@ class FileServerApiTest {
usesDeterministicEncryption = false,
fileServer = FileServer(
"http://fileabc.getsession.org",
FileServerApi.DEFAULT_FILE_SERVER.publicKeyHex
FileServerApi.DEFAULT_FILE_SERVER.ed25519PublicKeyHex
)
),
),
Expand Down