zeroc-ice 3.6.5 → 3.7.0
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.
- checksums.yaml +4 -4
- data/BZIP2_LICENSE +42 -0
- data/ICE_LICENSE +17 -17
- data/LICENSE +12 -12
- data/bin/slice2rb +1 -1
- data/ext/Communicator.cpp +150 -53
- data/ext/Communicator.h +1 -1
- data/ext/Config.h +2 -12
- data/ext/Connection.cpp +89 -68
- data/ext/Connection.h +1 -1
- data/ext/Endpoint.cpp +16 -45
- data/ext/Endpoint.h +1 -1
- data/ext/ImplicitContext.cpp +1 -5
- data/ext/ImplicitContext.h +1 -1
- data/ext/Init.cpp +4 -1
- data/ext/Logger.cpp +1 -1
- data/ext/Logger.h +1 -1
- data/ext/Operation.cpp +33 -44
- data/ext/Operation.h +1 -1
- data/ext/Properties.cpp +1 -1
- data/ext/Properties.h +1 -1
- data/ext/Proxy.cpp +22 -57
- data/ext/Proxy.h +1 -1
- data/ext/Slice.cpp +5 -5
- data/ext/Slice.h +1 -1
- data/ext/Types.cpp +244 -171
- data/ext/Types.h +118 -66
- data/ext/Util.cpp +13 -9
- data/ext/Util.h +10 -10
- data/ext/ValueFactoryManager.cpp +445 -0
- data/ext/ValueFactoryManager.h +100 -0
- data/ext/extconf.rb +47 -45
- data/ext/ice/bzip2/blocksort.c +1094 -0
- data/ext/ice/bzip2/bzlib.c +1572 -0
- data/ext/ice/bzip2/bzlib.h +282 -0
- data/ext/ice/bzip2/bzlib_private.h +509 -0
- data/ext/ice/bzip2/compress.c +672 -0
- data/ext/ice/bzip2/crctable.c +104 -0
- data/ext/ice/bzip2/decompress.c +646 -0
- data/ext/ice/bzip2/huffman.c +205 -0
- data/ext/ice/bzip2/randtable.c +84 -0
- data/ext/ice/cpp/include/Ice/Application.h +77 -60
- data/ext/ice/cpp/include/Ice/AsyncResult.h +34 -318
- data/ext/ice/cpp/include/Ice/AsyncResultF.h +4 -2
- data/ext/ice/cpp/include/Ice/BatchRequestInterceptor.h +5 -10
- data/ext/ice/cpp/include/Ice/BatchRequestQueueF.h +1 -1
- data/ext/ice/cpp/include/Ice/Buffer.h +10 -10
- data/ext/ice/cpp/include/Ice/CommunicatorAsync.h +14 -12
- data/ext/ice/cpp/include/Ice/Comparable.h +130 -0
- data/ext/ice/cpp/include/Ice/Config.h +7 -36
- data/ext/ice/cpp/include/Ice/ConnectionAsync.h +107 -11
- data/ext/ice/cpp/include/Ice/ConnectionIF.h +5 -1
- data/ext/ice/cpp/include/Ice/ConsoleUtil.h +28 -0
- data/ext/ice/cpp/include/Ice/{DefaultObjectFactory.h → DefaultValueFactory.h} +28 -14
- data/ext/ice/cpp/include/Ice/DispatchInterceptor.h +4 -6
- data/ext/ice/cpp/include/Ice/Dispatcher.h +14 -13
- data/ext/ice/cpp/include/Ice/DynamicLibrary.h +7 -5
- data/ext/ice/cpp/include/Ice/DynamicLibraryF.h +1 -1
- data/ext/ice/cpp/include/Ice/Exception.h +66 -56
- data/ext/ice/cpp/include/Ice/ExceptionHelpers.h +69 -0
- data/ext/ice/cpp/include/Ice/FactoryTable.h +11 -12
- data/ext/ice/cpp/include/Ice/FactoryTableInit.h +27 -25
- data/ext/ice/cpp/include/Ice/Format.h +6 -1
- data/ext/ice/cpp/include/Ice/Functional.h +33 -33
- data/ext/ice/cpp/include/Ice/GCObject.h +9 -5
- data/ext/ice/cpp/include/Ice/Handle.h +6 -11
- data/ext/ice/cpp/include/Ice/Ice.h +9 -5
- data/ext/ice/cpp/include/{IceUtil → Ice}/IconvStringConverter.h +108 -62
- data/ext/ice/cpp/include/Ice/Incoming.h +109 -33
- data/ext/ice/cpp/include/Ice/IncomingAsync.h +63 -23
- data/ext/ice/cpp/include/Ice/IncomingAsyncF.h +7 -1
- data/ext/ice/cpp/include/Ice/Initialize.h +178 -38
- data/ext/ice/cpp/include/Ice/InputStream.h +994 -0
- data/ext/ice/cpp/include/Ice/InstanceF.h +1 -2
- data/ext/ice/cpp/include/Ice/InterfaceByValue.h +46 -0
- data/ext/ice/cpp/include/Ice/LocalObject.h +9 -9
- data/ext/ice/cpp/include/Ice/LocalObjectF.h +1 -1
- data/ext/ice/cpp/include/Ice/LoggerUtil.h +20 -14
- data/ext/ice/cpp/include/Ice/MetricsAdminI.h +114 -65
- data/ext/ice/cpp/include/Ice/MetricsFunctional.h +23 -5
- data/ext/ice/cpp/include/Ice/MetricsObserverI.h +99 -26
- data/ext/ice/cpp/include/Ice/NativePropertiesAdmin.h +17 -4
- data/ext/ice/cpp/include/Ice/Object.h +105 -56
- data/ext/ice/cpp/include/Ice/ObjectF.h +8 -3
- data/ext/ice/cpp/include/Ice/ObserverHelper.h +18 -8
- data/ext/ice/cpp/include/Ice/Optional.h +1084 -0
- data/ext/ice/cpp/include/Ice/OutgoingAsync.h +655 -84
- data/ext/ice/cpp/include/Ice/OutgoingAsyncF.h +12 -6
- data/ext/ice/cpp/include/Ice/OutputStream.h +753 -0
- data/ext/ice/cpp/include/Ice/Protocol.h +19 -12
- data/ext/ice/cpp/include/Ice/Proxy.h +1329 -717
- data/ext/ice/cpp/include/Ice/ProxyF.h +11 -33
- data/ext/ice/cpp/include/Ice/ProxyFactoryF.h +1 -1
- data/ext/ice/cpp/include/Ice/ProxyHandle.h +34 -50
- data/ext/ice/cpp/include/Ice/ReferenceF.h +1 -1
- data/ext/ice/cpp/include/Ice/RegisterPlugins.h +22 -3
- data/ext/ice/cpp/include/Ice/RequestHandlerF.h +10 -4
- data/ext/ice/cpp/include/Ice/ResponseHandlerF.h +6 -1
- data/ext/ice/cpp/include/{IceUtil → Ice}/SHA1.h +16 -16
- data/ext/ice/cpp/include/Ice/ServantManagerF.h +1 -1
- data/ext/ice/cpp/include/Ice/Service.h +13 -18
- data/ext/ice/cpp/include/Ice/SliceChecksums.h +1 -1
- data/ext/ice/cpp/include/Ice/SlicedData.h +46 -20
- data/ext/ice/cpp/include/Ice/SlicedDataF.h +14 -6
- data/ext/ice/cpp/include/Ice/StreamHelpers.h +159 -49
- data/ext/ice/cpp/include/Ice/StringConverter.h +52 -0
- data/ext/ice/cpp/include/Ice/ThreadPoolF.h +1 -1
- data/{slice/Ice/ObjectFactoryF.ice → ext/ice/cpp/include/Ice/UUID.h} +9 -7
- data/ext/ice/cpp/include/{IceUtil → Ice}/UniquePtr.h +21 -22
- data/ext/ice/cpp/include/Ice/UniqueRef.h +98 -0
- data/ext/ice/cpp/include/Ice/UserExceptionFactory.h +40 -8
- data/ext/ice/cpp/include/Ice/Value.h +104 -0
- data/{slice/Freeze/ConnectionF.ice → ext/ice/cpp/include/Ice/ValueF.h} +11 -7
- data/ext/ice/cpp/include/IceSSL/Config.h +8 -23
- data/ext/ice/cpp/include/IceSSL/IceSSL.h +17 -6
- data/ext/ice/cpp/include/IceSSL/OpenSSL.h +130 -0
- data/ext/ice/cpp/include/IceSSL/Plugin.h +172 -259
- data/ext/ice/cpp/include/IceSSL/SChannel.h +66 -0
- data/ext/ice/cpp/include/IceSSL/SecureTransport.h +66 -0
- data/ext/ice/cpp/include/IceSSL/UWP.h +58 -0
- data/ext/ice/cpp/include/IceUtil/Atomic.h +8 -10
- data/ext/ice/cpp/include/IceUtil/Cond.h +17 -18
- data/ext/ice/cpp/include/IceUtil/Config.h +138 -39
- data/ext/ice/cpp/include/IceUtil/ConsoleUtil.h +97 -0
- data/ext/ice/cpp/include/IceUtil/CountDownLatch.h +5 -5
- data/ext/ice/cpp/include/IceUtil/CtrlCHandler.h +23 -17
- data/ext/ice/cpp/include/IceUtil/DisableWarnings.h +1 -3
- data/ext/ice/cpp/include/IceUtil/Exception.h +157 -67
- data/ext/ice/cpp/include/IceUtil/FileUtil.h +148 -0
- data/ext/ice/cpp/include/IceUtil/Functional.h +1 -2
- data/ext/ice/cpp/include/IceUtil/Handle.h +11 -11
- data/ext/ice/cpp/include/IceUtil/IceUtil.h +4 -10
- data/ext/ice/cpp/include/IceUtil/InputUtil.h +3 -3
- data/ext/ice/cpp/include/IceUtil/Iterator.h +2 -2
- data/ext/ice/cpp/include/IceUtil/Lock.h +8 -10
- data/ext/ice/cpp/include/IceUtil/Monitor.h +1 -2
- data/ext/ice/cpp/include/IceUtil/Mutex.h +17 -11
- data/ext/ice/cpp/include/IceUtil/MutexProtocol.h +2 -2
- data/ext/ice/cpp/include/IceUtil/MutexPtrLock.h +4 -4
- data/ext/ice/cpp/include/IceUtil/MutexPtrTryLock.h +4 -4
- data/ext/ice/cpp/include/IceUtil/Optional.h +32 -18
- data/ext/ice/cpp/include/IceUtil/Options.h +17 -18
- data/ext/ice/cpp/include/IceUtil/OutputUtil.h +55 -29
- data/ext/ice/cpp/include/IceUtil/PopDisableWarnings.h +6 -6
- data/ext/ice/cpp/include/IceUtil/PushDisableWarnings.h +11 -10
- data/ext/ice/cpp/include/IceUtil/Random.h +3 -3
- data/ext/ice/cpp/include/IceUtil/RecMutex.h +7 -8
- data/ext/ice/cpp/include/IceUtil/ResourceConfig.h +58 -0
- data/ext/ice/cpp/include/IceUtil/ScannerConfig.h +1 -9
- data/ext/ice/cpp/include/IceUtil/ScopedArray.h +8 -2
- data/ext/ice/cpp/include/IceUtil/Shared.h +5 -7
- data/ext/ice/cpp/{src → include}/IceUtil/StopWatch.h +2 -2
- data/ext/ice/cpp/include/IceUtil/StringConverter.h +77 -72
- data/ext/ice/cpp/include/IceUtil/StringUtil.h +32 -21
- data/ext/ice/cpp/include/IceUtil/Thread.h +10 -12
- data/ext/ice/cpp/include/IceUtil/ThreadException.h +33 -42
- data/ext/ice/cpp/include/IceUtil/Time.h +3 -3
- data/ext/ice/cpp/include/IceUtil/Timer.h +14 -13
- data/ext/ice/cpp/include/IceUtil/UUID.h +2 -2
- data/ext/ice/cpp/include/IceUtil/UndefSysMacros.h +1 -1
- data/ext/ice/cpp/include/{Ice → generated/Ice}/BuiltinSequences.h +41 -8
- data/ext/ice/cpp/include/generated/Ice/Communicator.h +364 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/CommunicatorF.h +40 -8
- data/ext/ice/cpp/include/generated/Ice/Connection.h +872 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/ConnectionF.h +46 -8
- data/ext/ice/cpp/include/{Ice → generated/Ice}/Current.h +71 -8
- data/ext/ice/cpp/include/generated/Ice/Endpoint.h +582 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/EndpointF.h +62 -8
- data/ext/ice/cpp/include/{Ice → generated/Ice}/EndpointTypes.h +31 -16
- data/ext/ice/cpp/include/{Ice → generated/Ice}/FacetMap.h +23 -8
- data/ext/ice/cpp/include/generated/Ice/Identity.h +221 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/ImplicitContext.h +72 -13
- data/ext/ice/cpp/include/{Ice → generated/Ice}/ImplicitContextF.h +40 -8
- data/ext/ice/cpp/include/generated/Ice/Instrumentation.h +602 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/InstrumentationF.h +54 -8
- data/ext/ice/cpp/include/generated/Ice/LocalException.h +2802 -0
- data/ext/ice/cpp/include/generated/Ice/Locator.h +2036 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/LocatorF.h +53 -12
- data/ext/ice/cpp/include/{Ice → generated/Ice}/Logger.h +71 -13
- data/ext/ice/cpp/include/{Ice → generated/Ice}/LoggerF.h +40 -8
- data/ext/ice/cpp/include/generated/Ice/Metrics.h +2649 -0
- data/ext/ice/cpp/include/generated/Ice/ObjectAdapter.h +302 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/ObjectAdapterF.h +40 -8
- data/ext/ice/cpp/include/generated/Ice/ObjectFactory.h +142 -0
- data/ext/ice/cpp/include/generated/Ice/Plugin.h +197 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/PluginF.h +43 -8
- data/ext/ice/cpp/include/generated/Ice/Process.h +536 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/ProcessF.h +45 -10
- data/ext/ice/cpp/include/{Ice → generated/Ice}/Properties.h +88 -21
- data/ext/ice/cpp/include/generated/Ice/PropertiesAdmin.h +749 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/PropertiesF.h +48 -10
- data/ext/ice/cpp/include/generated/Ice/RemoteLogger.h +1449 -0
- data/ext/ice/cpp/include/generated/Ice/Router.h +1032 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/RouterF.h +45 -10
- data/ext/ice/cpp/include/{Ice → generated/Ice}/ServantLocator.h +65 -13
- data/ext/ice/cpp/include/{Ice → generated/Ice}/ServantLocatorF.h +40 -8
- data/ext/ice/cpp/include/{Ice → generated/Ice}/SliceChecksumDict.h +23 -8
- data/ext/ice/cpp/include/generated/Ice/ValueFactory.h +169 -0
- data/ext/ice/cpp/include/generated/Ice/Version.h +334 -0
- data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +172 -0
- data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +98 -0
- data/ext/ice/cpp/include/generated/IceSSL/EndpointInfo.h +156 -0
- data/ext/ice/cpp/src/Ice/ACM.cpp +18 -14
- data/ext/ice/cpp/src/Ice/ACM.h +9 -2
- data/ext/ice/cpp/{include → src}/Ice/ACMF.h +10 -5
- data/ext/ice/cpp/src/Ice/Acceptor.cpp +6 -1
- data/ext/ice/cpp/src/Ice/Acceptor.h +4 -3
- data/ext/ice/cpp/src/Ice/AcceptorF.h +1 -1
- data/ext/ice/cpp/src/{IceUtil → Ice}/ArgVector.cpp +9 -9
- data/ext/ice/cpp/src/{IceUtil → Ice}/ArgVector.h +7 -7
- data/ext/ice/cpp/src/Ice/AsyncResult.cpp +15 -538
- data/ext/ice/cpp/src/Ice/Base64.cpp +11 -11
- data/ext/ice/cpp/src/Ice/Base64.h +1 -1
- data/ext/ice/cpp/src/Ice/BatchRequestQueue.cpp +40 -12
- data/ext/ice/cpp/src/Ice/BatchRequestQueue.h +15 -10
- data/ext/ice/cpp/src/Ice/Buffer.cpp +74 -12
- data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +20 -6
- data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +85 -190
- data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.h +17 -18
- data/ext/ice/cpp/src/Ice/Communicator.cpp +39 -8
- data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/CommunicatorI.cpp +271 -104
- data/ext/ice/cpp/src/Ice/CommunicatorI.h +84 -28
- data/ext/ice/cpp/src/{IceUtil → Ice}/Cond.cpp +3 -3
- data/ext/ice/cpp/src/Ice/ConnectRequestHandler.cpp +58 -125
- data/ext/ice/cpp/src/Ice/ConnectRequestHandler.h +11 -22
- data/ext/ice/cpp/src/Ice/ConnectRequestHandlerF.h +6 -2
- data/ext/ice/cpp/src/Ice/Connection.cpp +88 -8
- data/ext/ice/cpp/src/Ice/ConnectionF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/ConnectionFactory.cpp +158 -80
- data/ext/ice/cpp/src/Ice/ConnectionFactory.h +41 -23
- data/ext/ice/cpp/{include → src}/Ice/ConnectionFactoryF.h +8 -3
- data/ext/ice/cpp/src/Ice/ConnectionI.cpp +707 -653
- data/ext/ice/cpp/src/Ice/ConnectionI.h +97 -69
- data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.cpp +2 -15
- data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.h +4 -3
- data/ext/ice/cpp/src/Ice/Connector.cpp +6 -1
- data/ext/ice/cpp/src/Ice/Connector.h +4 -3
- data/ext/ice/cpp/src/Ice/ConnectorF.h +1 -1
- data/ext/ice/cpp/src/{IceUtil → Ice}/CountDownLatch.cpp +4 -4
- data/ext/ice/cpp/src/Ice/Current.cpp +29 -6
- data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +6 -5
- data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.h +1 -1
- data/ext/ice/cpp/src/Ice/DefaultsAndOverridesF.h +1 -1
- data/ext/ice/cpp/src/Ice/DispatchInterceptor.cpp +5 -25
- data/ext/ice/cpp/src/Ice/DynamicLibrary.cpp +29 -19
- data/ext/ice/cpp/src/Ice/Endpoint.cpp +85 -6
- data/ext/ice/cpp/src/Ice/EndpointF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/EndpointFactory.cpp +152 -1
- data/ext/ice/cpp/src/Ice/EndpointFactory.h +72 -6
- data/ext/ice/cpp/src/Ice/EndpointFactoryF.h +1 -1
- data/ext/ice/cpp/src/Ice/EndpointFactoryManager.cpp +35 -19
- data/ext/ice/cpp/src/Ice/EndpointFactoryManager.h +10 -4
- data/ext/ice/cpp/src/Ice/EndpointFactoryManagerF.h +1 -1
- data/ext/ice/cpp/src/Ice/EndpointI.cpp +17 -1
- data/ext/ice/cpp/src/Ice/EndpointI.h +35 -9
- data/ext/ice/cpp/src/Ice/EndpointIF.h +18 -5
- data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +18 -6
- data/ext/ice/cpp/src/Ice/EventHandler.cpp +6 -4
- data/ext/ice/cpp/src/Ice/EventHandler.h +13 -8
- data/ext/ice/cpp/src/Ice/EventHandlerF.h +5 -2
- data/ext/ice/cpp/src/Ice/Exception.cpp +95 -86
- data/ext/ice/cpp/src/Ice/FacetMap.cpp +20 -6
- data/ext/ice/cpp/src/Ice/FactoryTable.cpp +37 -28
- data/ext/ice/cpp/src/Ice/FactoryTableInit.cpp +2 -4
- data/ext/ice/cpp/src/Ice/GCObject.cpp +28 -25
- data/ext/ice/cpp/src/Ice/HashUtil.h +2 -3
- data/ext/ice/cpp/src/Ice/HttpParser.cpp +1 -2
- data/ext/ice/cpp/src/Ice/HttpParser.h +1 -1
- data/ext/ice/cpp/src/Ice/IPEndpointI.cpp +92 -53
- data/ext/ice/cpp/src/Ice/IPEndpointI.h +19 -10
- data/ext/ice/cpp/src/Ice/IPEndpointIF.h +6 -2
- data/ext/ice/cpp/src/Ice/IconvStringConverter.cpp +56 -0
- data/ext/ice/cpp/src/Ice/Identity.cpp +24 -10
- data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +37 -6
- data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/ImplicitContextI.cpp +14 -14
- data/ext/ice/cpp/src/Ice/ImplicitContextI.h +7 -5
- data/ext/ice/cpp/src/Ice/Incoming.cpp +276 -245
- data/ext/ice/cpp/src/Ice/IncomingAsync.cpp +104 -209
- data/ext/ice/cpp/src/Ice/IncomingRequest.h +5 -4
- data/ext/ice/cpp/src/Ice/Initialize.cpp +299 -172
- data/ext/ice/cpp/src/Ice/InputStream.cpp +2773 -0
- data/ext/ice/cpp/src/Ice/Instance.cpp +191 -231
- data/ext/ice/cpp/src/Ice/Instance.h +30 -18
- data/ext/ice/cpp/src/Ice/Instrumentation.cpp +106 -7
- data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/InstrumentationI.cpp +117 -99
- data/ext/ice/cpp/src/Ice/InstrumentationI.h +30 -31
- data/ext/ice/cpp/src/Ice/LocalException.cpp +1190 -416
- data/ext/ice/cpp/src/Ice/LocalObject.cpp +1 -2
- data/ext/ice/cpp/src/Ice/Locator.cpp +1167 -1215
- data/ext/ice/cpp/src/Ice/LocatorF.cpp +29 -6
- data/ext/ice/cpp/src/Ice/LocatorInfo.cpp +129 -163
- data/ext/ice/cpp/src/Ice/LocatorInfo.h +29 -29
- data/ext/ice/cpp/src/Ice/LocatorInfoF.h +1 -1
- data/ext/ice/cpp/src/Ice/Logger.cpp +35 -5
- data/ext/ice/cpp/src/Ice/LoggerAdminI.cpp +178 -73
- data/ext/ice/cpp/src/Ice/LoggerAdminI.h +4 -4
- data/ext/ice/cpp/src/Ice/LoggerF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/LoggerI.cpp +14 -44
- data/ext/ice/cpp/src/Ice/LoggerI.h +7 -13
- data/ext/ice/cpp/src/Ice/LoggerUtil.cpp +10 -12
- data/ext/ice/cpp/src/Ice/Metrics.cpp +1059 -1069
- data/ext/ice/cpp/src/Ice/MetricsAdminI.cpp +49 -19
- data/ext/ice/cpp/src/Ice/MetricsObserverI.cpp +1 -2
- data/ext/ice/cpp/src/Ice/Network.cpp +534 -170
- data/ext/ice/cpp/src/Ice/Network.h +100 -23
- data/ext/ice/cpp/src/Ice/NetworkF.h +2 -2
- data/ext/ice/cpp/src/Ice/NetworkProxy.cpp +21 -14
- data/ext/ice/cpp/src/Ice/NetworkProxy.h +5 -2
- data/ext/ice/cpp/src/Ice/NetworkProxyF.h +1 -1
- data/ext/ice/cpp/src/Ice/Object.cpp +217 -221
- data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +41 -6
- data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +35 -14
- data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.h +13 -7
- data/ext/ice/cpp/{include → src}/Ice/ObjectAdapterFactoryF.h +5 -1
- data/ext/ice/cpp/src/Ice/ObjectAdapterI.cpp +184 -58
- data/ext/ice/cpp/src/Ice/ObjectAdapterI.h +32 -26
- data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +37 -6
- data/ext/ice/cpp/src/Ice/ObserverHelper.cpp +9 -32
- data/ext/ice/cpp/src/Ice/OpaqueEndpointI.cpp +40 -18
- data/ext/ice/cpp/src/Ice/OpaqueEndpointI.h +14 -5
- data/ext/ice/cpp/src/Ice/OutgoingAsync.cpp +803 -365
- data/ext/ice/cpp/src/Ice/OutputStream.cpp +1399 -0
- data/ext/ice/cpp/src/Ice/Plugin.cpp +45 -6
- data/ext/ice/cpp/src/Ice/PluginF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/PluginManagerI.cpp +13 -13
- data/ext/ice/cpp/src/Ice/PluginManagerI.h +5 -6
- data/ext/ice/cpp/src/Ice/Process.cpp +256 -114
- data/ext/ice/cpp/src/Ice/ProcessF.cpp +29 -6
- data/ext/ice/cpp/src/Ice/Properties.cpp +38 -8
- data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +340 -328
- data/ext/ice/cpp/src/Ice/PropertiesAdminI.cpp +81 -17
- data/ext/ice/cpp/src/Ice/PropertiesAdminI.h +29 -5
- data/ext/ice/cpp/src/Ice/PropertiesF.cpp +29 -6
- data/ext/ice/cpp/src/Ice/PropertiesI.cpp +25 -26
- data/ext/ice/cpp/src/Ice/PropertiesI.h +8 -11
- data/ext/ice/cpp/src/Ice/PropertyNames.cpp +107 -50
- data/ext/ice/cpp/src/Ice/PropertyNames.h +4 -2
- data/ext/ice/cpp/src/Ice/Protocol.cpp +2 -2
- data/ext/ice/cpp/src/Ice/ProtocolInstance.cpp +37 -2
- data/ext/ice/cpp/src/Ice/ProtocolInstance.h +9 -20
- data/ext/ice/cpp/src/Ice/ProtocolInstanceF.h +1 -1
- data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +6 -1
- data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.h +3 -1
- data/ext/ice/cpp/src/Ice/ProtocolPluginFacadeF.h +1 -1
- data/ext/ice/cpp/src/Ice/Proxy.cpp +690 -964
- data/ext/ice/cpp/src/Ice/ProxyFactory.cpp +23 -32
- data/ext/ice/cpp/src/Ice/ProxyFactory.h +16 -11
- data/ext/ice/cpp/src/Ice/Reference.cpp +75 -69
- data/ext/ice/cpp/src/Ice/Reference.h +27 -22
- data/ext/ice/cpp/src/Ice/ReferenceFactory.cpp +18 -21
- data/ext/ice/cpp/src/Ice/ReferenceFactory.h +12 -12
- data/ext/ice/cpp/src/Ice/ReferenceFactoryF.h +1 -1
- data/ext/ice/cpp/src/Ice/RegisterPluginsInit.cpp +18 -4
- data/ext/ice/cpp/src/Ice/RegisterPluginsInit.h +1 -1
- data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +672 -552
- data/ext/ice/cpp/src/Ice/ReplyStatus.h +1 -1
- data/ext/ice/cpp/src/Ice/RequestHandler.cpp +5 -3
- data/ext/ice/cpp/src/Ice/RequestHandler.h +10 -13
- data/ext/ice/cpp/src/Ice/RequestHandlerFactory.cpp +10 -6
- data/ext/ice/cpp/src/Ice/RequestHandlerFactory.h +2 -2
- data/ext/ice/cpp/src/Ice/ResponseHandler.cpp +3 -6
- data/ext/ice/cpp/src/Ice/ResponseHandler.h +16 -7
- data/ext/ice/cpp/src/Ice/RetryQueue.cpp +6 -12
- data/ext/ice/cpp/src/Ice/RetryQueue.h +7 -6
- data/ext/ice/cpp/src/Ice/RetryQueueF.h +1 -1
- data/ext/ice/cpp/src/Ice/Router.cpp +523 -474
- data/ext/ice/cpp/src/Ice/RouterF.cpp +29 -6
- data/ext/ice/cpp/src/Ice/RouterInfo.cpp +91 -70
- data/ext/ice/cpp/src/Ice/RouterInfo.h +43 -32
- data/ext/ice/cpp/src/Ice/RouterInfoF.h +1 -1
- data/ext/ice/cpp/src/{IceUtil → Ice}/SHA1.cpp +21 -21
- data/ext/ice/cpp/src/Ice/Selector.cpp +989 -923
- data/ext/ice/cpp/src/Ice/Selector.h +100 -147
- data/ext/ice/cpp/src/Ice/ServantLocator.cpp +37 -6
- data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/ServantManager.cpp +9 -9
- data/ext/ice/cpp/src/Ice/ServantManager.h +1 -1
- data/ext/ice/cpp/src/Ice/SharedContext.h +2 -2
- data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +20 -6
- data/ext/ice/cpp/src/Ice/SliceChecksums.cpp +2 -2
- data/ext/ice/cpp/src/Ice/SlicedData.cpp +72 -20
- data/ext/ice/cpp/src/Ice/StreamSocket.cpp +173 -18
- data/ext/ice/cpp/src/Ice/StreamSocket.h +13 -4
- data/ext/ice/cpp/src/Ice/StringConverterPlugin.cpp +48 -17
- data/ext/ice/cpp/src/Ice/StringUtil.h +35 -0
- data/ext/ice/cpp/src/Ice/SysLoggerI.cpp +8 -4
- data/ext/ice/cpp/src/Ice/SysLoggerI.h +2 -3
- data/ext/ice/cpp/src/Ice/TcpAcceptor.cpp +158 -32
- data/ext/ice/cpp/src/Ice/TcpAcceptor.h +12 -5
- data/ext/ice/cpp/src/Ice/TcpConnector.cpp +1 -7
- data/ext/ice/cpp/src/Ice/TcpConnector.h +1 -2
- data/ext/ice/cpp/src/Ice/TcpEndpointI.cpp +40 -32
- data/ext/ice/cpp/src/Ice/TcpEndpointI.h +11 -8
- data/ext/ice/cpp/src/Ice/TcpTransceiver.cpp +12 -27
- data/ext/ice/cpp/src/Ice/TcpTransceiver.h +7 -10
- data/ext/ice/cpp/src/{IceUtil → Ice}/Thread.cpp +24 -41
- data/ext/ice/cpp/src/Ice/ThreadPool.cpp +175 -267
- data/ext/ice/cpp/src/Ice/ThreadPool.h +38 -43
- data/ext/ice/cpp/src/{IceUtil → Ice}/Timer.cpp +28 -21
- data/ext/ice/cpp/src/Ice/TraceLevels.cpp +2 -2
- data/ext/ice/cpp/src/Ice/TraceLevels.h +1 -1
- data/ext/ice/cpp/src/Ice/TraceLevelsF.h +2 -2
- data/ext/ice/cpp/src/Ice/TraceUtil.cpp +53 -31
- data/ext/ice/cpp/src/Ice/TraceUtil.h +13 -6
- data/ext/ice/cpp/src/Ice/Transceiver.cpp +1 -2
- data/ext/ice/cpp/src/Ice/Transceiver.h +8 -7
- data/ext/ice/cpp/src/Ice/TransceiverF.h +1 -1
- data/ext/ice/cpp/src/Ice/UdpConnector.cpp +2 -8
- data/ext/ice/cpp/src/Ice/UdpConnector.h +1 -2
- data/ext/ice/cpp/src/Ice/UdpEndpointI.cpp +92 -31
- data/ext/ice/cpp/src/Ice/UdpEndpointI.h +12 -4
- data/ext/ice/cpp/src/Ice/UdpTransceiver.cpp +150 -179
- data/ext/ice/cpp/src/Ice/UdpTransceiver.h +15 -17
- data/ext/ice/cpp/src/Ice/Value.cpp +81 -0
- data/ext/ice/cpp/src/Ice/ValueFactory.cpp +84 -0
- data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.cpp +70 -0
- data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.h +42 -0
- data/ext/ice/cpp/src/Ice/Version.cpp +24 -14
- data/ext/ice/cpp/src/Ice/VirtualShared.h +43 -0
- data/ext/ice/cpp/src/Ice/WSAcceptor.cpp +3 -9
- data/ext/ice/cpp/src/Ice/WSAcceptor.h +3 -7
- data/ext/ice/cpp/src/Ice/WSConnector.cpp +5 -11
- data/ext/ice/cpp/src/Ice/WSConnector.h +3 -6
- data/ext/ice/cpp/src/Ice/WSEndpoint.cpp +185 -80
- data/ext/ice/cpp/src/Ice/WSEndpoint.h +21 -31
- data/ext/ice/cpp/src/Ice/WSTransceiver.cpp +41 -37
- data/ext/ice/cpp/src/Ice/WSTransceiver.h +7 -21
- data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +526 -264
- data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +341 -455
- data/ext/ice/cpp/src/IceDiscovery/LocatorI.cpp +86 -26
- data/ext/ice/cpp/src/IceDiscovery/LocatorI.h +59 -23
- data/ext/ice/cpp/src/IceDiscovery/LookupI.cpp +315 -61
- data/ext/ice/cpp/src/IceDiscovery/LookupI.h +83 -36
- data/ext/ice/cpp/src/IceDiscovery/PluginI.cpp +57 -59
- data/ext/ice/cpp/src/IceDiscovery/PluginI.h +3 -3
- data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.cpp +396 -159
- data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.h +251 -355
- data/ext/ice/cpp/src/IceLocatorDiscovery/Plugin.h +52 -0
- data/ext/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +526 -131
- data/ext/ice/cpp/src/IceSSL/AcceptorI.cpp +19 -165
- data/ext/ice/cpp/src/IceSSL/AcceptorI.h +8 -17
- data/ext/ice/cpp/src/IceSSL/CertificateI.cpp +284 -0
- data/ext/ice/cpp/src/IceSSL/CertificateI.h +69 -0
- data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +39 -11
- data/ext/ice/cpp/src/{Ice/ObjectFactoryF.cpp → IceSSL/ConnectionInfoF.cpp} +31 -9
- data/ext/ice/cpp/src/IceSSL/ConnectorI.cpp +14 -56
- data/ext/ice/cpp/src/IceSSL/ConnectorI.h +6 -13
- data/ext/ice/cpp/src/IceSSL/EndpointI.cpp +205 -197
- data/ext/ice/cpp/src/IceSSL/EndpointI.h +41 -33
- data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +39 -10
- data/ext/ice/cpp/src/IceSSL/Instance.cpp +1 -6
- data/ext/ice/cpp/src/IceSSL/Instance.h +7 -7
- data/ext/ice/cpp/src/IceSSL/InstanceF.h +11 -7
- data/ext/ice/cpp/src/IceSSL/OpenSSLCertificateI.cpp +588 -0
- data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +117 -152
- data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.h +64 -0
- data/ext/ice/cpp/src/IceSSL/OpenSSLEngineF.h +32 -0
- data/ext/ice/cpp/src/IceSSL/OpenSSLPluginI.cpp +132 -0
- data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +400 -89
- data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +36 -21
- data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.cpp +291 -0
- data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.h +63 -0
- data/ext/ice/cpp/src/IceSSL/PluginI.cpp +71 -41
- data/ext/ice/cpp/src/IceSSL/PluginI.h +13 -18
- data/ext/ice/cpp/src/IceSSL/RFC2253.cpp +9 -54
- data/ext/ice/cpp/src/IceSSL/RFC2253.h +7 -7
- data/ext/ice/cpp/src/IceSSL/SChannelCertificateI.cpp +585 -0
- data/ext/ice/cpp/src/IceSSL/SChannelEngine.cpp +491 -75
- data/ext/ice/cpp/src/IceSSL/SChannelEngine.h +126 -0
- data/ext/ice/cpp/src/IceSSL/SChannelEngineF.h +32 -0
- data/ext/ice/cpp/src/IceSSL/SChannelPluginI.cpp +78 -0
- data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +126 -169
- data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.h +19 -22
- data/ext/ice/cpp/src/IceSSL/SSLEngine.cpp +79 -74
- data/ext/ice/cpp/src/IceSSL/SSLEngine.h +24 -187
- data/ext/ice/cpp/src/IceSSL/SSLEngineF.h +4 -19
- data/ext/ice/cpp/src/IceSSL/SecureTransportCertificateI.cpp +862 -0
- data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.cpp +56 -214
- data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.h +60 -0
- data/ext/ice/cpp/src/IceSSL/SecureTransportEngineF.h +31 -0
- data/ext/ice/cpp/src/IceSSL/SecureTransportPluginI.cpp +80 -0
- data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +137 -144
- data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +25 -28
- data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +857 -0
- data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.h +46 -0
- data/ext/ice/cpp/src/IceSSL/TrustManager.cpp +9 -13
- data/ext/ice/cpp/src/IceSSL/TrustManager.h +4 -4
- data/ext/ice/cpp/src/IceSSL/TrustManagerF.h +3 -3
- data/ext/ice/cpp/src/IceSSL/UWPCertificateI.cpp +271 -0
- data/ext/ice/cpp/src/IceSSL/UWPEngine.cpp +343 -0
- data/ext/ice/cpp/src/IceSSL/UWPEngine.h +46 -0
- data/ext/ice/cpp/{include/Ice/ObjectFactoryManagerF.h → src/IceSSL/UWPEngineF.h} +13 -8
- data/ext/ice/cpp/src/IceSSL/UWPPluginI.cpp +94 -0
- data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.cpp +388 -0
- data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.h +76 -0
- data/ext/ice/cpp/src/IceSSL/Util.cpp +66 -1256
- data/ext/ice/cpp/src/IceSSL/Util.h +48 -137
- data/ext/ice/cpp/src/IceUtil/ConsoleUtil.cpp +162 -0
- data/ext/ice/cpp/src/IceUtil/ConvertUTF.cpp +22 -22
- data/ext/ice/cpp/src/IceUtil/ConvertUTF.h +34 -26
- data/ext/ice/cpp/src/IceUtil/CtrlCHandler.cpp +20 -31
- data/ext/ice/cpp/src/IceUtil/FileUtil.cpp +25 -116
- data/ext/ice/cpp/src/IceUtil/InputUtil.cpp +1 -1
- data/ext/ice/cpp/src/IceUtil/MutexProtocol.cpp +1 -1
- data/ext/ice/cpp/src/IceUtil/Options.cpp +23 -46
- data/ext/ice/cpp/src/IceUtil/OutputUtil.cpp +7 -6
- data/ext/ice/cpp/src/IceUtil/Random.cpp +13 -13
- data/ext/ice/cpp/src/IceUtil/RecMutex.cpp +3 -9
- data/ext/ice/cpp/src/IceUtil/Shared.cpp +8 -3
- data/ext/ice/cpp/src/IceUtil/StringConverter.cpp +501 -264
- data/ext/ice/cpp/src/IceUtil/StringUtil.cpp +540 -235
- data/ext/ice/cpp/src/IceUtil/ThreadException.cpp +37 -74
- data/ext/ice/cpp/src/IceUtil/Time.cpp +1 -1
- data/ext/ice/cpp/src/IceUtil/UUID.cpp +10 -10
- data/ext/ice/cpp/src/IceUtil/Unicode.cpp +98 -97
- data/ext/ice/cpp/src/IceUtil/Unicode.h +21 -35
- data/ext/ice/cpp/src/IceUtil/UtilException.cpp +838 -0
- data/ext/ice/cpp/src/Slice/CPlusPlusUtil.cpp +815 -163
- data/ext/ice/cpp/src/Slice/CPlusPlusUtil.h +76 -0
- data/ext/ice/cpp/src/Slice/Checksum.cpp +2 -2
- data/ext/ice/cpp/{include → src}/Slice/Checksum.h +2 -2
- data/ext/ice/cpp/src/Slice/FileTracker.cpp +25 -78
- data/ext/ice/cpp/{include → src}/Slice/FileTracker.h +9 -9
- data/ext/ice/cpp/src/Slice/Grammar.cpp +1994 -1943
- data/ext/ice/cpp/src/Slice/Grammar.h +44 -24
- data/ext/ice/cpp/src/Slice/GrammarUtil.h +14 -14
- data/ext/ice/cpp/src/Slice/JavaUtil.cpp +2658 -1927
- data/ext/ice/cpp/{include → src}/Slice/JavaUtil.h +178 -59
- data/ext/ice/cpp/src/Slice/MD5.cpp +1 -1
- data/ext/ice/cpp/src/Slice/MD5.h +1 -1
- data/ext/ice/cpp/src/Slice/MD5I.cpp +0 -1
- data/ext/ice/cpp/src/Slice/MD5I.h +1 -1
- data/ext/ice/cpp/src/Slice/PHPUtil.cpp +12 -15
- data/ext/ice/cpp/{include → src}/Slice/PHPUtil.h +6 -15
- data/ext/ice/cpp/src/Slice/Parser.cpp +802 -307
- data/ext/ice/cpp/{include → src}/Slice/Parser.h +76 -84
- data/ext/ice/cpp/src/Slice/Preprocessor.cpp +43 -21
- data/ext/ice/cpp/{include → src}/Slice/Preprocessor.h +7 -12
- data/ext/ice/cpp/src/Slice/Python.cpp +207 -86
- data/ext/ice/cpp/src/Slice/PythonUtil.cpp +683 -679
- data/ext/ice/cpp/{include → src}/Slice/PythonUtil.h +19 -8
- data/ext/ice/cpp/src/Slice/Ruby.cpp +38 -34
- data/ext/ice/cpp/src/Slice/RubyUtil.cpp +177 -445
- data/ext/ice/cpp/{include → src}/Slice/RubyUtil.h +6 -6
- data/ext/ice/cpp/src/Slice/Scanner.cpp +218 -306
- data/ext/ice/cpp/src/Slice/{Util.cpp → SliceUtil.cpp} +37 -64
- data/ext/ice/cpp/src/Slice/StringLiteralUtil.cpp +374 -0
- data/ext/ice/cpp/src/Slice/Util.h +54 -0
- data/ext/ice/mcpp/Makefile +5 -2
- data/ice.gemspec +2 -7
- data/lib/Glacier2.rb +1 -1
- data/lib/Glacier2/Metrics.rb +7 -46
- data/lib/Glacier2/PermissionsVerifier.rb +24 -95
- data/lib/Glacier2/PermissionsVerifierF.rb +3 -3
- data/lib/Glacier2/Router.rb +32 -74
- data/lib/Glacier2/RouterF.rb +3 -3
- data/lib/Glacier2/SSLInfo.rb +4 -7
- data/lib/Glacier2/Session.rb +88 -307
- data/lib/Ice.rb +83 -52
- data/lib/Ice/BuiltinSequences.rb +4 -4
- data/lib/Ice/Communicator.rb +56 -58
- data/lib/Ice/CommunicatorF.rb +3 -3
- data/lib/Ice/Connection.rb +153 -162
- data/lib/Ice/ConnectionF.rb +3 -3
- data/lib/Ice/Current.rb +4 -11
- data/lib/Ice/Endpoint.rb +57 -133
- data/lib/Ice/EndpointF.rb +3 -3
- data/lib/Ice/EndpointTypes.rb +3 -7
- data/lib/Ice/FacetMap.rb +4 -4
- data/lib/Ice/Identity.rb +5 -8
- data/lib/Ice/ImplicitContext.rb +5 -34
- data/lib/Ice/ImplicitContextF.rb +3 -3
- data/lib/Ice/Instrumentation.rb +23 -275
- data/lib/Ice/InstrumentationF.rb +3 -3
- data/lib/Ice/LocalException.rb +95 -141
- data/lib/Ice/Locator.rb +51 -165
- data/lib/Ice/LocatorF.rb +3 -3
- data/lib/Ice/Logger.rb +5 -34
- data/lib/Ice/LoggerF.rb +3 -3
- data/lib/Ice/Metrics.rb +61 -416
- data/lib/Ice/ObjectAdapter.rb +34 -0
- data/lib/Ice/ObjectAdapterF.rb +3 -3
- data/lib/Ice/ObjectFactory.rb +5 -30
- data/lib/Ice/Plugin.rb +7 -60
- data/lib/Ice/PluginF.rb +3 -3
- data/lib/Ice/Process.rb +16 -52
- data/lib/Ice/ProcessF.rb +3 -3
- data/lib/Ice/Properties.rb +5 -41
- data/lib/Ice/PropertiesAdmin.rb +19 -56
- data/lib/Ice/PropertiesF.rb +3 -3
- data/lib/Ice/RemoteLogger.rb +34 -115
- data/lib/Ice/Router.rb +29 -101
- data/lib/Ice/RouterF.rb +3 -3
- data/lib/Ice/ServantLocator.rb +31 -0
- data/lib/Ice/{ObjectFactoryF.rb → ServantLocatorF.rb} +6 -6
- data/lib/Ice/SliceChecksumDict.rb +3 -3
- data/lib/Ice/ValueFactory.rb +33 -0
- data/lib/Ice/Version.rb +5 -11
- data/lib/IceBox.rb +1 -1
- data/lib/IceBox/IceBox.rb +44 -148
- data/lib/IceGrid.rb +1 -4
- data/lib/IceGrid/Admin.rb +551 -427
- data/lib/IceGrid/Descriptor.rb +62 -529
- data/lib/IceGrid/Exception.rb +24 -45
- data/lib/IceGrid/FileParser.rb +14 -50
- data/lib/IceGrid/PluginFacade.rb +40 -0
- data/lib/IceGrid/Registry.rb +151 -58
- data/lib/IceGrid/Session.rb +25 -64
- data/lib/IceGrid/UserAccountMapper.rb +14 -50
- data/lib/IcePatch2.rb +1 -1
- data/lib/IcePatch2/FileInfo.rb +5 -11
- data/lib/IcePatch2/FileServer.rb +33 -76
- data/lib/IceStorm.rb +1 -1
- data/lib/IceStorm/IceStorm.rb +79 -206
- data/lib/IceStorm/Metrics.rb +11 -89
- data/slice/Glacier2/Metrics.ice +8 -4
- data/slice/Glacier2/PermissionsVerifier.ice +10 -7
- data/slice/Glacier2/PermissionsVerifierF.ice +7 -4
- data/slice/Glacier2/Router.ice +10 -8
- data/slice/Glacier2/RouterF.ice +7 -4
- data/slice/Glacier2/SSLInfo.ice +8 -5
- data/slice/Glacier2/Session.ice +15 -13
- data/slice/Ice/BuiltinSequences.ice +7 -4
- data/slice/Ice/Communicator.ice +141 -66
- data/slice/Ice/CommunicatorF.ice +7 -4
- data/slice/Ice/Connection.ice +183 -86
- data/slice/Ice/ConnectionF.ice +7 -4
- data/slice/Ice/Current.ice +13 -9
- data/slice/Ice/Endpoint.ice +63 -14
- data/slice/Ice/EndpointF.ice +7 -4
- data/slice/Ice/EndpointTypes.ice +8 -6
- data/slice/Ice/FacetMap.ice +7 -4
- data/slice/Ice/Identity.ice +13 -5
- data/slice/Ice/ImplicitContext.ice +20 -18
- data/slice/Ice/ImplicitContextF.ice +7 -4
- data/slice/Ice/Instrumentation.ice +20 -19
- data/slice/Ice/InstrumentationF.ice +8 -5
- data/slice/Ice/LocalException.ice +87 -87
- data/slice/Ice/Locator.ice +19 -18
- data/slice/Ice/LocatorF.ice +7 -4
- data/slice/Ice/Logger.ice +9 -7
- data/slice/Ice/LoggerF.ice +7 -4
- data/slice/Ice/Metrics.ice +18 -14
- data/slice/Ice/ObjectAdapter.ice +30 -13
- data/slice/Ice/ObjectAdapterF.ice +7 -4
- data/slice/Ice/ObjectFactory.ice +15 -12
- data/slice/Ice/Plugin.ice +9 -6
- data/slice/Ice/PluginF.ice +8 -5
- data/slice/Ice/Process.ice +9 -6
- data/slice/Ice/ProcessF.ice +7 -4
- data/slice/Ice/Properties.ice +15 -12
- data/slice/Ice/PropertiesAdmin.ice +9 -5
- data/slice/Ice/PropertiesF.ice +7 -4
- data/slice/Ice/RemoteLogger.ice +33 -24
- data/slice/Ice/Router.ice +16 -7
- data/slice/Ice/RouterF.ice +7 -4
- data/slice/Ice/ServantLocator.ice +13 -10
- data/slice/Ice/ServantLocatorF.ice +7 -4
- data/slice/Ice/SliceChecksumDict.ice +7 -4
- data/slice/Ice/ValueFactory.ice +127 -0
- data/slice/Ice/Version.ice +9 -5
- data/slice/IceBT/ConnectionInfo.ice +53 -0
- data/slice/IceBT/EndpointInfo.ice +51 -0
- data/slice/IceBT/Types.ice +39 -0
- data/slice/IceBox/IceBox.ice +20 -21
- data/slice/IceDiscovery/IceDiscovery.ice +9 -5
- data/slice/IceGrid/Admin.ice +390 -30
- data/slice/IceGrid/Descriptor.ice +37 -29
- data/slice/IceGrid/Exception.ice +33 -27
- data/slice/IceGrid/FileParser.ice +9 -6
- data/slice/IceGrid/PluginFacade.ice +11 -9
- data/slice/IceGrid/Registry.ice +139 -16
- data/slice/IceGrid/Session.ice +10 -8
- data/slice/IceGrid/UserAccountMapper.ice +9 -6
- data/slice/IceIAP/ConnectionInfo.ice +70 -0
- data/slice/IceIAP/EndpointInfo.ice +64 -0
- data/slice/IceLocatorDiscovery/IceLocatorDiscovery.ice +9 -7
- data/slice/IcePatch2/FileInfo.ice +9 -8
- data/slice/IcePatch2/FileServer.ice +17 -13
- data/slice/IceSSL/ConnectionInfo.ice +14 -17
- data/slice/IceSSL/ConnectionInfoF.ice +24 -0
- data/slice/IceSSL/EndpointInfo.ice +9 -30
- data/slice/IceStorm/IceStorm.ice +22 -18
- data/slice/IceStorm/Metrics.ice +9 -5
- metadata +154 -120
- data/ext/ObjectFactory.cpp +0 -140
- data/ext/ObjectFactory.h +0 -50
- data/ext/ice/cpp/include/Ice/BasicStream.h +0 -1335
- data/ext/ice/cpp/include/Ice/Communicator.h +0 -200
- data/ext/ice/cpp/include/Ice/Connection.h +0 -497
- data/ext/ice/cpp/include/Ice/DeprecatedStringConverter.h +0 -62
- data/ext/ice/cpp/include/Ice/Endpoint.h +0 -341
- data/ext/ice/cpp/include/Ice/Identity.h +0 -168
- data/ext/ice/cpp/include/Ice/Instrumentation.h +0 -365
- data/ext/ice/cpp/include/Ice/LocalException.h +0 -1030
- data/ext/ice/cpp/include/Ice/Locator.h +0 -2193
- data/ext/ice/cpp/include/Ice/Metrics.h +0 -2974
- data/ext/ice/cpp/include/Ice/ObjectAdapter.h +0 -168
- data/ext/ice/cpp/include/Ice/ObjectFactory.h +0 -92
- data/ext/ice/cpp/include/Ice/ObjectFactoryF.h +0 -66
- data/ext/ice/cpp/include/Ice/Outgoing.h +0 -225
- data/ext/ice/cpp/include/Ice/Plugin.h +0 -125
- data/ext/ice/cpp/include/Ice/Process.h +0 -574
- data/ext/ice/cpp/include/Ice/PropertiesAdmin.h +0 -830
- data/ext/ice/cpp/include/Ice/RemoteLogger.h +0 -1500
- data/ext/ice/cpp/include/Ice/Router.h +0 -1159
- data/ext/ice/cpp/include/Ice/Stream.h +0 -447
- data/ext/ice/cpp/include/Ice/StreamF.h +0 -30
- data/ext/ice/cpp/include/Ice/Version.h +0 -262
- data/ext/ice/cpp/include/IceSSL/ConnectionInfo.h +0 -158
- data/ext/ice/cpp/include/IceSSL/EndpointInfo.h +0 -142
- data/ext/ice/cpp/include/IceUtil/AbstractMutex.h +0 -119
- data/ext/ice/cpp/include/IceUtil/Cache.h +0 -362
- data/ext/ice/cpp/include/Slice/CPlusPlusUtil.h +0 -65
- data/ext/ice/cpp/include/Slice/CsUtil.h +0 -92
- data/ext/ice/cpp/include/Slice/DotNetNames.h +0 -34
- data/ext/ice/cpp/include/Slice/ObjCUtil.h +0 -127
- data/ext/ice/cpp/include/Slice/Util.h +0 -56
- data/ext/ice/cpp/src/Ice/BasicStream.cpp +0 -3428
- data/ext/ice/cpp/src/Ice/DeprecatedStringConverter.cpp +0 -62
- data/ext/ice/cpp/src/Ice/ObjectFactoryManager.cpp +0 -139
- data/ext/ice/cpp/src/Ice/ObjectFactoryManager.h +0 -43
- data/ext/ice/cpp/src/Ice/Outgoing.cpp +0 -694
- data/ext/ice/cpp/src/Ice/Stream.cpp +0 -53
- data/ext/ice/cpp/src/Ice/StreamI.cpp +0 -832
- data/ext/ice/cpp/src/Ice/StreamI.h +0 -198
- data/ext/ice/cpp/src/IceSSL/Certificate.cpp +0 -1336
- data/ext/ice/cpp/src/IceUtil/Exception.cpp +0 -792
- data/ext/ice/cpp/src/IceUtil/FileUtil.h +0 -185
- data/ext/ice/cpp/src/Slice/CsUtil.cpp +0 -2660
- data/ext/ice/cpp/src/Slice/DotNetNames.cpp +0 -146
- data/ext/ice/cpp/src/Slice/ObjCUtil.cpp +0 -1310
- data/lib/IceGrid/Locator.rb +0 -106
- data/lib/IceGrid/Observer.rb +0 -572
- data/lib/IceGrid/Query.rb +0 -169
- data/slice/Freeze/BackgroundSaveEvictor.ice +0 -111
- data/slice/Freeze/CatalogData.ice +0 -49
- data/slice/Freeze/Connection.ice +0 -121
- data/slice/Freeze/DB.ice +0 -37
- data/slice/Freeze/Evictor.ice +0 -346
- data/slice/Freeze/EvictorF.ice +0 -22
- data/slice/Freeze/EvictorStorage.ice +0 -72
- data/slice/Freeze/Exception.ice +0 -100
- data/slice/Freeze/Transaction.ice +0 -58
- data/slice/Freeze/TransactionalEvictor.ice +0 -50
- data/slice/IceGrid/Locator.ice +0 -57
- data/slice/IceGrid/Observer.ice +0 -395
- data/slice/IceGrid/Query.ice +0 -131
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
// **********************************************************************
|
|
2
|
+
//
|
|
3
|
+
// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
|
|
4
|
+
//
|
|
5
|
+
// This copy of Ice is licensed to you under the terms described in the
|
|
6
|
+
// ICE_LICENSE file included in this distribution.
|
|
7
|
+
//
|
|
8
|
+
// **********************************************************************
|
|
9
|
+
|
|
10
|
+
#ifndef ICESSL_SCHANNEL_ENGINE_H
|
|
11
|
+
#define ICESSL_SCHANNEL_ENGINE_H
|
|
12
|
+
|
|
13
|
+
#include <IceSSL/SSLEngine.h>
|
|
14
|
+
#include <IceSSL/SChannelEngineF.h>
|
|
15
|
+
|
|
16
|
+
//
|
|
17
|
+
// SECURITY_WIN32 or SECURITY_KERNEL, must be defined before including security.h
|
|
18
|
+
// indicating who is compiling the code.
|
|
19
|
+
//
|
|
20
|
+
# ifdef SECURITY_WIN32
|
|
21
|
+
# undef SECURITY_WIN32
|
|
22
|
+
# endif
|
|
23
|
+
# ifdef SECURITY_KERNEL
|
|
24
|
+
# undef SECURITY_KERNEL
|
|
25
|
+
# endif
|
|
26
|
+
# define SECURITY_WIN32 1
|
|
27
|
+
# include <security.h>
|
|
28
|
+
# include <sspi.h>
|
|
29
|
+
# include <schannel.h>
|
|
30
|
+
# undef SECURITY_WIN32
|
|
31
|
+
|
|
32
|
+
#if defined(__MINGW32__) || (defined(_MSC_VER) && (_MSC_VER <= 1500))
|
|
33
|
+
|
|
34
|
+
//
|
|
35
|
+
// Add some definitions missing from MinGW headers.
|
|
36
|
+
//
|
|
37
|
+
|
|
38
|
+
# ifndef CERT_TRUST_IS_EXPLICIT_DISTRUST
|
|
39
|
+
# define CERT_TRUST_IS_EXPLICIT_DISTRUST 0x04000000
|
|
40
|
+
# endif
|
|
41
|
+
|
|
42
|
+
# ifndef CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT
|
|
43
|
+
# define CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT 0x08000000
|
|
44
|
+
# endif
|
|
45
|
+
|
|
46
|
+
# ifndef SECBUFFER_ALERT
|
|
47
|
+
# define SECBUFFER_ALERT 17
|
|
48
|
+
# endif
|
|
49
|
+
|
|
50
|
+
# ifndef SCH_SEND_ROOT_CERT
|
|
51
|
+
# define SCH_SEND_ROOT_CERT 0x00040000
|
|
52
|
+
# endif
|
|
53
|
+
|
|
54
|
+
# ifndef SP_PROT_TLS1_1_SERVER
|
|
55
|
+
# define SP_PROT_TLS1_1_SERVER 0x00000100
|
|
56
|
+
# endif
|
|
57
|
+
|
|
58
|
+
# ifndef SP_PROT_TLS1_1_CLIENT
|
|
59
|
+
# define SP_PROT_TLS1_1_CLIENT 0x00000200
|
|
60
|
+
# endif
|
|
61
|
+
|
|
62
|
+
# ifndef SP_PROT_TLS1_2_SERVER
|
|
63
|
+
# define SP_PROT_TLS1_2_SERVER 0x00000400
|
|
64
|
+
# endif
|
|
65
|
+
|
|
66
|
+
# ifndef SP_PROT_TLS1_2_CLIENT
|
|
67
|
+
# define SP_PROT_TLS1_2_CLIENT 0x00000800
|
|
68
|
+
# endif
|
|
69
|
+
|
|
70
|
+
#endif
|
|
71
|
+
|
|
72
|
+
namespace IceSSL
|
|
73
|
+
{
|
|
74
|
+
|
|
75
|
+
namespace SChannel
|
|
76
|
+
{
|
|
77
|
+
|
|
78
|
+
class SSLEngine : public IceSSL::SSLEngine
|
|
79
|
+
{
|
|
80
|
+
public:
|
|
81
|
+
|
|
82
|
+
SSLEngine(const Ice::CommunicatorPtr&);
|
|
83
|
+
|
|
84
|
+
//
|
|
85
|
+
// Setup the engine.
|
|
86
|
+
//
|
|
87
|
+
virtual void initialize();
|
|
88
|
+
|
|
89
|
+
virtual IceInternal::TransceiverPtr
|
|
90
|
+
createTransceiver(const InstancePtr&, const IceInternal::TransceiverPtr&, const std::string&, bool);
|
|
91
|
+
|
|
92
|
+
//
|
|
93
|
+
// Destroy the engine.
|
|
94
|
+
//
|
|
95
|
+
virtual void destroy();
|
|
96
|
+
|
|
97
|
+
virtual void verifyPeer(const std::string&, const ConnectionInfoPtr&, const std::string&);
|
|
98
|
+
|
|
99
|
+
std::string getCipherName(ALG_ID) const;
|
|
100
|
+
|
|
101
|
+
CredHandle newCredentialsHandle(bool);
|
|
102
|
+
|
|
103
|
+
HCERTCHAINENGINE chainEngine() const;
|
|
104
|
+
|
|
105
|
+
private:
|
|
106
|
+
|
|
107
|
+
void parseCiphers(const std::string&);
|
|
108
|
+
|
|
109
|
+
std::vector<PCCERT_CONTEXT> _allCerts;
|
|
110
|
+
std::vector<PCCERT_CONTEXT> _importedCerts;
|
|
111
|
+
DWORD _protocols;
|
|
112
|
+
|
|
113
|
+
std::vector<HCERTSTORE> _stores;
|
|
114
|
+
HCERTSTORE _rootStore;
|
|
115
|
+
|
|
116
|
+
HCERTCHAINENGINE _chainEngine;
|
|
117
|
+
std::vector<ALG_ID> _ciphers;
|
|
118
|
+
|
|
119
|
+
const bool _strongCrypto;
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
#endif
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// **********************************************************************
|
|
2
|
+
//
|
|
3
|
+
// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
|
|
4
|
+
//
|
|
5
|
+
// This copy of Ice is licensed to you under the terms described in the
|
|
6
|
+
// ICE_LICENSE file included in this distribution.
|
|
7
|
+
//
|
|
8
|
+
// **********************************************************************
|
|
9
|
+
|
|
10
|
+
#ifndef ICESSL_SCHANNEL_ENGINE_F_H
|
|
11
|
+
#define ICESSL_SCHANNEL_ENGINE_F_H
|
|
12
|
+
|
|
13
|
+
#include <IceUtil/Shared.h>
|
|
14
|
+
#include <Ice/Handle.h>
|
|
15
|
+
|
|
16
|
+
#include <IceSSL/SChannel.h>
|
|
17
|
+
|
|
18
|
+
namespace IceSSL
|
|
19
|
+
{
|
|
20
|
+
|
|
21
|
+
namespace SChannel
|
|
22
|
+
{
|
|
23
|
+
|
|
24
|
+
class SSLEngine;
|
|
25
|
+
ICESSL_API IceUtil::Shared* upCast(SSLEngine*);
|
|
26
|
+
typedef IceInternal::Handle<SSLEngine> SSLEnginePtr;
|
|
27
|
+
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
#endif
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
// **********************************************************************
|
|
2
|
+
//
|
|
3
|
+
// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
|
|
4
|
+
//
|
|
5
|
+
// This copy of Ice is licensed to you under the terms described in the
|
|
6
|
+
// ICE_LICENSE file included in this distribution.
|
|
7
|
+
//
|
|
8
|
+
// **********************************************************************
|
|
9
|
+
|
|
10
|
+
#include <IceSSL/PluginI.h>
|
|
11
|
+
#include <IceSSL/SChannelEngine.h>
|
|
12
|
+
|
|
13
|
+
#include <Ice/Initialize.h>
|
|
14
|
+
|
|
15
|
+
using namespace std;
|
|
16
|
+
|
|
17
|
+
namespace
|
|
18
|
+
{
|
|
19
|
+
|
|
20
|
+
class PluginI : public IceSSL::PluginI
|
|
21
|
+
{
|
|
22
|
+
public:
|
|
23
|
+
|
|
24
|
+
PluginI(const Ice::CommunicatorPtr&);
|
|
25
|
+
|
|
26
|
+
virtual IceSSL::CertificatePtr create(CERT_SIGNED_CONTENT_INFO*) const;
|
|
27
|
+
virtual IceSSL::CertificatePtr load(const std::string&) const;
|
|
28
|
+
virtual IceSSL::CertificatePtr decode(const std::string&) const;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
} // anonymous namespace end
|
|
32
|
+
|
|
33
|
+
//
|
|
34
|
+
// Plugin implementation.
|
|
35
|
+
//
|
|
36
|
+
PluginI::PluginI(const Ice::CommunicatorPtr& com) :
|
|
37
|
+
IceSSL::PluginI(com, new IceSSL::SChannel::SSLEngine(com))
|
|
38
|
+
{
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
IceSSL::CertificatePtr
|
|
42
|
+
PluginI::create(CERT_SIGNED_CONTENT_INFO* cert) const
|
|
43
|
+
{
|
|
44
|
+
return IceSSL::SChannel::Certificate::create(cert);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
IceSSL::CertificatePtr
|
|
48
|
+
PluginI::load(const std::string& file) const
|
|
49
|
+
{
|
|
50
|
+
return IceSSL::SChannel::Certificate::load(file);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
IceSSL::CertificatePtr
|
|
54
|
+
PluginI::decode(const std::string& encoding) const
|
|
55
|
+
{
|
|
56
|
+
return IceSSL::SChannel::Certificate::load(encoding);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
//
|
|
60
|
+
// Plug-in factory function.
|
|
61
|
+
//
|
|
62
|
+
extern "C" ICESSL_API Ice::Plugin*
|
|
63
|
+
createIceSSL(const Ice::CommunicatorPtr& communicator, const string& /*name*/, const Ice::StringSeq& /*args*/)
|
|
64
|
+
{
|
|
65
|
+
return new PluginI(communicator);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
IceSSL::CertificatePtr
|
|
69
|
+
IceSSL::Certificate::load(const std::string& file)
|
|
70
|
+
{
|
|
71
|
+
return IceSSL::SChannel::Certificate::load(file);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
IceSSL::CertificatePtr
|
|
75
|
+
IceSSL::Certificate::decode(const std::string& encoding)
|
|
76
|
+
{
|
|
77
|
+
return IceSSL::SChannel::Certificate::decode(encoding);
|
|
78
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// **********************************************************************
|
|
2
2
|
//
|
|
3
|
-
// Copyright (c) 2003-
|
|
3
|
+
// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
|
|
4
4
|
//
|
|
5
5
|
// This copy of Ice is licensed to you under the terms described in the
|
|
6
6
|
// ICE_LICENSE file included in this distribution.
|
|
@@ -13,15 +13,13 @@
|
|
|
13
13
|
|
|
14
14
|
#include <IceSSL/ConnectionInfo.h>
|
|
15
15
|
#include <IceSSL/Instance.h>
|
|
16
|
-
#include <IceSSL/
|
|
16
|
+
#include <IceSSL/SChannelEngine.h>
|
|
17
17
|
#include <IceSSL/Util.h>
|
|
18
18
|
#include <Ice/Communicator.h>
|
|
19
19
|
#include <Ice/LoggerUtil.h>
|
|
20
20
|
#include <Ice/Buffer.h>
|
|
21
21
|
#include <Ice/LocalException.h>
|
|
22
22
|
|
|
23
|
-
#ifdef ICE_USE_SCHANNEL
|
|
24
|
-
|
|
25
23
|
using namespace std;
|
|
26
24
|
using namespace Ice;
|
|
27
25
|
using namespace IceSSL;
|
|
@@ -203,16 +201,22 @@ getSecBufferWithType(const SecBufferDesc& desc, ULONG bufferType)
|
|
|
203
201
|
return 0;
|
|
204
202
|
}
|
|
205
203
|
|
|
204
|
+
string
|
|
205
|
+
secStatusToString(SECURITY_STATUS status)
|
|
206
|
+
{
|
|
207
|
+
return IceUtilInternal::errorToString(status);
|
|
208
|
+
}
|
|
209
|
+
|
|
206
210
|
}
|
|
207
211
|
|
|
208
212
|
IceInternal::NativeInfoPtr
|
|
209
|
-
|
|
213
|
+
SChannel::TransceiverI::getNativeInfo()
|
|
210
214
|
{
|
|
211
|
-
return
|
|
215
|
+
return _delegate->getNativeInfo();
|
|
212
216
|
}
|
|
213
217
|
|
|
214
218
|
IceInternal::SocketOperation
|
|
215
|
-
|
|
219
|
+
SChannel::TransceiverI::sslHandshake()
|
|
216
220
|
{
|
|
217
221
|
DWORD flags = ASC_REQ_SEQUENCE_DETECT | ASC_REQ_REPLAY_DETECT | ASC_REQ_CONFIDENTIALITY | ASC_REQ_ALLOCATE_MEMORY |
|
|
218
222
|
ASC_REQ_STREAM;
|
|
@@ -247,8 +251,7 @@ IceSSL::TransceiverI::sslHandshake()
|
|
|
247
251
|
&_ssl, &outBufferDesc, &ctxFlags, 0);
|
|
248
252
|
if(err != SEC_E_OK && err != SEC_I_CONTINUE_NEEDED)
|
|
249
253
|
{
|
|
250
|
-
throw SecurityException(__FILE__, __LINE__, "IceSSL: handshake failure:\n" +
|
|
251
|
-
IceUtilInternal::lastErrorToString());
|
|
254
|
+
throw SecurityException(__FILE__, __LINE__, "IceSSL: handshake failure:\n" + secStatusToString(err));
|
|
252
255
|
}
|
|
253
256
|
_sslInitialized = true;
|
|
254
257
|
|
|
@@ -312,14 +315,13 @@ IceSSL::TransceiverI::sslHandshake()
|
|
|
312
315
|
{
|
|
313
316
|
SecBuffer* missing = getSecBufferWithType(inBufferDesc, SECBUFFER_MISSING);
|
|
314
317
|
size_t pos = _readBuffer.i - _readBuffer.b.begin();
|
|
315
|
-
_readBuffer.b.resize(
|
|
318
|
+
_readBuffer.b.resize(missing ? (pos + missing->cbBuffer) : (pos * 2));
|
|
316
319
|
_readBuffer.i = _readBuffer.b.begin() + pos;
|
|
317
320
|
return IceInternal::SocketOperationRead;
|
|
318
321
|
}
|
|
319
322
|
else if(err != SEC_I_CONTINUE_NEEDED && err != SEC_E_OK)
|
|
320
323
|
{
|
|
321
|
-
throw SecurityException(__FILE__, __LINE__, "SSL handshake failure:\n" +
|
|
322
|
-
IceUtilInternal::lastErrorToString());
|
|
324
|
+
throw SecurityException(__FILE__, __LINE__, "SSL handshake failure:\n" + secStatusToString(err));
|
|
323
325
|
}
|
|
324
326
|
|
|
325
327
|
//
|
|
@@ -359,7 +361,7 @@ IceSSL::TransceiverI::sslHandshake()
|
|
|
359
361
|
break; // We're done.
|
|
360
362
|
}
|
|
361
363
|
|
|
362
|
-
|
|
364
|
+
// Otherwise continue either reading credentials
|
|
363
365
|
}
|
|
364
366
|
|
|
365
367
|
if(_state == StateHandshakeWriteContinue)
|
|
@@ -455,7 +457,7 @@ IceSSL::TransceiverI::sslHandshake()
|
|
|
455
457
|
if(err != SEC_E_OK)
|
|
456
458
|
{
|
|
457
459
|
throw SecurityException(__FILE__, __LINE__, "IceSSL: failure to query stream sizes attributes:\n" +
|
|
458
|
-
|
|
460
|
+
secStatusToString(err));
|
|
459
461
|
}
|
|
460
462
|
|
|
461
463
|
size_t pos = _readBuffer.i - _readBuffer.b.begin();
|
|
@@ -477,7 +479,7 @@ IceSSL::TransceiverI::sslHandshake()
|
|
|
477
479
|
// data before it can decrypt the complete message.
|
|
478
480
|
//
|
|
479
481
|
size_t
|
|
480
|
-
|
|
482
|
+
SChannel::TransceiverI::decryptMessage(IceInternal::Buffer& buffer)
|
|
481
483
|
{
|
|
482
484
|
assert(_readBuffer.i != _readBuffer.b.begin() || !_readUnprocessed.b.empty());
|
|
483
485
|
|
|
@@ -538,7 +540,7 @@ IceSSL::TransceiverI::decryptMessage(IceInternal::Buffer& buffer)
|
|
|
538
540
|
else if(err != SEC_E_OK)
|
|
539
541
|
{
|
|
540
542
|
throw ProtocolException(__FILE__, __LINE__, "IceSSL: protocol error during read:\n" +
|
|
541
|
-
|
|
543
|
+
secStatusToString(err));
|
|
542
544
|
}
|
|
543
545
|
|
|
544
546
|
SecBuffer* dataBuffer = getSecBufferWithType(inBufferDesc, SECBUFFER_DATA);
|
|
@@ -582,7 +584,7 @@ IceSSL::TransceiverI::decryptMessage(IceInternal::Buffer& buffer)
|
|
|
582
584
|
// number of bytes is less than the message size, the function must be called again.
|
|
583
585
|
//
|
|
584
586
|
size_t
|
|
585
|
-
|
|
587
|
+
SChannel::TransceiverI::encryptMessage(IceInternal::Buffer& buffer)
|
|
586
588
|
{
|
|
587
589
|
//
|
|
588
590
|
// Limit the message size to cbMaximumMessage which is the maximun size data that can be
|
|
@@ -611,7 +613,7 @@ IceSSL::TransceiverI::encryptMessage(IceInternal::Buffer& buffer)
|
|
|
611
613
|
if(err != SEC_E_OK)
|
|
612
614
|
{
|
|
613
615
|
throw ProtocolException(__FILE__, __LINE__, "IceSSL: protocol error encrypting message:\n" +
|
|
614
|
-
|
|
616
|
+
secStatusToString(err));
|
|
615
617
|
}
|
|
616
618
|
|
|
617
619
|
// EncryptMessage resizes the buffers, so resize the write buffer as well to reflect this.
|
|
@@ -622,15 +624,19 @@ IceSSL::TransceiverI::encryptMessage(IceInternal::Buffer& buffer)
|
|
|
622
624
|
}
|
|
623
625
|
|
|
624
626
|
IceInternal::SocketOperation
|
|
625
|
-
|
|
627
|
+
SChannel::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::Buffer& writeBuffer)
|
|
626
628
|
{
|
|
627
|
-
|
|
628
|
-
if(op != IceInternal::SocketOperationNone)
|
|
629
|
+
if(_state == StateNotInitialized)
|
|
629
630
|
{
|
|
630
|
-
|
|
631
|
+
IceInternal::SocketOperation op = _delegate->initialize(readBuffer, writeBuffer);
|
|
632
|
+
if(op != IceInternal::SocketOperationNone)
|
|
633
|
+
{
|
|
634
|
+
return op;
|
|
635
|
+
}
|
|
636
|
+
_state = StateHandshakeNotStarted;
|
|
631
637
|
}
|
|
632
638
|
|
|
633
|
-
op = sslHandshake();
|
|
639
|
+
IceInternal::SocketOperation op = sslHandshake();
|
|
634
640
|
if(op != IceInternal::SocketOperationNone)
|
|
635
641
|
{
|
|
636
642
|
return op;
|
|
@@ -643,8 +649,8 @@ IceSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::B
|
|
|
643
649
|
SECURITY_STATUS err = QueryContextAttributes(&_ssl, SECPKG_ATTR_REMOTE_CERT_CONTEXT, &cert);
|
|
644
650
|
if(err && err != SEC_E_NO_CREDENTIALS)
|
|
645
651
|
{
|
|
646
|
-
throw SecurityException(__FILE__, __LINE__, "IceSSL: certificate verification failure
|
|
647
|
-
|
|
652
|
+
throw SecurityException(__FILE__, __LINE__, "IceSSL: certificate verification failure:\n" +
|
|
653
|
+
secStatusToString(err));
|
|
648
654
|
}
|
|
649
655
|
|
|
650
656
|
if(!cert && ((!_incoming && _engine->getVerifyPeer() > 0) || (_incoming && _engine->getVerifyPeer() == 2)))
|
|
@@ -653,8 +659,7 @@ IceSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::B
|
|
|
653
659
|
// Clients require server certificate if VerifyPeer > 0 and servers require client
|
|
654
660
|
// certificate if VerifyPeer == 2
|
|
655
661
|
//
|
|
656
|
-
throw SecurityException(__FILE__, __LINE__, "IceSSL: certificate required
|
|
657
|
-
IceUtilInternal::lastErrorToString());
|
|
662
|
+
throw SecurityException(__FILE__, __LINE__, "IceSSL: certificate required");
|
|
658
663
|
}
|
|
659
664
|
else if(cert) // Verify the remote certificate
|
|
660
665
|
{
|
|
@@ -682,6 +687,26 @@ IceSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::B
|
|
|
682
687
|
_verified = true;
|
|
683
688
|
}
|
|
684
689
|
|
|
690
|
+
CERT_SIMPLE_CHAIN* simpleChain = certChain->rgpChain[0];
|
|
691
|
+
for(DWORD i = 0; i < simpleChain->cElement; ++i)
|
|
692
|
+
{
|
|
693
|
+
PCCERT_CONTEXT c = simpleChain->rgpElement[i]->pCertContext;
|
|
694
|
+
PCERT_SIGNED_CONTENT_INFO cc;
|
|
695
|
+
|
|
696
|
+
DWORD length = 0;
|
|
697
|
+
if(!CryptDecodeObjectEx(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, X509_CERT, c->pbCertEncoded,
|
|
698
|
+
c->cbCertEncoded, CRYPT_DECODE_ALLOC_FLAG, 0, &cc, &length))
|
|
699
|
+
{
|
|
700
|
+
CertFreeCertificateChain(certChain);
|
|
701
|
+
CertFreeCertificateContext(cert);
|
|
702
|
+
throw SecurityException(__FILE__, __LINE__,
|
|
703
|
+
"IceSSL: error decoding peer certificate chain:\n" +
|
|
704
|
+
IceUtilInternal::lastErrorToString());
|
|
705
|
+
}
|
|
706
|
+
|
|
707
|
+
_certs.push_back(SChannel::Certificate::create(cc));
|
|
708
|
+
}
|
|
709
|
+
|
|
685
710
|
CertFreeCertificateChain(certChain);
|
|
686
711
|
CertFreeCertificateContext(cert);
|
|
687
712
|
if(!trustError.empty())
|
|
@@ -696,13 +721,13 @@ IceSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::B
|
|
|
696
721
|
if(_instance->traceLevel() >= 1)
|
|
697
722
|
{
|
|
698
723
|
_instance->logger()->trace(_instance->traceCategory(),
|
|
699
|
-
"IceSSL: ignoring certificate verification failure
|
|
724
|
+
"IceSSL: ignoring certificate verification failure:\n" + reason);
|
|
700
725
|
}
|
|
701
726
|
}
|
|
702
727
|
else
|
|
703
728
|
{
|
|
704
729
|
ostringstream os;
|
|
705
|
-
os << "IceSSL: certificate verification failure
|
|
730
|
+
os << "IceSSL: certificate verification failure:\n" << reason;
|
|
706
731
|
string msg = os.str();
|
|
707
732
|
if(_instance->traceLevel() >= 1)
|
|
708
733
|
{
|
|
@@ -713,7 +738,18 @@ IceSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::B
|
|
|
713
738
|
}
|
|
714
739
|
}
|
|
715
740
|
|
|
716
|
-
|
|
741
|
+
SecPkgContext_ConnectionInfo connInfo;
|
|
742
|
+
err = QueryContextAttributes(&_ssl, SECPKG_ATTR_CONNECTION_INFO, &connInfo);
|
|
743
|
+
if(err == SEC_E_OK)
|
|
744
|
+
{
|
|
745
|
+
_cipher = _engine->getCipherName(connInfo.aiCipher);
|
|
746
|
+
}
|
|
747
|
+
else
|
|
748
|
+
{
|
|
749
|
+
throw SecurityException(__FILE__, __LINE__, "IceSSL: error reading cipher info:\n" + secStatusToString(err));
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
_engine->verifyPeer(_host, ICE_DYNAMIC_CAST(ConnectionInfo, getInfo()), toString());
|
|
717
753
|
_state = StateHandshakeComplete;
|
|
718
754
|
|
|
719
755
|
if(_instance->engine()->securityTraceLevel() >= 1)
|
|
@@ -744,12 +780,13 @@ IceSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::B
|
|
|
744
780
|
}
|
|
745
781
|
out << toString();
|
|
746
782
|
}
|
|
747
|
-
|
|
783
|
+
_delegate->getNativeInfo()->ready(IceInternal::SocketOperationRead,
|
|
784
|
+
!_readUnprocessed.b.empty() || _readBuffer.i != _readBuffer.b.begin());
|
|
748
785
|
return IceInternal::SocketOperationNone;
|
|
749
786
|
}
|
|
750
787
|
|
|
751
788
|
IceInternal::SocketOperation
|
|
752
|
-
|
|
789
|
+
SChannel::TransceiverI::closing(bool initiator, const Ice::LocalException&)
|
|
753
790
|
{
|
|
754
791
|
// If we are initiating the connection closure, wait for the peer
|
|
755
792
|
// to close the TCP/IP connection. Otherwise, close immediately.
|
|
@@ -757,7 +794,7 @@ IceSSL::TransceiverI::closing(bool initiator, const Ice::LocalException&)
|
|
|
757
794
|
}
|
|
758
795
|
|
|
759
796
|
void
|
|
760
|
-
|
|
797
|
+
SChannel::TransceiverI::close()
|
|
761
798
|
{
|
|
762
799
|
if(_sslInitialized)
|
|
763
800
|
{
|
|
@@ -771,7 +808,7 @@ IceSSL::TransceiverI::close()
|
|
|
771
808
|
_credentialsInitialized = false;
|
|
772
809
|
}
|
|
773
810
|
|
|
774
|
-
|
|
811
|
+
_delegate->close();
|
|
775
812
|
|
|
776
813
|
//
|
|
777
814
|
// Clear the buffers now instead of waiting for destruction.
|
|
@@ -782,11 +819,11 @@ IceSSL::TransceiverI::close()
|
|
|
782
819
|
}
|
|
783
820
|
|
|
784
821
|
IceInternal::SocketOperation
|
|
785
|
-
|
|
822
|
+
SChannel::TransceiverI::write(IceInternal::Buffer& buf)
|
|
786
823
|
{
|
|
787
|
-
if(
|
|
824
|
+
if(_state == StateNotInitialized)
|
|
788
825
|
{
|
|
789
|
-
return
|
|
826
|
+
return _delegate->write(buf);
|
|
790
827
|
}
|
|
791
828
|
|
|
792
829
|
if(buf.i == buf.b.end())
|
|
@@ -817,11 +854,11 @@ IceSSL::TransceiverI::write(IceInternal::Buffer& buf)
|
|
|
817
854
|
}
|
|
818
855
|
|
|
819
856
|
IceInternal::SocketOperation
|
|
820
|
-
|
|
857
|
+
SChannel::TransceiverI::read(IceInternal::Buffer& buf)
|
|
821
858
|
{
|
|
822
|
-
if(
|
|
859
|
+
if(_state == StateNotInitialized)
|
|
823
860
|
{
|
|
824
|
-
return
|
|
861
|
+
return _delegate->read(buf);
|
|
825
862
|
}
|
|
826
863
|
|
|
827
864
|
if(buf.i == buf.b.end())
|
|
@@ -830,7 +867,7 @@ IceSSL::TransceiverI::read(IceInternal::Buffer& buf, bool& hasMoreData)
|
|
|
830
867
|
}
|
|
831
868
|
assert(_state == StateHandshakeComplete);
|
|
832
869
|
|
|
833
|
-
|
|
870
|
+
_delegate->getNativeInfo()->ready(IceInternal::SocketOperationRead, false);
|
|
834
871
|
while(buf.i != buf.b.end())
|
|
835
872
|
{
|
|
836
873
|
if(_readUnprocessed.b.empty() && _readBuffer.i == _readBuffer.b.begin() && !readRaw(_readBuffer))
|
|
@@ -850,18 +887,19 @@ IceSSL::TransceiverI::read(IceInternal::Buffer& buf, bool& hasMoreData)
|
|
|
850
887
|
|
|
851
888
|
buf.i += decrypted;
|
|
852
889
|
}
|
|
853
|
-
|
|
890
|
+
_delegate->getNativeInfo()->ready(IceInternal::SocketOperationRead,
|
|
891
|
+
!_readUnprocessed.b.empty() || _readBuffer.i != _readBuffer.b.begin());
|
|
854
892
|
return IceInternal::SocketOperationNone;
|
|
855
893
|
}
|
|
856
894
|
|
|
857
895
|
#ifdef ICE_USE_IOCP
|
|
858
896
|
|
|
859
897
|
bool
|
|
860
|
-
|
|
898
|
+
SChannel::TransceiverI::startWrite(IceInternal::Buffer& buffer)
|
|
861
899
|
{
|
|
862
|
-
if(
|
|
900
|
+
if(_state == StateNotInitialized)
|
|
863
901
|
{
|
|
864
|
-
return
|
|
902
|
+
return _delegate->startWrite(buffer);
|
|
865
903
|
}
|
|
866
904
|
|
|
867
905
|
if(_state == StateHandshakeComplete && _bufferedW == 0)
|
|
@@ -870,19 +908,19 @@ IceSSL::TransceiverI::startWrite(IceInternal::Buffer& buffer)
|
|
|
870
908
|
_bufferedW = encryptMessage(buffer);
|
|
871
909
|
}
|
|
872
910
|
|
|
873
|
-
return
|
|
911
|
+
return _delegate->startWrite(_writeBuffer) && _bufferedW == (buffer.b.end() - buffer.i);
|
|
874
912
|
}
|
|
875
913
|
|
|
876
914
|
void
|
|
877
|
-
|
|
915
|
+
SChannel::TransceiverI::finishWrite(IceInternal::Buffer& buf)
|
|
878
916
|
{
|
|
879
|
-
if(
|
|
917
|
+
if(_state == StateNotInitialized)
|
|
880
918
|
{
|
|
881
|
-
|
|
919
|
+
_delegate->finishWrite(buf);
|
|
882
920
|
return;
|
|
883
921
|
}
|
|
884
922
|
|
|
885
|
-
|
|
923
|
+
_delegate->finishWrite(_writeBuffer);
|
|
886
924
|
if(_writeBuffer.i != _writeBuffer.b.end())
|
|
887
925
|
{
|
|
888
926
|
return; // We're not finished yet with writing the write buffer.
|
|
@@ -896,99 +934,96 @@ IceSSL::TransceiverI::finishWrite(IceInternal::Buffer& buf)
|
|
|
896
934
|
}
|
|
897
935
|
|
|
898
936
|
void
|
|
899
|
-
|
|
937
|
+
SChannel::TransceiverI::startRead(IceInternal::Buffer& buffer)
|
|
900
938
|
{
|
|
901
|
-
if(
|
|
939
|
+
if(_state == StateNotInitialized)
|
|
902
940
|
{
|
|
903
|
-
|
|
941
|
+
_delegate->startRead(buffer);
|
|
904
942
|
return;
|
|
905
943
|
}
|
|
906
|
-
|
|
944
|
+
_delegate->startRead(_readBuffer);
|
|
907
945
|
}
|
|
908
946
|
|
|
909
947
|
void
|
|
910
|
-
|
|
948
|
+
SChannel::TransceiverI::finishRead(IceInternal::Buffer& buf)
|
|
911
949
|
{
|
|
912
|
-
if(
|
|
950
|
+
if(_state == StateNotInitialized)
|
|
913
951
|
{
|
|
914
|
-
|
|
952
|
+
_delegate->finishRead(buf);
|
|
915
953
|
return;
|
|
916
954
|
}
|
|
917
955
|
|
|
918
|
-
|
|
956
|
+
_delegate->finishRead(_readBuffer);
|
|
919
957
|
if(_state == StateHandshakeComplete)
|
|
920
958
|
{
|
|
921
959
|
size_t decrypted = decryptMessage(buf);
|
|
922
960
|
if(decrypted > 0)
|
|
923
961
|
{
|
|
924
962
|
buf.i += decrypted;
|
|
925
|
-
|
|
963
|
+
_delegate->getNativeInfo()->ready(IceInternal::SocketOperationRead,
|
|
964
|
+
!_readUnprocessed.b.empty() || _readBuffer.i != _readBuffer.b.begin());
|
|
926
965
|
}
|
|
927
966
|
else
|
|
928
967
|
{
|
|
929
|
-
|
|
968
|
+
_delegate->getNativeInfo()->ready(IceInternal::SocketOperationRead, false);
|
|
930
969
|
}
|
|
931
970
|
}
|
|
932
971
|
}
|
|
933
972
|
#endif
|
|
934
973
|
|
|
935
974
|
string
|
|
936
|
-
|
|
975
|
+
SChannel::TransceiverI::protocol() const
|
|
937
976
|
{
|
|
938
977
|
return _instance->protocol();
|
|
939
978
|
}
|
|
940
979
|
|
|
941
980
|
string
|
|
942
|
-
|
|
981
|
+
SChannel::TransceiverI::toString() const
|
|
943
982
|
{
|
|
944
|
-
return
|
|
983
|
+
return _delegate->toString();
|
|
945
984
|
}
|
|
946
985
|
|
|
947
986
|
string
|
|
948
|
-
|
|
987
|
+
SChannel::TransceiverI::toDetailedString() const
|
|
949
988
|
{
|
|
950
989
|
return toString();
|
|
951
990
|
}
|
|
952
991
|
|
|
953
992
|
Ice::ConnectionInfoPtr
|
|
954
|
-
|
|
955
|
-
{
|
|
956
|
-
NativeConnectionInfoPtr info = new NativeConnectionInfo();
|
|
957
|
-
fillConnectionInfo(info, info->nativeCerts);
|
|
958
|
-
return info;
|
|
959
|
-
}
|
|
960
|
-
|
|
961
|
-
Ice::ConnectionInfoPtr
|
|
962
|
-
IceSSL::TransceiverI::getWSInfo(const Ice::HeaderDict& headers) const
|
|
993
|
+
SChannel::TransceiverI::getInfo() const
|
|
963
994
|
{
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
info->
|
|
995
|
+
ConnectionInfoPtr info = ICE_MAKE_SHARED(ConnectionInfo);
|
|
996
|
+
info->underlying = _delegate->getInfo();
|
|
997
|
+
info->incoming = _incoming;
|
|
998
|
+
info->adapterName = _adapterName;
|
|
999
|
+
info->cipher = _cipher;
|
|
1000
|
+
info->certs = _certs;
|
|
1001
|
+
info->verified = _verified;
|
|
967
1002
|
return info;
|
|
968
1003
|
}
|
|
969
1004
|
|
|
970
1005
|
void
|
|
971
|
-
|
|
1006
|
+
SChannel::TransceiverI::checkSendSize(const IceInternal::Buffer&)
|
|
972
1007
|
{
|
|
973
1008
|
}
|
|
974
1009
|
|
|
975
1010
|
void
|
|
976
|
-
|
|
1011
|
+
SChannel::TransceiverI::setBufferSize(int rcvSize, int sndSize)
|
|
977
1012
|
{
|
|
978
|
-
|
|
1013
|
+
_delegate->setBufferSize(rcvSize, sndSize);
|
|
979
1014
|
}
|
|
980
1015
|
|
|
981
|
-
|
|
982
|
-
const IceInternal::
|
|
1016
|
+
SChannel::TransceiverI::TransceiverI(const InstancePtr& instance,
|
|
1017
|
+
const IceInternal::TransceiverPtr& delegate,
|
|
983
1018
|
const string& hostOrAdapterName,
|
|
984
1019
|
bool incoming) :
|
|
985
1020
|
_instance(instance),
|
|
986
|
-
_engine(
|
|
1021
|
+
_engine(SChannel::SSLEnginePtr::dynamicCast(instance->engine())),
|
|
987
1022
|
_host(incoming ? "" : hostOrAdapterName),
|
|
988
1023
|
_adapterName(incoming ? hostOrAdapterName : ""),
|
|
989
1024
|
_incoming(incoming),
|
|
990
|
-
|
|
991
|
-
_state(
|
|
1025
|
+
_delegate(delegate),
|
|
1026
|
+
_state(StateNotInitialized),
|
|
992
1027
|
_bufferedW(0),
|
|
993
1028
|
_sslInitialized(false),
|
|
994
1029
|
_credentialsInitialized(false),
|
|
@@ -996,99 +1031,21 @@ IceSSL::TransceiverI::TransceiverI(const InstancePtr& instance,
|
|
|
996
1031
|
{
|
|
997
1032
|
}
|
|
998
1033
|
|
|
999
|
-
|
|
1034
|
+
SChannel::TransceiverI::~TransceiverI()
|
|
1000
1035
|
{
|
|
1001
1036
|
}
|
|
1002
1037
|
|
|
1003
|
-
void
|
|
1004
|
-
IceSSL::TransceiverI::fillConnectionInfo(const ConnectionInfoPtr& info, vector<CertificatePtr>& nativeCerts) const
|
|
1005
|
-
{
|
|
1006
|
-
IceInternal::fdToAddressAndPort(_stream->fd(), info->localAddress, info->localPort, info->remoteAddress,
|
|
1007
|
-
info->remotePort);
|
|
1008
|
-
if(_stream->fd() != INVALID_SOCKET)
|
|
1009
|
-
{
|
|
1010
|
-
info->rcvSize = IceInternal::getRecvBufferSize(_stream->fd());
|
|
1011
|
-
info->sndSize = IceInternal::getSendBufferSize(_stream->fd());
|
|
1012
|
-
}
|
|
1013
|
-
|
|
1014
|
-
info->verified = _verified;
|
|
1015
|
-
|
|
1016
|
-
if(_sslInitialized)
|
|
1017
|
-
{
|
|
1018
|
-
CtxtHandle* ssl = const_cast<CtxtHandle*>(&_ssl);
|
|
1019
|
-
PCCERT_CONTEXT cert = 0;
|
|
1020
|
-
PCCERT_CHAIN_CONTEXT certChain = 0;
|
|
1021
|
-
SECURITY_STATUS err = QueryContextAttributes(ssl, SECPKG_ATTR_REMOTE_CERT_CONTEXT, &cert);
|
|
1022
|
-
if(err == SEC_E_OK)
|
|
1023
|
-
{
|
|
1024
|
-
assert(cert);
|
|
1025
|
-
CERT_CHAIN_PARA chainP;
|
|
1026
|
-
memset(&chainP, 0, sizeof(chainP));
|
|
1027
|
-
chainP.cbSize = sizeof(chainP);
|
|
1028
|
-
|
|
1029
|
-
if(CertGetCertificateChain(_engine->chainEngine(), cert, 0, 0, &chainP,
|
|
1030
|
-
CERT_CHAIN_REVOCATION_CHECK_CACHE_ONLY, 0, &certChain))
|
|
1031
|
-
{
|
|
1032
|
-
CERT_SIMPLE_CHAIN* simpleChain = certChain->rgpChain[0];
|
|
1033
|
-
for(DWORD i = 0; i < simpleChain->cElement; ++i)
|
|
1034
|
-
{
|
|
1035
|
-
PCCERT_CONTEXT c = simpleChain->rgpElement[i]->pCertContext;
|
|
1036
|
-
PCERT_SIGNED_CONTENT_INFO cc;
|
|
1037
|
-
|
|
1038
|
-
DWORD length = 0;
|
|
1039
|
-
if(!CryptDecodeObjectEx(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, X509_CERT, c->pbCertEncoded,
|
|
1040
|
-
c->cbCertEncoded, CRYPT_DECODE_ALLOC_FLAG, 0, &cc, &length))
|
|
1041
|
-
{
|
|
1042
|
-
CertFreeCertificateChain(certChain);
|
|
1043
|
-
CertFreeCertificateContext(cert);
|
|
1044
|
-
throw SecurityException(__FILE__, __LINE__,
|
|
1045
|
-
"IceSSL: error decoding peer certificate chain:\n" +
|
|
1046
|
-
IceUtilInternal::lastErrorToString());
|
|
1047
|
-
}
|
|
1048
|
-
|
|
1049
|
-
CertificatePtr certificate = new Certificate(cc);
|
|
1050
|
-
nativeCerts.push_back(certificate);
|
|
1051
|
-
info->certs.push_back(certificate->encode());
|
|
1052
|
-
}
|
|
1053
|
-
CertFreeCertificateChain(certChain);
|
|
1054
|
-
}
|
|
1055
|
-
CertFreeCertificateContext(cert);
|
|
1056
|
-
}
|
|
1057
|
-
else if(err != SEC_E_NO_CREDENTIALS)
|
|
1058
|
-
{
|
|
1059
|
-
throw SecurityException(__FILE__, __LINE__, "IceSSL: error reading peer certificate:" +
|
|
1060
|
-
IceUtilInternal::lastErrorToString());
|
|
1061
|
-
}
|
|
1062
|
-
|
|
1063
|
-
SecPkgContext_ConnectionInfo connInfo;
|
|
1064
|
-
if(QueryContextAttributes(ssl, SECPKG_ATTR_CONNECTION_INFO, &connInfo) == SEC_E_OK)
|
|
1065
|
-
{
|
|
1066
|
-
info->cipher = _engine->getCipherName(connInfo.aiCipher);
|
|
1067
|
-
}
|
|
1068
|
-
else
|
|
1069
|
-
{
|
|
1070
|
-
throw SecurityException(__FILE__, __LINE__, "IceSSL: error reading cipher info:" +
|
|
1071
|
-
IceUtilInternal::lastErrorToString());
|
|
1072
|
-
}
|
|
1073
|
-
}
|
|
1074
|
-
|
|
1075
|
-
info->adapterName = _adapterName;
|
|
1076
|
-
info->incoming = _incoming;
|
|
1077
|
-
}
|
|
1078
|
-
|
|
1079
1038
|
bool
|
|
1080
|
-
|
|
1039
|
+
SChannel::TransceiverI::writeRaw(IceInternal::Buffer& buf)
|
|
1081
1040
|
{
|
|
1082
|
-
|
|
1083
|
-
buf.i += ret;
|
|
1041
|
+
_delegate->write(buf);
|
|
1084
1042
|
return buf.i == buf.b.end();
|
|
1085
1043
|
}
|
|
1086
1044
|
|
|
1087
1045
|
bool
|
|
1088
|
-
|
|
1046
|
+
SChannel::TransceiverI::readRaw(IceInternal::Buffer& buf)
|
|
1089
1047
|
{
|
|
1090
|
-
|
|
1091
|
-
buf
|
|
1092
|
-
return
|
|
1048
|
+
IceInternal::Buffer::Container::iterator p = buf.i;
|
|
1049
|
+
_delegate->read(buf);
|
|
1050
|
+
return buf.i != p;
|
|
1093
1051
|
}
|
|
1094
|
-
#endif
|