fix: rsa pubkey prioritize stored values

This commit is contained in:
Miuzarte
2026-04-28 16:17:38 +08:00
parent e089f687c0
commit f97976847e
3 changed files with 19 additions and 7 deletions

View File

@@ -2,6 +2,10 @@
~~什么我居然开始写更新日志了~~
## 0.2.9
- 修复: RSA 公钥优先使用已储存的值
## 0.2.8
- 新增: 设置 -> 全屏 -> 全屏兼容模式

View File

@@ -56,8 +56,8 @@ android {
applicationId = "io.github.miuzarte.scrcpyforandroid"
minSdk = 26
targetSdk = 37
versionCode = 24
versionName = "0.2.8"
versionCode = 25
versionName = "0.2.9"
externalNativeBuild {
cmake {

View File

@@ -3,6 +3,7 @@ package io.github.miuzarte.scrcpyforandroid.nativecore
import android.os.Build
import android.util.Base64
import android.util.Log
import io.github.miuzarte.scrcpyforandroid.storage.AdbClientData
import io.github.miuzarte.scrcpyforandroid.storage.AppSettings
import io.github.miuzarte.scrcpyforandroid.storage.Storage
import kotlinx.coroutines.runBlocking
@@ -118,7 +119,11 @@ internal object DirectAdbTransport {
Base64.decode(privB64, Base64.DEFAULT)
)
)
val pub = derivePublicX509(priv)
val pubB64 = adbClientData.rsaPublicKeyX509.get()
val pub =
if (pubB64.isNotBlank()) Base64.decode(pubB64, Base64.DEFAULT)
else derivePublicX509(priv)
Log.i(
TAG,
"loadOrCreate(): loaded persisted RSA key pair from DataStore, " +
@@ -137,15 +142,18 @@ internal object DirectAdbTransport {
kpg.initialize(2048)
val kp = kpg.generateKeyPair()
// 保存到 DataStore
val privateKeyB64 = Base64.encodeToString(kp.private.encoded, Base64.NO_WRAP)
val publicKeyB64 = Base64.encodeToString(kp.public.encoded, Base64.NO_WRAP)
adbClientData.rsaPrivateKey.set(privateKeyB64)
adbClientData.rsaPublicKeyX509.set(publicKeyB64)
adbClientData.saveBundle(
AdbClientData.Bundle(
rsaPrivateKey = privateKeyB64,
rsaPublicKeyX509 = publicKeyB64,
)
)
Log.i(
TAG,
"loadOrCreate(): generated new RSA key pair and saved to DataStore, fp=${fingerprint(kp.public.encoded)}"
"loadOrCreate(): generated new RSA key pair, fp=${fingerprint(kp.public.encoded)}"
)
return Pair(kp.private, kp.public.encoded)
}