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,1308 +0,0 @@
1
- //
2
- // Copyright (c) ZeroC, Inc. All rights reserved.
3
- //
4
-
5
- #include <IceSSL/Config.h>
6
-
7
- #include <IceSSL/SecureTransportEngineF.h>
8
- #include <IceSSL/SecureTransportEngine.h>
9
-
10
- #include <IceUtil/FileUtil.h>
11
- #include <IceUtil/StringUtil.h>
12
- #include <IceUtil/MutexPtrLock.h>
13
-
14
- #include <Ice/LocalException.h>
15
- #include <Ice/Properties.h>
16
- #include <Ice/Communicator.h>
17
- #include <Ice/Logger.h>
18
- #include <Ice/LoggerUtil.h>
19
-
20
- #include <IceSSL/SecureTransportTransceiverI.h>
21
- #include <IceSSL/SecureTransportUtil.h>
22
- #include <IceSSL/Plugin.h>
23
- #include <IceSSL/SSLEngine.h>
24
- #include <IceSSL/Util.h>
25
-
26
- #include <regex.h>
27
-
28
- // Disable deprecation warnings from SecureTransport APIs
29
- #include <IceUtil/DisableWarnings.h>
30
-
31
- using namespace std;
32
- using namespace IceUtil;
33
- using namespace Ice;
34
- using namespace IceInternal;
35
- using namespace IceSSL;
36
- using namespace IceSSL::SecureTransport;
37
-
38
- namespace
39
- {
40
-
41
- IceUtil::Mutex* staticMutex = 0;
42
-
43
- class Init
44
- {
45
- public:
46
-
47
- Init()
48
- {
49
- staticMutex = new IceUtil::Mutex;
50
- }
51
-
52
- ~Init()
53
- {
54
- delete staticMutex;
55
- staticMutex = 0;
56
- }
57
- };
58
-
59
- Init init;
60
-
61
- class RegExp : public IceUtil::Shared
62
- {
63
- public:
64
-
65
- RegExp(const string&);
66
- ~RegExp();
67
- bool match(const string&);
68
-
69
- private:
70
-
71
- regex_t _preg;
72
- };
73
- typedef IceUtil::Handle<RegExp> RegExpPtr;
74
-
75
- RegExp::RegExp(const string& regexp)
76
- {
77
- int err = regcomp(&_preg, regexp.c_str(), REG_EXTENDED | REG_NOSUB);
78
- if(err)
79
- {
80
- throw IceUtil::SyscallException(__FILE__, __LINE__, err);
81
- }
82
- }
83
-
84
- RegExp::~RegExp()
85
- {
86
- regfree(&_preg);
87
- }
88
-
89
- bool
90
- RegExp::match(const string& value)
91
- {
92
- return regexec(&_preg, value.c_str(), 0, 0, 0) == 0;
93
- }
94
-
95
- struct CipherExpression
96
- {
97
- bool negation;
98
- string cipher;
99
- RegExpPtr re;
100
- };
101
-
102
- class CiphersHelper
103
- {
104
- public:
105
-
106
- static void initialize();
107
- static SSLCipherSuite cipherForName(const string& name);
108
- static string cipherName(SSLCipherSuite cipher);
109
- static map<string, SSLCipherSuite> ciphers();
110
-
111
- private:
112
-
113
- static map<string, SSLCipherSuite> _ciphers;
114
- };
115
-
116
- map<string, SSLCipherSuite> CiphersHelper::_ciphers;
117
-
118
- //
119
- // Initialize a dictionary with the names of ciphers
120
- //
121
- void
122
- CiphersHelper::initialize()
123
- {
124
- IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(staticMutex);
125
- if(_ciphers.empty())
126
- {
127
- _ciphers["NULL_WITH_NULL_NULL"] = SSL_NULL_WITH_NULL_NULL;
128
- _ciphers["RSA_WITH_NULL_MD5"] = SSL_RSA_WITH_NULL_MD5;
129
- _ciphers["RSA_WITH_NULL_SHA"] = SSL_RSA_WITH_NULL_SHA;
130
- _ciphers["RSA_EXPORT_WITH_RC4_40_MD5"] = SSL_RSA_EXPORT_WITH_RC4_40_MD5;
131
- _ciphers["RSA_WITH_RC4_128_MD5"] = SSL_RSA_WITH_RC4_128_MD5;
132
- _ciphers["RSA_WITH_RC4_128_SHA"] = SSL_RSA_WITH_RC4_128_SHA;
133
- _ciphers["RSA_EXPORT_WITH_RC2_CBC_40_MD5"] = SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5;
134
- _ciphers["RSA_WITH_IDEA_CBC_SHA"] = SSL_RSA_WITH_IDEA_CBC_SHA;
135
- _ciphers["RSA_EXPORT_WITH_DES40_CBC_SHA"] = SSL_RSA_EXPORT_WITH_DES40_CBC_SHA;
136
- _ciphers["RSA_WITH_DES_CBC_SHA"] = SSL_RSA_WITH_DES_CBC_SHA;
137
- _ciphers["RSA_WITH_3DES_EDE_CBC_SHA"] = SSL_RSA_WITH_3DES_EDE_CBC_SHA;
138
- _ciphers["DH_DSS_EXPORT_WITH_DES40_CBC_SHA"] = SSL_DH_DSS_EXPORT_WITH_DES40_CBC_SHA;
139
- _ciphers["DH_DSS_WITH_DES_CBC_SHA"] = SSL_DH_DSS_WITH_DES_CBC_SHA;
140
- _ciphers["DH_DSS_WITH_3DES_EDE_CBC_SHA"] = SSL_DH_DSS_WITH_3DES_EDE_CBC_SHA;
141
- _ciphers["DH_RSA_EXPORT_WITH_DES40_CBC_SHA"] = SSL_DH_RSA_EXPORT_WITH_DES40_CBC_SHA;
142
- _ciphers["DH_RSA_WITH_DES_CBC_SHA"] = SSL_DH_RSA_WITH_DES_CBC_SHA;
143
- _ciphers["DH_RSA_WITH_3DES_EDE_CBC_SHA"] = SSL_DH_RSA_WITH_3DES_EDE_CBC_SHA;
144
- _ciphers["DHE_DSS_EXPORT_WITH_DES40_CBC_SHA"] = SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA;
145
- _ciphers["DHE_DSS_WITH_DES_CBC_SHA"] = SSL_DHE_DSS_WITH_DES_CBC_SHA;
146
- _ciphers["DHE_DSS_WITH_3DES_EDE_CBC_SHA"] = SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA;
147
- _ciphers["DHE_RSA_EXPORT_WITH_DES40_CBC_SHA"] = SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA;
148
- _ciphers["DHE_RSA_WITH_DES_CBC_SHA"] = SSL_DHE_RSA_WITH_DES_CBC_SHA;
149
- _ciphers["DHE_RSA_WITH_3DES_EDE_CBC_SHA"] = SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA;
150
- _ciphers["DH_anon_EXPORT_WITH_RC4_40_MD5"] = SSL_DH_anon_EXPORT_WITH_RC4_40_MD5;
151
- _ciphers["DH_anon_WITH_RC4_128_MD5"] = SSL_DH_anon_WITH_RC4_128_MD5;
152
- _ciphers["DH_anon_EXPORT_WITH_DES40_CBC_SHA"] = SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA;
153
- _ciphers["DH_anon_WITH_DES_CBC_SHA"] = SSL_DH_anon_WITH_DES_CBC_SHA;
154
- _ciphers["DH_anon_WITH_3DES_EDE_CBC_SHA"] = SSL_DH_anon_WITH_3DES_EDE_CBC_SHA;
155
- _ciphers["FORTEZZA_DMS_WITH_NULL_SHA"] = SSL_FORTEZZA_DMS_WITH_NULL_SHA;
156
- _ciphers["FORTEZZA_DMS_WITH_FORTEZZA_CBC_SHA"] = SSL_FORTEZZA_DMS_WITH_FORTEZZA_CBC_SHA;
157
-
158
- //
159
- // TLS addenda using AES, per RFC 3268
160
- //
161
- _ciphers["RSA_WITH_AES_128_CBC_SHA"] = TLS_RSA_WITH_AES_128_CBC_SHA;
162
- _ciphers["DH_DSS_WITH_AES_128_CBC_SHA"] = TLS_DH_DSS_WITH_AES_128_CBC_SHA;
163
- _ciphers["DH_RSA_WITH_AES_128_CBC_SHA"] = TLS_DH_RSA_WITH_AES_128_CBC_SHA;
164
- _ciphers["DHE_DSS_WITH_AES_128_CBC_SHA"] = TLS_DHE_DSS_WITH_AES_128_CBC_SHA;
165
- _ciphers["DHE_RSA_WITH_AES_128_CBC_SHA"] = TLS_DHE_RSA_WITH_AES_128_CBC_SHA;
166
- _ciphers["DH_anon_WITH_AES_128_CBC_SHA"] = TLS_DH_anon_WITH_AES_128_CBC_SHA;
167
- _ciphers["RSA_WITH_AES_256_CBC_SHA"] = TLS_RSA_WITH_AES_256_CBC_SHA;
168
- _ciphers["DH_DSS_WITH_AES_256_CBC_SHA"] = TLS_DH_DSS_WITH_AES_256_CBC_SHA;
169
- _ciphers["DH_RSA_WITH_AES_256_CBC_SHA"] = TLS_DH_RSA_WITH_AES_256_CBC_SHA;
170
- _ciphers["DHE_DSS_WITH_AES_256_CBC_SHA"] = TLS_DHE_DSS_WITH_AES_256_CBC_SHA;
171
- _ciphers["DHE_RSA_WITH_AES_256_CBC_SHA"] = TLS_DHE_RSA_WITH_AES_256_CBC_SHA;
172
- _ciphers["DH_anon_WITH_AES_256_CBC_SHA"] = TLS_DH_anon_WITH_AES_256_CBC_SHA;
173
-
174
- //
175
- // ECDSA addenda, RFC 4492
176
- //
177
- _ciphers["ECDH_ECDSA_WITH_NULL_SHA"] = TLS_ECDH_ECDSA_WITH_NULL_SHA;
178
- _ciphers["ECDH_ECDSA_WITH_RC4_128_SHA"] = TLS_ECDH_ECDSA_WITH_RC4_128_SHA;
179
- _ciphers["ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA"] = TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA;
180
- _ciphers["ECDH_ECDSA_WITH_AES_128_CBC_SHA"] = TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA;
181
- _ciphers["ECDH_ECDSA_WITH_AES_256_CBC_SHA"] = TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA;
182
- _ciphers["ECDHE_ECDSA_WITH_NULL_SHA"] = TLS_ECDHE_ECDSA_WITH_NULL_SHA;
183
- _ciphers["ECDHE_ECDSA_WITH_RC4_128_SHA"] = TLS_ECDHE_ECDSA_WITH_RC4_128_SHA;
184
- _ciphers["ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA"] = TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA;
185
- _ciphers["ECDHE_ECDSA_WITH_AES_128_CBC_SHA"] = TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA;
186
- _ciphers["ECDHE_ECDSA_WITH_AES_256_CBC_SHA"] = TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA;
187
- _ciphers["ECDH_RSA_WITH_NULL_SHA"] = TLS_ECDH_RSA_WITH_NULL_SHA;
188
- _ciphers["ECDH_RSA_WITH_RC4_128_SHA"] = TLS_ECDH_RSA_WITH_RC4_128_SHA;
189
- _ciphers["ECDH_RSA_WITH_3DES_EDE_CBC_SHA"] = TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA;
190
- _ciphers["ECDH_RSA_WITH_AES_128_CBC_SHA"] = TLS_ECDH_RSA_WITH_AES_128_CBC_SHA;
191
- _ciphers["ECDH_RSA_WITH_AES_256_CBC_SHA"] = TLS_ECDH_RSA_WITH_AES_256_CBC_SHA;
192
- _ciphers["ECDHE_RSA_WITH_NULL_SHA"] = TLS_ECDHE_RSA_WITH_NULL_SHA;
193
- _ciphers["ECDHE_RSA_WITH_RC4_128_SHA"] = TLS_ECDHE_RSA_WITH_RC4_128_SHA;
194
- _ciphers["ECDHE_RSA_WITH_3DES_EDE_CBC_SHA"] = TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA;
195
- _ciphers["ECDHE_RSA_WITH_AES_128_CBC_SHA"] = TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA;
196
- _ciphers["ECDHE_RSA_WITH_AES_256_CBC_SHA"] = TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA;
197
- _ciphers["ECDH_anon_WITH_NULL_SHA"] = TLS_ECDH_anon_WITH_NULL_SHA;
198
- _ciphers["ECDH_anon_WITH_RC4_128_SHA"] = TLS_ECDH_anon_WITH_RC4_128_SHA;
199
- _ciphers["ECDH_anon_WITH_3DES_EDE_CBC_SHA"] = TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA;
200
- _ciphers["ECDH_anon_WITH_AES_128_CBC_SHA"] = TLS_ECDH_anon_WITH_AES_128_CBC_SHA;
201
- _ciphers["ECDH_anon_WITH_AES_256_CBC_SHA"] = TLS_ECDH_anon_WITH_AES_256_CBC_SHA;
202
-
203
- //
204
- // TLS 1.2 addenda, RFC 5246
205
- //
206
- //_ciphers["NULL_WITH_NULL_NULL"] = TLS_NULL_WITH_NULL_NULL;
207
-
208
- //
209
- // Server provided RSA certificate for key exchange.
210
- //
211
- //_ciphers["RSA_WITH_NULL_MD5"] = TLS_RSA_WITH_NULL_MD5;
212
- //_ciphers["RSA_WITH_NULL_SHA"] = TLS_RSA_WITH_NULL_SHA;
213
- //_ciphers["RSA_WITH_RC4_128_MD5"] = TLS_RSA_WITH_RC4_128_MD5;
214
- //_ciphers["RSA_WITH_RC4_128_SHA"] = TLS_RSA_WITH_RC4_128_SHA;
215
- //_ciphers["RSA_WITH_3DES_EDE_CBC_SHA"] = TLS_RSA_WITH_3DES_EDE_CBC_SHA;
216
- _ciphers["RSA_WITH_NULL_SHA256"] = TLS_RSA_WITH_NULL_SHA256;
217
- _ciphers["RSA_WITH_AES_128_CBC_SHA256"] = TLS_RSA_WITH_AES_128_CBC_SHA256;
218
- _ciphers["RSA_WITH_AES_256_CBC_SHA256"] = TLS_RSA_WITH_AES_256_CBC_SHA256;
219
-
220
- //
221
- // Server-authenticated (and optionally client-authenticated) Diffie-Hellman.
222
- //
223
- //_ciphers["DH_DSS_WITH_3DES_EDE_CBC_SHA"] = TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA;
224
- //_ciphers["DH_RSA_WITH_3DES_EDE_CBC_SHA"] = TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA;
225
- //_ciphers["DHE_DSS_WITH_3DES_EDE_CBC_SHA"] = TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA;
226
- //_ciphers["DHE_RSA_WITH_3DES_EDE_CBC_SHA"] = TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA;
227
- _ciphers["DH_DSS_WITH_AES_128_CBC_SHA256"] = TLS_DH_DSS_WITH_AES_128_CBC_SHA256;
228
- _ciphers["DH_RSA_WITH_AES_128_CBC_SHA256"] = TLS_DH_RSA_WITH_AES_128_CBC_SHA256;
229
- _ciphers["DHE_DSS_WITH_AES_128_CBC_SHA256"] = TLS_DHE_DSS_WITH_AES_128_CBC_SHA256;
230
- _ciphers["DHE_RSA_WITH_AES_128_CBC_SHA256"] = TLS_DHE_RSA_WITH_AES_128_CBC_SHA256;
231
- _ciphers["DH_DSS_WITH_AES_256_CBC_SHA256"] = TLS_DH_DSS_WITH_AES_256_CBC_SHA256;
232
- _ciphers["DH_RSA_WITH_AES_256_CBC_SHA256"] = TLS_DH_RSA_WITH_AES_256_CBC_SHA256;
233
- _ciphers["DHE_DSS_WITH_AES_256_CBC_SHA256"] = TLS_DHE_DSS_WITH_AES_256_CBC_SHA256;
234
- _ciphers["DHE_RSA_WITH_AES_256_CBC_SHA256"] = TLS_DHE_RSA_WITH_AES_256_CBC_SHA256;
235
-
236
- //
237
- // Completely anonymous Diffie-Hellman
238
- //
239
- //_ciphers["DH_anon_WITH_RC4_128_MD5"] = TLS_DH_anon_WITH_RC4_128_MD5;
240
- //_ciphers["DH_anon_WITH_3DES_EDE_CBC_SHA"] = TLS_DH_anon_WITH_3DES_EDE_CBC_SHA;
241
- _ciphers["DH_anon_WITH_AES_128_CBC_SHA256"] = TLS_DH_anon_WITH_AES_128_CBC_SHA256;
242
- _ciphers["DH_anon_WITH_AES_256_CBC_SHA256"] = TLS_DH_anon_WITH_AES_256_CBC_SHA256;
243
-
244
- //
245
- // Addendum from RFC 4279, TLS PSK
246
- //
247
- _ciphers["PSK_WITH_RC4_128_SHA"] = TLS_PSK_WITH_RC4_128_SHA;
248
- _ciphers["PSK_WITH_3DES_EDE_CBC_SHA"] = TLS_PSK_WITH_3DES_EDE_CBC_SHA;
249
- _ciphers["PSK_WITH_AES_128_CBC_SHA"] = TLS_PSK_WITH_AES_128_CBC_SHA;
250
- _ciphers["PSK_WITH_AES_256_CBC_SHA"] = TLS_PSK_WITH_AES_256_CBC_SHA;
251
- _ciphers["DHE_PSK_WITH_RC4_128_SHA"] = TLS_DHE_PSK_WITH_RC4_128_SHA;
252
- _ciphers["DHE_PSK_WITH_3DES_EDE_CBC_SHA"] = TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA;
253
- _ciphers["DHE_PSK_WITH_AES_128_CBC_SHA"] = TLS_DHE_PSK_WITH_AES_128_CBC_SHA;
254
- _ciphers["DHE_PSK_WITH_AES_256_CBC_SHA"] = TLS_DHE_PSK_WITH_AES_256_CBC_SHA;
255
- _ciphers["RSA_PSK_WITH_RC4_128_SHA"] = TLS_RSA_PSK_WITH_RC4_128_SHA;
256
- _ciphers["RSA_PSK_WITH_3DES_EDE_CBC_SHA"] = TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA;
257
- _ciphers["RSA_PSK_WITH_AES_128_CBC_SHA"] = TLS_RSA_PSK_WITH_AES_128_CBC_SHA;
258
- _ciphers["RSA_PSK_WITH_AES_256_CBC_SHA"] = TLS_RSA_PSK_WITH_AES_256_CBC_SHA;
259
-
260
- //
261
- // RFC 4785 - Pre-Shared Key (PSK) Ciphersuites with NULL Encryption
262
- //
263
- _ciphers["PSK_WITH_NULL_SHA"] = TLS_PSK_WITH_NULL_SHA;
264
- _ciphers["DHE_PSK_WITH_NULL_SHA"] = TLS_DHE_PSK_WITH_NULL_SHA;
265
- _ciphers["RSA_PSK_WITH_NULL_SHA"] = TLS_RSA_PSK_WITH_NULL_SHA;
266
-
267
- //
268
- // Addenda from rfc 5288 AES Galois Counter Mode (GCM) Cipher Suites for TLS.
269
- //
270
- _ciphers["RSA_WITH_AES_128_GCM_SHA256"] = TLS_RSA_WITH_AES_128_GCM_SHA256;
271
- _ciphers["RSA_WITH_AES_256_GCM_SHA384"] = TLS_RSA_WITH_AES_256_GCM_SHA384;
272
- _ciphers["DHE_RSA_WITH_AES_128_GCM_SHA256"] = TLS_DHE_RSA_WITH_AES_128_GCM_SHA256;
273
- _ciphers["DHE_RSA_WITH_AES_256_GCM_SHA384"] = TLS_DHE_RSA_WITH_AES_256_GCM_SHA384;
274
- _ciphers["DH_RSA_WITH_AES_128_GCM_SHA256"] = TLS_DH_RSA_WITH_AES_128_GCM_SHA256;
275
- _ciphers["DH_RSA_WITH_AES_256_GCM_SHA384"] = TLS_DH_RSA_WITH_AES_256_GCM_SHA384;
276
- _ciphers["DHE_DSS_WITH_AES_128_GCM_SHA256"] = TLS_DHE_DSS_WITH_AES_128_GCM_SHA256;
277
- _ciphers["DHE_DSS_WITH_AES_256_GCM_SHA384"] = TLS_DHE_DSS_WITH_AES_256_GCM_SHA384;
278
- _ciphers["DH_DSS_WITH_AES_128_GCM_SHA256"] = TLS_DH_DSS_WITH_AES_128_GCM_SHA256;
279
- _ciphers["DH_DSS_WITH_AES_256_GCM_SHA384"] = TLS_DH_DSS_WITH_AES_256_GCM_SHA384;
280
- _ciphers["DH_anon_WITH_AES_128_GCM_SHA256"] = TLS_DH_anon_WITH_AES_128_GCM_SHA256;
281
- _ciphers["DH_anon_WITH_AES_256_GCM_SHA384"] = TLS_DH_anon_WITH_AES_256_GCM_SHA384;
282
-
283
- //
284
- // RFC 5487 - PSK with SHA-256/384 and AES GCM
285
- //
286
- _ciphers["PSK_WITH_AES_128_GCM_SHA256"] = TLS_PSK_WITH_AES_128_GCM_SHA256;
287
- _ciphers["PSK_WITH_AES_256_GCM_SHA384"] = TLS_PSK_WITH_AES_256_GCM_SHA384;
288
- _ciphers["DHE_PSK_WITH_AES_128_GCM_SHA256"] = TLS_DHE_PSK_WITH_AES_128_GCM_SHA256;
289
- _ciphers["DHE_PSK_WITH_AES_256_GCM_SHA384"] = TLS_DHE_PSK_WITH_AES_256_GCM_SHA384;
290
- _ciphers["RSA_PSK_WITH_AES_128_GCM_SHA256"] = TLS_RSA_PSK_WITH_AES_128_GCM_SHA256;
291
- _ciphers["RSA_PSK_WITH_AES_256_GCM_SHA384"] = TLS_RSA_PSK_WITH_AES_256_GCM_SHA384;
292
-
293
- _ciphers["PSK_WITH_AES_128_CBC_SHA256"] = TLS_PSK_WITH_AES_128_CBC_SHA256;
294
- _ciphers["PSK_WITH_AES_256_CBC_SHA384"] = TLS_PSK_WITH_AES_256_CBC_SHA384;
295
- _ciphers["PSK_WITH_NULL_SHA256"] = TLS_PSK_WITH_NULL_SHA256;
296
- _ciphers["PSK_WITH_NULL_SHA384"] = TLS_PSK_WITH_NULL_SHA384;
297
-
298
- _ciphers["DHE_PSK_WITH_AES_128_CBC_SHA256"] = TLS_DHE_PSK_WITH_AES_128_CBC_SHA256;
299
- _ciphers["DHE_PSK_WITH_AES_256_CBC_SHA384"] = TLS_DHE_PSK_WITH_AES_256_CBC_SHA384;
300
- _ciphers["DHE_PSK_WITH_NULL_SHA256"] = TLS_DHE_PSK_WITH_NULL_SHA256;
301
- _ciphers["DHE_PSK_WITH_NULL_SHA384"] = TLS_DHE_PSK_WITH_NULL_SHA384;
302
-
303
- _ciphers["RSA_PSK_WITH_AES_128_CBC_SHA256"] = TLS_RSA_PSK_WITH_AES_128_CBC_SHA256;
304
- _ciphers["RSA_PSK_WITH_AES_256_CBC_SHA384"] = TLS_RSA_PSK_WITH_AES_256_CBC_SHA384;
305
- _ciphers["RSA_PSK_WITH_NULL_SHA256"] = TLS_RSA_PSK_WITH_NULL_SHA256;
306
- _ciphers["RSA_PSK_WITH_NULL_SHA384"] = TLS_RSA_PSK_WITH_NULL_SHA384;
307
-
308
- //
309
- // Addenda from rfc 5289 Elliptic Curve Cipher Suites with HMAC SHA-256/384.
310
- //
311
- _ciphers["ECDHE_ECDSA_WITH_AES_128_CBC_SHA256"] = TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256;
312
- _ciphers["ECDHE_ECDSA_WITH_AES_256_CBC_SHA384"] = TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384;
313
- _ciphers["ECDH_ECDSA_WITH_AES_128_CBC_SHA256"] = TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256;
314
- _ciphers["ECDH_ECDSA_WITH_AES_256_CBC_SHA384"] = TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384;
315
- _ciphers["ECDHE_RSA_WITH_AES_128_CBC_SHA256"] = TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256;
316
- _ciphers["ECDHE_RSA_WITH_AES_256_CBC_SHA384"] = TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384;
317
- _ciphers["ECDH_RSA_WITH_AES_128_CBC_SHA256"] = TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256;
318
- _ciphers["ECDH_RSA_WITH_AES_256_CBC_SHA384"] = TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384;
319
-
320
- //
321
- // Addenda from rfc 5289 Elliptic Curve Cipher Suites with SHA-256/384 and AES Galois Counter Mode (GCM)
322
- //
323
- _ciphers["ECDHE_ECDSA_WITH_AES_128_GCM_SHA256"] = TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256;
324
- _ciphers["ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"] = TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384;
325
- _ciphers["ECDH_ECDSA_WITH_AES_128_GCM_SHA256"] = TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256;
326
- _ciphers["ECDH_ECDSA_WITH_AES_256_GCM_SHA384"] = TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384;
327
- _ciphers["ECDHE_RSA_WITH_AES_128_GCM_SHA256"] = TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256;
328
- _ciphers["ECDHE_RSA_WITH_AES_256_GCM_SHA384"] = TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384;
329
- _ciphers["ECDH_RSA_WITH_AES_128_GCM_SHA256"] = TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256;
330
- _ciphers["ECDH_RSA_WITH_AES_256_GCM_SHA384"] = TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384;
331
-
332
- //
333
- // RFC 5746 - Secure Renegotiation
334
- //
335
- _ciphers["EMPTY_RENEGOTIATION_INFO_SCSV"] = TLS_EMPTY_RENEGOTIATION_INFO_SCSV;
336
-
337
- //
338
- // Tags for SSL 2 cipher kinds that are not specified for SSL 3.
339
- //
340
- _ciphers["RSA_WITH_RC2_CBC_MD5"] = SSL_RSA_WITH_RC2_CBC_MD5;
341
- _ciphers["RSA_WITH_IDEA_CBC_MD5"] = SSL_RSA_WITH_IDEA_CBC_MD5;
342
- _ciphers["RSA_WITH_DES_CBC_MD5"] = SSL_RSA_WITH_DES_CBC_MD5;
343
- _ciphers["RSA_WITH_3DES_EDE_CBC_MD5"] = SSL_RSA_WITH_3DES_EDE_CBC_MD5;
344
- _ciphers["NO_SUCH_CIPHERSUITE"] = SSL_NO_SUCH_CIPHERSUITE;
345
-
346
- //
347
- // TLS 1.3 standard cipher suites
348
- //
349
- _ciphers["TLS_AES_128_GCM_SHA256"] = TLS_AES_128_GCM_SHA256;
350
- _ciphers["TLS_AES_256_GCM_SHA384"] = TLS_AES_256_GCM_SHA384;
351
- _ciphers["TLS_CHACHA20_POLY1305_SHA256"] = TLS_CHACHA20_POLY1305_SHA256;
352
- _ciphers["TLS_AES_128_CCM_SHA256"] = TLS_AES_128_CCM_SHA256;
353
- _ciphers["TLS_AES_128_CCM_8_SHA256"] = TLS_AES_128_CCM_8_SHA256;
354
-
355
- }
356
- }
357
-
358
- SSLCipherSuite
359
- CiphersHelper::cipherForName(const string& name)
360
- {
361
- map<string, SSLCipherSuite>::const_iterator i = _ciphers.find(name);
362
- if(i == _ciphers.end() || i->second == SSL_NO_SUCH_CIPHERSUITE)
363
- {
364
- throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: no such cipher " + name);
365
- }
366
- return i->second;
367
- }
368
-
369
- //
370
- // Retrive the name of a cipher, SSLCipherSuite inlude duplicated values for TLS/SSL
371
- // protocol ciphers, for example SSL_RSA_WITH_RC4_128_MD5/TLS_RSA_WITH_RC4_128_MD5
372
- // are represeted by the same SSLCipherSuite value, the names return by this method
373
- // doesn't include a protocol prefix.
374
- //
375
- string
376
- CiphersHelper::cipherName(SSLCipherSuite cipher)
377
- {
378
- switch(cipher)
379
- {
380
- case SSL_NULL_WITH_NULL_NULL:
381
- return "NULL_WITH_NULL_NULL";
382
- case SSL_RSA_WITH_NULL_MD5:
383
- return "RSA_WITH_NULL_MD5";
384
- case SSL_RSA_WITH_NULL_SHA:
385
- return "RSA_WITH_NULL_SHA";
386
- case SSL_RSA_EXPORT_WITH_RC4_40_MD5:
387
- return "RSA_EXPORT_WITH_RC4_40_MD5";
388
- case SSL_RSA_WITH_RC4_128_MD5:
389
- return "RSA_WITH_RC4_128_MD5";
390
- case SSL_RSA_WITH_RC4_128_SHA:
391
- return "RSA_WITH_RC4_128_SHA";
392
- case SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5:
393
- return "RSA_EXPORT_WITH_RC2_CBC_40_MD5";
394
- case SSL_RSA_WITH_IDEA_CBC_SHA:
395
- return "RSA_WITH_IDEA_CBC_SHA";
396
- case SSL_RSA_EXPORT_WITH_DES40_CBC_SHA:
397
- return "RSA_EXPORT_WITH_DES40_CBC_SHA";
398
- case SSL_RSA_WITH_DES_CBC_SHA:
399
- return "RSA_WITH_DES_CBC_SHA";
400
- case SSL_RSA_WITH_3DES_EDE_CBC_SHA:
401
- return "RSA_WITH_3DES_EDE_CBC_SHA";
402
- case SSL_DH_DSS_EXPORT_WITH_DES40_CBC_SHA:
403
- return "DH_DSS_EXPORT_WITH_DES40_CBC_SHA";
404
- case SSL_DH_DSS_WITH_DES_CBC_SHA:
405
- return "DH_DSS_WITH_DES_CBC_SHA";
406
- case SSL_DH_DSS_WITH_3DES_EDE_CBC_SHA:
407
- return "DH_DSS_WITH_3DES_EDE_CBC_SHA";
408
- case SSL_DH_RSA_EXPORT_WITH_DES40_CBC_SHA:
409
- return "DH_RSA_EXPORT_WITH_DES40_CBC_SHA";
410
- case SSL_DH_RSA_WITH_DES_CBC_SHA:
411
- return "DH_RSA_WITH_DES_CBC_SHA";
412
- case SSL_DH_RSA_WITH_3DES_EDE_CBC_SHA:
413
- return "DH_RSA_WITH_3DES_EDE_CBC_SHA";
414
- case SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA:
415
- return "DHE_DSS_EXPORT_WITH_DES40_CBC_SHA";
416
- case SSL_DHE_DSS_WITH_DES_CBC_SHA:
417
- return "DHE_DSS_WITH_DES_CBC_SHA";
418
- case SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA:
419
- return "DHE_DSS_WITH_3DES_EDE_CBC_SHA";
420
- case SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA:
421
- return "DHE_RSA_EXPORT_WITH_DES40_CBC_SHA";
422
- case SSL_DHE_RSA_WITH_DES_CBC_SHA:
423
- return "DHE_RSA_WITH_DES_CBC_SHA";
424
- case SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA:
425
- return "DHE_RSA_WITH_3DES_EDE_CBC_SHA";
426
- case SSL_DH_anon_EXPORT_WITH_RC4_40_MD5:
427
- return "DH_anon_EXPORT_WITH_RC4_40_MD5";
428
- case SSL_DH_anon_WITH_RC4_128_MD5:
429
- return "DH_anon_WITH_RC4_128_MD5";
430
- case SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA:
431
- return "DH_anon_EXPORT_WITH_DES40_CBC_SHA";
432
- case SSL_DH_anon_WITH_DES_CBC_SHA:
433
- return "DH_anon_WITH_DES_CBC_SHA";
434
- case SSL_DH_anon_WITH_3DES_EDE_CBC_SHA:
435
- return "DH_anon_WITH_3DES_EDE_CBC_SHA";
436
- case SSL_FORTEZZA_DMS_WITH_NULL_SHA:
437
- return "FORTEZZA_DMS_WITH_NULL_SHA";
438
- case SSL_FORTEZZA_DMS_WITH_FORTEZZA_CBC_SHA:
439
- return "FORTEZZA_DMS_WITH_FORTEZZA_CBC_SHA";
440
-
441
- //
442
- // TLS addenda using AES, per RFC 3268
443
- //
444
- case TLS_RSA_WITH_AES_128_CBC_SHA:
445
- return "RSA_WITH_AES_128_CBC_SHA";
446
- case TLS_DH_DSS_WITH_AES_128_CBC_SHA:
447
- return "DH_DSS_WITH_AES_128_CBC_SHA";
448
- case TLS_DH_RSA_WITH_AES_128_CBC_SHA:
449
- return "DH_RSA_WITH_AES_128_CBC_SHA";
450
- case TLS_DHE_DSS_WITH_AES_128_CBC_SHA:
451
- return "DHE_DSS_WITH_AES_128_CBC_SHA";
452
- case TLS_DHE_RSA_WITH_AES_128_CBC_SHA:
453
- return "DHE_RSA_WITH_AES_128_CBC_SHA";
454
- case TLS_DH_anon_WITH_AES_128_CBC_SHA:
455
- return "DH_anon_WITH_AES_128_CBC_SHA";
456
- case TLS_RSA_WITH_AES_256_CBC_SHA:
457
- return "RSA_WITH_AES_256_CBC_SHA";
458
- case TLS_DH_DSS_WITH_AES_256_CBC_SHA:
459
- return "DH_DSS_WITH_AES_256_CBC_SHA";
460
- case TLS_DH_RSA_WITH_AES_256_CBC_SHA:
461
- return "DH_RSA_WITH_AES_256_CBC_SHA";
462
- case TLS_DHE_DSS_WITH_AES_256_CBC_SHA:
463
- return "DHE_DSS_WITH_AES_256_CBC_SHA";
464
- case TLS_DHE_RSA_WITH_AES_256_CBC_SHA:
465
- return "DHE_RSA_WITH_AES_256_CBC_SHA";
466
- case TLS_DH_anon_WITH_AES_256_CBC_SHA:
467
- return "DH_anon_WITH_AES_256_CBC_SHA";
468
-
469
- //
470
- // ECDSA addenda, RFC 4492
471
- //
472
- case TLS_ECDH_ECDSA_WITH_NULL_SHA:
473
- return "ECDH_ECDSA_WITH_NULL_SHA";
474
- case TLS_ECDH_ECDSA_WITH_RC4_128_SHA:
475
- return "ECDH_ECDSA_WITH_RC4_128_SHA";
476
- case TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA:
477
- return "ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA";
478
- case TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA:
479
- return "ECDH_ECDSA_WITH_AES_128_CBC_SHA";
480
- case TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA:
481
- return "ECDH_ECDSA_WITH_AES_256_CBC_SHA";
482
- case TLS_ECDHE_ECDSA_WITH_NULL_SHA:
483
- return "ECDHE_ECDSA_WITH_NULL_SHA";
484
- case TLS_ECDHE_ECDSA_WITH_RC4_128_SHA:
485
- return "ECDHE_ECDSA_WITH_RC4_128_SHA";
486
- case TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA:
487
- return "ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA";
488
- case TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA:
489
- return "ECDHE_ECDSA_WITH_AES_128_CBC_SHA";
490
- case TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA:
491
- return "ECDHE_ECDSA_WITH_AES_256_CBC_SHA";
492
- case TLS_ECDH_RSA_WITH_NULL_SHA:
493
- return "ECDH_RSA_WITH_NULL_SHA";
494
- case TLS_ECDH_RSA_WITH_RC4_128_SHA:
495
- return "ECDH_RSA_WITH_RC4_128_SHA";
496
- case TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA:
497
- return "ECDH_RSA_WITH_3DES_EDE_CBC_SHA";
498
- case TLS_ECDH_RSA_WITH_AES_128_CBC_SHA:
499
- return "ECDH_RSA_WITH_AES_128_CBC_SHA";
500
- case TLS_ECDH_RSA_WITH_AES_256_CBC_SHA:
501
- return "ECDH_RSA_WITH_AES_256_CBC_SHA";
502
- case TLS_ECDHE_RSA_WITH_NULL_SHA:
503
- return "ECDHE_RSA_WITH_NULL_SHA";
504
- case TLS_ECDHE_RSA_WITH_RC4_128_SHA:
505
- return "ECDHE_RSA_WITH_RC4_128_SHA";
506
- case TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA:
507
- return "ECDHE_RSA_WITH_3DES_EDE_CBC_SHA";
508
- case TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA:
509
- return "ECDHE_RSA_WITH_AES_128_CBC_SHA";
510
- case TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA:
511
- return "ECDHE_RSA_WITH_AES_256_CBC_SHA";
512
- case TLS_ECDH_anon_WITH_NULL_SHA:
513
- return "ECDH_anon_WITH_NULL_SHA";
514
- case TLS_ECDH_anon_WITH_RC4_128_SHA:
515
- return "ECDH_anon_WITH_RC4_128_SHA";
516
- case TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA:
517
- return "ECDH_anon_WITH_3DES_EDE_CBC_SHA";
518
- case TLS_ECDH_anon_WITH_AES_128_CBC_SHA:
519
- return "ECDH_anon_WITH_AES_128_CBC_SHA";
520
- case TLS_ECDH_anon_WITH_AES_256_CBC_SHA:
521
- return "ECDH_anon_WITH_AES_256_CBC_SHA";
522
-
523
- //
524
- // TLS 1.2 addenda, RFC 5246
525
- //
526
- //case TLS_NULL_WITH_NULL_NULL:
527
- // return "NULL_WITH_NULL_NULL";
528
-
529
- //
530
- // Server provided RSA certificate for key exchange.
531
- //
532
- //case TLS_RSA_WITH_NULL_MD5:
533
- // return "RSA_WITH_NULL_MD5";
534
- //case TLS_RSA_WITH_NULL_SHA:
535
- // return "RSA_WITH_NULL_SHA";
536
- //case TLS_RSA_WITH_RC4_128_MD5:
537
- // return "RSA_WITH_RC4_128_MD5";
538
- //case TLS_RSA_WITH_RC4_128_SHA:
539
- // return "RSA_WITH_RC4_128_SHA";
540
- //case TLS_RSA_WITH_3DES_EDE_CBC_SHA:
541
- // return "RSA_WITH_3DES_EDE_CBC_SHA";
542
- case TLS_RSA_WITH_NULL_SHA256:
543
- return "RSA_WITH_NULL_SHA256";
544
- case TLS_RSA_WITH_AES_128_CBC_SHA256:
545
- return "RSA_WITH_AES_128_CBC_SHA256";
546
- case TLS_RSA_WITH_AES_256_CBC_SHA256:
547
- return "RSA_WITH_AES_256_CBC_SHA256";
548
-
549
- //
550
- // Server-authenticated (and optionally client-authenticated) Diffie-Hellman.
551
- //
552
- //case TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA:
553
- // return "DH_DSS_WITH_3DES_EDE_CBC_SHA";
554
- //case TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA:
555
- // return "DH_RSA_WITH_3DES_EDE_CBC_SHA";
556
- //case TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA:
557
- // return "DHE_DSS_WITH_3DES_EDE_CBC_SHA";
558
- //case TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA:
559
- // return "DHE_RSA_WITH_3DES_EDE_CBC_SHA";
560
- case TLS_DH_DSS_WITH_AES_128_CBC_SHA256:
561
- return "DH_DSS_WITH_AES_128_CBC_SHA256";
562
- case TLS_DH_RSA_WITH_AES_128_CBC_SHA256:
563
- return "DH_RSA_WITH_AES_128_CBC_SHA256";
564
- case TLS_DHE_DSS_WITH_AES_128_CBC_SHA256:
565
- return "DHE_DSS_WITH_AES_128_CBC_SHA256";
566
- case TLS_DHE_RSA_WITH_AES_128_CBC_SHA256:
567
- return "DHE_RSA_WITH_AES_128_CBC_SHA256";
568
- case TLS_DH_DSS_WITH_AES_256_CBC_SHA256:
569
- return "DH_DSS_WITH_AES_256_CBC_SHA256";
570
- case TLS_DH_RSA_WITH_AES_256_CBC_SHA256:
571
- return "DH_RSA_WITH_AES_256_CBC_SHA256";
572
- case TLS_DHE_DSS_WITH_AES_256_CBC_SHA256:
573
- return "DHE_DSS_WITH_AES_256_CBC_SHA256";
574
- case TLS_DHE_RSA_WITH_AES_256_CBC_SHA256:
575
- return "DHE_RSA_WITH_AES_256_CBC_SHA256";
576
-
577
- //
578
- // Completely anonymous Diffie-Hellman
579
- //
580
- //case TLS_DH_anon_WITH_RC4_128_MD5:
581
- // return "DH_anon_WITH_RC4_128_MD5";
582
- //case TLS_DH_anon_WITH_3DES_EDE_CBC_SHA:
583
- // return "DH_anon_WITH_3DES_EDE_CBC_SHA";
584
- case TLS_DH_anon_WITH_AES_128_CBC_SHA256:
585
- return "DH_anon_WITH_AES_128_CBC_SHA256";
586
- case TLS_DH_anon_WITH_AES_256_CBC_SHA256:
587
- return "DH_anon_WITH_AES_256_CBC_SHA256";
588
-
589
- //
590
- // Addendum from RFC 4279, TLS PSK
591
- //
592
- case TLS_PSK_WITH_RC4_128_SHA:
593
- return "PSK_WITH_RC4_128_SHA";
594
- case TLS_PSK_WITH_3DES_EDE_CBC_SHA:
595
- return "PSK_WITH_3DES_EDE_CBC_SHA";
596
- case TLS_PSK_WITH_AES_128_CBC_SHA:
597
- return "PSK_WITH_AES_128_CBC_SHA";
598
- case TLS_PSK_WITH_AES_256_CBC_SHA:
599
- return "PSK_WITH_AES_256_CBC_SHA";
600
- case TLS_DHE_PSK_WITH_RC4_128_SHA:
601
- return "DHE_PSK_WITH_RC4_128_SHA";
602
- case TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA:
603
- return "DHE_PSK_WITH_3DES_EDE_CBC_SHA";
604
- case TLS_DHE_PSK_WITH_AES_128_CBC_SHA:
605
- return "DHE_PSK_WITH_AES_128_CBC_SHA";
606
- case TLS_DHE_PSK_WITH_AES_256_CBC_SHA:
607
- return "DHE_PSK_WITH_AES_256_CBC_SHA";
608
- case TLS_RSA_PSK_WITH_RC4_128_SHA:
609
- return "RSA_PSK_WITH_RC4_128_SHA";
610
- case TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA:
611
- return "RSA_PSK_WITH_3DES_EDE_CBC_SHA";
612
- case TLS_RSA_PSK_WITH_AES_128_CBC_SHA:
613
- return "RSA_PSK_WITH_AES_128_CBC_SHA";
614
- case TLS_RSA_PSK_WITH_AES_256_CBC_SHA:
615
- return "RSA_PSK_WITH_AES_256_CBC_SHA";
616
-
617
- //
618
- // RFC 4785 - Pre-Shared Key (PSK) Ciphersuites with NULL Encryption
619
- //
620
- case TLS_PSK_WITH_NULL_SHA:
621
- return "PSK_WITH_NULL_SHA";
622
- case TLS_DHE_PSK_WITH_NULL_SHA:
623
- return "DHE_PSK_WITH_NULL_SHA";
624
- case TLS_RSA_PSK_WITH_NULL_SHA:
625
- return "RSA_PSK_WITH_NULL_SHA";
626
-
627
- //
628
- // Addenda from rfc 5288 AES Galois Counter Mode (GCM) Cipher Suites for TLS.
629
- //
630
- case TLS_RSA_WITH_AES_128_GCM_SHA256:
631
- return "RSA_WITH_AES_128_GCM_SHA256";
632
- case TLS_RSA_WITH_AES_256_GCM_SHA384:
633
- return "RSA_WITH_AES_256_GCM_SHA384";
634
- case TLS_DHE_RSA_WITH_AES_128_GCM_SHA256:
635
- return "DHE_RSA_WITH_AES_128_GCM_SHA256";
636
- case TLS_DHE_RSA_WITH_AES_256_GCM_SHA384:
637
- return "DHE_RSA_WITH_AES_256_GCM_SHA384";
638
- case TLS_DH_RSA_WITH_AES_128_GCM_SHA256:
639
- return "DH_RSA_WITH_AES_128_GCM_SHA256";
640
- case TLS_DH_RSA_WITH_AES_256_GCM_SHA384:
641
- return "DH_RSA_WITH_AES_256_GCM_SHA384";
642
- case TLS_DHE_DSS_WITH_AES_128_GCM_SHA256:
643
- return "DHE_DSS_WITH_AES_128_GCM_SHA256";
644
- case TLS_DHE_DSS_WITH_AES_256_GCM_SHA384:
645
- return "DHE_DSS_WITH_AES_256_GCM_SHA384";
646
- case TLS_DH_DSS_WITH_AES_128_GCM_SHA256:
647
- return "DH_DSS_WITH_AES_128_GCM_SHA256";
648
- case TLS_DH_DSS_WITH_AES_256_GCM_SHA384:
649
- return "DH_DSS_WITH_AES_256_GCM_SHA384";
650
- case TLS_DH_anon_WITH_AES_128_GCM_SHA256:
651
- return "DH_anon_WITH_AES_128_GCM_SHA256";
652
- case TLS_DH_anon_WITH_AES_256_GCM_SHA384:
653
- return "DH_anon_WITH_AES_256_GCM_SHA384";
654
-
655
- //
656
- // RFC 5487 - PSK with SHA-256/384 and AES GCM
657
- //
658
- case TLS_PSK_WITH_AES_128_GCM_SHA256:
659
- return "PSK_WITH_AES_128_GCM_SHA256";
660
- case TLS_PSK_WITH_AES_256_GCM_SHA384:
661
- return "PSK_WITH_AES_256_GCM_SHA384";
662
- case TLS_DHE_PSK_WITH_AES_128_GCM_SHA256:
663
- return "DHE_PSK_WITH_AES_128_GCM_SHA256";
664
- case TLS_DHE_PSK_WITH_AES_256_GCM_SHA384:
665
- return "DHE_PSK_WITH_AES_256_GCM_SHA384";
666
- case TLS_RSA_PSK_WITH_AES_128_GCM_SHA256:
667
- return "RSA_PSK_WITH_AES_128_GCM_SHA256";
668
- case TLS_RSA_PSK_WITH_AES_256_GCM_SHA384:
669
- return "RSA_PSK_WITH_AES_256_GCM_SHA384";
670
-
671
- case TLS_PSK_WITH_AES_128_CBC_SHA256:
672
- return "PSK_WITH_AES_128_CBC_SHA256";
673
- case TLS_PSK_WITH_AES_256_CBC_SHA384:
674
- return "PSK_WITH_AES_256_CBC_SHA384";
675
- case TLS_PSK_WITH_NULL_SHA256:
676
- return "WITH_NULL_SHA256";
677
- case TLS_PSK_WITH_NULL_SHA384:
678
- return "PSK_WITH_NULL_SHA384";
679
-
680
- case TLS_DHE_PSK_WITH_AES_128_CBC_SHA256:
681
- return "DHE_PSK_WITH_AES_128_CBC_SHA256";
682
- case TLS_DHE_PSK_WITH_AES_256_CBC_SHA384:
683
- return "DHE_PSK_WITH_AES_256_CBC_SHA384";
684
- case TLS_DHE_PSK_WITH_NULL_SHA256:
685
- return "DHE_PSK_WITH_NULL_SHA256";
686
- case TLS_DHE_PSK_WITH_NULL_SHA384:
687
- return "DHE_PSK_WITH_NULL_SHA384";
688
-
689
- case TLS_RSA_PSK_WITH_AES_128_CBC_SHA256:
690
- return "RSA_PSK_WITH_AES_128_CBC_SHA256";
691
- case TLS_RSA_PSK_WITH_AES_256_CBC_SHA384:
692
- return "RSA_PSK_WITH_AES_256_CBC_SHA384";
693
- case TLS_RSA_PSK_WITH_NULL_SHA256:
694
- return "RSA_PSK_WITH_NULL_SHA256";
695
- case TLS_RSA_PSK_WITH_NULL_SHA384:
696
- return "RSA_PSK_WITH_NULL_SHA384";
697
-
698
- //
699
- // Addenda from rfc 5289 Elliptic Curve Cipher Suites with HMAC SHA-256/384.
700
- //
701
- case TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256:
702
- return "ECDHE_ECDSA_WITH_AES_128_CBC_SHA256";
703
- case TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384:
704
- return "ECDHE_ECDSA_WITH_AES_256_CBC_SHA384";
705
- case TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256:
706
- return "ECDH_ECDSA_WITH_AES_128_CBC_SHA256";
707
- case TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384:
708
- return "ECDH_ECDSA_WITH_AES_256_CBC_SHA384";
709
- case TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256:
710
- return "ECDHE_RSA_WITH_AES_128_CBC_SHA256";
711
- case TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384:
712
- return "ECDHE_RSA_WITH_AES_256_CBC_SHA384";
713
- case TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256:
714
- return "ECDH_RSA_WITH_AES_128_CBC_SHA256";
715
- case TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384:
716
- return "ECDH_RSA_WITH_AES_256_CBC_SHA384";
717
-
718
- //
719
- // Addenda from rfc 5289 Elliptic Curve Cipher Suites with SHA-256/384 and AES Galois Counter Mode (GCM)
720
- //
721
- case TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:
722
- return "ECDHE_ECDSA_WITH_AES_128_GCM_SHA256";
723
- case TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384:
724
- return "ECDHE_ECDSA_WITH_AES_256_GCM_SHA384";
725
- case TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256:
726
- return "ECDH_ECDSA_WITH_AES_128_GCM_SHA256";
727
- case TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384:
728
- return "ECDH_ECDSA_WITH_AES_256_GCM_SHA384";
729
- case TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256:
730
- return "ECDHE_RSA_WITH_AES_128_GCM_SHA256";
731
- case TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384:
732
- return "ECDHE_RSA_WITH_AES_256_GCM_SHA384";
733
- case TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256:
734
- return "ECDH_RSA_WITH_AES_128_GCM_SHA256";
735
- case TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384:
736
- return "ECDH_RSA_WITH_AES_256_GCM_SHA384";
737
-
738
- //
739
- // RFC 5746 - Secure Renegotiation
740
- //
741
- case TLS_EMPTY_RENEGOTIATION_INFO_SCSV:
742
- return "EMPTY_RENEGOTIATION_INFO_SCSV";
743
-
744
- //
745
- // Tags for SSL 2 cipher kinds that are not specified for SSL 3.
746
- //
747
- case SSL_RSA_WITH_RC2_CBC_MD5:
748
- return "RSA_WITH_RC2_CBC_MD5";
749
- case SSL_RSA_WITH_IDEA_CBC_MD5:
750
- return "RSA_WITH_IDEA_CBC_MD5";
751
- case SSL_RSA_WITH_DES_CBC_MD5:
752
- return "RSA_WITH_DES_CBC_MD5";
753
- case SSL_RSA_WITH_3DES_EDE_CBC_MD5:
754
- return "RSA_WITH_3DES_EDE_CBC_MD5";
755
-
756
- //
757
- //TLS 1.3 standard cipher suites
758
- //
759
- case TLS_AES_128_GCM_SHA256:
760
- return "TLS_AES_128_GCM_SHA256";
761
- case TLS_AES_256_GCM_SHA384:
762
- return "TLS_AES_256_GCM_SHA384";
763
- case TLS_CHACHA20_POLY1305_SHA256:
764
- return "TLS_CHACHA20_POLY1305_SHA256";
765
- case TLS_AES_128_CCM_SHA256:
766
- return "TLS_AES_128_CCM_SHA256";
767
- case TLS_AES_128_CCM_8_SHA256:
768
- return "TLS_AES_128_CCM_8_SHA256";
769
-
770
- default:
771
- return "";
772
- }
773
- }
774
-
775
- map<string, SSLCipherSuite>
776
- CiphersHelper::ciphers()
777
- {
778
- return _ciphers;
779
- }
780
-
781
- SSLProtocol
782
- parseProtocol(const string& p)
783
- {
784
- const string prot = IceUtilInternal::toUpper(p);
785
- if(prot == "SSL3" || prot == "SSLV3")
786
- {
787
- return kSSLProtocol3;
788
- }
789
- else if(prot == "TLS" || prot == "TLS1" || prot == "TLSV1" || prot == "TLS1_0" || prot == "TLSV1_0")
790
- {
791
- return kTLSProtocol1;
792
- }
793
- else if(prot == "TLS1_1" || prot == "TLSV1_1")
794
- {
795
- return kTLSProtocol11;
796
- }
797
- else if(prot == "TLS1_2" || prot == "TLSV1_2")
798
- {
799
- return kTLSProtocol12;
800
- }
801
- else if(prot == "TLS1_3" || prot == "TLSV1_3")
802
- {
803
- return kTLSProtocol13;
804
- }
805
- else
806
- {
807
- throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: unrecognized protocol `" + p + "'");
808
- }
809
- }
810
-
811
- }
812
-
813
- IceUtil::Shared*
814
- IceSSL::SecureTransport::upCast(IceSSL::SecureTransport::SSLEngine* p)
815
- {
816
- return p;
817
- }
818
-
819
- IceSSL::SecureTransport::SSLEngine::SSLEngine(const Ice::CommunicatorPtr& communicator) :
820
- IceSSL::SSLEngine(communicator),
821
- _certificateAuthorities(0),
822
- _chain(0),
823
- _protocolVersionMax(kSSLProtocolUnknown),
824
- _protocolVersionMin(kSSLProtocolUnknown)
825
- {
826
- }
827
-
828
- //
829
- // Setup the engine.
830
- //
831
- void
832
- IceSSL::SecureTransport::SSLEngine::initialize()
833
- {
834
- IceUtil::Mutex::Lock lock(_mutex);
835
- if(_initialized)
836
- {
837
- return;
838
- }
839
-
840
- IceSSL::SSLEngine::initialize();
841
-
842
- const PropertiesPtr properties = communicator()->getProperties();
843
-
844
- //
845
- // Check for a default directory. We look in this directory for
846
- // files mentioned in the configuration.
847
- //
848
- const string defaultDir = properties->getProperty("IceSSL.DefaultDir");
849
-
850
- //
851
- // Load the CA certificates used to authenticate peers into
852
- // _certificateAuthorities array.
853
- //
854
- try
855
- {
856
- string caFile = properties->getProperty("IceSSL.CAs");
857
- if(caFile.empty())
858
- {
859
- caFile = properties->getProperty("IceSSL.CertAuthFile");
860
- }
861
- if(!caFile.empty())
862
- {
863
- string resolved;
864
- if(!checkPath(caFile, defaultDir, false, resolved))
865
- {
866
- throw PluginInitializationException(__FILE__, __LINE__,
867
- "IceSSL: CA certificate file not found:\n" + caFile);
868
- }
869
- _certificateAuthorities.reset(loadCACertificates(resolved));
870
- }
871
- else if(properties->getPropertyAsInt("IceSSL.UsePlatformCAs") <= 0)
872
- {
873
- // Setup an empty list of Root CAs to not use the system root CAs.
874
- _certificateAuthorities.reset(CFArrayCreate(0, 0, 0, 0));
875
- }
876
- }
877
- catch(const CertificateReadException& ce)
878
- {
879
- throw PluginInitializationException(__FILE__, __LINE__, ce.reason);
880
- }
881
-
882
- const string password = properties->getProperty("IceSSL.Password");
883
- const int passwordRetryMax = properties->getPropertyAsIntWithDefault("IceSSL.PasswordRetryMax", 3);
884
- PasswordPromptPtr passwordPrompt = getPasswordPrompt();
885
-
886
- string certFile = properties->getProperty("IceSSL.CertFile");
887
- string findCert = properties->getProperty("IceSSL.FindCert");
888
- string keychain = properties->getProperty("IceSSL.Keychain");
889
- string keychainPassword = properties->getProperty("IceSSL.KeychainPassword");
890
-
891
- if(!certFile.empty())
892
- {
893
- vector<string> files;
894
- if(!IceUtilInternal::splitString(certFile, IceUtilInternal::pathsep, files) || files.size() > 2)
895
- {
896
- throw PluginInitializationException(__FILE__, __LINE__,
897
- "IceSSL: invalid value for IceSSL.CertFile:\n" + certFile);
898
- }
899
- vector<string> keyFiles;
900
- {
901
- string keyFile = properties->getProperty("IceSSL.KeyFile");
902
- if(!keyFile.empty())
903
- {
904
- if(!IceUtilInternal::splitString(keyFile, IceUtilInternal::pathsep, keyFiles) || keyFiles.size() > 2)
905
- {
906
- throw PluginInitializationException(__FILE__, __LINE__,
907
- "IceSSL: invalid value for IceSSL.KeyFile:\n" + keyFile);
908
- }
909
- if(files.size() != keyFiles.size())
910
- {
911
- throw PluginInitializationException(__FILE__, __LINE__,
912
- "IceSSL: IceSSL.KeyFile does not agree with IceSSL.CertFile");
913
- }
914
- }
915
- }
916
-
917
- for(size_t i = 0; i < files.size(); ++i)
918
- {
919
- string file = files[i];
920
- string keyFile = keyFiles.empty() ? "" : keyFiles[i];
921
- string resolved;
922
-
923
- if(!checkPath(file, defaultDir, false, resolved))
924
- {
925
- throw PluginInitializationException(__FILE__, __LINE__,
926
- "IceSSL: certificate file not found:\n" + file);
927
- }
928
- file = resolved;
929
-
930
- if(!keyFile.empty())
931
- {
932
- if(!checkPath(keyFile, defaultDir, false, resolved))
933
- {
934
- throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: key file not found:\n" + keyFile);
935
- }
936
- keyFile = resolved;
937
- }
938
-
939
- try
940
- {
941
- _chain.reset(loadCertificateChain(file, keyFile, keychain, keychainPassword, password, passwordPrompt,
942
- passwordRetryMax));
943
- break;
944
- }
945
- catch(const CertificateReadException& ce)
946
- {
947
- //
948
- // If this is the last certificate rethrow the exception as PluginInitializationException,
949
- // otherwise try the next certificate.
950
- //
951
- if(i == files.size() - 1)
952
- {
953
- throw PluginInitializationException(__FILE__, __LINE__, ce.reason);
954
- }
955
- }
956
- }
957
- }
958
- else if(!findCert.empty())
959
- {
960
- _chain.reset(findCertificateChain(keychain, keychainPassword, findCert));
961
- }
962
-
963
- //
964
- // DiffieHellmanParams in DER format.
965
- //
966
- #if defined(ICE_USE_SECURE_TRANSPORT_MACOS)
967
- string dhFile = properties->getProperty("IceSSL.DHParams");
968
- if(!dhFile.empty())
969
- {
970
- string resolved;
971
- if(!checkPath(dhFile, defaultDir, false, resolved))
972
- {
973
- throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: DH params file not found:\n" + dhFile);
974
- }
975
-
976
- readFile(resolved, _dhParams);
977
- }
978
- #endif
979
-
980
- //
981
- // Establish the cipher list.
982
- //
983
- const string ciphers = properties->getProperty("IceSSL.Ciphers");
984
- CiphersHelper::initialize();
985
-
986
- if(!ciphers.empty())
987
- {
988
- parseCiphers(ciphers);
989
- }
990
-
991
- if(securityTraceLevel() >= 1)
992
- {
993
- ostringstream os;
994
- os << "enabling SSL ciphersuites:";
995
-
996
- if(_ciphers.empty())
997
- {
998
- map<string, SSLCipherSuite> enabled = CiphersHelper::ciphers();
999
- for(map<string, SSLCipherSuite>::const_iterator i = enabled.begin(); i != enabled.end(); ++i)
1000
- {
1001
- os << "\n " << i->first;
1002
- }
1003
- }
1004
- else
1005
- {
1006
- for(vector<SSLCipherSuite>::const_iterator i = _ciphers.begin(); i != _ciphers.end(); ++i)
1007
- {
1008
- os << "\n " << getCipherName(*i);
1009
- }
1010
- }
1011
- getLogger()->trace(securityTraceCategory(), os.str());
1012
- }
1013
-
1014
- //
1015
- // Parse protocols
1016
- //
1017
- const string protocolVersionMax = properties->getProperty("IceSSL.ProtocolVersionMax");
1018
- if(!protocolVersionMax.empty())
1019
- {
1020
- _protocolVersionMax = parseProtocol(protocolVersionMax);
1021
- }
1022
-
1023
- //
1024
- // The default min protocol version is set to TLS1.0 to avoid security issues with SSLv3
1025
- //
1026
- const string protocolVersionMin = properties->getPropertyWithDefault("IceSSL.ProtocolVersionMin", "tls1_0");
1027
- if(!protocolVersionMin.empty())
1028
- {
1029
- _protocolVersionMin = parseProtocol(protocolVersionMin);
1030
- }
1031
- _initialized = true;
1032
- }
1033
-
1034
- //
1035
- // Destroy the engine.
1036
- //
1037
- void
1038
- IceSSL::SecureTransport::SSLEngine::destroy()
1039
- {
1040
- }
1041
-
1042
- IceInternal::TransceiverPtr
1043
- IceSSL::SecureTransport::SSLEngine::createTransceiver(const InstancePtr& instance,
1044
- const IceInternal::TransceiverPtr& delegate,
1045
- const string& hostOrAdapterName,
1046
- bool incoming)
1047
- {
1048
- return new IceSSL::SecureTransport::TransceiverI(instance, delegate, hostOrAdapterName, incoming);
1049
- }
1050
-
1051
- SSLContextRef
1052
- IceSSL::SecureTransport::SSLEngine::newContext(bool incoming)
1053
- {
1054
- SSLContextRef ssl = SSLCreateContext(kCFAllocatorDefault, incoming ? kSSLServerSide : kSSLClientSide,
1055
- kSSLStreamType);
1056
- if(!ssl)
1057
- {
1058
- throw SecurityException(__FILE__, __LINE__, "IceSSL: unable to create SSL context");
1059
- }
1060
-
1061
- OSStatus err = noErr;
1062
- if(incoming)
1063
- {
1064
- switch(getVerifyPeer())
1065
- {
1066
- case 0:
1067
- {
1068
- SSLSetClientSideAuthenticate(ssl, kNeverAuthenticate);
1069
- break;
1070
- }
1071
- case 1:
1072
- {
1073
- SSLSetClientSideAuthenticate(ssl, kTryAuthenticate);
1074
- break;
1075
- }
1076
- case 2:
1077
- {
1078
- SSLSetClientSideAuthenticate(ssl, kAlwaysAuthenticate);
1079
- break;
1080
- }
1081
- default:
1082
- {
1083
- assert(false);
1084
- break;
1085
- }
1086
- }
1087
-
1088
- #if defined(ICE_USE_SECURE_TRANSPORT_MACOS)
1089
- if(!_dhParams.empty())
1090
- {
1091
- if((err = SSLSetDiffieHellmanParams(ssl, &_dhParams[0], _dhParams.size())))
1092
- {
1093
- throw SecurityException(__FILE__, __LINE__,
1094
- "IceSSL: unable to create the trust object:\n" + sslErrorToString(err));
1095
- }
1096
- }
1097
- #endif
1098
- }
1099
-
1100
- if(_chain && (err = SSLSetCertificate(ssl, _chain.get())))
1101
- {
1102
- throw SecurityException(__FILE__, __LINE__,
1103
- "IceSSL: error while setting the SSL context certificate:\n" + sslErrorToString(err));
1104
- }
1105
-
1106
- if(!_ciphers.empty())
1107
- {
1108
- if((err = SSLSetEnabledCiphers(ssl, &_ciphers[0], _ciphers.size())))
1109
- {
1110
- throw SecurityException(__FILE__, __LINE__, "IceSSL: error while setting ciphers:\n" + sslErrorToString(err));
1111
- }
1112
- }
1113
-
1114
- if((err = SSLSetSessionOption(ssl, incoming ? kSSLSessionOptionBreakOnClientAuth :
1115
- kSSLSessionOptionBreakOnServerAuth,
1116
- true)))
1117
- {
1118
- throw SecurityException(__FILE__, __LINE__, "IceSSL: error while setting SSL option:\n" + sslErrorToString(err));
1119
- }
1120
-
1121
- if(_protocolVersionMax != kSSLProtocolUnknown)
1122
- {
1123
- if((err = SSLSetProtocolVersionMax(ssl, _protocolVersionMax)))
1124
- {
1125
- throw SecurityException(__FILE__, __LINE__,
1126
- "IceSSL: error while setting SSL protocol version max:\n" + sslErrorToString(err));
1127
- }
1128
- }
1129
-
1130
- if(_protocolVersionMin != kSSLProtocolUnknown)
1131
- {
1132
- if((err = SSLSetProtocolVersionMin(ssl, _protocolVersionMin)))
1133
- {
1134
- throw SecurityException(__FILE__, __LINE__,
1135
- "IceSSL: error while setting SSL protocol version min:\n" + sslErrorToString(err));
1136
- }
1137
- }
1138
-
1139
- return ssl;
1140
- }
1141
-
1142
- CFArrayRef
1143
- IceSSL::SecureTransport::SSLEngine::getCertificateAuthorities() const
1144
- {
1145
- return _certificateAuthorities.get();
1146
- }
1147
-
1148
- string
1149
- IceSSL::SecureTransport::SSLEngine::getCipherName(SSLCipherSuite cipher) const
1150
- {
1151
- return CiphersHelper::cipherName(cipher);
1152
- }
1153
-
1154
- void
1155
- IceSSL::SecureTransport::SSLEngine::parseCiphers(const string& ciphers)
1156
- {
1157
- vector<string> tokens;
1158
- vector<CipherExpression> cipherExpressions;
1159
-
1160
- bool allCiphers = false;
1161
- IceUtilInternal::splitString(ciphers, " \t", tokens);
1162
- for(vector<string>::const_iterator i = tokens.begin(); i != tokens.end(); ++i)
1163
- {
1164
- string token(*i);
1165
- if(token == "ALL")
1166
- {
1167
- if(i != tokens.begin())
1168
- {
1169
- throw PluginInitializationException(__FILE__, __LINE__,
1170
- "IceSSL: `ALL' must be first in cipher list `" + ciphers + "'");
1171
- }
1172
- allCiphers = true;
1173
- }
1174
- else if(token == "NONE")
1175
- {
1176
- if(i != tokens.begin())
1177
- {
1178
- throw PluginInitializationException(__FILE__, __LINE__,
1179
- "IceSSL: `NONE' must be first in cipher list `" + ciphers + "'");
1180
- }
1181
- }
1182
- else
1183
- {
1184
- CipherExpression ce;
1185
- if(token.find('!') == 0)
1186
- {
1187
- ce.negation = true;
1188
- if(token.size() > 1)
1189
- {
1190
- token = token.substr(1);
1191
- }
1192
- else
1193
- {
1194
- throw PluginInitializationException(__FILE__, __LINE__,
1195
- "IceSSL: invalid cipher expression `" + token + "'");
1196
- }
1197
- }
1198
- else
1199
- {
1200
- ce.negation = false;
1201
- }
1202
-
1203
- if(token.find('(') == 0)
1204
- {
1205
- if(token.rfind(')') != token.size() - 1)
1206
- {
1207
- throw PluginInitializationException(__FILE__, __LINE__,
1208
- "IceSSL: invalid cipher expression `" + token + "'");
1209
- }
1210
-
1211
- try
1212
- {
1213
- ce.re = new RegExp(token.substr(1, token.size() - 2));
1214
- }
1215
- catch(const Ice::SyscallException&)
1216
- {
1217
- throw PluginInitializationException(__FILE__, __LINE__,
1218
- "IceSSL: invalid cipher expression `" + token + "'");
1219
- }
1220
- }
1221
- else
1222
- {
1223
- ce.cipher = token;
1224
- }
1225
-
1226
- cipherExpressions.push_back(ce);
1227
- }
1228
- }
1229
-
1230
- //
1231
- // Context used to get the cipher list
1232
- //
1233
- UniqueRef<SSLContextRef> ctx(SSLCreateContext(kCFAllocatorDefault, kSSLServerSide, kSSLStreamType));
1234
- size_t numSupportedCiphers = 0;
1235
- SSLGetNumberSupportedCiphers(ctx.get(), &numSupportedCiphers);
1236
-
1237
- vector<SSLCipherSuite> supported;
1238
- supported.resize(numSupportedCiphers);
1239
-
1240
- OSStatus err = SSLGetSupportedCiphers(ctx.get(), &supported[0], &numSupportedCiphers);
1241
- if(err)
1242
- {
1243
- throw PluginInitializationException(__FILE__, __LINE__,
1244
- "IceSSL: unable to get supported ciphers list:\n" + sslErrorToString(err));
1245
- }
1246
-
1247
- vector<SSLCipherSuite> enabled;
1248
- if(allCiphers)
1249
- {
1250
- enabled = supported;
1251
- }
1252
-
1253
- for(vector<CipherExpression>::const_iterator i = cipherExpressions.begin(); i != cipherExpressions.end(); ++i)
1254
- {
1255
- CipherExpression ce = *i;
1256
- if(ce.negation)
1257
- {
1258
- for(vector<SSLCipherSuite>::iterator j = enabled.begin(); j != enabled.end();)
1259
- {
1260
- string name = CiphersHelper::cipherName(*j);
1261
- if((ce.cipher.empty() && ce.re->match(name)) || ce.cipher == name)
1262
- {
1263
- j = enabled.erase(j);
1264
- }
1265
- else
1266
- {
1267
- ++j;
1268
- }
1269
- }
1270
- }
1271
- else
1272
- {
1273
- if(ce.cipher.empty())
1274
- {
1275
- for(vector<SSLCipherSuite>::const_iterator j = supported.begin(); j != supported.end(); ++j)
1276
- {
1277
- SSLCipherSuite cipher = *j;
1278
- string name = CiphersHelper::cipherName(cipher);
1279
- if(ce.re->match(name))
1280
- {
1281
- vector<SSLCipherSuite>::const_iterator k = find(enabled.begin(), enabled.end(), cipher);
1282
- if(k == enabled.end())
1283
- {
1284
- enabled.push_back(cipher);
1285
- }
1286
- }
1287
- }
1288
- }
1289
- else
1290
- {
1291
- SSLCipherSuite cipher = CiphersHelper::cipherForName(ce.cipher);
1292
- vector<SSLCipherSuite>::const_iterator k = find(enabled.begin(), enabled.end(), cipher);
1293
- if(k == enabled.end())
1294
- {
1295
- enabled.push_back(cipher);
1296
- }
1297
- }
1298
- }
1299
- }
1300
- _ciphers = enabled;
1301
-
1302
- if(_ciphers.empty())
1303
- {
1304
- throw PluginInitializationException(__FILE__, __LINE__,
1305
- "IceSSL: invalid value for IceSSL.Ciphers:\n" + ciphers +
1306
- "\nThe result cipher list does not contain any entries");
1307
- }
1308
- }