Skip to content

Commit e18a708

Browse files
authored
Merge pull request #179 from WeBankFinTech/release/1.0.22
Release/1.0.22
2 parents 2567878 + c3879b4 commit e18a708

File tree

4 files changed

+77
-15
lines changed

4 files changed

+77
-15
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ WeIdentity JAVA SDK安装部署工具
1111

1212
| weid-build-tools 版本 | weid-java-sdk 版本 | weid-contract-java 版本 |
1313
| :---- | :---- | :---- |
14+
| v1.0.22 | v1.7.1 | v1.2.28 |
1415
| v1.0.21 | v1.7.0 | v1.2.27 |
1516
| v1.0.20 | v1.6.7 | v1.2.26 |
1617
| v1.0.19 | v1.6.6 | v1.2.24 |

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.0.21
1+
1.0.22

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
org.gradle.jvmargs='-Dfile.encoding=UTF-8'
2-
weidSdkVersion=1.7.0
2+
weidSdkVersion=1.7.1
33
repoType=cn
44
jdkTlsNamedGroups=secp256r1,secp256k1
55
signing.keyId=

src/main/java/com/webank/weid/service/v2/Channel2Connections.java

Lines changed: 74 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
package com.webank.weid.service.v2;
2121

22-
import java.io.InputStream;
2322
import java.util.ArrayList;
2423
import java.util.List;
2524
import java.util.Objects;
@@ -30,10 +29,12 @@
3029
import org.fisco.bcos.channel.handler.ChannelConnections;
3130
import org.fisco.bcos.channel.handler.ChannelHandler;
3231
import org.fisco.bcos.channel.handler.ConnectionInfo;
32+
import org.fisco.bcos.web3j.crypto.EncryptType;
3333
import org.fisco.bcos.web3j.tuples.generated.Tuple3;
3434
import org.slf4j.Logger;
3535
import org.slf4j.LoggerFactory;
3636
import org.springframework.core.io.Resource;
37+
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
3738
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
3839

3940
import io.netty.bootstrap.Bootstrap;
@@ -56,7 +57,11 @@
5657
public class Channel2Connections extends ChannelConnections {
5758

5859
private static Logger logger = LoggerFactory.getLogger(ChannelConnections.class);
59-
60+
/** SSL connection default configuration */
61+
private static final String CA_CERT = "classpath:ca.crt";
62+
63+
private static final String SSL_CERT = "classpath:node.crt";
64+
private static final String SSL_KEY = "classpath:node.key";
6065
private long idleTimeout = (long) 10000;
6166
private long connectTimeout = (long) 10000;
6267
private long sslHandShakeTimeout = (long) 10000;
@@ -67,7 +72,7 @@ public class Channel2Connections extends ChannelConnections {
6772

6873
private boolean running = false;
6974

70-
public void startConnect() throws SSLException {
75+
public void startConnect() throws Exception {
7176
if (running) {
7277
logger.debug("running");
7378
return;
@@ -86,7 +91,10 @@ public void startConnect() throws SSLException {
8691
final ChannelConnections selfService = this;
8792
final ThreadPoolTaskExecutor selfThreadPool = super.getThreadPool();
8893

89-
SslContext sslCtx = initSslContextForConnect();
94+
SslContext sslContext =
95+
(EncryptType.encryptType == EncryptType.ECDSA_TYPE)
96+
? initSslContext()
97+
: initSMSslContext();
9098
logger.debug(" connect sslcontext init success");
9199

92100
bootstrap.handler(
@@ -100,7 +108,7 @@ public void initChannel(SocketChannel ch) throws Exception {
100108
handler.setConnections(selfService);
101109
handler.setThreadPool(selfThreadPool);
102110

103-
SslHandler sslHandler = sslCtx.newHandler(ch.alloc());
111+
SslHandler sslHandler = sslContext.newHandler(ch.alloc());
104112
/** set ssl handshake timeout */
105113
sslHandler.setHandshakeTimeoutMillis(sslHandShakeTimeout);
106114

@@ -184,27 +192,80 @@ public void initChannel(SocketChannel ch) throws Exception {
184192
logger.debug(" start connect end. ");
185193
}
186194

187-
private SslContext initSslContextForConnect() throws SSLException {
195+
private SslContext initSslContext() throws SSLException {
188196
SslContext sslCtx;
189197
try {
198+
199+
if (!isEnableOpenSSL()) {
200+
System.setProperty("jdk.tls.namedGroups", "secp256k1");
201+
logger.info("set jdk.tls.namedGroups option");
202+
}
203+
204+
PathMatchingResourcePatternResolver resolver =
205+
new PathMatchingResourcePatternResolver();
206+
207+
// check ssl cert file
190208
Resource caResource = getCaCert();
191-
InputStream caInputStream = caResource.getInputStream();
192209
Resource keystorecaResource = getSslCert();
193210
Resource keystorekeyResource = getSslKey();
194211

212+
// check if ca.crt exist
213+
if (Objects.isNull(caResource) || !caResource.exists()) {
214+
Resource resource = resolver.getResource(CA_CERT);
215+
if (Objects.nonNull(resource) && resource.exists()) {
216+
caResource = resource;
217+
} else {
218+
throw new RuntimeException(
219+
(Objects.nonNull(caResource) ? "ca.crt" : caResource.getFilename())
220+
+ " not exist ");
221+
}
222+
}
223+
224+
// check if sdk.crt exist, if not , check the default value node.crt
225+
if (Objects.isNull(keystorecaResource) || !keystorecaResource.exists()) {
226+
Resource resource = resolver.getResource(SSL_CERT);
227+
if (Objects.nonNull(resource) && resource.exists()) {
228+
keystorecaResource = resource;
229+
} else {
230+
throw new RuntimeException(
231+
(Objects.nonNull(keystorecaResource)
232+
? "sdk.crt"
233+
: keystorecaResource.getFilename())
234+
+ " not exist ");
235+
}
236+
}
237+
238+
// check if sdk.key exist, if not, check the default value sdk.key
239+
if (Objects.isNull(keystorekeyResource) || !keystorekeyResource.exists()) {
240+
Resource resource = resolver.getResource(SSL_KEY);
241+
if (Objects.nonNull(resource) && resource.exists()) {
242+
keystorekeyResource = resource;
243+
} else {
244+
throw new RuntimeException(
245+
(Objects.nonNull(keystorekeyResource)
246+
? "sdk.key"
247+
: keystorekeyResource.getFilename())
248+
+ " not exist ");
249+
}
250+
}
251+
252+
logger.info(
253+
" ca certificate: {}, sdk certificate: {}, sdk key: {}, enableOpenSsl: {}",
254+
caResource.getFilename(),
255+
keystorecaResource.getFilename(),
256+
keystorekeyResource.getFilename(),
257+
isEnableOpenSSL());
258+
195259
sslCtx =
196260
SslContextBuilder.forClient()
197-
.trustManager(caInputStream)
261+
.trustManager(caResource.getInputStream())
198262
.keyManager(
199263
keystorecaResource.getInputStream(),
200264
keystorekeyResource.getInputStream())
201-
.sslProvider(SslProvider.OPENSSL)
265+
.sslProvider(isEnableOpenSSL() ? SslProvider.OPENSSL : SslProvider.JDK)
202266
.build();
203267
} catch (Exception e) {
204-
logger.error(
205-
" Failed to initialize the SSLContext, error mesage: {}, error: {} ",
206-
e.getMessage(),
207-
e.getCause());
268+
logger.error(" Failed to initialize the SSLContext, e: {} ", e.getCause());
208269
throw new SSLException(" Failed to initialize the SSLContext: " + e.getMessage());
209270
}
210271
return sslCtx;

0 commit comments

Comments
 (0)