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
|
@@ -1,93 +1,101 @@
|
|
|
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.
|
|
7
7
|
//
|
|
8
8
|
// **********************************************************************
|
|
9
9
|
|
|
10
|
-
#ifndef
|
|
11
|
-
#define
|
|
10
|
+
#ifndef ICESSL_ENDPOINT_I_H
|
|
11
|
+
#define ICESSL_ENDPOINT_I_H
|
|
12
12
|
|
|
13
|
+
#include <Ice/EndpointI.h>
|
|
13
14
|
#include <Ice/IPEndpointI.h>
|
|
14
15
|
#include <Ice/EndpointFactory.h>
|
|
15
|
-
#include <Ice/WSEndpoint.h>
|
|
16
16
|
#include <IceSSL/InstanceF.h>
|
|
17
17
|
#include <IceSSL/EndpointInfo.h>
|
|
18
|
+
#include <IceSSL/SSLEngineF.h>
|
|
18
19
|
#include <Ice/Network.h>
|
|
19
20
|
|
|
20
21
|
namespace IceSSL
|
|
21
22
|
{
|
|
22
23
|
|
|
23
|
-
class EndpointI : public IceInternal::
|
|
24
|
+
class EndpointI : public IceInternal::EndpointI
|
|
25
|
+
#ifdef ICE_CPP11_MAPPING
|
|
26
|
+
, public std::enable_shared_from_this<EndpointI>
|
|
27
|
+
#endif
|
|
24
28
|
{
|
|
25
29
|
public:
|
|
26
30
|
|
|
27
|
-
EndpointI(const InstancePtr&, const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
EndpointI(const InstancePtr&, IceInternal::BasicStream*);
|
|
31
|
+
EndpointI(const InstancePtr&, const IceInternal::EndpointIPtr&);
|
|
32
|
+
|
|
33
|
+
virtual void streamWriteImpl(Ice::OutputStream*) const;
|
|
31
34
|
|
|
32
35
|
virtual Ice::EndpointInfoPtr getInfo() const;
|
|
33
|
-
virtual Ice::
|
|
36
|
+
virtual Ice::Short type() const;
|
|
37
|
+
virtual const std::string& protocol() const;
|
|
34
38
|
|
|
35
39
|
virtual Ice::Int timeout() const;
|
|
36
40
|
virtual IceInternal::EndpointIPtr timeout(Ice::Int) const;
|
|
41
|
+
virtual const std::string& connectionId() const;
|
|
42
|
+
virtual IceInternal::EndpointIPtr connectionId(const ::std::string&) const;
|
|
37
43
|
virtual bool compress() const;
|
|
38
44
|
virtual IceInternal::EndpointIPtr compress(bool) const;
|
|
39
45
|
virtual bool datagram() const;
|
|
46
|
+
virtual bool secure() const;
|
|
40
47
|
|
|
41
48
|
virtual IceInternal::TransceiverPtr transceiver() const;
|
|
49
|
+
virtual void connectors_async(Ice::EndpointSelectionType, const IceInternal::EndpointI_connectorsPtr&) const;
|
|
42
50
|
virtual IceInternal::AcceptorPtr acceptor(const std::string&) const;
|
|
51
|
+
virtual std::vector<IceInternal::EndpointIPtr> expandIfWildcard() const;
|
|
52
|
+
virtual std::vector<IceInternal::EndpointIPtr> expandHost(IceInternal::EndpointIPtr&) const;
|
|
53
|
+
virtual bool equivalent(const IceInternal::EndpointIPtr&) const;
|
|
54
|
+
virtual ::Ice::Int hash() const;
|
|
43
55
|
virtual std::string options() const;
|
|
44
56
|
|
|
57
|
+
EndpointIPtr endpoint(const IceInternal::EndpointIPtr&) const;
|
|
58
|
+
|
|
59
|
+
#ifdef ICE_CPP11_MAPPING
|
|
60
|
+
virtual bool operator==(const Ice::Endpoint&) const;
|
|
61
|
+
virtual bool operator<(const Ice::Endpoint&) const;
|
|
62
|
+
#else
|
|
45
63
|
virtual bool operator==(const Ice::LocalObject&) const;
|
|
46
64
|
virtual bool operator<(const Ice::LocalObject&) const;
|
|
47
|
-
|
|
48
|
-
virtual EndpointIPtr endpoint(const AcceptorIPtr&) const;
|
|
49
|
-
|
|
50
|
-
using IceInternal::IPEndpointI::connectionId;
|
|
65
|
+
#endif
|
|
51
66
|
|
|
52
67
|
protected:
|
|
53
68
|
|
|
54
|
-
virtual void streamWriteImpl(IceInternal::BasicStream*) const;
|
|
55
|
-
virtual void hashInit(Ice::Int&) const;
|
|
56
|
-
virtual void fillEndpointInfo(Ice::IPEndpointInfo*) const;
|
|
57
69
|
virtual bool checkOption(const std::string&, const std::string&, const std::string&);
|
|
58
70
|
|
|
59
|
-
virtual IceInternal::ConnectorPtr createConnector(const IceInternal::Address&,
|
|
60
|
-
const IceInternal::NetworkProxyPtr&) const;
|
|
61
|
-
virtual IceInternal::IPEndpointIPtr createEndpoint(const std::string&, int, const std::string&) const;
|
|
62
|
-
|
|
63
71
|
private:
|
|
64
72
|
|
|
65
73
|
//
|
|
66
74
|
// All members are const, because endpoints are immutable.
|
|
67
75
|
//
|
|
68
76
|
const InstancePtr _instance;
|
|
69
|
-
const
|
|
70
|
-
const bool _compress;
|
|
77
|
+
const IceInternal::EndpointIPtr _delegate;
|
|
71
78
|
};
|
|
72
79
|
|
|
73
|
-
class EndpointFactoryI : public IceInternal::
|
|
80
|
+
class EndpointFactoryI : public IceInternal::EndpointFactoryWithUnderlying
|
|
74
81
|
{
|
|
75
82
|
public:
|
|
76
83
|
|
|
77
|
-
|
|
84
|
+
EndpointFactoryI(const InstancePtr&, Ice::Short);
|
|
78
85
|
|
|
79
|
-
virtual Ice::Short type() const;
|
|
80
|
-
virtual std::string protocol() const;
|
|
81
|
-
virtual IceInternal::EndpointIPtr create(std::vector<std::string>&, bool) const;
|
|
82
|
-
virtual IceInternal::EndpointIPtr read(IceInternal::BasicStream*) const;
|
|
83
86
|
virtual void destroy();
|
|
84
87
|
|
|
85
|
-
virtual IceInternal::EndpointFactoryPtr
|
|
88
|
+
virtual IceInternal::EndpointFactoryPtr
|
|
89
|
+
cloneWithUnderlying(const IceInternal::ProtocolInstancePtr&, Ice::Short) const;
|
|
86
90
|
|
|
87
|
-
|
|
91
|
+
protected:
|
|
92
|
+
|
|
93
|
+
virtual IceInternal::EndpointIPtr
|
|
94
|
+
createWithUnderlying(const IceInternal::EndpointIPtr&, std::vector<std::string>&, bool) const;
|
|
95
|
+
virtual IceInternal::EndpointIPtr
|
|
96
|
+
readWithUnderlying(const IceInternal::EndpointIPtr&, Ice::InputStream*) const;
|
|
88
97
|
|
|
89
|
-
|
|
90
|
-
friend class PluginI;
|
|
98
|
+
private:
|
|
91
99
|
|
|
92
100
|
InstancePtr _instance;
|
|
93
101
|
};
|
|
@@ -1,13 +1,13 @@
|
|
|
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.
|
|
7
7
|
//
|
|
8
8
|
// **********************************************************************
|
|
9
9
|
//
|
|
10
|
-
// Ice version 3.
|
|
10
|
+
// Ice version 3.7.0
|
|
11
11
|
//
|
|
12
12
|
// <auto-generated>
|
|
13
13
|
//
|
|
@@ -18,32 +18,61 @@
|
|
|
18
18
|
// </auto-generated>
|
|
19
19
|
//
|
|
20
20
|
|
|
21
|
-
#ifndef
|
|
22
|
-
# define
|
|
21
|
+
#ifndef ICESSL_API_EXPORTS
|
|
22
|
+
# define ICESSL_API_EXPORTS
|
|
23
23
|
#endif
|
|
24
24
|
#include <IceSSL/EndpointInfo.h>
|
|
25
25
|
#include <IceUtil/PushDisableWarnings.h>
|
|
26
|
-
#include <Ice/
|
|
27
|
-
#include <
|
|
26
|
+
#include <Ice/InputStream.h>
|
|
27
|
+
#include <Ice/OutputStream.h>
|
|
28
28
|
#include <IceUtil/PopDisableWarnings.h>
|
|
29
29
|
|
|
30
|
+
#if defined(_MSC_VER)
|
|
31
|
+
# pragma warning(disable:4458) // declaration of ... hides class member
|
|
32
|
+
#elif defined(__clang__)
|
|
33
|
+
# pragma clang diagnostic ignored "-Wshadow"
|
|
34
|
+
#elif defined(__GNUC__)
|
|
35
|
+
# pragma GCC diagnostic ignored "-Wshadow"
|
|
36
|
+
#endif
|
|
37
|
+
|
|
30
38
|
#ifndef ICE_IGNORE_VERSION
|
|
31
|
-
# if ICE_INT_VERSION / 100 !=
|
|
39
|
+
# if ICE_INT_VERSION / 100 != 307
|
|
32
40
|
# error Ice version mismatch!
|
|
33
41
|
# endif
|
|
34
42
|
# if ICE_INT_VERSION % 100 > 50
|
|
35
43
|
# error Beta header file detected
|
|
36
44
|
# endif
|
|
37
|
-
# if ICE_INT_VERSION % 100 <
|
|
45
|
+
# if ICE_INT_VERSION % 100 < 0
|
|
38
46
|
# error Ice patch level mismatch!
|
|
39
47
|
# endif
|
|
40
48
|
#endif
|
|
41
49
|
|
|
50
|
+
#ifdef ICE_CPP11_MAPPING // C++11 mapping
|
|
51
|
+
|
|
42
52
|
namespace
|
|
43
53
|
{
|
|
44
54
|
|
|
45
55
|
}
|
|
46
56
|
|
|
47
|
-
|
|
57
|
+
IceSSL::EndpointInfo::~EndpointInfo()
|
|
58
|
+
{
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
#else // C++98 mapping
|
|
48
62
|
|
|
49
|
-
|
|
63
|
+
namespace
|
|
64
|
+
{
|
|
65
|
+
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
IceSSL::EndpointInfo::~EndpointInfo()
|
|
69
|
+
{
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
ICESSL_API ::Ice::LocalObject* IceSSL::upCast(::IceSSL::EndpointInfo* p) { return p; }
|
|
73
|
+
|
|
74
|
+
namespace Ice
|
|
75
|
+
{
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
#endif
|
|
@@ -1,19 +1,14 @@
|
|
|
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.
|
|
7
7
|
//
|
|
8
8
|
// **********************************************************************
|
|
9
9
|
|
|
10
|
-
#include <IceUtil/Config.h>
|
|
11
|
-
#ifdef _WIN32
|
|
12
|
-
# include <winsock2.h>
|
|
13
|
-
#endif
|
|
14
10
|
#include <IceSSL/Instance.h>
|
|
15
11
|
#include <IceSSL/SSLEngine.h>
|
|
16
|
-
#include <Ice/Properties.h>
|
|
17
12
|
|
|
18
13
|
using namespace std;
|
|
19
14
|
using namespace Ice;
|
|
@@ -1,35 +1,35 @@
|
|
|
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.
|
|
7
7
|
//
|
|
8
8
|
// **********************************************************************
|
|
9
9
|
|
|
10
|
-
#ifndef
|
|
11
|
-
#define
|
|
10
|
+
#ifndef ICESSL_INSTANCE_H
|
|
11
|
+
#define ICESSL_INSTANCE_H
|
|
12
12
|
|
|
13
|
-
#include <IceSSL/InstanceF.h>
|
|
14
13
|
#include <Ice/ProtocolInstance.h>
|
|
14
|
+
#include <IceSSL/InstanceF.h>
|
|
15
15
|
#include <IceSSL/SSLEngineF.h>
|
|
16
16
|
|
|
17
17
|
namespace IceSSL
|
|
18
18
|
{
|
|
19
19
|
|
|
20
|
-
class Instance : public IceInternal::ProtocolInstance
|
|
20
|
+
class ICESSL_API Instance : public IceInternal::ProtocolInstance
|
|
21
21
|
{
|
|
22
22
|
public:
|
|
23
23
|
|
|
24
24
|
Instance(const SSLEnginePtr&, Ice::Short, const std::string&);
|
|
25
25
|
virtual ~Instance();
|
|
26
26
|
|
|
27
|
-
SSLEnginePtr
|
|
27
|
+
SSLEnginePtr
|
|
28
28
|
engine() const
|
|
29
29
|
{
|
|
30
30
|
return _engine;
|
|
31
31
|
}
|
|
32
|
-
|
|
32
|
+
|
|
33
33
|
bool initialized() const;
|
|
34
34
|
|
|
35
35
|
private:
|
|
@@ -1,32 +1,36 @@
|
|
|
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.
|
|
7
7
|
//
|
|
8
8
|
// **********************************************************************
|
|
9
9
|
|
|
10
|
-
#ifndef
|
|
11
|
-
#define
|
|
10
|
+
#ifndef ICESSL_INSTANCE_F_H
|
|
11
|
+
#define ICESSL_INSTANCE_F_H
|
|
12
12
|
|
|
13
13
|
#include <IceUtil/Shared.h>
|
|
14
|
-
|
|
15
14
|
#include <Ice/Handle.h>
|
|
15
|
+
#include <IceSSL/Plugin.h>
|
|
16
16
|
|
|
17
17
|
namespace IceSSL
|
|
18
18
|
{
|
|
19
19
|
|
|
20
20
|
class Instance;
|
|
21
|
-
IceUtil::Shared* upCast(Instance*);
|
|
21
|
+
ICESSL_API IceUtil::Shared* upCast(Instance*);
|
|
22
22
|
typedef IceInternal::Handle<Instance> InstancePtr;
|
|
23
23
|
|
|
24
24
|
class EndpointI;
|
|
25
|
-
|
|
25
|
+
#ifdef ICE_CPP11_MAPPING
|
|
26
|
+
typedef ::std::shared_ptr<EndpointI> EndpointIPtr;
|
|
27
|
+
#else
|
|
28
|
+
ICESSL_API IceUtil::Shared* upCast(EndpointI*);
|
|
26
29
|
typedef IceInternal::Handle<EndpointI> EndpointIPtr;
|
|
30
|
+
#endif
|
|
27
31
|
|
|
28
32
|
class AcceptorI;
|
|
29
|
-
IceUtil::Shared* upCast(AcceptorI*);
|
|
33
|
+
ICESSL_API IceUtil::Shared* upCast(AcceptorI*);
|
|
30
34
|
typedef IceInternal::Handle<AcceptorI> AcceptorIPtr;
|
|
31
35
|
|
|
32
36
|
}
|
|
@@ -0,0 +1,588 @@
|
|
|
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/Plugin.h>
|
|
11
|
+
#include <IceSSL/OpenSSL.h>
|
|
12
|
+
#include <IceSSL/CertificateI.h>
|
|
13
|
+
#include <IceSSL/OpenSSLUtil.h>
|
|
14
|
+
#include <IceSSL/RFC2253.h>
|
|
15
|
+
|
|
16
|
+
#include <IceUtil/Mutex.h>
|
|
17
|
+
#include <IceUtil/MutexPtrLock.h>
|
|
18
|
+
|
|
19
|
+
#include <openssl/x509v3.h>
|
|
20
|
+
#include <openssl/pem.h>
|
|
21
|
+
|
|
22
|
+
using namespace IceSSL;
|
|
23
|
+
using namespace std;
|
|
24
|
+
|
|
25
|
+
//
|
|
26
|
+
// Avoid old style cast warnings from OpenSSL macros
|
|
27
|
+
//
|
|
28
|
+
#if defined(__GNUC__)
|
|
29
|
+
# pragma GCC diagnostic ignored "-Wold-style-cast"
|
|
30
|
+
#endif
|
|
31
|
+
|
|
32
|
+
#ifdef __SUNPRO_CC
|
|
33
|
+
|
|
34
|
+
//
|
|
35
|
+
// The call to sk_GENERAL_NAME_pop_free fails to compile if we don't
|
|
36
|
+
// remove the extern "C" vs non extern "C" check with the macro below:
|
|
37
|
+
//
|
|
38
|
+
|
|
39
|
+
extern "C" typedef void (*FreeFunc)(void*);
|
|
40
|
+
|
|
41
|
+
#undef CHECKED_SK_FREE_FUNC
|
|
42
|
+
#define CHECKED_SK_FREE_FUNC(type, p) \
|
|
43
|
+
(FreeFunc) (p)
|
|
44
|
+
|
|
45
|
+
#endif
|
|
46
|
+
|
|
47
|
+
namespace
|
|
48
|
+
{
|
|
49
|
+
|
|
50
|
+
static string
|
|
51
|
+
convertX509NameToString(X509_name_st* name)
|
|
52
|
+
{
|
|
53
|
+
BIO* out = BIO_new(BIO_s_mem());
|
|
54
|
+
X509_NAME_print_ex(out, name, 0, XN_FLAG_RFC2253);
|
|
55
|
+
BUF_MEM* p;
|
|
56
|
+
BIO_get_mem_ptr(out, &p);
|
|
57
|
+
string result = string(p->data, p->length);
|
|
58
|
+
BIO_free(out);
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
static vector<pair<int, string> >
|
|
63
|
+
convertGeneralNames(GENERAL_NAMES* gens)
|
|
64
|
+
{
|
|
65
|
+
vector<pair<int, string> > alt;
|
|
66
|
+
if (gens == 0)
|
|
67
|
+
{
|
|
68
|
+
return alt;
|
|
69
|
+
}
|
|
70
|
+
for (int i = 0; i < sk_GENERAL_NAME_num(gens); ++i)
|
|
71
|
+
{
|
|
72
|
+
GENERAL_NAME* gen = sk_GENERAL_NAME_value(gens, i);
|
|
73
|
+
pair<int, string> p;
|
|
74
|
+
p.first = gen->type;
|
|
75
|
+
switch (gen->type)
|
|
76
|
+
{
|
|
77
|
+
case GEN_EMAIL:
|
|
78
|
+
{
|
|
79
|
+
ASN1_IA5STRING* str = gen->d.rfc822Name;
|
|
80
|
+
if (str && str->type == V_ASN1_IA5STRING && str->data && str->length > 0)
|
|
81
|
+
{
|
|
82
|
+
p.second = string(reinterpret_cast<const char*>(str->data), str->length);
|
|
83
|
+
}
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
case GEN_DNS:
|
|
87
|
+
{
|
|
88
|
+
ASN1_IA5STRING* str = gen->d.dNSName;
|
|
89
|
+
if (str && str->type == V_ASN1_IA5STRING && str->data && str->length > 0)
|
|
90
|
+
{
|
|
91
|
+
p.second = string(reinterpret_cast<const char*>(str->data), str->length);
|
|
92
|
+
}
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
case GEN_DIRNAME:
|
|
96
|
+
{
|
|
97
|
+
p.second = convertX509NameToString(gen->d.directoryName);
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
case GEN_URI:
|
|
101
|
+
{
|
|
102
|
+
ASN1_IA5STRING* str = gen->d.uniformResourceIdentifier;
|
|
103
|
+
if (str && str->type == V_ASN1_IA5STRING && str->data && str->length > 0)
|
|
104
|
+
{
|
|
105
|
+
p.second = string(reinterpret_cast<const char*>(str->data), str->length);
|
|
106
|
+
}
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
case GEN_IPADD:
|
|
110
|
+
{
|
|
111
|
+
ASN1_OCTET_STRING* addr = gen->d.iPAddress;
|
|
112
|
+
// TODO: Support IPv6 someday.
|
|
113
|
+
if (addr && addr->type == V_ASN1_OCTET_STRING && addr->data && addr->length == 4)
|
|
114
|
+
{
|
|
115
|
+
ostringstream ostr;
|
|
116
|
+
for (int j = 0; j < 4; ++j)
|
|
117
|
+
{
|
|
118
|
+
if (j > 0)
|
|
119
|
+
{
|
|
120
|
+
ostr << '.';
|
|
121
|
+
}
|
|
122
|
+
ostr << static_cast<int>(addr->data[j]);
|
|
123
|
+
}
|
|
124
|
+
p.second = ostr.str();
|
|
125
|
+
}
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
128
|
+
case GEN_OTHERNAME:
|
|
129
|
+
case GEN_EDIPARTY:
|
|
130
|
+
case GEN_X400:
|
|
131
|
+
case GEN_RID:
|
|
132
|
+
{
|
|
133
|
+
//
|
|
134
|
+
// TODO: These types are not supported. If the user wants
|
|
135
|
+
// them, they have to get at the certificate data. Another
|
|
136
|
+
// alternative is to DER encode the data (as the Java
|
|
137
|
+
// certificate does).
|
|
138
|
+
//
|
|
139
|
+
break;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
alt.push_back(p);
|
|
143
|
+
}
|
|
144
|
+
sk_GENERAL_NAME_pop_free(gens, GENERAL_NAME_free);
|
|
145
|
+
return alt;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
class DistinguishedNameI : public IceSSL::DistinguishedName
|
|
149
|
+
{
|
|
150
|
+
public:
|
|
151
|
+
|
|
152
|
+
DistinguishedNameI(X509_name_st* name) :
|
|
153
|
+
IceSSL::DistinguishedName(IceSSL::RFC2253::parseStrict(convertX509NameToString(name)))
|
|
154
|
+
{
|
|
155
|
+
unescape();
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
IceUtil::Mutex* mut = 0;
|
|
161
|
+
|
|
162
|
+
class Init
|
|
163
|
+
{
|
|
164
|
+
public:
|
|
165
|
+
|
|
166
|
+
Init()
|
|
167
|
+
{
|
|
168
|
+
mut = new IceUtil::Mutex;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
~Init()
|
|
172
|
+
{
|
|
173
|
+
delete mut;
|
|
174
|
+
mut = 0;
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
Init init;
|
|
179
|
+
|
|
180
|
+
#ifdef ICE_CPP11_MAPPING
|
|
181
|
+
chrono::system_clock::time_point
|
|
182
|
+
#else
|
|
183
|
+
static IceUtil::Time
|
|
184
|
+
#endif
|
|
185
|
+
ASMUtcTimeToTime(const ASN1_UTCTIME* s)
|
|
186
|
+
{
|
|
187
|
+
struct tm tm;
|
|
188
|
+
int offset;
|
|
189
|
+
|
|
190
|
+
memset(&tm, '\0', sizeof tm);
|
|
191
|
+
|
|
192
|
+
# define g2(p) (((p)[0]-'0')*10+(p)[1]-'0')
|
|
193
|
+
tm.tm_year = g2(s->data);
|
|
194
|
+
if(tm.tm_year < 50)
|
|
195
|
+
{
|
|
196
|
+
tm.tm_year += 100;
|
|
197
|
+
}
|
|
198
|
+
tm.tm_mon = g2(s->data + 2) - 1;
|
|
199
|
+
tm.tm_mday = g2(s->data + 4);
|
|
200
|
+
tm.tm_hour = g2(s->data + 6);
|
|
201
|
+
tm.tm_min = g2(s->data + 8);
|
|
202
|
+
tm.tm_sec = g2(s->data + 10);
|
|
203
|
+
if(s->data[12] == 'Z')
|
|
204
|
+
{
|
|
205
|
+
offset = 0;
|
|
206
|
+
}
|
|
207
|
+
else
|
|
208
|
+
{
|
|
209
|
+
offset = g2(s->data + 13) * 60 + g2(s->data + 15);
|
|
210
|
+
if(s->data[12] == '-')
|
|
211
|
+
{
|
|
212
|
+
offset = -offset;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
# undef g2
|
|
216
|
+
|
|
217
|
+
//
|
|
218
|
+
// If timegm was on all systems this code could be
|
|
219
|
+
// return IceUtil::Time::seconds(timegm(&tm) - offset*60);
|
|
220
|
+
//
|
|
221
|
+
// Windows doesn't support the re-entrant _r versions.
|
|
222
|
+
//
|
|
223
|
+
#if defined(_MSC_VER)
|
|
224
|
+
# pragma warning(disable:4996) // localtime is depercated
|
|
225
|
+
#endif
|
|
226
|
+
time_t tzone;
|
|
227
|
+
{
|
|
228
|
+
IceUtilInternal::MutexPtrLock<IceUtil::Mutex> sync(mut);
|
|
229
|
+
time_t now = time(0);
|
|
230
|
+
tzone = mktime(localtime(&now)) - mktime(gmtime(&now));
|
|
231
|
+
}
|
|
232
|
+
#if defined(_MSC_VER)
|
|
233
|
+
# pragma warning(default:4996) // localtime is depercated
|
|
234
|
+
#endif
|
|
235
|
+
|
|
236
|
+
IceUtil::Time time = IceUtil::Time::seconds(mktime(&tm) - offset * 60 + tzone);
|
|
237
|
+
|
|
238
|
+
#ifdef ICE_CPP11_MAPPING
|
|
239
|
+
return chrono::system_clock::time_point(chrono::microseconds(time.toMicroSeconds()));
|
|
240
|
+
#else
|
|
241
|
+
return time;
|
|
242
|
+
#endif
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
class OpenSSLX509ExtensionI : public IceSSL::X509Extension
|
|
246
|
+
{
|
|
247
|
+
|
|
248
|
+
public:
|
|
249
|
+
|
|
250
|
+
OpenSSLX509ExtensionI(struct X509_extension_st*, const string&, x509_st*);
|
|
251
|
+
~OpenSSLX509ExtensionI();
|
|
252
|
+
virtual bool isCritical() const;
|
|
253
|
+
virtual string getOID() const;
|
|
254
|
+
virtual vector<Ice::Byte> getData() const;
|
|
255
|
+
|
|
256
|
+
private:
|
|
257
|
+
|
|
258
|
+
struct X509_extension_st* _extension;
|
|
259
|
+
string _oid;
|
|
260
|
+
x509_st* _cert;
|
|
261
|
+
};
|
|
262
|
+
|
|
263
|
+
class OpenSSLCertificateI : public IceSSL::OpenSSL::Certificate,
|
|
264
|
+
public CertificateI,
|
|
265
|
+
public IceUtil::Mutex
|
|
266
|
+
{
|
|
267
|
+
public:
|
|
268
|
+
|
|
269
|
+
OpenSSLCertificateI(x509_st*);
|
|
270
|
+
~OpenSSLCertificateI();
|
|
271
|
+
|
|
272
|
+
virtual bool operator==(const IceSSL::Certificate&) const;
|
|
273
|
+
|
|
274
|
+
virtual vector<Ice::Byte> getAuthorityKeyIdentifier() const;
|
|
275
|
+
virtual vector<Ice::Byte> getSubjectKeyIdentifier() const;
|
|
276
|
+
virtual bool verify(const IceSSL::CertificatePtr&) const;
|
|
277
|
+
virtual string encode() const;
|
|
278
|
+
|
|
279
|
+
# ifdef ICE_CPP11_MAPPING
|
|
280
|
+
virtual chrono::system_clock::time_point getNotAfter() const;
|
|
281
|
+
virtual chrono::system_clock::time_point getNotBefore() const;
|
|
282
|
+
# else
|
|
283
|
+
virtual IceUtil::Time getNotAfter() const;
|
|
284
|
+
virtual IceUtil::Time getNotBefore() const;
|
|
285
|
+
# endif
|
|
286
|
+
virtual string getSerialNumber() const;
|
|
287
|
+
virtual IceSSL::DistinguishedName getIssuerDN() const;
|
|
288
|
+
virtual vector<pair<int, string> > getIssuerAlternativeNames() const;
|
|
289
|
+
virtual IceSSL::DistinguishedName getSubjectDN() const;
|
|
290
|
+
virtual vector<pair<int, string> > getSubjectAlternativeNames() const;
|
|
291
|
+
virtual int getVersion() const;
|
|
292
|
+
virtual x509_st* getCert() const;
|
|
293
|
+
|
|
294
|
+
protected:
|
|
295
|
+
|
|
296
|
+
virtual void loadX509Extensions() const;
|
|
297
|
+
|
|
298
|
+
private:
|
|
299
|
+
|
|
300
|
+
x509_st* _cert;
|
|
301
|
+
};
|
|
302
|
+
|
|
303
|
+
} // end anonymous namespace
|
|
304
|
+
|
|
305
|
+
OpenSSLX509ExtensionI::OpenSSLX509ExtensionI(struct X509_extension_st* extension, const string& oid, x509_st* cert):
|
|
306
|
+
_extension(extension),
|
|
307
|
+
_oid(oid),
|
|
308
|
+
_cert(cert)
|
|
309
|
+
{
|
|
310
|
+
#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
|
|
311
|
+
CRYPTO_add(&_cert->references, 1, CRYPTO_LOCK_X509);
|
|
312
|
+
#else
|
|
313
|
+
X509_up_ref(_cert);
|
|
314
|
+
#endif
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
OpenSSLX509ExtensionI::~OpenSSLX509ExtensionI()
|
|
318
|
+
{
|
|
319
|
+
X509_free(_cert);
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
bool
|
|
323
|
+
OpenSSLX509ExtensionI::isCritical() const
|
|
324
|
+
{
|
|
325
|
+
return X509_EXTENSION_get_critical(_extension) == 1;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
string
|
|
329
|
+
OpenSSLX509ExtensionI::getOID() const
|
|
330
|
+
{
|
|
331
|
+
return _oid;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
vector<Ice::Byte>
|
|
335
|
+
OpenSSLX509ExtensionI::getData() const
|
|
336
|
+
{
|
|
337
|
+
vector<Ice::Byte> data;
|
|
338
|
+
ASN1_OCTET_STRING* buffer = X509_EXTENSION_get_data(_extension);
|
|
339
|
+
assert(buffer);
|
|
340
|
+
data.resize(buffer->length);
|
|
341
|
+
memcpy(&data[0], buffer->data, buffer->length);
|
|
342
|
+
return data;
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
//
|
|
346
|
+
// The caller is responsible for incrementing the reference count.
|
|
347
|
+
//
|
|
348
|
+
OpenSSLCertificateI::OpenSSLCertificateI(x509_st* cert) : _cert(cert)
|
|
349
|
+
{
|
|
350
|
+
if(!_cert)
|
|
351
|
+
{
|
|
352
|
+
#ifdef ICE_CPP11_MAPPING
|
|
353
|
+
throw invalid_argument("Invalid certificate reference");
|
|
354
|
+
#else
|
|
355
|
+
throw IceUtil::IllegalArgumentException(__FILE__, __LINE__, "Invalid certificate reference");
|
|
356
|
+
#endif
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
OpenSSLCertificateI::~OpenSSLCertificateI()
|
|
361
|
+
{
|
|
362
|
+
if(_cert)
|
|
363
|
+
{
|
|
364
|
+
X509_free(_cert);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
bool
|
|
369
|
+
OpenSSLCertificateI::operator==(const IceSSL::Certificate& r) const
|
|
370
|
+
{
|
|
371
|
+
const OpenSSLCertificateI* p = dynamic_cast<const OpenSSLCertificateI*>(&r);
|
|
372
|
+
if(!p)
|
|
373
|
+
{
|
|
374
|
+
return false;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
return X509_cmp(_cert, p->_cert) == 0;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
vector<Ice::Byte>
|
|
381
|
+
OpenSSLCertificateI::getAuthorityKeyIdentifier() const
|
|
382
|
+
{
|
|
383
|
+
vector<Ice::Byte> keyid;
|
|
384
|
+
int index = X509_get_ext_by_NID(_cert, NID_authority_key_identifier, -1);
|
|
385
|
+
if(index >= 0)
|
|
386
|
+
{
|
|
387
|
+
X509_EXTENSION* ext = X509_get_ext(_cert, index);
|
|
388
|
+
if(ext)
|
|
389
|
+
{
|
|
390
|
+
AUTHORITY_KEYID* decoded = (AUTHORITY_KEYID*)X509V3_EXT_d2i(ext);
|
|
391
|
+
if(!decoded)
|
|
392
|
+
{
|
|
393
|
+
throw IceSSL::CertificateEncodingException(__FILE__, __LINE__, "the extension could not be decoded");
|
|
394
|
+
}
|
|
395
|
+
keyid.resize(decoded->keyid->length);
|
|
396
|
+
memcpy(&keyid[0], decoded->keyid->data, decoded->keyid->length);
|
|
397
|
+
AUTHORITY_KEYID_free(decoded);
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
return keyid;
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
vector<Ice::Byte>
|
|
404
|
+
OpenSSLCertificateI::getSubjectKeyIdentifier() const
|
|
405
|
+
{
|
|
406
|
+
vector<Ice::Byte> keyid;
|
|
407
|
+
int index = X509_get_ext_by_NID(_cert, NID_subject_key_identifier, -1);
|
|
408
|
+
if(index >= 0)
|
|
409
|
+
{
|
|
410
|
+
X509_EXTENSION* ext = X509_get_ext(_cert, index);
|
|
411
|
+
if(ext)
|
|
412
|
+
{
|
|
413
|
+
ASN1_OCTET_STRING* decoded = static_cast<ASN1_OCTET_STRING*>(X509V3_EXT_d2i(ext));
|
|
414
|
+
if(!decoded)
|
|
415
|
+
{
|
|
416
|
+
throw IceSSL::CertificateEncodingException(__FILE__, __LINE__, "the extension could not be decoded");
|
|
417
|
+
}
|
|
418
|
+
keyid.resize(decoded->length);
|
|
419
|
+
memcpy(&keyid[0], decoded->data, decoded->length);
|
|
420
|
+
ASN1_OCTET_STRING_free(decoded);
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
return keyid;
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
bool
|
|
427
|
+
OpenSSLCertificateI::verify(const IceSSL::CertificatePtr& cert) const
|
|
428
|
+
{
|
|
429
|
+
OpenSSLCertificateI* c = dynamic_cast<OpenSSLCertificateI*>(cert.get());
|
|
430
|
+
if(c)
|
|
431
|
+
{
|
|
432
|
+
EVP_PKEY* key = X509_get_pubkey(c->_cert);
|
|
433
|
+
bool verified = X509_verify(_cert, key) > 0;
|
|
434
|
+
EVP_PKEY_free(key);
|
|
435
|
+
return verified;
|
|
436
|
+
}
|
|
437
|
+
return false;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
string
|
|
441
|
+
OpenSSLCertificateI::encode() const
|
|
442
|
+
{
|
|
443
|
+
BIO* out = BIO_new(BIO_s_mem());
|
|
444
|
+
int i = PEM_write_bio_X509(out, _cert);
|
|
445
|
+
if(i <= 0)
|
|
446
|
+
{
|
|
447
|
+
BIO_free(out);
|
|
448
|
+
throw IceSSL::CertificateEncodingException(__FILE__, __LINE__, IceSSL::OpenSSL::getSslErrors(false));
|
|
449
|
+
}
|
|
450
|
+
BUF_MEM* p;
|
|
451
|
+
BIO_get_mem_ptr(out, &p);
|
|
452
|
+
string result = string(p->data, p->length);
|
|
453
|
+
BIO_free(out);
|
|
454
|
+
return result;
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
# ifdef ICE_CPP11_MAPPING
|
|
458
|
+
chrono::system_clock::time_point
|
|
459
|
+
# else
|
|
460
|
+
IceUtil::Time
|
|
461
|
+
# endif
|
|
462
|
+
OpenSSLCertificateI::getNotAfter() const
|
|
463
|
+
{
|
|
464
|
+
return ASMUtcTimeToTime(X509_get_notAfter(_cert));
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
# ifdef ICE_CPP11_MAPPING
|
|
468
|
+
chrono::system_clock::time_point
|
|
469
|
+
# else
|
|
470
|
+
IceUtil::Time
|
|
471
|
+
# endif
|
|
472
|
+
OpenSSLCertificateI::getNotBefore() const
|
|
473
|
+
{
|
|
474
|
+
return ASMUtcTimeToTime(X509_get_notBefore(_cert));
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
string
|
|
478
|
+
OpenSSLCertificateI::getSerialNumber() const
|
|
479
|
+
{
|
|
480
|
+
BIGNUM* bn = ASN1_INTEGER_to_BN(X509_get_serialNumber(_cert), 0);
|
|
481
|
+
char* dec = BN_bn2dec(bn);
|
|
482
|
+
string result = dec;
|
|
483
|
+
OPENSSL_free(dec);
|
|
484
|
+
BN_free(bn);
|
|
485
|
+
return result;
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
IceSSL::DistinguishedName
|
|
489
|
+
OpenSSLCertificateI::getIssuerDN() const
|
|
490
|
+
{
|
|
491
|
+
return IceSSL::DistinguishedName(IceSSL::RFC2253::parseStrict(convertX509NameToString(X509_get_issuer_name(_cert))));
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
vector<pair<int, string> >
|
|
495
|
+
OpenSSLCertificateI::getIssuerAlternativeNames() const
|
|
496
|
+
{
|
|
497
|
+
return convertGeneralNames(reinterpret_cast<GENERAL_NAMES*>(X509_get_ext_d2i(_cert, NID_issuer_alt_name, 0, 0)));
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
IceSSL::DistinguishedName
|
|
501
|
+
OpenSSLCertificateI::getSubjectDN() const
|
|
502
|
+
{
|
|
503
|
+
return IceSSL::DistinguishedName(IceSSL::RFC2253::parseStrict(convertX509NameToString(X509_get_subject_name(_cert))));
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
vector<pair<int, string> >
|
|
507
|
+
OpenSSLCertificateI::getSubjectAlternativeNames() const
|
|
508
|
+
{
|
|
509
|
+
return convertGeneralNames(reinterpret_cast<GENERAL_NAMES*>(X509_get_ext_d2i(_cert, NID_subject_alt_name, 0, 0)));
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
int
|
|
513
|
+
OpenSSLCertificateI::getVersion() const
|
|
514
|
+
{
|
|
515
|
+
return static_cast<int>(X509_get_version(_cert));
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
x509_st*
|
|
519
|
+
OpenSSLCertificateI::getCert() const
|
|
520
|
+
{
|
|
521
|
+
return _cert;
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
void
|
|
525
|
+
OpenSSLCertificateI::loadX509Extensions() const
|
|
526
|
+
{
|
|
527
|
+
IceUtil::Mutex::Lock sync(*this);
|
|
528
|
+
if(_extensions.empty())
|
|
529
|
+
{
|
|
530
|
+
int sz = X509_get_ext_count(_cert);
|
|
531
|
+
for(int i = 0; i < sz; i++)
|
|
532
|
+
{
|
|
533
|
+
X509_EXTENSION* ext = X509_get_ext(_cert, i);
|
|
534
|
+
ASN1_OBJECT* obj = X509_EXTENSION_get_object(ext);
|
|
535
|
+
string oid;
|
|
536
|
+
//
|
|
537
|
+
// According to OBJ_obj2txt doc a buffer of length 80 should be more than enough to
|
|
538
|
+
// handle any OID encountered in practice.
|
|
539
|
+
//
|
|
540
|
+
int len = 80;
|
|
541
|
+
oid.resize(len);
|
|
542
|
+
len = OBJ_obj2txt(&oid[0], len, obj, 1);
|
|
543
|
+
oid.resize(len);
|
|
544
|
+
_extensions.push_back(ICE_DYNAMIC_CAST(IceSSL::X509Extension,
|
|
545
|
+
ICE_MAKE_SHARED(OpenSSLX509ExtensionI, ext, oid, _cert)));
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
IceSSL::OpenSSL::CertificatePtr
|
|
551
|
+
IceSSL::OpenSSL::Certificate::create(x509_st* cert)
|
|
552
|
+
{
|
|
553
|
+
return ICE_MAKE_SHARED(OpenSSLCertificateI, cert);
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
IceSSL::OpenSSL::CertificatePtr
|
|
557
|
+
IceSSL::OpenSSL::Certificate::load(const std::string& file)
|
|
558
|
+
{
|
|
559
|
+
BIO* cert = BIO_new(BIO_s_file());
|
|
560
|
+
if(BIO_read_filename(cert, file.c_str()) <= 0)
|
|
561
|
+
{
|
|
562
|
+
BIO_free(cert);
|
|
563
|
+
throw CertificateReadException(__FILE__, __LINE__, "error opening file");
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
x509_st* x = PEM_read_bio_X509(cert, ICE_NULLPTR, ICE_NULLPTR, ICE_NULLPTR);
|
|
567
|
+
if(x == ICE_NULLPTR)
|
|
568
|
+
{
|
|
569
|
+
BIO_free(cert);
|
|
570
|
+
throw CertificateReadException(__FILE__, __LINE__, "error reading file:\n" + getSslErrors(false));
|
|
571
|
+
}
|
|
572
|
+
BIO_free(cert);
|
|
573
|
+
return ICE_MAKE_SHARED(OpenSSLCertificateI, x);
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
IceSSL::OpenSSL::CertificatePtr
|
|
577
|
+
IceSSL::OpenSSL::Certificate::decode(const std::string& encoding)
|
|
578
|
+
{
|
|
579
|
+
BIO *cert = BIO_new_mem_buf(static_cast<void*>(const_cast<char*>(&encoding[0])), static_cast<int>(encoding.size()));
|
|
580
|
+
x509_st* x = PEM_read_bio_X509(cert, ICE_NULLPTR, ICE_NULLPTR, ICE_NULLPTR);
|
|
581
|
+
if(x == ICE_NULLPTR)
|
|
582
|
+
{
|
|
583
|
+
BIO_free(cert);
|
|
584
|
+
throw CertificateEncodingException(__FILE__, __LINE__, getSslErrors(false));
|
|
585
|
+
}
|
|
586
|
+
BIO_free(cert);
|
|
587
|
+
return ICE_MAKE_SHARED(OpenSSLCertificateI, x);
|
|
588
|
+
}
|