zeroc-ice 3.7.11 → 3.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (895) hide show
  1. checksums.yaml +4 -4
  2. data/dist/IceRuby/Communicator.cpp +159 -376
  3. data/dist/IceRuby/Communicator.h +8 -9
  4. data/dist/IceRuby/Config.h +23 -89
  5. data/dist/IceRuby/Connection.cpp +111 -219
  6. data/dist/IceRuby/Connection.h +8 -12
  7. data/dist/IceRuby/DefaultSliceLoader.cpp +45 -0
  8. data/dist/IceRuby/DefaultSliceLoader.h +25 -0
  9. data/dist/IceRuby/Endpoint.cpp +63 -65
  10. data/dist/IceRuby/Endpoint.h +7 -11
  11. data/dist/IceRuby/ImplicitContext.cpp +26 -31
  12. data/dist/IceRuby/ImplicitContext.h +6 -10
  13. data/dist/IceRuby/Init.cpp +27 -40
  14. data/dist/IceRuby/Logger.cpp +23 -28
  15. data/dist/IceRuby/Logger.h +8 -12
  16. data/dist/IceRuby/Operation.cpp +177 -219
  17. data/dist/IceRuby/Operation.h +15 -18
  18. data/dist/IceRuby/Properties.cpp +133 -89
  19. data/dist/IceRuby/Properties.h +6 -10
  20. data/dist/IceRuby/Proxy.cpp +179 -649
  21. data/dist/IceRuby/Proxy.h +11 -12
  22. data/dist/IceRuby/RubySliceLoader.cpp +39 -0
  23. data/dist/IceRuby/RubySliceLoader.h +27 -0
  24. data/dist/IceRuby/Slice.cpp +88 -94
  25. data/dist/IceRuby/Slice.h +3 -7
  26. data/dist/IceRuby/Types.cpp +987 -1190
  27. data/dist/IceRuby/Types.h +390 -461
  28. data/dist/IceRuby/Util.cpp +214 -473
  29. data/dist/IceRuby/Util.h +378 -479
  30. data/dist/ice/cpp/include/Ice/AsyncResponseHandler.h +85 -0
  31. data/dist/ice/cpp/include/Ice/BatchRequest.h +39 -0
  32. data/dist/ice/cpp/include/Ice/BatchRequestQueueF.h +4 -10
  33. data/dist/ice/cpp/include/Ice/Buffer.h +116 -111
  34. data/dist/ice/cpp/include/Ice/Communicator.h +411 -0
  35. data/dist/ice/cpp/include/Ice/CommunicatorF.h +16 -0
  36. data/dist/ice/cpp/include/Ice/Config.h +46 -62
  37. data/dist/ice/cpp/include/Ice/Connection.h +410 -0
  38. data/dist/ice/cpp/include/Ice/ConnectionF.h +36 -0
  39. data/dist/ice/cpp/include/Ice/ConnectionIF.h +6 -28
  40. data/dist/ice/cpp/include/Ice/CtrlCHandler.h +56 -0
  41. data/dist/ice/cpp/include/Ice/Current.h +60 -0
  42. data/dist/ice/cpp/include/Ice/DefaultSliceLoader.h +160 -0
  43. data/dist/ice/cpp/include/Ice/Demangle.h +17 -0
  44. data/dist/ice/cpp/include/Ice/Endpoint.h +298 -0
  45. data/dist/ice/cpp/include/Ice/EndpointF.h +44 -0
  46. data/dist/ice/cpp/include/Ice/EndpointSelectionType.h +21 -0
  47. data/dist/ice/cpp/include/Ice/Exception.h +46 -151
  48. data/dist/ice/cpp/include/Ice/FacetMap.h +16 -0
  49. data/dist/ice/cpp/include/Ice/Format.h +11 -27
  50. data/dist/ice/cpp/include/Ice/Ice.h +53 -48
  51. data/dist/ice/cpp/include/Ice/IconvStringConverter.h +165 -326
  52. data/dist/ice/cpp/include/Ice/ImplicitContext.h +76 -0
  53. data/dist/ice/cpp/include/Ice/IncomingRequest.h +75 -0
  54. data/dist/ice/cpp/include/Ice/Initialize.h +113 -927
  55. data/dist/ice/cpp/include/Ice/InputStream.h +748 -1320
  56. data/dist/ice/cpp/include/Ice/InstanceF.h +4 -10
  57. data/dist/ice/cpp/include/Ice/Instrumentation.h +319 -0
  58. data/dist/ice/cpp/include/Ice/LocalException.h +58 -0
  59. data/dist/ice/cpp/include/Ice/LocalExceptions.h +870 -0
  60. data/dist/ice/cpp/include/Ice/Logger.h +62 -0
  61. data/dist/ice/cpp/include/Ice/LoggerUtil.h +124 -147
  62. data/dist/ice/cpp/include/Ice/MarshaledResult.h +50 -0
  63. data/dist/ice/cpp/include/Ice/NativePropertiesAdmin.h +41 -71
  64. data/dist/ice/cpp/include/Ice/Object.h +151 -490
  65. data/dist/ice/cpp/include/Ice/ObjectAdapter.h +324 -0
  66. data/dist/ice/cpp/include/Ice/ObjectAdapterF.h +16 -0
  67. data/dist/ice/cpp/include/Ice/ObjectF.h +5 -19
  68. data/dist/ice/cpp/include/Ice/ObserverHelper.h +115 -132
  69. data/dist/ice/cpp/include/Ice/OutgoingAsync.h +392 -748
  70. data/dist/ice/cpp/include/Ice/OutgoingResponse.h +129 -0
  71. data/dist/ice/cpp/include/Ice/OutputStream.h +756 -956
  72. data/dist/ice/cpp/include/Ice/Plugin.h +73 -0
  73. data/dist/ice/cpp/include/Ice/PluginFactory.h +77 -0
  74. data/dist/ice/cpp/include/{IceUtil → Ice}/PopDisableWarnings.h +8 -6
  75. data/dist/ice/cpp/include/Ice/Properties.h +307 -0
  76. data/dist/ice/cpp/include/Ice/PropertiesF.h +19 -0
  77. data/dist/ice/cpp/include/Ice/Proxy.h +665 -5094
  78. data/dist/ice/cpp/include/Ice/ProxyF.h +2 -44
  79. data/dist/ice/cpp/include/Ice/ProxyFunctions.h +209 -0
  80. data/dist/ice/cpp/include/Ice/PushDisableWarnings.h +29 -0
  81. data/dist/ice/cpp/include/Ice/ReferenceF.h +4 -19
  82. data/dist/ice/cpp/include/Ice/RequestHandlerF.h +8 -18
  83. data/dist/ice/cpp/include/Ice/SSL/ClientAuthenticationOptions.h +276 -0
  84. data/dist/ice/cpp/include/Ice/SSL/Config.h +54 -0
  85. data/dist/ice/cpp/include/Ice/SSL/ConnectionInfo.h +107 -0
  86. data/dist/ice/cpp/include/Ice/SSL/ConnectionInfoF.h +39 -0
  87. data/dist/ice/cpp/include/Ice/SSL/EndpointInfo.h +40 -0
  88. data/dist/ice/cpp/include/Ice/SSL/SSLException.h +32 -0
  89. data/dist/ice/cpp/include/Ice/SSL/ServerAuthenticationOptions.h +286 -0
  90. data/dist/ice/cpp/include/Ice/ServantLocator.h +51 -0
  91. data/dist/ice/cpp/include/Ice/Service.h +182 -342
  92. data/dist/ice/cpp/include/Ice/SliceLoader.h +67 -0
  93. data/dist/ice/cpp/include/Ice/SlicedData.h +113 -160
  94. data/dist/ice/cpp/include/Ice/SlicedDataF.h +17 -27
  95. data/dist/ice/cpp/include/Ice/StreamHelpers.h +532 -1070
  96. data/dist/ice/cpp/include/Ice/StreamableTraits.h +291 -0
  97. data/dist/ice/cpp/include/Ice/StringConverter.h +152 -63
  98. data/dist/ice/cpp/include/Ice/StringUtil.h +114 -0
  99. data/dist/ice/cpp/include/Ice/TimerTask.h +24 -0
  100. data/dist/ice/cpp/include/Ice/TupleCompare.h +103 -0
  101. data/dist/ice/cpp/include/Ice/UUID.h +6 -9
  102. data/dist/ice/cpp/include/Ice/UserException.h +46 -0
  103. data/dist/ice/cpp/include/Ice/UserExceptionFactory.h +4 -79
  104. data/dist/ice/cpp/include/Ice/Value.h +103 -115
  105. data/dist/ice/cpp/include/Ice/ValueF.h +6 -11
  106. data/dist/ice/cpp/include/IceDiscovery/IceDiscovery.h +16 -1877
  107. data/dist/ice/cpp/include/IceLocatorDiscovery/IceLocatorDiscovery.h +16 -1185
  108. data/dist/ice/cpp/include/generated/Ice/BuiltinSequences.h +46 -146
  109. data/dist/ice/cpp/include/generated/Ice/Context.h +40 -0
  110. data/dist/ice/cpp/include/generated/Ice/EndpointTypes.h +49 -93
  111. data/dist/ice/cpp/include/generated/Ice/Identity.h +70 -226
  112. data/dist/ice/cpp/include/generated/Ice/Locator.h +494 -3850
  113. data/dist/ice/cpp/include/generated/Ice/LocatorRegistry.h +443 -0
  114. data/dist/ice/cpp/include/generated/Ice/Metrics.h +937 -4603
  115. data/dist/ice/cpp/include/generated/Ice/OperationMode.h +73 -0
  116. data/dist/ice/cpp/include/generated/Ice/Process.h +197 -929
  117. data/dist/ice/cpp/include/generated/Ice/PropertiesAdmin.h +249 -1301
  118. data/dist/ice/cpp/include/generated/Ice/PropertyDict.h +39 -0
  119. data/dist/ice/cpp/include/generated/Ice/RemoteLogger.h +637 -2620
  120. data/dist/ice/cpp/include/generated/Ice/ReplyStatus.h +94 -0
  121. data/dist/ice/cpp/include/generated/Ice/Router.h +429 -1783
  122. data/dist/ice/cpp/include/generated/Ice/SliceChecksumDict.h +18 -65
  123. data/dist/ice/cpp/include/generated/Ice/Version.h +73 -318
  124. data/dist/ice/cpp/include/generated/IceDiscovery/Lookup.h +498 -0
  125. data/dist/ice/cpp/include/generated/IceLocatorDiscovery/Lookup.h +387 -0
  126. data/dist/ice/cpp/src/Ice/Acceptor.h +28 -24
  127. data/dist/ice/cpp/src/Ice/AcceptorF.h +6 -14
  128. data/dist/ice/cpp/src/Ice/AddDefaultPluginFactories.h +16 -0
  129. data/dist/ice/cpp/src/Ice/AddDefaultPluginFactories_all.cpp +43 -0
  130. data/dist/ice/cpp/src/Ice/AddDefaultPluginFactories_min.cpp +17 -0
  131. data/dist/ice/cpp/src/Ice/ArgVector.cpp +17 -18
  132. data/dist/ice/cpp/src/Ice/ArgVector.h +19 -25
  133. data/dist/ice/cpp/src/Ice/Base64.cpp +66 -66
  134. data/dist/ice/cpp/src/Ice/Base64.h +14 -19
  135. data/dist/ice/cpp/src/Ice/BatchRequestQueue.cpp +70 -121
  136. data/dist/ice/cpp/src/Ice/BatchRequestQueue.h +37 -47
  137. data/dist/ice/cpp/src/Ice/Buffer.cpp +73 -41
  138. data/dist/ice/cpp/src/Ice/CheckIdentity.h +21 -0
  139. data/dist/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +215 -249
  140. data/dist/ice/cpp/src/Ice/CollocatedRequestHandler.h +38 -60
  141. data/dist/ice/cpp/src/Ice/Communicator.cpp +399 -0
  142. data/dist/ice/cpp/src/Ice/CommunicatorFlushBatchAsync.cpp +140 -0
  143. data/dist/ice/cpp/src/Ice/CommunicatorFlushBatchAsync.h +39 -0
  144. data/dist/ice/cpp/src/Ice/ConnectRequestHandler.cpp +63 -184
  145. data/dist/ice/cpp/src/Ice/ConnectRequestHandler.h +30 -51
  146. data/dist/ice/cpp/src/Ice/ConnectRequestHandlerF.h +4 -14
  147. data/dist/ice/cpp/src/Ice/Connection.cpp +44 -0
  148. data/dist/ice/cpp/src/Ice/ConnectionFactory.cpp +578 -792
  149. data/dist/ice/cpp/src/Ice/ConnectionFactory.h +200 -200
  150. data/dist/ice/cpp/src/Ice/ConnectionFactoryF.h +6 -19
  151. data/dist/ice/cpp/src/Ice/ConnectionI.cpp +1674 -1782
  152. data/dist/ice/cpp/src/Ice/ConnectionI.h +333 -293
  153. data/dist/ice/cpp/src/Ice/ConnectionOptions.h +22 -0
  154. data/dist/ice/cpp/src/Ice/Connector.h +25 -19
  155. data/dist/ice/cpp/src/Ice/ConnectorF.h +4 -11
  156. data/dist/ice/cpp/src/{IceUtil → Ice}/ConsoleUtil.cpp +32 -53
  157. data/dist/ice/cpp/src/Ice/ConsoleUtil.h +79 -0
  158. data/dist/ice/cpp/src/Ice/CtrlCHandler.cpp +189 -0
  159. data/dist/ice/cpp/src/Ice/Current.cpp +29 -0
  160. data/dist/ice/cpp/src/Ice/DLLMain.cpp +25 -35
  161. data/dist/ice/cpp/src/Ice/DefaultSliceLoader.cpp +39 -0
  162. data/dist/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +41 -119
  163. data/dist/ice/cpp/src/Ice/DefaultsAndOverrides.h +27 -41
  164. data/dist/ice/cpp/src/Ice/DefaultsAndOverridesF.h +4 -11
  165. data/dist/ice/cpp/src/Ice/Demangle.cpp +26 -0
  166. data/dist/ice/cpp/src/Ice/DisableWarnings.h +31 -0
  167. data/dist/ice/cpp/src/Ice/DynamicLibrary.cpp +44 -112
  168. data/dist/ice/cpp/src/Ice/DynamicLibrary.h +91 -0
  169. data/dist/ice/cpp/src/Ice/Endian.h +40 -0
  170. data/dist/ice/cpp/src/Ice/EndpointFactory.cpp +35 -59
  171. data/dist/ice/cpp/src/Ice/EndpointFactory.h +82 -103
  172. data/dist/ice/cpp/src/Ice/EndpointFactoryF.h +4 -11
  173. data/dist/ice/cpp/src/Ice/EndpointFactoryManager.cpp +54 -87
  174. data/dist/ice/cpp/src/Ice/EndpointFactoryManager.h +28 -33
  175. data/dist/ice/cpp/src/Ice/EndpointFactoryManagerF.h +4 -11
  176. data/dist/ice/cpp/src/Ice/EndpointI.cpp +53 -23
  177. data/dist/ice/cpp/src/Ice/EndpointI.h +132 -200
  178. data/dist/ice/cpp/src/Ice/EndpointIF.h +11 -39
  179. data/dist/ice/cpp/src/Ice/EventHandler.cpp +3 -26
  180. data/dist/ice/cpp/src/Ice/EventHandler.h +46 -56
  181. data/dist/ice/cpp/src/Ice/EventHandlerF.h +4 -14
  182. data/dist/ice/cpp/src/Ice/Exception.cpp +3 -816
  183. data/dist/ice/cpp/src/Ice/FileUtil.cpp +476 -0
  184. data/dist/ice/cpp/src/Ice/FileUtil.h +152 -0
  185. data/dist/ice/cpp/src/Ice/FixedRequestHandler.cpp +34 -0
  186. data/dist/ice/cpp/src/Ice/FixedRequestHandler.h +29 -0
  187. data/dist/ice/cpp/src/Ice/HashUtil.h +46 -32
  188. data/dist/ice/cpp/src/Ice/HttpParser.cpp +431 -431
  189. data/dist/ice/cpp/src/Ice/HttpParser.h +95 -100
  190. data/dist/ice/cpp/src/Ice/IPEndpointI.cpp +207 -324
  191. data/dist/ice/cpp/src/Ice/IPEndpointI.h +80 -126
  192. data/dist/ice/cpp/src/Ice/IPEndpointIF.h +6 -17
  193. data/dist/ice/cpp/src/Ice/IdleTimeoutTransceiverDecorator.cpp +172 -0
  194. data/dist/ice/cpp/src/Ice/IdleTimeoutTransceiverDecorator.h +89 -0
  195. data/dist/ice/cpp/src/Ice/ImplicitContext.cpp +109 -0
  196. data/dist/ice/cpp/src/Ice/IncomingRequest.cpp +66 -0
  197. data/dist/ice/cpp/src/Ice/Initialize.cpp +48 -542
  198. data/dist/ice/cpp/src/Ice/InputStream.cpp +848 -1385
  199. data/dist/ice/cpp/src/Ice/Instance.cpp +816 -827
  200. data/dist/ice/cpp/src/Ice/Instance.h +202 -212
  201. data/dist/ice/cpp/src/Ice/InstrumentationI.cpp +526 -661
  202. data/dist/ice/cpp/src/Ice/InstrumentationI.h +171 -192
  203. data/dist/ice/cpp/src/Ice/LocalException.cpp +518 -0
  204. data/dist/ice/cpp/src/Ice/LocalExceptions.cpp +577 -0
  205. data/dist/ice/cpp/src/Ice/LocatorInfo.cpp +291 -329
  206. data/dist/ice/cpp/src/Ice/LocatorInfo.h +144 -157
  207. data/dist/ice/cpp/src/Ice/LocatorInfoF.h +8 -17
  208. data/dist/ice/cpp/src/Ice/LoggerAdminI.cpp +561 -743
  209. data/dist/ice/cpp/src/Ice/LoggerAdminI.h +18 -28
  210. data/dist/ice/cpp/src/Ice/LoggerI.cpp +66 -91
  211. data/dist/ice/cpp/src/Ice/LoggerI.h +36 -41
  212. data/dist/ice/cpp/src/Ice/LoggerMiddleware.cpp +176 -0
  213. data/dist/ice/cpp/src/Ice/LoggerMiddleware.h +42 -0
  214. data/dist/ice/cpp/src/Ice/LoggerUtil.cpp +14 -38
  215. data/dist/ice/cpp/src/Ice/MarshaledResult.cpp +20 -0
  216. data/dist/ice/cpp/src/Ice/MetricsAdminI.cpp +194 -280
  217. data/dist/ice/cpp/src/Ice/MetricsAdminI.h +600 -0
  218. data/dist/ice/cpp/src/Ice/MetricsFunctional.h +92 -0
  219. data/dist/ice/cpp/src/Ice/MetricsObserverI.h +587 -0
  220. data/dist/ice/cpp/src/Ice/NativePropertiesAdmin.cpp +185 -0
  221. data/dist/ice/cpp/src/Ice/Network.cpp +595 -917
  222. data/dist/ice/cpp/src/Ice/Network.h +189 -213
  223. data/dist/ice/cpp/src/Ice/NetworkF.h +2 -10
  224. data/dist/ice/cpp/src/Ice/NetworkProxy.cpp +99 -104
  225. data/dist/ice/cpp/src/Ice/NetworkProxy.h +49 -54
  226. data/dist/ice/cpp/src/Ice/NetworkProxyF.h +4 -11
  227. data/dist/ice/cpp/src/Ice/OSLogLoggerI.cpp +16 -18
  228. data/dist/ice/cpp/src/Ice/OSLogLoggerI.h +22 -27
  229. data/dist/ice/cpp/src/Ice/Object.cpp +152 -338
  230. data/dist/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +170 -113
  231. data/dist/ice/cpp/src/Ice/ObjectAdapterFactory.h +41 -41
  232. data/dist/ice/cpp/src/Ice/ObjectAdapterFactoryF.h +4 -15
  233. data/dist/ice/cpp/src/Ice/ObjectAdapterI.cpp +580 -727
  234. data/dist/ice/cpp/src/Ice/ObjectAdapterI.h +149 -145
  235. data/dist/ice/cpp/src/Ice/ObserverHelper.cpp +36 -17
  236. data/dist/ice/cpp/src/Ice/ObserverMiddleware.cpp +96 -0
  237. data/dist/ice/cpp/src/Ice/ObserverMiddleware.h +25 -0
  238. data/dist/ice/cpp/src/Ice/OpaqueEndpointI.cpp +147 -187
  239. data/dist/ice/cpp/src/Ice/OpaqueEndpointI.h +56 -64
  240. data/dist/ice/cpp/src/{IceUtil → Ice}/Options.cpp +187 -258
  241. data/dist/ice/cpp/src/Ice/Options.h +119 -0
  242. data/dist/ice/cpp/src/Ice/OutgoingAsync.cpp +516 -732
  243. data/dist/ice/cpp/src/Ice/OutgoingResponse.cpp +276 -0
  244. data/dist/ice/cpp/src/Ice/OutputStream.cpp +610 -543
  245. data/dist/ice/cpp/src/Ice/OutputUtil.cpp +344 -0
  246. data/dist/ice/cpp/src/Ice/OutputUtil.h +173 -0
  247. data/dist/ice/cpp/src/Ice/PluginManagerI.cpp +118 -277
  248. data/dist/ice/cpp/src/Ice/PluginManagerI.h +41 -48
  249. data/dist/ice/cpp/src/Ice/Properties.cpp +931 -0
  250. data/dist/ice/cpp/src/Ice/PropertyNames.cpp +519 -1341
  251. data/dist/ice/cpp/src/Ice/PropertyNames.h +49 -64
  252. data/dist/ice/cpp/src/Ice/PropertyUtil.cpp +103 -0
  253. data/dist/ice/cpp/src/Ice/PropertyUtil.h +31 -0
  254. data/dist/ice/cpp/src/Ice/Protocol.cpp +129 -94
  255. data/dist/ice/cpp/src/Ice/Protocol.h +116 -0
  256. data/dist/ice/cpp/src/Ice/ProtocolInstance.cpp +117 -62
  257. data/dist/ice/cpp/src/Ice/ProtocolInstance.h +63 -82
  258. data/dist/ice/cpp/src/Ice/ProtocolInstanceF.h +4 -11
  259. data/dist/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +10 -32
  260. data/dist/ice/cpp/src/Ice/ProtocolPluginFacade.h +25 -54
  261. data/dist/ice/cpp/src/Ice/Proxy.cpp +294 -1357
  262. data/dist/ice/cpp/src/Ice/ProxyAsync.cpp +684 -0
  263. data/dist/ice/cpp/src/Ice/ProxyFunctions.cpp +90 -0
  264. data/dist/ice/cpp/src/Ice/PushDisableDeprecatedWarnings.h +15 -0
  265. data/dist/ice/cpp/src/Ice/Random.cpp +29 -0
  266. data/dist/ice/cpp/src/Ice/Random.h +23 -0
  267. data/dist/ice/cpp/src/Ice/Reference.cpp +635 -1097
  268. data/dist/ice/cpp/src/Ice/Reference.h +314 -298
  269. data/dist/ice/cpp/src/Ice/ReferenceFactory.cpp +320 -378
  270. data/dist/ice/cpp/src/Ice/ReferenceFactory.h +48 -66
  271. data/dist/ice/cpp/src/Ice/ReferenceFactoryF.h +4 -9
  272. data/dist/ice/cpp/src/Ice/RequestHandler.cpp +15 -24
  273. data/dist/ice/cpp/src/Ice/RequestHandler.h +43 -68
  274. data/dist/ice/cpp/src/Ice/RequestHandlerCache.cpp +76 -0
  275. data/dist/ice/cpp/src/Ice/RequestHandlerCache.h +33 -0
  276. data/dist/ice/cpp/src/Ice/ResourceConfig.h +27 -0
  277. data/dist/ice/cpp/src/Ice/RetryQueue.cpp +51 -57
  278. data/dist/ice/cpp/src/Ice/RetryQueue.h +39 -46
  279. data/dist/ice/cpp/src/Ice/RetryQueueF.h +4 -9
  280. data/dist/ice/cpp/src/Ice/RouterInfo.cpp +97 -201
  281. data/dist/ice/cpp/src/Ice/RouterInfo.h +61 -118
  282. data/dist/ice/cpp/src/Ice/RouterInfoF.h +6 -14
  283. data/dist/ice/cpp/src/Ice/SHA1.cpp +86 -60
  284. data/dist/ice/cpp/src/Ice/SHA1.h +35 -0
  285. data/dist/ice/cpp/src/Ice/SSL/DistinguishedName.cpp +89 -0
  286. data/dist/ice/cpp/src/Ice/SSL/DistinguishedName.h +87 -0
  287. data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngine.cpp +521 -0
  288. data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngine.h +40 -0
  289. data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngineF.h +13 -0
  290. data/dist/ice/cpp/src/Ice/SSL/OpenSSLTransceiverI.cpp +646 -0
  291. data/dist/ice/cpp/src/Ice/SSL/OpenSSLTransceiverI.h +80 -0
  292. data/dist/ice/cpp/src/{IceSSL → Ice/SSL}/RFC2253.cpp +85 -88
  293. data/dist/ice/cpp/src/Ice/SSL/RFC2253.h +58 -0
  294. data/dist/ice/cpp/src/Ice/SSL/SSLAcceptorI.cpp +124 -0
  295. data/dist/ice/cpp/src/Ice/SSL/SSLAcceptorI.h +52 -0
  296. data/dist/ice/cpp/src/Ice/SSL/SSLConnectorI.cpp +92 -0
  297. data/dist/ice/cpp/src/Ice/SSL/SSLConnectorI.h +38 -0
  298. data/dist/ice/cpp/src/Ice/SSL/SSLEndpointI.cpp +377 -0
  299. data/dist/ice/cpp/src/Ice/SSL/SSLEndpointI.h +84 -0
  300. data/dist/ice/cpp/src/Ice/SSL/SSLEngine.cpp +115 -0
  301. data/dist/ice/cpp/src/Ice/SSL/SSLEngine.h +69 -0
  302. data/dist/ice/cpp/src/Ice/SSL/SSLEngineF.h +14 -0
  303. data/dist/ice/cpp/src/Ice/SSL/SSLException.cpp +18 -0
  304. data/dist/ice/cpp/src/Ice/SSL/SSLInstance.cpp +27 -0
  305. data/dist/ice/cpp/src/Ice/SSL/SSLInstance.h +26 -0
  306. data/dist/ice/cpp/src/Ice/SSL/SSLInstanceF.h +19 -0
  307. data/dist/ice/cpp/src/Ice/SSL/SSLUtil.cpp +673 -0
  308. data/dist/ice/cpp/src/Ice/SSL/SSLUtil.h +118 -0
  309. data/dist/ice/cpp/src/Ice/SSL/SchannelEngine.cpp +1449 -0
  310. data/dist/ice/cpp/src/Ice/SSL/SchannelEngine.h +58 -0
  311. data/dist/ice/cpp/src/Ice/SSL/SchannelEngineF.h +18 -0
  312. data/dist/ice/cpp/src/Ice/SSL/SchannelTransceiverI.cpp +1088 -0
  313. data/dist/ice/cpp/src/Ice/SSL/SchannelTransceiverI.h +118 -0
  314. data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngine.cpp +825 -0
  315. data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngine.h +44 -0
  316. data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngineF.h +18 -0
  317. data/dist/ice/cpp/src/Ice/SSL/SecureTransportTransceiverI.cpp +621 -0
  318. data/dist/ice/cpp/src/Ice/SSL/SecureTransportTransceiverI.h +91 -0
  319. data/dist/ice/cpp/src/Ice/SSL/SecureTransportUtil.cpp +1048 -0
  320. data/dist/ice/cpp/src/Ice/SSL/SecureTransportUtil.h +40 -0
  321. data/dist/ice/cpp/src/Ice/SSL/TrustManager.cpp +233 -0
  322. data/dist/ice/cpp/src/Ice/SSL/TrustManager.h +42 -0
  323. data/dist/ice/cpp/src/Ice/SSL/TrustManagerF.h +14 -0
  324. data/dist/ice/cpp/src/Ice/ScannerConfig.h +35 -0
  325. data/dist/ice/cpp/src/Ice/Selector.cpp +341 -606
  326. data/dist/ice/cpp/src/Ice/Selector.h +167 -224
  327. data/dist/ice/cpp/src/Ice/ServantManager.cpp +195 -128
  328. data/dist/ice/cpp/src/Ice/ServantManager.h +52 -55
  329. data/dist/ice/cpp/src/Ice/ServantManagerF.h +14 -0
  330. data/dist/ice/cpp/src/Ice/Service.cpp +548 -641
  331. data/dist/ice/cpp/src/Ice/SharedContext.h +13 -26
  332. data/dist/ice/cpp/src/Ice/SliceLoader.cpp +53 -0
  333. data/dist/ice/cpp/src/Ice/SlicedData.cpp +17 -96
  334. data/dist/ice/cpp/src/Ice/StreamSocket.cpp +104 -151
  335. data/dist/ice/cpp/src/Ice/StreamSocket.h +48 -60
  336. data/dist/ice/cpp/src/Ice/StringConverter.cpp +586 -0
  337. data/dist/ice/cpp/src/Ice/StringUtil.cpp +1137 -0
  338. data/dist/ice/cpp/src/Ice/SysLoggerI.cpp +41 -47
  339. data/dist/ice/cpp/src/Ice/SysLoggerI.h +24 -27
  340. data/dist/ice/cpp/src/Ice/SystemdJournalI.cpp +16 -17
  341. data/dist/ice/cpp/src/Ice/SystemdJournalI.h +19 -25
  342. data/dist/ice/cpp/src/Ice/TargetCompare.h +96 -0
  343. data/dist/ice/cpp/src/Ice/TcpAcceptor.cpp +67 -88
  344. data/dist/ice/cpp/src/Ice/TcpAcceptor.h +34 -40
  345. data/dist/ice/cpp/src/Ice/TcpConnector.cpp +42 -41
  346. data/dist/ice/cpp/src/Ice/TcpConnector.h +26 -35
  347. data/dist/ice/cpp/src/Ice/TcpEndpointI.cpp +172 -146
  348. data/dist/ice/cpp/src/Ice/TcpEndpointI.h +76 -80
  349. data/dist/ice/cpp/src/Ice/TcpTransceiver.cpp +38 -26
  350. data/dist/ice/cpp/src/Ice/TcpTransceiver.h +40 -45
  351. data/dist/ice/cpp/src/Ice/ThreadPool.cpp +333 -515
  352. data/dist/ice/cpp/src/Ice/ThreadPool.h +202 -290
  353. data/dist/ice/cpp/src/Ice/ThreadPoolF.h +14 -0
  354. data/dist/ice/cpp/src/Ice/TimeUtil.cpp +47 -0
  355. data/dist/ice/cpp/src/Ice/TimeUtil.h +21 -0
  356. data/dist/ice/cpp/src/Ice/Timer.cpp +73 -167
  357. data/dist/ice/cpp/src/Ice/Timer.h +212 -0
  358. data/dist/ice/cpp/src/Ice/TraceLevels.cpp +11 -29
  359. data/dist/ice/cpp/src/Ice/TraceLevels.h +22 -28
  360. data/dist/ice/cpp/src/Ice/TraceLevelsF.h +4 -11
  361. data/dist/ice/cpp/src/Ice/TraceUtil.cpp +136 -215
  362. data/dist/ice/cpp/src/Ice/TraceUtil.h +27 -16
  363. data/dist/ice/cpp/src/Ice/Transceiver.cpp +3 -7
  364. data/dist/ice/cpp/src/Ice/Transceiver.h +35 -32
  365. data/dist/ice/cpp/src/Ice/TransceiverF.h +10 -20
  366. data/dist/ice/cpp/src/Ice/UUID.cpp +79 -0
  367. data/dist/ice/cpp/src/Ice/UdpConnector.cpp +39 -39
  368. data/dist/ice/cpp/src/Ice/UdpConnector.h +27 -36
  369. data/dist/ice/cpp/src/Ice/UdpEndpointI.cpp +178 -213
  370. data/dist/ice/cpp/src/Ice/UdpEndpointI.h +82 -85
  371. data/dist/ice/cpp/src/Ice/UdpTransceiver.cpp +201 -221
  372. data/dist/ice/cpp/src/Ice/UdpTransceiver.h +68 -74
  373. data/dist/ice/cpp/{include/IceUtil → src/Ice}/UndefSysMacros.h +12 -12
  374. data/dist/ice/cpp/src/Ice/UniqueRef.h +77 -0
  375. data/dist/ice/cpp/src/Ice/UserException.cpp +58 -0
  376. data/dist/ice/cpp/src/Ice/Value.cpp +107 -38
  377. data/dist/ice/cpp/src/Ice/WSAcceptor.cpp +10 -15
  378. data/dist/ice/cpp/src/Ice/WSAcceptor.h +31 -37
  379. data/dist/ice/cpp/src/Ice/WSConnector.cpp +25 -40
  380. data/dist/ice/cpp/src/Ice/WSConnector.h +26 -33
  381. data/dist/ice/cpp/src/Ice/WSEndpoint.cpp +164 -217
  382. data/dist/ice/cpp/src/Ice/WSEndpoint.h +72 -83
  383. data/dist/ice/cpp/src/Ice/WSTransceiver.cpp +469 -458
  384. data/dist/ice/cpp/src/Ice/WSTransceiver.h +117 -123
  385. data/dist/ice/cpp/src/Ice/generated/BuiltinSequences.cpp +20 -29
  386. data/dist/ice/cpp/src/Ice/generated/Context.cpp +40 -0
  387. data/dist/ice/cpp/src/Ice/generated/EndpointTypes.cpp +20 -31
  388. data/dist/ice/cpp/src/Ice/generated/Identity.cpp +24 -34
  389. data/dist/ice/cpp/src/Ice/generated/Locator.cpp +454 -1744
  390. data/dist/ice/cpp/src/Ice/generated/LocatorRegistry.cpp +577 -0
  391. data/dist/ice/cpp/src/Ice/generated/Metrics.cpp +824 -1971
  392. data/dist/ice/cpp/src/Ice/generated/OperationMode.cpp +56 -0
  393. data/dist/ice/cpp/src/Ice/generated/Process.cpp +190 -331
  394. data/dist/ice/cpp/src/Ice/generated/PropertiesAdmin.cpp +289 -449
  395. data/dist/ice/cpp/src/Ice/generated/PropertyDict.cpp +40 -0
  396. data/dist/ice/cpp/src/Ice/generated/RemoteLogger.cpp +547 -867
  397. data/dist/ice/cpp/src/Ice/generated/ReplyStatus.cpp +70 -0
  398. data/dist/ice/cpp/src/Ice/generated/Router.cpp +406 -723
  399. data/dist/ice/cpp/src/Ice/generated/SliceChecksumDict.cpp +19 -29
  400. data/dist/ice/cpp/src/Ice/generated/Version.cpp +28 -31
  401. data/dist/ice/cpp/src/IceDiscovery/LocatorI.cpp +76 -139
  402. data/dist/ice/cpp/src/IceDiscovery/LocatorI.h +55 -96
  403. data/dist/ice/cpp/src/IceDiscovery/LookupI.cpp +190 -303
  404. data/dist/ice/cpp/src/IceDiscovery/LookupI.h +126 -185
  405. data/dist/ice/cpp/src/IceDiscovery/PluginI.cpp +56 -77
  406. data/dist/ice/cpp/src/IceDiscovery/PluginI.h +20 -25
  407. data/dist/ice/cpp/src/IceDiscovery/generated/Lookup.cpp +638 -0
  408. data/dist/ice/cpp/src/IceLocatorDiscovery/Plugin.h +14 -37
  409. data/dist/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +411 -649
  410. data/dist/ice/cpp/src/IceLocatorDiscovery/generated/Lookup.cpp +468 -0
  411. data/dist/ice/cpp/src/Slice/DeprecationReporter.cpp +172 -0
  412. data/dist/ice/cpp/src/Slice/DeprecationReporter.h +14 -0
  413. data/dist/ice/cpp/src/Slice/DocCommentParser.cpp +736 -0
  414. data/dist/ice/cpp/src/Slice/DocCommentParser.h +61 -0
  415. data/dist/ice/cpp/src/Slice/FileTracker.cpp +25 -75
  416. data/dist/ice/cpp/src/Slice/FileTracker.h +35 -56
  417. data/dist/ice/cpp/src/Slice/Grammar.cpp +2711 -3382
  418. data/dist/ice/cpp/src/Slice/Grammar.h +95 -75
  419. data/dist/ice/cpp/src/Slice/GrammarUtil.h +117 -217
  420. data/dist/ice/cpp/src/Slice/MetadataValidation.cpp +486 -0
  421. data/dist/ice/cpp/src/Slice/MetadataValidation.h +106 -0
  422. data/dist/ice/cpp/src/Slice/Parser.cpp +3068 -5223
  423. data/dist/ice/cpp/src/Slice/Parser.h +1086 -1065
  424. data/dist/ice/cpp/src/Slice/Preprocessor.cpp +97 -599
  425. data/dist/ice/cpp/src/Slice/Preprocessor.h +26 -42
  426. data/dist/ice/cpp/src/Slice/Scanner.cpp +1562 -924
  427. data/dist/ice/cpp/src/Slice/SliceUtil.cpp +517 -113
  428. data/dist/ice/cpp/src/Slice/StringLiteralUtil.cpp +254 -269
  429. data/dist/ice/cpp/src/Slice/Util.h +126 -35
  430. data/dist/ice/cpp/src/slice2rb/Main.cpp +13 -15
  431. data/dist/ice/cpp/src/slice2rb/Ruby.cpp +250 -0
  432. data/dist/ice/cpp/src/slice2rb/RubyUtil.cpp +1197 -0
  433. data/dist/ice/cpp/src/slice2rb/RubyUtil.h +56 -0
  434. data/dist/ice/slice/Glacier2/Metrics.ice +34 -75
  435. data/dist/ice/slice/Glacier2/PermissionsVerifier.ice +42 -98
  436. data/dist/ice/slice/Glacier2/Router.ice +80 -173
  437. data/dist/ice/slice/Glacier2/SSLInfo.ice +23 -40
  438. data/dist/ice/slice/Glacier2/Session.ice +120 -261
  439. data/dist/ice/slice/Ice/BuiltinSequences.ice +33 -38
  440. data/dist/ice/slice/Ice/Context.ice +24 -0
  441. data/dist/ice/slice/Ice/EndpointTypes.ice +35 -33
  442. data/dist/ice/slice/Ice/Identity.ice +24 -63
  443. data/dist/ice/slice/Ice/Locator.ice +61 -226
  444. data/dist/ice/slice/Ice/LocatorRegistry.ice +77 -0
  445. data/dist/ice/slice/Ice/Metrics.ice +189 -424
  446. data/dist/ice/slice/Ice/OperationMode.ice +38 -0
  447. data/dist/ice/slice/Ice/Process.ice +16 -52
  448. data/dist/ice/slice/Ice/PropertiesAdmin.ice +25 -75
  449. data/dist/ice/slice/Ice/PropertyDict.ice +23 -0
  450. data/dist/ice/slice/Ice/RemoteLogger.ice +113 -213
  451. data/dist/ice/slice/Ice/ReplyStatus.ice +65 -0
  452. data/dist/ice/slice/Ice/Router.ice +42 -91
  453. data/dist/ice/slice/Ice/SliceChecksumDict.ice +7 -25
  454. data/dist/ice/slice/Ice/Version.ice +31 -39
  455. data/dist/ice/slice/IceBox/ServiceManager.ice +79 -0
  456. data/dist/ice/slice/IceGrid/Admin.ice +942 -1918
  457. data/dist/ice/slice/IceGrid/Descriptor.ice +476 -1051
  458. data/dist/ice/slice/IceGrid/Exception.ice +86 -384
  459. data/dist/ice/slice/IceGrid/FileParser.ice +23 -59
  460. data/dist/ice/slice/IceGrid/Registry.ice +117 -256
  461. data/dist/ice/slice/IceGrid/Session.ice +46 -110
  462. data/dist/ice/slice/IceGrid/UserAccountMapper.ice +22 -57
  463. data/dist/ice/slice/IceStorm/IceStorm.ice +173 -401
  464. data/dist/ice/slice/IceStorm/Metrics.ice +28 -70
  465. data/dist/lib/Glacier2/Metrics.rb +16 -31
  466. data/dist/lib/Glacier2/PermissionsVerifier.rb +18 -50
  467. data/dist/lib/Glacier2/Router.rb +20 -42
  468. data/dist/lib/Glacier2/SSLInfo.rb +14 -22
  469. data/dist/lib/Glacier2/Session.rb +53 -113
  470. data/dist/lib/Glacier2.rb +6 -6
  471. data/dist/lib/Ice/BuiltinSequences.rb +14 -26
  472. data/dist/lib/Ice/CompressBatch.rb +50 -0
  473. data/dist/lib/Ice/Context.rb +12 -0
  474. data/dist/lib/Ice/EndpointSelectionType.rb +49 -0
  475. data/dist/lib/Ice/EndpointTypes.rb +14 -55
  476. data/dist/lib/Ice/Exception.rb +20 -0
  477. data/dist/lib/Ice/Identity.rb +10 -26
  478. data/dist/lib/Ice/IdentitySpaceship.rb +16 -0
  479. data/dist/lib/Ice/InitializationData.rb +12 -0
  480. data/dist/lib/Ice/LocalExceptions.rb +168 -0
  481. data/dist/lib/Ice/Locator.rb +21 -134
  482. data/dist/lib/Ice/LocatorRegistry.rb +73 -0
  483. data/dist/lib/Ice/Metrics.rb +85 -132
  484. data/dist/lib/Ice/OperationMode.rb +58 -0
  485. data/dist/lib/Ice/Process.rb +12 -31
  486. data/dist/lib/Ice/PropertiesAdmin.rb +12 -36
  487. data/dist/lib/Ice/PropertyDict.rb +12 -0
  488. data/dist/lib/Ice/Proxy.rb +85 -0
  489. data/dist/lib/Ice/ProxyFunctions.rb +69 -0
  490. data/dist/lib/Ice/RemoteLogger.rb +29 -60
  491. data/dist/lib/Ice/ReplyStatus.rb +65 -0
  492. data/dist/lib/Ice/Router.rb +19 -47
  493. data/dist/lib/Ice/SliceChecksumDict.rb +5 -17
  494. data/dist/lib/Ice/SliceUtil.rb +41 -0
  495. data/dist/lib/Ice/Struct.rb +11 -0
  496. data/dist/lib/Ice/ToStringMode.rb +50 -0
  497. data/dist/lib/Ice/Value.rb +93 -0
  498. data/dist/lib/Ice/Version.rb +12 -24
  499. data/dist/lib/Ice.rb +29 -665
  500. data/dist/lib/IceBox/ServiceManager.rb +104 -0
  501. data/dist/lib/IceBox.rb +2 -4
  502. data/dist/lib/IceGrid/Admin.rb +303 -291
  503. data/dist/lib/IceGrid/Descriptor.rb +147 -192
  504. data/dist/lib/IceGrid/Exception.rb +26 -257
  505. data/dist/lib/IceGrid/FileParser.rb +12 -36
  506. data/dist/lib/IceGrid/Registry.rb +35 -76
  507. data/dist/lib/IceGrid/Session.rb +19 -34
  508. data/dist/lib/IceGrid/UserAccountMapper.rb +11 -34
  509. data/dist/lib/IceGrid.rb +3 -3
  510. data/dist/lib/IceStorm/IceStorm.rb +51 -132
  511. data/dist/lib/IceStorm/Metrics.rb +19 -37
  512. data/dist/lib/IceStorm.rb +3 -5
  513. data/extconf.rb +6 -8
  514. data/ice.gemspec +3 -3
  515. data/scripts/slice2rb +1 -3
  516. metadata +206 -386
  517. data/dist/IceRuby/ValueFactoryManager.cpp +0 -445
  518. data/dist/IceRuby/ValueFactoryManager.h +0 -95
  519. data/dist/ice/cpp/include/Ice/Application.h +0 -326
  520. data/dist/ice/cpp/include/Ice/AsyncResult.h +0 -155
  521. data/dist/ice/cpp/include/Ice/AsyncResultF.h +0 -23
  522. data/dist/ice/cpp/include/Ice/BatchRequestInterceptor.h +0 -75
  523. data/dist/ice/cpp/include/Ice/CommunicatorAsync.h +0 -154
  524. data/dist/ice/cpp/include/Ice/Comparable.h +0 -205
  525. data/dist/ice/cpp/include/Ice/ConnectionAsync.h +0 -302
  526. data/dist/ice/cpp/include/Ice/ConsoleUtil.h +0 -23
  527. data/dist/ice/cpp/include/Ice/DefaultValueFactory.h +0 -57
  528. data/dist/ice/cpp/include/Ice/DispatchInterceptor.h +0 -41
  529. data/dist/ice/cpp/include/Ice/Dispatcher.h +0 -67
  530. data/dist/ice/cpp/include/Ice/DynamicLibrary.h +0 -102
  531. data/dist/ice/cpp/include/Ice/DynamicLibraryF.h +0 -24
  532. data/dist/ice/cpp/include/Ice/ExceptionHelpers.h +0 -74
  533. data/dist/ice/cpp/include/Ice/FactoryTable.h +0 -73
  534. data/dist/ice/cpp/include/Ice/FactoryTableInit.h +0 -84
  535. data/dist/ice/cpp/include/Ice/Functional.h +0 -140
  536. data/dist/ice/cpp/include/Ice/GCObject.h +0 -76
  537. data/dist/ice/cpp/include/Ice/Handle.h +0 -182
  538. data/dist/ice/cpp/include/Ice/Incoming.h +0 -225
  539. data/dist/ice/cpp/include/Ice/IncomingAsync.h +0 -186
  540. data/dist/ice/cpp/include/Ice/IncomingAsyncF.h +0 -36
  541. data/dist/ice/cpp/include/Ice/InterfaceByValue.h +0 -57
  542. data/dist/ice/cpp/include/Ice/LocalObject.h +0 -35
  543. data/dist/ice/cpp/include/Ice/LocalObjectF.h +0 -21
  544. data/dist/ice/cpp/include/Ice/MetricsAdminI.h +0 -715
  545. data/dist/ice/cpp/include/Ice/MetricsFunctional.h +0 -159
  546. data/dist/ice/cpp/include/Ice/MetricsObserverI.h +0 -669
  547. data/dist/ice/cpp/include/Ice/Optional.h +0 -1114
  548. data/dist/ice/cpp/include/Ice/OutgoingAsyncF.h +0 -39
  549. data/dist/ice/cpp/include/Ice/Protocol.h +0 -274
  550. data/dist/ice/cpp/include/Ice/ProxyFactoryF.h +0 -21
  551. data/dist/ice/cpp/include/Ice/ProxyHandle.h +0 -318
  552. data/dist/ice/cpp/include/Ice/RegisterPlugins.h +0 -127
  553. data/dist/ice/cpp/include/Ice/ResponseHandlerF.h +0 -25
  554. data/dist/ice/cpp/include/Ice/SHA1.h +0 -40
  555. data/dist/ice/cpp/include/Ice/ServantManagerF.h +0 -21
  556. data/dist/ice/cpp/include/Ice/SliceChecksums.h +0 -33
  557. data/dist/ice/cpp/include/Ice/ThreadPoolF.h +0 -23
  558. data/dist/ice/cpp/include/Ice/UniquePtr.h +0 -95
  559. data/dist/ice/cpp/include/Ice/UniqueRef.h +0 -97
  560. data/dist/ice/cpp/include/IceSSL/Config.h +0 -21
  561. data/dist/ice/cpp/include/IceSSL/IceSSL.h +0 -24
  562. data/dist/ice/cpp/include/IceSSL/OpenSSL.h +0 -147
  563. data/dist/ice/cpp/include/IceSSL/Plugin.h +0 -712
  564. data/dist/ice/cpp/include/IceSSL/SChannel.h +0 -72
  565. data/dist/ice/cpp/include/IceSSL/SecureTransport.h +0 -72
  566. data/dist/ice/cpp/include/IceUtil/Atomic.h +0 -179
  567. data/dist/ice/cpp/include/IceUtil/Cond.h +0 -317
  568. data/dist/ice/cpp/include/IceUtil/Config.h +0 -392
  569. data/dist/ice/cpp/include/IceUtil/ConsoleUtil.h +0 -92
  570. data/dist/ice/cpp/include/IceUtil/CountDownLatch.h +0 -45
  571. data/dist/ice/cpp/include/IceUtil/CtrlCHandler.h +0 -96
  572. data/dist/ice/cpp/include/IceUtil/DisableWarnings.h +0 -44
  573. data/dist/ice/cpp/include/IceUtil/Exception.h +0 -394
  574. data/dist/ice/cpp/include/IceUtil/FileUtil.h +0 -140
  575. data/dist/ice/cpp/include/IceUtil/Functional.h +0 -389
  576. data/dist/ice/cpp/include/IceUtil/Handle.h +0 -261
  577. data/dist/ice/cpp/include/IceUtil/IceUtil.h +0 -40
  578. data/dist/ice/cpp/include/IceUtil/InputUtil.h +0 -42
  579. data/dist/ice/cpp/include/IceUtil/Iterator.h +0 -31
  580. data/dist/ice/cpp/include/IceUtil/Lock.h +0 -128
  581. data/dist/ice/cpp/include/IceUtil/Monitor.h +0 -243
  582. data/dist/ice/cpp/include/IceUtil/Mutex.h +0 -349
  583. data/dist/ice/cpp/include/IceUtil/MutexProtocol.h +0 -23
  584. data/dist/ice/cpp/include/IceUtil/MutexPtrLock.h +0 -78
  585. data/dist/ice/cpp/include/IceUtil/MutexPtrTryLock.h +0 -77
  586. data/dist/ice/cpp/include/IceUtil/Optional.h +0 -433
  587. data/dist/ice/cpp/include/IceUtil/Options.h +0 -135
  588. data/dist/ice/cpp/include/IceUtil/OutputUtil.h +0 -383
  589. data/dist/ice/cpp/include/IceUtil/PushDisableWarnings.h +0 -33
  590. data/dist/ice/cpp/include/IceUtil/Random.h +0 -55
  591. data/dist/ice/cpp/include/IceUtil/RecMutex.h +0 -107
  592. data/dist/ice/cpp/include/IceUtil/ResourceConfig.h +0 -37
  593. data/dist/ice/cpp/include/IceUtil/ScannerConfig.h +0 -40
  594. data/dist/ice/cpp/include/IceUtil/ScopedArray.h +0 -98
  595. data/dist/ice/cpp/include/IceUtil/Shared.h +0 -127
  596. data/dist/ice/cpp/include/IceUtil/StopWatch.h +0 -49
  597. data/dist/ice/cpp/include/IceUtil/StringConverter.h +0 -195
  598. data/dist/ice/cpp/include/IceUtil/StringUtil.h +0 -97
  599. data/dist/ice/cpp/include/IceUtil/Thread.h +0 -160
  600. data/dist/ice/cpp/include/IceUtil/ThreadException.h +0 -94
  601. data/dist/ice/cpp/include/IceUtil/Time.h +0 -205
  602. data/dist/ice/cpp/include/IceUtil/Timer.h +0 -153
  603. data/dist/ice/cpp/include/IceUtil/UUID.h +0 -21
  604. data/dist/ice/cpp/include/generated/Glacier2/Metrics.h +0 -475
  605. data/dist/ice/cpp/include/generated/Glacier2/PermissionsVerifier.h +0 -1430
  606. data/dist/ice/cpp/include/generated/Glacier2/PermissionsVerifierF.h +0 -147
  607. data/dist/ice/cpp/include/generated/Glacier2/Router.h +0 -3260
  608. data/dist/ice/cpp/include/generated/Glacier2/RouterF.h +0 -125
  609. data/dist/ice/cpp/include/generated/Glacier2/SSLInfo.h +0 -223
  610. data/dist/ice/cpp/include/generated/Glacier2/Session.h +0 -5894
  611. data/dist/ice/cpp/include/generated/Ice/Communicator.h +0 -1162
  612. data/dist/ice/cpp/include/generated/Ice/CommunicatorF.h +0 -101
  613. data/dist/ice/cpp/include/generated/Ice/Connection.h +0 -1703
  614. data/dist/ice/cpp/include/generated/Ice/ConnectionF.h +0 -119
  615. data/dist/ice/cpp/include/generated/Ice/Current.h +0 -322
  616. data/dist/ice/cpp/include/generated/Ice/Endpoint.h +0 -979
  617. data/dist/ice/cpp/include/generated/Ice/EndpointF.h +0 -166
  618. data/dist/ice/cpp/include/generated/Ice/FacetMap.h +0 -80
  619. data/dist/ice/cpp/include/generated/Ice/ImplicitContext.h +0 -284
  620. data/dist/ice/cpp/include/generated/Ice/ImplicitContextF.h +0 -101
  621. data/dist/ice/cpp/include/generated/Ice/Instrumentation.h +0 -1203
  622. data/dist/ice/cpp/include/generated/Ice/InstrumentationF.h +0 -128
  623. data/dist/ice/cpp/include/generated/Ice/LocalException.h +0 -7437
  624. data/dist/ice/cpp/include/generated/Ice/LocatorF.h +0 -147
  625. data/dist/ice/cpp/include/generated/Ice/Logger.h +0 -237
  626. data/dist/ice/cpp/include/generated/Ice/LoggerF.h +0 -101
  627. data/dist/ice/cpp/include/generated/Ice/ObjectAdapter.h +0 -1181
  628. data/dist/ice/cpp/include/generated/Ice/ObjectAdapterF.h +0 -101
  629. data/dist/ice/cpp/include/generated/Ice/ObjectFactory.h +0 -203
  630. data/dist/ice/cpp/include/generated/Ice/Plugin.h +0 -318
  631. data/dist/ice/cpp/include/generated/Ice/PluginF.h +0 -110
  632. data/dist/ice/cpp/include/generated/Ice/ProcessF.h +0 -125
  633. data/dist/ice/cpp/include/generated/Ice/Properties.h +0 -452
  634. data/dist/ice/cpp/include/generated/Ice/PropertiesF.h +0 -134
  635. data/dist/ice/cpp/include/generated/Ice/RouterF.h +0 -125
  636. data/dist/ice/cpp/include/generated/Ice/ServantLocator.h +0 -305
  637. data/dist/ice/cpp/include/generated/Ice/ServantLocatorF.h +0 -101
  638. data/dist/ice/cpp/include/generated/Ice/ValueFactory.h +0 -330
  639. data/dist/ice/cpp/include/generated/IceBox/IceBox.h +0 -3269
  640. data/dist/ice/cpp/include/generated/IceGrid/Admin.h +0 -33773
  641. data/dist/ice/cpp/include/generated/IceGrid/Descriptor.h +0 -5254
  642. data/dist/ice/cpp/include/generated/IceGrid/Exception.h +0 -2834
  643. data/dist/ice/cpp/include/generated/IceGrid/FileParser.h +0 -824
  644. data/dist/ice/cpp/include/generated/IceGrid/PluginFacade.h +0 -635
  645. data/dist/ice/cpp/include/generated/IceGrid/Registry.h +0 -5089
  646. data/dist/ice/cpp/include/generated/IceGrid/Session.h +0 -2240
  647. data/dist/ice/cpp/include/generated/IceGrid/UserAccountMapper.h +0 -800
  648. data/dist/ice/cpp/include/generated/IcePatch2/FileInfo.h +0 -325
  649. data/dist/ice/cpp/include/generated/IcePatch2/FileServer.h +0 -2891
  650. data/dist/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +0 -228
  651. data/dist/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +0 -101
  652. data/dist/ice/cpp/include/generated/IceSSL/EndpointInfo.h +0 -186
  653. data/dist/ice/cpp/include/generated/IceStorm/IceStorm.h +0 -6627
  654. data/dist/ice/cpp/include/generated/IceStorm/Metrics.h +0 -665
  655. data/dist/ice/cpp/src/Ice/ACM.cpp +0 -380
  656. data/dist/ice/cpp/src/Ice/ACM.h +0 -119
  657. data/dist/ice/cpp/src/Ice/ACMF.h +0 -30
  658. data/dist/ice/cpp/src/Ice/Acceptor.cpp +0 -16
  659. data/dist/ice/cpp/src/Ice/Application.cpp +0 -661
  660. data/dist/ice/cpp/src/Ice/AsyncResult.cpp +0 -70
  661. data/dist/ice/cpp/src/Ice/CommunicatorI.cpp +0 -586
  662. data/dist/ice/cpp/src/Ice/CommunicatorI.h +0 -167
  663. data/dist/ice/cpp/src/Ice/Cond.cpp +0 -381
  664. data/dist/ice/cpp/src/Ice/ConnectionRequestHandler.cpp +0 -73
  665. data/dist/ice/cpp/src/Ice/ConnectionRequestHandler.h +0 -41
  666. data/dist/ice/cpp/src/Ice/Connector.cpp +0 -16
  667. data/dist/ice/cpp/src/Ice/CountDownLatch.cpp +0 -171
  668. data/dist/ice/cpp/src/Ice/DispatchInterceptor.cpp +0 -37
  669. data/dist/ice/cpp/src/Ice/FactoryTable.cpp +0 -162
  670. data/dist/ice/cpp/src/Ice/FactoryTableInit.cpp +0 -88
  671. data/dist/ice/cpp/src/Ice/GCObject.cpp +0 -442
  672. data/dist/ice/cpp/src/Ice/IconvStringConverter.cpp +0 -51
  673. data/dist/ice/cpp/src/Ice/ImplicitContextI.cpp +0 -655
  674. data/dist/ice/cpp/src/Ice/ImplicitContextI.h +0 -48
  675. data/dist/ice/cpp/src/Ice/Incoming.cpp +0 -795
  676. data/dist/ice/cpp/src/Ice/IncomingAsync.cpp +0 -230
  677. data/dist/ice/cpp/src/Ice/IncomingRequest.h +0 -33
  678. data/dist/ice/cpp/src/Ice/LocalObject.cpp +0 -23
  679. data/dist/ice/cpp/src/Ice/MetricsObserverI.cpp +0 -8
  680. data/dist/ice/cpp/src/Ice/PropertiesAdminI.cpp +0 -265
  681. data/dist/ice/cpp/src/Ice/PropertiesAdminI.h +0 -64
  682. data/dist/ice/cpp/src/Ice/PropertiesI.cpp +0 -739
  683. data/dist/ice/cpp/src/Ice/PropertiesI.h +0 -70
  684. data/dist/ice/cpp/src/Ice/ProtocolPluginFacadeF.h +0 -21
  685. data/dist/ice/cpp/src/Ice/ProxyFactory.cpp +0 -300
  686. data/dist/ice/cpp/src/Ice/ProxyFactory.h +0 -57
  687. data/dist/ice/cpp/src/Ice/RegisterPluginsInit.cpp +0 -38
  688. data/dist/ice/cpp/src/Ice/RegisterPluginsInit.h +0 -20
  689. data/dist/ice/cpp/src/Ice/ReplyStatus.h +0 -24
  690. data/dist/ice/cpp/src/Ice/RequestHandlerFactory.cpp +0 -77
  691. data/dist/ice/cpp/src/Ice/RequestHandlerFactory.h +0 -37
  692. data/dist/ice/cpp/src/Ice/ResponseHandler.cpp +0 -12
  693. data/dist/ice/cpp/src/Ice/ResponseHandler.h +0 -43
  694. data/dist/ice/cpp/src/Ice/SliceChecksums.cpp +0 -75
  695. data/dist/ice/cpp/src/Ice/StringConverterPlugin.cpp +0 -192
  696. data/dist/ice/cpp/src/Ice/StringUtil.h +0 -30
  697. data/dist/ice/cpp/src/Ice/Thread.cpp +0 -569
  698. data/dist/ice/cpp/src/Ice/ValueFactoryManagerI.cpp +0 -61
  699. data/dist/ice/cpp/src/Ice/ValueFactoryManagerI.h +0 -37
  700. data/dist/ice/cpp/src/Ice/VirtualShared.h +0 -38
  701. data/dist/ice/cpp/src/Ice/generated/Communicator.cpp +0 -79
  702. data/dist/ice/cpp/src/Ice/generated/CommunicatorF.cpp +0 -61
  703. data/dist/ice/cpp/src/Ice/generated/Connection.cpp +0 -155
  704. data/dist/ice/cpp/src/Ice/generated/ConnectionF.cpp +0 -61
  705. data/dist/ice/cpp/src/Ice/generated/Current.cpp +0 -62
  706. data/dist/ice/cpp/src/Ice/generated/Endpoint.cpp +0 -147
  707. data/dist/ice/cpp/src/Ice/generated/EndpointF.cpp +0 -61
  708. data/dist/ice/cpp/src/Ice/generated/FacetMap.cpp +0 -49
  709. data/dist/ice/cpp/src/Ice/generated/ImplicitContext.cpp +0 -75
  710. data/dist/ice/cpp/src/Ice/generated/ImplicitContextF.cpp +0 -61
  711. data/dist/ice/cpp/src/Ice/generated/Instrumentation.cpp +0 -188
  712. data/dist/ice/cpp/src/Ice/generated/InstrumentationF.cpp +0 -66
  713. data/dist/ice/cpp/src/Ice/generated/LocalException.cpp +0 -3262
  714. data/dist/ice/cpp/src/Ice/generated/LocatorF.cpp +0 -63
  715. data/dist/ice/cpp/src/Ice/generated/Logger.cpp +0 -73
  716. data/dist/ice/cpp/src/Ice/generated/LoggerF.cpp +0 -61
  717. data/dist/ice/cpp/src/Ice/generated/ObjectAdapter.cpp +0 -79
  718. data/dist/ice/cpp/src/Ice/generated/ObjectAdapterF.cpp +0 -61
  719. data/dist/ice/cpp/src/Ice/generated/ObjectFactory.cpp +0 -75
  720. data/dist/ice/cpp/src/Ice/generated/Plugin.cpp +0 -87
  721. data/dist/ice/cpp/src/Ice/generated/PluginF.cpp +0 -61
  722. data/dist/ice/cpp/src/Ice/generated/ProcessF.cpp +0 -63
  723. data/dist/ice/cpp/src/Ice/generated/Properties.cpp +0 -78
  724. data/dist/ice/cpp/src/Ice/generated/PropertiesF.cpp +0 -63
  725. data/dist/ice/cpp/src/Ice/generated/RouterF.cpp +0 -63
  726. data/dist/ice/cpp/src/Ice/generated/ServantLocator.cpp +0 -75
  727. data/dist/ice/cpp/src/Ice/generated/ServantLocatorF.cpp +0 -61
  728. data/dist/ice/cpp/src/Ice/generated/ValueFactory.cpp +0 -83
  729. data/dist/ice/cpp/src/Ice/ios/StreamAcceptor.cpp +0 -154
  730. data/dist/ice/cpp/src/Ice/ios/StreamAcceptor.h +0 -49
  731. data/dist/ice/cpp/src/Ice/ios/StreamConnector.cpp +0 -146
  732. data/dist/ice/cpp/src/Ice/ios/StreamConnector.h +0 -52
  733. data/dist/ice/cpp/src/Ice/ios/StreamEndpointI.cpp +0 -477
  734. data/dist/ice/cpp/src/Ice/ios/StreamEndpointI.h +0 -156
  735. data/dist/ice/cpp/src/Ice/ios/StreamTransceiver.cpp +0 -570
  736. data/dist/ice/cpp/src/Ice/ios/StreamTransceiver.h +0 -93
  737. data/dist/ice/cpp/src/IceDiscovery/generated/IceDiscovery/IceDiscovery.h +0 -1889
  738. data/dist/ice/cpp/src/IceDiscovery/generated/IceDiscovery.cpp +0 -915
  739. data/dist/ice/cpp/src/IceLocatorDiscovery/generated/IceLocatorDiscovery/IceLocatorDiscovery.h +0 -1197
  740. data/dist/ice/cpp/src/IceLocatorDiscovery/generated/IceLocatorDiscovery.cpp +0 -730
  741. data/dist/ice/cpp/src/IceSSL/AcceptorI.cpp +0 -105
  742. data/dist/ice/cpp/src/IceSSL/AcceptorI.h +0 -52
  743. data/dist/ice/cpp/src/IceSSL/CertificateI.cpp +0 -301
  744. data/dist/ice/cpp/src/IceSSL/CertificateI.h +0 -64
  745. data/dist/ice/cpp/src/IceSSL/ConnectorI.cpp +0 -102
  746. data/dist/ice/cpp/src/IceSSL/ConnectorI.h +0 -44
  747. data/dist/ice/cpp/src/IceSSL/EndpointI.cpp +0 -372
  748. data/dist/ice/cpp/src/IceSSL/EndpointI.h +0 -100
  749. data/dist/ice/cpp/src/IceSSL/Instance.cpp +0 -28
  750. data/dist/ice/cpp/src/IceSSL/Instance.h +0 -37
  751. data/dist/ice/cpp/src/IceSSL/InstanceF.h +0 -33
  752. data/dist/ice/cpp/src/IceSSL/OpenSSLCertificateI.cpp +0 -688
  753. data/dist/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +0 -1147
  754. data/dist/ice/cpp/src/IceSSL/OpenSSLEngine.h +0 -59
  755. data/dist/ice/cpp/src/IceSSL/OpenSSLEngineF.h +0 -27
  756. data/dist/ice/cpp/src/IceSSL/OpenSSLPluginI.cpp +0 -127
  757. data/dist/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +0 -1092
  758. data/dist/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +0 -90
  759. data/dist/ice/cpp/src/IceSSL/OpenSSLUtil.cpp +0 -288
  760. data/dist/ice/cpp/src/IceSSL/OpenSSLUtil.h +0 -58
  761. data/dist/ice/cpp/src/IceSSL/PluginI.cpp +0 -246
  762. data/dist/ice/cpp/src/IceSSL/PluginI.h +0 -67
  763. data/dist/ice/cpp/src/IceSSL/RFC2253.h +0 -62
  764. data/dist/ice/cpp/src/IceSSL/SChannelCertificateI.cpp +0 -721
  765. data/dist/ice/cpp/src/IceSSL/SChannelEngine.cpp +0 -1283
  766. data/dist/ice/cpp/src/IceSSL/SChannelEngine.h +0 -123
  767. data/dist/ice/cpp/src/IceSSL/SChannelEngineF.h +0 -31
  768. data/dist/ice/cpp/src/IceSSL/SChannelPluginI.cpp +0 -73
  769. data/dist/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +0 -1174
  770. data/dist/ice/cpp/src/IceSSL/SChannelTransceiverI.h +0 -133
  771. data/dist/ice/cpp/src/IceSSL/SSLEngine.cpp +0 -313
  772. data/dist/ice/cpp/src/IceSSL/SSLEngine.h +0 -100
  773. data/dist/ice/cpp/src/IceSSL/SSLEngineF.h +0 -21
  774. data/dist/ice/cpp/src/IceSSL/SecureTransportCertificateI.cpp +0 -999
  775. data/dist/ice/cpp/src/IceSSL/SecureTransportEngine.cpp +0 -1308
  776. data/dist/ice/cpp/src/IceSSL/SecureTransportEngine.h +0 -59
  777. data/dist/ice/cpp/src/IceSSL/SecureTransportEngineF.h +0 -29
  778. data/dist/ice/cpp/src/IceSSL/SecureTransportPluginI.cpp +0 -75
  779. data/dist/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +0 -719
  780. data/dist/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +0 -92
  781. data/dist/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +0 -868
  782. data/dist/ice/cpp/src/IceSSL/SecureTransportUtil.h +0 -45
  783. data/dist/ice/cpp/src/IceSSL/TrustManager.cpp +0 -236
  784. data/dist/ice/cpp/src/IceSSL/TrustManager.h +0 -46
  785. data/dist/ice/cpp/src/IceSSL/TrustManagerF.h +0 -21
  786. data/dist/ice/cpp/src/IceSSL/Util.cpp +0 -192
  787. data/dist/ice/cpp/src/IceSSL/Util.h +0 -99
  788. data/dist/ice/cpp/src/IceSSL/generated/ConnectionInfo.cpp +0 -75
  789. data/dist/ice/cpp/src/IceSSL/generated/ConnectionInfoF.cpp +0 -61
  790. data/dist/ice/cpp/src/IceSSL/generated/EndpointInfo.cpp +0 -75
  791. data/dist/ice/cpp/src/IceUtil/ConvertUTF.cpp +0 -472
  792. data/dist/ice/cpp/src/IceUtil/ConvertUTF.h +0 -147
  793. data/dist/ice/cpp/src/IceUtil/CtrlCHandler.cpp +0 -259
  794. data/dist/ice/cpp/src/IceUtil/FileUtil.cpp +0 -471
  795. data/dist/ice/cpp/src/IceUtil/InputUtil.cpp +0 -36
  796. data/dist/ice/cpp/src/IceUtil/MutexProtocol.cpp +0 -19
  797. data/dist/ice/cpp/src/IceUtil/OutputUtil.cpp +0 -609
  798. data/dist/ice/cpp/src/IceUtil/Random.cpp +0 -180
  799. data/dist/ice/cpp/src/IceUtil/RecMutex.cpp +0 -238
  800. data/dist/ice/cpp/src/IceUtil/Shared.cpp +0 -71
  801. data/dist/ice/cpp/src/IceUtil/StringConverter.cpp +0 -690
  802. data/dist/ice/cpp/src/IceUtil/StringUtil.cpp +0 -1135
  803. data/dist/ice/cpp/src/IceUtil/ThreadException.cpp +0 -130
  804. data/dist/ice/cpp/src/IceUtil/Time.cpp +0 -307
  805. data/dist/ice/cpp/src/IceUtil/UUID.cpp +0 -165
  806. data/dist/ice/cpp/src/IceUtil/Unicode.cpp +0 -183
  807. data/dist/ice/cpp/src/IceUtil/Unicode.h +0 -43
  808. data/dist/ice/cpp/src/IceUtil/UtilException.cpp +0 -839
  809. data/dist/ice/cpp/src/Slice/CPlusPlusUtil.cpp +0 -1810
  810. data/dist/ice/cpp/src/Slice/CPlusPlusUtil.h +0 -72
  811. data/dist/ice/cpp/src/Slice/Checksum.cpp +0 -447
  812. data/dist/ice/cpp/src/Slice/Checksum.h +0 -21
  813. data/dist/ice/cpp/src/Slice/JavaUtil.cpp +0 -5183
  814. data/dist/ice/cpp/src/Slice/JavaUtil.h +0 -407
  815. data/dist/ice/cpp/src/Slice/MD5.cpp +0 -52
  816. data/dist/ice/cpp/src/Slice/MD5.h +0 -39
  817. data/dist/ice/cpp/src/Slice/MD5I.cpp +0 -393
  818. data/dist/ice/cpp/src/Slice/MD5I.h +0 -91
  819. data/dist/ice/cpp/src/Slice/PHPUtil.cpp +0 -157
  820. data/dist/ice/cpp/src/Slice/PHPUtil.h +0 -36
  821. data/dist/ice/cpp/src/Slice/Python.cpp +0 -830
  822. data/dist/ice/cpp/src/Slice/PythonUtil.cpp +0 -3439
  823. data/dist/ice/cpp/src/Slice/PythonUtil.h +0 -70
  824. data/dist/ice/cpp/src/Slice/Ruby.cpp +0 -350
  825. data/dist/ice/cpp/src/Slice/RubyUtil.cpp +0 -1571
  826. data/dist/ice/cpp/src/Slice/RubyUtil.h +0 -49
  827. data/dist/ice/slice/Glacier2/PermissionsVerifierF.ice +0 -30
  828. data/dist/ice/slice/Glacier2/RouterF.ice +0 -29
  829. data/dist/ice/slice/Ice/Communicator.ice +0 -676
  830. data/dist/ice/slice/Ice/CommunicatorF.ice +0 -31
  831. data/dist/ice/slice/Ice/Connection.ice +0 -516
  832. data/dist/ice/slice/Ice/ConnectionF.ice +0 -33
  833. data/dist/ice/slice/Ice/Current.ice +0 -170
  834. data/dist/ice/slice/Ice/Endpoint.ice +0 -291
  835. data/dist/ice/slice/Ice/EndpointF.ice +0 -43
  836. data/dist/ice/slice/Ice/FacetMap.ice +0 -36
  837. data/dist/ice/slice/Ice/ImplicitContext.ice +0 -119
  838. data/dist/ice/slice/Ice/ImplicitContextF.ice +0 -30
  839. data/dist/ice/slice/Ice/Instrumentation.ice +0 -509
  840. data/dist/ice/slice/Ice/InstrumentationF.ice +0 -38
  841. data/dist/ice/slice/Ice/LocalException.ice +0 -1040
  842. data/dist/ice/slice/Ice/LocatorF.ice +0 -32
  843. data/dist/ice/slice/Ice/Logger.ice +0 -99
  844. data/dist/ice/slice/Ice/LoggerF.ice +0 -31
  845. data/dist/ice/slice/Ice/ObjectAdapter.ice +0 -710
  846. data/dist/ice/slice/Ice/ObjectAdapterF.ice +0 -31
  847. data/dist/ice/slice/Ice/ObjectFactory.ice +0 -71
  848. data/dist/ice/slice/Ice/Plugin.ice +0 -131
  849. data/dist/ice/slice/Ice/PluginF.ice +0 -36
  850. data/dist/ice/slice/Ice/ProcessF.ice +0 -31
  851. data/dist/ice/slice/Ice/Properties.ice +0 -244
  852. data/dist/ice/slice/Ice/PropertiesF.ice +0 -32
  853. data/dist/ice/slice/Ice/RouterF.ice +0 -31
  854. data/dist/ice/slice/Ice/ServantLocator.ice +0 -136
  855. data/dist/ice/slice/Ice/ServantLocatorF.ice +0 -31
  856. data/dist/ice/slice/Ice/ValueFactory.ice +0 -133
  857. data/dist/ice/slice/IceBox/IceBox.ice +0 -216
  858. data/dist/ice/slice/IceGrid/PluginFacade.ice +0 -329
  859. data/dist/ice/slice/IcePatch2/FileInfo.ice +0 -85
  860. data/dist/ice/slice/IcePatch2/FileServer.ice +0 -191
  861. data/dist/lib/Glacier2/PermissionsVerifierF.rb +0 -30
  862. data/dist/lib/Glacier2/RouterF.rb +0 -25
  863. data/dist/lib/Ice/Communicator.rb +0 -87
  864. data/dist/lib/Ice/CommunicatorF.rb +0 -24
  865. data/dist/lib/Ice/Connection.rb +0 -413
  866. data/dist/lib/Ice/ConnectionF.rb +0 -32
  867. data/dist/lib/Ice/Current.rb +0 -141
  868. data/dist/lib/Ice/Endpoint.rb +0 -187
  869. data/dist/lib/Ice/EndpointF.rb +0 -48
  870. data/dist/lib/Ice/FacetMap.rb +0 -24
  871. data/dist/lib/Ice/ImplicitContext.rb +0 -26
  872. data/dist/lib/Ice/ImplicitContextF.rb +0 -24
  873. data/dist/lib/Ice/Instrumentation.rb +0 -169
  874. data/dist/lib/Ice/InstrumentationF.rb +0 -31
  875. data/dist/lib/Ice/LocalException.rb +0 -1031
  876. data/dist/lib/Ice/LocatorF.rb +0 -30
  877. data/dist/lib/Ice/Logger.rb +0 -24
  878. data/dist/lib/Ice/LoggerF.rb +0 -24
  879. data/dist/lib/Ice/ObjectAdapter.rb +0 -29
  880. data/dist/lib/Ice/ObjectAdapterF.rb +0 -24
  881. data/dist/lib/Ice/ObjectFactory.rb +0 -24
  882. data/dist/lib/Ice/Plugin.rb +0 -30
  883. data/dist/lib/Ice/PluginF.rb +0 -28
  884. data/dist/lib/Ice/ProcessF.rb +0 -25
  885. data/dist/lib/Ice/Properties.rb +0 -25
  886. data/dist/lib/Ice/PropertiesF.rb +0 -29
  887. data/dist/lib/Ice/RouterF.rb +0 -25
  888. data/dist/lib/Ice/ServantLocator.rb +0 -26
  889. data/dist/lib/Ice/ServantLocatorF.rb +0 -24
  890. data/dist/lib/Ice/ValueFactory.rb +0 -28
  891. data/dist/lib/IceBox/IceBox.rb +0 -164
  892. data/dist/lib/IceGrid/PluginFacade.rb +0 -35
  893. data/dist/lib/IcePatch2/FileInfo.rb +0 -115
  894. data/dist/lib/IcePatch2/FileServer.rb +0 -123
  895. data/dist/lib/IcePatch2.rb +0 -5
@@ -1,1283 +0,0 @@
1
- //
2
- // Copyright (c) ZeroC, Inc. All rights reserved.
3
- //
4
-
5
- #include <IceSSL/SChannelEngine.h>
6
- #include <IceSSL/SChannelTransceiverI.h>
7
- #include <IceSSL/Plugin.h>
8
- #include <IceSSL/Util.h>
9
-
10
- #include <Ice/LocalException.h>
11
- #include <Ice/Logger.h>
12
- #include <Ice/Communicator.h>
13
- #include <Ice/StringConverter.h>
14
-
15
- #include <IceUtil/StringUtil.h>
16
- #include <IceUtil/FileUtil.h>
17
- #include <IceUtil/MutexPtrLock.h>
18
- #include <Ice/UUID.h>
19
-
20
- #include <wincrypt.h>
21
-
22
- //
23
- // SP_PROT_TLS1_3 is new in v10.0.15021 SDK
24
- //
25
- #ifndef SP_PROT_TLS1_3
26
- # define SP_PROT_TLS1_3_SERVER 0x00001000
27
- # define SP_PROT_TLS1_3_CLIENT 0x00002000
28
- # define SP_PROT_TLS1_3 (SP_PROT_TLS1_3_SERVER | SP_PROT_TLS1_3_CLIENT)
29
- #endif
30
-
31
- //
32
- // CALG_ECDH_EPHEM algorithm constant is not defined in older version of the SDK headers
33
- //
34
- // https://msdn.microsoft.com/en-us/library/windows/desktop/aa375549(v=vs.85).aspx
35
- //
36
-
37
- const int ICESSL_CALG_ECDH_EPHEM = 0x0000AE06;
38
-
39
- //
40
- // COMPILERFIX SCH_USE_STRONG_CRYPTO not defined with v90
41
- //
42
- #if defined(_MSC_VER) && (_MSC_VER <= 1600)
43
- # ifndef SCH_USE_STRONG_CRYPTO
44
- # define SCH_USE_STRONG_CRYPTO 0x00400000
45
- # endif
46
- #endif
47
-
48
- using namespace std;
49
- using namespace Ice;
50
- using namespace IceUtil;
51
- using namespace IceUtilInternal;
52
- using namespace IceSSL;
53
-
54
- Shared* SChannel::upCast(SChannel::SSLEngine* p)
55
- {
56
- return p;
57
- }
58
-
59
- namespace
60
- {
61
-
62
- IceUtil::Mutex* globalMutex;
63
-
64
- class Init
65
- {
66
- public:
67
-
68
- Init()
69
- {
70
- globalMutex = new IceUtil::Mutex;
71
- }
72
-
73
- ~Init()
74
- {
75
- delete globalMutex;
76
- globalMutex = 0;
77
- }
78
- };
79
-
80
- Init init;
81
-
82
- void
83
- addMatchingCertificates(HCERTSTORE source, HCERTSTORE target, DWORD findType, const void* findParam)
84
- {
85
- PCCERT_CONTEXT next = 0;
86
- do
87
- {
88
- if((next = CertFindCertificateInStore(source, X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, 0,
89
- findType, findParam, next)) != 0)
90
- {
91
- if(!CertAddCertificateContextToStore(target, next, CERT_STORE_ADD_ALWAYS, 0))
92
- {
93
- throw PluginInitializationException(__FILE__, __LINE__,
94
- "IceSSL: error adding certificate to store:\n" + IceUtilInternal::lastErrorToString());
95
- }
96
- }
97
- }
98
- while(next);
99
- }
100
-
101
- vector<PCCERT_CONTEXT>
102
- findCertificates(const string& location, const string& storeName, const string& value, vector<HCERTSTORE>& stores)
103
- {
104
- DWORD storeLoc;
105
- if(location == "CurrentUser")
106
- {
107
- storeLoc = CERT_SYSTEM_STORE_CURRENT_USER;
108
- }
109
- else
110
- {
111
- storeLoc = CERT_SYSTEM_STORE_LOCAL_MACHINE;
112
- }
113
-
114
- HCERTSTORE store = CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, 0, storeLoc, Ice::stringToWstring(storeName).c_str());
115
- if(!store)
116
- {
117
- throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: failed to open certificate store `" + storeName +
118
- "':\n" + IceUtilInternal::lastErrorToString());
119
- }
120
-
121
- //
122
- // Start with all of the certificates in the collection and filter as necessary.
123
- //
124
- // - If the value is "*", return all certificates.
125
- // - Otherwise, search using key:value pairs. The following keys are supported:
126
- //
127
- // Issuer
128
- // IssuerDN
129
- // Serial
130
- // Subject
131
- // SubjectDN
132
- // SubjectKeyId
133
- // Thumbprint
134
- //
135
- // A value must be enclosed in single or double quotes if it contains whitespace.
136
- //
137
- HCERTSTORE tmpStore = 0;
138
- try
139
- {
140
- if(value != "*")
141
- {
142
- if(value.find(':', 0) == string::npos)
143
- {
144
- throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: no key in `" + value + "'");
145
- }
146
- size_t start = 0;
147
- size_t pos;
148
- while((pos = value.find(':', start)) != string::npos)
149
- {
150
- string field = IceUtilInternal::toUpper(IceUtilInternal::trim(value.substr(start, pos - start)));
151
- if(field != "SUBJECT" && field != "SUBJECTDN" && field != "ISSUER" && field != "ISSUERDN" &&
152
- field != "THUMBPRINT" && field != "SUBJECTKEYID" && field != "SERIAL")
153
- {
154
- throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: unknown key in `" + value + "'");
155
- }
156
-
157
- start = pos + 1;
158
- while(start < value.size() && (value[start] == ' ' || value[start] == '\t'))
159
- {
160
- ++start;
161
- }
162
-
163
- if(start == value.size())
164
- {
165
- throw PluginInitializationException(__FILE__, __LINE__,
166
- "IceSSL: missing argument in `" + value + "'");
167
- }
168
-
169
- string arg;
170
- if(value[start] == '"' || value[start] == '\'')
171
- {
172
- size_t end = start;
173
- ++end;
174
- while(end < value.size())
175
- {
176
- if(value[end] == value[start] && value[end - 1] != '\\')
177
- {
178
- break;
179
- }
180
- ++end;
181
- }
182
- if(end == value.size() || value[end] != value[start])
183
- {
184
- throw PluginInitializationException(__FILE__, __LINE__,
185
- "IceSSL: unmatched quote in `" + value + "'");
186
- }
187
- ++start;
188
- arg = value.substr(start, end - start);
189
- start = end + 1;
190
- }
191
- else
192
- {
193
- size_t end = value.find_first_of(" \t", start);
194
- if(end == string::npos)
195
- {
196
- arg = value.substr(start);
197
- start = value.size();
198
- }
199
- else
200
- {
201
- arg = value.substr(start, end - start);
202
- start = end + 1;
203
- }
204
- }
205
-
206
- tmpStore = CertOpenStore(CERT_STORE_PROV_MEMORY, 0, 0, 0, 0);
207
- if(!tmpStore)
208
- {
209
- throw PluginInitializationException(__FILE__, __LINE__,
210
- "IceSSL: error adding certificate to store:\n" + IceUtilInternal::lastErrorToString());
211
- }
212
-
213
- if(field == "SUBJECT" || field == "ISSUER")
214
- {
215
- const wstring argW = Ice::stringToWstring(arg);
216
- DWORD findType = field == "SUBJECT" ? CERT_FIND_SUBJECT_STR : CERT_FIND_ISSUER_STR;
217
- addMatchingCertificates(store, tmpStore, findType, argW.c_str());
218
- }
219
- else if(field == "SUBJECTDN" || field == "ISSUERDN")
220
- {
221
- const wstring argW = Ice::stringToWstring(arg);
222
- DWORD flags[] = {
223
- CERT_OID_NAME_STR,
224
- CERT_OID_NAME_STR | CERT_NAME_STR_REVERSE_FLAG,
225
- CERT_OID_NAME_STR | CERT_NAME_STR_FORCE_UTF8_DIR_STR_FLAG,
226
- CERT_OID_NAME_STR | CERT_NAME_STR_FORCE_UTF8_DIR_STR_FLAG | CERT_NAME_STR_REVERSE_FLAG
227
- };
228
- for(size_t i = 0; i < sizeof(flags) / sizeof(DWORD); ++i)
229
- {
230
- DWORD length = 0;
231
- if(!CertStrToNameW(X509_ASN_ENCODING, argW.c_str(), flags[i], 0, 0, &length, 0))
232
- {
233
- throw PluginInitializationException(
234
- __FILE__, __LINE__,
235
- "IceSSL: invalid value `" + value + "' for `IceSSL.FindCert' property:\n" +
236
- IceUtilInternal::lastErrorToString());
237
- }
238
-
239
- vector<BYTE> buffer(length);
240
- if(!CertStrToNameW(X509_ASN_ENCODING, argW.c_str(), flags[i], 0, &buffer[0], &length, 0))
241
- {
242
- throw PluginInitializationException(
243
- __FILE__, __LINE__,
244
- "IceSSL: invalid value `" + value + "' for `IceSSL.FindCert' property:\n" +
245
- IceUtilInternal::lastErrorToString());
246
- }
247
-
248
- CERT_NAME_BLOB name = { length, &buffer[0] };
249
-
250
- DWORD findType = field == "SUBJECTDN" ? CERT_FIND_SUBJECT_NAME : CERT_FIND_ISSUER_NAME;
251
- addMatchingCertificates(store, tmpStore, findType, &name);
252
- }
253
- }
254
- else if(field == "THUMBPRINT" || field == "SUBJECTKEYID")
255
- {
256
- vector<BYTE> buffer;
257
- if(!parseBytes(arg, buffer))
258
- {
259
- throw PluginInitializationException(__FILE__, __LINE__,
260
- "IceSSL: invalid `IceSSL.FindCert' property: can't decode the value");
261
- }
262
-
263
- CRYPT_HASH_BLOB hash = { static_cast<DWORD>(buffer.size()), &buffer[0] };
264
- DWORD findType = field == "THUMBPRINT" ? CERT_FIND_HASH : CERT_FIND_KEY_IDENTIFIER;
265
- addMatchingCertificates(store, tmpStore, findType, &hash);
266
- }
267
- else if(field == "SERIAL")
268
- {
269
- vector<BYTE> buffer;
270
- if(!parseBytes(arg, buffer))
271
- {
272
- throw PluginInitializationException(__FILE__, __LINE__,
273
- "IceSSL: invalid value `" + value + "' for `IceSSL.FindCert' property");
274
- }
275
-
276
- CRYPT_INTEGER_BLOB serial = { static_cast<DWORD>(buffer.size()), &buffer[0] };
277
- PCCERT_CONTEXT next = 0;
278
- do
279
- {
280
- if((next = CertFindCertificateInStore(store, X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, 0,
281
- CERT_FIND_ANY, 0, next)) != 0)
282
- {
283
- if(CertCompareIntegerBlob(&serial, &next->pCertInfo->SerialNumber))
284
- {
285
- if(!CertAddCertificateContextToStore(tmpStore, next, CERT_STORE_ADD_ALWAYS, 0))
286
- {
287
- throw PluginInitializationException(__FILE__, __LINE__,
288
- "IceSSL: error adding certificate to store:\n" +
289
- IceUtilInternal::lastErrorToString());
290
- }
291
- }
292
- }
293
- }
294
- while(next);
295
- }
296
- CertCloseStore(store, 0);
297
- store = tmpStore;
298
- }
299
- }
300
- }
301
- catch(...)
302
- {
303
- if(store && store != tmpStore)
304
- {
305
- CertCloseStore(store, 0);
306
- }
307
-
308
- if(tmpStore)
309
- {
310
- CertCloseStore(tmpStore, 0);
311
- tmpStore = 0;
312
- }
313
- throw;
314
- }
315
-
316
- vector<PCCERT_CONTEXT> certs;
317
- if(store)
318
- {
319
- PCCERT_CONTEXT next = 0;
320
- do
321
- {
322
- if((next = CertFindCertificateInStore(store, X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, 0, CERT_FIND_ANY, 0,
323
- next)) != 0)
324
- {
325
- certs.push_back(next);
326
- }
327
- }
328
- while(next);
329
- stores.push_back(store);
330
- }
331
- return certs;
332
- }
333
-
334
- #if defined(__MINGW32__) || (defined(_MSC_VER) && (_MSC_VER <= 1500))
335
- //
336
- // CERT_CHAIN_ENGINE_CONFIG struct in mingw headers doesn't include
337
- // new members added in Windows 7, we add our ouwn definition and
338
- // then cast it to CERT_CHAIN_ENGINE_CONFIG this works because the
339
- // linked libraries include the new version.
340
- //
341
- struct CertChainEngineConfig
342
- {
343
- DWORD cbSize;
344
- HCERTSTORE hRestrictedRoot;
345
- HCERTSTORE hRestrictedTrust;
346
- HCERTSTORE hRestrictedOther;
347
- DWORD cAdditionalStore;
348
- HCERTSTORE *rghAdditionalStore;
349
- DWORD dwFlags;
350
- DWORD dwUrlRetrievalTimeout;
351
- DWORD MaximumCachedCertificates;
352
- DWORD CycleDetectionModulus;
353
- HCERTSTORE hExclusiveRoot;
354
- HCERTSTORE hExclusiveTrustedPeople;
355
- };
356
-
357
- #endif
358
-
359
- void
360
- addCertificatesToStore(const string& file, HCERTSTORE store, PCCERT_CONTEXT* cert = 0)
361
- {
362
- vector<char> buffer;
363
- readFile(file, buffer);
364
- if(buffer.empty())
365
- {
366
- throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: certificate file is empty:\n" + file);
367
- }
368
-
369
- string strbuf(buffer.begin(), buffer.end());
370
- string::size_type size, startpos, endpos = 0;
371
- bool first = true;
372
- while(true)
373
- {
374
- startpos = strbuf.find("-----BEGIN CERTIFICATE-----", endpos);
375
- if(startpos != string::npos)
376
- {
377
- endpos = strbuf.find("-----END CERTIFICATE-----", startpos);
378
- size = endpos - startpos + sizeof("-----END CERTIFICATE-----");
379
- }
380
- else if(first)
381
- {
382
- startpos = 0;
383
- endpos = string::npos;
384
- size = strbuf.size();
385
- }
386
- else
387
- {
388
- break;
389
- }
390
-
391
- vector<BYTE> outBuffer;
392
- outBuffer.resize(size);
393
- DWORD outLength = static_cast<DWORD>(outBuffer.size());
394
- if(!CryptStringToBinary(&buffer[startpos], static_cast<DWORD>(size), CRYPT_STRING_ANY, &outBuffer[0],
395
- &outLength, 0, 0))
396
- {
397
- assert(GetLastError() != ERROR_MORE_DATA); // Base64 data should always be bigger than binary
398
- throw PluginInitializationException(__FILE__, __LINE__,
399
- "IceSSL: error decoding certificate:\n" + lastErrorToString());
400
- }
401
-
402
- if(!CertAddEncodedCertificateToStore(store, X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, &outBuffer[0],
403
- outLength, CERT_STORE_ADD_NEW, first ? cert : 0))
404
- {
405
- if(GetLastError() != static_cast<DWORD>(CRYPT_E_EXISTS))
406
- {
407
- throw PluginInitializationException(__FILE__, __LINE__,
408
- "IceSSL: error decoding certificate:\n" + lastErrorToString());
409
- }
410
- }
411
-
412
- first = false;
413
- }
414
- }
415
-
416
- DWORD
417
- parseProtocols(const StringSeq& protocols)
418
- {
419
- DWORD v = 0;
420
-
421
- for(Ice::StringSeq::const_iterator p = protocols.begin(); p != protocols.end(); ++p)
422
- {
423
- string prot = IceUtilInternal::toUpper(*p);
424
-
425
- if(prot == "SSL3" || prot == "SSLV3")
426
- {
427
- v |= SP_PROT_SSL3;
428
- }
429
- else if(prot == "TLS" || prot == "TLS1" || prot == "TLSV1" || prot == "TLS1_0" || prot == "TLSV1_0")
430
- {
431
- v |= SP_PROT_TLS1;
432
- }
433
- else if(prot == "TLS1_1" || prot == "TLSV1_1")
434
- {
435
- v |= SP_PROT_TLS1_1;
436
- }
437
- else if(prot == "TLS1_2" || prot == "TLSV1_2")
438
- {
439
- v |= SP_PROT_TLS1_2;
440
- }
441
- else if (prot == "TLS1_3" || prot == "TLSV1_2")
442
- {
443
- v |= SP_PROT_TLS1_3;
444
- }
445
- else
446
- {
447
- throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: unrecognized protocol `" + *p + "'");
448
- }
449
- }
450
-
451
- return v;
452
- }
453
-
454
- const ALG_ID supportedCiphers[] = { CALG_3DES, CALG_AES_128, CALG_AES_256, CALG_DES, CALG_RC2, CALG_RC4 };
455
- const int supportedCiphersSize = sizeof(supportedCiphers)/sizeof(ALG_ID);
456
-
457
- ALG_ID
458
- algorithmId(const string& name)
459
- {
460
- if(name == "3DES")
461
- {
462
- return CALG_3DES;
463
- }
464
- else if(name == "3DES_112")
465
- {
466
- return CALG_3DES_112;
467
- }
468
- else if(name == "AES")
469
- {
470
- return CALG_AES;
471
- }
472
- else if(name == "AES_128")
473
- {
474
- return CALG_AES_128;
475
- }
476
- else if(name == "AES_192")
477
- {
478
- return CALG_AES_192;
479
- }
480
- else if(name == "AES_256")
481
- {
482
- return CALG_AES_256;
483
- }
484
- else if(name == "AGREEDKEY_ANY")
485
- {
486
- return CALG_AGREEDKEY_ANY;
487
- }
488
- else if(name == "CYLINK_MEK")
489
- {
490
- return CALG_CYLINK_MEK;
491
- }
492
- else if(name == "DES")
493
- {
494
- return CALG_DES;
495
- }
496
- else if(name == "DESX")
497
- {
498
- return CALG_DESX;
499
- }
500
- else if(name == "DH_EPHEM")
501
- {
502
- return CALG_DH_EPHEM;
503
- }
504
- else if(name == "DH_SF")
505
- {
506
- return CALG_DH_SF;
507
- }
508
- else if(name == "DSS_SIGN")
509
- {
510
- return CALG_DSS_SIGN;
511
- }
512
- else if(name == "ECDH")
513
- {
514
- return CALG_ECDH;
515
- }
516
- else if(name == "ECDH_EPHEM")
517
- {
518
- return ICESSL_CALG_ECDH_EPHEM;
519
- }
520
- else if(name == "ECDSA")
521
- {
522
- return CALG_ECDSA;
523
- }
524
- else if(name == "HASH_REPLACE_OWF")
525
- {
526
- return CALG_HASH_REPLACE_OWF;
527
- }
528
- else if(name == "HUGHES_MD5")
529
- {
530
- return CALG_HUGHES_MD5;
531
- }
532
- else if(name == "HMAC")
533
- {
534
- return CALG_HMAC;
535
- }
536
- else if(name == "MAC")
537
- {
538
- return CALG_MAC;
539
- }
540
- else if(name == "MD2")
541
- {
542
- return CALG_MD2;
543
- }
544
- else if(name == "MD4")
545
- {
546
- return CALG_MD4;
547
- }
548
- else if(name == "MD5")
549
- {
550
- return CALG_MD5;
551
- }
552
- else if(name == "NO_SIGN")
553
- {
554
- return CALG_NO_SIGN;
555
- }
556
- else if(name == "RC2")
557
- {
558
- return CALG_RC2;
559
- }
560
- else if(name == "RC4")
561
- {
562
- return CALG_RC4;
563
- }
564
- else if(name == "RC5")
565
- {
566
- return CALG_RC5;
567
- }
568
- else if(name == "RSA_KEYX")
569
- {
570
- return CALG_RSA_KEYX;
571
- }
572
- else if(name == "RSA_SIGN")
573
- {
574
- return CALG_RSA_SIGN;
575
- }
576
- else if(name == "SHA1")
577
- {
578
- return CALG_SHA1;
579
- }
580
- else if(name == "SHA_256")
581
- {
582
- return CALG_SHA_256;
583
- }
584
- else if(name == "SHA_384")
585
- {
586
- return CALG_SHA_384;
587
- }
588
- else if(name == "SHA_512")
589
- {
590
- return CALG_SHA_512;
591
- }
592
- return 0;
593
- }
594
-
595
- }
596
-
597
- SChannel::SSLEngine::SSLEngine(const CommunicatorPtr& communicator) :
598
- IceSSL::SSLEngine(communicator),
599
- _rootStore(0),
600
- _chainEngine(0),
601
- _strongCrypto(false)
602
- {
603
- }
604
-
605
- void
606
- SChannel::SSLEngine::initialize()
607
- {
608
- //
609
- // BUGFIX: we use a global mutex for the initialization of SChannel to
610
- // avoid crashes ocurring with last SChannel updates see:
611
- // https://github.com/zeroc-ice/ice/issues/242
612
- //
613
- IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(globalMutex);
614
-
615
- //
616
- // We still have to acquire the instance mutex because it is used by the base
617
- // class to access _initialized data member.
618
- //
619
- Mutex::Lock lock(_mutex);
620
- if(_initialized)
621
- {
622
- return;
623
- }
624
-
625
- IceSSL::SSLEngine::initialize();
626
-
627
- const string prefix = "IceSSL.";
628
- const PropertiesPtr properties = communicator()->getProperties();
629
-
630
- //
631
- // Protocols selects which protocols to enable, by default we only enable TLS1.0
632
- // TLS1.1 and TLS1.2 to avoid security issues with SSLv3
633
- //
634
- vector<string> defaultProtocols;
635
- defaultProtocols.push_back("tls1_0");
636
- defaultProtocols.push_back("tls1_1");
637
- defaultProtocols.push_back("tls1_2");
638
- const_cast<DWORD&>(_protocols) =
639
- parseProtocols(properties->getPropertyAsListWithDefault(prefix + "Protocols", defaultProtocols));
640
-
641
- const_cast<bool&>(_strongCrypto) = properties->getPropertyAsIntWithDefault(prefix + "SchannelStrongCrypto", 0) > 0;
642
-
643
- //
644
- // Check for a default directory. We look in this directory for
645
- // files mentioned in the configuration.
646
- //
647
- const string defaultDir = properties->getProperty(prefix + "DefaultDir");
648
-
649
- const int passwordRetryMax = properties->getPropertyAsIntWithDefault(prefix + "PasswordRetryMax", 3);
650
- PasswordPromptPtr passwordPrompt = getPasswordPrompt();
651
- setPassword(properties->getProperty(prefix + "Password"));
652
-
653
- string ciphers = properties->getProperty(prefix + "Ciphers");
654
- if(!ciphers.empty())
655
- {
656
- parseCiphers(ciphers);
657
- }
658
-
659
- if(securityTraceLevel() >= 1)
660
- {
661
- ostringstream os;
662
- os << "enabling SSL ciphersuites:";
663
- if(_ciphers.empty())
664
- {
665
- for(int i = 0; i < supportedCiphersSize; ++i)
666
- {
667
- os << "\n " << getCipherName(supportedCiphers[i]);
668
- }
669
- }
670
- else
671
- {
672
- for(vector<ALG_ID>::const_iterator i = _ciphers.begin(); i != _ciphers.end(); ++i)
673
- {
674
- os << "\n " << getCipherName(*i);
675
- }
676
- }
677
- getLogger()->trace(securityTraceCategory(), os.str());
678
- }
679
-
680
- string certStoreLocation = properties->getPropertyWithDefault(prefix + "CertStoreLocation", "CurrentUser");
681
- if(certStoreLocation != "CurrentUser" && certStoreLocation != "LocalMachine")
682
- {
683
- getLogger()->warning("invalid IceSSL.CertStoreLocation value `" + certStoreLocation +
684
- "' adjusted to `CurrentUser'");
685
- certStoreLocation = "CurrentUser";
686
- }
687
-
688
- //
689
- // Create trusted CA store with contents of CertAuthFile
690
- //
691
- string caFile = properties->getProperty(prefix + "CAs");
692
- if(caFile.empty())
693
- {
694
- caFile = properties->getProperty(prefix + "CertAuthFile");
695
- }
696
- if(!caFile.empty() || properties->getPropertyAsInt("IceSSL.UsePlatformCAs") <= 0)
697
- {
698
- _rootStore = CertOpenStore(CERT_STORE_PROV_MEMORY, 0, 0, 0, 0);
699
- if(!_rootStore)
700
- {
701
- throw PluginInitializationException(__FILE__, __LINE__,
702
- "IceSSL: error creating in memory certificate store:\n" +
703
- lastErrorToString());
704
- }
705
- }
706
- if(!caFile.empty())
707
- {
708
- string resolved;
709
- if(!checkPath(caFile, defaultDir, false, resolved))
710
- {
711
- throw PluginInitializationException(__FILE__, __LINE__,
712
- "IceSSL: CA certificate file not found:\n" + caFile);
713
- }
714
-
715
- addCertificatesToStore(resolved, _rootStore);
716
- }
717
-
718
- if(_rootStore)
719
- {
720
- //
721
- // Create a chain engine that uses our Trusted Root Store
722
- //
723
- #if defined(__MINGW32__) || (defined(_MSC_VER) && (_MSC_VER <= 1500))
724
- CertChainEngineConfig config;
725
- memset(&config, 0, sizeof(CertChainEngineConfig));
726
- config.cbSize = sizeof(CertChainEngineConfig);
727
- #else
728
- CERT_CHAIN_ENGINE_CONFIG config;
729
- memset(&config, 0, sizeof(CERT_CHAIN_ENGINE_CONFIG));
730
- config.cbSize = sizeof(CERT_CHAIN_ENGINE_CONFIG);
731
- #endif
732
- config.hExclusiveRoot = _rootStore;
733
-
734
- //
735
- // Build the chain using the LocalMachine registry location as opposed
736
- // to the CurrentUser location.
737
- //
738
- if(certStoreLocation == "LocalMachine")
739
- {
740
- config.dwFlags = CERT_CHAIN_USE_LOCAL_MACHINE_STORE;
741
- }
742
-
743
- #if defined(__MINGW32__) || (defined(_MSC_VER) && (_MSC_VER <= 1500))
744
- if(!CertCreateCertificateChainEngine(reinterpret_cast<CERT_CHAIN_ENGINE_CONFIG*>(&config), &_chainEngine))
745
- #else
746
- if(!CertCreateCertificateChainEngine(&config, &_chainEngine))
747
- #endif
748
- {
749
- throw PluginInitializationException(__FILE__, __LINE__,
750
- "IceSSL: error creating certificate chain engine:\n" +
751
- lastErrorToString());
752
- }
753
- }
754
- else
755
- {
756
- _chainEngine = (certStoreLocation == "LocalMachine") ? HCCE_LOCAL_MACHINE : HCCE_CURRENT_USER;
757
- }
758
-
759
- string certFile = properties->getProperty(prefix + "CertFile");
760
- string keyFile = properties->getProperty(prefix + "KeyFile");
761
- string findCert = properties->getProperty("IceSSL.FindCert");
762
-
763
- if(!certFile.empty())
764
- {
765
- vector<string> certFiles;
766
- if(!splitString(certFile, IceUtilInternal::pathsep, certFiles) || certFiles.size() > 2)
767
- {
768
- throw PluginInitializationException(__FILE__, __LINE__,
769
- "IceSSL: invalid value for " + prefix + "CertFile:\n" + certFile);
770
- }
771
-
772
- vector<string> keyFiles;
773
- if(!keyFile.empty())
774
- {
775
- if(!splitString(keyFile, IceUtilInternal::pathsep, keyFiles) || keyFiles.size() > 2)
776
- {
777
- throw PluginInitializationException(__FILE__, __LINE__,
778
- "IceSSL: invalid value for " + prefix + "KeyFile:\n" + keyFile);
779
- }
780
-
781
- if(certFiles.size() != keyFiles.size())
782
- {
783
- throw PluginInitializationException(__FILE__, __LINE__,
784
- "IceSSL: " + prefix + "KeyFile does not agree with " + prefix + "CertFile");
785
- }
786
- }
787
-
788
- for(size_t i = 0; i < certFiles.size(); ++i)
789
- {
790
- string cFile = certFiles[i];
791
- string resolved;
792
- if(!checkPath(cFile, defaultDir, false, resolved))
793
- {
794
- throw PluginInitializationException(__FILE__, __LINE__,
795
- "IceSSL: certificate file not found:\n" + cFile);
796
- }
797
- cFile = resolved;
798
-
799
- vector<char> buffer;
800
- readFile(cFile, buffer);
801
- if(buffer.empty())
802
- {
803
- throw PluginInitializationException(__FILE__, __LINE__,
804
- "IceSSL: certificate file is empty:\n" + cFile);
805
- }
806
-
807
- CRYPT_DATA_BLOB pfxBlob;
808
- pfxBlob.cbData = static_cast<DWORD>(buffer.size());
809
- pfxBlob.pbData = reinterpret_cast<BYTE*>(&buffer[0]);
810
-
811
- HCERTSTORE store = 0;
812
- PCCERT_CONTEXT cert = 0;
813
- int err = 0;
814
- int count = 0;
815
- DWORD importFlags = (certStoreLocation == "LocalMachine") ? CRYPT_MACHINE_KEYSET : CRYPT_USER_KEYSET;
816
- do
817
- {
818
- string s = password(false);
819
- store = PFXImportCertStore(&pfxBlob, Ice::stringToWstring(s).c_str(), importFlags);
820
- err = store ? 0 : GetLastError();
821
- }
822
- while(err == ERROR_INVALID_PASSWORD && passwordPrompt && ++count < passwordRetryMax);
823
-
824
- if(store)
825
- {
826
- //
827
- // Try to find a certificate chain.
828
- //
829
- CERT_CHAIN_FIND_BY_ISSUER_PARA para;
830
- memset(&para, 0, sizeof(CERT_CHAIN_FIND_BY_ISSUER_PARA));
831
- para.cbSize = sizeof(CERT_CHAIN_FIND_BY_ISSUER_PARA);
832
-
833
- DWORD ff = CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_URL_FLAG; // Don't fetch anything from the Internet
834
- PCCERT_CHAIN_CONTEXT chain = 0;
835
- while(!cert)
836
- {
837
- chain = CertFindChainInStore(store, X509_ASN_ENCODING, ff, CERT_CHAIN_FIND_BY_ISSUER, &para, chain);
838
- if(!chain)
839
- {
840
- break; // No more chains found in the store.
841
- }
842
-
843
- if(chain->cChain > 0 && chain->rgpChain[0]->cElement > 0)
844
- {
845
- cert = CertDuplicateCertificateContext(chain->rgpChain[0]->rgpElement[0]->pCertContext);
846
- }
847
- CertFreeCertificateChain(chain);
848
- }
849
-
850
- //
851
- // Check if we can find a certificate if we couldn't find a chain.
852
- //
853
- if(!cert)
854
- {
855
- cert = CertFindCertificateInStore(store, X509_ASN_ENCODING, 0, CERT_FIND_ANY, 0, cert);
856
- }
857
- if(!cert)
858
- {
859
- throw PluginInitializationException(__FILE__, __LINE__,
860
- "IceSSL: certificate error:\n" + lastErrorToString());
861
- }
862
- _allCerts.push_back(cert);
863
- _stores.push_back(store);
864
- continue;
865
- }
866
-
867
- assert(err);
868
- if(err != CRYPT_E_BAD_ENCODE)
869
- {
870
- throw PluginInitializationException(__FILE__, __LINE__,
871
- "IceSSL: error decoding certificate:\n" + lastErrorToString());
872
- }
873
-
874
- //
875
- // Try to load certificate & key as PEM files.
876
- //
877
- if(keyFiles.empty())
878
- {
879
- throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: no key file specified");
880
- }
881
-
882
- err = 0;
883
- keyFile = keyFiles[i];
884
- if(!checkPath(keyFile, defaultDir, false, resolved))
885
- {
886
- throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: key file not found:\n" + keyFile);
887
- }
888
- keyFile = resolved;
889
-
890
- readFile(keyFile, buffer);
891
- if(buffer.empty())
892
- {
893
- throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: key file is empty:\n" + keyFile);
894
- }
895
-
896
- vector<BYTE> outBuffer;
897
- outBuffer.resize(buffer.size());
898
- DWORD outLength = static_cast<DWORD>(buffer.size());
899
-
900
- //
901
- // Convert the PEM encoded buffer to DER binary format.
902
- //
903
- if(!CryptStringToBinary(&buffer[0], static_cast<DWORD>(buffer.size()), CRYPT_STRING_BASE64HEADER,
904
- &outBuffer[0], &outLength, 0, 0))
905
- {
906
- throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: error decoding key `" + keyFile +
907
- "':\n" + lastErrorToString());
908
- }
909
-
910
- PCRYPT_PRIVATE_KEY_INFO keyInfo = 0;
911
- BYTE* key = 0;
912
- HCRYPTKEY hKey = 0;
913
- try
914
- {
915
- //
916
- // First try to decode as a PKCS#8 key, if that fails try PKCS#1.
917
- //
918
- DWORD decodedLength = 0;
919
- if(CryptDecodeObjectEx(X509_ASN_ENCODING, PKCS_PRIVATE_KEY_INFO, &outBuffer[0], outLength,
920
- CRYPT_DECODE_ALLOC_FLAG, 0, &keyInfo, &decodedLength))
921
- {
922
- //
923
- // Check that we are using a RSA Key
924
- //
925
- if(strcmp(keyInfo->Algorithm.pszObjId, szOID_RSA_RSA))
926
- {
927
- throw PluginInitializationException(__FILE__, __LINE__,
928
- string("IceSSL: error unknow key algorithm: `") +
929
- keyInfo->Algorithm.pszObjId + "'");
930
- }
931
-
932
- //
933
- // Decode the private key BLOB
934
- //
935
- if(!CryptDecodeObjectEx(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, PKCS_RSA_PRIVATE_KEY,
936
- keyInfo->PrivateKey.pbData, keyInfo->PrivateKey.cbData,
937
- CRYPT_DECODE_ALLOC_FLAG, 0, &key, &outLength))
938
- {
939
- throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: error decoding key `" +
940
- keyFile + "':\n" + lastErrorToString());
941
- }
942
- LocalFree(keyInfo);
943
- keyInfo = 0;
944
- }
945
- else
946
- {
947
- //
948
- // Decode the private key BLOB
949
- //
950
- if(!CryptDecodeObjectEx(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, PKCS_RSA_PRIVATE_KEY,
951
- &outBuffer[0], outLength, CRYPT_DECODE_ALLOC_FLAG, 0, &key, &outLength))
952
- {
953
- throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: error decoding key `" +
954
- keyFile + "':\n" + lastErrorToString());
955
- }
956
- }
957
-
958
- //
959
- // Create a new RSA key set to store our key
960
- //
961
- const wstring keySetName = Ice::stringToWstring(generateUUID());
962
- HCRYPTPROV cryptProv = 0;
963
-
964
- DWORD contextFlags = CRYPT_NEWKEYSET;
965
- if(certStoreLocation == "LocalMachine")
966
- {
967
- contextFlags |= CRYPT_MACHINE_KEYSET;
968
- } ;
969
-
970
- if(!CryptAcquireContextW(&cryptProv, keySetName.c_str(), MS_ENHANCED_PROV_W, PROV_RSA_FULL,
971
- contextFlags))
972
- {
973
- throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: error acquiring cryptographic "
974
- "context:\n" + lastErrorToString());
975
- }
976
-
977
- //
978
- // Import the private key
979
- //
980
- if(!CryptImportKey(cryptProv, key, outLength, 0, 0, &hKey))
981
- {
982
- throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: error importing key `" + keyFile +
983
- "':\n" + lastErrorToString());
984
- }
985
- LocalFree(key);
986
- key = 0;
987
-
988
- CryptDestroyKey(hKey);
989
- hKey = 0;
990
-
991
- //
992
- // Create a new memory store to place the certificate
993
- //
994
- store = CertOpenStore(CERT_STORE_PROV_MEMORY, 0, 0, 0, 0);
995
- if(!store)
996
- {
997
- throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: error creating certificate "
998
- "store:\n" + lastErrorToString());
999
- }
1000
-
1001
- addCertificatesToStore(cFile, store, &cert);
1002
-
1003
- //
1004
- // Associate key & certificate
1005
- //
1006
- CRYPT_KEY_PROV_INFO keyProvInfo;
1007
- memset(&keyProvInfo, 0, sizeof(keyProvInfo));
1008
- keyProvInfo.pwszContainerName = const_cast<wchar_t*>(keySetName.c_str());
1009
- keyProvInfo.pwszProvName = const_cast<wchar_t*>(MS_DEF_PROV_W);
1010
- keyProvInfo.dwProvType = PROV_RSA_FULL;
1011
- keyProvInfo.dwKeySpec = AT_KEYEXCHANGE;
1012
- if(!CertSetCertificateContextProperty(cert, CERT_KEY_PROV_INFO_PROP_ID, 0, &keyProvInfo))
1013
- {
1014
- throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: error seting certificate "
1015
- "property:\n" + lastErrorToString());
1016
- }
1017
-
1018
- _importedCerts.push_back(cert);
1019
- _allCerts.push_back(cert);
1020
- _stores.push_back(store);
1021
- }
1022
- catch(...)
1023
- {
1024
- if(keyInfo)
1025
- {
1026
- LocalFree(keyInfo);
1027
- }
1028
-
1029
- if(key)
1030
- {
1031
- LocalFree(key);
1032
- }
1033
-
1034
- if(hKey)
1035
- {
1036
- CryptDestroyKey(hKey);
1037
- }
1038
-
1039
- if(cert)
1040
- {
1041
- CertFreeCertificateContext(cert);
1042
- }
1043
-
1044
- if(store)
1045
- {
1046
- CertCloseStore(store, 0);
1047
- }
1048
- throw;
1049
- }
1050
- }
1051
- }
1052
- else if(!findCert.empty())
1053
- {
1054
- string certStore = properties->getPropertyWithDefault(prefix + "CertStore", "My");
1055
- vector<PCCERT_CONTEXT> certs = findCertificates(certStoreLocation, certStore, findCert, _stores);
1056
- if(certs.empty())
1057
- {
1058
- throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: no certificates found");
1059
- }
1060
- _allCerts.insert(_allCerts.end(), certs.begin(), certs.end());
1061
- }
1062
- _initialized = true;
1063
- }
1064
-
1065
- string
1066
- SChannel::SSLEngine::getCipherName(ALG_ID cipher) const
1067
- {
1068
- switch(cipher)
1069
- {
1070
- case CALG_3DES:
1071
- return "3DES";
1072
- case CALG_3DES_112:
1073
- return "3DES_112";
1074
- case CALG_AES:
1075
- return "AES";
1076
- case CALG_AES_128:
1077
- return "AES_128";
1078
- case CALG_AES_192:
1079
- return "AES_192";
1080
- case CALG_AES_256:
1081
- return "AES_256";
1082
- case CALG_AGREEDKEY_ANY:
1083
- return "AGREEDKEY_ANY";
1084
- case CALG_CYLINK_MEK:
1085
- return "CYLINK_MEK";
1086
- case CALG_DES:
1087
- return "DES";
1088
- case CALG_DESX:
1089
- return "DESX";
1090
- case CALG_DH_EPHEM:
1091
- return "DH_EPHEM";
1092
- case CALG_DH_SF:
1093
- return "DH_SF";
1094
- case CALG_DSS_SIGN:
1095
- return "DSS_SIGN";
1096
- case CALG_ECDH:
1097
- return "ECDH";
1098
- case ICESSL_CALG_ECDH_EPHEM:
1099
- return "ECDH_EPHEM";
1100
- case CALG_ECDSA:
1101
- return "ECDSA";
1102
- case CALG_HASH_REPLACE_OWF:
1103
- return "HASH_REPLACE_OWF";
1104
- case CALG_HUGHES_MD5:
1105
- return "HUGHES_MD5";
1106
- case CALG_HMAC:
1107
- return "HMAC";
1108
- case CALG_MAC:
1109
- return "MAC";
1110
- case CALG_MD2:
1111
- return "MD2";
1112
- case CALG_MD4:
1113
- return "MD4";
1114
- case CALG_MD5:
1115
- return "MD5";
1116
- case CALG_NO_SIGN:
1117
- return "NO_SIGN";
1118
- case CALG_RC2:
1119
- return "RC2";
1120
- case CALG_RC4:
1121
- return "RC4";
1122
- case CALG_RC5:
1123
- return "RC5";
1124
- case CALG_RSA_KEYX:
1125
- return "RSA_KEYX";
1126
- case CALG_RSA_SIGN:
1127
- return "RSA_SIGN";
1128
- case CALG_SHA1:
1129
- return "SHA1";
1130
- case CALG_SHA_256:
1131
- return "SHA_256";
1132
- case CALG_SHA_384:
1133
- return "SHA_384";
1134
- case CALG_SHA_512:
1135
- return "SHA_512";
1136
- default:
1137
- {
1138
- ostringstream os;
1139
- os << "Unknown cipher: " << cipher;
1140
- return os.str();
1141
- }
1142
- }
1143
- }
1144
-
1145
- CredHandle
1146
- SChannel::SSLEngine::newCredentialsHandle(bool incoming)
1147
- {
1148
- SCHANNEL_CRED cred;
1149
- memset(&cred, 0, sizeof(cred));
1150
- cred.dwVersion = SCHANNEL_CRED_VERSION;
1151
-
1152
- if(!_allCerts.empty())
1153
- {
1154
- cred.cCreds = static_cast<DWORD>(_allCerts.size());
1155
- cred.paCred = &_allCerts[0];
1156
- }
1157
-
1158
- cred.grbitEnabledProtocols = _protocols;
1159
-
1160
- if(incoming)
1161
- {
1162
- //
1163
- // Don't set SCH_SEND_ROOT_CERT as it seems to cause problems with
1164
- // Java certificate validation and SChannel doesn't seems to send
1165
- // the root certificate either way.
1166
- //
1167
- cred.dwFlags = SCH_CRED_NO_SYSTEM_MAPPER;
1168
-
1169
- //
1170
- // There's no way to prevent SChannel from sending "CA names" to the
1171
- // client. Recent Windows versions don't CA names but older ones do
1172
- // send all the trusted root CA names. We provide the root store to
1173
- // ensure that for these older Windows versions, we also include the
1174
- // CA names of our trusted roots.
1175
- //
1176
- cred.hRootStore = _rootStore;
1177
- }
1178
- else
1179
- {
1180
- cred.dwFlags = SCH_CRED_MANUAL_CRED_VALIDATION | SCH_CRED_NO_SERVERNAME_CHECK | SCH_CRED_NO_DEFAULT_CREDS;
1181
- }
1182
-
1183
- if(_strongCrypto)
1184
- {
1185
- cred.dwFlags |= SCH_USE_STRONG_CRYPTO;
1186
- }
1187
-
1188
- if(!_ciphers.empty())
1189
- {
1190
- cred.cSupportedAlgs = static_cast<DWORD>(_ciphers.size());
1191
- cred.palgSupportedAlgs = &_ciphers[0];
1192
- }
1193
-
1194
- CredHandle credHandle;
1195
- memset(&credHandle, 0, sizeof(credHandle));
1196
-
1197
- SECURITY_STATUS err = AcquireCredentialsHandle(0, const_cast<char*>(UNISP_NAME),
1198
- (incoming ? SECPKG_CRED_INBOUND : SECPKG_CRED_OUTBOUND),
1199
- 0, &cred, 0, 0, &credHandle, 0);
1200
-
1201
- if(err != SEC_E_OK)
1202
- {
1203
- throw SecurityException(__FILE__, __LINE__,
1204
- "IceSSL: failed to acquire credentials handle:\n" + lastErrorToString());
1205
- }
1206
- return credHandle;
1207
- }
1208
-
1209
- HCERTCHAINENGINE
1210
- SChannel::SSLEngine::chainEngine() const
1211
- {
1212
- return _chainEngine;
1213
- }
1214
-
1215
- void
1216
- SChannel::SSLEngine::parseCiphers(const std::string& ciphers)
1217
- {
1218
- vector<string> tokens;
1219
- splitString(ciphers, " \t", tokens);
1220
- for(vector<string>::const_iterator i = tokens.begin(); i != tokens.end(); ++i)
1221
- {
1222
- ALG_ID id = algorithmId(*i);
1223
- if(id == 0)
1224
- {
1225
- throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: no such cipher " + *i);
1226
- }
1227
- _ciphers.push_back(id);
1228
- }
1229
- }
1230
-
1231
- void
1232
- SChannel::SSLEngine::destroy()
1233
- {
1234
- if(_chainEngine && _chainEngine != HCCE_CURRENT_USER && _chainEngine != HCCE_LOCAL_MACHINE)
1235
- {
1236
- CertFreeCertificateChainEngine(_chainEngine);
1237
- }
1238
-
1239
- if(_rootStore)
1240
- {
1241
- CertCloseStore(_rootStore, 0);
1242
- }
1243
-
1244
- for(vector<PCCERT_CONTEXT>::const_iterator i = _importedCerts.begin(); i != _importedCerts.end(); ++i)
1245
- {
1246
- //
1247
- // Retrieve the certificate CERT_KEY_PROV_INFO_PROP_ID property, we use the CRYPT_KEY_PROV_INFO
1248
- // data to remove the key set associated with the certificate.
1249
- //
1250
- DWORD length = 0;
1251
- if(!CertGetCertificateContextProperty(*i, CERT_KEY_PROV_INFO_PROP_ID, 0, &length))
1252
- {
1253
- continue;
1254
- }
1255
- vector<char> buf(length);
1256
- if(!CertGetCertificateContextProperty(*i, CERT_KEY_PROV_INFO_PROP_ID, &buf[0], &length))
1257
- {
1258
- continue;
1259
- }
1260
- CRYPT_KEY_PROV_INFO* key = reinterpret_cast<CRYPT_KEY_PROV_INFO*>(&buf[0]);
1261
- HCRYPTPROV prov = 0;
1262
- CryptAcquireContextW(&prov, key->pwszContainerName, key->pwszProvName, key->dwProvType, CRYPT_DELETEKEYSET);
1263
- }
1264
-
1265
- for(vector<PCCERT_CONTEXT>::const_iterator i = _allCerts.begin(); i != _allCerts.end(); ++i)
1266
- {
1267
- CertFreeCertificateContext(*i);
1268
- }
1269
-
1270
- for(vector<HCERTSTORE>::const_iterator i = _stores.begin(); i != _stores.end(); ++i)
1271
- {
1272
- CertCloseStore(*i, 0);
1273
- }
1274
- }
1275
-
1276
- IceInternal::TransceiverPtr
1277
- SChannel::SSLEngine::createTransceiver(const InstancePtr& instance,
1278
- const IceInternal::TransceiverPtr& delegate,
1279
- const string& hostOrAdapterName,
1280
- bool incoming)
1281
- {
1282
- return new SChannel::TransceiverI(instance, delegate, hostOrAdapterName, incoming);
1283
- }