java-1.8.0-openjdk-1.8.0.252-2\jre\bin\sunmscapi.dll: Can't find dependent libraries
imweijh opened this issue · comments
2020-05-14 10:18:29.957 [main] INFO Application.main(Application.java:22) - ***************************************************
2020-05-14 10:18:29.957 [main] INFO Application.main(Application.java:23) - ************** MDGW Starting **************
2020-05-14 10:18:29.957 [main] INFO Application.main(Application.java:24) - ***************************************************
2020-05-14 10:18:29.973 [main] INFO b.a(MdgwConfig.java:115) - Reading configuration: ./cfg/mdgw.properties
2020-05-14 10:18:29.989 [main] INFO Application.a(Application.java:96) - ***************** Hardware and OS information ******************
2020-05-14 10:18:29.989 [main] INFO Application.a(Application.java:97) - OS Name = Windows 2003
2020-05-14 10:18:29.989 [main] INFO Application.a(Application.java:98) - OS Arch = x86
2020-05-14 10:18:29.989 [main] INFO Application.a(Application.java:99) - OS Version = 5.2
2020-05-14 10:18:29.989 [main] INFO Application.a(Application.java:100) - OS Processors = 16
2020-05-14 10:18:29.989 [main] INFO Application.a(Application.java:101) - Java Vendor = Oracle Corporation
2020-05-14 10:18:29.989 [main] INFO Application.a(Application.java:102) - Java Version = 1.8.0_252
2020-05-14 10:18:29.989 [main] INFO Application.a(Application.java:103) - Java VM Name = OpenJDK Server VM
2020-05-14 10:18:29.989 [main] INFO Application.a(Application.java:104) - User dir = D:\SSE_MDGW-0.4.1\mdgw
2020-05-14 10:18:29.989 [main] INFO Application.a(Application.java:105) - Jvm Argument = [-Xmx512m, -Xms512m, -XX:+HeapDumpOnOutOfMemoryError, -Dlog4j.configurationFile=./cfg/log4j2.xml]
2020-05-14 10:18:29.989 [main] INFO Application.a(Application.java:106) - Mdgw Version = 0.4.1
2020-05-14 10:18:29.989 [main] INFO Application.a(Application.java:107) - Protocol Version = 1.4
2020-05-14 10:18:29.989 [main] INFO Application.a(Application.java:108) - Vss Appl Version = 0.30
2020-05-14 10:18:29.989 [main] INFO Application.a(Application.java:109) - ****************************************************************
2020-05-14 10:18:30.067 [main] INFO d.c(TaskConfigManager.java:120) - Reading configuration UdpGround-Tasks.json
2020-05-14 10:18:30.098 [main] INFO a.a(MdgwQuotaStats.java:40) - task fileTask register quota stats.
2020-05-14 10:18:30.114 [main] INFO a.a(MdgwQuotaStats.java:40) - task marketDataTask register quota stats.
2020-05-14 10:18:30.114 [main] INFO a.a(MdgwQuotaStats.java:40) - task forwardTask register quota stats.
2020-05-14 10:18:30.129 [main] ERROR Application.main(Application.java:65) - exception
java.lang.UnsatisfiedLinkError: C:\Program Files\ojdkbuild\java-1.8.0-openjdk-1.8.0.252-2\jre\bin\sunmscapi.dll: Can't find dependent libraries
at java.lang.ClassLoader$NativeLibrary.load(Native Method) ~[?:1.8.0_252]
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1934) ~[?:1.8.0_252]
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1838) ~[?:1.8.0_252]
at java.lang.Runtime.loadLibrary0(Runtime.java:870) ~[?:1.8.0_252]
at java.lang.System.loadLibrary(System.java:1124) ~[?:1.8.0_252]
at sun.security.mscapi.SunMSCAPI$1.run(SunMSCAPI.java:52) ~[sunmscapi.jar:1.8.0_252]
at sun.security.mscapi.SunMSCAPI$1.run(SunMSCAPI.java:50) ~[sunmscapi.jar:1.8.0_252]
at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_252]
at sun.security.mscapi.SunMSCAPI.<clinit>(SunMSCAPI.java:50) ~[sunmscapi.jar:1.8.0_252]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_252]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_252]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_252]
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_252]
at java.lang.Class.newInstance(Class.java:442) ~[?:1.8.0_252]
at sun.security.jca.ProviderConfig$2.run(ProviderConfig.java:221) ~[?:1.8.0_252]
at sun.security.jca.ProviderConfig$2.run(ProviderConfig.java:206) ~[?:1.8.0_252]
at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_252]
at sun.security.jca.ProviderConfig.doLoadProvider(ProviderConfig.java:206) ~[?:1.8.0_252]
at sun.security.jca.ProviderConfig.getProvider(ProviderConfig.java:187) ~[?:1.8.0_252]
at sun.security.jca.ProviderList.getProvider(ProviderList.java:233) ~[?:1.8.0_252]
at sun.security.jca.ProviderList.getIndex(ProviderList.java:263) ~[?:1.8.0_252]
at sun.security.jca.ProviderList.getProviderConfig(ProviderList.java:247) ~[?:1.8.0_252]
at sun.security.jca.ProviderList.getProvider(ProviderList.java:253) ~[?:1.8.0_252]
at sun.security.jca.GetInstance.getService(GetInstance.java:81) ~[?:1.8.0_252]
at sun.security.jca.GetInstance.getInstance(GetInstance.java:206) ~[?:1.8.0_252]
at java.security.Security.getImpl(Security.java:698) ~[?:1.8.0_252]
at java.security.KeyStore.getInstance(KeyStore.java:896) ~[?:1.8.0_252]
at com.sse.certificate.b.d.a(UsbRsaCaDevice.java:39) ~[?:?]
at com.sse.certificate.a.g(CertificationManager.java:277) ~[?:?]
at com.sse.certificate.a.a(CertificationManager.java:43) ~[?:?]
at com.sse.Application.main(Application.java:39) [?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_252]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_252]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_252]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_252]
at com.security.sse.d.g.a(SecurityJarLauncher.java:66) [mdgw.jar:?]
at com.security.sse.BootStrap.main(BootStrap.java:10) [mdgw.jar:?]
2020-05-14 10:18:30.129 [main] ERROR Application.a(Application.java:88) - mdgw app exit. reason C:\Program Files\ojdkbuild\java-1.8.0-openjdk-1.8.0.252-2\jre\bin\sunmscapi.dll: Can't find dependent libraries
The "Java Version = 1.8.0_191-1-ojdkbuild" is OK
Hi, thanks for the report, let me re-check this. I don't think there were any local patches regarding MSCAPI.
Beginning from 8u252 sunmscapi.dll
additionally depends on system library ncrypt.dll
(API docs):
ncrypt.dll
180006298 Import Address Table
1800072B0 Import Name Table
0 time date stamp
0 Index of first forwarder reference
4B NCryptOpenStorageProvider
46 NCryptImportKey
41 NCryptExportKey
51 NCryptVerifySignature
50 NCryptTranslateHandle
4F NCryptSignHash
44 NCryptFreeObject
45 NCryptGetProperty
This new dependency comes from JDK-8230978.
Is is possible to check whether ncrypt.dll
is available in your environment?
Thanks.
Maybe the windows 2003 is too old and no ncrypt.dll
Yes, this NCrypt API is Windows 2008+, it is a pity this change breaks 2003 support, but I can understand why this is done. These security changes are backported to OpenJDK 8 to allow adding support for TLS 1.3 there. For OpenJDK 8 to remain usable for some more years (2026 at least), TLS 1.3 is necessary. I don't think that any of commercial OpenJDK vendors provide support for running on Windows 2003, so it was a matter of time when it became broken on 2003. Continue using 8u242 may be the best possible option for Windows 2003 setup.
Thanks for your works, ojdkbuild is the only openjdk run on win2003.
I will keep with 8u242.
closed
It seems the exported C API prefix also changed
U252: _Java_sun_security_mscapi_C*
U242:Java_sun_security_mscapi*
I'd like to know if there a possibility to revert (replace) the crypto+jsse component to u242 while using latest update for the rest.
I'm on WinXP and been using JRE 8U241+ JavaFX U111, which allow me to use BlueJ
I don't care about TLS 1.3. just want continual updates.
is there a simple jar to test crypto provider functionality?