From 7750284e53f434fb70fd9abc42716e9d837ad811 Mon Sep 17 00:00:00 2001 From: Karlatemp <kar@kasukusakura.com> Date: Sun, 18 Jun 2023 19:36:16 +0800 Subject: [PATCH] [core] Push device to sso service & little change --- .../network/components/EcdhInitialPublicKeyUpdater.kt | 4 +++- .../kotlin/network/protocol/packet/OutgoingPacket.kt | 6 ++++-- mirai-core/src/commonMain/kotlin/spi/EncryptService.kt | 1 + 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/mirai-core/src/commonMain/kotlin/network/components/EcdhInitialPublicKeyUpdater.kt b/mirai-core/src/commonMain/kotlin/network/components/EcdhInitialPublicKeyUpdater.kt index 3d57dc221..ea6c30efa 100644 --- a/mirai-core/src/commonMain/kotlin/network/components/EcdhInitialPublicKeyUpdater.kt +++ b/mirai-core/src/commonMain/kotlin/network/components/EcdhInitialPublicKeyUpdater.kt @@ -120,7 +120,9 @@ internal class EcdhInitialPublicKeyUpdaterImpl( } encryptWorker.initialize(EncryptServiceContext(bot.id, buildTypeSafeMap { - set(EncryptServiceContext.KEY_CHANNEL_PROXY, createChannelProxy(bot.client)) + set(EncryptServiceContext.KEY_CHANNEL_PROXY, createChannelProxy(bot)) + set(EncryptServiceContext.KEY_DEVICE_INFO, bot.client.device) + set(EncryptServiceContext.KEY_BOT_PROTOCOL, bot.configuration.protocol) })) } diff --git a/mirai-core/src/commonMain/kotlin/network/protocol/packet/OutgoingPacket.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/OutgoingPacket.kt index 3ef19401c..c86f5db91 100644 --- a/mirai-core/src/commonMain/kotlin/network/protocol/packet/OutgoingPacket.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/OutgoingPacket.kt @@ -12,6 +12,7 @@ package net.mamoe.mirai.internal.network.protocol.packet import io.ktor.utils.io.core.* import kotlinx.serialization.encodeToByteArray +import net.mamoe.mirai.internal.QQAndroidBot import net.mamoe.mirai.internal.network.* import net.mamoe.mirai.internal.network.components.EcdhInitialPublicKeyUpdater import net.mamoe.mirai.internal.network.protocol.data.proto.SSOReserveField @@ -252,7 +253,7 @@ internal fun <R : Packet?> OutgoingPacketFactory<R>.buildLoginOutgoingPacket( private inline val BRP_STUB get() = ByteReadPacket.Empty -internal fun createChannelProxy(client: QQAndroidClient): EncryptService.ChannelProxy { +internal fun createChannelProxy(bot: QQAndroidBot): EncryptService.ChannelProxy { return object : EncryptService.ChannelProxy { override suspend fun sendMessage( remark: String, @@ -261,6 +262,7 @@ internal fun createChannelProxy(client: QQAndroidClient): EncryptService.Channel data: ByteArray ): EncryptService.ChannelResult? { if (commandName.startsWith(TRpcRawPacket.COMMAND_PREFIX)) { + val client = bot.client val packet = client.bot.network.sendAndExpect( TRpcRawPacket.buildLoginOutgoingPacket( client = client, @@ -322,7 +324,7 @@ internal inline fun BytePacketBuilder.writeSsoPacket( val signResult = encryptWorker?.qSecurityGetSign( EncryptServiceContext(client.uin, buildTypeSafeMap { set(EncryptServiceContext.KEY_APP_QUA, "V1_AND_SQ_8.9.58_4106_YYB_D") // 8.9.58 - set(EncryptServiceContext.KEY_CHANNEL_PROXY, createChannelProxy(client)) + set(EncryptServiceContext.KEY_CHANNEL_PROXY, createChannelProxy(client.bot)) }), sequenceId, commandName, diff --git a/mirai-core/src/commonMain/kotlin/spi/EncryptService.kt b/mirai-core/src/commonMain/kotlin/spi/EncryptService.kt index a374f7a14..e54c65c18 100644 --- a/mirai-core/src/commonMain/kotlin/spi/EncryptService.kt +++ b/mirai-core/src/commonMain/kotlin/spi/EncryptService.kt @@ -31,6 +31,7 @@ public class EncryptServiceContext @MiraiInternalApi constructor( public val KEY_BOT_PROTOCOL: TypeKey<BotConfiguration.MiraiProtocol> = TypeKey("BOT_PROTOCOL") public val KEY_APP_QUA: TypeKey<String> = TypeKey("KEY_APP_QUA") public val KEY_CHANNEL_PROXY: TypeKey<EncryptService.ChannelProxy> = TypeKey("KEY_CHANNEL_PROXY") + public val KEY_DEVICE_INFO: TypeKey<DeviceInfo> = TypeKey("KEY_DEVICE_INFO") } }