Skip to content

Commit c5f41e3

Browse files
Use correct ed25519 keys for fileserver (#1636)
1 parent 6354c0c commit c5f41e3

File tree

4 files changed

+20
-16
lines changed

4 files changed

+20
-16
lines changed

app/src/main/java/org/session/libsession/messaging/file_server/FileServer.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ import org.session.libsession.utilities.serializable.HttpSerializer
99
data class FileServer(
1010
@Serializable(with = HttpSerializer::class)
1111
val url: HttpUrl,
12-
val publicKeyHex: String
12+
val ed25519PublicKeyHex: String
1313
) {
14-
constructor(url: String, publicKeyHex: String) : this(url.toHttpUrl(), publicKeyHex)
14+
constructor(url: String, ed25519PublicKeyHex: String) : this(url.toHttpUrl(), ed25519PublicKeyHex)
1515
}
1616

1717
val HttpUrl.isOfficial: Boolean

app/src/main/java/org/session/libsession/messaging/file_server/FileServerApi.kt

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ package org.session.libsession.messaging.file_server
22

33
import android.util.Base64
44
import kotlinx.coroutines.CancellationException
5+
import network.loki.messenger.libsession_util.Curve25519
6+
import network.loki.messenger.libsession_util.ED25519
57
import network.loki.messenger.libsession_util.util.BlindKeyAPI
6-
import nl.komponents.kovenant.Promise
7-
import nl.komponents.kovenant.functional.map
88
import okhttp3.Headers.Companion.toHeaders
99
import okhttp3.HttpUrl
1010
import okhttp3.MediaType.Companion.toMediaType
@@ -15,6 +15,7 @@ import org.session.libsession.snode.OnionRequestAPI
1515
import org.session.libsession.snode.utilities.await
1616
import org.session.libsignal.utilities.ByteArraySlice
1717
import org.session.libsignal.utilities.HTTP
18+
import org.session.libsignal.utilities.Hex
1819
import org.session.libsignal.utilities.JsonUtil
1920
import org.session.libsignal.utilities.Log
2021
import org.session.libsignal.utilities.toHexString
@@ -36,7 +37,7 @@ class FileServerApi @Inject constructor(
3637

3738
val DEFAULT_FILE_SERVER: FileServer = FileServer(
3839
url = "http://filev2.getsession.org",
39-
publicKeyHex = "da21e1d886c6fbaea313f75298bd64aab03a97ce985b46bb2dad9f2089c8ee59"
40+
ed25519PublicKeyHex = "b8eef9821445ae16e2e97ef8aa6fe782fd11ad5253cd6723b281341dba22e371"
4041
)
4142
}
4243

@@ -97,7 +98,10 @@ class FileServerApi @Inject constructor(
9798
val response = OnionRequestAPI.sendOnionRequest(
9899
request = requestBuilder.build(),
99100
server = request.fileServer.url.host,
100-
x25519PublicKey = request.fileServer.publicKeyHex
101+
x25519PublicKey =
102+
Hex.toStringCondensed(
103+
Curve25519.pubKeyFromED25519(Hex.fromStringCondensed(request.fileServer.ed25519PublicKeyHex))
104+
)
101105
).await()
102106

103107
check(response.code in 200..299) {
@@ -192,8 +196,8 @@ class FileServerApi @Inject constructor(
192196
): HttpUrl {
193197
val urlFragment = sequenceOf(
194198
"d".takeIf { usesDeterministicEncryption },
195-
if (!fileServer.url.isOfficial || fileServer.publicKeyHex != DEFAULT_FILE_SERVER.publicKeyHex) {
196-
"p=${fileServer.publicKeyHex}"
199+
if (!fileServer.url.isOfficial || fileServer.ed25519PublicKeyHex != DEFAULT_FILE_SERVER.ed25519PublicKeyHex) {
200+
"p=${fileServer.ed25519PublicKeyHex}"
197201
} else {
198202
null
199203
}
@@ -254,7 +258,7 @@ class FileServerApi @Inject constructor(
254258
// We'll use the public key we get from the URL
255259
return URLParseResult(
256260
fileId = id,
257-
fileServer = FileServer(url = fileServerUrl, publicKeyHex = fileServerPubKeyHex),
261+
fileServer = FileServer(url = fileServerUrl, ed25519PublicKeyHex = fileServerPubKeyHex),
258262
usesDeterministicEncryption = deterministicEncryption
259263
)
260264
}
@@ -275,7 +279,7 @@ class FileServerApi @Inject constructor(
275279
fileId = id,
276280
fileServer = FileServer(
277281
url = fileServerUrl,
278-
publicKeyHex = DEFAULT_FILE_SERVER.publicKeyHex
282+
ed25519PublicKeyHex = DEFAULT_FILE_SERVER.ed25519PublicKeyHex
279283
),
280284
usesDeterministicEncryption = deterministicEncryption
281285
)

app/src/main/java/org/thoughtcrime/securesms/debugmenu/DebugMenuViewModel.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -495,11 +495,11 @@ class DebugMenuViewModel @Inject constructor(
495495
private val TEST_FILE_SERVERS: List<FileServer> = listOf(
496496
FileServer(
497497
url = "http://potatofiles.getsession.org",
498-
publicKeyHex = "fc097b06821c98a2db75ce02e521cef5fd9d3446e42e81d843c4c8c4e9260f48",
498+
ed25519PublicKeyHex = "ff86dcd4b26d1bfec944c59859494248626d6428efc12168749d65a1b92f5e28",
499499
),
500500
FileServer(
501501
url = "http://superduperfiles.oxen.io",
502-
publicKeyHex = "16d6c60aebb0851de7e6f4dc0a4734671dbf80f73664c008596511454cb6576d",
502+
ed25519PublicKeyHex = "929e33ded05e653fec04b49645117f51851f102a947e04806791be416ed76602",
503503
)
504504
)
505505
}

app/src/test/java/org/session/libsession/messaging/file_server/FileServerApiTest.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class FileServerApiTest {
2828
usesDeterministicEncryption = true,
2929
fileServer = FileServer(
3030
url = "http://fileserver".toHttpUrl(),
31-
publicKeyHex = "1234"
31+
ed25519PublicKeyHex = "1234"
3232
)
3333
)
3434
),
@@ -40,7 +40,7 @@ class FileServerApiTest {
4040
usesDeterministicEncryption = true,
4141
fileServer = FileServer(
4242
url = "http://fileserver".toHttpUrl(),
43-
publicKeyHex = "1234"
43+
ed25519PublicKeyHex = "1234"
4444
)
4545
)
4646
),
@@ -52,7 +52,7 @@ class FileServerApiTest {
5252
usesDeterministicEncryption = false,
5353
fileServer = FileServer(
5454
url = "http://fileserver".toHttpUrl(),
55-
publicKeyHex = "1234"
55+
ed25519PublicKeyHex = "1234"
5656
)
5757
)
5858
),
@@ -73,7 +73,7 @@ class FileServerApiTest {
7373
usesDeterministicEncryption = false,
7474
fileServer = FileServer(
7575
"http://fileabc.getsession.org",
76-
FileServerApi.DEFAULT_FILE_SERVER.publicKeyHex
76+
FileServerApi.DEFAULT_FILE_SERVER.ed25519PublicKeyHex
7777
)
7878
),
7979
),

0 commit comments

Comments
 (0)