15810770710@163.com vor 3 Jahren
Ursprung
Commit
74e12bdfe1
44 geänderte Dateien mit 3637 neuen und 0 gelöschten Zeilen
  1. 8 0
      HELP.md
  2. 75 0
      bjcaRoot/BJCA_Config.xml
  3. 9 0
      bjcaRoot/BJCAlog/XTXCoreSvr2/logXTXCoreSvr2.log
  4. 7 0
      bjcaRoot/BJCAlog/xtx/XTXAppCOM.log
  5. 41 0
      bjcaRoot/SVSClient.properties
  6. 137 0
      bjcaRoot/logs/SVSClient_error.log
  7. 356 0
      bjcaRoot/logs/SVSClient_system.log
  8. 299 0
      pom.xml
  9. 35 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000027/App.java
  10. 68 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000027/ApplicationInitialize.java
  11. 36 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000027/SwaggerConfig.java
  12. 196 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000027/action/ChannelAction.java
  13. 51 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000027/constant/SjjhConstant.java
  14. 57 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000027/service/ChannelService.java
  15. 939 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000027/service/ChannelServiceImpl.java
  16. 107 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000027/util/DESedeUtil.java
  17. 83 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000027/util/DataSignature.java
  18. 56 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000027/util/EncryptedReservedData.java
  19. 39 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000027/vo/ApplyRequestObject.java
  20. 29 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000027/vo/ApplyResponseObject.java
  21. 20 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000027/vo/BaseObject.java
  22. 33 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000027/vo/CompositeIdentityInfoJsonResolveObject.java
  23. 31 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000027/vo/DataRequestObject.java
  24. 31 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000027/vo/DataResponseObject.java
  25. 32 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000027/vo/IdentityInfoJsonResolveObject.java
  26. 35 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000027/vo/PhotoIdentityInfoJsonResolveObject.java
  27. 75 0
      src/main/resources/bjcaRoot/BJCA_Config.xml
  28. 9 0
      src/main/resources/bjcaRoot/BJCAlog/XTXCoreSvr2/logXTXCoreSvr2.log
  29. 7 0
      src/main/resources/bjcaRoot/BJCAlog/xtx/XTXAppCOM.log
  30. 41 0
      src/main/resources/bjcaRoot/SVSClient.properties
  31. 137 0
      src/main/resources/bjcaRoot/logs/SVSClient_error.log
  32. 356 0
      src/main/resources/bjcaRoot/logs/SVSClient_system.log
  33. 86 0
      src/main/resources/config/application-abcd.yml
  34. 3 0
      src/main/resources/config/banner.txt
  35. 25 0
      src/main/resources/config/bootstrap.yml
  36. 44 0
      src/main/resources/config/cssconfig.properties
  37. 37 0
      src/main/resources/config/logback-spring.xml
  38. 7 0
      src/main/resources/docker/Dockerfile
  39. BIN
      src/main/resources/lib/BJCACTID.jar
  40. BIN
      src/main/resources/lib/BJCA_LOG.jar
  41. BIN
      src/main/resources/lib/SVSClient.jar
  42. BIN
      src/main/resources/lib/commons-httpclient-3.1.jar
  43. BIN
      src/main/resources/lib/commons-logging-1.1.1.jar
  44. BIN
      src/main/resources/lib/frictidApi-1.0.0.jar

+ 8 - 0
HELP.md

@@ -0,0 +1,8 @@
+# Getting Started
+
+### Reference Documentation
+For further reference, please consider the following sections:
+
+* [Official Apache Maven documentation](https://maven.apache.org/guides/index.html)
+* [Spring Boot Maven Plugin Reference Guide](https://docs.spring.io/spring-boot/docs/2.1.7.RELEASE/maven-plugin/)
+

+ 75 - 0
bjcaRoot/BJCA_Config.xml

@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8" standalone="no" ?>
+<BJCAROOT>
+<BJCALib/>
+<Device>
+<BJSOFT>
+<DevName>BJCASOFT</DevName>
+<provider>BJCA Soft</provider>
+<privateDll/>
+</BJSOFT>
+<BJCSP0001>
+<DevName>BJCACSP</DevName>
+<provider>BJCA Soft RSA Full Cryptographic Provider v1.0</provider>
+<privateDll/>
+</BJCSP0001>
+<BJCSP0002>
+<DevName>明华</DevName>
+<provider>M&amp;W eKey XCSP</provider>
+<privateDll>BjcaKey_MW.dll</privateDll>
+</BJCSP0002>
+<BJCSP0003>
+<DevName>飞天epass3000</DevName>
+<provider>EnterSafe CSP (ePass3000) v1.0 for BJCA</provider>
+<privateDll>BjcaKey_FT3k.dll</privateDll>
+</BJCSP0003>
+<BJCSP0004>
+<DevName>飞天epass2000</DevName>
+<provider>EnterSafe CSP (ePass2000-FT11) v1.0 for BJCA</provider>
+<privateDll>BjcaKey_FT11.dll</privateDll>
+</BJCSP0004>
+<BJCSP0005>
+<DevName>天地融</DevName>
+<provider>Tendyron OnKey CSP BJCA v1.0</provider>
+<privateDll>BjcaKey_tdr.dll</privateDll>
+</BJCSP0005>
+<BJCSP0009>
+<DevName>海泰CSP</DevName>
+<provider>Haitai Cryptographic Service Provider</provider>
+<privateDll>BjcaKey_ht.dll</privateDll>
+</BJCSP0009>
+</Device>
+<Trust>
+<VerifyType>1</VerifyType>
+<CA0A01>
+<CAName>BJCA UCA</CAName>
+<uniqIdOid>2.16.840.1.113732.2</uniqIdOid>
+</CA0A01>
+<CA0B01>
+<CAName>BeiJing GCA</CAName>
+<uniqIdOid>2.16.840.1.113732.2</uniqIdOid>
+</CA0B01>
+<CA0B02>
+<CAName>BJCA</CAName>
+<uniqIdOid>2.16.840.1.113732.2</uniqIdOid>
+</CA0B02>
+<CA0C01>
+<CAName>Public Trust CA-1</CAName>
+<uniqIdOid>2.16.840.1.113732.2</uniqIdOid>
+</CA0C01>
+<CA0C02>
+<CAName>Public Trust CA-2</CAName>
+<uniqIdOid>2.16.840.1.113732.2</uniqIdOid>
+</CA0C02>
+<CA0E01>
+<CAName>UTrust HACA</CAName>
+<uniqIdOid>2.16.840.1.113732.2</uniqIdOid>
+</CA0E01>
+<CA0E02>
+<CAName>UTrust SCCA</CAName>
+<uniqIdOid>2.16.840.1.113732.2</uniqIdOid>
+</CA0E02>
+</Trust>
+<Cert>
+
+</Cert>
+</BJCAROOT>

+ 9 - 0
bjcaRoot/BJCAlog/XTXCoreSvr2/logXTXCoreSvr2.log

@@ -0,0 +1,9 @@
+[2018-09-13 17:49:54.356] [loglevel=trace ] [status=0x00000000] <<===>> [pid(XTXCoreSvr.exe:4080) tid(4084)] [main.cpp(488)] [main] [xtxcoresvr2 starting...]
+[2018-09-13 17:49:54.607] [loglevel=trace ] [status=0x00000000] <<===>> [pid(XTXCoreSvr.exe:4080) tid(4084)] [mod_websocket_xtxapp.cpp(168)] [xtxapp_init] [websocket xtxapp_init]
+[2018-09-13 17:49:55.052] [loglevel=trace ] [status=0x00000000] <<===>> [pid(XTXCoreSvr.exe:4080) tid(4084)] [mod_websocket_xtxapp.cpp(168)] [xtxapp_init] [websocket xtxapp_init]
+[2018-09-13 17:49:55.054] [loglevel=trace ] [status=0x00000000] <<===>> [pid(XTXCoreSvr.exe:4080) tid(4084)] [log.c(808)] [ap_log_pid] [pid 4080]
+[2018-09-13 17:49:55.340] [loglevel=trace ] [status=0x00000000] <<===>> [pid(XTXCoreSvr.exe:5696) tid(5700)] [main.cpp(488)] [main] [xtxcoresvr2 starting...]
+[2018-09-13 17:49:55.340] [loglevel=trace ] [status=0x00000000] <<===>> [pid(XTXCoreSvr.exe:5696) tid(5700)] [mod_websocket_xtxapp.cpp(168)] [xtxapp_init] [websocket xtxapp_init]
+[2018-09-13 17:49:55.625] [loglevel=trace ] [status=0x00000000] <<===>> [pid(XTXCoreSvr.exe:5696) tid(5700)] [mod_websocket_xtxapp.cpp(168)] [xtxapp_init] [websocket xtxapp_init]
+[2018-09-13 17:49:55.676] [loglevel=notice] [status=0x00000000] <<===>> [pid(XTXCoreSvr.exe:5696) tid(5700)] [mod_websocket.cpp(1293)] [GetSessionConfig] [cannot read out regedit configure "session_expiry"!]
+[2018-09-13 17:49:55.678] [loglevel=notice] [status=0x00000000] <<===>> [pid(XTXCoreSvr.exe:5696) tid(5700)] [mod_websocket.cpp(1304)] [GetSessionConfig] [cannot read out regedit configure "local_login"!]

+ 7 - 0
bjcaRoot/BJCAlog/xtx/XTXAppCOM.log

@@ -0,0 +1,7 @@
+[2018-09-14 08:02:12.486] [loglevel=error!] [status=0x00000000] <<===>> [pid(BjcaCertAide.exe:10044) tid(8672)] [cryptousbicapi.cpp(145)] [SKFAPIWrapper::SKFAPIWrapper] [ProvName(BJCAMSSP GM Provider) can not loaded library(BjcaMssp.dll) try again...]
+[2018-09-14 08:02:12.527] [loglevel=error!] [status=0x00000000] <<===>> [pid(BjcaCertAide.exe:10044) tid(8672)] [cryptousbicwrap.cpp(2333)] [SKFProviderWrap::LoadImplLibrary] [ProvName(BJCAMSSP GM Provider) Can not load DSO(BjcaMssp.dll)!]
+[2018-09-14 08:02:12.536] [loglevel=error!] [status=0x00000000] <<===>> [pid(BjcaCertAide.exe:10044) tid(8672)] [cryptoman.cpp(542)] [CryptokenManager::OnFindToken] [call Provider OnDeviceChange error!]
+[2018-09-14 08:02:14.226] [loglevel=error!] [status=0x00000000] <<===>> [pid(BjcaCertAide.exe:10044) tid(16808)] [cryptobucket.cpp(2708)] [CryptokenBucket::HashData] [invalid parameter!]
+[2018-09-14 08:02:14.246] [loglevel=error!] [status=0x0b000034] <<===>> [pid(BjcaCertAide.exe:10044) tid(16808)] [XTXApp.cpp(1585)] [CXTXApp::SOF_HashData] [hashAlgId:4 InDataLength:0 HashData error!]
+[2018-09-14 09:02:14.222] [loglevel=error!] [status=0x00000000] <<===>> [pid(BjcaCertAide.exe:10044) tid(14300)] [cryptobucket.cpp(2708)] [CryptokenBucket::HashData] [invalid parameter!]
+[2018-09-14 09:02:14.225] [loglevel=error!] [status=0x0b000034] <<===>> [pid(BjcaCertAide.exe:10044) tid(14300)] [XTXApp.cpp(1585)] [CXTXApp::SOF_HashData] [hashAlgId:4 InDataLength:0 HashData error!]

+ 41 - 0
bjcaRoot/SVSClient.properties

@@ -0,0 +1,41 @@
+##############################################
+##�﷨˵����
+#1	�� #��ͷ����Ϊע���У�
+#2	ÿ��ֻ����һ����䣻
+#3	ÿ������ַ���Ŀ256���������ո�
+#4	�����������Ŀ��У�
+#5	��[��ʼ����]��β��ʾ��ʼһ������
+#6      ����ͬһ���ε����ݱ������ͬһ�����ڣ�
+#7      =��ǰ��Ϊ��Ŀ���ƣ����Ϊ��Ŀ��ֵ
+#8      ����֧�ֵĶ�������Ŀ����Ϊ�ڲ�����õģ�����������չ
+##################################################
+#����������
+serverNum=1
+#������һ�ĵ�ַ�Ͷ˿�
+address1=115.182.208.245
+port1=8000
+#���������ĵ�ַ�Ͷ˿�
+#address2=192.168.51.4
+#port2=8000
+
+#���²��������޸�����ϵBJCA������Ա
+#��������
+minConnNum=10
+#���������
+maxConnNum=20
+
+
+#��ʱʱ��(����)
+timeout=1000
+
+#�Ƿ���DEBUG
+isDebug=false
+
+#�ͻ���Ĭ���ַ���
+encoding=GBK
+
+#����ģʽ��1Ϊ�����ӣ�0Ϊ�����ӣ�
+connectionMode=1
+
+#���ӳ�ʱʱ�䣬��ѡ
+connectionTimeout=2000

+ 137 - 0
bjcaRoot/logs/SVSClient_error.log

@@ -0,0 +1,137 @@
+INFO   [2018-09-14 10:20:00 734] 192.168.8.110 connection error ! create new connection exception !
+INFO   [2018-09-14 10:20:00 734] cn.org.bjca.client.exceptions.ConnectException: Connect server 192.168.8.110:8000 error !
+	at cn.org.bjca.client.framework.connectionpool.ShortConnectionPool.newConnection(ShortConnectionPool.java:141)
+	at cn.org.bjca.client.framework.connectionpool.ShortConnectionPool.getC(ShortConnectionPool.java:82)
+	at cn.org.bjca.client.framework.transport.TransportTool.writeAndReadMessage(TransportTool.java:57)
+	at cn.org.bjca.client.framework.transport.TransportTool.dealMessageForSVS(TransportTool.java:29)
+	at cn.org.bjca.client.security.SecurityEngine.getActiveThreadNum(SecurityEngine.java:2566)
+	at cn.org.bjca.client.security.DefaultSecurityEngineDeal.getActiveThreadNum(DefaultSecurityEngineDeal.java:963)
+	at cn.org.bjca.client.security.SecurityEngineDeal.getInstance(SecurityEngineDeal.java:183)
+	at com.fri.ctid.security.bjca.Api.initConnection(Api.java:25)
+	at com.anxin.data.DataSignature.signDataByP7DetachForJit(DataSignature.java:40)
+	at com.anxin.test.RunDemo.main(RunDemo.java:65)
+Caused by: java.net.ConnectException: Connection refused: connect
+	at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
+	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
+	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
+	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
+	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
+	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
+	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
+	at java.net.Socket.connect(Socket.java:589)
+	at cn.org.bjca.client.framework.connection.Connection.<init>(Connection.java:27)
+	at cn.org.bjca.client.framework.connectionpool.ShortConnectionPool.newConnection(ShortConnectionPool.java:134)
+	... 9 more
+
+INFO   [2018-09-14 10:20:01 739] 192.168.8.110 connection error ! create new connection exception !
+INFO   [2018-09-14 10:20:01 740] cn.org.bjca.client.exceptions.ConnectException: Connect server 192.168.8.110:8000 error !
+	at cn.org.bjca.client.framework.connectionpool.ShortConnectionPool.newConnection(ShortConnectionPool.java:141)
+	at cn.org.bjca.client.framework.connectionpool.ShortConnectionPool.getC(ShortConnectionPool.java:82)
+	at cn.org.bjca.client.framework.transport.TransportTool.writeAndReadMessage(TransportTool.java:57)
+	at cn.org.bjca.client.framework.transport.TransportTool.dealMessageForSVS(TransportTool.java:29)
+	at cn.org.bjca.client.security.SecurityEngine.getActiveThreadNum(SecurityEngine.java:2566)
+	at cn.org.bjca.client.security.DefaultSecurityEngineDeal.getActiveThreadNum(DefaultSecurityEngineDeal.java:963)
+	at cn.org.bjca.client.security.SecurityEngineDeal.getInstance(SecurityEngineDeal.java:183)
+	at com.fri.ctid.security.bjca.Api.initConnection(Api.java:25)
+	at com.anxin.data.DataSignature.signDataByP7DetachForJit(DataSignature.java:40)
+	at com.anxin.test.RunDemo.main(RunDemo.java:65)
+Caused by: java.net.ConnectException: Connection refused: connect
+	at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
+	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
+	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
+	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
+	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
+	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
+	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
+	at java.net.Socket.connect(Socket.java:589)
+	at cn.org.bjca.client.framework.connection.Connection.<init>(Connection.java:27)
+	at cn.org.bjca.client.framework.connectionpool.ShortConnectionPool.newConnection(ShortConnectionPool.java:134)
+	... 9 more
+
+INFO   [2018-09-14 10:20:02 743] 192.168.8.110 connection error ! create new connection exception !
+INFO   [2018-09-14 10:20:02 744] cn.org.bjca.client.exceptions.ConnectException: Connect server 192.168.8.110:8000 error !
+	at cn.org.bjca.client.framework.connectionpool.ShortConnectionPool.newConnection(ShortConnectionPool.java:141)
+	at cn.org.bjca.client.framework.connectionpool.ShortConnectionPool.getC(ShortConnectionPool.java:82)
+	at cn.org.bjca.client.framework.transport.TransportTool.writeAndReadMessage(TransportTool.java:57)
+	at cn.org.bjca.client.framework.transport.TransportTool.dealMessageForSVS(TransportTool.java:29)
+	at cn.org.bjca.client.security.SecurityEngine.getActiveThreadNum(SecurityEngine.java:2566)
+	at cn.org.bjca.client.security.DefaultSecurityEngineDeal.getActiveThreadNum(DefaultSecurityEngineDeal.java:963)
+	at cn.org.bjca.client.security.SecurityEngineDeal.getInstance(SecurityEngineDeal.java:183)
+	at com.fri.ctid.security.bjca.Api.initConnection(Api.java:25)
+	at com.anxin.data.DataSignature.signDataByP7DetachForJit(DataSignature.java:40)
+	at com.anxin.test.RunDemo.main(RunDemo.java:65)
+Caused by: java.net.ConnectException: Connection refused: connect
+	at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
+	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
+	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
+	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
+	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
+	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
+	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
+	at java.net.Socket.connect(Socket.java:589)
+	at cn.org.bjca.client.framework.connection.Connection.<init>(Connection.java:27)
+	at cn.org.bjca.client.framework.connectionpool.ShortConnectionPool.newConnection(ShortConnectionPool.java:134)
+	... 9 more
+
+INFO   [2018-09-14 10:20:02 744] Get connection error!!!
+INFO   [2018-09-14 10:20:02 744] cn.org.bjca.client.exceptions.ConnectException
+	at cn.org.bjca.client.framework.connectionpool.ShortConnectionPool.getC(ShortConnectionPool.java:103)
+	at cn.org.bjca.client.framework.transport.TransportTool.writeAndReadMessage(TransportTool.java:57)
+	at cn.org.bjca.client.framework.transport.TransportTool.dealMessageForSVS(TransportTool.java:29)
+	at cn.org.bjca.client.security.SecurityEngine.getActiveThreadNum(SecurityEngine.java:2566)
+	at cn.org.bjca.client.security.DefaultSecurityEngineDeal.getActiveThreadNum(DefaultSecurityEngineDeal.java:963)
+	at cn.org.bjca.client.security.SecurityEngineDeal.getInstance(SecurityEngineDeal.java:183)
+	at com.fri.ctid.security.bjca.Api.initConnection(Api.java:25)
+	at com.anxin.data.DataSignature.signDataByP7DetachForJit(DataSignature.java:40)
+	at com.anxin.test.RunDemo.main(RunDemo.java:65)
+
+INFO   [2018-09-14 10:20:03 758] 192.168.8.110 connection error ! create new connection exception !
+INFO   [2018-09-14 10:20:03 758] cn.org.bjca.client.exceptions.ConnectException: Connect server 192.168.8.110:8000 error !
+	at cn.org.bjca.client.framework.connectionpool.ShortConnectionPool.newConnection(ShortConnectionPool.java:141)
+	at cn.org.bjca.client.framework.connectionpool.ShortConnectionPool.getC(ShortConnectionPool.java:82)
+	at cn.org.bjca.client.framework.transport.TransportTool.writeAndReadMessage(TransportTool.java:57)
+	at cn.org.bjca.client.framework.transport.TransportTool.dealMessageForSVS(TransportTool.java:29)
+	at cn.org.bjca.client.security.SecurityEngine.getActiveThreadNum(SecurityEngine.java:2566)
+	at cn.org.bjca.client.security.DefaultSecurityEngineDeal.getActiveThreadNum(DefaultSecurityEngineDeal.java:963)
+	at cn.org.bjca.client.security.SecurityEngineDeal.getInstance(SecurityEngineDeal.java:183)
+	at com.fri.ctid.security.bjca.Api.initConnection(Api.java:25)
+	at com.anxin.data.DataSignature.signDataByP7DetachForJit(DataSignature.java:40)
+	at com.anxin.test.RunDemo.main(RunDemo.java:65)
+Caused by: java.net.ConnectException: Connection refused: connect
+	at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
+	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
+	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
+	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
+	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
+	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
+	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
+	at java.net.Socket.connect(Socket.java:589)
+	at cn.org.bjca.client.framework.connection.Connection.<init>(Connection.java:27)
+	at cn.org.bjca.client.framework.connectionpool.ShortConnectionPool.newConnection(ShortConnectionPool.java:134)
+	... 9 more
+
+INFO   [2018-09-14 10:20:04 761] 192.168.8.110 connection error ! create new connection exception !
+INFO   [2018-09-14 10:20:04 762] cn.org.bjca.client.exceptions.ConnectException: Connect server 192.168.8.110:8000 error !
+	at cn.org.bjca.client.framework.connectionpool.ShortConnectionPool.newConnection(ShortConnectionPool.java:141)
+	at cn.org.bjca.client.framework.connectionpool.ShortConnectionPool.getC(ShortConnectionPool.java:82)
+	at cn.org.bjca.client.framework.transport.TransportTool.writeAndReadMessage(TransportTool.java:57)
+	at cn.org.bjca.client.framework.transport.TransportTool.dealMessageForSVS(TransportTool.java:29)
+	at cn.org.bjca.client.security.SecurityEngine.getActiveThreadNum(SecurityEngine.java:2566)
+	at cn.org.bjca.client.security.DefaultSecurityEngineDeal.getActiveThreadNum(DefaultSecurityEngineDeal.java:963)
+	at cn.org.bjca.client.security.SecurityEngineDeal.getInstance(SecurityEngineDeal.java:183)
+	at com.fri.ctid.security.bjca.Api.initConnection(Api.java:25)
+	at com.anxin.data.DataSignature.signDataByP7DetachForJit(DataSignature.java:40)
+	at com.anxin.test.RunDemo.main(RunDemo.java:65)
+Caused by: java.net.ConnectException: Connection refused: connect
+	at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
+	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
+	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
+	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
+	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
+	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
+	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
+	at java.net.Socket.connect(Socket.java:589)
+	at cn.org.bjca.client.framework.connection.Connection.<init>(Connection.java:27)
+	at cn.org.bjca.client.framework.connectionpool.ShortConnectionPool.newConnection(ShortConnectionPool.java:134)
+	... 9 more
+

+ 356 - 0
bjcaRoot/logs/SVSClient_system.log

@@ -0,0 +1,356 @@
+INFO   [2018-09-14 10:19:59 702] ========================================
+INFO   [2018-09-14 10:19:59 702] Start use short connection !
+INFO   [2018-09-14 10:19:59 702] ========================================
+INFO   [2018-09-14 10:19:59 704] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 10:20:25 662] ========================================
+INFO   [2018-09-14 10:20:25 662] Start use short connection !
+INFO   [2018-09-14 10:20:25 662] ========================================
+INFO   [2018-09-14 10:20:25 663] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 10:20:51 867] ========================================
+INFO   [2018-09-14 10:20:51 868] Start use short connection !
+INFO   [2018-09-14 10:20:51 868] ========================================
+INFO   [2018-09-14 10:20:51 869] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 10:23:33 560] ========================================
+INFO   [2018-09-14 10:23:33 560] Start use short connection !
+INFO   [2018-09-14 10:23:33 561] ========================================
+INFO   [2018-09-14 10:23:33 561] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 10:23:52 634] ========================================
+INFO   [2018-09-14 10:23:52 634] Start use short connection !
+INFO   [2018-09-14 10:23:52 634] ========================================
+INFO   [2018-09-14 10:23:52 635] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 10:27:15 189] ========================================
+INFO   [2018-09-14 10:27:15 189] Start use short connection !
+INFO   [2018-09-14 10:27:15 190] ========================================
+INFO   [2018-09-14 10:27:15 191] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 10:33:31 872] ========================================
+INFO   [2018-09-14 10:33:31 873] Start use short connection !
+INFO   [2018-09-14 10:33:31 873] ========================================
+INFO   [2018-09-14 10:33:31 873] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 10:35:05 305] ========================================
+INFO   [2018-09-14 10:35:05 305] Start use short connection !
+INFO   [2018-09-14 10:35:05 305] ========================================
+INFO   [2018-09-14 10:35:05 306] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 10:39:17 470] ========================================
+INFO   [2018-09-14 10:39:17 471] Start use short connection !
+INFO   [2018-09-14 10:39:17 471] ========================================
+INFO   [2018-09-14 10:39:17 471] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 10:53:28 865] ========================================
+INFO   [2018-09-14 10:53:28 865] Start use short connection !
+INFO   [2018-09-14 10:53:28 865] ========================================
+INFO   [2018-09-14 10:53:28 867] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 10:53:32 360] ========================================
+INFO   [2018-09-14 10:53:32 360] Start use short connection !
+INFO   [2018-09-14 10:53:32 360] ========================================
+INFO   [2018-09-14 10:53:32 362] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 10:54:09 169] ========================================
+INFO   [2018-09-14 10:54:09 169] Start use short connection !
+INFO   [2018-09-14 10:54:09 169] ========================================
+INFO   [2018-09-14 10:54:09 171] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 10:59:18 721] ========================================
+INFO   [2018-09-14 10:59:18 721] Start use short connection !
+INFO   [2018-09-14 10:59:18 722] ========================================
+INFO   [2018-09-14 10:59:18 723] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 10:59:31 621] ========================================
+INFO   [2018-09-14 10:59:31 621] Start use short connection !
+INFO   [2018-09-14 10:59:31 621] ========================================
+INFO   [2018-09-14 10:59:31 622] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 11:00:51 148] ========================================
+INFO   [2018-09-14 11:00:51 149] Start use short connection !
+INFO   [2018-09-14 11:00:51 149] ========================================
+INFO   [2018-09-14 11:00:51 150] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 11:00:53 740] ========================================
+INFO   [2018-09-14 11:00:53 740] Start use short connection !
+INFO   [2018-09-14 11:00:53 740] ========================================
+INFO   [2018-09-14 11:00:53 741] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 11:02:40 65] ========================================
+INFO   [2018-09-14 11:02:40 66] Start use short connection !
+INFO   [2018-09-14 11:02:40 66] ========================================
+INFO   [2018-09-14 11:02:40 67] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 11:03:11 83] ========================================
+INFO   [2018-09-14 11:03:11 84] Start use short connection !
+INFO   [2018-09-14 11:03:11 84] ========================================
+INFO   [2018-09-14 11:03:11 85] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 11:07:10 5] ========================================
+INFO   [2018-09-14 11:07:10 6] Start use short connection !
+INFO   [2018-09-14 11:07:10 6] ========================================
+INFO   [2018-09-14 11:07:10 7] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-03 17:37:10 981] ========================================
+INFO   [2019-09-03 17:37:10 981] Start use short connection !
+INFO   [2019-09-03 17:37:10 981] ========================================
+INFO   [2019-09-03 17:37:10 981] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-03 17:38:36 771] ========================================
+INFO   [2019-09-03 17:38:36 771] Start use short connection !
+INFO   [2019-09-03 17:38:36 771] ========================================
+INFO   [2019-09-03 17:38:36 772] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-03 17:39:27 605] ========================================
+INFO   [2019-09-03 17:39:27 605] Start use short connection !
+INFO   [2019-09-03 17:39:27 605] ========================================
+INFO   [2019-09-03 17:39:27 606] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-03 17:42:02 749] ========================================
+INFO   [2019-09-03 17:42:02 749] Start use short connection !
+INFO   [2019-09-03 17:42:02 749] ========================================
+INFO   [2019-09-03 17:42:02 750] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-03 17:50:07 359] ========================================
+INFO   [2019-09-03 17:50:07 360] Start use short connection !
+INFO   [2019-09-03 17:50:07 360] ========================================
+INFO   [2019-09-03 17:50:07 361] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-03 17:50:17 392] ========================================
+INFO   [2019-09-03 17:50:17 393] Start use short connection !
+INFO   [2019-09-03 17:50:17 393] ========================================
+INFO   [2019-09-03 17:50:17 394] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-03 17:50:29 433] ========================================
+INFO   [2019-09-03 17:50:29 434] Start use short connection !
+INFO   [2019-09-03 17:50:29 434] ========================================
+INFO   [2019-09-03 17:50:29 436] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-03 17:50:52 815] ========================================
+INFO   [2019-09-03 17:50:52 815] Start use short connection !
+INFO   [2019-09-03 17:50:52 815] ========================================
+INFO   [2019-09-03 17:50:52 816] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-03 17:51:41 744] ========================================
+INFO   [2019-09-03 17:51:41 744] Start use short connection !
+INFO   [2019-09-03 17:51:41 744] ========================================
+INFO   [2019-09-03 17:51:41 745] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-03 17:52:02 587] ========================================
+INFO   [2019-09-03 17:52:02 587] Start use short connection !
+INFO   [2019-09-03 17:52:02 587] ========================================
+INFO   [2019-09-03 17:52:02 587] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-03 17:52:09 654] ========================================
+INFO   [2019-09-03 17:52:09 654] Start use short connection !
+INFO   [2019-09-03 17:52:09 654] ========================================
+INFO   [2019-09-03 17:52:09 655] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-03 17:52:27 130] ========================================
+INFO   [2019-09-03 17:52:27 131] Start use short connection !
+INFO   [2019-09-03 17:52:27 131] ========================================
+INFO   [2019-09-03 17:52:27 132] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-03 22:26:27 992] ========================================
+INFO   [2019-09-03 22:26:27 993] Start use short connection !
+INFO   [2019-09-03 22:26:27 993] ========================================
+INFO   [2019-09-03 22:26:27 994] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-03 22:45:17 150] ========================================
+INFO   [2019-09-03 22:45:17 155] Start use short connection !
+INFO   [2019-09-03 22:45:17 155] ========================================
+INFO   [2019-09-03 22:45:17 159] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 09:57:09 506] ========================================
+INFO   [2019-09-04 09:57:09 506] Start use short connection !
+INFO   [2019-09-04 09:57:09 506] ========================================
+INFO   [2019-09-04 09:57:09 509] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 10:07:24 641] ========================================
+INFO   [2019-09-04 10:07:24 642] Start use short connection !
+INFO   [2019-09-04 10:07:24 642] ========================================
+INFO   [2019-09-04 10:07:24 645] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 10:14:26 148] ========================================
+INFO   [2019-09-04 10:14:26 148] Start use short connection !
+INFO   [2019-09-04 10:14:26 148] ========================================
+INFO   [2019-09-04 10:14:26 358] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 10:40:15 501] ========================================
+INFO   [2019-09-04 10:40:15 501] Start use short connection !
+INFO   [2019-09-04 10:40:15 501] ========================================
+INFO   [2019-09-04 10:40:15 502] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 10:42:40 843] ========================================
+INFO   [2019-09-04 10:42:40 843] Start use short connection !
+INFO   [2019-09-04 10:42:40 844] ========================================
+INFO   [2019-09-04 10:42:40 845] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 11:01:18 6] ========================================
+INFO   [2019-09-04 11:01:18 7] Start use short connection !
+INFO   [2019-09-04 11:01:18 7] ========================================
+INFO   [2019-09-04 11:01:18 8] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 11:03:06 817] ========================================
+INFO   [2019-09-04 11:03:06 818] Start use short connection !
+INFO   [2019-09-04 11:03:06 818] ========================================
+INFO   [2019-09-04 11:03:06 820] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 11:16:21 839] ========================================
+INFO   [2019-09-04 11:16:21 840] Start use short connection !
+INFO   [2019-09-04 11:16:21 840] ========================================
+INFO   [2019-09-04 11:16:21 841] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 11:19:19 31] ========================================
+INFO   [2019-09-04 11:19:19 32] Start use short connection !
+INFO   [2019-09-04 11:19:19 32] ========================================
+INFO   [2019-09-04 11:19:19 33] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 11:28:16 362] ========================================
+INFO   [2019-09-04 11:28:16 362] Start use short connection !
+INFO   [2019-09-04 11:28:16 362] ========================================
+INFO   [2019-09-04 11:28:16 363] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 11:29:26 988] ========================================
+INFO   [2019-09-04 11:29:26 988] Start use short connection !
+INFO   [2019-09-04 11:29:26 988] ========================================
+INFO   [2019-09-04 11:29:26 989] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 11:46:52 682] ========================================
+INFO   [2019-09-04 11:46:52 683] Start use short connection !
+INFO   [2019-09-04 11:46:52 683] ========================================
+INFO   [2019-09-04 11:46:52 684] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 11:52:49 197] ========================================
+INFO   [2019-09-04 11:52:49 198] Start use short connection !
+INFO   [2019-09-04 11:52:49 198] ========================================
+INFO   [2019-09-04 11:52:49 199] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 15:38:49 181] ========================================
+INFO   [2019-09-04 15:38:49 181] Start use short connection !
+INFO   [2019-09-04 15:38:49 181] ========================================
+INFO   [2019-09-04 15:38:49 186] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 15:46:17 457] ========================================
+INFO   [2019-09-04 15:46:17 458] Start use short connection !
+INFO   [2019-09-04 15:46:17 458] ========================================
+INFO   [2019-09-04 15:46:17 461] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 16:38:47 856] ========================================
+INFO   [2019-09-04 16:38:47 856] Start use short connection !
+INFO   [2019-09-04 16:38:47 856] ========================================
+INFO   [2019-09-04 16:38:47 858] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 16:40:21 966] ========================================
+INFO   [2019-09-04 16:40:21 966] Start use short connection !
+INFO   [2019-09-04 16:40:21 966] ========================================
+INFO   [2019-09-04 16:40:21 967] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 16:43:22 189] ========================================
+INFO   [2019-09-04 16:43:22 189] Start use short connection !
+INFO   [2019-09-04 16:43:22 189] ========================================
+INFO   [2019-09-04 16:43:22 190] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 16:48:48 453] ========================================
+INFO   [2019-09-04 16:48:48 454] Start use short connection !
+INFO   [2019-09-04 16:48:48 454] ========================================
+INFO   [2019-09-04 16:48:48 455] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 17:03:45 361] ========================================
+INFO   [2019-09-04 17:03:45 361] Start use short connection !
+INFO   [2019-09-04 17:03:45 361] ========================================
+INFO   [2019-09-04 17:03:45 362] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 17:10:50 537] ========================================
+INFO   [2019-09-04 17:10:50 537] Start use short connection !
+INFO   [2019-09-04 17:10:50 537] ========================================
+INFO   [2019-09-04 17:10:50 538] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 17:24:44 279] ========================================
+INFO   [2019-09-04 17:24:44 279] Start use short connection !
+INFO   [2019-09-04 17:24:44 279] ========================================
+INFO   [2019-09-04 17:24:44 280] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 17:28:25 460] ========================================
+INFO   [2019-09-04 17:28:25 461] Start use short connection !
+INFO   [2019-09-04 17:28:25 461] ========================================
+INFO   [2019-09-04 17:28:25 464] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 17:30:46 970] ========================================
+INFO   [2019-09-04 17:30:46 971] Start use short connection !
+INFO   [2019-09-04 17:30:46 971] ========================================
+INFO   [2019-09-04 17:30:46 974] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 17:32:14 325] ========================================
+INFO   [2019-09-04 17:32:14 325] Start use short connection !
+INFO   [2019-09-04 17:32:14 325] ========================================
+INFO   [2019-09-04 17:32:14 327] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 17:58:45 657] ========================================
+INFO   [2019-09-04 17:58:45 658] Start use short connection !
+INFO   [2019-09-04 17:58:45 658] ========================================
+INFO   [2019-09-04 17:58:45 659] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 09:10:08 679] ========================================
+INFO   [2019-09-05 09:10:08 679] Start use short connection !
+INFO   [2019-09-05 09:10:08 679] ========================================
+INFO   [2019-09-05 09:10:08 680] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 09:34:01 462] ========================================
+INFO   [2019-09-05 09:34:01 462] Start use short connection !
+INFO   [2019-09-05 09:34:01 462] ========================================
+INFO   [2019-09-05 09:34:01 463] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 10:00:32 840] ========================================
+INFO   [2019-09-05 10:00:32 840] Start use short connection !
+INFO   [2019-09-05 10:00:32 840] ========================================
+INFO   [2019-09-05 10:00:32 841] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 10:04:11 763] ========================================
+INFO   [2019-09-05 10:04:11 764] Start use short connection !
+INFO   [2019-09-05 10:04:11 764] ========================================
+INFO   [2019-09-05 10:04:11 765] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 10:18:33 489] ========================================
+INFO   [2019-09-05 10:18:33 490] Start use short connection !
+INFO   [2019-09-05 10:18:33 490] ========================================
+INFO   [2019-09-05 10:18:33 491] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 10:48:11 774] ========================================
+INFO   [2019-09-05 10:48:11 774] Start use short connection !
+INFO   [2019-09-05 10:48:11 774] ========================================
+INFO   [2019-09-05 10:48:11 775] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 10:50:15 869] ========================================
+INFO   [2019-09-05 10:50:15 869] Start use short connection !
+INFO   [2019-09-05 10:50:15 869] ========================================
+INFO   [2019-09-05 10:50:15 870] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 10:57:10 176] ========================================
+INFO   [2019-09-05 10:57:10 176] Start use short connection !
+INFO   [2019-09-05 10:57:10 176] ========================================
+INFO   [2019-09-05 10:57:10 177] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 11:00:15 226] ========================================
+INFO   [2019-09-05 11:00:15 226] Start use short connection !
+INFO   [2019-09-05 11:00:15 226] ========================================
+INFO   [2019-09-05 11:00:15 227] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 11:03:04 807] ========================================
+INFO   [2019-09-05 11:03:04 807] Start use short connection !
+INFO   [2019-09-05 11:03:04 807] ========================================
+INFO   [2019-09-05 11:03:04 808] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 11:32:36 961] ========================================
+INFO   [2019-09-05 11:32:36 962] Start use short connection !
+INFO   [2019-09-05 11:32:36 962] ========================================
+INFO   [2019-09-05 11:32:36 963] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 13:43:35 196] ========================================
+INFO   [2019-09-05 13:43:35 196] Start use short connection !
+INFO   [2019-09-05 13:43:35 196] ========================================
+INFO   [2019-09-05 13:43:35 200] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 13:46:19 488] ========================================
+INFO   [2019-09-05 13:46:19 489] Start use short connection !
+INFO   [2019-09-05 13:46:19 489] ========================================
+INFO   [2019-09-05 13:46:19 490] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 13:48:32 321] ========================================
+INFO   [2019-09-05 13:48:32 321] Start use short connection !
+INFO   [2019-09-05 13:48:32 321] ========================================
+INFO   [2019-09-05 13:48:32 324] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 13:52:23 812] ========================================
+INFO   [2019-09-05 13:52:23 812] Start use short connection !
+INFO   [2019-09-05 13:52:23 812] ========================================
+INFO   [2019-09-05 13:52:23 814] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 14:08:29 99] ========================================
+INFO   [2019-09-05 14:08:29 99] Start use short connection !
+INFO   [2019-09-05 14:08:29 99] ========================================
+INFO   [2019-09-05 14:08:29 101] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 14:13:35 303] ========================================
+INFO   [2019-09-05 14:13:35 303] Start use short connection !
+INFO   [2019-09-05 14:13:35 303] ========================================
+INFO   [2019-09-05 14:13:35 304] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 14:22:03 889] ========================================
+INFO   [2019-09-05 14:22:03 889] Start use short connection !
+INFO   [2019-09-05 14:22:03 889] ========================================
+INFO   [2019-09-05 14:22:03 890] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 14:33:48 184] ========================================
+INFO   [2019-09-05 14:33:48 184] Start use short connection !
+INFO   [2019-09-05 14:33:48 184] ========================================
+INFO   [2019-09-05 14:33:48 185] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 14:40:32 68] ========================================
+INFO   [2019-09-05 14:40:32 68] Start use short connection !
+INFO   [2019-09-05 14:40:32 68] ========================================
+INFO   [2019-09-05 14:40:32 70] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 14:46:36 175] ========================================
+INFO   [2019-09-05 14:46:36 175] Start use short connection !
+INFO   [2019-09-05 14:46:36 175] ========================================
+INFO   [2019-09-05 14:46:36 175] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 14:52:04 51] ========================================
+INFO   [2019-09-05 14:52:04 51] Start use short connection !
+INFO   [2019-09-05 14:52:04 51] ========================================
+INFO   [2019-09-05 14:52:04 53] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 14:54:07 270] ========================================
+INFO   [2019-09-05 14:54:07 270] Start use short connection !
+INFO   [2019-09-05 14:54:07 270] ========================================
+INFO   [2019-09-05 14:54:07 271] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 14:57:12 667] ========================================
+INFO   [2019-09-05 14:57:12 667] Start use short connection !
+INFO   [2019-09-05 14:57:12 667] ========================================
+INFO   [2019-09-05 14:57:12 669] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 14:58:35 306] ========================================
+INFO   [2019-09-05 14:58:35 306] Start use short connection !
+INFO   [2019-09-05 14:58:35 306] ========================================
+INFO   [2019-09-05 14:58:35 307] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 15:00:04 138] ========================================
+INFO   [2019-09-05 15:00:04 138] Start use short connection !
+INFO   [2019-09-05 15:00:04 138] ========================================
+INFO   [2019-09-05 15:00:04 139] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 15:01:40 718] ========================================
+INFO   [2019-09-05 15:01:40 718] Start use short connection !
+INFO   [2019-09-05 15:01:40 718] ========================================
+INFO   [2019-09-05 15:01:40 720] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 15:03:30 437] ========================================
+INFO   [2019-09-05 15:03:30 438] Start use short connection !
+INFO   [2019-09-05 15:03:30 438] ========================================
+INFO   [2019-09-05 15:03:30 439] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 15:05:16 625] ========================================
+INFO   [2019-09-05 15:05:16 626] Start use short connection !
+INFO   [2019-09-05 15:05:16 626] ========================================
+INFO   [2019-09-05 15:05:16 627] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 15:06:55 408] ========================================
+INFO   [2019-09-05 15:06:55 408] Start use short connection !
+INFO   [2019-09-05 15:06:55 408] ========================================
+INFO   [2019-09-05 15:06:55 409] BJCA Client Version:1.8.3M1 build201805311400

+ 299 - 0
pom.xml

@@ -0,0 +1,299 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+   <parent>
+		<groupId>org.springframework.boot</groupId>
+		<artifactId>spring-boot-starter-parent</artifactId>
+		<version>2.0.6.RELEASE</version>
+		<relativePath/> <!-- lookup parent from repository -->
+	</parent>
+    <groupId>info.aspirecn.iov.sjjh</groupId>
+    <artifactId>iov-sjjh-servicenode-supplier-10000027</artifactId>
+    <version>1.3.7</version>
+    <name>iov-sjjh-servicenode-supplier-10000027</name>
+    <description>iov-sjjh-servicenode-supplier-10000027</description>
+
+    <properties>
+        <java.version>1.8</java.version>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.squareup.okhttp3</groupId>
+            <artifactId>okhttp</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.70</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+        </dependency>
+
+        <!--链路日志-->
+        <dependency>
+            <groupId>info.aspirecn.rdc</groupId>
+            <artifactId>aspirecloud-commons-sleuthlog-starter</artifactId>
+             <version>5.0.1</version>
+        </dependency>
+
+        <!--错误日志-->
+        <dependency>
+            <groupId>info.aspirecn.rdc</groupId>
+            <artifactId>aspirecloud-commons-errorlog-starter</artifactId>
+             <version>5.0.2</version>
+        </dependency>
+
+        <!--常量-->
+        <dependency>
+            <groupId>info.aspirecn.iov.sjjh</groupId>
+            <artifactId>iov-sjjh-commons-lang</artifactId>
+            <version>1.0.0</version>
+        </dependency>
+
+
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger2</artifactId>
+             <version>2.9.2</version>
+        </dependency>
+
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger-ui</artifactId>
+             <version>2.9.2</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-config-client</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.auth0</groupId>
+            <artifactId>java-jwt</artifactId>
+            <version>3.1.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>frictid.api</groupId>
+            <artifactId>frictid-api</artifactId>
+            <version>1.0.0</version>
+            <scope>system</scope>
+            <systemPath>${project.basedir}/src/main/resources/lib/frictidApi-1.0.0.jar</systemPath>
+        </dependency>
+
+        <dependency>
+            <groupId>BJCACTID</groupId>
+            <artifactId>BJCACTID</artifactId>
+            <version>1.0.0</version>
+            <scope>system</scope>
+            <systemPath>${project.basedir}/src/main/resources/lib/BJCACTID.jar</systemPath>
+        </dependency>
+
+        <dependency>
+            <groupId>SVSClient</groupId>
+            <artifactId>SVSClient</artifactId>
+            <version>1.0.0</version>
+            <scope>system</scope>
+            <systemPath>${project.basedir}/src/main/resources/lib/SVSClient.jar</systemPath>
+        </dependency>
+
+        <dependency>
+            <groupId>commons.httpclient</groupId>
+            <artifactId>commons-httpclient</artifactId>
+            <version>3.1</version>
+            <scope>system</scope>
+            <systemPath>${project.basedir}/src/main/resources/lib/commons-httpclient-3.1.jar</systemPath>
+        </dependency>
+
+        <dependency>
+            <groupId>commons.logging</groupId>
+            <artifactId>commons-logging</artifactId>
+            <version>1.1.1</version>
+            <scope>system</scope>
+            <systemPath>${project.basedir}/src/main/resources/lib/commons-logging-1.1.1.jar</systemPath>
+        </dependency>
+
+        <dependency>
+            <groupId>BJCA.LOG</groupId>
+            <artifactId>BJCA-LOG</artifactId>
+            <version>1.1.1</version>
+            <scope>system</scope>
+            <systemPath>${project.basedir}/src/main/resources/lib/BJCA_LOG.jar</systemPath>
+        </dependency>
+    </dependencies>
+ <dependencyManagement>
+		<dependencies>
+			<dependency>
+				<groupId>org.springframework.cloud</groupId>
+				<artifactId>spring-cloud-dependencies</artifactId>
+				<version>Finchley.SR2</version>
+				<type>pom</type>
+				<scope>import</scope>
+			</dependency>
+		</dependencies>
+	</dependencyManagement>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                
+    				
+                <configuration>
+                <includeSystemScope>true</includeSystemScope>
+                    <includes>
+                        <include>
+                            <groupId>frictid.api</groupId>
+                            <artifactId>frictid-api</artifactId>
+                        </include>
+                        <include>
+                            <groupId>BJCACTID</groupId>
+                            <artifactId>BJCACTID</artifactId>
+                        </include>
+                        <include>
+                            <groupId>SVSClient</groupId>
+                            <artifactId>SVSClient</artifactId>
+                        </include>
+                        <include>
+                            <groupId>commons.httpclient</groupId>
+                            <artifactId>commons-httpclient</artifactId>
+                        </include>
+                        <include>
+                            <groupId>commons.logging</groupId>
+                            <artifactId>commons-logging</artifactId>
+                        </include>
+                        <include>
+                            <groupId>BJCA.LOG</groupId>
+                            <artifactId>BJCA-LOG</artifactId>
+                        </include>
+                        <include>
+                            <groupId>info.aspirecn.iov.sjjh</groupId>
+                            <artifactId>iov-sjjh-commons-lang</artifactId>
+                        </include>
+
+                    </includes>
+                </configuration>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        <manifest>
+                            <addClasspath>true</addClasspath>
+                            <classpathPrefix>lib/</classpathPrefix>
+                        </manifest>
+                    </archive>
+                </configuration>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>copy-dependencies</id>
+                        <phase>prepare-package</phase>
+                        <goals>
+                            <goal>copy-dependencies</goal>
+                        </goals>
+                        <configuration>
+                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
+                            <excludeGroupIds>
+                                info.aspirecn.iov.sjjh
+                            </excludeGroupIds>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>copy</id>
+                        <phase>install</phase>
+                        <goals>
+                            <goal>copy-dependencies</goal>
+                        </goals>
+                        <configuration>
+                            <outputDirectory>
+                                ${project.build.directory}/lib
+                            </outputDirectory>
+                            <excludeGroupIds>
+                                info.aspirecn.iov.sjjh
+                            </excludeGroupIds>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-resources-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>default-resources</id>
+                        <phase>validate</phase>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals>
+                        <configuration>
+                            <outputDirectory>target/classes</outputDirectory>
+                            <useDefaultDelimiters>false</useDefaultDelimiters>
+                            <delimiters>
+                                <delimiter>@</delimiter>
+                            </delimiters>
+                            <resources>
+                                <resource>
+                                    <directory>src/main/resources</directory>
+                                    <filtering>true</filtering>
+                                    <includes>
+                                        <include>**</include>
+                                    </includes>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <plugin>
+                <groupId>com.spotify</groupId>
+                <artifactId>docker-maven-plugin</artifactId>
+                <version>1.2.0</version>
+                <configuration>
+                    <!-- 设置Docker 镜像名称 -->
+                    <imageName>hub.i139.cn/iov-sjjh/${project.artifactId}:${project.version}</imageName>
+                    <!-- 设置Dockerfile存放目录地址 -->
+                    <dockerDirectory>${project.basedir}/src/main/resources/docker</dockerDirectory>
+                    <resources>
+                        <resource>
+                            <targetPath>/</targetPath>
+                            <directory>${project.build.directory}</directory>
+                            <include>${project.build.finalName}.jar</include>
+                        </resource>
+                    </resources>
+                    <!-- 设置和setting.xml中的servers对应的server,里面存放了docker hub仓库的用户名、密码 -->
+                    <serverId>docker-hub</serverId>
+                    <!-- 设置docker hub仓库地址 -->
+                    <registryUrl>https://hub.i139.cn</registryUrl>
+                    <!-- 设置docker remote API地址 -->
+                    <!--<dockerHost>http://docker-in-docker.rdc-plugin:2375</dockerHost>-->
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

+ 35 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000027/App.java

@@ -0,0 +1,35 @@
+package info.aspirecn.iov.sjjh.supplier10000027;
+
+import info.aspirecn.rdc.aspirecloud.node.except.annotations.EnableAspireCloudRdcHandleExcept;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.core.env.Environment;
+import org.springframework.util.StopWatch;
+
+import cn.com.jit.new_vstk.exception.NewCSSException;
+
+@SpringBootApplication
+@EnableAspireCloudRdcHandleExcept
+@Slf4j
+@EnableEurekaClient
+@ComponentScan("info.aspirecn.rdc.aspirecloud.node.except")
+@ComponentScan("info.aspirecn.rdc.aspirecloud.node.brave")
+@ComponentScan("info.aspirecn.iov.sjjh.supplier10000027")
+public class App {
+
+    public static void main(String[] args) {
+        StopWatch watch = new StopWatch();
+        watch.start();
+        ApplicationContext context = SpringApplication.run(App.class, args);
+        Environment environment = context.getBean(Environment.class);
+        String applicationName = environment.getProperty("spring.application.name");
+
+        watch.stop();
+        log.info("{} 启动完毕,times={}s", applicationName, watch.getTotalTimeSeconds());
+    }
+
+}

+ 68 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000027/ApplicationInitialize.java

@@ -0,0 +1,68 @@
+package info.aspirecn.iov.sjjh.supplier10000027;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.io.FileUtils;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.stereotype.Component;
+
+import java.io.File;
+import java.io.InputStream;
+
+/**
+ * @description:
+ * @author: xusonglin
+ * @create: 2019/10/24 15:52
+ * @version: V1.0
+ **/
+@Component
+@Slf4j
+public class ApplicationInitialize implements ApplicationRunner {
+
+    @Override
+    public void run(ApplicationArguments args) throws Exception {
+        File bjcaRoot = new File("/usr/share/bjcaRoot");
+        if(!bjcaRoot.exists()){
+            bjcaRoot.mkdirs();
+        }
+        File bjcalog = new File("/usr/share/bjcaRoot/BJCAlog");
+        if(!bjcalog.exists()){
+            bjcalog.mkdirs();
+        }
+        File xtx = new File("/usr/share/bjcaRoot/BJCAlog/xtx");
+        if(!xtx.exists()){
+            xtx.mkdirs();
+        }
+        File xtxCoreSvr2 = new File("/usr/share/bjcaRoot/BJCAlog/XTXCoreSvr2");
+        if(!xtxCoreSvr2.exists()){
+            xtxCoreSvr2.mkdirs();
+        }
+        File bjcalogs = new File("/usr/share/bjcaRoot/logs");
+        if(!bjcalogs.exists()){
+            bjcalogs.mkdirs();
+        }
+        File xtxtradelog = new File("/usr/share/bjcaRoot/xtxtradelog");
+        if(!xtxtradelog.exists()){
+            xtxtradelog.mkdirs();
+        }
+        InputStream XTXAppCOM = new ClassPathResource("bjcaRoot/BJCAlog/xtx/XTXAppCOM.log").getInputStream();
+        FileUtils.copyInputStreamToFile(XTXAppCOM,new File("/usr/share/bjcaRoot/BJCAlog/xtx/XTXAppCOM.log"));
+
+        InputStream logxtxCoreSvr2 = new ClassPathResource("bjcaRoot/BJCAlog/XTXCoreSvr2/logXTXCoreSvr2.log").getInputStream();
+        FileUtils.copyInputStreamToFile(logxtxCoreSvr2,new File("/usr/share/bjcaRoot/BJCAlog/XTXCoreSvr2/logXTXCoreSvr2.log"));
+
+        InputStream svsError = new ClassPathResource("bjcaRoot/logs/SVSClient_error.log").getInputStream();
+        FileUtils.copyInputStreamToFile(svsError,new File("/usr/share/bjcaRoot/logs/SVSClient_error.log"));
+
+        InputStream svsSystem = new ClassPathResource("bjcaRoot/logs/SVSClient_system.log").getInputStream();
+        FileUtils.copyInputStreamToFile(svsSystem,new File("/usr/share/bjcaRoot/logs/SVSClient_system.log"));
+
+        InputStream bjcaConfig = new ClassPathResource("bjcaRoot/BJCA_Config.xml").getInputStream();
+        FileUtils.copyInputStreamToFile(bjcaConfig,new File("/usr/share/bjcaRoot/BJCA_Config.xml"));
+
+        InputStream properties = new ClassPathResource("bjcaRoot/SVSClient.properties").getInputStream();
+        FileUtils.copyInputStreamToFile(properties,new File("/usr/share/bjcaRoot/SVSClient.properties"));
+        log.info("文件夹已拷贝");
+    }
+}

+ 36 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000027/SwaggerConfig.java

@@ -0,0 +1,36 @@
+package info.aspirecn.iov.sjjh.supplier10000027;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+/**
+ *
+ * @author xusonglin
+ *
+ */
+@Configuration
+@EnableSwagger2
+public class SwaggerConfig {
+	@Value("${swagger.show}")
+    private boolean swaggerShow;
+
+    @Bean
+    public Docket createRestApi() {
+
+        return new Docket(DocumentationType.SWAGGER_2).enable(swaggerShow).apiInfo(apiInfo()).select()
+                .apis(RequestHandlerSelectors.basePackage("info.aspirecn.iov.sjjh.supplier10000027.action"))
+                .paths(PathSelectors.any()).build();
+    }
+
+    private ApiInfo apiInfo() {
+        return new ApiInfoBuilder().title("10000027通道接口").description("").termsOfServiceUrl("").version("1.0.0").build();
+    }
+}

+ 196 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000027/action/ChannelAction.java

@@ -0,0 +1,196 @@
+package info.aspirecn.iov.sjjh.supplier10000027.action;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import info.aspirecn.iov.sjjh.commons.lang.ChannelTypeHandleResponseObject;
+import info.aspirecn.iov.sjjh.commons.lang.Constant;
+import info.aspirecn.iov.sjjh.supplier10000027.constant.SjjhConstant;
+import info.aspirecn.iov.sjjh.supplier10000027.service.ChannelService;
+import info.aspirecn.rdc.aspirecloud.node.except.utils.ErrorUtils;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.tomcat.util.codec.binary.Base64;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+import sun.misc.BASE64Encoder;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+
+/**
+ * @description:
+ * @author: xusonglin
+ * @create: 2019/9/3 14:12
+ * @version: V1.0
+ **/
+@RestController
+@Slf4j
+public class ChannelAction {
+    @Autowired
+    private ChannelService service;
+
+    @ApiOperation(value = "身份证有效期")
+    @PostMapping(value = "/validateCompositeIdentityInfo.do")
+    public ChannelTypeHandleResponseObject validateCompositeIdentityInfo(
+            @ApiParam(value = "通道ID") @RequestHeader(name = "channelId") String channelId,
+            @ApiParam(value = "超时时间,单位:毫秒", example = "10000") @RequestParam(name = "outTime") int outTime,
+            @ApiParam(value = "请求参数JSON串") @RequestParam(name = "customBody") String customBody) {
+        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes())
+                .getRequest();
+        //调用service
+        ChannelTypeHandleResponseObject responseObject = service.validateCompositeIdentityInfo(request, customBody, outTime);
+
+        //把接口参数、调用结果和是否收费放入访问日志中
+        if (responseObject.getCode() != Constant.SUCCESS) {
+            request.setAttribute(SjjhConstant.LOG_ERROR_PARA, Constant.CHANNEL_LOG_ERROR_CODE);
+        } else {
+            request.setAttribute(SjjhConstant.LOG_ERROR_PARA, Constant.CHANNEL_LOG_SUCCESS_CODE);
+        }
+        request.setAttribute(SjjhConstant.LOG_FEE_PARA, responseObject.getIsCharge());
+
+        try {
+            request.setAttribute(Constant.CHANNEL_LOG_QUERY, Base64.encodeBase64String(customBody.getBytes(SjjhConstant.PARA_ENCODE)));
+        } catch (UnsupportedEncodingException e) {
+            ErrorUtils.captureException(e);
+        }
+
+        request.setAttribute(Constant.CHANNEL_TYPE_KEY, Constant.CHANNEL_TYPE_SYNC);
+        return responseObject;
+    }
+
+    @ApiOperation(value = "身份证简项")
+    @PostMapping(value = "/validateIdentityInfo.do")
+    public ChannelTypeHandleResponseObject validateIdentityInfo(
+            @ApiParam(value = "通道ID") @RequestHeader(name = "channelId") String channelId,
+            @ApiParam(value = "超时时间,单位:毫秒", example = "10000") @RequestParam(name = "outTime") int outTime,
+            @ApiParam(value = "请求参数JSON串") @RequestParam(name = "customBody") String customBody) {
+        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes())
+                .getRequest();
+        log.info("params === " + customBody);
+     /*   try {
+            customBody =  Base64.encodeBase64String(customBody.getBytes(SjjhConstant.PARA_ENCODE));
+            log.info("action传入customBody转base64:" + customBody);
+        } catch (Exception e) {
+            log.error("转base64失败");
+            ErrorUtils.captureException(e);
+        }*/
+
+        //调用service
+        ChannelTypeHandleResponseObject responseObject = service.validateIdentityInfo(request, customBody, outTime);
+
+        //把接口参数、调用结果和是否收费放入访问日志中
+        if (responseObject.getCode() != Constant.SUCCESS) {
+            request.setAttribute(SjjhConstant.LOG_ERROR_PARA, Constant.CHANNEL_LOG_ERROR_CODE);
+        } else {
+            request.setAttribute(SjjhConstant.LOG_ERROR_PARA, Constant.CHANNEL_LOG_SUCCESS_CODE);
+        }
+        request.setAttribute(SjjhConstant.LOG_FEE_PARA, responseObject.getIsCharge());
+
+        try {
+            request.setAttribute(Constant.CHANNEL_LOG_QUERY, Base64.encodeBase64String(customBody.getBytes(SjjhConstant.PARA_ENCODE)));
+        } catch (UnsupportedEncodingException e) {
+            ErrorUtils.captureException(e);
+        }
+
+        request.setAttribute(Constant.CHANNEL_TYPE_KEY, Constant.CHANNEL_TYPE_SYNC);
+        return responseObject;
+    }
+
+    @ApiOperation(value = "身份证简项+人像")
+    @PostMapping(value = "/validatePhotoIdentityInfo.do", produces = "application/json;charset=UTF-8")
+    public ChannelTypeHandleResponseObject validatePhotoIdentityInfo(
+            @ApiParam(value = "通道ID") @RequestHeader(name = "channelId") String channelId,
+            @ApiParam(value = "超时时间,单位:毫秒", example = "10000") @RequestParam(name = "outTime") int outTime,
+            @ApiParam(value = "请求参数JSON串") @RequestBody String customBody) {
+        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes())
+                .getRequest();
+
+        //调用service
+        ChannelTypeHandleResponseObject responseObject = service.validatePhotoIdentityInfo(request, customBody, outTime);
+
+        //把接口参数、调用结果和是否收费放入访问日志中
+        if (responseObject.getCode() != Constant.SUCCESS) {
+            request.setAttribute(SjjhConstant.LOG_ERROR_PARA, Constant.CHANNEL_LOG_ERROR_CODE);
+        } else {
+            request.setAttribute(SjjhConstant.LOG_ERROR_PARA, Constant.CHANNEL_LOG_SUCCESS_CODE);
+        }
+        request.setAttribute(SjjhConstant.LOG_FEE_PARA, responseObject.getIsCharge());
+
+        try {
+            JSONObject paramObject = JSON.parseObject(customBody);
+            paramObject.put("photo", "base64");
+            log.info("actionBase64={}", Base64.encodeBase64String(paramObject.toJSONString().getBytes(SjjhConstant.PARA_ENCODE)));
+            request.setAttribute(Constant.CHANNEL_LOG_QUERY,
+                    Base64.encodeBase64String(paramObject.toJSONString().getBytes(SjjhConstant.PARA_ENCODE)));
+        } catch (Exception ex) {
+            ErrorUtils.captureException(ex);
+        }
+
+        request.setAttribute(Constant.CHANNEL_TYPE_KEY, Constant.CHANNEL_TYPE_SYNC);
+        return responseObject;
+    }
+
+    @ApiOperation(value = "身份证简项 - 中心通用版")
+    @PostMapping(value = "/validateIdentityInfoCommon.do")
+    public ChannelTypeHandleResponseObject validateIdentityInfoCommon(
+            @ApiParam(value = "通道ID") @RequestHeader(name = "channelId") String channelId,
+            @ApiParam(value = "超时时间,单位:毫秒", example = "10000") @RequestParam(name = "outTime") int outTime,
+            @ApiParam(value = "请求参数JSON串") @RequestParam(name = "customBody") String customBody) {
+        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes())
+                .getRequest();
+
+        //调用service
+        ChannelTypeHandleResponseObject responseObject = service.  validateIdentityInfoCommon(request, customBody, outTime, SjjhConstant.DECODE_TYPE_COMMON);
+
+        //把接口参数、调用结果和是否收费放入访问日志中
+        if (responseObject.getCode() != Constant.SUCCESS) {
+            request.setAttribute(SjjhConstant.LOG_ERROR_PARA, Constant.CHANNEL_LOG_ERROR_CODE);
+        } else {
+            request.setAttribute(SjjhConstant.LOG_ERROR_PARA, Constant.CHANNEL_LOG_SUCCESS_CODE);
+        }
+        request.setAttribute(SjjhConstant.LOG_FEE_PARA, responseObject.getIsCharge());
+
+        try {
+            request.setAttribute(Constant.CHANNEL_LOG_QUERY, Base64.encodeBase64String(customBody.getBytes(SjjhConstant.PARA_ENCODE)));
+        } catch (UnsupportedEncodingException e) {
+            ErrorUtils.captureException(e);
+        }
+
+        request.setAttribute(Constant.CHANNEL_TYPE_KEY, Constant.CHANNEL_TYPE_SYNC);
+        return responseObject;
+    }
+
+    @ApiOperation(value = "身份证简项 - 中心通用版-WZ加密版")
+    @PostMapping(value = "/validateIdentityInfoCommonWZ.do")
+    public ChannelTypeHandleResponseObject validateIdentityInfoCommonWZ(
+            @ApiParam(value = "通道ID") @RequestHeader(name = "channelId") String channelId,
+            @ApiParam(value = "超时时间,单位:毫秒", example = "10000") @RequestParam(name = "outTime") int outTime,
+            @ApiParam(value = "请求参数JSON串") @RequestParam(name = "customBody") String customBody) {
+        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes())
+                .getRequest();
+
+        //调用service
+        ChannelTypeHandleResponseObject responseObject = service.validateIdentityInfoCommon(request, customBody, outTime, SjjhConstant.DECODE_TYPE_WEIZHONG);
+
+        //把接口参数、调用结果和是否收费放入访问日志中
+        if (responseObject.getCode() != Constant.SUCCESS) {
+            request.setAttribute(SjjhConstant.LOG_ERROR_PARA, Constant.CHANNEL_LOG_ERROR_CODE);
+        } else {
+            request.setAttribute(SjjhConstant.LOG_ERROR_PARA, Constant.CHANNEL_LOG_SUCCESS_CODE);
+        }
+        request.setAttribute(SjjhConstant.LOG_FEE_PARA, responseObject.getIsCharge());
+
+        try {
+            request.setAttribute(Constant.CHANNEL_LOG_QUERY, Base64.encodeBase64String(customBody.getBytes(SjjhConstant.PARA_ENCODE)));
+        } catch (UnsupportedEncodingException e) {
+            ErrorUtils.captureException(e);
+        }
+
+        request.setAttribute(Constant.CHANNEL_TYPE_KEY, Constant.CHANNEL_TYPE_SYNC);
+        return responseObject;
+    }
+}

+ 51 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000027/constant/SjjhConstant.java

@@ -0,0 +1,51 @@
+package info.aspirecn.iov.sjjh.supplier10000027.constant;
+
+/**
+ * @description:
+ * @author: xusonglin
+ * @create: 2019/9/5 10:42
+ * @version: V1.0
+ **/
+public class SjjhConstant {
+    // 日志参数中的错误参数名
+    public static final String LOG_ERROR_PARA = "respnoseCode";
+    // 日志参数中的是否收费
+    public static final String LOG_FEE_PARA = "isCharge";
+    // UTF-8
+    public static final String PARA_ENCODE = "UTF-8";
+    // 身份简项以及有效期计费码
+    public static final String[] IDENTITY_CHARGE_CODE = {"0XXX", "6XXX"};
+    // 人像计费码
+    public static final String[] PHOTO_IDENTITY_CHARGE_CODE = {"00XX", "01XX", "02XX", "6XXX", "0CXX", "0EXX", "0FXX", "0GXX", "0JXX", "0IXX", "0HXX"};
+    // 人像照片质量不合格码
+    public static final String[] PHOTO_BELOW_STANDARD = {"0EXX", "0FXX", "0GXX", "0JXX"};
+
+    public static final String RESPONSE_CODE_0XXX = "0XXX";
+
+    public static final String RESPONSE_CODE_5XXX = "5XXX";
+
+    public static final String RESPONSE_CODE_6XXX = "6XXX";
+
+    public static final String RESPONSE_CODE_00XX = "00XX";
+
+    public static final String RESPONSE_CODE_01XX = "01XX";
+
+    public static final String RESPONSE_CODE_02XX = "02XX";
+
+    public static final String RESPONSE_CODE_0CXX = "0CXX";
+
+    public static final String RESPONSE_CODE_0IXX = "0IXX";
+
+    public static final String RESPONSE_CODE_0DXX = "0DXX";
+
+    public static final String RESPONSE_CODE_0HXX = "0HXX";
+
+    public static final String RESPONSE_MESSAGE_1 = "无人像信息";
+
+    public static final String DECODE_TYPE_WEIZHONG = "WEIZHONG";
+
+    public static final String DECODE_TYPE_COMMON = "COMMON";
+
+    // 身份简项-中心通用版计费规则
+    public static final String[] IDENTITY_COMMON_CHARGE_CODE = {"0XXX", "6XXX", "5XXX"};
+}

+ 57 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000027/service/ChannelService.java

@@ -0,0 +1,57 @@
+package info.aspirecn.iov.sjjh.supplier10000027.service;
+
+import info.aspirecn.iov.sjjh.commons.lang.ChannelTypeHandleResponseObject;
+import info.aspirecn.iov.sjjh.supplier10000027.vo.ApplyResponseObject;
+
+import javax.servlet.http.HttpServletRequest;
+
+public interface ChannelService {
+    /**
+     * 验签
+     * @param authMode
+     * @param outTime
+     * @param
+     */
+    ApplyResponseObject dataSignature(String authMode, int outTime);
+
+    /**
+     * 复合信息
+     * 对提供的姓名、公民身份号码、有效期起始日期、有效期截止日期四项信息作为认证申请保留数据进行验证;
+     * @param request
+     * @param customBody
+     * @param outTime
+     * @return
+     */
+    ChannelTypeHandleResponseObject validateCompositeIdentityInfo(HttpServletRequest request, String customBody, int outTime);
+
+    /**
+     * 简项信息
+     * 对提供的姓名、身份证号两项信息作为认证申请保留数据进行验证;
+     * @param request
+     * @param customBody
+     * @param outTime
+     * @return
+     */
+    ChannelTypeHandleResponseObject validateIdentityInfo(HttpServletRequest request, String customBody, int outTime);
+
+    /**
+     * 人像+简项信息
+     * @param request
+     * @param customBody
+     * @param outTime
+     * @return
+     */
+    ChannelTypeHandleResponseObject validatePhotoIdentityInfo(HttpServletRequest request, String customBody, int outTime);
+
+    /**
+     * 简项信息
+     * 对提供的姓名、身份证号两项信息作为认证申请保留数据进行验证;
+     * 中心-通用版
+     * @param request
+     * @param customBody
+     * @param outTime
+     * @return
+     */
+    ChannelTypeHandleResponseObject validateIdentityInfoCommon(HttpServletRequest request, String customBody, int outTime, String decodeType);
+
+}

+ 939 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000027/service/ChannelServiceImpl.java

@@ -0,0 +1,939 @@
+package info.aspirecn.iov.sjjh.supplier10000027.service;
+
+import cn.com.jit.new_vstk.exception.NewCSSException;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import info.aspirecn.iov.sjjh.commons.lang.ChannelTypeHandleResponseObject;
+import info.aspirecn.iov.sjjh.commons.lang.Constant;
+import info.aspirecn.iov.sjjh.commons.lang.PatternTools;
+import info.aspirecn.iov.sjjh.supplier10000027.constant.SjjhConstant;
+import info.aspirecn.iov.sjjh.supplier10000027.util.DESedeUtil;
+import info.aspirecn.iov.sjjh.supplier10000027.util.DataSignature;
+import info.aspirecn.iov.sjjh.supplier10000027.util.EncryptedReservedData;
+import info.aspirecn.iov.sjjh.supplier10000027.vo.*;
+import info.aspirecn.rdc.aspirecloud.node.except.utils.ErrorUtils;
+import lombok.extern.slf4j.Slf4j;
+import okhttp3.*;
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import sun.misc.BASE64Decoder;
+import sun.misc.BASE64Encoder;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.validation.ConstraintViolation;
+import javax.validation.Validation;
+import javax.validation.Validator;
+import javax.validation.ValidatorFactory;
+import java.io.IOException;
+import java.net.SocketTimeoutException;
+import java.net.URLDecoder;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @description:
+ * @author: xusonglin
+ * @create: 2019/9/3 10:22
+ * @version: V1.0
+ **/
+@Service
+@Slf4j
+public class ChannelServiceImpl implements ChannelService {
+    @Value("${custom.applyUrl}")
+    private String applyUrl;
+    @Value("${custom.requestUrl}")
+    private String requestUrl;
+    @Value("${custom.customerNumber}")
+    private String customerNumber;
+    @Value("${custom.appName}")
+    private String appName;
+    @Value("${custom.cardReaderVersion}")
+    private String cardReaderVersion;
+    @Value("${custom.liveDetectionControlVersion}")
+    private String liveDetectionControlVersion;
+    @Value("${custom.authCodeControlVersion}")
+    private String authCodeControlVersion;
+    @Value("${custom.authMode-0x10}")
+    private String authMode10;
+    @Value("${custom.authMode-0x40}")
+    private String authMode40;
+    @Value("${custom.authMode-0x42}")
+    private String authMode42;
+    @Value("${custom.bjcaRoot}")
+    private String bjcaRootTest;
+    @Value("${custom.decryptKey}")
+    private String decryptKey;
+
+    private OkHttpClient okHttpClient = new OkHttpClient.Builder().build();
+
+    @Autowired
+    private ObjectMapper objectMapper;
+
+    @Override
+    public ApplyResponseObject dataSignature(String authMode, int outTime) {
+        ApplyRequestObject.BizPackageBean bizPackageBean = new ApplyRequestObject.BizPackageBean();
+        bizPackageBean.setCustomerNumber(customerNumber);
+        bizPackageBean.setAppName(appName);
+        bizPackageBean.setTimeStamp(new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()));
+        bizPackageBean.setCardReaderVersion(cardReaderVersion);
+        bizPackageBean.setLiveDetectionControlVersion(liveDetectionControlVersion);
+        bizPackageBean.setAuthCodeControlVersion(authCodeControlVersion);
+        bizPackageBean.setAuthMode(authMode);
+        try {
+            log.info("dataSignature.bizPackageBean--bizPackageBean={}", bizPackageBean);
+            //身份认证申请签名
+            DataSignature ds = new DataSignature();
+            String signature = ds.signDataByP7DetachForJit(JSON.toJSONString(bizPackageBean));
+
+            ApplyRequestObject applyRequestObject = new ApplyRequestObject();
+            applyRequestObject.setBizPackage(bizPackageBean);
+            applyRequestObject.setSign(signature);
+
+            String responseContext = callService(applyUrl, JSONObject.toJSONString(applyRequestObject), outTime);
+            ApplyResponseObject responseObject = objectMapper.readValue(responseContext, ApplyResponseObject.class);
+            log.info("签名:" + responseObject.getSign());
+            return responseObject;
+        } catch (Exception e) {
+            ErrorUtils.captureException(e);
+            log.info("supplier10000027.dataSignature接口Exception={}", e);
+            return null;
+        }
+    }
+
+    @Override
+    public ChannelTypeHandleResponseObject validateCompositeIdentityInfo(HttpServletRequest request, String customBody, int outTime) {
+        ChannelTypeHandleResponseObject ret = new ChannelTypeHandleResponseObject();
+        ret.setIsCharge(Constant.INTERFACE_QUERY_NO_FEE);
+        String upstreamCode = Constant.LOG_UPSTREAM_DEFAULT_RESPONSE_CODE;
+        String returnType = request.getHeader(Constant.CUSTOMER_RETURN_TYPE_PARA);
+
+        if (StringUtils.isBlank(returnType)) {
+            returnType = Constant.CUSTOMER_RETURN_ZW;
+        }
+        if (outTime <= 0) {
+            outTime = Constant.HTTPCLIENT_CONNECTTIMEOUT;
+        }
+
+        log.info("validateCompositeIdentityInfo---customBody={},outTime={}", customBody, outTime);
+
+        try {
+            CompositeIdentityInfoJsonResolveObject jsonResolveObject = objectMapper.readValue(customBody,
+                    CompositeIdentityInfoJsonResolveObject.class);
+
+            // 参数校验
+            if (!validateCompositeIdentityParams(ret, returnType, jsonResolveObject)) {
+                ret.setCode(Constant.SUCCESS);
+                request.setAttribute(Constant.LOG_UPSTREAM_RESPONSE_CODE, upstreamCode);
+                return ret;
+            }
+
+            // 申请
+            ApplyResponseObject apply = dataSignature(authMode10, outTime);
+            if (apply == null || !apply.getBizPackage().getSuccess().equals("true")) {
+                // 申请失败,返回查询错误
+                if (Constant.CUSTOMER_RETURN_ZW.equals(returnType)) {
+                    ret.setResultCode(Constant.OTHER_ERROR_CODE);
+                } else {
+                    ret.setResultCode(Constant.JK_RETURN_CODE_OTHER_ERROR);
+                }
+                ret.setResultBody(Constant.OTHER_ERROR);
+                ret.setResultDesc(Constant.OTHER_ERROR);
+                ret.setCode(Constant.SUCCESS);
+                request.setAttribute(Constant.LOG_UPSTREAM_RESPONSE_CODE, upstreamCode);
+                log.info("validateCompositeIdentityInfo---apply失败");
+                return ret;
+            }
+            // 设置请求参数
+            DataRequestObject requestObject = getRequestObject(jsonResolveObject, authMode10, apply.getBizPackage().getBusinessSerialNumber(), "");
+
+            // 发起业务请求
+            String responseContext = callService(requestUrl, JSONObject.toJSONString(requestObject), outTime);
+            log.info("supplier10000027.validateCompositeIdentityInfo接口responseContext={}", responseContext);
+            DataResponseObject responseObject = objectMapper.readValue(responseContext, DataResponseObject.class);
+            log.info("supplier10000027.validateCompositeIdentityInfo接口responseObject={}", responseObject);
+
+            if (responseObject != null && responseObject.getBizPackage().getSuccess().equals("true")) {
+                ret.setCode(Constant.SUCCESS);
+                setIdentityInfoResponse(ret, returnType, responseObject.getBizPackage().getAuthResult());
+                upstreamCode = responseObject.getBizPackage().getAuthResult();
+            } else {
+                ret.setCode(Constant.FAIL);
+            }
+        } catch (SocketTimeoutException ste) {
+            ErrorUtils.captureException(ste);
+            log.info("supplier10000027.validateCompositeIdentityInfo接口SocketTimeoutException={}", ste);
+            ret.setCode(Constant.REQUEST_TIMEOUT);
+        } catch (Exception ioe) {
+            ErrorUtils.captureException(ioe);
+            log.info("supplier10000027.validateCompositeIdentityInfo接口Exception={}", ioe);
+            ret.setCode(Constant.FAIL);
+        }
+        //上游返回码
+        request.setAttribute(Constant.LOG_UPSTREAM_RESPONSE_CODE, upstreamCode);
+        return ret;
+    }
+
+    @Override
+    public ChannelTypeHandleResponseObject validateIdentityInfo(HttpServletRequest request, String customBody, int outTime) {
+        ChannelTypeHandleResponseObject ret = new ChannelTypeHandleResponseObject();
+        ret.setIsCharge(Constant.INTERFACE_QUERY_NO_FEE);
+        String upstreamCode = Constant.LOG_UPSTREAM_DEFAULT_RESPONSE_CODE;
+        String returnType = request.getHeader(Constant.CUSTOMER_RETURN_TYPE_PARA);
+
+        if (StringUtils.isBlank(returnType)) {
+            returnType = Constant.CUSTOMER_RETURN_ZW;
+        }
+        if (outTime <= 0) {
+            outTime = Constant.HTTPCLIENT_CONNECTTIMEOUT;
+        }
+
+        log.info("validateIdentityInfo---customBody={},outTime={}", customBody, outTime);
+
+        try {
+           /* BASE64Decoder decoder = new BASE64Decoder();
+            customBody = new String(decoder.decodeBuffer(customBody));
+            log.info("BASE64解码后customBody === " + customBody);*/
+            IdentityInfoJsonResolveObject jsonResolveObject = objectMapper.readValue(customBody,
+                    IdentityInfoJsonResolveObject.class);
+            // 参数校验
+            if (!validateIdentityInfoParams(ret, returnType, jsonResolveObject)) {
+                ret.setCode(Constant.SUCCESS);
+                request.setAttribute(Constant.LOG_UPSTREAM_RESPONSE_CODE, upstreamCode);
+                return ret;
+            }
+
+            // 申请
+            ApplyResponseObject apply = dataSignature(authMode40, outTime);
+            if (apply == null || !apply.getBizPackage().getSuccess().equals("true")) {
+                // 申请失败,返回查询错误
+                if (Constant.CUSTOMER_RETURN_ZW.equals(returnType)) {
+                    ret.setResultCode(Constant.OTHER_ERROR_CODE);
+                } else {
+                    ret.setResultCode(Constant.JK_RETURN_CODE_OTHER_ERROR);
+                }
+                ret.setResultBody(Constant.OTHER_ERROR);
+                ret.setResultDesc(Constant.OTHER_ERROR);
+                ret.setCode(Constant.SUCCESS);
+                request.setAttribute(Constant.LOG_UPSTREAM_RESPONSE_CODE, upstreamCode);
+                log.info("validateIdentityInfo---apply失败");
+                return ret;
+            }
+
+            // 设置请求参数
+            DataRequestObject requestObject = getRequestObject(jsonResolveObject, authMode40, apply.getBizPackage().getBusinessSerialNumber(), "");
+            log.info("supplier10000027.validateIdentityInfo接口requestObject={}", requestObject);
+            // 发起业务请求
+            String responseContext = callService(requestUrl, JSONObject.toJSONString(requestObject), outTime);
+            log.info("请求上游");
+            log.info("supplier10000027.validateIdentityInfo接口responseContext={}", responseContext);
+            DataResponseObject responseObject = objectMapper.readValue(responseContext, DataResponseObject.class);
+            log.info("supplier10000027.validateIdentityInfo接口responseObject={}", responseObject);
+
+            if (responseObject != null && responseObject.getBizPackage().getSuccess().equals("true")) {
+                ret.setCode(Constant.SUCCESS);
+                setIdentityInfoResponse(ret, returnType, responseObject.getBizPackage().getAuthResult());
+                upstreamCode = responseObject.getBizPackage().getAuthResult();
+            } else {
+                ret.setCode(Constant.FAIL);
+            }
+        } catch (SocketTimeoutException ste) {
+            ErrorUtils.captureException(ste);
+            log.info("supplier10000027.validateIdentityInfo接口SocketTimeoutException={}", ste);
+            ret.setCode(Constant.REQUEST_TIMEOUT);
+        } catch (Exception ioe) {
+            ErrorUtils.captureException(ioe);
+            log.info("supplier10000027.validateIdentityInfo接口Exception={}", ioe);
+            ret.setCode(Constant.FAIL);
+        }
+        //上游返回码
+        request.setAttribute(Constant.LOG_UPSTREAM_RESPONSE_CODE, upstreamCode);
+        return ret;
+    }
+
+    @Override
+    public ChannelTypeHandleResponseObject validatePhotoIdentityInfo(HttpServletRequest request, String customBody, int outTime) {
+        ChannelTypeHandleResponseObject ret = new ChannelTypeHandleResponseObject();
+        ret.setIsCharge(Constant.INTERFACE_QUERY_NO_FEE);
+        String upstreamCode = Constant.LOG_UPSTREAM_DEFAULT_RESPONSE_CODE;
+        String returnType = request.getHeader(Constant.CUSTOMER_RETURN_TYPE_PARA);
+
+        if (StringUtils.isBlank(returnType)) {
+            returnType = Constant.CUSTOMER_RETURN_ZW;
+        }
+        if (outTime <= 0) {
+            outTime = Constant.HTTPCLIENT_CONNECTTIMEOUT;
+        }
+
+        try {
+            JSONObject paramObject = JSON.parseObject(customBody);
+            paramObject.put("photo", "base64");
+            log.info("validatePhotoIdentityInfo---customBody={},outTime={}", paramObject.toJSONString(), outTime);
+
+            PhotoIdentityInfoJsonResolveObject jsonResolveObject = objectMapper.readValue(customBody,
+                    PhotoIdentityInfoJsonResolveObject.class);
+            // 参数校验
+            if (!validatePhotoIdentityInfoParams(ret, returnType, jsonResolveObject)) {
+                ret.setCode(Constant.SUCCESS);
+                request.setAttribute(Constant.LOG_UPSTREAM_RESPONSE_CODE, upstreamCode);
+                return ret;
+            }
+
+            // 申请
+            ApplyResponseObject apply = dataSignature(authMode42, outTime);
+            if (apply == null || !apply.getBizPackage().getSuccess().equals("true")) {
+                // 申请失败,返回查询错误
+                if (Constant.CUSTOMER_RETURN_ZW.equals(returnType)) {
+                    ret.setResultCode(Constant.OTHER_ERROR_CODE);
+                } else {
+                    ret.setResultCode(Constant.JK_RETURN_CODE_OTHER_ERROR);
+                }
+                ret.setResultBody(Constant.OTHER_ERROR);
+                ret.setResultDesc(Constant.OTHER_ERROR);
+                ret.setCode(Constant.SUCCESS);
+                request.setAttribute(Constant.LOG_UPSTREAM_RESPONSE_CODE, upstreamCode);
+                log.info("validatePhotoIdentityInfo---apply失败");
+                return ret;
+            }
+
+            // 设置请求参数
+            DataRequestObject requestObject = getRequestObject(jsonResolveObject, authMode42, apply.getBizPackage().getBusinessSerialNumber(), jsonResolveObject.getPhoto());
+            // 发起业务请求
+            String responseContext = callService(requestUrl, JSONObject.toJSONString(requestObject), outTime);
+            log.info("supplier10000027.validatePhotoIdentityInfo接口responseContext={}", responseContext);
+            DataResponseObject responseObject = objectMapper.readValue(responseContext, DataResponseObject.class);
+            log.info("supplier10000027.validatePhotoIdentityInfo接口responseObject={}", responseObject);
+
+            if (responseObject != null && responseObject.getBizPackage().getSuccess().equals("true")) {
+                ret.setCode(Constant.SUCCESS);
+                setPhotoIdentityInfoResponse(ret, returnType, responseObject.getBizPackage().getAuthResult());
+                upstreamCode = responseObject.getBizPackage().getAuthResult();
+            } else {
+                ret.setCode(Constant.FAIL);
+            }
+        } catch (SocketTimeoutException ste) {
+            ErrorUtils.captureException(ste);
+            log.info("supplier10000027.validatePhotoIdentityInfo接口SocketTimeoutException={}", ste);
+            ret.setCode(Constant.REQUEST_TIMEOUT);
+        } catch (Exception ioe) {
+            ErrorUtils.captureException(ioe);
+            log.info("supplier10000027.validatePhotoIdentityInfo接口Exception={}", ioe);
+            ret.setCode(Constant.FAIL);
+        }
+        //上游返回码
+        request.setAttribute(Constant.LOG_UPSTREAM_RESPONSE_CODE, upstreamCode);
+        return ret;
+    }
+
+    private boolean validateCompositeIdentityParams(ChannelTypeHandleResponseObject ret, String returnType,
+                                                    CompositeIdentityInfoJsonResolveObject jsonResolveObject) {
+        if (!validateParamNullValue(jsonResolveObject)) {
+            if (Constant.CUSTOMER_RETURN_ZW.equals(returnType)) {
+                ret.setResultCode(Constant.INVALID_PARAMETER_CODE);
+                ret.setResultBody(Constant.PARAMETER_NAME_ERROR);
+                ret.setResultDesc(Constant.PARAMETER_NAME_ERROR);
+            } else {
+                ret.setResultCode(Constant.JK_RETURN_CODE_INVALID_PARAMETER);
+                ret.setResultBody(Constant.PARAMETER_NAME_ERROR);
+                ret.setResultDesc(Constant.PARAMETER_NAME_ERROR);
+            }
+            return false;
+        } else if (StringUtils.isBlank(jsonResolveObject.getName()) ||
+                !PatternTools.checkResult(Constant.PATTERN_CN_NAME_REGEX, jsonResolveObject.getName())) {
+            if (Constant.CUSTOMER_RETURN_ZW.equals(returnType)) {
+                ret.setResultCode(Constant.NAME_FORMAT_ERROR_CODE);
+                ret.setResultDesc(Constant.NAME_FORMAT_ERROR);
+                ret.setResultBody(Constant.NAME_FORMAT_ERROR);
+            } else {
+                ret.setResultCode(Constant.JK_NAME_FORMAT_ERROR_CODE);
+                ret.setResultDesc(Constant.JK_NAME_FORMAT_ERROR);
+                ret.setResultBody(Constant.JK_NAME_FORMAT_ERROR);
+            }
+            return false;
+        } else if (StringUtils.isBlank(jsonResolveObject.getIdCode())
+                || !PatternTools.checkResult(Constant.PATTERN_SPECIAL_ID_NUMBER_REGEX, jsonResolveObject.getIdCode())) {
+            if (Constant.CUSTOMER_RETURN_ZW.equals(returnType)) {
+                ret.setResultCode(Constant.IDCODE_FORMAT_ERROR_CODE);
+                ret.setResultDesc(Constant.IDCODE_FORMAT_ERROR);
+                ret.setResultBody(Constant.IDCODE_FORMAT_ERROR);
+            } else {
+                ret.setResultCode(Constant.JK_IDCODE_FORMAT_ERROR_CODE);
+                ret.setResultDesc(Constant.JK_IDCODE_FORMAT_ERROR);
+                ret.setResultBody(Constant.JK_IDCODE_FORMAT_ERROR);
+            }
+            return false;
+        } else if (StringUtils.isBlank(jsonResolveObject.getStartTime())
+                || StringUtils.isBlank(jsonResolveObject.getEndTime())
+                || !isValidDate(jsonResolveObject.getStartTime())
+                || (!isValidDate(jsonResolveObject.getEndTime()) && !jsonResolveObject.getEndTime().equals("00000000"))) {
+            if (Constant.CUSTOMER_RETURN_ZW.equals(returnType)) {
+                ret.setResultCode(Constant.INVALID_PARAMETER_CODE);
+                ret.setResultBody(Constant.INVALID_PARAMETER);
+                ret.setResultDesc(Constant.INVALID_PARAMETER);
+            } else {
+                ret.setResultCode(Constant.JK_RETURN_CODE_INVALID_PARAMETER);
+                ret.setResultBody(Constant.INVALID_PARAMETER);
+                ret.setResultDesc(Constant.INVALID_PARAMETER);
+            }
+            return false;
+        }
+        return true;
+    }
+
+    private boolean validateIdentityInfoParams(ChannelTypeHandleResponseObject ret, String returnType,
+                                                    IdentityInfoJsonResolveObject jsonResolveObject) {
+        if (!validateParamNullValue(jsonResolveObject)) {
+            if (Constant.CUSTOMER_RETURN_ZW.equals(returnType)) {
+                ret.setResultCode(Constant.INVALID_PARAMETER_CODE);
+                ret.setResultBody(Constant.PARAMETER_NAME_ERROR);
+                ret.setResultDesc(Constant.PARAMETER_NAME_ERROR);
+            } else {
+                ret.setResultCode(Constant.JK_RETURN_CODE_INVALID_PARAMETER);
+                ret.setResultBody(Constant.PARAMETER_NAME_ERROR);
+                ret.setResultDesc(Constant.PARAMETER_NAME_ERROR);
+            }
+            return false;
+        } else if (StringUtils.isBlank(jsonResolveObject.getName()) ||
+                !PatternTools.checkResult(Constant.PATTERN_CN_NAME_REGEX, jsonResolveObject.getName())) {
+            if (Constant.CUSTOMER_RETURN_ZW.equals(returnType)) {
+                ret.setResultCode(Constant.NAME_FORMAT_ERROR_CODE);
+                ret.setResultDesc(Constant.NAME_FORMAT_ERROR);
+                ret.setResultBody(Constant.NAME_FORMAT_ERROR);
+            } else {
+                ret.setResultCode(Constant.JK_NAME_FORMAT_ERROR_CODE);
+                ret.setResultDesc(Constant.JK_NAME_FORMAT_ERROR);
+                ret.setResultBody(Constant.JK_NAME_FORMAT_ERROR);
+            }
+            return false;
+        } else if (StringUtils.isBlank(jsonResolveObject.getIdCode())
+                || !PatternTools.checkResult(Constant.PATTERN_SPECIAL_ID_NUMBER_REGEX, jsonResolveObject.getIdCode())) {
+            if (Constant.CUSTOMER_RETURN_ZW.equals(returnType)) {
+                ret.setResultCode(Constant.IDCODE_FORMAT_ERROR_CODE);
+                ret.setResultDesc(Constant.IDCODE_FORMAT_ERROR);
+                ret.setResultBody(Constant.IDCODE_FORMAT_ERROR);
+            } else {
+                ret.setResultCode(Constant.JK_IDCODE_FORMAT_ERROR_CODE);
+                ret.setResultDesc(Constant.JK_IDCODE_FORMAT_ERROR);
+                ret.setResultBody(Constant.JK_IDCODE_FORMAT_ERROR);
+            }
+            return false;
+        }
+        return true;
+    }
+
+    private boolean validatePhotoIdentityInfoParams(ChannelTypeHandleResponseObject ret, String returnType,
+                                               PhotoIdentityInfoJsonResolveObject jsonResolveObject) {
+        if (!validateParamNullValue(jsonResolveObject)) {
+            if (Constant.CUSTOMER_RETURN_ZW.equals(returnType)) {
+                ret.setResultCode(Constant.INVALID_PARAMETER_CODE);
+                ret.setResultBody(Constant.PARAMETER_NAME_ERROR);
+                ret.setResultDesc(Constant.PARAMETER_NAME_ERROR);
+            } else {
+                ret.setResultCode(Constant.JK_RETURN_CODE_INVALID_PARAMETER);
+                ret.setResultBody(Constant.PARAMETER_NAME_ERROR);
+                ret.setResultDesc(Constant.PARAMETER_NAME_ERROR);
+            }
+            return false;
+        } else if (StringUtils.isBlank(jsonResolveObject.getName()) ||
+                !PatternTools.checkResult(Constant.PATTERN_CN_NAME_REGEX, jsonResolveObject.getName())) {
+            if (Constant.CUSTOMER_RETURN_ZW.equals(returnType)) {
+                ret.setResultCode(Constant.NAME_FORMAT_ERROR_CODE);
+                ret.setResultDesc(Constant.NAME_FORMAT_ERROR);
+                ret.setResultBody(Constant.NAME_FORMAT_ERROR);
+            } else {
+                ret.setResultCode(Constant.JK_NAME_FORMAT_ERROR_CODE);
+                ret.setResultDesc(Constant.JK_NAME_FORMAT_ERROR);
+                ret.setResultBody(Constant.JK_NAME_FORMAT_ERROR);
+            }
+            return false;
+        } else if (StringUtils.isBlank(jsonResolveObject.getIdCode())
+                || !PatternTools.checkResult(Constant.PATTERN_SPECIAL_ID_NUMBER_REGEX, jsonResolveObject.getIdCode())) {
+            if (Constant.CUSTOMER_RETURN_ZW.equals(returnType)) {
+                ret.setResultCode(Constant.IDCODE_FORMAT_ERROR_CODE);
+                ret.setResultDesc(Constant.IDCODE_FORMAT_ERROR);
+                ret.setResultBody(Constant.IDCODE_FORMAT_ERROR);
+            } else {
+                ret.setResultCode(Constant.JK_IDCODE_FORMAT_ERROR_CODE);
+                ret.setResultDesc(Constant.JK_IDCODE_FORMAT_ERROR);
+                ret.setResultBody(Constant.JK_IDCODE_FORMAT_ERROR);
+            }
+            return false;
+        } else if (StringUtils.isBlank(jsonResolveObject.getPhoto())
+                || !validatePhoto(jsonResolveObject.getPhoto())) {
+            if (Constant.CUSTOMER_RETURN_ZW.equals(returnType)) {
+                ret.setResultCode(Constant.INVALID_PARAMETER_CODE);
+                ret.setResultBody(Constant.INVALID_PARAMETER);
+                ret.setResultDesc(Constant.INVALID_PARAMETER);
+            } else {
+                ret.setResultCode(Constant.JK_RETURN_CODE_INVALID_PARAMETER);
+                ret.setResultBody(Constant.INVALID_PARAMETER);
+                ret.setResultDesc(Constant.INVALID_PARAMETER);
+            }
+            return false;
+        }
+        return true;
+    }
+
+    private String callService(String url, String requestParam, int outTime) throws IOException {
+        MediaType mediaType = MediaType.parse(org.springframework.http.MediaType.APPLICATION_JSON_UTF8_VALUE);
+        RequestBody requestBody = RequestBody.create(mediaType, requestParam);
+
+        Request okRequest = new Request.Builder()
+                .url(url)
+                .post(requestBody)
+                .build();
+        OkHttpClient client = okHttpClient.newBuilder()
+                .connectTimeout(outTime, TimeUnit.MILLISECONDS)
+                .readTimeout(outTime, TimeUnit.MILLISECONDS)
+                .writeTimeout(outTime, TimeUnit.MILLISECONDS)
+                .build();
+        Response response = client.newCall(okRequest).execute();
+        String responseContext = "";
+        if (response.body() != null) {
+            responseContext = response.body().string();
+            response.close();
+        }
+        return responseContext;
+    }
+
+    private DataRequestObject getRequestObject(Object params, String authMode, String businessSerialNumber, String photoData) throws NewCSSException, IOException {
+        JSONObject jsonParam = JSON.parseObject(JSON.toJSONString(params));
+        // 网站信息
+        JSONObject wZXX = new JSONObject();
+
+        if (jsonParam.get("businessType") != null) {
+            wZXX.put("businessType", jsonParam.get("businessType"));
+        } else {
+            wZXX.put("businessType","");
+        }
+
+        if (jsonParam.get("dealDate") != null) {
+            wZXX.put("dealDate", jsonParam.get("dealDate"));
+        } else {
+            wZXX.put("dealDate","");
+        }
+
+        if (jsonParam.get("venderName") != null) {
+            BASE64Encoder encoder = new BASE64Encoder();
+            wZXX.put("venderName", jsonParam.get("venderName"));
+        } else {
+            wZXX.put("venderName", "");
+        }
+
+        if (jsonParam.get("vendorIp") != null) {
+            wZXX.put("vendorIp",jsonParam.get("vendorIp"));
+        } else {
+            wZXX.put("vendorIp","");
+        }
+
+        // 照片
+        JSONObject zP = new JSONObject();
+        zP.put("wLTZP", "");
+
+        log.info("getRequestObject name = {}", jsonParam.get("xM"));
+        JSONObject requestParamObject = new JSONObject();
+        requestParamObject.put("sFXX", jsonParam);
+        requestParamObject.put("wZXX", wZXX);
+        requestParamObject.put("zP", zP);
+
+
+        DataSignature ds = new DataSignature();
+        DataRequestObject.BizPackageBean bizPackageBean = new DataRequestObject.BizPackageBean();
+        bizPackageBean.setCustomNumber(customerNumber);
+        bizPackageBean.setAppName(appName);
+        bizPackageBean.setTimeStamp(new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()));
+        bizPackageBean.setBusinessSerialNumber(businessSerialNumber);
+        bizPackageBean.setAuthMode(authMode);
+        bizPackageBean.setAuthApplyRetainData(EncryptedReservedData.encodeEnvelopedDataForJit(JSON.toJSONString(requestParamObject)));
+        if (authMode.equals(authMode42)) {
+            String fileName = photoData.substring(11, 15);
+            if (fileName.equals("jpeg")) {
+                bizPackageBean.setPhotoData(photoData.split("data:image/jpeg;base64,")[1]);
+            } else {
+                bizPackageBean.setPhotoData(photoData.split("data:image/jpg;base64,")[1]);
+            }
+        }
+
+        DataRequestObject requestObject = new DataRequestObject();
+        requestObject.setBizPackage(bizPackageBean);
+        requestObject.setSign(ds.signDataByP7DetachForJit(JSON.toJSONString(bizPackageBean)));
+
+        return requestObject;
+    }
+
+    private boolean validateParamNullValue(Object jsonResolveObject) {
+        ValidatorFactory vf = Validation.buildDefaultValidatorFactory();
+        Validator validator = vf.getValidator();
+        Set<ConstraintViolation<Object>> set = validator.validate(jsonResolveObject);
+        for (ConstraintViolation<Object> con : set) {
+            if (StringUtils.isNotBlank(con.getMessage())) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    private static boolean isValidDate(String str) {
+        // 指定日期格式,注意yyyy/MM/dd区分大小写;
+        SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
+        try {
+            // 设置lenient为false.
+            // 否则SimpleDateFormat会比较宽松地验证日期,比如2007/02/29会被接受,并转换成2007/03/01
+            format.setLenient(false);
+            format.parse(str);
+        } catch (ParseException e) {
+            // e.printStackTrace();
+            // 如果throw java.text.ParseException或者NullPointerException,就说明格式不对
+            return false;
+        }
+        return true;
+    }
+
+    private void setIdentityInfoResponse(ChannelTypeHandleResponseObject ret, String returnType, String responseCode) {
+        boolean isCharge = responseCode != null
+                && ArrayUtils.contains(SjjhConstant.IDENTITY_CHARGE_CODE, responseCode);
+        if (isCharge) {
+            ret.setIsCharge(Constant.INTERFACE_QUERY_FEE);
+        }
+        if (Constant.CUSTOMER_RETURN_JK.equals(returnType)) {
+            if (responseCode != null && responseCode.equals(SjjhConstant.RESPONSE_CODE_0XXX)) {
+                // 身份信息有效
+                ret.setResultCode(Constant.JK_RETURN_CODE_1174);
+                ret.setResultBody(Constant.RETURN_MESSAGE_114);
+                ret.setResultDesc(Constant.RETURN_MESSAGE_114);
+            } else if (responseCode != null && responseCode.equals(SjjhConstant.RESPONSE_CODE_5XXX)) {
+                // 身份信息无效
+                ret.setResultCode(Constant.JK_RETURN_CODE_1175);
+                ret.setResultBody(Constant.RETURN_MESSAGE_115);
+                ret.setResultDesc(Constant.RETURN_MESSAGE_115);
+            } else if (responseCode != null && responseCode.equals(SjjhConstant.RESPONSE_CODE_6XXX)) {
+                // 身份信息有误
+                ret.setResultCode(Constant.JK_RETURN_CODE_1176);
+                ret.setResultBody(Constant.RETURN_MESSAGE_116);
+                ret.setResultDesc(Constant.RETURN_MESSAGE_116);
+            } else {
+                // 查询错误
+                ret.setResultCode(Constant.JK_RETURN_CODE_OTHER_ERROR);
+                ret.setResultBody(Constant.OTHER_ERROR);
+                ret.setResultDesc(Constant.OTHER_ERROR);
+            }
+        } else {
+            if (responseCode != null && responseCode.equals(SjjhConstant.RESPONSE_CODE_0XXX)) {
+                // 身份信息有效
+                ret.setResultCode(Constant.ZW_RETURN_CODE_114);
+                ret.setResultBody(Constant.RETURN_MESSAGE_114);
+                ret.setResultDesc(Constant.RETURN_MESSAGE_114);
+            } else if (responseCode != null && responseCode.equals(SjjhConstant.RESPONSE_CODE_5XXX)) {
+                // 身份信息无效
+                ret.setResultCode(Constant.ZW_RETURN_CODE_115);
+                ret.setResultBody(Constant.RETURN_MESSAGE_115);
+                ret.setResultDesc(Constant.RETURN_MESSAGE_115);
+            } else if (responseCode != null && responseCode.equals(SjjhConstant.RESPONSE_CODE_6XXX)) {
+                // 身份信息有误
+                ret.setResultCode(Constant.ZW_RETURN_CODE_116);
+                ret.setResultBody(Constant.RETURN_MESSAGE_116);
+                ret.setResultDesc(Constant.RETURN_MESSAGE_116);
+            } else {
+                // 查询错误
+                ret.setResultCode(Constant.OTHER_ERROR_CODE);
+                ret.setResultBody(Constant.OTHER_ERROR);
+                ret.setResultDesc(Constant.OTHER_ERROR);
+            }
+        }
+    }
+
+    private void setPhotoIdentityInfoResponse(ChannelTypeHandleResponseObject ret, String returnType, String responseCode) {
+        boolean isCharge = responseCode != null
+                && ArrayUtils.contains(SjjhConstant.PHOTO_IDENTITY_CHARGE_CODE, responseCode);
+        if (isCharge) {
+            ret.setIsCharge(Constant.INTERFACE_QUERY_FEE);
+        }
+        if (Constant.CUSTOMER_RETURN_JK.equals(returnType)) {
+            if (responseCode != null && responseCode.equals(SjjhConstant.RESPONSE_CODE_00XX)) {
+                // 同一人
+                ret.setResultCode(Constant.JK_RETURN_CODE_1143);
+                ret.setResultBody(Constant.RETURN_MESSAGE_68);
+                ret.setResultDesc(Constant.RETURN_MESSAGE_68);
+            } else if (responseCode != null && responseCode.equals(SjjhConstant.RESPONSE_CODE_01XX)) {
+                // 非同一人
+                ret.setResultCode(Constant.JK_RETURN_CODE_1145);
+                ret.setResultBody(Constant.RETURN_MESSAGE_70);
+                ret.setResultDesc(Constant.RETURN_MESSAGE_70);
+            } else if (responseCode != null && responseCode.equals(SjjhConstant.RESPONSE_CODE_02XX)) {
+                // 疑似
+                ret.setResultCode(Constant.JK_RETURN_CODE_1144);
+                ret.setResultBody(Constant.RETURN_MESSAGE_69);
+                ret.setResultDesc(Constant.RETURN_MESSAGE_69);
+            } else if (responseCode != null && responseCode.equals(SjjhConstant.RESPONSE_CODE_5XXX)) {
+                // 身份信息无效
+                ret.setResultCode(Constant.JK_RETURN_CODE_1175);
+                ret.setResultBody(Constant.RETURN_MESSAGE_115);
+                ret.setResultDesc(Constant.RETURN_MESSAGE_115);
+            } else if (responseCode != null && (responseCode.equals(SjjhConstant.RESPONSE_CODE_6XXX) || responseCode.equals(SjjhConstant.RESPONSE_CODE_0CXX))) {
+                // 身份信息有误
+                ret.setResultCode(Constant.JK_RETURN_CODE_1176);
+                ret.setResultBody(Constant.RETURN_MESSAGE_116);
+                ret.setResultDesc(Constant.RETURN_MESSAGE_116);
+            } else if (responseCode != null && responseCode.equals(SjjhConstant.RESPONSE_CODE_0DXX)) {
+                // 无人像信息
+                ret.setResultCode(Constant.JK_RETURN_CODE_NO_INFO);
+                ret.setResultBody(SjjhConstant.RESPONSE_MESSAGE_1);
+                ret.setResultDesc(SjjhConstant.RESPONSE_MESSAGE_1);
+            } else if (responseCode != null && ArrayUtils.contains(SjjhConstant.PHOTO_BELOW_STANDARD, responseCode)) {
+                // 照片质量不合格
+                ret.setResultCode(Constant.JK_RETURN_CODE_1177);
+                ret.setResultBody(Constant.RETURN_MESSAGE_117);
+                ret.setResultDesc(Constant.RETURN_MESSAGE_117);
+            } else if (responseCode != null && (responseCode.equals(SjjhConstant.RESPONSE_CODE_0IXX) || responseCode.equals(SjjhConstant.RESPONSE_CODE_0HXX))) {
+                // 活体检测失败
+                ret.setResultCode(Constant.JK_RETURN_CODE_1178);
+                ret.setResultBody(Constant.RETURN_MESSAGE_118);
+                ret.setResultDesc(Constant.RETURN_MESSAGE_118);
+            } else {
+                // 查询错误
+                ret.setResultCode(Constant.JK_RETURN_CODE_OTHER_ERROR);
+                ret.setResultBody(Constant.OTHER_ERROR);
+                ret.setResultDesc(Constant.OTHER_ERROR);
+            }
+        } else {
+            if (responseCode != null && responseCode.equals(SjjhConstant.RESPONSE_CODE_00XX)) {
+                // 同一人
+                ret.setResultCode(Constant.ZW_RETURN_CODE_68);
+                ret.setResultBody(Constant.RETURN_MESSAGE_68);
+                ret.setResultDesc(Constant.RETURN_MESSAGE_68);
+            } else if (responseCode != null && responseCode.equals(SjjhConstant.RESPONSE_CODE_01XX)) {
+                // 非同一人
+                ret.setResultCode(Constant.ZW_RETURN_CODE_70);
+                ret.setResultBody(Constant.RETURN_MESSAGE_70);
+                ret.setResultDesc(Constant.RETURN_MESSAGE_70);
+            } else if (responseCode != null && responseCode.equals(SjjhConstant.RESPONSE_CODE_02XX)) {
+                // 疑似
+                ret.setResultCode(Constant.ZW_RETURN_CODE_69);
+                ret.setResultBody(Constant.RETURN_MESSAGE_69);
+                ret.setResultDesc(Constant.RETURN_MESSAGE_69);
+            } else if (responseCode != null && responseCode.equals(SjjhConstant.RESPONSE_CODE_5XXX)) {
+                // 身份信息无效
+                ret.setResultCode(Constant.ZW_RETURN_CODE_115);
+                ret.setResultBody(Constant.RETURN_MESSAGE_115);
+                ret.setResultDesc(Constant.RETURN_MESSAGE_115);
+            } else if (responseCode != null && (responseCode.equals(SjjhConstant.RESPONSE_CODE_6XXX) || responseCode.equals(SjjhConstant.RESPONSE_CODE_0CXX))) {
+                // 身份信息有误
+                ret.setResultCode(Constant.ZW_RETURN_CODE_116);
+                ret.setResultBody(Constant.RETURN_MESSAGE_116);
+                ret.setResultDesc(Constant.RETURN_MESSAGE_116);
+            } else if (responseCode != null && responseCode.equals(SjjhConstant.RESPONSE_CODE_0DXX)) {
+                // 无人像信息
+                ret.setResultCode(Constant.UN_FIND_NUM_CODE);
+                ret.setResultBody(SjjhConstant.RESPONSE_MESSAGE_1);
+                ret.setResultDesc(SjjhConstant.RESPONSE_MESSAGE_1);
+            } else if (responseCode != null && ArrayUtils.contains(SjjhConstant.PHOTO_BELOW_STANDARD, responseCode)) {
+                // 照片质量不合格
+                ret.setResultCode(Constant.ZW_RETURN_CODE_117);
+                ret.setResultBody(Constant.RETURN_MESSAGE_117);
+                ret.setResultDesc(Constant.RETURN_MESSAGE_117);
+            } else if (responseCode != null && (responseCode.equals(SjjhConstant.RESPONSE_CODE_0IXX) || responseCode.equals(SjjhConstant.RESPONSE_CODE_0HXX))) {
+                // 活体检测失败
+                ret.setResultCode(Constant.ZW_RETURN_CODE_118);
+                ret.setResultBody(Constant.RETURN_MESSAGE_118);
+                ret.setResultDesc(Constant.RETURN_MESSAGE_118);
+            } else {
+                // 查询错误
+                ret.setResultCode(Constant.OTHER_ERROR_CODE);
+                ret.setResultBody(Constant.OTHER_ERROR);
+                ret.setResultDesc(Constant.OTHER_ERROR);
+            }
+        }
+    }
+
+    private boolean validatePhoto(String photo) {
+        // 判断图片格式
+        String fileName = photo.substring(11, 15);
+        if (!fileName.equals("jpeg") && !fileName.equals("jpg;")) {
+            return false;
+        }
+        // 判断图片大小
+        String str = photo.substring(22); // 1.需要计算文件流大小,首先把头部的data:image/png;base64,(注意有逗号)去掉。
+        Integer equalIndex = str.indexOf("=");//2.找到等号,把等号也去掉
+        if (str.indexOf("=") > 0) {
+            str = str.substring(0, equalIndex);
+        }
+        Integer strLength = str.length();//3.原来的字符流大小,单位为字节
+        Integer size = strLength - (strLength / 8) * 2;//4.计算后得到的文件流大小,单位为字节
+        Double fileSize = size/1024.0;
+
+        if (fileSize < 5 || fileSize > 40) {
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    public ChannelTypeHandleResponseObject validateIdentityInfoCommon(HttpServletRequest request, String customBody, int outTime, String decodeType) {
+        ChannelTypeHandleResponseObject ret = new ChannelTypeHandleResponseObject();
+        ret.setIsCharge(Constant.INTERFACE_QUERY_NO_FEE);
+        String upstreamCode = Constant.LOG_UPSTREAM_DEFAULT_RESPONSE_CODE;
+        String returnType = request.getHeader(Constant.CUSTOMER_RETURN_TYPE_PARA);
+
+        if (StringUtils.isBlank(returnType)) {
+            returnType = Constant.CUSTOMER_RETURN_ZW;
+        }
+        if (outTime <= 0) {
+            outTime = Constant.HTTPCLIENT_CONNECTTIMEOUT;
+        }
+
+        log.info("validateIdentityInfoCommon---customBody={},outTime={}", customBody, outTime);
+        if (!decodeType.equals(SjjhConstant.DECODE_TYPE_COMMON)) {
+            customBody = decodeParams(ret, returnType, customBody, decodeType);
+            if (StringUtils.isBlank(customBody)) {
+                ret.setCode(Constant.SUCCESS);
+                request.setAttribute(Constant.LOG_UPSTREAM_RESPONSE_CODE, upstreamCode);
+                return ret;
+            }
+        }
+        try {
+            IdentityInfoJsonResolveObject jsonResolveObject = objectMapper.readValue(customBody,
+                    IdentityInfoJsonResolveObject.class);
+            // 参数校验
+            if (!validateIdentityInfoParams(ret, returnType, jsonResolveObject)) {
+                ret.setCode(Constant.SUCCESS);
+                request.setAttribute(Constant.LOG_UPSTREAM_RESPONSE_CODE, upstreamCode);
+                return ret;
+            }
+
+            // 申请
+            ApplyResponseObject apply = dataSignature(authMode40, outTime);
+            if (apply == null || !apply.getBizPackage().getSuccess().equals("true")) {
+                // 申请失败,返回查询错误
+                if (Constant.CUSTOMER_RETURN_ZW.equals(returnType)) {
+                    ret.setResultCode(Constant.OTHER_ERROR_CODE);
+                } else {
+                    ret.setResultCode(Constant.JK_RETURN_CODE_OTHER_ERROR);
+                }
+                ret.setResultBody(Constant.OTHER_ERROR);
+                ret.setResultDesc(Constant.OTHER_ERROR);
+                ret.setCode(Constant.SUCCESS);
+                request.setAttribute(Constant.LOG_UPSTREAM_RESPONSE_CODE, upstreamCode);
+                log.info("validateIdentityInfoCommon---apply失败");
+                return ret;
+            }
+
+            // 设置请求参数
+            DataRequestObject requestObject = getRequestObject(jsonResolveObject, authMode40, apply.getBizPackage().getBusinessSerialNumber(), "");
+            log.info("supplier10000027.validateIdentityInfoCommon接口requestObject={}", requestObject);
+            // 发起业务请求
+            String responseContext = callService(requestUrl, JSONObject.toJSONString(requestObject), outTime);
+            log.info("请求上游");
+            log.info("supplier10000027.validateIdentityInfoCommon接口responseContext={}", responseContext);
+            DataResponseObject responseObject = objectMapper.readValue(responseContext, DataResponseObject.class);
+            log.info("supplier10000027.validateIdentityInfoCommon接口responseObject={}", responseObject);
+
+            if (responseObject != null && responseObject.getBizPackage().getSuccess().equals("true")) {
+                ret.setCode(Constant.SUCCESS);
+                setIdentityInfoResponseCommonVersion(ret, returnType, responseObject.getBizPackage().getAuthResult());
+                upstreamCode = responseObject.getBizPackage().getAuthResult();
+            } else {
+                ret.setCode(Constant.FAIL);
+            }
+        } catch (SocketTimeoutException ste) {
+            ErrorUtils.captureException(ste);
+            log.info("supplier10000027.validateIdentityInfoCommon接口SocketTimeoutException={}", ste);
+            ret.setCode(Constant.REQUEST_TIMEOUT);
+        } catch (Exception ioe) {
+            ErrorUtils.captureException(ioe);
+            log.info("supplier10000027.validateIdentityInfoCommon接口Exception={}", ioe);
+            ret.setCode(Constant.FAIL);
+        }
+        //上游返回码
+        request.setAttribute(Constant.LOG_UPSTREAM_RESPONSE_CODE, upstreamCode);
+        return ret;
+    }
+
+    private void setIdentityInfoResponseCommonVersion(ChannelTypeHandleResponseObject ret, String returnType, String responseCode) {
+        boolean isCharge = responseCode != null
+                && ArrayUtils.contains(SjjhConstant.IDENTITY_COMMON_CHARGE_CODE, responseCode);
+        if (isCharge) {
+            ret.setIsCharge(Constant.INTERFACE_QUERY_FEE);
+        }
+        if (Constant.CUSTOMER_RETURN_JK.equals(returnType)) {
+            if (responseCode != null && responseCode.equals(SjjhConstant.RESPONSE_CODE_0XXX)) {
+                // 身份信息有效
+                ret.setResultCode(Constant.JK_RETURN_CODE_MATCH);
+                ret.setResultBody(Constant.MATCH);
+                ret.setResultDesc(Constant.MATCH);
+            } else if (responseCode != null
+                    && (responseCode.equals(SjjhConstant.RESPONSE_CODE_5XXX)
+                    || responseCode.equals(SjjhConstant.RESPONSE_CODE_6XXX))) {
+                // 身份信息无效
+                ret.setResultCode(Constant.JK_RETURN_CODE_NO_MATCH);
+                ret.setResultBody(Constant.UN_MATCH);
+                ret.setResultDesc(Constant.UN_MATCH);
+            } else {
+                // 查询错误
+                ret.setResultCode(Constant.JK_RETURN_CODE_OTHER_ERROR);
+                ret.setResultBody(Constant.OTHER_ERROR);
+                ret.setResultDesc(Constant.OTHER_ERROR);
+            }
+        } else {
+            if (responseCode != null && responseCode.equals(SjjhConstant.RESPONSE_CODE_0XXX)) {
+                // 身份信息有效
+                ret.setResultCode(Constant.MATCH_CODE);
+                ret.setResultBody(Constant.MATCH);
+                ret.setResultDesc(Constant.MATCH);
+            } else if (responseCode != null
+                    && (responseCode.equals(SjjhConstant.RESPONSE_CODE_5XXX)
+                    || responseCode.equals(SjjhConstant.RESPONSE_CODE_6XXX))) {
+                // 身份信息无效
+                ret.setResultCode(Constant.UN_MATCH_CODE);
+                ret.setResultBody(Constant.UN_MATCH);
+                ret.setResultDesc(Constant.UN_MATCH);
+            } else {
+                // 查询错误
+                ret.setResultCode(Constant.OTHER_ERROR_CODE);
+                ret.setResultBody(Constant.OTHER_ERROR);
+                ret.setResultDesc(Constant.OTHER_ERROR);
+            }
+        }
+    }
+
+    private String decodeParams(ChannelTypeHandleResponseObject ret, String returnType, String customBody, String decodeType) {
+        JSONObject requestParamObject = JSONObject.parseObject(customBody);
+        if (requestParamObject.get("params") == null) {
+            if (Constant.CUSTOMER_RETURN_ZW.equals(returnType)) {
+                ret.setResultCode(Constant.INVALID_PARAMETER_CODE);
+                ret.setResultBody(Constant.INVALID_PARAMETER);
+                ret.setResultDesc(Constant.INVALID_PARAMETER);
+            } else {
+                ret.setResultCode(Constant.JK_RETURN_CODE_INVALID_PARAMETER);
+                ret.setResultBody(Constant.INVALID_PARAMETER);
+                ret.setResultDesc(Constant.INVALID_PARAMETER);
+            }
+            return "";
+        }
+        if (decodeType.equals(SjjhConstant.DECODE_TYPE_WEIZHONG)) {
+            customBody = DESedeUtil.decryptMode(requestParamObject.getString("params"), decryptKey);
+            if (StringUtils.isBlank(customBody)) {
+                if (Constant.CUSTOMER_RETURN_ZW.equals(returnType)) {
+                    ret.setResultCode(Constant.ZW_RETURN_CODE_133);
+                    ret.setResultBody(Constant.RETURN_MESSAGE_133);
+                    ret.setResultDesc(Constant.RETURN_MESSAGE_133);
+                } else {
+                    ret.setResultCode(Constant.JK_RETURN_CODE_9931);
+                    ret.setResultBody(Constant.RETURN_MESSAGE_133);
+                    ret.setResultDesc(Constant.RETURN_MESSAGE_133);
+                }
+            }
+        }
+        return customBody;
+    }
+}

+ 107 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000027/util/DESedeUtil.java

@@ -0,0 +1,107 @@
+package info.aspirecn.iov.sjjh.supplier10000027.util;
+
+import lombok.extern.slf4j.Slf4j;
+
+import javax.crypto.Cipher;
+import javax.crypto.SecretKey;
+import javax.crypto.spec.SecretKeySpec;
+import java.io.UnsupportedEncodingException;
+
+@Slf4j
+public class DESedeUtil {
+    //定义加密算法,有DES、DESede(即3DES)、Blowfish
+    private static final String Algorithm = "DESede";
+
+    /**
+     * 加密方法
+     *
+     * @param src 源数据的字节数组
+     * @return
+     */
+    public static String encryptMode(String src, String key) {
+        try {
+            log.info("开始加密");
+            SecretKey deskey = new SecretKeySpec(build3DesKey(key), Algorithm);    //生成密钥
+            Cipher c1 = Cipher.getInstance(Algorithm);    //实例化负责加密/解密的Cipher工具类
+            c1.init(Cipher.ENCRYPT_MODE, deskey);    //初始化为加密模式
+            return byteToHexString(c1.doFinal(src.getBytes()));
+
+        } catch (Exception e) {
+            log.error("加密失败:src={},key={}", src,key,e);
+        }
+        return "";
+    }
+
+
+
+    /**
+     * 解密函数
+     *
+     * @param src 密文的字节数组
+     * @return
+     */
+    public static String decryptMode(String src, String key) {
+        String result="";
+        try {
+            log.info("开始解密");
+            byte[] srcArray = hexStringToBytes(src);
+            SecretKey deskey = new SecretKeySpec(build3DesKey(key), Algorithm);
+            Cipher c1 = Cipher.getInstance(Algorithm);
+            c1.init(Cipher.DECRYPT_MODE, deskey); //初始化为解密模式
+            result= new String(c1.doFinal(srcArray));
+        } catch (Exception e) {
+            log.error("解密失败:src={},key={}", src,key,e);
+        }
+        return result;
+    }
+
+    public static String byteToHexString(byte[] b) {
+        String a = "";
+
+        for(int i = 0; i < b.length; ++i) {
+            String hex = Integer.toHexString(b[i] & 255);
+            if(hex.length() == 1) {
+                hex = '0' + hex;
+            }
+
+            a = a + hex;
+        }
+
+        return a;
+    }
+
+    public static byte[] build3DesKey(String keyStr) throws UnsupportedEncodingException {
+        byte[] key = new byte[24];    //声明一个24位的字节数组,默认里面都是0
+        byte[] temp = keyStr.getBytes("UTF-8");    //将字符串转成字节数组
+        if (key.length > temp.length) {
+            //如果temp不够24位,则拷贝temp数组整个长度的内容到key数组中
+            System.arraycopy(temp, 0, key, 0, temp.length);
+        } else {
+            //如果temp大于24位,则拷贝temp数组24个长度的内容到key数组中
+            System.arraycopy(temp, 0, key, 0, key.length);
+        }
+        return key;
+    }
+
+    public static byte[] hexStringToBytes(String hexString) {
+        if (hexString != null && !hexString.equals("")) {
+            hexString = hexString.toUpperCase();
+            int length = hexString.length() / 2;
+            char[] hexChars = hexString.toCharArray();
+            byte[] d = new byte[length];
+
+            for (int i = 0; i < length; ++i) {
+                int pos = i * 2;
+                d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
+            }
+            return d;
+        } else {
+            return null;
+        }
+    }
+
+    static byte charToByte(char c) {
+        return (byte) "0123456789ABCDEF".indexOf(c);
+    }
+
+}

+ 83 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000027/util/DataSignature.java

@@ -0,0 +1,83 @@
+package info.aspirecn.iov.sjjh.supplier10000027.util;
+
+import cn.com.jit.new_vstk.exception.NewCSSException;
+import cn.org.bjca.client.exceptions.ApplicationNotFoundException;
+import cn.org.bjca.client.exceptions.InitException;
+import cn.org.bjca.client.exceptions.SVSConnectException;
+import cn.org.bjca.client.security.SecurityEngineDeal;
+import com.fri.ctid.security.jit.Api;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.stereotype.Component;
+import sun.misc.BASE64Decoder;
+import sun.misc.BASE64Encoder;
+
+import javax.annotation.PostConstruct;
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.util.Arrays;
+
+/**
+ * Created by on 2018/3/21.
+ * 签名数据
+ */
+@Slf4j
+@Component
+public class DataSignature {
+    private static String BJCAROOT_URL;
+
+    @Value("${custom.bjcaRoot}")
+    private String bjcaRoot;
+
+    private static String certID = "ywzd";//改成自己的ywzd站点号
+
+    static BASE64Encoder be = new BASE64Encoder();
+    static BASE64Decoder bd = new BASE64Decoder();
+
+    static Api api = new Api();
+    static com.fri.ctid.security.bjca.Api api2 = new com.fri.ctid.security.bjca.Api();
+
+    //签名方法(吉大正元)
+    public static String signature(byte[] data) throws NewCSSException, IOException {
+        System.out.println(Arrays.toString(data));
+        api.initConnection("./config/cssconfig.properties");
+        byte[] signReturn = api.p7Sign(data,certID);
+        System.out.println("签名"+Arrays.toString(signReturn));
+        String sr = new String(be.encodeBuffer(signReturn));
+        System.out.println("BASE64后"+sr);
+        return sr;
+    }
+
+//    //签名(北京CA)
+    public static String signDataByP7DetachForJit(String inData) throws IOException, NewCSSException {
+        File directory = new File("/usr/share/bjcaRoot");//参数为空
+        String courseFile = directory.getCanonicalPath();//标准的路径 ;
+        log.info("bjcaRoot == " + courseFile);
+        api2.initConnection(courseFile);
+//        api2.initConnection("C:/BJCAROOT");
+        byte[]  signedValue  = com.fri.ctid.security.bjca.Api.p7Sign(inData.getBytes(),"SVSQm");
+        String sv = new String(signedValue);
+        return sv;
+    }
+
+
+    //验签方法(吉大正元)
+    public static boolean encryptEnvelope(byte[] data ,byte [] sign) throws NewCSSException {
+        api.initConnection("./config/cssconfig.properties");
+        boolean result = api.p7SignVerify(data,sign);
+        return result;
+    }
+
+//    //验签方法(北京CA)
+    public static boolean encryptEnvelopeCa(byte[] data ,byte [] sign) throws NewCSSException {
+        boolean verifySignRes = com.fri.ctid.security.bjca.Api.p7SignVerify(data,sign);
+        return verifySignRes;
+    }
+
+    @PostConstruct
+    public void setBjcarootUrl() {
+        BJCAROOT_URL = this.bjcaRoot;
+    }
+}

+ 56 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000027/util/EncryptedReservedData.java

@@ -0,0 +1,56 @@
+package info.aspirecn.iov.sjjh.supplier10000027.util;
+
+import com.fri.ctid.security.jit.Api;
+import sun.misc.BASE64Decoder;
+import sun.misc.BASE64Encoder;
+
+/**
+ * Created by on 2018/3/29.
+ * 保留数据区
+ * 加密保留数据与照片工具类
+ */
+public class EncryptedReservedData {
+    private static String certID = "rzfw01";
+    private static BASE64Encoder be = new BASE64Encoder();
+    static Api api = new Api();
+    static com.fri.ctid.security.bjca.Api api2 = new com.fri.ctid.security.bjca.Api();
+
+    //加密保留数据(吉大正元)
+    public static byte[] encryptEnvelope(byte[] msg) throws Exception {
+        api.initConnection("./config/cssconfig.properties");
+        byte[] result = api.encryptEnvelope(msg,certID);
+        return result;
+    }
+
+    //加密保留数据(北京CA)
+    public static String encodeEnvelopedDataForJit(String inData) {
+        String envelopeCertID = "5fbec52c7f1bc951";
+        byte[] DecodeEnvelopeData = api2.encryptEnvelope(inData.getBytes(), envelopeCertID);
+        String de = be.encode(DecodeEnvelopeData);
+        return de;
+    }
+    //解密保留数据(北京CA)
+    public static String decodeEnvelopedDataForJit(String inData) {
+        String envelopeCertID = "282c16739b20b580";
+        byte[] DecodeEnvelopeData = api2.decryptEnvelope(inData.getBytes(), envelopeCertID);
+        String de = DecodeEnvelopeData.toString();
+        return de;
+    }
+
+    public static void main(String[] args) {
+        try {
+            String base64 = "MIIBtwYKKoEcz1UGAQQCA6CCAacwggGjAgEAMYHQMIHNAgEAMD0wMTELMAkGA1UEBhMCQ04xETAP\n" +
+                    "BgNVBAoTCEdMQ1RJRDAxMQ8wDQYDVQQDEwZHTENBMDECCH96wSriUCnPMA0GCSqBHM9VAYItAwUA\n" +
+                    "BHoweAIgV2vtuzfYt9EdI1aceGrSVYtbinCGQsmQ4AhZEcArCPQCIEuxBZwXQN9+fRlJ4aZi5z08\n" +
+                    "dhM1BJ+LC9OXt67M0pf+BCDR5pkv4Z3cgiv7SG2SfJMwBDYMwwCRJktIFtwSl5AJrQQQeGHrcKC0\n" +
+                    "wF697aInqEjAGzCBygYKKoEcz1UGAQQCATAJBgcqgRzPVQFogIGwQwxRUh51/nZZ0It9Qyo3iOsO\n" +
+                    "WvbDyaYGpzZYchXKef8fbBczVtIoCA51JIr5VHPkWc3P55b+v66ApN3BI2JVjOZAT7XRgUFZFWOl\n" +
+                    "LzJF6or6Skrz0S68d7RWQZ4fFFHnEGMzIcb8lDEVfSZ6ZIYdFO4ayAG3gXIRzyK3G3bXBYDs5HJZ\n" +
+                    "dtuZpSSZSHUX7bAUJo0/P68zWwhLngUmcVSkUwemuskexS46mzPdTXH+i4s=)";
+            System.out.println(decodeEnvelopedDataForJit(base64));
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+    }
+}

+ 39 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000027/vo/ApplyRequestObject.java

@@ -0,0 +1,39 @@
+package info.aspirecn.iov.sjjh.supplier10000027.vo;
+
+import lombok.Data;
+import lombok.ToString;
+
+/**
+ * @description: 验签请求实体
+ * @author: xusonglin
+ * @create: 2019/9/3 10:30
+ * @version: V1.0
+ **/
+@Data
+@ToString(callSuper = true)
+public class ApplyRequestObject {
+    private BizPackageBean bizPackage;
+    private String sign;
+
+    @Data
+    @ToString(callSuper = true)
+    public static class BizPackageBean {
+        /**
+         * customerNumber :
+         * appName :
+         * timeStamp :
+         * cardReaderVersion :
+         * liveDetectionControlVersion :
+         * authCodeControlVersion :
+         * authMode :
+         */
+
+        private String customerNumber;
+        private String appName;
+        private String timeStamp;
+        private String cardReaderVersion;
+        private String liveDetectionControlVersion;
+        private String authCodeControlVersion;
+        private String authMode;
+    }
+}

+ 29 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000027/vo/ApplyResponseObject.java

@@ -0,0 +1,29 @@
+package info.aspirecn.iov.sjjh.supplier10000027.vo;
+
+import lombok.Data;
+import lombok.ToString;
+
+/**
+ * @description: 验签返回实体
+ * @author: xusonglin
+ * @create: 2019/9/4 11:55
+ * @version: V1.0
+ **/
+@Data
+@ToString(callSuper = true)
+public class ApplyResponseObject {
+    private String sign;
+    private BizPackageBean bizPackage;
+
+    @Data
+    @ToString(callSuper = true)
+    public static class BizPackageBean {
+        private String customerNumber;
+        private String appName;
+        private String timeStamp;
+        private String businessSerialNumber;
+        private String randomNumber;
+        private String success;
+        private String errorDesc;
+    }
+}

+ 20 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000027/vo/BaseObject.java

@@ -0,0 +1,20 @@
+package info.aspirecn.iov.sjjh.supplier10000027.vo;
+
+import lombok.Data;
+
+/**
+ * @description: 网站信息(属于保留信息,可不填)
+ * @author: xusonglin
+ * @create: 2019/9/5 14:49
+ * @version: V1.0
+ **/
+@Data
+public class BaseObject {
+    private String businessType;
+
+    private String dealDate;
+
+    private String venderName;
+
+    private String vendorIp;
+}

+ 33 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000027/vo/CompositeIdentityInfoJsonResolveObject.java

@@ -0,0 +1,33 @@
+package info.aspirecn.iov.sjjh.supplier10000027.vo;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+import lombok.ToString;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @description: 0x10复合信息接口请求参数
+ * @author: xusonglin
+ * @create: 2019/9/4 14:28
+ * @version: V1.0
+ **/
+@Data
+@ToString(callSuper = true)
+public class CompositeIdentityInfoJsonResolveObject extends BaseObject{
+    @JSONField(name = "gMSFZHM")
+    @NotNull(message = "参数名错误")
+    private String idCode;
+
+    @JSONField(name = "xM")
+    @NotNull(message = "参数名错误")
+    private String name;
+
+    @NotNull(message = "参数名错误")
+    @JSONField(name = "yXQQSRQ")
+    private String startTime;
+
+    @NotNull(message = "参数名错误")
+    @JSONField(name = "yXQJZRQ")
+    private String endTime;
+}

+ 31 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000027/vo/DataRequestObject.java

@@ -0,0 +1,31 @@
+package info.aspirecn.iov.sjjh.supplier10000027.vo;
+
+import lombok.Data;
+import lombok.ToString;
+
+/**
+ * @description: 数据请求实体
+ * @author: xusonglin
+ * @create: 2019/9/4 14:17
+ * @version: V1.0
+ **/
+@Data
+@ToString(callSuper = true)
+public class DataRequestObject {
+    private BizPackageBean bizPackage;
+    private String sign;
+
+    @Data
+    @ToString(callSuper = true)
+    public static class BizPackageBean {
+        private String customNumber;
+        private String appName;
+        private String timeStamp;
+        private String businessSerialNumber;
+        private String authMode;
+        private String photoData;
+        private String authCode;
+        private String idcardAuthData;
+        private String authApplyRetainData;
+    }
+}

+ 31 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000027/vo/DataResponseObject.java

@@ -0,0 +1,31 @@
+package info.aspirecn.iov.sjjh.supplier10000027.vo;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.Data;
+import lombok.ToString;
+
+/**
+ * @description: 数据返回实体
+ * @author: xusonglin
+ * @create: 2019/9/4 14:17
+ * @version: V1.0
+ **/
+@Data
+@ToString(callSuper = true)
+public class DataResponseObject {
+    private BizPackageBean bizPackage;
+    private String sign;
+
+    @Data
+    @ToString
+    public static class BizPackageBean {
+        private String customNumber;
+        private String appName;
+        private String timeStamp;
+        private String businessSerialNumber;
+        private String authResult;
+        private JSONObject authResultRetainData;
+        private String success;
+        private String errorDesc;
+    }
+}

+ 32 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000027/vo/IdentityInfoJsonResolveObject.java

@@ -0,0 +1,32 @@
+package info.aspirecn.iov.sjjh.supplier10000027.vo;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+import lombok.ToString;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @description: 0x40 身份简项
+ * @author: xusonglin
+ * @create: 2019/9/5 10:32
+ * @version: V1.0
+ **/
+@Data
+@ToString(callSuper = true)
+public class IdentityInfoJsonResolveObject extends BaseObject{
+    @NotNull
+    @JSONField(name = "xM")
+    private String name;
+
+    @NotNull
+    @JSONField(name = "gMSFZHM")
+    private String idCode;
+
+    @JSONField(name = "yXQQSRQ")
+    private String startTime = "";
+
+    @JSONField(name = "yXQJZRQ")
+    private String endTime = "";
+
+}

+ 35 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000027/vo/PhotoIdentityInfoJsonResolveObject.java

@@ -0,0 +1,35 @@
+package info.aspirecn.iov.sjjh.supplier10000027.vo;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+import lombok.ToString;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @description: 0x42 身份简项+人像
+ * @author: xusonglin
+ * @create: 2019/9/5 11:14
+ * @version: V1.0
+ **/
+@Data
+@ToString(callSuper = true)
+public class PhotoIdentityInfoJsonResolveObject extends BaseObject{
+    @NotNull
+    @JSONField(name = "xM")
+    private String name;
+
+    @NotNull
+    @JSONField(name = "gMSFZHM")
+    private String idCode;
+
+    @NotNull
+    @JSONField(serialize = false)
+    private String photo;
+
+    @JSONField(name = "yXQQSRQ")
+    private String startTime = "";
+
+    @JSONField(name = "yXQJZRQ")
+    private String endTime = "";
+}

+ 75 - 0
src/main/resources/bjcaRoot/BJCA_Config.xml

@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8" standalone="no" ?>
+<BJCAROOT>
+<BJCALib/>
+<Device>
+<BJSOFT>
+<DevName>BJCASOFT</DevName>
+<provider>BJCA Soft</provider>
+<privateDll/>
+</BJSOFT>
+<BJCSP0001>
+<DevName>BJCACSP</DevName>
+<provider>BJCA Soft RSA Full Cryptographic Provider v1.0</provider>
+<privateDll/>
+</BJCSP0001>
+<BJCSP0002>
+<DevName>明华</DevName>
+<provider>M&amp;W eKey XCSP</provider>
+<privateDll>BjcaKey_MW.dll</privateDll>
+</BJCSP0002>
+<BJCSP0003>
+<DevName>飞天epass3000</DevName>
+<provider>EnterSafe CSP (ePass3000) v1.0 for BJCA</provider>
+<privateDll>BjcaKey_FT3k.dll</privateDll>
+</BJCSP0003>
+<BJCSP0004>
+<DevName>飞天epass2000</DevName>
+<provider>EnterSafe CSP (ePass2000-FT11) v1.0 for BJCA</provider>
+<privateDll>BjcaKey_FT11.dll</privateDll>
+</BJCSP0004>
+<BJCSP0005>
+<DevName>天地融</DevName>
+<provider>Tendyron OnKey CSP BJCA v1.0</provider>
+<privateDll>BjcaKey_tdr.dll</privateDll>
+</BJCSP0005>
+<BJCSP0009>
+<DevName>海泰CSP</DevName>
+<provider>Haitai Cryptographic Service Provider</provider>
+<privateDll>BjcaKey_ht.dll</privateDll>
+</BJCSP0009>
+</Device>
+<Trust>
+<VerifyType>1</VerifyType>
+<CA0A01>
+<CAName>BJCA UCA</CAName>
+<uniqIdOid>2.16.840.1.113732.2</uniqIdOid>
+</CA0A01>
+<CA0B01>
+<CAName>BeiJing GCA</CAName>
+<uniqIdOid>2.16.840.1.113732.2</uniqIdOid>
+</CA0B01>
+<CA0B02>
+<CAName>BJCA</CAName>
+<uniqIdOid>2.16.840.1.113732.2</uniqIdOid>
+</CA0B02>
+<CA0C01>
+<CAName>Public Trust CA-1</CAName>
+<uniqIdOid>2.16.840.1.113732.2</uniqIdOid>
+</CA0C01>
+<CA0C02>
+<CAName>Public Trust CA-2</CAName>
+<uniqIdOid>2.16.840.1.113732.2</uniqIdOid>
+</CA0C02>
+<CA0E01>
+<CAName>UTrust HACA</CAName>
+<uniqIdOid>2.16.840.1.113732.2</uniqIdOid>
+</CA0E01>
+<CA0E02>
+<CAName>UTrust SCCA</CAName>
+<uniqIdOid>2.16.840.1.113732.2</uniqIdOid>
+</CA0E02>
+</Trust>
+<Cert>
+
+</Cert>
+</BJCAROOT>

+ 9 - 0
src/main/resources/bjcaRoot/BJCAlog/XTXCoreSvr2/logXTXCoreSvr2.log

@@ -0,0 +1,9 @@
+[2018-09-13 17:49:54.356] [loglevel=trace ] [status=0x00000000] <<===>> [pid(XTXCoreSvr.exe:4080) tid(4084)] [main.cpp(488)] [main] [xtxcoresvr2 starting...]
+[2018-09-13 17:49:54.607] [loglevel=trace ] [status=0x00000000] <<===>> [pid(XTXCoreSvr.exe:4080) tid(4084)] [mod_websocket_xtxapp.cpp(168)] [xtxapp_init] [websocket xtxapp_init]
+[2018-09-13 17:49:55.052] [loglevel=trace ] [status=0x00000000] <<===>> [pid(XTXCoreSvr.exe:4080) tid(4084)] [mod_websocket_xtxapp.cpp(168)] [xtxapp_init] [websocket xtxapp_init]
+[2018-09-13 17:49:55.054] [loglevel=trace ] [status=0x00000000] <<===>> [pid(XTXCoreSvr.exe:4080) tid(4084)] [log.c(808)] [ap_log_pid] [pid 4080]
+[2018-09-13 17:49:55.340] [loglevel=trace ] [status=0x00000000] <<===>> [pid(XTXCoreSvr.exe:5696) tid(5700)] [main.cpp(488)] [main] [xtxcoresvr2 starting...]
+[2018-09-13 17:49:55.340] [loglevel=trace ] [status=0x00000000] <<===>> [pid(XTXCoreSvr.exe:5696) tid(5700)] [mod_websocket_xtxapp.cpp(168)] [xtxapp_init] [websocket xtxapp_init]
+[2018-09-13 17:49:55.625] [loglevel=trace ] [status=0x00000000] <<===>> [pid(XTXCoreSvr.exe:5696) tid(5700)] [mod_websocket_xtxapp.cpp(168)] [xtxapp_init] [websocket xtxapp_init]
+[2018-09-13 17:49:55.676] [loglevel=notice] [status=0x00000000] <<===>> [pid(XTXCoreSvr.exe:5696) tid(5700)] [mod_websocket.cpp(1293)] [GetSessionConfig] [cannot read out regedit configure "session_expiry"!]
+[2018-09-13 17:49:55.678] [loglevel=notice] [status=0x00000000] <<===>> [pid(XTXCoreSvr.exe:5696) tid(5700)] [mod_websocket.cpp(1304)] [GetSessionConfig] [cannot read out regedit configure "local_login"!]

+ 7 - 0
src/main/resources/bjcaRoot/BJCAlog/xtx/XTXAppCOM.log

@@ -0,0 +1,7 @@
+[2018-09-14 08:02:12.486] [loglevel=error!] [status=0x00000000] <<===>> [pid(BjcaCertAide.exe:10044) tid(8672)] [cryptousbicapi.cpp(145)] [SKFAPIWrapper::SKFAPIWrapper] [ProvName(BJCAMSSP GM Provider) can not loaded library(BjcaMssp.dll) try again...]
+[2018-09-14 08:02:12.527] [loglevel=error!] [status=0x00000000] <<===>> [pid(BjcaCertAide.exe:10044) tid(8672)] [cryptousbicwrap.cpp(2333)] [SKFProviderWrap::LoadImplLibrary] [ProvName(BJCAMSSP GM Provider) Can not load DSO(BjcaMssp.dll)!]
+[2018-09-14 08:02:12.536] [loglevel=error!] [status=0x00000000] <<===>> [pid(BjcaCertAide.exe:10044) tid(8672)] [cryptoman.cpp(542)] [CryptokenManager::OnFindToken] [call Provider OnDeviceChange error!]
+[2018-09-14 08:02:14.226] [loglevel=error!] [status=0x00000000] <<===>> [pid(BjcaCertAide.exe:10044) tid(16808)] [cryptobucket.cpp(2708)] [CryptokenBucket::HashData] [invalid parameter!]
+[2018-09-14 08:02:14.246] [loglevel=error!] [status=0x0b000034] <<===>> [pid(BjcaCertAide.exe:10044) tid(16808)] [XTXApp.cpp(1585)] [CXTXApp::SOF_HashData] [hashAlgId:4 InDataLength:0 HashData error!]
+[2018-09-14 09:02:14.222] [loglevel=error!] [status=0x00000000] <<===>> [pid(BjcaCertAide.exe:10044) tid(14300)] [cryptobucket.cpp(2708)] [CryptokenBucket::HashData] [invalid parameter!]
+[2018-09-14 09:02:14.225] [loglevel=error!] [status=0x0b000034] <<===>> [pid(BjcaCertAide.exe:10044) tid(14300)] [XTXApp.cpp(1585)] [CXTXApp::SOF_HashData] [hashAlgId:4 InDataLength:0 HashData error!]

+ 41 - 0
src/main/resources/bjcaRoot/SVSClient.properties

@@ -0,0 +1,41 @@
+##############################################
+##�﷨˵����
+#1	�� #��ͷ����Ϊע���У�
+#2	ÿ��ֻ����һ����䣻
+#3	ÿ������ַ���Ŀ256���������ո�
+#4	�����������Ŀ��У�
+#5	��[��ʼ����]��β��ʾ��ʼһ������
+#6      ����ͬһ���ε����ݱ������ͬһ�����ڣ�
+#7      =��ǰ��Ϊ��Ŀ���ƣ����Ϊ��Ŀ��ֵ
+#8      ����֧�ֵĶ�������Ŀ����Ϊ�ڲ�����õģ�����������չ
+##################################################
+#����������
+serverNum=1
+#������һ�ĵ�ַ�Ͷ˿�
+address1=115.182.208.245
+port1=8000
+#���������ĵ�ַ�Ͷ˿�
+#address2=192.168.51.4
+#port2=8000
+
+#���²��������޸�����ϵBJCA������Ա
+#��������
+minConnNum=10
+#���������
+maxConnNum=20
+
+
+#��ʱʱ��(����)
+timeout=1000
+
+#�Ƿ���DEBUG
+isDebug=false
+
+#�ͻ���Ĭ���ַ���
+encoding=GBK
+
+#����ģʽ��1Ϊ�����ӣ�0Ϊ�����ӣ�
+connectionMode=1
+
+#���ӳ�ʱʱ�䣬��ѡ
+connectionTimeout=2000

+ 137 - 0
src/main/resources/bjcaRoot/logs/SVSClient_error.log

@@ -0,0 +1,137 @@
+INFO   [2018-09-14 10:20:00 734] 192.168.8.110 connection error ! create new connection exception !
+INFO   [2018-09-14 10:20:00 734] cn.org.bjca.client.exceptions.ConnectException: Connect server 192.168.8.110:8000 error !
+	at cn.org.bjca.client.framework.connectionpool.ShortConnectionPool.newConnection(ShortConnectionPool.java:141)
+	at cn.org.bjca.client.framework.connectionpool.ShortConnectionPool.getC(ShortConnectionPool.java:82)
+	at cn.org.bjca.client.framework.transport.TransportTool.writeAndReadMessage(TransportTool.java:57)
+	at cn.org.bjca.client.framework.transport.TransportTool.dealMessageForSVS(TransportTool.java:29)
+	at cn.org.bjca.client.security.SecurityEngine.getActiveThreadNum(SecurityEngine.java:2566)
+	at cn.org.bjca.client.security.DefaultSecurityEngineDeal.getActiveThreadNum(DefaultSecurityEngineDeal.java:963)
+	at cn.org.bjca.client.security.SecurityEngineDeal.getInstance(SecurityEngineDeal.java:183)
+	at com.fri.ctid.security.bjca.Api.initConnection(Api.java:25)
+	at com.anxin.data.DataSignature.signDataByP7DetachForJit(DataSignature.java:40)
+	at com.anxin.test.RunDemo.main(RunDemo.java:65)
+Caused by: java.net.ConnectException: Connection refused: connect
+	at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
+	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
+	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
+	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
+	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
+	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
+	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
+	at java.net.Socket.connect(Socket.java:589)
+	at cn.org.bjca.client.framework.connection.Connection.<init>(Connection.java:27)
+	at cn.org.bjca.client.framework.connectionpool.ShortConnectionPool.newConnection(ShortConnectionPool.java:134)
+	... 9 more
+
+INFO   [2018-09-14 10:20:01 739] 192.168.8.110 connection error ! create new connection exception !
+INFO   [2018-09-14 10:20:01 740] cn.org.bjca.client.exceptions.ConnectException: Connect server 192.168.8.110:8000 error !
+	at cn.org.bjca.client.framework.connectionpool.ShortConnectionPool.newConnection(ShortConnectionPool.java:141)
+	at cn.org.bjca.client.framework.connectionpool.ShortConnectionPool.getC(ShortConnectionPool.java:82)
+	at cn.org.bjca.client.framework.transport.TransportTool.writeAndReadMessage(TransportTool.java:57)
+	at cn.org.bjca.client.framework.transport.TransportTool.dealMessageForSVS(TransportTool.java:29)
+	at cn.org.bjca.client.security.SecurityEngine.getActiveThreadNum(SecurityEngine.java:2566)
+	at cn.org.bjca.client.security.DefaultSecurityEngineDeal.getActiveThreadNum(DefaultSecurityEngineDeal.java:963)
+	at cn.org.bjca.client.security.SecurityEngineDeal.getInstance(SecurityEngineDeal.java:183)
+	at com.fri.ctid.security.bjca.Api.initConnection(Api.java:25)
+	at com.anxin.data.DataSignature.signDataByP7DetachForJit(DataSignature.java:40)
+	at com.anxin.test.RunDemo.main(RunDemo.java:65)
+Caused by: java.net.ConnectException: Connection refused: connect
+	at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
+	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
+	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
+	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
+	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
+	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
+	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
+	at java.net.Socket.connect(Socket.java:589)
+	at cn.org.bjca.client.framework.connection.Connection.<init>(Connection.java:27)
+	at cn.org.bjca.client.framework.connectionpool.ShortConnectionPool.newConnection(ShortConnectionPool.java:134)
+	... 9 more
+
+INFO   [2018-09-14 10:20:02 743] 192.168.8.110 connection error ! create new connection exception !
+INFO   [2018-09-14 10:20:02 744] cn.org.bjca.client.exceptions.ConnectException: Connect server 192.168.8.110:8000 error !
+	at cn.org.bjca.client.framework.connectionpool.ShortConnectionPool.newConnection(ShortConnectionPool.java:141)
+	at cn.org.bjca.client.framework.connectionpool.ShortConnectionPool.getC(ShortConnectionPool.java:82)
+	at cn.org.bjca.client.framework.transport.TransportTool.writeAndReadMessage(TransportTool.java:57)
+	at cn.org.bjca.client.framework.transport.TransportTool.dealMessageForSVS(TransportTool.java:29)
+	at cn.org.bjca.client.security.SecurityEngine.getActiveThreadNum(SecurityEngine.java:2566)
+	at cn.org.bjca.client.security.DefaultSecurityEngineDeal.getActiveThreadNum(DefaultSecurityEngineDeal.java:963)
+	at cn.org.bjca.client.security.SecurityEngineDeal.getInstance(SecurityEngineDeal.java:183)
+	at com.fri.ctid.security.bjca.Api.initConnection(Api.java:25)
+	at com.anxin.data.DataSignature.signDataByP7DetachForJit(DataSignature.java:40)
+	at com.anxin.test.RunDemo.main(RunDemo.java:65)
+Caused by: java.net.ConnectException: Connection refused: connect
+	at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
+	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
+	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
+	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
+	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
+	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
+	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
+	at java.net.Socket.connect(Socket.java:589)
+	at cn.org.bjca.client.framework.connection.Connection.<init>(Connection.java:27)
+	at cn.org.bjca.client.framework.connectionpool.ShortConnectionPool.newConnection(ShortConnectionPool.java:134)
+	... 9 more
+
+INFO   [2018-09-14 10:20:02 744] Get connection error!!!
+INFO   [2018-09-14 10:20:02 744] cn.org.bjca.client.exceptions.ConnectException
+	at cn.org.bjca.client.framework.connectionpool.ShortConnectionPool.getC(ShortConnectionPool.java:103)
+	at cn.org.bjca.client.framework.transport.TransportTool.writeAndReadMessage(TransportTool.java:57)
+	at cn.org.bjca.client.framework.transport.TransportTool.dealMessageForSVS(TransportTool.java:29)
+	at cn.org.bjca.client.security.SecurityEngine.getActiveThreadNum(SecurityEngine.java:2566)
+	at cn.org.bjca.client.security.DefaultSecurityEngineDeal.getActiveThreadNum(DefaultSecurityEngineDeal.java:963)
+	at cn.org.bjca.client.security.SecurityEngineDeal.getInstance(SecurityEngineDeal.java:183)
+	at com.fri.ctid.security.bjca.Api.initConnection(Api.java:25)
+	at com.anxin.data.DataSignature.signDataByP7DetachForJit(DataSignature.java:40)
+	at com.anxin.test.RunDemo.main(RunDemo.java:65)
+
+INFO   [2018-09-14 10:20:03 758] 192.168.8.110 connection error ! create new connection exception !
+INFO   [2018-09-14 10:20:03 758] cn.org.bjca.client.exceptions.ConnectException: Connect server 192.168.8.110:8000 error !
+	at cn.org.bjca.client.framework.connectionpool.ShortConnectionPool.newConnection(ShortConnectionPool.java:141)
+	at cn.org.bjca.client.framework.connectionpool.ShortConnectionPool.getC(ShortConnectionPool.java:82)
+	at cn.org.bjca.client.framework.transport.TransportTool.writeAndReadMessage(TransportTool.java:57)
+	at cn.org.bjca.client.framework.transport.TransportTool.dealMessageForSVS(TransportTool.java:29)
+	at cn.org.bjca.client.security.SecurityEngine.getActiveThreadNum(SecurityEngine.java:2566)
+	at cn.org.bjca.client.security.DefaultSecurityEngineDeal.getActiveThreadNum(DefaultSecurityEngineDeal.java:963)
+	at cn.org.bjca.client.security.SecurityEngineDeal.getInstance(SecurityEngineDeal.java:183)
+	at com.fri.ctid.security.bjca.Api.initConnection(Api.java:25)
+	at com.anxin.data.DataSignature.signDataByP7DetachForJit(DataSignature.java:40)
+	at com.anxin.test.RunDemo.main(RunDemo.java:65)
+Caused by: java.net.ConnectException: Connection refused: connect
+	at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
+	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
+	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
+	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
+	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
+	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
+	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
+	at java.net.Socket.connect(Socket.java:589)
+	at cn.org.bjca.client.framework.connection.Connection.<init>(Connection.java:27)
+	at cn.org.bjca.client.framework.connectionpool.ShortConnectionPool.newConnection(ShortConnectionPool.java:134)
+	... 9 more
+
+INFO   [2018-09-14 10:20:04 761] 192.168.8.110 connection error ! create new connection exception !
+INFO   [2018-09-14 10:20:04 762] cn.org.bjca.client.exceptions.ConnectException: Connect server 192.168.8.110:8000 error !
+	at cn.org.bjca.client.framework.connectionpool.ShortConnectionPool.newConnection(ShortConnectionPool.java:141)
+	at cn.org.bjca.client.framework.connectionpool.ShortConnectionPool.getC(ShortConnectionPool.java:82)
+	at cn.org.bjca.client.framework.transport.TransportTool.writeAndReadMessage(TransportTool.java:57)
+	at cn.org.bjca.client.framework.transport.TransportTool.dealMessageForSVS(TransportTool.java:29)
+	at cn.org.bjca.client.security.SecurityEngine.getActiveThreadNum(SecurityEngine.java:2566)
+	at cn.org.bjca.client.security.DefaultSecurityEngineDeal.getActiveThreadNum(DefaultSecurityEngineDeal.java:963)
+	at cn.org.bjca.client.security.SecurityEngineDeal.getInstance(SecurityEngineDeal.java:183)
+	at com.fri.ctid.security.bjca.Api.initConnection(Api.java:25)
+	at com.anxin.data.DataSignature.signDataByP7DetachForJit(DataSignature.java:40)
+	at com.anxin.test.RunDemo.main(RunDemo.java:65)
+Caused by: java.net.ConnectException: Connection refused: connect
+	at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
+	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
+	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
+	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
+	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
+	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
+	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
+	at java.net.Socket.connect(Socket.java:589)
+	at cn.org.bjca.client.framework.connection.Connection.<init>(Connection.java:27)
+	at cn.org.bjca.client.framework.connectionpool.ShortConnectionPool.newConnection(ShortConnectionPool.java:134)
+	... 9 more
+

+ 356 - 0
src/main/resources/bjcaRoot/logs/SVSClient_system.log

@@ -0,0 +1,356 @@
+INFO   [2018-09-14 10:19:59 702] ========================================
+INFO   [2018-09-14 10:19:59 702] Start use short connection !
+INFO   [2018-09-14 10:19:59 702] ========================================
+INFO   [2018-09-14 10:19:59 704] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 10:20:25 662] ========================================
+INFO   [2018-09-14 10:20:25 662] Start use short connection !
+INFO   [2018-09-14 10:20:25 662] ========================================
+INFO   [2018-09-14 10:20:25 663] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 10:20:51 867] ========================================
+INFO   [2018-09-14 10:20:51 868] Start use short connection !
+INFO   [2018-09-14 10:20:51 868] ========================================
+INFO   [2018-09-14 10:20:51 869] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 10:23:33 560] ========================================
+INFO   [2018-09-14 10:23:33 560] Start use short connection !
+INFO   [2018-09-14 10:23:33 561] ========================================
+INFO   [2018-09-14 10:23:33 561] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 10:23:52 634] ========================================
+INFO   [2018-09-14 10:23:52 634] Start use short connection !
+INFO   [2018-09-14 10:23:52 634] ========================================
+INFO   [2018-09-14 10:23:52 635] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 10:27:15 189] ========================================
+INFO   [2018-09-14 10:27:15 189] Start use short connection !
+INFO   [2018-09-14 10:27:15 190] ========================================
+INFO   [2018-09-14 10:27:15 191] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 10:33:31 872] ========================================
+INFO   [2018-09-14 10:33:31 873] Start use short connection !
+INFO   [2018-09-14 10:33:31 873] ========================================
+INFO   [2018-09-14 10:33:31 873] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 10:35:05 305] ========================================
+INFO   [2018-09-14 10:35:05 305] Start use short connection !
+INFO   [2018-09-14 10:35:05 305] ========================================
+INFO   [2018-09-14 10:35:05 306] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 10:39:17 470] ========================================
+INFO   [2018-09-14 10:39:17 471] Start use short connection !
+INFO   [2018-09-14 10:39:17 471] ========================================
+INFO   [2018-09-14 10:39:17 471] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 10:53:28 865] ========================================
+INFO   [2018-09-14 10:53:28 865] Start use short connection !
+INFO   [2018-09-14 10:53:28 865] ========================================
+INFO   [2018-09-14 10:53:28 867] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 10:53:32 360] ========================================
+INFO   [2018-09-14 10:53:32 360] Start use short connection !
+INFO   [2018-09-14 10:53:32 360] ========================================
+INFO   [2018-09-14 10:53:32 362] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 10:54:09 169] ========================================
+INFO   [2018-09-14 10:54:09 169] Start use short connection !
+INFO   [2018-09-14 10:54:09 169] ========================================
+INFO   [2018-09-14 10:54:09 171] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 10:59:18 721] ========================================
+INFO   [2018-09-14 10:59:18 721] Start use short connection !
+INFO   [2018-09-14 10:59:18 722] ========================================
+INFO   [2018-09-14 10:59:18 723] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 10:59:31 621] ========================================
+INFO   [2018-09-14 10:59:31 621] Start use short connection !
+INFO   [2018-09-14 10:59:31 621] ========================================
+INFO   [2018-09-14 10:59:31 622] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 11:00:51 148] ========================================
+INFO   [2018-09-14 11:00:51 149] Start use short connection !
+INFO   [2018-09-14 11:00:51 149] ========================================
+INFO   [2018-09-14 11:00:51 150] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 11:00:53 740] ========================================
+INFO   [2018-09-14 11:00:53 740] Start use short connection !
+INFO   [2018-09-14 11:00:53 740] ========================================
+INFO   [2018-09-14 11:00:53 741] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 11:02:40 65] ========================================
+INFO   [2018-09-14 11:02:40 66] Start use short connection !
+INFO   [2018-09-14 11:02:40 66] ========================================
+INFO   [2018-09-14 11:02:40 67] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 11:03:11 83] ========================================
+INFO   [2018-09-14 11:03:11 84] Start use short connection !
+INFO   [2018-09-14 11:03:11 84] ========================================
+INFO   [2018-09-14 11:03:11 85] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2018-09-14 11:07:10 5] ========================================
+INFO   [2018-09-14 11:07:10 6] Start use short connection !
+INFO   [2018-09-14 11:07:10 6] ========================================
+INFO   [2018-09-14 11:07:10 7] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-03 17:37:10 981] ========================================
+INFO   [2019-09-03 17:37:10 981] Start use short connection !
+INFO   [2019-09-03 17:37:10 981] ========================================
+INFO   [2019-09-03 17:37:10 981] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-03 17:38:36 771] ========================================
+INFO   [2019-09-03 17:38:36 771] Start use short connection !
+INFO   [2019-09-03 17:38:36 771] ========================================
+INFO   [2019-09-03 17:38:36 772] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-03 17:39:27 605] ========================================
+INFO   [2019-09-03 17:39:27 605] Start use short connection !
+INFO   [2019-09-03 17:39:27 605] ========================================
+INFO   [2019-09-03 17:39:27 606] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-03 17:42:02 749] ========================================
+INFO   [2019-09-03 17:42:02 749] Start use short connection !
+INFO   [2019-09-03 17:42:02 749] ========================================
+INFO   [2019-09-03 17:42:02 750] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-03 17:50:07 359] ========================================
+INFO   [2019-09-03 17:50:07 360] Start use short connection !
+INFO   [2019-09-03 17:50:07 360] ========================================
+INFO   [2019-09-03 17:50:07 361] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-03 17:50:17 392] ========================================
+INFO   [2019-09-03 17:50:17 393] Start use short connection !
+INFO   [2019-09-03 17:50:17 393] ========================================
+INFO   [2019-09-03 17:50:17 394] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-03 17:50:29 433] ========================================
+INFO   [2019-09-03 17:50:29 434] Start use short connection !
+INFO   [2019-09-03 17:50:29 434] ========================================
+INFO   [2019-09-03 17:50:29 436] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-03 17:50:52 815] ========================================
+INFO   [2019-09-03 17:50:52 815] Start use short connection !
+INFO   [2019-09-03 17:50:52 815] ========================================
+INFO   [2019-09-03 17:50:52 816] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-03 17:51:41 744] ========================================
+INFO   [2019-09-03 17:51:41 744] Start use short connection !
+INFO   [2019-09-03 17:51:41 744] ========================================
+INFO   [2019-09-03 17:51:41 745] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-03 17:52:02 587] ========================================
+INFO   [2019-09-03 17:52:02 587] Start use short connection !
+INFO   [2019-09-03 17:52:02 587] ========================================
+INFO   [2019-09-03 17:52:02 587] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-03 17:52:09 654] ========================================
+INFO   [2019-09-03 17:52:09 654] Start use short connection !
+INFO   [2019-09-03 17:52:09 654] ========================================
+INFO   [2019-09-03 17:52:09 655] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-03 17:52:27 130] ========================================
+INFO   [2019-09-03 17:52:27 131] Start use short connection !
+INFO   [2019-09-03 17:52:27 131] ========================================
+INFO   [2019-09-03 17:52:27 132] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-03 22:26:27 992] ========================================
+INFO   [2019-09-03 22:26:27 993] Start use short connection !
+INFO   [2019-09-03 22:26:27 993] ========================================
+INFO   [2019-09-03 22:26:27 994] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-03 22:45:17 150] ========================================
+INFO   [2019-09-03 22:45:17 155] Start use short connection !
+INFO   [2019-09-03 22:45:17 155] ========================================
+INFO   [2019-09-03 22:45:17 159] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 09:57:09 506] ========================================
+INFO   [2019-09-04 09:57:09 506] Start use short connection !
+INFO   [2019-09-04 09:57:09 506] ========================================
+INFO   [2019-09-04 09:57:09 509] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 10:07:24 641] ========================================
+INFO   [2019-09-04 10:07:24 642] Start use short connection !
+INFO   [2019-09-04 10:07:24 642] ========================================
+INFO   [2019-09-04 10:07:24 645] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 10:14:26 148] ========================================
+INFO   [2019-09-04 10:14:26 148] Start use short connection !
+INFO   [2019-09-04 10:14:26 148] ========================================
+INFO   [2019-09-04 10:14:26 358] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 10:40:15 501] ========================================
+INFO   [2019-09-04 10:40:15 501] Start use short connection !
+INFO   [2019-09-04 10:40:15 501] ========================================
+INFO   [2019-09-04 10:40:15 502] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 10:42:40 843] ========================================
+INFO   [2019-09-04 10:42:40 843] Start use short connection !
+INFO   [2019-09-04 10:42:40 844] ========================================
+INFO   [2019-09-04 10:42:40 845] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 11:01:18 6] ========================================
+INFO   [2019-09-04 11:01:18 7] Start use short connection !
+INFO   [2019-09-04 11:01:18 7] ========================================
+INFO   [2019-09-04 11:01:18 8] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 11:03:06 817] ========================================
+INFO   [2019-09-04 11:03:06 818] Start use short connection !
+INFO   [2019-09-04 11:03:06 818] ========================================
+INFO   [2019-09-04 11:03:06 820] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 11:16:21 839] ========================================
+INFO   [2019-09-04 11:16:21 840] Start use short connection !
+INFO   [2019-09-04 11:16:21 840] ========================================
+INFO   [2019-09-04 11:16:21 841] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 11:19:19 31] ========================================
+INFO   [2019-09-04 11:19:19 32] Start use short connection !
+INFO   [2019-09-04 11:19:19 32] ========================================
+INFO   [2019-09-04 11:19:19 33] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 11:28:16 362] ========================================
+INFO   [2019-09-04 11:28:16 362] Start use short connection !
+INFO   [2019-09-04 11:28:16 362] ========================================
+INFO   [2019-09-04 11:28:16 363] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 11:29:26 988] ========================================
+INFO   [2019-09-04 11:29:26 988] Start use short connection !
+INFO   [2019-09-04 11:29:26 988] ========================================
+INFO   [2019-09-04 11:29:26 989] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 11:46:52 682] ========================================
+INFO   [2019-09-04 11:46:52 683] Start use short connection !
+INFO   [2019-09-04 11:46:52 683] ========================================
+INFO   [2019-09-04 11:46:52 684] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 11:52:49 197] ========================================
+INFO   [2019-09-04 11:52:49 198] Start use short connection !
+INFO   [2019-09-04 11:52:49 198] ========================================
+INFO   [2019-09-04 11:52:49 199] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 15:38:49 181] ========================================
+INFO   [2019-09-04 15:38:49 181] Start use short connection !
+INFO   [2019-09-04 15:38:49 181] ========================================
+INFO   [2019-09-04 15:38:49 186] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 15:46:17 457] ========================================
+INFO   [2019-09-04 15:46:17 458] Start use short connection !
+INFO   [2019-09-04 15:46:17 458] ========================================
+INFO   [2019-09-04 15:46:17 461] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 16:38:47 856] ========================================
+INFO   [2019-09-04 16:38:47 856] Start use short connection !
+INFO   [2019-09-04 16:38:47 856] ========================================
+INFO   [2019-09-04 16:38:47 858] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 16:40:21 966] ========================================
+INFO   [2019-09-04 16:40:21 966] Start use short connection !
+INFO   [2019-09-04 16:40:21 966] ========================================
+INFO   [2019-09-04 16:40:21 967] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 16:43:22 189] ========================================
+INFO   [2019-09-04 16:43:22 189] Start use short connection !
+INFO   [2019-09-04 16:43:22 189] ========================================
+INFO   [2019-09-04 16:43:22 190] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 16:48:48 453] ========================================
+INFO   [2019-09-04 16:48:48 454] Start use short connection !
+INFO   [2019-09-04 16:48:48 454] ========================================
+INFO   [2019-09-04 16:48:48 455] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 17:03:45 361] ========================================
+INFO   [2019-09-04 17:03:45 361] Start use short connection !
+INFO   [2019-09-04 17:03:45 361] ========================================
+INFO   [2019-09-04 17:03:45 362] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 17:10:50 537] ========================================
+INFO   [2019-09-04 17:10:50 537] Start use short connection !
+INFO   [2019-09-04 17:10:50 537] ========================================
+INFO   [2019-09-04 17:10:50 538] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 17:24:44 279] ========================================
+INFO   [2019-09-04 17:24:44 279] Start use short connection !
+INFO   [2019-09-04 17:24:44 279] ========================================
+INFO   [2019-09-04 17:24:44 280] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 17:28:25 460] ========================================
+INFO   [2019-09-04 17:28:25 461] Start use short connection !
+INFO   [2019-09-04 17:28:25 461] ========================================
+INFO   [2019-09-04 17:28:25 464] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 17:30:46 970] ========================================
+INFO   [2019-09-04 17:30:46 971] Start use short connection !
+INFO   [2019-09-04 17:30:46 971] ========================================
+INFO   [2019-09-04 17:30:46 974] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 17:32:14 325] ========================================
+INFO   [2019-09-04 17:32:14 325] Start use short connection !
+INFO   [2019-09-04 17:32:14 325] ========================================
+INFO   [2019-09-04 17:32:14 327] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-04 17:58:45 657] ========================================
+INFO   [2019-09-04 17:58:45 658] Start use short connection !
+INFO   [2019-09-04 17:58:45 658] ========================================
+INFO   [2019-09-04 17:58:45 659] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 09:10:08 679] ========================================
+INFO   [2019-09-05 09:10:08 679] Start use short connection !
+INFO   [2019-09-05 09:10:08 679] ========================================
+INFO   [2019-09-05 09:10:08 680] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 09:34:01 462] ========================================
+INFO   [2019-09-05 09:34:01 462] Start use short connection !
+INFO   [2019-09-05 09:34:01 462] ========================================
+INFO   [2019-09-05 09:34:01 463] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 10:00:32 840] ========================================
+INFO   [2019-09-05 10:00:32 840] Start use short connection !
+INFO   [2019-09-05 10:00:32 840] ========================================
+INFO   [2019-09-05 10:00:32 841] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 10:04:11 763] ========================================
+INFO   [2019-09-05 10:04:11 764] Start use short connection !
+INFO   [2019-09-05 10:04:11 764] ========================================
+INFO   [2019-09-05 10:04:11 765] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 10:18:33 489] ========================================
+INFO   [2019-09-05 10:18:33 490] Start use short connection !
+INFO   [2019-09-05 10:18:33 490] ========================================
+INFO   [2019-09-05 10:18:33 491] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 10:48:11 774] ========================================
+INFO   [2019-09-05 10:48:11 774] Start use short connection !
+INFO   [2019-09-05 10:48:11 774] ========================================
+INFO   [2019-09-05 10:48:11 775] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 10:50:15 869] ========================================
+INFO   [2019-09-05 10:50:15 869] Start use short connection !
+INFO   [2019-09-05 10:50:15 869] ========================================
+INFO   [2019-09-05 10:50:15 870] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 10:57:10 176] ========================================
+INFO   [2019-09-05 10:57:10 176] Start use short connection !
+INFO   [2019-09-05 10:57:10 176] ========================================
+INFO   [2019-09-05 10:57:10 177] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 11:00:15 226] ========================================
+INFO   [2019-09-05 11:00:15 226] Start use short connection !
+INFO   [2019-09-05 11:00:15 226] ========================================
+INFO   [2019-09-05 11:00:15 227] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 11:03:04 807] ========================================
+INFO   [2019-09-05 11:03:04 807] Start use short connection !
+INFO   [2019-09-05 11:03:04 807] ========================================
+INFO   [2019-09-05 11:03:04 808] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 11:32:36 961] ========================================
+INFO   [2019-09-05 11:32:36 962] Start use short connection !
+INFO   [2019-09-05 11:32:36 962] ========================================
+INFO   [2019-09-05 11:32:36 963] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 13:43:35 196] ========================================
+INFO   [2019-09-05 13:43:35 196] Start use short connection !
+INFO   [2019-09-05 13:43:35 196] ========================================
+INFO   [2019-09-05 13:43:35 200] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 13:46:19 488] ========================================
+INFO   [2019-09-05 13:46:19 489] Start use short connection !
+INFO   [2019-09-05 13:46:19 489] ========================================
+INFO   [2019-09-05 13:46:19 490] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 13:48:32 321] ========================================
+INFO   [2019-09-05 13:48:32 321] Start use short connection !
+INFO   [2019-09-05 13:48:32 321] ========================================
+INFO   [2019-09-05 13:48:32 324] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 13:52:23 812] ========================================
+INFO   [2019-09-05 13:52:23 812] Start use short connection !
+INFO   [2019-09-05 13:52:23 812] ========================================
+INFO   [2019-09-05 13:52:23 814] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 14:08:29 99] ========================================
+INFO   [2019-09-05 14:08:29 99] Start use short connection !
+INFO   [2019-09-05 14:08:29 99] ========================================
+INFO   [2019-09-05 14:08:29 101] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 14:13:35 303] ========================================
+INFO   [2019-09-05 14:13:35 303] Start use short connection !
+INFO   [2019-09-05 14:13:35 303] ========================================
+INFO   [2019-09-05 14:13:35 304] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 14:22:03 889] ========================================
+INFO   [2019-09-05 14:22:03 889] Start use short connection !
+INFO   [2019-09-05 14:22:03 889] ========================================
+INFO   [2019-09-05 14:22:03 890] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 14:33:48 184] ========================================
+INFO   [2019-09-05 14:33:48 184] Start use short connection !
+INFO   [2019-09-05 14:33:48 184] ========================================
+INFO   [2019-09-05 14:33:48 185] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 14:40:32 68] ========================================
+INFO   [2019-09-05 14:40:32 68] Start use short connection !
+INFO   [2019-09-05 14:40:32 68] ========================================
+INFO   [2019-09-05 14:40:32 70] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 14:46:36 175] ========================================
+INFO   [2019-09-05 14:46:36 175] Start use short connection !
+INFO   [2019-09-05 14:46:36 175] ========================================
+INFO   [2019-09-05 14:46:36 175] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 14:52:04 51] ========================================
+INFO   [2019-09-05 14:52:04 51] Start use short connection !
+INFO   [2019-09-05 14:52:04 51] ========================================
+INFO   [2019-09-05 14:52:04 53] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 14:54:07 270] ========================================
+INFO   [2019-09-05 14:54:07 270] Start use short connection !
+INFO   [2019-09-05 14:54:07 270] ========================================
+INFO   [2019-09-05 14:54:07 271] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 14:57:12 667] ========================================
+INFO   [2019-09-05 14:57:12 667] Start use short connection !
+INFO   [2019-09-05 14:57:12 667] ========================================
+INFO   [2019-09-05 14:57:12 669] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 14:58:35 306] ========================================
+INFO   [2019-09-05 14:58:35 306] Start use short connection !
+INFO   [2019-09-05 14:58:35 306] ========================================
+INFO   [2019-09-05 14:58:35 307] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 15:00:04 138] ========================================
+INFO   [2019-09-05 15:00:04 138] Start use short connection !
+INFO   [2019-09-05 15:00:04 138] ========================================
+INFO   [2019-09-05 15:00:04 139] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 15:01:40 718] ========================================
+INFO   [2019-09-05 15:01:40 718] Start use short connection !
+INFO   [2019-09-05 15:01:40 718] ========================================
+INFO   [2019-09-05 15:01:40 720] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 15:03:30 437] ========================================
+INFO   [2019-09-05 15:03:30 438] Start use short connection !
+INFO   [2019-09-05 15:03:30 438] ========================================
+INFO   [2019-09-05 15:03:30 439] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 15:05:16 625] ========================================
+INFO   [2019-09-05 15:05:16 626] Start use short connection !
+INFO   [2019-09-05 15:05:16 626] ========================================
+INFO   [2019-09-05 15:05:16 627] BJCA Client Version:1.8.3M1 build201805311400
+INFO   [2019-09-05 15:06:55 408] ========================================
+INFO   [2019-09-05 15:06:55 408] Start use short connection !
+INFO   [2019-09-05 15:06:55 408] ========================================
+INFO   [2019-09-05 15:06:55 409] BJCA Client Version:1.8.3M1 build201805311400

+ 86 - 0
src/main/resources/config/application-abcd.yml

@@ -0,0 +1,86 @@
+server:
+  tomcat:
+    accesslog:
+      buffered: false
+      enabled: true
+      pattern: '{"DateTime":"%{yyyy-MM-dd''T''HH:mm:ss.SSSZZ}t","ClientIP":"%a","Method":"%m","URI":"%U","RequestProtocol":"%H","ResponseCode":%s,
+                "ResponseTime":%D,"UserAgent":"%{user-agent}i","X-Forwarded-For":"%{x-forwarded-for}r","X-User-IP":"%{X-User-IP}i","traceId":"%{x-b3-traceid}i","id":"%{x-b3-spanid}r",
+                "parentId":"%{x-b3-parentspanid}i","ApplicationName":"${spring.application.name}","MG-IsCharge":%{isCharge}r,
+                "MG-ChannelId":%{channelId}i,"MG-CustomBody":"%{x-requestQuery}r","MG-ResultBody":"%{resultBody}o",
+                "MG-ResponseCode":%{respnoseCode}r,"MG-Upstream-ResponseCode":"%{upResponseCode}r","MG-SellingPrice":%{price}i,"req_type":"%{req_type}r","MG-ProductId":%{productId}i,"MG-UserId":%{userid}i}'
+      prefix: access_${HOSTNAME}_${spring.application.name}_${server.port}
+      directory: ${logging.path}
+  servlet:
+    context-path: /
+
+spring:
+  sleuth:
+    sampler:
+      probability: 1
+    web:
+      additional-skip-pattern: /api/v2/spans
+  zipkin:
+    base-url: http://127.0.0.1:${server.port}
+
+  mvc:
+    favicon:
+      enabled: false
+
+#management
+management:
+  endpoints:
+    enabled-by-default: true
+    web:
+      exposure:
+        include: '*'
+  endpoint:
+    health:
+      show-details: always
+    shutdown:
+      enabled: true
+
+#logging
+logging:
+  path: /apps/var/jakarta/logs
+  level:
+    root: INFO
+    red:
+      microcloud: DEBUG
+  config: classpath:config/logback-spring.xml
+  file: ${logging.path}/catalina_${spring.cloud.client.hostname}_${spring.application.name}_${server.port}.out
+
+#error logging
+#sleuth logging
+rdc:
+  logging:
+    error-file: ${logging.path}/error_${spring.cloud.client.hostname}_${spring.application.name}_${server.port}.log
+    sleuth-file: ${logging.path}/sleuth_${spring.cloud.client.hostname}_${spring.application.name}_${server.port}.log
+
+#eureka
+eureka:
+  instance:
+    prefer-ip-address: true
+    instance-id: ${spring.cloud.client.ipaddress}:${server.port}
+    metadata-map:
+      management:
+        port: ${management.server.port}
+    health-check-url: http://${spring.cloud.client.ipaddress}:${management.server.port}${eureka.instance.health-check-url-path}
+    health-check-url-path: /actuator/health
+  client:
+    serviceUrl:
+      defaultZone: http://localhost:8888/eureka
+
+#custom
+custom:
+  applyUrl: http://MA1.chnctid.cn:8100/ctid/api/v1/request
+  requestUrl: http://MA1.chnctid.cn:8200/ctid/api/v1/authentication
+  customerNumber: ywzd243
+  appName: jk
+  cardReaderVersion: 0501.0001.0101.0001
+  liveDetectionControlVersion: 0501.0001.0101.0001
+  authCodeControlVersion: 0501.0001.0101.0001
+  authMode-0x10: "0x10"
+  authMode-0x40: "0x40"
+  authMode-0x42: "0x42"
+swagger:
+  show: true

+ 3 - 0
src/main/resources/config/banner.txt

@@ -0,0 +1,3 @@
+*******************************************************************************
+	 @project.artifactId@  (version:@project.version@)
+*******************************************************************************

+ 25 - 0
src/main/resources/config/bootstrap.yml

@@ -0,0 +1,25 @@
+spring:
+  application:
+    name: '@project.artifactId@'
+  banner:
+    location: classpath:config/banner.txt
+  profiles:
+    active: hwtest
+  cloud:
+    config:
+      discovery:
+        enabled: false
+      uri: http://10.8.18.157:32533
+      label: trunk
+      name: ${spring.application.name}
+      profile: ${spring.profiles.active}
+
+server:
+  port: 20057
+management:
+  server:
+    port: 21057
+
+info:
+  name: '@project.description@'
+  version: '@project.version@'

+ 44 - 0
src/main/resources/config/cssconfig.properties

@@ -0,0 +1,44 @@
+#ServerURL=http://192.168.9.110:8000/signxmlhandler
+#ServerURL=http://192.168.1.13:8000/signserver/service/xml
+#ServerURL=http://192.168.0.110:8000/signserver/service/xml
+#ServerURL=http://192.168.0.110:8000/signserver/service/xml
+ServerURL=http://119.18.195.172:8000/signserver/service/xml
+DigestAlg=sm3
+#Encrypt Algorithm: des3/scb2
+EncAlg=sm4
+CertBaseInfo = version;issuerdn;subjectdn;serialnumber;notbefore;notafter
+TSACertBaseInfo = issuerdn;subjectdn;serialnumber;signedTime;signedTSA;signedTimeByMS
+CertExtendInfo =
+AppID=
+CertAlias =
+BaseInfo =digestalg;digestdata;plaindata;dscert
+SendMsgFormat=0
+HashActionPosition=0
+PrintLog=false
+#console/file/log4j  ####log4j not implement
+logTarget=console
+logFilePath=/temp/jit.dss.vstk.log
+#rfc3161/rfc2630
+TSAType=rfc3161
+#dsCert/issuerDNAndSN/CertId
+p1VerifyCertId=CertId
+Compatible=true
+dss.client.class=cn.com.jit.assp.client.DSSClientHttpUrlConnectionImpl
+#dss.client.class=cn.com.jit.assp.client.DSSClientHttpClientImpl
+#default/encAfterDec/secretEnvelop(use this mode after using VCTK do envelop)   secretEnvelop:develop->RSAdecrypt->RSAencrypt->envelop
+envelopType=default
+#default unit KB and default size is 0,0 is not block;
+packageSize=0
+
+#default:10000   unit: ms
+timeout=50000
+connectTimeOut=50000
+# default : system unicode
+FileSystemCharSet=UTF-8
+vstkVersion=20
+EncryptMode=ecb
+#package size every time, unit is byte
+send_size=1048576
+#bigger than this will take big data modle, unit is byte
+bigdata_limit=20971520
+communicationProtocol=3

+ 37 - 0
src/main/resources/config/logback-spring.xml

@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+	<include resource="org/springframework/boot/logging/logback/defaults.xml" />
+	<include
+		resource="org/springframework/boot/logging/logback/console-appender.xml" />
+
+	<property name="LOG_FILE"
+		value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}" />
+	<springProperty scope="context" name="LOG_PATH" source="logging.path" defaultValue="/apps/var/jakarta/logs" />
+	<springProperty scope="context" name="application_name" source="spring.application.name" defaultValue="iov-sjjh-servicenode-supplier-10000027" />
+	<springProperty scope="context" name="sleuth_file" source="rdc.logging.sleuth-file" defaultValue="${LOG_PATH}/sleuth/sleuth.log" />
+	<springProperty scope="context" name="error_file" source="rdc.logging.error-file" defaultValue="${LOG_PATH}/error/error.log" />
+
+	<include resource="info/aspirecn/rdc/aspirecloud/node/except/xml/defaults.xml" />
+	<include resource="info/aspirecn/rdc/aspirecloud/node/brave/xml/defaults.xml" />
+
+	<appender name="TIME_FILE"
+		class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<encoder>
+			<pattern>${FILE_LOG_PATTERN}</pattern>
+		</encoder>
+		<file>${LOG_FILE}</file>
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i</fileNamePattern>
+			<maxHistory>8</maxHistory>
+			<timeBasedFileNamingAndTriggeringPolicy
+				class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<maxFileSize>100MB</maxFileSize>
+			</timeBasedFileNamingAndTriggeringPolicy>
+		</rollingPolicy>
+	</appender>
+
+	<root level="INFO">
+		<appender-ref ref="CONSOLE" />
+		<appender-ref ref="TIME_FILE" />
+	</root>
+</configuration>

+ 7 - 0
src/main/resources/docker/Dockerfile

@@ -0,0 +1,7 @@
+FROM hub.i139.cn/rdc-commons/official-openjdk:8u191-jre-alpine3.9
+VOLUME /tmp
+ADD *.jar app.jar
+RUN sh -c 'touch /app.jar'
+ENV JAVA_OPTS="-Xmx256M -Xms256M -Xss256k -Duser.timezone=Asia/Shanghai"
+ENV APP_OPTS=""
+ENTRYPOINT [ "jar /app.jar $APP_OPTS" ]sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -

BIN
src/main/resources/lib/BJCACTID.jar


BIN
src/main/resources/lib/BJCA_LOG.jar


BIN
src/main/resources/lib/SVSClient.jar


BIN
src/main/resources/lib/commons-httpclient-3.1.jar


BIN
src/main/resources/lib/commons-logging-1.1.1.jar


BIN
src/main/resources/lib/frictidApi-1.0.0.jar