zeroc-ice 3.7.5 → 3.7.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (271) hide show
  1. checksums.yaml +4 -4
  2. data/ext/Config.h +13 -0
  3. data/ext/Util.cpp +0 -4
  4. data/ext/ice/cpp/include/Ice/Exception.h +3 -3
  5. data/ext/ice/cpp/include/Ice/Functional.h +3 -1
  6. data/ext/ice/cpp/include/Ice/IconvStringConverter.h +1 -1
  7. data/ext/ice/cpp/include/Ice/Object.h +7 -0
  8. data/ext/ice/cpp/include/Ice/Proxy.h +25 -16
  9. data/ext/ice/cpp/include/Ice/Service.h +1 -1
  10. data/ext/ice/cpp/include/IceSSL/Plugin.h +142 -0
  11. data/ext/ice/cpp/include/IceUtil/Config.h +3 -2
  12. data/ext/ice/cpp/include/IceUtil/Functional.h +3 -1
  13. data/ext/ice/cpp/include/IceUtil/MutexPtrLock.h +4 -4
  14. data/ext/ice/cpp/include/IceUtil/ResourceConfig.h +2 -2
  15. data/ext/ice/cpp/include/generated/Ice/BuiltinSequences.h +2 -2
  16. data/ext/ice/cpp/include/generated/Ice/Communicator.h +8 -2
  17. data/ext/ice/cpp/include/generated/Ice/CommunicatorF.h +2 -2
  18. data/ext/ice/cpp/include/generated/Ice/Connection.h +45 -2
  19. data/ext/ice/cpp/include/generated/Ice/ConnectionF.h +2 -2
  20. data/ext/ice/cpp/include/generated/Ice/Current.h +2 -2
  21. data/ext/ice/cpp/include/generated/Ice/Endpoint.h +38 -2
  22. data/ext/ice/cpp/include/generated/Ice/EndpointF.h +2 -2
  23. data/ext/ice/cpp/include/generated/Ice/EndpointTypes.h +2 -2
  24. data/ext/ice/cpp/include/generated/Ice/FacetMap.h +2 -2
  25. data/ext/ice/cpp/include/generated/Ice/Identity.h +2 -2
  26. data/ext/ice/cpp/include/generated/Ice/ImplicitContext.h +8 -2
  27. data/ext/ice/cpp/include/generated/Ice/ImplicitContextF.h +2 -2
  28. data/ext/ice/cpp/include/generated/Ice/Instrumentation.h +62 -2
  29. data/ext/ice/cpp/include/generated/Ice/InstrumentationF.h +2 -2
  30. data/ext/ice/cpp/include/generated/Ice/LocalException.h +464 -68
  31. data/ext/ice/cpp/include/generated/Ice/Locator.h +55 -7
  32. data/ext/ice/cpp/include/generated/Ice/LocatorF.h +2 -2
  33. data/ext/ice/cpp/include/generated/Ice/Logger.h +8 -2
  34. data/ext/ice/cpp/include/generated/Ice/LoggerF.h +2 -2
  35. data/ext/ice/cpp/include/generated/Ice/Metrics.h +63 -11
  36. data/ext/ice/cpp/include/generated/Ice/ObjectAdapter.h +8 -2
  37. data/ext/ice/cpp/include/generated/Ice/ObjectAdapterF.h +2 -2
  38. data/ext/ice/cpp/include/generated/Ice/ObjectFactory.h +8 -2
  39. data/ext/ice/cpp/include/generated/Ice/Plugin.h +14 -2
  40. data/ext/ice/cpp/include/generated/Ice/PluginF.h +2 -2
  41. data/ext/ice/cpp/include/generated/Ice/Process.h +8 -2
  42. data/ext/ice/cpp/include/generated/Ice/ProcessF.h +2 -2
  43. data/ext/ice/cpp/include/generated/Ice/Properties.h +8 -2
  44. data/ext/ice/cpp/include/generated/Ice/PropertiesAdmin.h +8 -2
  45. data/ext/ice/cpp/include/generated/Ice/PropertiesF.h +2 -2
  46. data/ext/ice/cpp/include/generated/Ice/RemoteLogger.h +21 -3
  47. data/ext/ice/cpp/include/generated/Ice/Router.h +14 -2
  48. data/ext/ice/cpp/include/generated/Ice/RouterF.h +2 -2
  49. data/ext/ice/cpp/include/generated/Ice/ServantLocator.h +8 -2
  50. data/ext/ice/cpp/include/generated/Ice/ServantLocatorF.h +2 -2
  51. data/ext/ice/cpp/include/generated/Ice/SliceChecksumDict.h +2 -2
  52. data/ext/ice/cpp/include/generated/Ice/ValueFactory.h +14 -2
  53. data/ext/ice/cpp/include/generated/Ice/Version.h +2 -2
  54. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +7 -2
  55. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +2 -2
  56. data/ext/ice/cpp/include/generated/IceSSL/EndpointInfo.h +7 -2
  57. data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +2 -2
  58. data/ext/ice/cpp/src/Ice/Communicator.cpp +2 -2
  59. data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +2 -2
  60. data/ext/ice/cpp/src/Ice/Connection.cpp +2 -2
  61. data/ext/ice/cpp/src/Ice/ConnectionF.cpp +2 -2
  62. data/ext/ice/cpp/src/Ice/ConnectionFactory.cpp +3 -3
  63. data/ext/ice/cpp/src/Ice/Current.cpp +2 -2
  64. data/ext/ice/cpp/src/Ice/Endpoint.cpp +2 -2
  65. data/ext/ice/cpp/src/Ice/EndpointF.cpp +2 -2
  66. data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +2 -2
  67. data/ext/ice/cpp/src/Ice/FacetMap.cpp +2 -2
  68. data/ext/ice/cpp/src/Ice/Identity.cpp +2 -2
  69. data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +2 -2
  70. data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +2 -2
  71. data/ext/ice/cpp/src/Ice/InputStream.cpp +10 -10
  72. data/ext/ice/cpp/src/Ice/Instrumentation.cpp +2 -2
  73. data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +2 -2
  74. data/ext/ice/cpp/src/Ice/LocalException.cpp +398 -2
  75. data/ext/ice/cpp/src/Ice/Locator.cpp +32 -2
  76. data/ext/ice/cpp/src/Ice/LocatorF.cpp +2 -2
  77. data/ext/ice/cpp/src/Ice/LocatorInfo.cpp +3 -3
  78. data/ext/ice/cpp/src/Ice/Logger.cpp +2 -2
  79. data/ext/ice/cpp/src/Ice/LoggerF.cpp +2 -2
  80. data/ext/ice/cpp/src/Ice/Metrics.cpp +8 -2
  81. data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +2 -2
  82. data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +2 -2
  83. data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +4 -4
  84. data/ext/ice/cpp/src/Ice/ObjectAdapterI.cpp +8 -8
  85. data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +2 -2
  86. data/ext/ice/cpp/src/Ice/Plugin.cpp +2 -2
  87. data/ext/ice/cpp/src/Ice/PluginF.cpp +2 -2
  88. data/ext/ice/cpp/src/Ice/Process.cpp +2 -2
  89. data/ext/ice/cpp/src/Ice/ProcessF.cpp +2 -2
  90. data/ext/ice/cpp/src/Ice/Properties.cpp +2 -2
  91. data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +2 -2
  92. data/ext/ice/cpp/src/Ice/PropertiesF.cpp +2 -2
  93. data/ext/ice/cpp/src/Ice/PropertyNames.cpp +5 -3
  94. data/ext/ice/cpp/src/Ice/PropertyNames.h +1 -1
  95. data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +8 -2
  96. data/ext/ice/cpp/src/Ice/Router.cpp +2 -2
  97. data/ext/ice/cpp/src/Ice/RouterF.cpp +2 -2
  98. data/ext/ice/cpp/src/Ice/RouterInfo.cpp +6 -2
  99. data/ext/ice/cpp/src/Ice/SHA1.cpp +2 -0
  100. data/ext/ice/cpp/src/Ice/ServantLocator.cpp +2 -2
  101. data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +2 -2
  102. data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +2 -2
  103. data/ext/ice/cpp/src/Ice/Thread.cpp +2 -2
  104. data/ext/ice/cpp/src/Ice/ThreadPool.cpp +5 -1
  105. data/ext/ice/cpp/src/Ice/ValueFactory.cpp +2 -2
  106. data/ext/ice/cpp/src/Ice/Version.cpp +2 -2
  107. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +2 -2
  108. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +14 -2
  109. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.cpp +2 -2
  110. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.h +14 -2
  111. data/ext/ice/cpp/src/IceSSL/CertificateI.cpp +23 -1
  112. data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +2 -2
  113. data/ext/ice/cpp/src/IceSSL/ConnectionInfoF.cpp +2 -2
  114. data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +2 -2
  115. data/ext/ice/cpp/src/IceSSL/OpenSSLCertificateI.cpp +114 -6
  116. data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +60 -1
  117. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +132 -7
  118. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +1 -0
  119. data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.cpp +2 -0
  120. data/ext/ice/cpp/src/IceSSL/PluginI.cpp +114 -0
  121. data/ext/ice/cpp/src/IceSSL/PluginI.h +21 -0
  122. data/ext/ice/cpp/src/IceSSL/SChannelCertificateI.cpp +142 -1
  123. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +117 -3
  124. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.h +1 -0
  125. data/ext/ice/cpp/src/IceSSL/SSLEngine.cpp +20 -1
  126. data/ext/ice/cpp/src/IceSSL/SSLEngine.h +4 -0
  127. data/ext/ice/cpp/src/IceSSL/SecureTransportCertificateI.cpp +133 -2
  128. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +150 -88
  129. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +1 -0
  130. data/ext/ice/cpp/src/IceUtil/OutputUtil.cpp +7 -2
  131. data/ext/ice/cpp/src/IceUtil/StringConverter.cpp +6 -0
  132. data/ext/ice/cpp/src/IceUtil/Time.cpp +2 -2
  133. data/ext/ice/cpp/src/Slice/CPlusPlusUtil.cpp +9 -5
  134. data/ext/ice/cpp/src/Slice/JavaUtil.cpp +8 -0
  135. data/ext/ice/cpp/src/Slice/MD5I.cpp +2 -1
  136. data/ext/ice/cpp/src/Slice/PHPUtil.cpp +4 -0
  137. data/ext/ice/cpp/src/Slice/Parser.cpp +4 -0
  138. data/ext/ice/cpp/src/Slice/Parser.h +2 -2
  139. data/ext/ice/cpp/src/Slice/PythonUtil.cpp +40 -3
  140. data/ext/ice/cpp/src/Slice/Scanner.cpp +620 -368
  141. data/ext/ice/mcpp/CMakeLists.txt +80 -0
  142. data/ext/ice/mcpp/expand.c +6 -6
  143. data/ice.gemspec +1 -1
  144. data/lib/Glacier2/Metrics.rb +1 -1
  145. data/lib/Glacier2/PermissionsVerifier.rb +1 -1
  146. data/lib/Glacier2/PermissionsVerifierF.rb +1 -1
  147. data/lib/Glacier2/Router.rb +1 -1
  148. data/lib/Glacier2/RouterF.rb +1 -1
  149. data/lib/Glacier2/SSLInfo.rb +1 -1
  150. data/lib/Glacier2/Session.rb +1 -1
  151. data/lib/Ice/BuiltinSequences.rb +1 -1
  152. data/lib/Ice/Communicator.rb +1 -1
  153. data/lib/Ice/CommunicatorF.rb +1 -1
  154. data/lib/Ice/Connection.rb +1 -1
  155. data/lib/Ice/ConnectionF.rb +1 -1
  156. data/lib/Ice/Current.rb +1 -1
  157. data/lib/Ice/Endpoint.rb +1 -1
  158. data/lib/Ice/EndpointF.rb +1 -1
  159. data/lib/Ice/EndpointTypes.rb +1 -1
  160. data/lib/Ice/FacetMap.rb +1 -1
  161. data/lib/Ice/Identity.rb +1 -1
  162. data/lib/Ice/ImplicitContext.rb +1 -1
  163. data/lib/Ice/ImplicitContextF.rb +1 -1
  164. data/lib/Ice/Instrumentation.rb +1 -1
  165. data/lib/Ice/InstrumentationF.rb +1 -1
  166. data/lib/Ice/LocalException.rb +1 -1
  167. data/lib/Ice/Locator.rb +1 -1
  168. data/lib/Ice/LocatorF.rb +1 -1
  169. data/lib/Ice/Logger.rb +1 -1
  170. data/lib/Ice/LoggerF.rb +1 -1
  171. data/lib/Ice/Metrics.rb +1 -1
  172. data/lib/Ice/ObjectAdapter.rb +1 -1
  173. data/lib/Ice/ObjectAdapterF.rb +1 -1
  174. data/lib/Ice/ObjectFactory.rb +1 -1
  175. data/lib/Ice/Plugin.rb +1 -1
  176. data/lib/Ice/PluginF.rb +1 -1
  177. data/lib/Ice/Process.rb +1 -1
  178. data/lib/Ice/ProcessF.rb +1 -1
  179. data/lib/Ice/Properties.rb +1 -1
  180. data/lib/Ice/PropertiesAdmin.rb +1 -1
  181. data/lib/Ice/PropertiesF.rb +1 -1
  182. data/lib/Ice/RemoteLogger.rb +1 -1
  183. data/lib/Ice/Router.rb +1 -1
  184. data/lib/Ice/RouterF.rb +1 -1
  185. data/lib/Ice/ServantLocator.rb +1 -1
  186. data/lib/Ice/ServantLocatorF.rb +1 -1
  187. data/lib/Ice/SliceChecksumDict.rb +1 -1
  188. data/lib/Ice/ValueFactory.rb +1 -1
  189. data/lib/Ice/Version.rb +1 -1
  190. data/lib/IceBox/IceBox.rb +1 -1
  191. data/lib/IceGrid/Admin.rb +1 -1
  192. data/lib/IceGrid/Descriptor.rb +1 -1
  193. data/lib/IceGrid/Exception.rb +1 -1
  194. data/lib/IceGrid/FileParser.rb +1 -1
  195. data/lib/IceGrid/PluginFacade.rb +1 -1
  196. data/lib/IceGrid/Registry.rb +1 -1
  197. data/lib/IceGrid/Session.rb +1 -1
  198. data/lib/IceGrid/UserAccountMapper.rb +1 -1
  199. data/lib/IcePatch2/FileInfo.rb +1 -1
  200. data/lib/IcePatch2/FileServer.rb +1 -1
  201. data/lib/IceStorm/IceStorm.rb +1 -1
  202. data/lib/IceStorm/Metrics.rb +1 -1
  203. data/slice/Glacier2/PermissionsVerifier.ice +1 -0
  204. data/slice/Glacier2/PermissionsVerifierF.ice +1 -0
  205. data/slice/Glacier2/Router.ice +1 -0
  206. data/slice/Glacier2/RouterF.ice +1 -0
  207. data/slice/Glacier2/SSLInfo.ice +1 -0
  208. data/slice/Glacier2/Session.ice +1 -0
  209. data/slice/Ice/BuiltinSequences.ice +1 -0
  210. data/slice/Ice/Communicator.ice +1 -0
  211. data/slice/Ice/CommunicatorF.ice +1 -0
  212. data/slice/Ice/Connection.ice +1 -0
  213. data/slice/Ice/ConnectionF.ice +1 -0
  214. data/slice/Ice/Current.ice +1 -0
  215. data/slice/Ice/Endpoint.ice +1 -0
  216. data/slice/Ice/EndpointF.ice +1 -0
  217. data/slice/Ice/EndpointTypes.ice +1 -0
  218. data/slice/Ice/FacetMap.ice +1 -0
  219. data/slice/Ice/Identity.ice +1 -0
  220. data/slice/Ice/ImplicitContext.ice +1 -0
  221. data/slice/Ice/ImplicitContextF.ice +1 -0
  222. data/slice/Ice/Instrumentation.ice +1 -0
  223. data/slice/Ice/InstrumentationF.ice +1 -0
  224. data/slice/Ice/LocalException.ice +1 -0
  225. data/slice/Ice/Locator.ice +1 -0
  226. data/slice/Ice/LocatorF.ice +1 -0
  227. data/slice/Ice/Logger.ice +1 -0
  228. data/slice/Ice/LoggerF.ice +1 -0
  229. data/slice/Ice/Metrics.ice +1 -0
  230. data/slice/Ice/ObjectAdapter.ice +1 -0
  231. data/slice/Ice/ObjectAdapterF.ice +1 -0
  232. data/slice/Ice/ObjectFactory.ice +1 -0
  233. data/slice/Ice/Plugin.ice +1 -0
  234. data/slice/Ice/PluginF.ice +1 -0
  235. data/slice/Ice/Process.ice +1 -0
  236. data/slice/Ice/ProcessF.ice +1 -0
  237. data/slice/Ice/Properties.ice +1 -0
  238. data/slice/Ice/PropertiesAdmin.ice +1 -0
  239. data/slice/Ice/PropertiesF.ice +1 -0
  240. data/slice/Ice/RemoteLogger.ice +1 -0
  241. data/slice/Ice/Router.ice +1 -0
  242. data/slice/Ice/RouterF.ice +1 -0
  243. data/slice/Ice/ServantLocator.ice +1 -0
  244. data/slice/Ice/ServantLocatorF.ice +1 -0
  245. data/slice/Ice/SliceChecksumDict.ice +1 -0
  246. data/slice/Ice/ValueFactory.ice +1 -0
  247. data/slice/Ice/Version.ice +1 -0
  248. data/slice/IceBT/ConnectionInfo.ice +1 -0
  249. data/slice/IceBT/EndpointInfo.ice +1 -0
  250. data/slice/IceBT/Types.ice +1 -0
  251. data/slice/IceBox/IceBox.ice +1 -0
  252. data/slice/IceDiscovery/IceDiscovery.ice +1 -0
  253. data/slice/IceGrid/Admin.ice +1 -0
  254. data/slice/IceGrid/Descriptor.ice +1 -0
  255. data/slice/IceGrid/Exception.ice +1 -0
  256. data/slice/IceGrid/FileParser.ice +1 -0
  257. data/slice/IceGrid/PluginFacade.ice +1 -0
  258. data/slice/IceGrid/Registry.ice +1 -0
  259. data/slice/IceGrid/Session.ice +1 -0
  260. data/slice/IceGrid/UserAccountMapper.ice +1 -0
  261. data/slice/IceIAP/ConnectionInfo.ice +1 -0
  262. data/slice/IceIAP/EndpointInfo.ice +1 -0
  263. data/slice/IceLocatorDiscovery/IceLocatorDiscovery.ice +1 -0
  264. data/slice/IcePatch2/FileInfo.ice +1 -0
  265. data/slice/IcePatch2/FileServer.ice +1 -0
  266. data/slice/IceSSL/ConnectionInfo.ice +1 -0
  267. data/slice/IceSSL/ConnectionInfoF.ice +1 -0
  268. data/slice/IceSSL/EndpointInfo.ice +1 -0
  269. data/slice/IceStorm/IceStorm.ice +1 -0
  270. data/slice/IceStorm/Metrics.ice +4 -1
  271. metadata +4 -4
@@ -2,7 +2,7 @@
2
2
  // Copyright (c) ZeroC, Inc. All rights reserved.
3
3
  //
4
4
  //
5
- // Ice version 3.7.5
5
+ // Ice version 3.7.8
6
6
  //
7
7
  // <auto-generated>
8
8
  //
@@ -35,7 +35,7 @@
35
35
  # if ICE_INT_VERSION % 100 >= 50
36
36
  # error Beta header file detected
37
37
  # endif
38
- # if ICE_INT_VERSION % 100 < 5
38
+ # if ICE_INT_VERSION % 100 < 8
39
39
  # error Ice patch level mismatch!
40
40
  # endif
41
41
  #endif
@@ -2,7 +2,7 @@
2
2
  // Copyright (c) ZeroC, Inc. All rights reserved.
3
3
  //
4
4
  //
5
- // Ice version 3.7.5
5
+ // Ice version 3.7.8
6
6
  //
7
7
  // <auto-generated>
8
8
  //
@@ -37,7 +37,7 @@
37
37
  # if ICE_INT_VERSION % 100 >= 50
38
38
  # error Beta header file detected
39
39
  # endif
40
- # if ICE_INT_VERSION % 100 < 5
40
+ # if ICE_INT_VERSION % 100 < 8
41
41
  # error Ice patch level mismatch!
42
42
  # endif
43
43
  #endif
@@ -714,9 +714,9 @@ IceUtil::Thread::start(size_t stackSize, bool realtimeScheduling, int priority)
714
714
  }
715
715
  if(stackSize > 0)
716
716
  {
717
- if(stackSize < PTHREAD_STACK_MIN)
717
+ if(stackSize < static_cast<size_t>(PTHREAD_STACK_MIN))
718
718
  {
719
- stackSize = PTHREAD_STACK_MIN;
719
+ stackSize = static_cast<size_t>(PTHREAD_STACK_MIN);
720
720
  }
721
721
  #ifdef __APPLE__
722
722
  if(stackSize % 4096 > 0)
@@ -17,6 +17,10 @@
17
17
  # include <Ice/StringConverter.h>
18
18
  #endif
19
19
 
20
+ #if defined(__FreeBSD__)
21
+ # include <sys/sysctl.h>
22
+ #endif
23
+
20
24
  using namespace std;
21
25
  using namespace Ice;
22
26
  using namespace Ice::Instrumentation;
@@ -303,8 +307,8 @@ IceInternal::ThreadPool::ThreadPool(const InstancePtr& instance, const string& p
303
307
  int nProcessors = sysInfo.dwNumberOfProcessors;
304
308
  # elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
305
309
  static int ncpu[2] = { CTL_HW, HW_NCPU };
306
- size_t sz = sizeof(nProcessors);
307
310
  int nProcessors;
311
+ size_t sz = sizeof(nProcessors);
308
312
  if(sysctl(ncpu, 2, &nProcessors, &sz, 0, 0) == -1)
309
313
  {
310
314
  nProcessors = 1;
@@ -2,7 +2,7 @@
2
2
  // Copyright (c) ZeroC, Inc. All rights reserved.
3
3
  //
4
4
  //
5
- // Ice version 3.7.5
5
+ // Ice version 3.7.8
6
6
  //
7
7
  // <auto-generated>
8
8
  //
@@ -37,7 +37,7 @@
37
37
  # if ICE_INT_VERSION % 100 >= 50
38
38
  # error Beta header file detected
39
39
  # endif
40
- # if ICE_INT_VERSION % 100 < 5
40
+ # if ICE_INT_VERSION % 100 < 8
41
41
  # error Ice patch level mismatch!
42
42
  # endif
43
43
  #endif
@@ -2,7 +2,7 @@
2
2
  // Copyright (c) ZeroC, Inc. All rights reserved.
3
3
  //
4
4
  //
5
- // Ice version 3.7.5
5
+ // Ice version 3.7.8
6
6
  //
7
7
  // <auto-generated>
8
8
  //
@@ -37,7 +37,7 @@
37
37
  # if ICE_INT_VERSION % 100 >= 50
38
38
  # error Beta header file detected
39
39
  # endif
40
- # if ICE_INT_VERSION % 100 < 5
40
+ # if ICE_INT_VERSION % 100 < 8
41
41
  # error Ice patch level mismatch!
42
42
  # endif
43
43
  #endif
@@ -2,7 +2,7 @@
2
2
  // Copyright (c) ZeroC, Inc. All rights reserved.
3
3
  //
4
4
  //
5
- // Ice version 3.7.5
5
+ // Ice version 3.7.8
6
6
  //
7
7
  // <auto-generated>
8
8
  //
@@ -37,7 +37,7 @@
37
37
  # if ICE_INT_VERSION % 100 >= 50
38
38
  # error Beta header file detected
39
39
  # endif
40
- # if ICE_INT_VERSION % 100 < 5
40
+ # if ICE_INT_VERSION % 100 < 8
41
41
  # error Ice patch level mismatch!
42
42
  # endif
43
43
  #endif
@@ -2,7 +2,7 @@
2
2
  // Copyright (c) ZeroC, Inc. All rights reserved.
3
3
  //
4
4
  //
5
- // Ice version 3.7.5
5
+ // Ice version 3.7.8
6
6
  //
7
7
  // <auto-generated>
8
8
  //
@@ -42,7 +42,7 @@
42
42
  # if ICE_INT_VERSION % 100 >= 50
43
43
  # error Beta header file detected
44
44
  # endif
45
- # if ICE_INT_VERSION % 100 < 5
45
+ # if ICE_INT_VERSION % 100 < 8
46
46
  # error Ice patch level mismatch!
47
47
  # endif
48
48
  #endif
@@ -1062,6 +1062,12 @@ public:
1062
1062
 
1063
1063
  virtual ~LookupReply();
1064
1064
 
1065
+ #ifdef ICE_CPP11_COMPILER
1066
+ LookupReply() = default;
1067
+ LookupReply(const LookupReply&) = default;
1068
+ LookupReply& operator=(const LookupReply&) = default;
1069
+ #endif
1070
+
1065
1071
  /**
1066
1072
  * Determines whether this object supports an interface with the given Slice type ID.
1067
1073
  * @param id The fully-scoped Slice type ID.
@@ -1153,6 +1159,12 @@ public:
1153
1159
 
1154
1160
  virtual ~Lookup();
1155
1161
 
1162
+ #ifdef ICE_CPP11_COMPILER
1163
+ Lookup() = default;
1164
+ Lookup(const Lookup&) = default;
1165
+ Lookup& operator=(const Lookup&) = default;
1166
+ #endif
1167
+
1156
1168
  /**
1157
1169
  * Determines whether this object supports an interface with the given Slice type ID.
1158
1170
  * @param id The fully-scoped Slice type ID.
@@ -2,7 +2,7 @@
2
2
  // Copyright (c) ZeroC, Inc. All rights reserved.
3
3
  //
4
4
  //
5
- // Ice version 3.7.5
5
+ // Ice version 3.7.8
6
6
  //
7
7
  // <auto-generated>
8
8
  //
@@ -38,7 +38,7 @@
38
38
  # if ICE_INT_VERSION % 100 >= 50
39
39
  # error Beta header file detected
40
40
  # endif
41
- # if ICE_INT_VERSION % 100 < 5
41
+ # if ICE_INT_VERSION % 100 < 8
42
42
  # error Ice patch level mismatch!
43
43
  # endif
44
44
  #endif
@@ -2,7 +2,7 @@
2
2
  // Copyright (c) ZeroC, Inc. All rights reserved.
3
3
  //
4
4
  //
5
- // Ice version 3.7.5
5
+ // Ice version 3.7.8
6
6
  //
7
7
  // <auto-generated>
8
8
  //
@@ -44,7 +44,7 @@
44
44
  # if ICE_INT_VERSION % 100 >= 50
45
45
  # error Beta header file detected
46
46
  # endif
47
- # if ICE_INT_VERSION % 100 < 5
47
+ # if ICE_INT_VERSION % 100 < 8
48
48
  # error Ice patch level mismatch!
49
49
  # endif
50
50
  #endif
@@ -705,6 +705,12 @@ public:
705
705
 
706
706
  virtual ~LookupReply();
707
707
 
708
+ #ifdef ICE_CPP11_COMPILER
709
+ LookupReply() = default;
710
+ LookupReply(const LookupReply&) = default;
711
+ LookupReply& operator=(const LookupReply&) = default;
712
+ #endif
713
+
708
714
  /**
709
715
  * Determines whether this object supports an interface with the given Slice type ID.
710
716
  * @param id The fully-scoped Slice type ID.
@@ -788,6 +794,12 @@ public:
788
794
 
789
795
  virtual ~Lookup();
790
796
 
797
+ #ifdef ICE_CPP11_COMPILER
798
+ Lookup() = default;
799
+ Lookup(const Lookup&) = default;
800
+ Lookup& operator=(const Lookup&) = default;
801
+ #endif
802
+
791
803
  /**
792
804
  * Determines whether this object supports an interface with the given Slice type ID.
793
805
  * @param id The fully-scoped Slice type ID.
@@ -6,7 +6,7 @@
6
6
  #include <IceUtil/Mutex.h>
7
7
  #include <IceUtil/MutexPtrLock.h>
8
8
  #include <IceUtil/StringUtil.h>
9
- #include <IceSSL/Plugin.h>
9
+ #include <IceSSL/PluginI.h>
10
10
  #include <IceSSL/Util.h>
11
11
  #include <IceSSL/RFC2253.h>
12
12
  #include <IceSSL/CertificateI.h>
@@ -277,3 +277,25 @@ CertificateI::toString() const
277
277
  os << "subject: " << string(getSubjectDN()) << "\n";
278
278
  return os.str();
279
279
  }
280
+
281
+ unsigned int
282
+ Certificate::getKeyUsage() const
283
+ {
284
+ const CertificateExtendedInfo* impl = dynamic_cast<const CertificateExtendedInfo*>(this);
285
+ if(impl)
286
+ {
287
+ return impl->getKeyUsage();
288
+ }
289
+ return 0;
290
+ }
291
+
292
+ unsigned int
293
+ Certificate::getExtendedKeyUsage() const
294
+ {
295
+ const CertificateExtendedInfo* impl = dynamic_cast<const CertificateExtendedInfo*>(this);
296
+ if(impl)
297
+ {
298
+ return impl->getExtendedKeyUsage();
299
+ }
300
+ return 0;
301
+ }
@@ -2,7 +2,7 @@
2
2
  // Copyright (c) ZeroC, Inc. All rights reserved.
3
3
  //
4
4
  //
5
- // Ice version 3.7.5
5
+ // Ice version 3.7.8
6
6
  //
7
7
  // <auto-generated>
8
8
  //
@@ -37,7 +37,7 @@
37
37
  # if ICE_INT_VERSION % 100 >= 50
38
38
  # error Beta header file detected
39
39
  # endif
40
- # if ICE_INT_VERSION % 100 < 5
40
+ # if ICE_INT_VERSION % 100 < 8
41
41
  # error Ice patch level mismatch!
42
42
  # endif
43
43
  #endif
@@ -2,7 +2,7 @@
2
2
  // Copyright (c) ZeroC, Inc. All rights reserved.
3
3
  //
4
4
  //
5
- // Ice version 3.7.5
5
+ // Ice version 3.7.8
6
6
  //
7
7
  // <auto-generated>
8
8
  //
@@ -35,7 +35,7 @@
35
35
  # if ICE_INT_VERSION % 100 >= 50
36
36
  # error Beta header file detected
37
37
  # endif
38
- # if ICE_INT_VERSION % 100 < 5
38
+ # if ICE_INT_VERSION % 100 < 8
39
39
  # error Ice patch level mismatch!
40
40
  # endif
41
41
  #endif
@@ -2,7 +2,7 @@
2
2
  // Copyright (c) ZeroC, Inc. All rights reserved.
3
3
  //
4
4
  //
5
- // Ice version 3.7.5
5
+ // Ice version 3.7.8
6
6
  //
7
7
  // <auto-generated>
8
8
  //
@@ -37,7 +37,7 @@
37
37
  # if ICE_INT_VERSION % 100 >= 50
38
38
  # error Beta header file detected
39
39
  # endif
40
- # if ICE_INT_VERSION % 100 < 5
40
+ # if ICE_INT_VERSION % 100 < 8
41
41
  # error Ice patch level mismatch!
42
42
  # endif
43
43
  #endif
@@ -2,7 +2,7 @@
2
2
  // Copyright (c) ZeroC, Inc. All rights reserved.
3
3
  //
4
4
 
5
- #include <IceSSL/Plugin.h>
5
+ #include <IceSSL/PluginI.h>
6
6
  #include <IceSSL/OpenSSL.h>
7
7
  #include <IceSSL/CertificateI.h>
8
8
  #include <IceSSL/OpenSSLUtil.h>
@@ -39,6 +39,12 @@ extern "C" typedef void (*FreeFunc)(void*);
39
39
 
40
40
  #endif
41
41
 
42
+ #if defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER < 0x10100000L
43
+ # define X509_get_extension_flags(x) (x->ex_flags)
44
+ # define X509_get_key_usage(x) (x->ex_kusage)
45
+ # define X509_get_extended_key_usage(x) (x->ex_xkusage)
46
+ #endif
47
+
42
48
  namespace
43
49
  {
44
50
 
@@ -134,7 +140,10 @@ convertGeneralNames(GENERAL_NAMES* gens)
134
140
  break;
135
141
  }
136
142
  }
137
- alt.push_back(p);
143
+ if (!p.second.empty())
144
+ {
145
+ alt.push_back(p);
146
+ }
138
147
  }
139
148
  sk_GENERAL_NAME_pop_free(gens, GENERAL_NAME_free);
140
149
  return alt;
@@ -254,6 +263,7 @@ private:
254
263
 
255
264
  class OpenSSLCertificateI : public IceSSL::OpenSSL::Certificate,
256
265
  public CertificateI,
266
+ public IceSSL::CertificateExtendedInfo,
257
267
  public IceUtil::Mutex
258
268
  {
259
269
  public:
@@ -282,6 +292,8 @@ public:
282
292
  virtual vector<pair<int, string> > getSubjectAlternativeNames() const;
283
293
  virtual int getVersion() const;
284
294
  virtual x509_st* getCert() const;
295
+ virtual unsigned int getKeyUsage() const;
296
+ virtual unsigned int getExtendedKeyUsage() const;
285
297
 
286
298
  protected:
287
299
 
@@ -539,6 +551,94 @@ OpenSSLCertificateI::loadX509Extensions() const
539
551
  }
540
552
  }
541
553
 
554
+ unsigned int
555
+ OpenSSLCertificateI::getKeyUsage() const
556
+ {
557
+ unsigned int keyUsage = 0;
558
+ int flags = X509_get_extension_flags(_cert);
559
+ if(flags & EXFLAG_KUSAGE)
560
+ {
561
+ unsigned int kusage = X509_get_key_usage(_cert);
562
+ if(kusage & KU_DIGITAL_SIGNATURE)
563
+ {
564
+ keyUsage |= KEY_USAGE_DIGITAL_SIGNATURE;
565
+ }
566
+ if(kusage & KU_NON_REPUDIATION)
567
+ {
568
+ keyUsage |= KEY_USAGE_NON_REPUDIATION;
569
+ }
570
+ if(kusage & KU_KEY_ENCIPHERMENT)
571
+ {
572
+ keyUsage |= KEY_USAGE_KEY_ENCIPHERMENT;
573
+ }
574
+ if(kusage & KU_DATA_ENCIPHERMENT)
575
+ {
576
+ keyUsage |= KEY_USAGE_DATA_ENCIPHERMENT;
577
+ }
578
+ if(kusage & KU_KEY_AGREEMENT)
579
+ {
580
+ keyUsage |= KEY_USAGE_KEY_AGREEMENT;
581
+ }
582
+ if(kusage & KU_KEY_CERT_SIGN)
583
+ {
584
+ keyUsage |= KEY_USAGE_KEY_CERT_SIGN;
585
+ }
586
+ if(kusage & KU_CRL_SIGN)
587
+ {
588
+ keyUsage |= KEY_USAGE_CRL_SIGN;
589
+ }
590
+ if(kusage & KU_ENCIPHER_ONLY)
591
+ {
592
+ keyUsage |= KEY_USAGE_ENCIPHER_ONLY;
593
+ }
594
+ if(kusage & KU_DECIPHER_ONLY)
595
+ {
596
+ keyUsage |= KEY_USAGE_DECIPHER_ONLY;
597
+ }
598
+ }
599
+ return keyUsage;
600
+ }
601
+
602
+ unsigned int
603
+ OpenSSLCertificateI::getExtendedKeyUsage() const
604
+ {
605
+ unsigned int extendedKeyUsage = 0;
606
+ int flags = X509_get_extension_flags(_cert);
607
+ if(flags & EXFLAG_XKUSAGE)
608
+ {
609
+ unsigned int xkusage = X509_get_extended_key_usage(_cert);
610
+ if(xkusage & XKU_ANYEKU)
611
+ {
612
+ extendedKeyUsage |= EXTENDED_KEY_USAGE_ANY_KEY_USAGE;
613
+ }
614
+ if(xkusage & XKU_SSL_SERVER)
615
+ {
616
+ extendedKeyUsage |= EXTENDED_KEY_USAGE_SERVER_AUTH;
617
+ }
618
+ if(xkusage & XKU_SSL_CLIENT)
619
+ {
620
+ extendedKeyUsage |= EXTENDED_KEY_USAGE_CLIENT_AUTH;
621
+ }
622
+ if(xkusage & XKU_CODE_SIGN)
623
+ {
624
+ extendedKeyUsage |= EXTENDED_KEY_USAGE_CODE_SIGNING;
625
+ }
626
+ if(xkusage & XKU_SMIME)
627
+ {
628
+ extendedKeyUsage |= EXTENDED_KEY_USAGE_EMAIL_PROTECTION;
629
+ }
630
+ if(xkusage & XKU_TIMESTAMP)
631
+ {
632
+ extendedKeyUsage |= EXTENDED_KEY_USAGE_TIME_STAMPING;
633
+ }
634
+ if(xkusage & XKU_OCSP_SIGN)
635
+ {
636
+ extendedKeyUsage |= EXTENDED_KEY_USAGE_OCSP_SIGNING;
637
+ }
638
+ }
639
+ return extendedKeyUsage;
640
+ }
641
+
542
642
  IceSSL::OpenSSL::CertificatePtr
543
643
  IceSSL::OpenSSL::Certificate::create(x509_st* cert)
544
644
  {
@@ -556,12 +656,16 @@ IceSSL::OpenSSL::Certificate::load(const std::string& file)
556
656
  }
557
657
 
558
658
  x509_st* x = PEM_read_bio_X509(cert, ICE_NULLPTR, ICE_NULLPTR, ICE_NULLPTR);
659
+ BIO_free(cert);
559
660
  if(x == ICE_NULLPTR)
560
661
  {
561
- BIO_free(cert);
562
662
  throw CertificateReadException(__FILE__, __LINE__, "error reading file:\n" + getSslErrors(false));
563
663
  }
564
- BIO_free(cert);
664
+ // Calling it with -1 for the side effects, this ensure that the extensions info is loaded
665
+ if(X509_check_purpose(x, -1, -1) == -1)
666
+ {
667
+ throw CertificateReadException(__FILE__, __LINE__, "error loading certificate:\n" + getSslErrors(false));
668
+ }
565
669
  return ICE_MAKE_SHARED(OpenSSLCertificateI, x);
566
670
  }
567
671
 
@@ -570,11 +674,15 @@ IceSSL::OpenSSL::Certificate::decode(const std::string& encoding)
570
674
  {
571
675
  BIO *cert = BIO_new_mem_buf(static_cast<void*>(const_cast<char*>(&encoding[0])), static_cast<int>(encoding.size()));
572
676
  x509_st* x = PEM_read_bio_X509(cert, ICE_NULLPTR, ICE_NULLPTR, ICE_NULLPTR);
677
+ BIO_free(cert);
573
678
  if(x == ICE_NULLPTR)
574
679
  {
575
- BIO_free(cert);
576
680
  throw CertificateEncodingException(__FILE__, __LINE__, getSslErrors(false));
577
681
  }
578
- BIO_free(cert);
682
+ // Calling it with -1 for the side effects, this ensure that the extensions info is loaded
683
+ if(X509_check_purpose(x, -1, -1) == -1)
684
+ {
685
+ throw CertificateReadException(__FILE__, __LINE__, "error loading certificate:\n" + getSslErrors(false));
686
+ }
579
687
  return ICE_MAKE_SHARED(OpenSSLCertificateI, x);
580
688
  }
@@ -28,6 +28,9 @@
28
28
 
29
29
  #ifdef _MSC_VER
30
30
  # pragma warning(disable:4127) // conditional expression is constant
31
+ #elif defined(__GNUC__)
32
+ # // Ignore OpenSSL 3.0 deprecation warning
33
+ # pragma GCC diagnostic ignored "-Wdeprecated-declarations"
31
34
  #endif
32
35
 
33
36
  using namespace std;
@@ -816,7 +819,7 @@ OpenSSL::SSLEngine::initialize()
816
819
  if(!_dhParams->add(keyLength, file))
817
820
  {
818
821
  throw PluginInitializationException(__FILE__, __LINE__,
819
- "IceSSL: unable to read DH parameter file " + file);
822
+ "IceSSL: unable to read DH parameter file " + file);
820
823
  }
821
824
  }
822
825
  }
@@ -824,6 +827,62 @@ OpenSSL::SSLEngine::initialize()
824
827
  }
825
828
  }
826
829
 
830
+ int revocationCheck = getRevocationCheck();
831
+ if(revocationCheck > 0)
832
+ {
833
+ vector<string> crlFiles =
834
+ properties->getPropertyAsList(propPrefix + "CertificateRevocationListFiles");
835
+ if(crlFiles.empty())
836
+ {
837
+ throw PluginInitializationException(
838
+ __FILE__,
839
+ __LINE__,
840
+ "IceSSL: cannot enable revocation checks without setting certificate revocation list files");
841
+ }
842
+
843
+ X509_STORE* store = SSL_CTX_get_cert_store(_ctx);
844
+ if(!store)
845
+ {
846
+ throw PluginInitializationException(
847
+ __FILE__,
848
+ __LINE__,
849
+ "IceSSL: unable to obtain the certificate store");
850
+ }
851
+
852
+ X509_LOOKUP* lookup = X509_STORE_add_lookup(store, X509_LOOKUP_file());
853
+ if(!lookup)
854
+ {
855
+ throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: add lookup failed");
856
+ }
857
+
858
+ for(vector<string>::const_iterator it = crlFiles.begin(); it != crlFiles.end(); it++)
859
+ {
860
+ string file;
861
+ if(!checkPath(*it, defaultDir, false, file))
862
+ {
863
+ throw PluginInitializationException(
864
+ __FILE__,
865
+ __LINE__,
866
+ "IceSSL: CRL file not found `" + *it + "'");
867
+ }
868
+
869
+ if(X509_LOOKUP_load_file(lookup, file.c_str(), X509_FILETYPE_PEM) == 0)
870
+ {
871
+ throw PluginInitializationException(
872
+ __FILE__,
873
+ __LINE__,
874
+ "IceSSL: CRL load failure `" + *it + "'");
875
+ }
876
+ }
877
+
878
+ unsigned long flags = X509_V_FLAG_CRL_CHECK;
879
+ if(revocationCheck > 1)
880
+ {
881
+ flags |= X509_V_FLAG_CRL_CHECK_ALL;
882
+ }
883
+ X509_STORE_set_flags(store, flags);
884
+ }
885
+
827
886
  SSL_CTX_set_mode(_ctx, SSL_MODE_ENABLE_PARTIAL_WRITE);
828
887
  }
829
888