zeroc-ice 3.6b1
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 +7 -0
- data/ICE_LICENSE +54 -0
- data/LICENSE +339 -0
- data/bin/slice2rb +17 -0
- data/ext/Communicator.cpp +596 -0
- data/ext/Communicator.h +25 -0
- data/ext/Config.h +111 -0
- data/ext/Connection.cpp +381 -0
- data/ext/Connection.h +26 -0
- data/ext/Endpoint.cpp +311 -0
- data/ext/Endpoint.h +27 -0
- data/ext/ImplicitContext.cpp +152 -0
- data/ext/ImplicitContext.h +25 -0
- data/ext/Init.cpp +52 -0
- data/ext/Logger.cpp +151 -0
- data/ext/Logger.h +28 -0
- data/ext/ObjectFactory.cpp +140 -0
- data/ext/ObjectFactory.h +50 -0
- data/ext/Operation.cpp +676 -0
- data/ext/Operation.h +36 -0
- data/ext/Properties.cpp +369 -0
- data/ext/Properties.h +25 -0
- data/ext/Proxy.cpp +1354 -0
- data/ext/Proxy.h +27 -0
- data/ext/Slice.cpp +223 -0
- data/ext/Slice.h +22 -0
- data/ext/Types.cpp +3160 -0
- data/ext/Types.h +545 -0
- data/ext/Util.cpp +792 -0
- data/ext/Util.h +511 -0
- data/ext/extconf.rb +118 -0
- data/ext/ice/BZIP_LICENSE +42 -0
- data/ext/ice/MCPP_LICENSE +36 -0
- 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/ACMF.h +30 -0
- data/ext/ice/cpp/include/Ice/Application.h +156 -0
- data/ext/ice/cpp/include/Ice/AsyncResult.h +363 -0
- data/ext/ice/cpp/include/Ice/AsyncResultF.h +26 -0
- data/ext/ice/cpp/include/Ice/BasicStream.h +1315 -0
- data/ext/ice/cpp/include/Ice/Buffer.h +159 -0
- data/ext/ice/cpp/include/Ice/BuiltinSequences.h +74 -0
- data/ext/ice/cpp/include/Ice/Communicator.h +194 -0
- data/ext/ice/cpp/include/Ice/CommunicatorAsync.h +115 -0
- data/ext/ice/cpp/include/Ice/CommunicatorF.h +60 -0
- data/ext/ice/cpp/include/Ice/Config.h +97 -0
- data/ext/ice/cpp/include/Ice/Connection.h +495 -0
- data/ext/ice/cpp/include/Ice/ConnectionAsync.h +115 -0
- data/ext/ice/cpp/include/Ice/ConnectionF.h +72 -0
- data/ext/ice/cpp/include/Ice/ConnectionFactoryF.h +30 -0
- data/ext/ice/cpp/include/Ice/ConnectionIF.h +37 -0
- data/ext/ice/cpp/include/Ice/Current.h +94 -0
- data/ext/ice/cpp/include/Ice/DefaultObjectFactory.h +48 -0
- data/ext/ice/cpp/include/Ice/DeprecatedStringConverter.h +62 -0
- data/ext/ice/cpp/include/Ice/DispatchInterceptor.h +33 -0
- data/ext/ice/cpp/include/Ice/Dispatcher.h +51 -0
- data/ext/ice/cpp/include/Ice/DynamicLibrary.h +105 -0
- data/ext/ice/cpp/include/Ice/DynamicLibraryF.h +29 -0
- data/ext/ice/cpp/include/Ice/Endpoint.h +350 -0
- data/ext/ice/cpp/include/Ice/EndpointF.h +97 -0
- data/ext/ice/cpp/include/Ice/EndpointTypes.h +74 -0
- data/ext/ice/cpp/include/Ice/Exception.h +114 -0
- data/ext/ice/cpp/include/Ice/FacetMap.h +56 -0
- data/ext/ice/cpp/include/Ice/FactoryTable.h +69 -0
- data/ext/ice/cpp/include/Ice/FactoryTableInit.h +87 -0
- data/ext/ice/cpp/include/Ice/Format.h +39 -0
- data/ext/ice/cpp/include/Ice/Functional.h +138 -0
- data/ext/ice/cpp/include/Ice/GCObject.h +73 -0
- data/ext/ice/cpp/include/Ice/Handle.h +192 -0
- data/ext/ice/cpp/include/Ice/Ice.h +54 -0
- data/ext/ice/cpp/include/Ice/Identity.h +160 -0
- data/ext/ice/cpp/include/Ice/ImplicitContext.h +96 -0
- data/ext/ice/cpp/include/Ice/ImplicitContextF.h +60 -0
- data/ext/ice/cpp/include/Ice/Incoming.h +131 -0
- data/ext/ice/cpp/include/Ice/IncomingAsync.h +108 -0
- data/ext/ice/cpp/include/Ice/IncomingAsyncF.h +35 -0
- data/ext/ice/cpp/include/Ice/Initialize.h +141 -0
- data/ext/ice/cpp/include/Ice/InstanceF.h +26 -0
- data/ext/ice/cpp/include/Ice/Instrumentation.h +377 -0
- data/ext/ice/cpp/include/Ice/InstrumentationF.h +71 -0
- data/ext/ice/cpp/include/Ice/LocalException.h +1022 -0
- data/ext/ice/cpp/include/Ice/LocalObject.h +36 -0
- data/ext/ice/cpp/include/Ice/LocalObjectF.h +26 -0
- data/ext/ice/cpp/include/Ice/Locator.h +2191 -0
- data/ext/ice/cpp/include/Ice/LocatorF.h +89 -0
- data/ext/ice/cpp/include/Ice/Logger.h +94 -0
- data/ext/ice/cpp/include/Ice/LoggerF.h +60 -0
- data/ext/ice/cpp/include/Ice/LoggerUtil.h +153 -0
- data/ext/ice/cpp/include/Ice/Makefile +26 -0
- data/ext/ice/cpp/include/Ice/Metrics.h +2989 -0
- data/ext/ice/cpp/include/Ice/MetricsAdminI.h +662 -0
- data/ext/ice/cpp/include/Ice/MetricsFunctional.h +144 -0
- data/ext/ice/cpp/include/Ice/MetricsObserverI.h +576 -0
- data/ext/ice/cpp/include/Ice/NativePropertiesAdmin.h +55 -0
- data/ext/ice/cpp/include/Ice/Object.h +165 -0
- data/ext/ice/cpp/include/Ice/ObjectAdapter.h +162 -0
- data/ext/ice/cpp/include/Ice/ObjectAdapterF.h +60 -0
- data/ext/ice/cpp/include/Ice/ObjectAdapterFactoryF.h +26 -0
- data/ext/ice/cpp/include/Ice/ObjectF.h +26 -0
- data/ext/ice/cpp/include/Ice/ObjectFactory.h +86 -0
- data/ext/ice/cpp/include/Ice/ObjectFactoryF.h +60 -0
- data/ext/ice/cpp/include/Ice/ObjectFactoryManagerF.h +26 -0
- data/ext/ice/cpp/include/Ice/ObserverHelper.h +177 -0
- data/ext/ice/cpp/include/Ice/Outgoing.h +197 -0
- data/ext/ice/cpp/include/Ice/OutgoingAsync.h +264 -0
- data/ext/ice/cpp/include/Ice/OutgoingAsyncF.h +38 -0
- data/ext/ice/cpp/include/Ice/Plugin.h +121 -0
- data/ext/ice/cpp/include/Ice/PluginF.h +66 -0
- data/ext/ice/cpp/include/Ice/Process.h +568 -0
- data/ext/ice/cpp/include/Ice/ProcessF.h +77 -0
- data/ext/ice/cpp/include/Ice/Properties.h +130 -0
- data/ext/ice/cpp/include/Ice/PropertiesAdmin.h +824 -0
- data/ext/ice/cpp/include/Ice/PropertiesF.h +83 -0
- data/ext/ice/cpp/include/Ice/Protocol.h +242 -0
- data/ext/ice/cpp/include/Ice/Proxy.h +2448 -0
- data/ext/ice/cpp/include/Ice/ProxyF.h +78 -0
- data/ext/ice/cpp/include/Ice/ProxyFactoryF.h +26 -0
- data/ext/ice/cpp/include/Ice/ProxyHandle.h +330 -0
- data/ext/ice/cpp/include/Ice/ReferenceF.h +34 -0
- data/ext/ice/cpp/include/Ice/RemoteLogger.h +1496 -0
- data/ext/ice/cpp/include/Ice/RequestHandlerF.h +29 -0
- data/ext/ice/cpp/include/Ice/ResponseHandlerF.h +25 -0
- data/ext/ice/cpp/include/Ice/Router.h +1155 -0
- data/ext/ice/cpp/include/Ice/RouterF.h +77 -0
- data/ext/ice/cpp/include/Ice/ServantLocator.h +90 -0
- data/ext/ice/cpp/include/Ice/ServantLocatorF.h +60 -0
- data/ext/ice/cpp/include/Ice/ServantManagerF.h +26 -0
- data/ext/ice/cpp/include/Ice/Service.h +260 -0
- data/ext/ice/cpp/include/Ice/SliceChecksumDict.h +56 -0
- data/ext/ice/cpp/include/Ice/SliceChecksums.h +34 -0
- data/ext/ice/cpp/include/Ice/SlicedData.h +103 -0
- data/ext/ice/cpp/include/Ice/SlicedDataF.h +34 -0
- data/ext/ice/cpp/include/Ice/Stream.h +449 -0
- data/ext/ice/cpp/include/Ice/StreamF.h +30 -0
- data/ext/ice/cpp/include/Ice/StreamHelpers.h +877 -0
- data/ext/ice/cpp/include/Ice/ThreadPoolF.h +28 -0
- data/ext/ice/cpp/include/Ice/UserExceptionFactory.h +56 -0
- data/ext/ice/cpp/include/Ice/Version.h +254 -0
- data/ext/ice/cpp/include/IceSSL/Config.h +23 -0
- data/ext/ice/cpp/include/IceSSL/ConnectionInfo.h +119 -0
- data/ext/ice/cpp/include/IceSSL/EndpointInfo.h +101 -0
- data/ext/ice/cpp/include/IceSSL/IceSSL.h +22 -0
- data/ext/ice/cpp/include/IceSSL/Makefile +26 -0
- data/ext/ice/cpp/include/IceSSL/Plugin.h +558 -0
- data/ext/ice/cpp/include/IceUtil/AbstractMutex.h +119 -0
- data/ext/ice/cpp/include/IceUtil/Cache.h +362 -0
- data/ext/ice/cpp/include/IceUtil/Cond.h +323 -0
- data/ext/ice/cpp/include/IceUtil/Config.h +234 -0
- data/ext/ice/cpp/include/IceUtil/CountDownLatch.h +50 -0
- data/ext/ice/cpp/include/IceUtil/CtrlCHandler.h +70 -0
- data/ext/ice/cpp/include/IceUtil/DisableWarnings.h +45 -0
- data/ext/ice/cpp/include/IceUtil/Exception.h +184 -0
- data/ext/ice/cpp/include/IceUtil/Functional.h +389 -0
- data/ext/ice/cpp/include/IceUtil/Handle.h +266 -0
- data/ext/ice/cpp/include/IceUtil/IceUtil.h +51 -0
- data/ext/ice/cpp/include/IceUtil/IconvStringConverter.h +302 -0
- data/ext/ice/cpp/include/IceUtil/InputUtil.h +47 -0
- data/ext/ice/cpp/include/IceUtil/Iterator.h +36 -0
- data/ext/ice/cpp/include/IceUtil/Lock.h +135 -0
- data/ext/ice/cpp/include/IceUtil/Makefile +26 -0
- data/ext/ice/cpp/include/IceUtil/Monitor.h +249 -0
- data/ext/ice/cpp/include/IceUtil/Mutex.h +357 -0
- data/ext/ice/cpp/include/IceUtil/MutexProtocol.h +28 -0
- data/ext/ice/cpp/include/IceUtil/MutexPtrLock.h +83 -0
- data/ext/ice/cpp/include/IceUtil/MutexPtrTryLock.h +82 -0
- data/ext/ice/cpp/include/IceUtil/Optional.h +322 -0
- data/ext/ice/cpp/include/IceUtil/Options.h +141 -0
- data/ext/ice/cpp/include/IceUtil/OutputUtil.h +362 -0
- data/ext/ice/cpp/include/IceUtil/PopDisableWarnings.h +19 -0
- data/ext/ice/cpp/include/IceUtil/PushDisableWarnings.h +26 -0
- data/ext/ice/cpp/include/IceUtil/Random.h +24 -0
- data/ext/ice/cpp/include/IceUtil/RecMutex.h +113 -0
- data/ext/ice/cpp/include/IceUtil/SHA1.h +65 -0
- data/ext/ice/cpp/include/IceUtil/ScannerConfig.h +44 -0
- data/ext/ice/cpp/include/IceUtil/ScopedArray.h +97 -0
- data/ext/ice/cpp/include/IceUtil/Shared.h +168 -0
- data/ext/ice/cpp/include/IceUtil/StringConverter.h +175 -0
- data/ext/ice/cpp/include/IceUtil/StringUtil.h +91 -0
- data/ext/ice/cpp/include/IceUtil/Thread.h +181 -0
- data/ext/ice/cpp/include/IceUtil/ThreadException.h +108 -0
- data/ext/ice/cpp/include/IceUtil/Time.h +209 -0
- data/ext/ice/cpp/include/IceUtil/Timer.h +143 -0
- data/ext/ice/cpp/include/IceUtil/UUID.h +22 -0
- data/ext/ice/cpp/include/IceUtil/UndefSysMacros.h +42 -0
- data/ext/ice/cpp/include/IceUtil/UniquePtr.h +101 -0
- data/ext/ice/cpp/include/Slice/CPlusPlusUtil.h +64 -0
- data/ext/ice/cpp/include/Slice/Checksum.h +26 -0
- data/ext/ice/cpp/include/Slice/CsUtil.h +92 -0
- data/ext/ice/cpp/include/Slice/DotNetNames.h +34 -0
- data/ext/ice/cpp/include/Slice/FileTracker.h +71 -0
- data/ext/ice/cpp/include/Slice/JavaUtil.h +277 -0
- data/ext/ice/cpp/include/Slice/Makefile +26 -0
- data/ext/ice/cpp/include/Slice/PHPUtil.h +50 -0
- data/ext/ice/cpp/include/Slice/Parser.h +1116 -0
- data/ext/ice/cpp/include/Slice/Preprocessor.h +68 -0
- data/ext/ice/cpp/include/Slice/PythonUtil.h +64 -0
- data/ext/ice/cpp/include/Slice/RubyUtil.h +54 -0
- data/ext/ice/cpp/include/Slice/Util.h +33 -0
- data/ext/ice/cpp/src/Ice/ACM.cpp +343 -0
- data/ext/ice/cpp/src/Ice/ACM.h +117 -0
- data/ext/ice/cpp/src/Ice/Acceptor.cpp +16 -0
- data/ext/ice/cpp/src/Ice/Acceptor.h +41 -0
- data/ext/ice/cpp/src/Ice/AcceptorF.h +30 -0
- data/ext/ice/cpp/src/Ice/Application.cpp +760 -0
- data/ext/ice/cpp/src/Ice/AsyncResult.cpp +599 -0
- data/ext/ice/cpp/src/Ice/Base64.cpp +269 -0
- data/ext/ice/cpp/src/Ice/Base64.h +36 -0
- data/ext/ice/cpp/src/Ice/BasicStream.cpp +3393 -0
- data/ext/ice/cpp/src/Ice/Buffer.cpp +98 -0
- data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +34 -0
- data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +718 -0
- data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.h +106 -0
- data/ext/ice/cpp/src/Ice/Communicator.cpp +45 -0
- data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +38 -0
- data/ext/ice/cpp/src/Ice/CommunicatorI.cpp +386 -0
- data/ext/ice/cpp/src/Ice/CommunicatorI.h +112 -0
- data/ext/ice/cpp/src/Ice/ConnectRequestHandler.cpp +546 -0
- data/ext/ice/cpp/src/Ice/ConnectRequestHandler.h +97 -0
- data/ext/ice/cpp/src/Ice/Connection.cpp +58 -0
- data/ext/ice/cpp/src/Ice/ConnectionF.cpp +38 -0
- data/ext/ice/cpp/src/Ice/ConnectionFactory.cpp +1639 -0
- data/ext/ice/cpp/src/Ice/ConnectionFactory.h +236 -0
- data/ext/ice/cpp/src/Ice/ConnectionI.cpp +3876 -0
- data/ext/ice/cpp/src/Ice/ConnectionI.h +364 -0
- data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.cpp +115 -0
- data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.h +50 -0
- data/ext/ice/cpp/src/Ice/Connector.cpp +16 -0
- data/ext/ice/cpp/src/Ice/Connector.h +36 -0
- data/ext/ice/cpp/src/Ice/ConnectorF.h +26 -0
- data/ext/ice/cpp/src/Ice/Current.cpp +38 -0
- data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +168 -0
- data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.h +57 -0
- data/ext/ice/cpp/src/Ice/DefaultsAndOverridesF.h +26 -0
- data/ext/ice/cpp/src/Ice/DeprecatedStringConverter.cpp +60 -0
- data/ext/ice/cpp/src/Ice/DispatchInterceptor.cpp +49 -0
- data/ext/ice/cpp/src/Ice/DynamicLibrary.cpp +281 -0
- data/ext/ice/cpp/src/Ice/Endpoint.cpp +53 -0
- data/ext/ice/cpp/src/Ice/EndpointF.cpp +38 -0
- data/ext/ice/cpp/src/Ice/EndpointFactory.cpp +25 -0
- data/ext/ice/cpp/src/Ice/EndpointFactory.h +44 -0
- data/ext/ice/cpp/src/Ice/EndpointFactoryF.h +26 -0
- data/ext/ice/cpp/src/Ice/EndpointFactoryManager.cpp +208 -0
- data/ext/ice/cpp/src/Ice/EndpointFactoryManager.h +46 -0
- data/ext/ice/cpp/src/Ice/EndpointFactoryManagerF.h +26 -0
- data/ext/ice/cpp/src/Ice/EndpointI.cpp +87 -0
- data/ext/ice/cpp/src/Ice/EndpointI.h +165 -0
- data/ext/ice/cpp/src/Ice/EndpointIF.h +41 -0
- data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +38 -0
- data/ext/ice/cpp/src/Ice/EventHandler.cpp +35 -0
- data/ext/ice/cpp/src/Ice/EventHandler.h +78 -0
- data/ext/ice/cpp/src/Ice/EventHandlerF.h +26 -0
- data/ext/ice/cpp/src/Ice/EventLoggerMsg.h +53 -0
- data/ext/ice/cpp/src/Ice/Exception.cpp +832 -0
- data/ext/ice/cpp/src/Ice/FacetMap.cpp +34 -0
- data/ext/ice/cpp/src/Ice/FactoryTable.cpp +158 -0
- data/ext/ice/cpp/src/Ice/FactoryTableInit.cpp +95 -0
- data/ext/ice/cpp/src/Ice/GCObject.cpp +444 -0
- data/ext/ice/cpp/src/Ice/HashUtil.h +59 -0
- data/ext/ice/cpp/src/Ice/HttpParser.cpp +680 -0
- data/ext/ice/cpp/src/Ice/HttpParser.h +124 -0
- data/ext/ice/cpp/src/Ice/IPEndpointI.cpp +733 -0
- data/ext/ice/cpp/src/Ice/IPEndpointI.h +157 -0
- data/ext/ice/cpp/src/Ice/IPEndpointIF.h +29 -0
- data/ext/ice/cpp/src/Ice/Identity.cpp +42 -0
- data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +41 -0
- data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +38 -0
- data/ext/ice/cpp/src/Ice/ImplicitContextI.cpp +639 -0
- data/ext/ice/cpp/src/Ice/ImplicitContextI.h +51 -0
- data/ext/ice/cpp/src/Ice/Incoming.cpp +757 -0
- data/ext/ice/cpp/src/Ice/IncomingAsync.cpp +340 -0
- data/ext/ice/cpp/src/Ice/IncomingRequest.h +37 -0
- data/ext/ice/cpp/src/Ice/Initialize.cpp +401 -0
- data/ext/ice/cpp/src/Ice/Instance.cpp +1928 -0
- data/ext/ice/cpp/src/Ice/Instance.h +198 -0
- data/ext/ice/cpp/src/Ice/Instrumentation.cpp +68 -0
- data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +43 -0
- data/ext/ice/cpp/src/Ice/InstrumentationI.cpp +1083 -0
- data/ext/ice/cpp/src/Ice/InstrumentationI.h +262 -0
- data/ext/ice/cpp/src/Ice/LocalException.cpp +2091 -0
- data/ext/ice/cpp/src/Ice/LocalObject.cpp +29 -0
- data/ext/ice/cpp/src/Ice/Locator.cpp +1946 -0
- data/ext/ice/cpp/src/Ice/LocatorF.cpp +39 -0
- data/ext/ice/cpp/src/Ice/LocatorInfo.cpp +917 -0
- data/ext/ice/cpp/src/Ice/LocatorInfo.h +193 -0
- data/ext/ice/cpp/src/Ice/LocatorInfoF.h +34 -0
- data/ext/ice/cpp/src/Ice/Logger.cpp +40 -0
- data/ext/ice/cpp/src/Ice/LoggerAdminI.cpp +862 -0
- data/ext/ice/cpp/src/Ice/LoggerAdminI.h +46 -0
- data/ext/ice/cpp/src/Ice/LoggerF.cpp +38 -0
- data/ext/ice/cpp/src/Ice/LoggerI.cpp +199 -0
- data/ext/ice/cpp/src/Ice/LoggerI.h +57 -0
- data/ext/ice/cpp/src/Ice/LoggerUtil.cpp +107 -0
- data/ext/ice/cpp/src/Ice/Makefile +190 -0
- data/ext/ice/cpp/src/Ice/Metrics.cpp +2159 -0
- data/ext/ice/cpp/src/Ice/MetricsAdminI.cpp +669 -0
- data/ext/ice/cpp/src/Ice/MetricsObserverI.cpp +14 -0
- data/ext/ice/cpp/src/Ice/Network.cpp +2694 -0
- data/ext/ice/cpp/src/Ice/Network.h +291 -0
- data/ext/ice/cpp/src/Ice/NetworkF.h +28 -0
- data/ext/ice/cpp/src/Ice/NetworkProxy.cpp +325 -0
- data/ext/ice/cpp/src/Ice/NetworkProxy.h +74 -0
- data/ext/ice/cpp/src/Ice/NetworkProxyF.h +26 -0
- data/ext/ice/cpp/src/Ice/Object.cpp +440 -0
- data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +41 -0
- data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +38 -0
- data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +241 -0
- data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.h +52 -0
- data/ext/ice/cpp/src/Ice/ObjectAdapterI.cpp +1498 -0
- data/ext/ice/cpp/src/Ice/ObjectAdapterI.h +155 -0
- data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +41 -0
- data/ext/ice/cpp/src/Ice/ObjectFactoryF.cpp +38 -0
- data/ext/ice/cpp/src/Ice/ObjectFactoryManager.cpp +140 -0
- data/ext/ice/cpp/src/Ice/ObjectFactoryManager.h +43 -0
- data/ext/ice/cpp/src/Ice/ObserverHelper.cpp +84 -0
- data/ext/ice/cpp/src/Ice/OpaqueEndpointI.cpp +407 -0
- data/ext/ice/cpp/src/Ice/OpaqueEndpointI.h +70 -0
- data/ext/ice/cpp/src/Ice/Outgoing.cpp +737 -0
- data/ext/ice/cpp/src/Ice/OutgoingAsync.cpp +874 -0
- data/ext/ice/cpp/src/Ice/Plugin.cpp +43 -0
- data/ext/ice/cpp/src/Ice/PluginF.cpp +38 -0
- data/ext/ice/cpp/src/Ice/PluginManagerI.cpp +503 -0
- data/ext/ice/cpp/src/Ice/PluginManagerI.h +67 -0
- data/ext/ice/cpp/src/Ice/Process.cpp +299 -0
- data/ext/ice/cpp/src/Ice/ProcessF.cpp +39 -0
- data/ext/ice/cpp/src/Ice/Properties.cpp +45 -0
- data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +555 -0
- data/ext/ice/cpp/src/Ice/PropertiesAdminI.cpp +207 -0
- data/ext/ice/cpp/src/Ice/PropertiesAdminI.h +45 -0
- data/ext/ice/cpp/src/Ice/PropertiesF.cpp +39 -0
- data/ext/ice/cpp/src/Ice/PropertiesI.cpp +759 -0
- data/ext/ice/cpp/src/Ice/PropertiesI.h +78 -0
- data/ext/ice/cpp/src/Ice/PropertyNames.cpp +1293 -0
- data/ext/ice/cpp/src/Ice/PropertyNames.h +81 -0
- data/ext/ice/cpp/src/Ice/Protocol.cpp +137 -0
- data/ext/ice/cpp/src/Ice/ProtocolInstance.cpp +98 -0
- data/ext/ice/cpp/src/Ice/ProtocolInstance.h +91 -0
- data/ext/ice/cpp/src/Ice/ProtocolInstanceF.h +26 -0
- data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +51 -0
- data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.h +67 -0
- data/ext/ice/cpp/src/Ice/ProtocolPluginFacadeF.h +26 -0
- data/ext/ice/cpp/src/Ice/Proxy.cpp +1810 -0
- data/ext/ice/cpp/src/Ice/ProxyFactory.cpp +305 -0
- data/ext/ice/cpp/src/Ice/ProxyFactory.h +57 -0
- data/ext/ice/cpp/src/Ice/Reference.cpp +1947 -0
- data/ext/ice/cpp/src/Ice/Reference.h +305 -0
- data/ext/ice/cpp/src/Ice/ReferenceFactory.cpp +937 -0
- data/ext/ice/cpp/src/Ice/ReferenceFactory.h +81 -0
- data/ext/ice/cpp/src/Ice/ReferenceFactoryF.h +24 -0
- data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +958 -0
- data/ext/ice/cpp/src/Ice/ReplyStatus.h +29 -0
- data/ext/ice/cpp/src/Ice/RequestHandler.cpp +40 -0
- data/ext/ice/cpp/src/Ice/RequestHandler.h +90 -0
- data/ext/ice/cpp/src/Ice/RequestHandlerFactory.cpp +70 -0
- data/ext/ice/cpp/src/Ice/RequestHandlerFactory.h +41 -0
- data/ext/ice/cpp/src/Ice/ResponseHandler.cpp +20 -0
- data/ext/ice/cpp/src/Ice/ResponseHandler.h +39 -0
- data/ext/ice/cpp/src/Ice/RetryQueue.cpp +154 -0
- data/ext/ice/cpp/src/Ice/RetryQueue.h +69 -0
- data/ext/ice/cpp/src/Ice/RetryQueueF.h +24 -0
- data/ext/ice/cpp/src/Ice/Router.cpp +849 -0
- data/ext/ice/cpp/src/Ice/RouterF.cpp +39 -0
- data/ext/ice/cpp/src/Ice/RouterInfo.cpp +381 -0
- data/ext/ice/cpp/src/Ice/RouterInfo.h +148 -0
- data/ext/ice/cpp/src/Ice/RouterInfoF.h +30 -0
- data/ext/ice/cpp/src/Ice/Selector.cpp +926 -0
- data/ext/ice/cpp/src/Ice/Selector.h +231 -0
- data/ext/ice/cpp/src/Ice/ServantLocator.cpp +41 -0
- data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +38 -0
- data/ext/ice/cpp/src/Ice/ServantManager.cpp +495 -0
- data/ext/ice/cpp/src/Ice/ServantManager.h +74 -0
- data/ext/ice/cpp/src/Ice/Service.cpp +1897 -0
- data/ext/ice/cpp/src/Ice/SharedContext.h +51 -0
- data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +34 -0
- data/ext/ice/cpp/src/Ice/SliceChecksums.cpp +80 -0
- data/ext/ice/cpp/src/Ice/SlicedData.cpp +80 -0
- data/ext/ice/cpp/src/Ice/Stream.cpp +53 -0
- data/ext/ice/cpp/src/Ice/StreamI.cpp +832 -0
- data/ext/ice/cpp/src/Ice/StreamI.h +198 -0
- data/ext/ice/cpp/src/Ice/StreamSocket.cpp +521 -0
- data/ext/ice/cpp/src/Ice/StreamSocket.h +85 -0
- data/ext/ice/cpp/src/Ice/StringConverterPlugin.cpp +145 -0
- data/ext/ice/cpp/src/Ice/SysLoggerI.cpp +167 -0
- data/ext/ice/cpp/src/Ice/SysLoggerI.h +43 -0
- data/ext/ice/cpp/src/Ice/TcpAcceptor.cpp +235 -0
- data/ext/ice/cpp/src/Ice/TcpAcceptor.h +67 -0
- data/ext/ice/cpp/src/Ice/TcpConnector.cpp +133 -0
- data/ext/ice/cpp/src/Ice/TcpConnector.h +51 -0
- data/ext/ice/cpp/src/Ice/TcpEndpointI.cpp +397 -0
- data/ext/ice/cpp/src/Ice/TcpEndpointI.h +93 -0
- data/ext/ice/cpp/src/Ice/TcpTransceiver.cpp +127 -0
- data/ext/ice/cpp/src/Ice/TcpTransceiver.h +61 -0
- data/ext/ice/cpp/src/Ice/ThreadPool.cpp +1357 -0
- data/ext/ice/cpp/src/Ice/ThreadPool.h +399 -0
- data/ext/ice/cpp/src/Ice/TraceLevels.cpp +43 -0
- data/ext/ice/cpp/src/Ice/TraceLevels.h +50 -0
- data/ext/ice/cpp/src/Ice/TraceLevelsF.h +26 -0
- data/ext/ice/cpp/src/Ice/TraceUtil.cpp +452 -0
- data/ext/ice/cpp/src/Ice/TraceUtil.h +28 -0
- data/ext/ice/cpp/src/Ice/Transceiver.cpp +24 -0
- data/ext/ice/cpp/src/Ice/Transceiver.h +52 -0
- data/ext/ice/cpp/src/Ice/TransceiverF.h +38 -0
- data/ext/ice/cpp/src/Ice/UdpConnector.cpp +144 -0
- data/ext/ice/cpp/src/Ice/UdpConnector.h +51 -0
- data/ext/ice/cpp/src/Ice/UdpEndpointI.cpp +483 -0
- data/ext/ice/cpp/src/Ice/UdpEndpointI.h +95 -0
- data/ext/ice/cpp/src/Ice/UdpTransceiver.cpp +1156 -0
- data/ext/ice/cpp/src/Ice/UdpTransceiver.h +123 -0
- data/ext/ice/cpp/src/Ice/Version.cpp +46 -0
- data/ext/ice/cpp/src/Ice/WSAcceptor.cpp +103 -0
- data/ext/ice/cpp/src/Ice/WSAcceptor.h +61 -0
- data/ext/ice/cpp/src/Ice/WSConnector.cpp +113 -0
- data/ext/ice/cpp/src/Ice/WSConnector.h +51 -0
- data/ext/ice/cpp/src/Ice/WSEndpoint.cpp +441 -0
- data/ext/ice/cpp/src/Ice/WSEndpoint.h +97 -0
- data/ext/ice/cpp/src/Ice/WSTransceiver.cpp +1728 -0
- data/ext/ice/cpp/src/Ice/WSTransceiver.h +149 -0
- data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +594 -0
- data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +1035 -0
- data/ext/ice/cpp/src/IceDiscovery/LocatorI.cpp +208 -0
- data/ext/ice/cpp/src/IceDiscovery/LocatorI.h +78 -0
- data/ext/ice/cpp/src/IceDiscovery/LookupI.cpp +308 -0
- data/ext/ice/cpp/src/IceDiscovery/LookupI.h +183 -0
- data/ext/ice/cpp/src/IceDiscovery/Makefile +61 -0
- data/ext/ice/cpp/src/IceDiscovery/PluginI.cpp +148 -0
- data/ext/ice/cpp/src/IceDiscovery/PluginI.h +39 -0
- data/ext/ice/cpp/src/IceSSL/AcceptorI.cpp +258 -0
- data/ext/ice/cpp/src/IceSSL/AcceptorI.h +66 -0
- data/ext/ice/cpp/src/IceSSL/Certificate.cpp +1334 -0
- data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +42 -0
- data/ext/ice/cpp/src/IceSSL/ConnectorI.cpp +151 -0
- data/ext/ice/cpp/src/IceSSL/ConnectorI.h +56 -0
- data/ext/ice/cpp/src/IceSSL/EndpointI.cpp +397 -0
- data/ext/ice/cpp/src/IceSSL/EndpointI.h +96 -0
- data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +41 -0
- data/ext/ice/cpp/src/IceSSL/Instance.cpp +38 -0
- data/ext/ice/cpp/src/IceSSL/Instance.h +42 -0
- data/ext/ice/cpp/src/IceSSL/InstanceF.h +34 -0
- data/ext/ice/cpp/src/IceSSL/Makefile +82 -0
- data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +1001 -0
- data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +607 -0
- data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +75 -0
- data/ext/ice/cpp/src/IceSSL/PluginI.cpp +102 -0
- data/ext/ice/cpp/src/IceSSL/PluginI.h +56 -0
- data/ext/ice/cpp/src/IceSSL/RFC2253.cpp +541 -0
- data/ext/ice/cpp/src/IceSSL/RFC2253.h +67 -0
- data/ext/ice/cpp/src/IceSSL/SChannelEngine.cpp +729 -0
- data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +1062 -0
- data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.h +130 -0
- data/ext/ice/cpp/src/IceSSL/SSLEngine.cpp +291 -0
- data/ext/ice/cpp/src/IceSSL/SSLEngine.h +264 -0
- data/ext/ice/cpp/src/IceSSL/SSLEngineF.h +41 -0
- data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.cpp +1514 -0
- data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +609 -0
- data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +91 -0
- data/ext/ice/cpp/src/IceSSL/TrustManager.cpp +246 -0
- data/ext/ice/cpp/src/IceSSL/TrustManager.h +51 -0
- data/ext/ice/cpp/src/IceSSL/TrustManagerF.h +26 -0
- data/ext/ice/cpp/src/IceSSL/Util.cpp +1423 -0
- data/ext/ice/cpp/src/IceSSL/Util.h +136 -0
- data/ext/ice/cpp/src/IceUtil/ArgVector.cpp +65 -0
- data/ext/ice/cpp/src/IceUtil/ArgVector.h +41 -0
- data/ext/ice/cpp/src/IceUtil/Cond.cpp +386 -0
- data/ext/ice/cpp/src/IceUtil/ConvertUTF.cpp +477 -0
- data/ext/ice/cpp/src/IceUtil/ConvertUTF.h +144 -0
- data/ext/ice/cpp/src/IceUtil/CountDownLatch.cpp +184 -0
- data/ext/ice/cpp/src/IceUtil/CtrlCHandler.cpp +273 -0
- data/ext/ice/cpp/src/IceUtil/Exception.cpp +782 -0
- data/ext/ice/cpp/src/IceUtil/FileUtil.cpp +532 -0
- data/ext/ice/cpp/src/IceUtil/FileUtil.h +159 -0
- data/ext/ice/cpp/src/IceUtil/InputUtil.cpp +41 -0
- data/ext/ice/cpp/src/IceUtil/Makefile +68 -0
- data/ext/ice/cpp/src/IceUtil/MutexProtocol.cpp +24 -0
- data/ext/ice/cpp/src/IceUtil/Options.cpp +1049 -0
- data/ext/ice/cpp/src/IceUtil/OutputUtil.cpp +591 -0
- data/ext/ice/cpp/src/IceUtil/Random.cpp +185 -0
- data/ext/ice/cpp/src/IceUtil/RecMutex.cpp +257 -0
- data/ext/ice/cpp/src/IceUtil/SHA1.cpp +126 -0
- data/ext/ice/cpp/src/IceUtil/Shared.cpp +200 -0
- data/ext/ice/cpp/src/IceUtil/StopWatch.h +54 -0
- data/ext/ice/cpp/src/IceUtil/StringConverter.cpp +450 -0
- data/ext/ice/cpp/src/IceUtil/StringUtil.cpp +842 -0
- data/ext/ice/cpp/src/IceUtil/Thread.cpp +809 -0
- data/ext/ice/cpp/src/IceUtil/ThreadException.cpp +172 -0
- data/ext/ice/cpp/src/IceUtil/Time.cpp +306 -0
- data/ext/ice/cpp/src/IceUtil/Timer.cpp +251 -0
- data/ext/ice/cpp/src/IceUtil/UUID.cpp +174 -0
- data/ext/ice/cpp/src/IceUtil/Unicode.cpp +131 -0
- data/ext/ice/cpp/src/IceUtil/Unicode.h +49 -0
- data/ext/ice/cpp/src/Slice/CPlusPlusUtil.cpp +1139 -0
- data/ext/ice/cpp/src/Slice/Checksum.cpp +452 -0
- data/ext/ice/cpp/src/Slice/CsUtil.cpp +2650 -0
- data/ext/ice/cpp/src/Slice/DotNetNames.cpp +146 -0
- data/ext/ice/cpp/src/Slice/FileTracker.cpp +203 -0
- data/ext/ice/cpp/src/Slice/Grammar.cpp +4755 -0
- data/ext/ice/cpp/src/Slice/Grammar.h +98 -0
- data/ext/ice/cpp/src/Slice/GrammarUtil.h +234 -0
- data/ext/ice/cpp/src/Slice/JavaUtil.cpp +4376 -0
- data/ext/ice/cpp/src/Slice/MD5.cpp +57 -0
- data/ext/ice/cpp/src/Slice/MD5.h +44 -0
- data/ext/ice/cpp/src/Slice/MD5I.cpp +385 -0
- data/ext/ice/cpp/src/Slice/MD5I.h +91 -0
- data/ext/ice/cpp/src/Slice/Makefile +65 -0
- data/ext/ice/cpp/src/Slice/PHPUtil.cpp +156 -0
- data/ext/ice/cpp/src/Slice/Parser.cpp +6386 -0
- data/ext/ice/cpp/src/Slice/Preprocessor.cpp +686 -0
- data/ext/ice/cpp/src/Slice/Python.cpp +675 -0
- data/ext/ice/cpp/src/Slice/PythonUtil.cpp +2614 -0
- data/ext/ice/cpp/src/Slice/Ruby.cpp +317 -0
- data/ext/ice/cpp/src/Slice/RubyUtil.cpp +1774 -0
- data/ext/ice/cpp/src/Slice/Scanner.cpp +2426 -0
- data/ext/ice/cpp/src/Slice/Util.cpp +325 -0
- data/ext/ice/mcpp/config.h.Darwin +227 -0
- data/ext/ice/mcpp/config.h.Linux +227 -0
- data/ext/ice/mcpp/config.h.MINGW +7 -0
- data/ext/ice/mcpp/configed.H +382 -0
- data/ext/ice/mcpp/directive.c +1699 -0
- data/ext/ice/mcpp/eval.c +1673 -0
- data/ext/ice/mcpp/expand.c +2980 -0
- data/ext/ice/mcpp/internal.H +564 -0
- data/ext/ice/mcpp/main.c +1131 -0
- data/ext/ice/mcpp/mbchar.c +869 -0
- data/ext/ice/mcpp/mcpp_lib.h +31 -0
- data/ext/ice/mcpp/mcpp_out.h +13 -0
- data/ext/ice/mcpp/support.c +2811 -0
- data/ext/ice/mcpp/system.H +396 -0
- data/ext/ice/mcpp/system.c +4940 -0
- data/ice.gemspec +41 -0
- data/lib/Glacier2.rb +12 -0
- data/lib/Glacier2/Metrics.rb +99 -0
- data/lib/Glacier2/PermissionsVerifier.rb +168 -0
- data/lib/Glacier2/PermissionsVerifierF.rb +34 -0
- data/lib/Glacier2/Router.rb +141 -0
- data/lib/Glacier2/RouterF.rb +29 -0
- data/lib/Glacier2/SSLInfo.rb +79 -0
- data/lib/Glacier2/Session.rb +470 -0
- data/lib/Ice.rb +659 -0
- data/lib/Ice/BuiltinSequences.rb +64 -0
- data/lib/Ice/Communicator.rb +93 -0
- data/lib/Ice/CommunicatorF.rb +28 -0
- data/lib/Ice/Connection.rb +414 -0
- data/lib/Ice/ConnectionF.rb +36 -0
- data/lib/Ice/Current.rb +152 -0
- data/lib/Ice/Endpoint.rb +265 -0
- data/lib/Ice/EndpointF.rb +52 -0
- data/lib/Ice/EndpointTypes.rb +77 -0
- data/lib/Ice/FacetMap.rb +28 -0
- data/lib/Ice/Identity.rb +70 -0
- data/lib/Ice/ImplicitContext.rb +59 -0
- data/lib/Ice/ImplicitContextF.rb +28 -0
- data/lib/Ice/Instrumentation.rb +425 -0
- data/lib/Ice/InstrumentationF.rb +35 -0
- data/lib/Ice/LocalException.rb +1081 -0
- data/lib/Ice/Locator.rb +314 -0
- data/lib/Ice/LocatorF.rb +34 -0
- data/lib/Ice/Logger.rb +57 -0
- data/lib/Ice/LoggerF.rb +28 -0
- data/lib/Ice/Metrics.rb +696 -0
- data/lib/Ice/ObjectAdapterF.rb +28 -0
- data/lib/Ice/ObjectFactory.rb +53 -0
- data/lib/Ice/ObjectFactoryF.rb +28 -0
- data/lib/Ice/Plugin.rb +87 -0
- data/lib/Ice/PluginF.rb +32 -0
- data/lib/Ice/Process.rb +93 -0
- data/lib/Ice/ProcessF.rb +29 -0
- data/lib/Ice/Properties.rb +65 -0
- data/lib/Ice/PropertiesAdmin.rb +104 -0
- data/lib/Ice/PropertiesF.rb +33 -0
- data/lib/Ice/Router.rb +163 -0
- data/lib/Ice/RouterF.rb +29 -0
- data/lib/Ice/SliceChecksumDict.rb +28 -0
- data/lib/Ice/Version.rb +100 -0
- data/lib/IceBox.rb +10 -0
- data/lib/IceBox/IceBox.rb +272 -0
- data/lib/IceGrid.rb +17 -0
- data/lib/IceGrid/Admin.rb +1076 -0
- data/lib/IceGrid/Descriptor.rb +1505 -0
- data/lib/IceGrid/Exception.rb +401 -0
- data/lib/IceGrid/FileParser.rb +105 -0
- data/lib/IceGrid/Locator.rb +105 -0
- data/lib/IceGrid/Observer.rb +571 -0
- data/lib/IceGrid/Query.rb +168 -0
- data/lib/IceGrid/Registry.rb +120 -0
- data/lib/IceGrid/Session.rb +114 -0
- data/lib/IceGrid/UserAccountMapper.rb +101 -0
- data/lib/IcePatch2.rb +10 -0
- data/lib/IcePatch2/FileInfo.rb +75 -0
- data/lib/IcePatch2/FileServer.rb +141 -0
- data/lib/IceStorm.rb +11 -0
- data/lib/IceStorm/IceStorm.rb +463 -0
- data/lib/IceStorm/Metrics.rb +155 -0
- data/slice/Freeze/BackgroundSaveEvictor.ice +111 -0
- data/slice/Freeze/CatalogData.ice +49 -0
- data/slice/Freeze/Connection.ice +111 -0
- data/slice/Freeze/ConnectionF.ice +20 -0
- data/slice/Freeze/DB.ice +37 -0
- data/slice/Freeze/Evictor.ice +339 -0
- data/slice/Freeze/EvictorF.ice +22 -0
- data/slice/Freeze/EvictorStorage.ice +72 -0
- data/slice/Freeze/Exception.ice +100 -0
- data/slice/Freeze/Transaction.ice +57 -0
- data/slice/Freeze/TransactionalEvictor.ice +50 -0
- data/slice/Glacier2/Metrics.ice +77 -0
- data/slice/Glacier2/PermissionsVerifier.ice +105 -0
- data/slice/Glacier2/PermissionsVerifierF.ice +21 -0
- data/slice/Glacier2/Router.ice +178 -0
- data/slice/Glacier2/RouterF.ice +20 -0
- data/slice/Glacier2/SSLInfo.ice +50 -0
- data/slice/Glacier2/Session.ice +273 -0
- data/slice/Ice/BuiltinSequences.ice +48 -0
- data/slice/Ice/Communicator.ice +567 -0
- data/slice/Ice/CommunicatorF.ice +20 -0
- data/slice/Ice/Connection.ice +323 -0
- data/slice/Ice/ConnectionF.ice +22 -0
- data/slice/Ice/Current.ice +160 -0
- data/slice/Ice/Endpoint.ice +227 -0
- data/slice/Ice/EndpointF.ice +32 -0
- data/slice/Ice/EndpointTypes.ice +38 -0
- data/slice/Ice/FacetMap.ice +25 -0
- data/slice/Ice/Identity.ice +59 -0
- data/slice/Ice/ImplicitContext.ice +109 -0
- data/slice/Ice/ImplicitContextF.ice +20 -0
- data/slice/Ice/Instrumentation.ice +499 -0
- data/slice/Ice/InstrumentationF.ice +26 -0
- data/slice/Ice/LocalException.ice +1015 -0
- data/slice/Ice/Locator.ice +227 -0
- data/slice/Ice/LocatorF.ice +21 -0
- data/slice/Ice/Logger.ice +86 -0
- data/slice/Ice/LoggerF.ice +20 -0
- data/slice/Ice/Metrics.ice +422 -0
- data/slice/Ice/ObjectAdapter.ice +673 -0
- data/slice/Ice/ObjectAdapterF.ice +20 -0
- data/slice/Ice/ObjectFactory.ice +60 -0
- data/slice/Ice/ObjectFactoryF.ice +20 -0
- data/slice/Ice/Plugin.ice +117 -0
- data/slice/Ice/PluginF.ice +21 -0
- data/slice/Ice/Process.ice +54 -0
- data/slice/Ice/ProcessF.ice +20 -0
- data/slice/Ice/Properties.ice +228 -0
- data/slice/Ice/PropertiesAdmin.ice +75 -0
- data/slice/Ice/PropertiesF.ice +21 -0
- data/slice/Ice/RemoteLogger.ice +232 -0
- data/slice/Ice/Router.ice +83 -0
- data/slice/Ice/RouterF.ice +20 -0
- data/slice/Ice/ServantLocator.ice +117 -0
- data/slice/Ice/ServantLocatorF.ice +20 -0
- data/slice/Ice/SliceChecksumDict.ice +25 -0
- data/slice/Ice/Version.ice +39 -0
- data/slice/IceBox/IceBox.ice +194 -0
- data/slice/IceDiscovery/IceDiscovery.ice +32 -0
- data/slice/IceGrid/Admin.ice +1578 -0
- data/slice/IceGrid/Descriptor.ice +1079 -0
- data/slice/IceGrid/Discovery.ice +73 -0
- data/slice/IceGrid/Exception.ice +383 -0
- data/slice/IceGrid/FileParser.ice +61 -0
- data/slice/IceGrid/Locator.ice +56 -0
- data/slice/IceGrid/Observer.ice +394 -0
- data/slice/IceGrid/PluginFacade.ice +316 -0
- data/slice/IceGrid/Query.ice +130 -0
- data/slice/IceGrid/Registry.ice +138 -0
- data/slice/IceGrid/Session.ice +124 -0
- data/slice/IceGrid/UserAccountMapper.ice +58 -0
- data/slice/IcePatch2/FileInfo.ice +49 -0
- data/slice/IcePatch2/FileServer.ice +129 -0
- data/slice/IceSSL/ConnectionInfo.ice +34 -0
- data/slice/IceSSL/EndpointInfo.ice +41 -0
- data/slice/IceStorm/IceStorm.ice +405 -0
- data/slice/IceStorm/Metrics.ice +71 -0
- metadata +737 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// **********************************************************************
|
|
2
|
+
//
|
|
3
|
+
// Copyright (c) 2003-2014 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 ICE_SSL_RFC_2253_H
|
|
11
|
+
#define ICE_SSL_RFC_2253_H
|
|
12
|
+
|
|
13
|
+
#include <IceUtil/Config.h>
|
|
14
|
+
#include <list>
|
|
15
|
+
|
|
16
|
+
//
|
|
17
|
+
// The methods in the IceSSL::RFC2253 namespace implement a parser
|
|
18
|
+
// for relative distinguished name (RDN) pairs using the parsing
|
|
19
|
+
// rules outlined in sections 3 and 4 of RFC 2253.
|
|
20
|
+
//
|
|
21
|
+
// Note that this parser does not unescape the elements of the RDNs.
|
|
22
|
+
// For example, parsing the following RDN
|
|
23
|
+
//
|
|
24
|
+
// O=Sue\, Grabit and Runn
|
|
25
|
+
//
|
|
26
|
+
// results in the pair ("O","Sue\, Grabit and Runn") and not
|
|
27
|
+
// ("O","Sue, Grabit and Runn").
|
|
28
|
+
//
|
|
29
|
+
namespace IceSSL
|
|
30
|
+
{
|
|
31
|
+
namespace RFC2253
|
|
32
|
+
{
|
|
33
|
+
|
|
34
|
+
typedef std::list< std::pair<std::string, std::string> > RDNSeq;
|
|
35
|
+
|
|
36
|
+
struct RDNEntry
|
|
37
|
+
{
|
|
38
|
+
RDNSeq rdn;
|
|
39
|
+
bool negate;
|
|
40
|
+
};
|
|
41
|
+
typedef std::list<RDNEntry> RDNEntrySeq;
|
|
42
|
+
|
|
43
|
+
//
|
|
44
|
+
// This function separates DNs with the ';' character. A list of RDN
|
|
45
|
+
// pairs may optionally be prefixed with '!' to indicate a negation.
|
|
46
|
+
// The function returns a list of RDNEntry structures. Any failure in
|
|
47
|
+
// parsing results in a ParseException being thrown.
|
|
48
|
+
//
|
|
49
|
+
RDNEntrySeq parse(const std::string&);
|
|
50
|
+
|
|
51
|
+
//
|
|
52
|
+
// RDNs are separated with ',' and ';'.
|
|
53
|
+
//
|
|
54
|
+
// This function returns a list of RDN pairs. Any failure in parsing
|
|
55
|
+
// results in a ParseException being thrown.
|
|
56
|
+
//
|
|
57
|
+
RDNSeq parseStrict(const std::string&);
|
|
58
|
+
|
|
59
|
+
//
|
|
60
|
+
// Unescape the string.
|
|
61
|
+
//
|
|
62
|
+
std::string unescape(const std::string&);
|
|
63
|
+
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
#endif
|
|
@@ -0,0 +1,729 @@
|
|
|
1
|
+
// **********************************************************************
|
|
2
|
+
//
|
|
3
|
+
// Copyright (c) 2003-2014 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/SSLEngine.h>
|
|
11
|
+
#include <IceSSL/Plugin.h>
|
|
12
|
+
|
|
13
|
+
#include <Ice/LocalException.h>
|
|
14
|
+
#include <Ice/Logger.h>
|
|
15
|
+
#include <Ice/Communicator.h>
|
|
16
|
+
|
|
17
|
+
#include <IceUtil/StringUtil.h>
|
|
18
|
+
#include <IceUtil/FileUtil.h>
|
|
19
|
+
#include <IceUtil/UUID.h>
|
|
20
|
+
|
|
21
|
+
using namespace std;
|
|
22
|
+
using namespace Ice;
|
|
23
|
+
using namespace IceUtil;
|
|
24
|
+
using namespace IceUtilInternal;
|
|
25
|
+
using namespace IceSSL;
|
|
26
|
+
|
|
27
|
+
#ifdef ICE_USE_SCHANNEL
|
|
28
|
+
|
|
29
|
+
Shared* IceSSL::upCast(IceSSL::SChannelEngine* p) { return p; }
|
|
30
|
+
|
|
31
|
+
namespace
|
|
32
|
+
{
|
|
33
|
+
|
|
34
|
+
# ifdef __MINGW32__
|
|
35
|
+
//
|
|
36
|
+
// CERT_CHAIN_ENGINE_CONFIG struct in mingw headers doesn't include
|
|
37
|
+
// new members added in Windows 7, we add our ouwn definition and
|
|
38
|
+
// then cast it to CERT_CHAIN_ENGINE_CONFIG this works because the
|
|
39
|
+
// linked libraries include the new version.
|
|
40
|
+
//
|
|
41
|
+
struct CertChainEngineConfig
|
|
42
|
+
{
|
|
43
|
+
DWORD cbSize;
|
|
44
|
+
HCERTSTORE hRestrictedRoot;
|
|
45
|
+
HCERTSTORE hRestrictedTrust;
|
|
46
|
+
HCERTSTORE hRestrictedOther;
|
|
47
|
+
DWORD cAdditionalStore;
|
|
48
|
+
HCERTSTORE *rghAdditionalStore;
|
|
49
|
+
DWORD dwFlags;
|
|
50
|
+
DWORD dwUrlRetrievalTimeout;
|
|
51
|
+
DWORD MaximumCachedCertificates;
|
|
52
|
+
DWORD CycleDetectionModulus;
|
|
53
|
+
HCERTSTORE hExclusiveRoot;
|
|
54
|
+
HCERTSTORE hExclusiveTrustedPeople;
|
|
55
|
+
};
|
|
56
|
+
# endif
|
|
57
|
+
|
|
58
|
+
void
|
|
59
|
+
addCertificateToStore(const string& file, HCERTSTORE store, PCCERT_CONTEXT* cert = 0)
|
|
60
|
+
{
|
|
61
|
+
vector<char> buffer;
|
|
62
|
+
readFile(file, buffer);
|
|
63
|
+
vector<BYTE> outBuffer;
|
|
64
|
+
outBuffer.resize(buffer.size());
|
|
65
|
+
DWORD outLength = static_cast<DWORD>(outBuffer.size());
|
|
66
|
+
|
|
67
|
+
if(!CryptStringToBinary(&buffer[0], static_cast<DWORD>(buffer.size()), CRYPT_STRING_BASE64HEADER,
|
|
68
|
+
&outBuffer[0], &outLength, 0, 0))
|
|
69
|
+
{
|
|
70
|
+
//
|
|
71
|
+
// Base64 data should always be bigger than binary
|
|
72
|
+
//
|
|
73
|
+
assert(GetLastError() != ERROR_MORE_DATA);
|
|
74
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
75
|
+
"IceSSL: error decoding certificate:\n" + lastErrorToString());
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if(!CertAddEncodedCertificateToStore(store, X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, &outBuffer[0],
|
|
79
|
+
outLength, CERT_STORE_ADD_NEW, cert))
|
|
80
|
+
{
|
|
81
|
+
if(GetLastError() != static_cast<DWORD>(CRYPT_E_EXISTS))
|
|
82
|
+
{
|
|
83
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
84
|
+
"IceSSL: error decoding certificate:\n" + lastErrorToString());
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
DWORD
|
|
90
|
+
parseProtocols(const StringSeq& protocols)
|
|
91
|
+
{
|
|
92
|
+
DWORD v = 0;
|
|
93
|
+
|
|
94
|
+
for(Ice::StringSeq::const_iterator p = protocols.begin(); p != protocols.end(); ++p)
|
|
95
|
+
{
|
|
96
|
+
string prot = IceUtilInternal::toUpper(*p);
|
|
97
|
+
|
|
98
|
+
if(prot == "SSL3" || prot == "SSLV3")
|
|
99
|
+
{
|
|
100
|
+
v |= SP_PROT_SSL3_SERVER;
|
|
101
|
+
v |= SP_PROT_SSL3_CLIENT;
|
|
102
|
+
}
|
|
103
|
+
else if(prot == "TLS" || prot == "TLS1" || prot == "TLSV1" || prot == "TLS1_0" || prot == "TLSV1_0")
|
|
104
|
+
{
|
|
105
|
+
v |= SP_PROT_TLS1_SERVER;
|
|
106
|
+
v |= SP_PROT_TLS1_CLIENT;
|
|
107
|
+
}
|
|
108
|
+
else if(prot == "TLS1_1" || prot == "TLSV1_1")
|
|
109
|
+
{
|
|
110
|
+
v |= SP_PROT_TLS1_1_SERVER;
|
|
111
|
+
v |= SP_PROT_TLS1_1_CLIENT;
|
|
112
|
+
}
|
|
113
|
+
else if(prot == "TLS1_2" || prot == "TLSV1_2")
|
|
114
|
+
{
|
|
115
|
+
v |= SP_PROT_TLS1_2_SERVER;
|
|
116
|
+
v |= SP_PROT_TLS1_2_CLIENT;
|
|
117
|
+
}
|
|
118
|
+
else
|
|
119
|
+
{
|
|
120
|
+
throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: unrecognized protocol `" + *p + "'");
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return v;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
const ALG_ID supportedCiphers[] = { CALG_3DES, CALG_AES_128, CALG_AES_256, CALG_DES, CALG_RC2, CALG_RC4 };
|
|
128
|
+
const int supportedCiphersSize = sizeof(supportedCiphers)/sizeof(ALG_ID);
|
|
129
|
+
|
|
130
|
+
ALG_ID
|
|
131
|
+
algorithmId(const string& name)
|
|
132
|
+
{
|
|
133
|
+
if(name == "3DES")
|
|
134
|
+
{
|
|
135
|
+
return CALG_3DES;
|
|
136
|
+
}
|
|
137
|
+
if(name == "AES_128")
|
|
138
|
+
{
|
|
139
|
+
return CALG_AES_128;
|
|
140
|
+
}
|
|
141
|
+
if(name == "AES_256")
|
|
142
|
+
{
|
|
143
|
+
return CALG_AES_256;
|
|
144
|
+
}
|
|
145
|
+
if(name == "DES")
|
|
146
|
+
{
|
|
147
|
+
return CALG_DES;
|
|
148
|
+
}
|
|
149
|
+
if(name == "RC2")
|
|
150
|
+
{
|
|
151
|
+
return CALG_RC2;
|
|
152
|
+
}
|
|
153
|
+
if(name == "RC4")
|
|
154
|
+
{
|
|
155
|
+
return CALG_RC4;
|
|
156
|
+
}
|
|
157
|
+
return 0;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
SChannelEngine::SChannelEngine(const CommunicatorPtr& communicator) :
|
|
163
|
+
SSLEngine(communicator),
|
|
164
|
+
_initialized(false),
|
|
165
|
+
_rootStore(0),
|
|
166
|
+
_chainEngine(0)
|
|
167
|
+
{
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
void
|
|
171
|
+
SChannelEngine::initialize()
|
|
172
|
+
{
|
|
173
|
+
Mutex::Lock lock(_mutex);
|
|
174
|
+
if(_initialized)
|
|
175
|
+
{
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
SSLEngine::initialize();
|
|
180
|
+
|
|
181
|
+
const string prefix = "IceSSL.";
|
|
182
|
+
const PropertiesPtr properties = communicator()->getProperties();
|
|
183
|
+
|
|
184
|
+
//
|
|
185
|
+
// Protocols selects which protocols to enable, by default we only enable TLS1.0
|
|
186
|
+
// TLS1.1 and TLS1.2 to avoid security issues with SSLv3
|
|
187
|
+
//
|
|
188
|
+
vector<string> defaultProtocols;
|
|
189
|
+
defaultProtocols.push_back("tls1_0");
|
|
190
|
+
defaultProtocols.push_back("tls1_1");
|
|
191
|
+
defaultProtocols.push_back("tls1_2");
|
|
192
|
+
const_cast<DWORD&>(_protocols) =
|
|
193
|
+
parseProtocols(properties->getPropertyAsListWithDefault(prefix + "Protocols", defaultProtocols));
|
|
194
|
+
|
|
195
|
+
//
|
|
196
|
+
// Check for a default directory. We look in this directory for
|
|
197
|
+
// files mentioned in the configuration.
|
|
198
|
+
//
|
|
199
|
+
string defaultDir = properties->getProperty(prefix + "DefaultDir");
|
|
200
|
+
|
|
201
|
+
int passwordRetryMax = properties->getPropertyAsIntWithDefault(prefix + "PasswordRetryMax", 3);
|
|
202
|
+
PasswordPromptPtr passwordPrompt = getPasswordPrompt();
|
|
203
|
+
setPassword(properties->getProperty(prefix + "Password"));
|
|
204
|
+
|
|
205
|
+
string ciphers = properties->getProperty(prefix + "Ciphers");
|
|
206
|
+
if(!ciphers.empty())
|
|
207
|
+
{
|
|
208
|
+
parseCiphers(ciphers);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
if(securityTraceLevel() >= 1)
|
|
212
|
+
{
|
|
213
|
+
ostringstream os;
|
|
214
|
+
os << "enabling SSL ciphersuites:";
|
|
215
|
+
if(_ciphers.empty())
|
|
216
|
+
{
|
|
217
|
+
for(int i = 0; i < supportedCiphersSize; ++i)
|
|
218
|
+
{
|
|
219
|
+
os << "\n " << getCipherName(supportedCiphers[i]);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
else
|
|
223
|
+
{
|
|
224
|
+
for(vector<ALG_ID>::const_iterator i = _ciphers.begin(); i != _ciphers.end(); ++i)
|
|
225
|
+
{
|
|
226
|
+
os << "\n " << getCipherName(*i);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
getLogger()->trace(securityTraceCategory(), os.str());
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
string certStore = properties->getPropertyWithDefault(prefix + "CertStore", "CurrentUser");
|
|
233
|
+
if(certStore != "CurrentUser" && certStore != "LocalMachine")
|
|
234
|
+
{
|
|
235
|
+
getLogger()->warning("Invalid IceSSL.CertStore value `" + certStore + "' adjusted to `CurrentUser'");
|
|
236
|
+
certStore = "CurrentUser";
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
//
|
|
240
|
+
// Create trusted CA store with contents of CertAuthFile
|
|
241
|
+
//
|
|
242
|
+
string caFile = properties->getProperty(prefix + "CertAuthFile");
|
|
243
|
+
if(!caFile.empty())
|
|
244
|
+
{
|
|
245
|
+
_rootStore = CertOpenStore(CERT_STORE_PROV_MEMORY, 0, 0, 0, 0);
|
|
246
|
+
if(!_rootStore)
|
|
247
|
+
{
|
|
248
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
249
|
+
"IceSSL: error creating in memory certificate store:\n" + lastErrorToString());
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
if(!checkPath(caFile, defaultDir, false))
|
|
253
|
+
{
|
|
254
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
255
|
+
"IceSSL: CA certificate file not found:\n" + caFile);
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
addCertificateToStore(caFile, _rootStore);
|
|
259
|
+
|
|
260
|
+
//
|
|
261
|
+
// Create a chain engine that uses our Trusted Root Store
|
|
262
|
+
//
|
|
263
|
+
#ifdef __MINGW32__
|
|
264
|
+
CertChainEngineConfig config;
|
|
265
|
+
memset(&config, 0, sizeof(CertChainEngineConfig));
|
|
266
|
+
config.cbSize = sizeof(CertChainEngineConfig);
|
|
267
|
+
#else
|
|
268
|
+
CERT_CHAIN_ENGINE_CONFIG config;
|
|
269
|
+
memset(&config, 0, sizeof(CERT_CHAIN_ENGINE_CONFIG));
|
|
270
|
+
config.cbSize = sizeof(CERT_CHAIN_ENGINE_CONFIG);
|
|
271
|
+
#endif
|
|
272
|
+
config.hExclusiveRoot = _rootStore;
|
|
273
|
+
|
|
274
|
+
//
|
|
275
|
+
// Build the chain using the LocalMachine registry location as opposed
|
|
276
|
+
// to the CurrentUser location.
|
|
277
|
+
//
|
|
278
|
+
if(certStore == "LocalMachine")
|
|
279
|
+
{
|
|
280
|
+
config.dwFlags = CERT_CHAIN_USE_LOCAL_MACHINE_STORE;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
#ifdef __MINGW32__
|
|
284
|
+
if(!CertCreateCertificateChainEngine(reinterpret_cast<CERT_CHAIN_ENGINE_CONFIG*>(&config), &_chainEngine))
|
|
285
|
+
#else
|
|
286
|
+
if(!CertCreateCertificateChainEngine(&config, &_chainEngine))
|
|
287
|
+
#endif
|
|
288
|
+
{
|
|
289
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
290
|
+
"IceSSL: error creating certificate chain engine:\n" + lastErrorToString());
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
else
|
|
294
|
+
{
|
|
295
|
+
_chainEngine = (certStore == "LocalMachine") ? HCCE_LOCAL_MACHINE : HCCE_CURRENT_USER;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
//
|
|
299
|
+
// Import the application certificate and private keys.
|
|
300
|
+
//
|
|
301
|
+
string keySet = properties->getPropertyWithDefault(prefix + "KeySet", "DefaultKeySet");
|
|
302
|
+
if(keySet != "DefaultKeySet" && keySet != "UserKeySet" && keySet != "MachineKeySet")
|
|
303
|
+
{
|
|
304
|
+
getLogger()->warning("Invalid IceSSL.KeySet value `" + keySet + "' adjusted to `DefaultKeySet'");
|
|
305
|
+
keySet = "DefaultKeySet";
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
DWORD importFlags = (keySet == "MachineKeySet") ? CRYPT_MACHINE_KEYSET : CRYPT_USER_KEYSET;
|
|
309
|
+
|
|
310
|
+
string certFile = properties->getProperty(prefix + "CertFile");
|
|
311
|
+
string keyFile = properties->getPropertyWithDefault(prefix + "KeyFile", certFile);
|
|
312
|
+
|
|
313
|
+
if(!certFile.empty())
|
|
314
|
+
{
|
|
315
|
+
vector<string> certFiles;
|
|
316
|
+
if(!splitString(certFile, IceUtilInternal::pathsep, certFiles) || certFiles.size() > 2)
|
|
317
|
+
{
|
|
318
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
319
|
+
"IceSSL: invalid value for " + prefix + "CertFile:\n" + certFile);
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
vector<string> keyFiles;
|
|
323
|
+
if(!splitString(keyFile, IceUtilInternal::pathsep, keyFiles) || keyFiles.size() > 2)
|
|
324
|
+
{
|
|
325
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
326
|
+
"IceSSL: invalid value for " + prefix + "KeyFile:\n" + keyFile);
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
if(certFiles.size() != keyFiles.size())
|
|
330
|
+
{
|
|
331
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
332
|
+
"IceSSL: " + prefix + "KeyFile does not agree with " + prefix + "CertFile");
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
for(size_t i = 0; i < certFiles.size(); ++i)
|
|
336
|
+
{
|
|
337
|
+
string certFile = certFiles[i];
|
|
338
|
+
if(!checkPath(certFile, defaultDir, false))
|
|
339
|
+
{
|
|
340
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
341
|
+
"IceSSL: certificate file not found:\n" + certFile);
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
vector<char> buffer;
|
|
345
|
+
readFile(certFile, buffer);
|
|
346
|
+
|
|
347
|
+
CRYPT_DATA_BLOB pfxBlob;
|
|
348
|
+
pfxBlob.cbData = static_cast<DWORD>(buffer.size());
|
|
349
|
+
pfxBlob.pbData = reinterpret_cast<BYTE*>(&buffer[0]);
|
|
350
|
+
|
|
351
|
+
HCERTSTORE store = 0;
|
|
352
|
+
PCCERT_CONTEXT cert = 0;
|
|
353
|
+
int err = 0;
|
|
354
|
+
int count = 0;
|
|
355
|
+
do
|
|
356
|
+
{
|
|
357
|
+
string s = password(false);
|
|
358
|
+
store = PFXImportCertStore(&pfxBlob, stringToWstring(s).c_str(), importFlags);
|
|
359
|
+
err = store ? 0 : GetLastError();
|
|
360
|
+
}
|
|
361
|
+
while(err == ERROR_INVALID_PASSWORD && passwordPrompt && ++count < passwordRetryMax);
|
|
362
|
+
|
|
363
|
+
if(store)
|
|
364
|
+
{
|
|
365
|
+
_stores.push_back(store);
|
|
366
|
+
cert = CertFindCertificateInStore(store, X509_ASN_ENCODING, 0, CERT_FIND_ANY, 0, cert);
|
|
367
|
+
if(!cert)
|
|
368
|
+
{
|
|
369
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
370
|
+
"IceSSL: certificate error:\n" + lastErrorToString());
|
|
371
|
+
}
|
|
372
|
+
_certs.push_back(cert);
|
|
373
|
+
continue;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
assert(err);
|
|
377
|
+
|
|
378
|
+
if(err != CRYPT_E_BAD_ENCODE)
|
|
379
|
+
{
|
|
380
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
381
|
+
"IceSSL: error decoding certificate:\n" + lastErrorToString());
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
//
|
|
385
|
+
// Try to load certificate & key as PEM files.
|
|
386
|
+
//
|
|
387
|
+
err = 0;
|
|
388
|
+
keyFile = keyFiles[i];
|
|
389
|
+
if(!checkPath(keyFile, defaultDir, false))
|
|
390
|
+
{
|
|
391
|
+
throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: key file not found:\n" + keyFile);
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
readFile(keyFile, buffer);
|
|
395
|
+
|
|
396
|
+
vector<BYTE> outBuffer;
|
|
397
|
+
outBuffer.resize(buffer.size());
|
|
398
|
+
DWORD outLength = static_cast<DWORD>(buffer.size());
|
|
399
|
+
|
|
400
|
+
//
|
|
401
|
+
// Convert the PEM encoded buffer to DER binary format.
|
|
402
|
+
//
|
|
403
|
+
if(!CryptStringToBinary(&buffer[0], static_cast<DWORD>(buffer.size()), CRYPT_STRING_BASE64HEADER,
|
|
404
|
+
&outBuffer[0], &outLength, 0, 0))
|
|
405
|
+
{
|
|
406
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
407
|
+
"IceSSL: error decoding key:\n" + lastErrorToString());
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
PCRYPT_PRIVATE_KEY_INFO keyInfo = 0;
|
|
411
|
+
BYTE* key = 0;
|
|
412
|
+
HCRYPTKEY hKey = 0;
|
|
413
|
+
|
|
414
|
+
try
|
|
415
|
+
{
|
|
416
|
+
DWORD decodedLength = 0;
|
|
417
|
+
if(!CryptDecodeObjectEx(X509_ASN_ENCODING, PKCS_PRIVATE_KEY_INFO, &outBuffer[0], outLength,
|
|
418
|
+
CRYPT_DECODE_ALLOC_FLAG, 0, &keyInfo, &decodedLength))
|
|
419
|
+
{
|
|
420
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
421
|
+
"IceSSL: error decoding key:\n" + lastErrorToString());
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
//
|
|
425
|
+
// Check that we are using a RSA Key
|
|
426
|
+
//
|
|
427
|
+
if(strcmp(keyInfo->Algorithm.pszObjId, szOID_RSA_RSA))
|
|
428
|
+
{
|
|
429
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
430
|
+
string("IceSSL: error unknow key algorithm: `") + keyInfo->Algorithm.pszObjId + "'");
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
//
|
|
434
|
+
// Create a new RSA key set to store our key
|
|
435
|
+
//
|
|
436
|
+
const wstring keySetName = stringToWstring(generateUUID());
|
|
437
|
+
HCRYPTPROV cryptProv = 0;
|
|
438
|
+
|
|
439
|
+
DWORD contextFlags = (keySet == "MachineKeySet") ? CRYPT_MACHINE_KEYSET | CRYPT_NEWKEYSET :
|
|
440
|
+
CRYPT_NEWKEYSET;
|
|
441
|
+
|
|
442
|
+
if(!CryptAcquireContextW(&cryptProv, keySetName.c_str(), MS_DEF_PROV_W, PROV_RSA_FULL, contextFlags))
|
|
443
|
+
{
|
|
444
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
445
|
+
"IceSSL: error acquiring cryptographic context:\n" + lastErrorToString());
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
//
|
|
449
|
+
// Decode the private key BLOB
|
|
450
|
+
//
|
|
451
|
+
if(!CryptDecodeObjectEx(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, PKCS_RSA_PRIVATE_KEY,
|
|
452
|
+
keyInfo->PrivateKey.pbData, keyInfo->PrivateKey.cbData,
|
|
453
|
+
CRYPT_DECODE_ALLOC_FLAG, 0, &key, &outLength))
|
|
454
|
+
{
|
|
455
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
456
|
+
"IceSSL: error decoding key:\n" + lastErrorToString());
|
|
457
|
+
}
|
|
458
|
+
LocalFree(keyInfo);
|
|
459
|
+
keyInfo = 0;
|
|
460
|
+
|
|
461
|
+
//
|
|
462
|
+
// Import the private key
|
|
463
|
+
//
|
|
464
|
+
if(!CryptImportKey(cryptProv, key, outLength, 0, 0, &hKey))
|
|
465
|
+
{
|
|
466
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
467
|
+
"IceSSL: error importing key:\n" + lastErrorToString());
|
|
468
|
+
}
|
|
469
|
+
LocalFree(key);
|
|
470
|
+
key = 0;
|
|
471
|
+
|
|
472
|
+
CryptDestroyKey(hKey);
|
|
473
|
+
hKey = 0;
|
|
474
|
+
|
|
475
|
+
//
|
|
476
|
+
// Create a new memory store to place the certificate
|
|
477
|
+
//
|
|
478
|
+
store = CertOpenStore(CERT_STORE_PROV_MEMORY, 0, 0, 0, 0);
|
|
479
|
+
if(!store)
|
|
480
|
+
{
|
|
481
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
482
|
+
"IceSSL: error creating certificate store:\n" + lastErrorToString());
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
addCertificateToStore(certFile, store, &cert);
|
|
486
|
+
|
|
487
|
+
//
|
|
488
|
+
// Associate key & certificate
|
|
489
|
+
//
|
|
490
|
+
CRYPT_KEY_PROV_INFO keyProvInfo;
|
|
491
|
+
memset(&keyProvInfo, 0, sizeof(keyProvInfo));
|
|
492
|
+
keyProvInfo.pwszContainerName = const_cast<wchar_t*>(keySetName.c_str());
|
|
493
|
+
keyProvInfo.pwszProvName = const_cast<wchar_t*>(MS_DEF_PROV_W);
|
|
494
|
+
keyProvInfo.dwProvType = PROV_RSA_FULL;
|
|
495
|
+
keyProvInfo.dwKeySpec = AT_KEYEXCHANGE;
|
|
496
|
+
|
|
497
|
+
if(!CertSetCertificateContextProperty(cert, CERT_KEY_PROV_INFO_PROP_ID, 0, &keyProvInfo))
|
|
498
|
+
{
|
|
499
|
+
throw PluginInitializationException(__FILE__, __LINE__,
|
|
500
|
+
"IceSSL: error seting certificate property:\n" + lastErrorToString());
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
_certs.push_back(cert);
|
|
504
|
+
_stores.push_back(store);
|
|
505
|
+
}
|
|
506
|
+
catch(...)
|
|
507
|
+
{
|
|
508
|
+
if(keyInfo)
|
|
509
|
+
{
|
|
510
|
+
LocalFree(keyInfo);
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
if(key)
|
|
514
|
+
{
|
|
515
|
+
LocalFree(key);
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
if(hKey)
|
|
519
|
+
{
|
|
520
|
+
CryptDestroyKey(hKey);
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
if(cert)
|
|
524
|
+
{
|
|
525
|
+
CertFreeCertificateContext(cert);
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
if(store)
|
|
529
|
+
{
|
|
530
|
+
CertCloseStore(store, 0);
|
|
531
|
+
}
|
|
532
|
+
throw;
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
_allCerts.insert(_allCerts.end(), _certs.begin(), _certs.end());
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
const string findPrefix = prefix + "FindCert.";
|
|
540
|
+
map<string, string> certProps = properties->getPropertiesForPrefix(findPrefix);
|
|
541
|
+
if(!certProps.empty())
|
|
542
|
+
{
|
|
543
|
+
for(map<string, string>::const_iterator i = certProps.begin(); i != certProps.end(); ++i)
|
|
544
|
+
{
|
|
545
|
+
const string name = i->first;
|
|
546
|
+
const string val = i->second;
|
|
547
|
+
|
|
548
|
+
if(!val.empty())
|
|
549
|
+
{
|
|
550
|
+
string storeSpec = name.substr(findPrefix.size());
|
|
551
|
+
vector<PCCERT_CONTEXT> certs = findCertificates(name, storeSpec, val, _stores);
|
|
552
|
+
_allCerts.insert(_allCerts.end(), certs.begin(), certs.end());
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
if(_allCerts.empty())
|
|
557
|
+
{
|
|
558
|
+
throw PluginInitializationException(__FILE__, __LINE__, "IceSSL: no certificates found");
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
_initialized = true;
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
string
|
|
565
|
+
SChannelEngine::getCipherName(ALG_ID cipher) const
|
|
566
|
+
{
|
|
567
|
+
switch(cipher)
|
|
568
|
+
{
|
|
569
|
+
case CALG_RSA_KEYX:
|
|
570
|
+
return "RSA_KEYX";
|
|
571
|
+
case CALG_RSA_SIGN:
|
|
572
|
+
return "RSA_SIGN";
|
|
573
|
+
case CALG_DSS_SIGN:
|
|
574
|
+
return "DSS_SIGN";
|
|
575
|
+
case CALG_KEA_KEYX:
|
|
576
|
+
return "KEA_KEYX";
|
|
577
|
+
case CALG_DH_EPHEM:
|
|
578
|
+
return "DH_EPHEM";
|
|
579
|
+
case CALG_ECDH:
|
|
580
|
+
return "ECDH";
|
|
581
|
+
case CALG_ECDSA:
|
|
582
|
+
return "ECDSA";
|
|
583
|
+
case CALG_3DES:
|
|
584
|
+
return "3DES";
|
|
585
|
+
case CALG_AES_128:
|
|
586
|
+
return "AES_128";
|
|
587
|
+
case CALG_AES_256:
|
|
588
|
+
return "AES_256";
|
|
589
|
+
case CALG_DES:
|
|
590
|
+
return "DES";
|
|
591
|
+
case CALG_RC2:
|
|
592
|
+
return "RC2";
|
|
593
|
+
case CALG_RC4:
|
|
594
|
+
return "RC4";
|
|
595
|
+
default:
|
|
596
|
+
return "Unknown";
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
bool
|
|
601
|
+
SChannelEngine::initialized() const
|
|
602
|
+
{
|
|
603
|
+
Mutex::Lock lock(_mutex);
|
|
604
|
+
return _initialized;
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
CredHandle
|
|
608
|
+
SChannelEngine::newCredentialsHandle(bool incoming)
|
|
609
|
+
{
|
|
610
|
+
SCHANNEL_CRED cred;
|
|
611
|
+
memset(&cred, 0, sizeof(cred));
|
|
612
|
+
cred.dwVersion = SCHANNEL_CRED_VERSION;
|
|
613
|
+
|
|
614
|
+
if(!_allCerts.empty())
|
|
615
|
+
{
|
|
616
|
+
cred.cCreds = static_cast<DWORD>(_allCerts.size());
|
|
617
|
+
cred.paCred = &_allCerts[0];
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
cred.grbitEnabledProtocols = _protocols;
|
|
621
|
+
|
|
622
|
+
if(incoming)
|
|
623
|
+
{
|
|
624
|
+
//
|
|
625
|
+
// Don't set SCH_SEND_ROOT_CERT as it seems to cause problems with
|
|
626
|
+
// Java certificate validation and SChannel doesn't seems to send
|
|
627
|
+
// the root certificate either way.
|
|
628
|
+
//
|
|
629
|
+
cred.dwFlags = SCH_CRED_NO_SYSTEM_MAPPER;
|
|
630
|
+
if(_rootStore)
|
|
631
|
+
{
|
|
632
|
+
cred.hRootStore = _rootStore;
|
|
633
|
+
}
|
|
634
|
+
}
|
|
635
|
+
else
|
|
636
|
+
{
|
|
637
|
+
cred.dwFlags = SCH_CRED_MANUAL_CRED_VALIDATION | SCH_CRED_NO_SERVERNAME_CHECK | SCH_CRED_NO_DEFAULT_CREDS;
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
if(!_ciphers.empty())
|
|
641
|
+
{
|
|
642
|
+
cred.cSupportedAlgs = static_cast<DWORD>(_ciphers.size());
|
|
643
|
+
cred.palgSupportedAlgs = &_ciphers[0];
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
CredHandle credHandle;
|
|
647
|
+
memset(&credHandle, 0, sizeof(credHandle));
|
|
648
|
+
|
|
649
|
+
SECURITY_STATUS err =
|
|
650
|
+
AcquireCredentialsHandle(0, const_cast<char*>(UNISP_NAME), (incoming ? SECPKG_CRED_INBOUND : SECPKG_CRED_OUTBOUND), 0, &cred, 0,
|
|
651
|
+
0, &credHandle, 0);
|
|
652
|
+
|
|
653
|
+
if(err != SEC_E_OK)
|
|
654
|
+
{
|
|
655
|
+
throw SecurityException(__FILE__, __LINE__,
|
|
656
|
+
"IceSSL: failed to acquire credentials handle:\n" + lastErrorToString());
|
|
657
|
+
}
|
|
658
|
+
return credHandle;
|
|
659
|
+
}
|
|
660
|
+
|
|
661
|
+
HCERTCHAINENGINE
|
|
662
|
+
SChannelEngine::chainEngine() const
|
|
663
|
+
{
|
|
664
|
+
return _chainEngine;
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
void
|
|
668
|
+
SChannelEngine::parseCiphers(const std::string& ciphers)
|
|
669
|
+
{
|
|
670
|
+
vector<string> tokens;
|
|
671
|
+
splitString(ciphers, " \t", tokens);
|
|
672
|
+
for(vector<string>::const_iterator i = tokens.begin(); i != tokens.end(); ++i)
|
|
673
|
+
{
|
|
674
|
+
ALG_ID id = algorithmId(*i);
|
|
675
|
+
if(id)
|
|
676
|
+
{
|
|
677
|
+
_ciphers.push_back(id);
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
|
|
682
|
+
void
|
|
683
|
+
SChannelEngine::destroy()
|
|
684
|
+
{
|
|
685
|
+
if(_chainEngine && _chainEngine != HCCE_CURRENT_USER && _chainEngine != HCCE_LOCAL_MACHINE)
|
|
686
|
+
{
|
|
687
|
+
CertFreeCertificateChainEngine(_chainEngine);
|
|
688
|
+
}
|
|
689
|
+
|
|
690
|
+
if(_rootStore)
|
|
691
|
+
{
|
|
692
|
+
CertCloseStore(_rootStore, 0);
|
|
693
|
+
}
|
|
694
|
+
|
|
695
|
+
for(vector<PCCERT_CONTEXT>::const_iterator i = _allCerts.begin(); i != _allCerts.end(); ++i)
|
|
696
|
+
{
|
|
697
|
+
PCCERT_CONTEXT cert = *i;
|
|
698
|
+
|
|
699
|
+
//
|
|
700
|
+
// Only remove the keysets we create.
|
|
701
|
+
//
|
|
702
|
+
if(find(_certs.begin(), _certs.end(), cert) != _certs.end())
|
|
703
|
+
{
|
|
704
|
+
//
|
|
705
|
+
// Retrieve the certificate CERT_KEY_PROV_INFO_PROP_ID property, we use the CRYPT_KEY_PROV_INFO
|
|
706
|
+
// data to then remove the key set associated with the certificate.
|
|
707
|
+
//
|
|
708
|
+
DWORD length = 0;
|
|
709
|
+
if(CertGetCertificateContextProperty(cert, CERT_KEY_PROV_INFO_PROP_ID, 0, &length))
|
|
710
|
+
{
|
|
711
|
+
vector<char> buf(length);
|
|
712
|
+
if(CertGetCertificateContextProperty(cert, CERT_KEY_PROV_INFO_PROP_ID, &buf[0], &length))
|
|
713
|
+
{
|
|
714
|
+
CRYPT_KEY_PROV_INFO* keyProvInfo = reinterpret_cast<CRYPT_KEY_PROV_INFO*>(&buf[0]);
|
|
715
|
+
HCRYPTPROV cryptProv = 0;
|
|
716
|
+
CryptAcquireContextW(&cryptProv, keyProvInfo->pwszContainerName, keyProvInfo->pwszProvName,
|
|
717
|
+
keyProvInfo->dwProvType, CRYPT_DELETEKEYSET);
|
|
718
|
+
}
|
|
719
|
+
CertFreeCertificateContext(cert);
|
|
720
|
+
}
|
|
721
|
+
}
|
|
722
|
+
}
|
|
723
|
+
|
|
724
|
+
for(vector<HCERTSTORE>::const_iterator i = _stores.begin(); i != _stores.end(); ++i)
|
|
725
|
+
{
|
|
726
|
+
CertCloseStore(*i, 0);
|
|
727
|
+
}
|
|
728
|
+
}
|
|
729
|
+
#endif
|