only52607 / lua-mirai

Mirai机器人的lua扩展支持
https://only52607.github.io/lua-mirai/
GNU Affero General Public License v3.0
126 stars 28 forks source link

JCE cannot authenticate the provider BC #72

Closed azwc closed 2 years ago

azwc commented 2 years ago

java.security.NoSuchProviderException: JCE cannot authenticate the provider BC
        at javax.crypto.JceSecurity.getInstance(JceSecurity.java:105)
        at javax.crypto.KeyAgreement.getInstance(KeyAgreement.java:230)
        at net.mamoe.mirai.internal.utils.crypto.ECDH$Companion.calculateShareKey(ECDHJvmDesktop.kt:89)
        at net.mamoe.mirai.internal.utils.crypto.ECDH.lambda-3$testECDH(ECDHJvmDesktop.kt:49)
        at net.mamoe.mirai.internal.utils.crypto.ECDH.<clinit>(ECDHJvmDesktop.kt:61)
        at net.mamoe.mirai.internal.utils.crypto.ECDHKt.adjustToPublicKey(ECDH.kt:141)
        at net.mamoe.mirai.internal.utils.crypto.ECDHKt.adjustToPublicKey(ECDH.kt:136)
        at net.mamoe.mirai.internal.utils.crypto.ECDHInitialPublicKey.<init>(ECDH.kt:125)
        at net.mamoe.mirai.internal.utils.crypto.ECDHInitialPublicKey$$serializer.deserialize(ECDH.kt:122)
        at net.mamoe.mirai.internal.utils.crypto.ECDHInitialPublicKey$$serializer.deserialize(ECDH.kt:122)
        at kotlinx.serialization.protobuf.internal.ProtobufDecoder.decodeSerializableValue(ProtobufDecoding.kt:224)
        at kotlinx.serialization.protobuf.internal.ProtobufTaggedDecoder.decodeSerializableElement(ProtobufTaggedDecoder.kt:82)
        at net.mamoe.mirai.internal.network.components.AccountSecretsImpl$$serializer.deserialize(AccountSecretsManager.kt:80)
        at net.mamoe.mirai.internal.network.components.AccountSecretsImpl$$serializer.deserialize(AccountSecretsManager.kt:80)
        at kotlinx.serialization.protobuf.internal.ProtobufDecoder.decodeSerializableValue(ProtobufDecoding.kt:224)
        at kotlinx.serialization.protobuf.internal.ProtobufDecoder.decodeSerializableValue(ProtobufDecoding.kt:214)
        at kotlinx.serialization.protobuf.ProtoBuf.decodeFromByteArray(ProtoBuf.kt:137)
        at net.mamoe.mirai.internal.utils.io.serialization.SerializationUtils__UtilsKt.loadAs(utils.kt:168)
        at net.mamoe.mirai.internal.utils.io.serialization.SerializationUtils.loadAs(utils.kt:1)
        at net.mamoe.mirai.internal.utils.io.serialization.SerializationUtils__UtilsKt.loadAs$default(utils.kt:163)
        at net.mamoe.mirai.internal.utils.io.serialization.SerializationUtils.loadAs$default(utils.kt:1)
        at net.mamoe.mirai.internal.network.components.FileCacheAccountSecretsManager.getSecretsImpl(AccountSecretsManager.kt:198)
        at net.mamoe.mirai.internal.network.components.FileCacheAccountSecretsManager.getSecrets(AccountSecretsManager.kt:192)
        at net.mamoe.mirai.internal.network.components.CombinedAccountSecretsManager.getSecrets(AccountSecretsManager.kt:240)
        at net.mamoe.mirai.internal.network.components.AccountSecretsManagerKt.getSecretsOrCreate(AccountSecretsManager.kt:152)
        at net.mamoe.mirai.internal.network.components.BotClientHolderImpl.createClient(BotClientHolder.kt:36)
        at net.mamoe.mirai.internal.network.components.BotClientHolderImpl.access$createClient(BotClientHolder.kt:24)
        at net.mamoe.mirai.internal.network.components.BotClientHolderImpl$client$2.invoke(BotClientHolder.kt:28)
        at net.mamoe.mirai.internal.network.components.BotClientHolderImpl$client$2.invoke(BotClientHolder.kt:28)
        at net.mamoe.mirai.utils.LateinitMutableProperty.getValue(LateinitMutableProperty.kt:38)
        at net.mamoe.mirai.internal.network.components.BotClientHolderImpl.getClient(BotClientHolder.kt:28)
        at net.mamoe.mirai.internal.network.components.SsoProcessorImpl.getClient(SsoProcessor.kt:97)
        at net.mamoe.mirai.internal.network.components.SsoProcessorImpl.login(SsoProcessor.kt:111)
        at net.mamoe.mirai.internal.network.impl.netty.NettyNetworkHandler$StateConnecting$1.invokeSuspend(NettyNetworkHandler.kt:257)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:749)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)
Caused by: java.util.jar.JarException: file:/D:/qqbot/lua-mirai-executable-2.4.0-all.jar has unsigned entries - com/github/only52607/luamirai/MainKt.class
        at javax.crypto.JarVerifier.verifySingleJar(JarVerifier.java:510)
        at javax.crypto.JarVerifier.verifyJars(JarVerifier.java:371)
        at javax.crypto.JarVerifier.verify(JarVerifier.java:297)
        at javax.crypto.JceSecurity.verifyProviderJar(JceSecurity.java:164)
        at javax.crypto.JceSecurity.getVerificationResult(JceSecurity.java:190)
        at javax.crypto.JceSecurity.getInstance(JceSecurity.java:102)
        ... 39 more
only52607 commented 2 years ago

java.security.NoSuchProviderException: JCE cannot authenticate the provider BC
        at javax.crypto.JceSecurity.getInstance(JceSecurity.java:105)
        at javax.crypto.KeyAgreement.getInstance(KeyAgreement.java:230)
        at net.mamoe.mirai.internal.utils.crypto.ECDH$Companion.calculateShareKey(ECDHJvmDesktop.kt:89)
        at net.mamoe.mirai.internal.utils.crypto.ECDH.lambda-3$testECDH(ECDHJvmDesktop.kt:49)
        at net.mamoe.mirai.internal.utils.crypto.ECDH.<clinit>(ECDHJvmDesktop.kt:61)
        at net.mamoe.mirai.internal.utils.crypto.ECDHKt.adjustToPublicKey(ECDH.kt:141)
        at net.mamoe.mirai.internal.utils.crypto.ECDHKt.adjustToPublicKey(ECDH.kt:136)
        at net.mamoe.mirai.internal.utils.crypto.ECDHInitialPublicKey.<init>(ECDH.kt:125)
        at net.mamoe.mirai.internal.utils.crypto.ECDHInitialPublicKey$$serializer.deserialize(ECDH.kt:122)
        at net.mamoe.mirai.internal.utils.crypto.ECDHInitialPublicKey$$serializer.deserialize(ECDH.kt:122)
        at kotlinx.serialization.protobuf.internal.ProtobufDecoder.decodeSerializableValue(ProtobufDecoding.kt:224)
        at kotlinx.serialization.protobuf.internal.ProtobufTaggedDecoder.decodeSerializableElement(ProtobufTaggedDecoder.kt:82)
        at net.mamoe.mirai.internal.network.components.AccountSecretsImpl$$serializer.deserialize(AccountSecretsManager.kt:80)
        at net.mamoe.mirai.internal.network.components.AccountSecretsImpl$$serializer.deserialize(AccountSecretsManager.kt:80)
        at kotlinx.serialization.protobuf.internal.ProtobufDecoder.decodeSerializableValue(ProtobufDecoding.kt:224)
        at kotlinx.serialization.protobuf.internal.ProtobufDecoder.decodeSerializableValue(ProtobufDecoding.kt:214)
        at kotlinx.serialization.protobuf.ProtoBuf.decodeFromByteArray(ProtoBuf.kt:137)
        at net.mamoe.mirai.internal.utils.io.serialization.SerializationUtils__UtilsKt.loadAs(utils.kt:168)
        at net.mamoe.mirai.internal.utils.io.serialization.SerializationUtils.loadAs(utils.kt:1)
        at net.mamoe.mirai.internal.utils.io.serialization.SerializationUtils__UtilsKt.loadAs$default(utils.kt:163)
        at net.mamoe.mirai.internal.utils.io.serialization.SerializationUtils.loadAs$default(utils.kt:1)
        at net.mamoe.mirai.internal.network.components.FileCacheAccountSecretsManager.getSecretsImpl(AccountSecretsManager.kt:198)
        at net.mamoe.mirai.internal.network.components.FileCacheAccountSecretsManager.getSecrets(AccountSecretsManager.kt:192)
        at net.mamoe.mirai.internal.network.components.CombinedAccountSecretsManager.getSecrets(AccountSecretsManager.kt:240)
        at net.mamoe.mirai.internal.network.components.AccountSecretsManagerKt.getSecretsOrCreate(AccountSecretsManager.kt:152)
        at net.mamoe.mirai.internal.network.components.BotClientHolderImpl.createClient(BotClientHolder.kt:36)
        at net.mamoe.mirai.internal.network.components.BotClientHolderImpl.access$createClient(BotClientHolder.kt:24)
        at net.mamoe.mirai.internal.network.components.BotClientHolderImpl$client$2.invoke(BotClientHolder.kt:28)
        at net.mamoe.mirai.internal.network.components.BotClientHolderImpl$client$2.invoke(BotClientHolder.kt:28)
        at net.mamoe.mirai.utils.LateinitMutableProperty.getValue(LateinitMutableProperty.kt:38)
        at net.mamoe.mirai.internal.network.components.BotClientHolderImpl.getClient(BotClientHolder.kt:28)
        at net.mamoe.mirai.internal.network.components.SsoProcessorImpl.getClient(SsoProcessor.kt:97)
        at net.mamoe.mirai.internal.network.components.SsoProcessorImpl.login(SsoProcessor.kt:111)
        at net.mamoe.mirai.internal.network.impl.netty.NettyNetworkHandler$StateConnecting$1.invokeSuspend(NettyNetworkHandler.kt:257)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:749)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)
Caused by: java.util.jar.JarException: file:/D:/qqbot/lua-mirai-executable-2.4.0-all.jar has unsigned entries - com/github/only52607/luamirai/MainKt.class
        at javax.crypto.JarVerifier.verifySingleJar(JarVerifier.java:510)
        at javax.crypto.JarVerifier.verifyJars(JarVerifier.java:371)
        at javax.crypto.JarVerifier.verify(JarVerifier.java:297)
        at javax.crypto.JceSecurity.verifyProviderJar(JceSecurity.java:164)
        at javax.crypto.JceSecurity.getVerificationResult(JceSecurity.java:190)
        at javax.crypto.JceSecurity.getInstance(JceSecurity.java:102)
        ... 39 more

JDK类型和版本?

only52607 commented 2 years ago

另外, 使用示例的lua代码发出问句会报错


org.luaj.vm2.LuaError: Event.subscribe("FriendMessageEvent", function(event)
    local reply = tostring(event.message):gsub("吗",""):gsub("?","!"):gsub("?","!")
    event.friend:sendMessage(Quote(msg) .. reply)
end)

-- 在mirai-console环境下可忽略下列代码
local bot = Bot(xx,"xx",{
        fileBasedDeviceInfo = "device.json"
})
bot:login():3 bad argument: userdata expected, got nil
        at org.luaj.vm2.LuaValue.argerror(LuaValue.java:1056)
        at org.luaj.vm2.LuaValue.checkuserdata(LuaValue.java:1008)
        at com.github.only52607.luakt.dsl.LuaValueExtensionsKt.getUserdataValue(LuaValueExtensions.kt:68)
        at com.github.only52607.luamirai.lua.mirai.message.MessageConstructorsTable$4.invoke(MessageConstructorsTable.kt:44)
        at com.github.only52607.luamirai.lua.mirai.message.MessageConstructorsTable$4.invoke(MessageConstructorsTable.kt:43)
        at com.github.only52607.luakt.dsl.LuaFunctionBuilderDslKt$oneArgLuaFunctionOf$1.call(LuaFunctionBuilderDsl.kt:30)
        at org.luaj.vm2.LuaClosure.execute(LuaClosure.java:363)
        at org.luaj.vm2.LuaClosure.onInvoke(LuaClosure.java:178)
        at org.luaj.vm2.LuaClosure.invoke(LuaClosure.java:171)
        at com.github.only52607.luamirai.lua.mirai.event.EventTable$subscriberFunction$1$3.invokeSuspend(EventTable.kt:44)
        at com.github.only52607.luamirai.lua.mirai.event.EventTable$subscriberFunction$1$3.invoke(EventTable.kt)
        at com.github.only52607.luamirai.lua.mirai.event.EventTable$subscriberFunction$1$3.invoke(EventTable.kt)
        at net.mamoe.mirai.event.EventChannel$subscribeAlways$1.invokeSuspend(EventChannel.kt:432)
        at net.mamoe.mirai.event.EventChannel$subscribeAlways$1.invoke(EventChannel.kt)
        at net.mamoe.mirai.event.EventChannel$subscribeAlways$1.invoke(EventChannel.kt)
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invokeSuspend(EventChannel.kt:146)
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invoke(EventChannel.kt)
        at net.mamoe.mirai.event.EventChannel$filter$1$intercepted$thisIntercepted$1.invoke(EventChannel.kt)
        at net.mamoe.mirai.internal.event.Handler$onEvent$2.invokeSuspend(InternalEventListeners.kt:50)
        at net.mamoe.mirai.internal.event.Handler$onEvent$2.invoke(InternalEventListeners.kt)
        at net.mamoe.mirai.internal.event.Handler$onEvent$2.invoke(InternalEventListeners.kt)
        at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:89)
        at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:166)
        at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
        at net.mamoe.mirai.internal.event.Handler.onEvent(InternalEventListeners.kt:50)
        at net.mamoe.mirai.internal.event.InternalEventListenersKt.process(InternalEventListeners.kt:166)
        at net.mamoe.mirai.internal.event.InternalEventListenersKt.callAndRemoveIfRequired(InternalEventListeners.kt:115)
        at net.mamoe.mirai.event._EventBroadcast.broadcastImpl(Event.kt:175)
        at net.mamoe.mirai.IMirai.broadcastEvent(IMirai.kt:318)
        at net.mamoe.mirai.internal.MiraiImpl.broadcastEvent$suspendImpl(MiraiImpl.kt:308)
        at net.mamoe.mirai.internal.MiraiImpl.broadcastEvent(MiraiImpl.kt)
        at net.mamoe.mirai.event._EventBroadcast.broadcastPublic$suspendImpl(Event.kt:162)
        at net.mamoe.mirai.event._EventBroadcast.broadcastPublic(Event.kt)
        at net.mamoe.mirai.event.EventKt.broadcast(Event.kt:147)
        at net.mamoe.mirai.internal.network.components.EventDispatcherImpl$broadcast$2.invokeSuspend(EventDispatcher.kt:90)
        at net.mamoe.mirai.internal.network.components.EventDispatcherImpl$broadcast$2.invoke(EventDispatcher.kt)
        at net.mamoe.mirai.internal.network.components.EventDispatcherImpl$broadcast$2.invoke(EventDispatcher.kt)
        at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:89)
        at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:166)
        at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
        at net.mamoe.mirai.internal.network.components.EventDispatcherImpl.broadcast$suspendImpl(EventDispatcher.kt:89)
        at net.mamoe.mirai.internal.network.components.EventDispatcherImpl.broadcast(EventDispatcher.kt)
        at net.mamoe.mirai.internal.network.components.EventDispatcherImpl$broadcastAsync$job$1.invokeSuspend(EventDispatcher.kt:105)
        at net.mamoe.mirai.internal.network.components.EventDispatcherImpl$broadcastAsync$job$1.invoke(EventDispatcher.kt)
        at net.mamoe.mirai.internal.network.components.EventDispatcherImpl$broadcastAsync$job$1.invoke(EventDispatcher.kt)
        at kotlinx.coroutines.intrinsics.UndispatchedKt.startCoroutineUndispatched(Undispatched.kt:55)
        at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:112)
        at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:126)
        at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:56)
        at kotlinx.coroutines.BuildersKt.launch(Unknown Source)
        at net.mamoe.mirai.internal.network.components.EventDispatcherImpl.broadcastAsync-kKe4JaQ(EventDispatcher.kt:102)
        at net.mamoe.mirai.internal.network.components.EventDispatcher.broadcastAsync-kKe4JaQ$default(EventDispatcher.kt:35)
        at net.mamoe.mirai.internal.network.components.EventBroadcasterPacketHandler.impl(PacketHandler.kt:87)
        at net.mamoe.mirai.internal.network.components.EventBroadcasterPacketHandler.impl(PacketHandler.kt:80)
        at net.mamoe.mirai.internal.network.components.EventBroadcasterPacketHandler.handlePacket(PacketHandler.kt:73)
        at net.mamoe.mirai.internal.network.components.PacketHandlerChain.handlePacket(PacketHandler.kt:42)
        at net.mamoe.mirai.internal.network.handler.NetworkHandlerSupport$collectReceived$3.invokeSuspend(NetworkHandlerSupport.kt:84)
        at net.mamoe.mirai.internal.network.handler.NetworkHandlerSupport$collectReceived$3.invoke(NetworkHandlerSupport.kt)
        at net.mamoe.mirai.internal.network.handler.NetworkHandlerSupport$collectReceived$3.invoke(NetworkHandlerSupport.kt)
        at kotlinx.coroutines.intrinsics.UndispatchedKt.startCoroutineUndispatched(Undispatched.kt:55)
        at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:112)
        at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:126)
        at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:56)
        at kotlinx.coroutines.BuildersKt.launch(Unknown Source)
        at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch$default(Builders.common.kt:47)
        at kotlinx.coroutines.BuildersKt.launch$default(Unknown Source)
        at net.mamoe.mirai.internal.network.handler.NetworkHandlerSupport.collectReceived$mirai_core(NetworkHandlerSupport.kt:82)
        at net.mamoe.mirai.internal.network.impl.netty.NettyNetworkHandler$PacketDecodePipeline$send$1.invokeSuspend(NettyNetworkHandler.kt:178)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        at java.lang.Thread.run(Unknown Source)
2022-05-18 10:01:23 V/Bot 2228145613: 叶孤城(xx) -> 我吗?

这个请另开issue

azwc commented 2 years ago

@only52607

java version "1.8.0_333"
Java(TM) SE Runtime Environment (build 1.8.0_333-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.333-b02, mixed mode)
only52607 commented 2 years ago

可以试一下更换11以上版本的openjdk

azwc commented 2 years ago

可以试一下更换11以上版本的openjdk

换了11没报JCE cannot authenticate the provider BC了