zeroc-ice 3.7.9.1 → 3.8.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/dist/IceRuby/Communicator.cpp +575 -0
- data/dist/IceRuby/Communicator.h +19 -0
- data/dist/IceRuby/Config.h +77 -0
- data/dist/IceRuby/Connection.cpp +428 -0
- data/dist/IceRuby/Connection.h +20 -0
- data/dist/IceRuby/DefaultSliceLoader.cpp +45 -0
- data/dist/IceRuby/DefaultSliceLoader.h +25 -0
- data/dist/IceRuby/Endpoint.cpp +342 -0
- data/dist/IceRuby/Endpoint.h +18 -0
- data/dist/IceRuby/ImplicitContext.cpp +143 -0
- data/dist/IceRuby/ImplicitContext.h +16 -0
- data/dist/IceRuby/Init.cpp +36 -0
- data/dist/IceRuby/Logger.cpp +146 -0
- data/dist/IceRuby/Logger.h +19 -0
- data/dist/IceRuby/Operation.cpp +623 -0
- data/dist/IceRuby/Operation.h +28 -0
- data/dist/IceRuby/Properties.cpp +413 -0
- data/dist/IceRuby/Properties.h +16 -0
- data/dist/IceRuby/Proxy.cpp +926 -0
- data/dist/IceRuby/Proxy.h +21 -0
- data/dist/IceRuby/RubySliceLoader.cpp +39 -0
- data/dist/IceRuby/RubySliceLoader.h +27 -0
- data/dist/IceRuby/Slice.cpp +199 -0
- data/dist/IceRuby/Slice.h +13 -0
- data/dist/IceRuby/Types.cpp +3133 -0
- data/dist/IceRuby/Types.h +533 -0
- data/dist/IceRuby/Util.cpp +553 -0
- data/dist/IceRuby/Util.h +485 -0
- data/dist/ice/cpp/include/Ice/AsyncResponseHandler.h +85 -0
- data/dist/ice/cpp/include/Ice/BatchRequest.h +39 -0
- data/dist/ice/cpp/include/Ice/BatchRequestQueueF.h +14 -0
- data/dist/ice/cpp/include/Ice/Buffer.h +159 -0
- data/dist/ice/cpp/include/Ice/Communicator.h +411 -0
- data/dist/ice/cpp/include/Ice/CommunicatorF.h +16 -0
- data/dist/ice/cpp/include/Ice/Config.h +60 -0
- data/dist/ice/cpp/include/Ice/Connection.h +410 -0
- data/dist/ice/cpp/include/Ice/ConnectionF.h +36 -0
- data/dist/ice/cpp/include/Ice/ConnectionIF.h +16 -0
- data/dist/ice/cpp/include/Ice/CtrlCHandler.h +56 -0
- data/dist/ice/cpp/include/Ice/Current.h +60 -0
- data/dist/ice/cpp/include/Ice/DefaultSliceLoader.h +160 -0
- data/dist/ice/cpp/include/Ice/Demangle.h +17 -0
- data/dist/ice/cpp/include/Ice/Endpoint.h +298 -0
- data/dist/ice/cpp/include/Ice/EndpointF.h +44 -0
- data/dist/ice/cpp/include/Ice/EndpointSelectionType.h +21 -0
- data/dist/ice/cpp/include/Ice/Exception.h +56 -0
- data/dist/ice/cpp/include/Ice/FacetMap.h +16 -0
- data/dist/ice/cpp/include/Ice/Format.h +22 -0
- data/dist/ice/cpp/include/Ice/Ice.h +60 -0
- data/dist/ice/cpp/include/Ice/IconvStringConverter.h +216 -0
- data/dist/ice/cpp/include/Ice/ImplicitContext.h +76 -0
- data/dist/ice/cpp/include/Ice/IncomingRequest.h +75 -0
- data/dist/ice/cpp/include/Ice/Initialize.h +143 -0
- data/dist/ice/cpp/include/Ice/InputStream.h +942 -0
- data/dist/ice/cpp/include/Ice/InstanceF.h +14 -0
- data/dist/ice/cpp/include/Ice/Instrumentation.h +319 -0
- data/dist/ice/cpp/include/Ice/LocalException.h +58 -0
- data/dist/ice/cpp/include/Ice/LocalExceptions.h +870 -0
- data/dist/ice/cpp/include/Ice/Logger.h +62 -0
- data/dist/ice/cpp/include/Ice/LoggerUtil.h +162 -0
- data/dist/ice/cpp/include/Ice/MarshaledResult.h +50 -0
- data/dist/ice/cpp/include/Ice/NativePropertiesAdmin.h +54 -0
- data/dist/ice/cpp/include/Ice/Object.h +168 -0
- data/dist/ice/cpp/include/Ice/ObjectAdapter.h +324 -0
- data/dist/ice/cpp/include/Ice/ObjectAdapterF.h +16 -0
- data/dist/ice/cpp/include/Ice/ObjectF.h +16 -0
- data/dist/ice/cpp/include/Ice/ObserverHelper.h +164 -0
- data/dist/ice/cpp/include/Ice/OutgoingAsync.h +512 -0
- data/dist/ice/cpp/include/Ice/OutgoingResponse.h +129 -0
- data/dist/ice/cpp/include/Ice/OutputStream.h +872 -0
- data/dist/ice/cpp/include/Ice/Plugin.h +73 -0
- data/dist/ice/cpp/include/Ice/PluginFactory.h +77 -0
- data/dist/ice/cpp/include/Ice/PopDisableWarnings.h +16 -0
- data/dist/ice/cpp/include/Ice/Properties.h +307 -0
- data/dist/ice/cpp/include/Ice/PropertiesF.h +19 -0
- data/dist/ice/cpp/include/Ice/Proxy.h +742 -0
- data/dist/ice/cpp/include/Ice/ProxyF.h +11 -0
- data/dist/ice/cpp/include/Ice/ProxyFunctions.h +209 -0
- data/dist/ice/cpp/include/Ice/PushDisableWarnings.h +29 -0
- data/dist/ice/cpp/include/Ice/ReferenceF.h +14 -0
- data/dist/ice/cpp/include/Ice/RequestHandlerF.h +20 -0
- data/dist/ice/cpp/include/Ice/SSL/ClientAuthenticationOptions.h +268 -0
- data/dist/ice/cpp/include/Ice/SSL/Config.h +54 -0
- data/dist/ice/cpp/include/Ice/SSL/ConnectionInfo.h +107 -0
- data/dist/ice/cpp/include/Ice/SSL/ConnectionInfoF.h +39 -0
- data/dist/ice/cpp/include/Ice/SSL/EndpointInfo.h +40 -0
- data/dist/ice/cpp/include/Ice/SSL/SSLException.h +32 -0
- data/dist/ice/cpp/include/Ice/SSL/ServerAuthenticationOptions.h +278 -0
- data/dist/ice/cpp/include/Ice/ServantLocator.h +51 -0
- data/dist/ice/cpp/include/Ice/Service.h +219 -0
- data/dist/ice/cpp/include/Ice/SliceLoader.h +67 -0
- data/dist/ice/cpp/include/Ice/SlicedData.h +125 -0
- data/dist/ice/cpp/include/Ice/SlicedDataF.h +30 -0
- data/dist/ice/cpp/include/Ice/StreamHelpers.h +652 -0
- data/dist/ice/cpp/include/Ice/StreamableTraits.h +291 -0
- data/dist/ice/cpp/include/Ice/StringConverter.h +167 -0
- data/dist/ice/cpp/include/Ice/StringUtil.h +114 -0
- data/dist/ice/cpp/include/Ice/TimerTask.h +24 -0
- data/dist/ice/cpp/include/Ice/TupleCompare.h +103 -0
- data/dist/ice/cpp/include/Ice/UUID.h +16 -0
- data/dist/ice/cpp/include/Ice/UserException.h +46 -0
- data/dist/ice/cpp/include/Ice/UserExceptionFactory.h +15 -0
- data/dist/ice/cpp/include/Ice/Value.h +127 -0
- data/dist/ice/cpp/include/Ice/ValueF.h +16 -0
- data/dist/ice/cpp/include/IceDiscovery/IceDiscovery.h +28 -0
- data/dist/ice/cpp/include/IceLocatorDiscovery/IceLocatorDiscovery.h +28 -0
- data/dist/ice/cpp/include/generated/Ice/BuiltinSequences.h +70 -0
- data/dist/ice/cpp/include/generated/Ice/Context.h +40 -0
- data/dist/ice/cpp/include/generated/Ice/EndpointTypes.h +74 -0
- data/dist/ice/cpp/include/generated/Ice/Identity.h +108 -0
- data/dist/ice/cpp/include/generated/Ice/Locator.h +542 -0
- data/dist/ice/cpp/include/generated/Ice/LocatorRegistry.h +443 -0
- data/dist/ice/cpp/include/generated/Ice/Metrics.h +1103 -0
- data/dist/ice/cpp/include/generated/Ice/OperationMode.h +73 -0
- data/dist/ice/cpp/include/generated/Ice/Process.h +245 -0
- data/dist/ice/cpp/include/generated/Ice/PropertiesAdmin.h +314 -0
- data/dist/ice/cpp/include/generated/Ice/PropertyDict.h +39 -0
- data/dist/ice/cpp/include/generated/Ice/RemoteLogger.h +724 -0
- data/dist/ice/cpp/include/generated/Ice/ReplyStatus.h +94 -0
- data/dist/ice/cpp/include/generated/Ice/Router.h +496 -0
- data/dist/ice/cpp/include/generated/Ice/SliceChecksumDict.h +37 -0
- data/dist/ice/cpp/include/generated/Ice/Version.h +112 -0
- data/dist/ice/cpp/include/generated/IceDiscovery/Lookup.h +498 -0
- data/dist/ice/cpp/include/generated/IceLocatorDiscovery/Lookup.h +387 -0
- data/dist/ice/cpp/src/Ice/Acceptor.h +41 -0
- data/dist/ice/cpp/src/Ice/AcceptorF.h +17 -0
- data/dist/ice/cpp/src/Ice/AddDefaultPluginFactories.h +16 -0
- data/dist/ice/cpp/src/Ice/AddDefaultPluginFactories_all.cpp +43 -0
- data/dist/ice/cpp/src/Ice/AddDefaultPluginFactories_min.cpp +17 -0
- data/dist/ice/cpp/src/Ice/ArgVector.cpp +58 -0
- data/dist/ice/cpp/src/Ice/ArgVector.h +30 -0
- data/dist/ice/cpp/src/Ice/Base64.cpp +263 -0
- data/dist/ice/cpp/src/Ice/Base64.h +26 -0
- data/dist/ice/cpp/src/Ice/BatchRequestQueue.cpp +199 -0
- data/dist/ice/cpp/src/Ice/BatchRequestQueue.h +49 -0
- data/dist/ice/cpp/src/Ice/Buffer.cpp +187 -0
- data/dist/ice/cpp/src/Ice/CheckIdentity.h +21 -0
- data/dist/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +373 -0
- data/dist/ice/cpp/src/Ice/CollocatedRequestHandler.h +65 -0
- data/dist/ice/cpp/src/Ice/Communicator.cpp +399 -0
- data/dist/ice/cpp/src/Ice/CommunicatorFlushBatchAsync.cpp +140 -0
- data/dist/ice/cpp/src/Ice/CommunicatorFlushBatchAsync.h +39 -0
- data/dist/ice/cpp/src/Ice/ConnectRequestHandler.cpp +227 -0
- data/dist/ice/cpp/src/Ice/ConnectRequestHandler.h +51 -0
- data/dist/ice/cpp/src/Ice/ConnectRequestHandlerF.h +14 -0
- data/dist/ice/cpp/src/Ice/Connection.cpp +44 -0
- data/dist/ice/cpp/src/Ice/ConnectionFactory.cpp +1758 -0
- data/dist/ice/cpp/src/Ice/ConnectionFactory.h +264 -0
- data/dist/ice/cpp/src/Ice/ConnectionFactoryF.h +17 -0
- data/dist/ice/cpp/src/Ice/ConnectionI.cpp +3563 -0
- data/dist/ice/cpp/src/Ice/ConnectionI.h +429 -0
- data/dist/ice/cpp/src/Ice/ConnectionOptions.h +22 -0
- data/dist/ice/cpp/src/Ice/Connector.h +38 -0
- data/dist/ice/cpp/src/Ice/ConnectorF.h +14 -0
- data/dist/ice/cpp/src/Ice/ConsoleUtil.cpp +136 -0
- data/dist/ice/cpp/src/Ice/ConsoleUtil.h +79 -0
- data/dist/ice/cpp/src/Ice/CtrlCHandler.cpp +189 -0
- data/dist/ice/cpp/src/Ice/Current.cpp +29 -0
- data/dist/ice/cpp/src/Ice/DLLMain.cpp +40 -0
- data/dist/ice/cpp/src/Ice/DefaultSliceLoader.cpp +39 -0
- data/dist/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +81 -0
- data/dist/ice/cpp/src/Ice/DefaultsAndOverrides.h +38 -0
- data/dist/ice/cpp/src/Ice/DefaultsAndOverridesF.h +14 -0
- data/dist/ice/cpp/src/Ice/Demangle.cpp +25 -0
- data/dist/ice/cpp/src/Ice/DisableWarnings.h +31 -0
- data/dist/ice/cpp/src/Ice/DynamicLibrary.cpp +216 -0
- data/dist/ice/cpp/src/Ice/DynamicLibrary.h +91 -0
- data/dist/ice/cpp/src/Ice/Endian.h +40 -0
- data/dist/ice/cpp/src/Ice/EndpointFactory.cpp +165 -0
- data/dist/ice/cpp/src/Ice/EndpointFactory.h +96 -0
- data/dist/ice/cpp/src/Ice/EndpointFactoryF.h +14 -0
- data/dist/ice/cpp/src/Ice/EndpointFactoryManager.cpp +180 -0
- data/dist/ice/cpp/src/Ice/EndpointFactoryManager.h +42 -0
- data/dist/ice/cpp/src/Ice/EndpointFactoryManagerF.h +14 -0
- data/dist/ice/cpp/src/Ice/EndpointI.cpp +128 -0
- data/dist/ice/cpp/src/Ice/EndpointI.h +150 -0
- data/dist/ice/cpp/src/Ice/EndpointIF.h +21 -0
- data/dist/ice/cpp/src/Ice/EventHandler.cpp +9 -0
- data/dist/ice/cpp/src/Ice/EventHandler.h +71 -0
- data/dist/ice/cpp/src/Ice/EventHandlerF.h +14 -0
- data/dist/ice/cpp/src/Ice/Exception.cpp +5 -0
- data/dist/ice/cpp/src/Ice/FileUtil.cpp +476 -0
- data/dist/ice/cpp/src/Ice/FileUtil.h +152 -0
- data/dist/ice/cpp/src/Ice/FixedRequestHandler.cpp +34 -0
- data/dist/ice/cpp/src/Ice/FixedRequestHandler.h +29 -0
- data/dist/ice/cpp/src/Ice/HashUtil.h +67 -0
- data/dist/ice/cpp/src/Ice/HttpParser.cpp +684 -0
- data/dist/ice/cpp/src/Ice/HttpParser.h +112 -0
- data/dist/ice/cpp/src/Ice/IPEndpointI.cpp +593 -0
- data/dist/ice/cpp/src/Ice/IPEndpointI.h +106 -0
- data/dist/ice/cpp/src/Ice/IPEndpointIF.h +17 -0
- data/dist/ice/cpp/src/Ice/IdleTimeoutTransceiverDecorator.cpp +172 -0
- data/dist/ice/cpp/src/Ice/IdleTimeoutTransceiverDecorator.h +89 -0
- data/dist/ice/cpp/src/Ice/ImplicitContext.cpp +109 -0
- data/dist/ice/cpp/src/Ice/IncomingRequest.cpp +66 -0
- data/dist/ice/cpp/src/Ice/Initialize.cpp +160 -0
- data/dist/ice/cpp/src/Ice/InputStream.cpp +2206 -0
- data/dist/ice/cpp/src/Ice/Instance.cpp +1956 -0
- data/dist/ice/cpp/src/Ice/Instance.h +225 -0
- data/dist/ice/cpp/src/Ice/InstrumentationI.cpp +959 -0
- data/dist/ice/cpp/src/Ice/InstrumentationI.h +235 -0
- data/dist/ice/cpp/src/Ice/LocalException.cpp +518 -0
- data/dist/ice/cpp/src/Ice/LocalExceptions.cpp +577 -0
- data/dist/ice/cpp/src/Ice/LocatorInfo.cpp +851 -0
- data/dist/ice/cpp/src/Ice/LocatorInfo.h +176 -0
- data/dist/ice/cpp/src/Ice/LocatorInfoF.h +20 -0
- data/dist/ice/cpp/src/Ice/LoggerAdminI.cpp +774 -0
- data/dist/ice/cpp/src/Ice/LoggerAdminI.h +31 -0
- data/dist/ice/cpp/src/Ice/LoggerI.cpp +234 -0
- data/dist/ice/cpp/src/Ice/LoggerI.h +47 -0
- data/dist/ice/cpp/src/Ice/LoggerMiddleware.cpp +176 -0
- data/dist/ice/cpp/src/Ice/LoggerMiddleware.h +42 -0
- data/dist/ice/cpp/src/Ice/LoggerUtil.cpp +76 -0
- data/dist/ice/cpp/src/Ice/MarshaledResult.cpp +20 -0
- data/dist/ice/cpp/src/Ice/MetricsAdminI.cpp +608 -0
- data/dist/ice/cpp/src/Ice/MetricsAdminI.h +600 -0
- data/dist/ice/cpp/src/Ice/MetricsFunctional.h +92 -0
- data/dist/ice/cpp/src/Ice/MetricsObserverI.h +587 -0
- data/dist/ice/cpp/src/Ice/NativePropertiesAdmin.cpp +185 -0
- data/dist/ice/cpp/src/Ice/Network.cpp +1927 -0
- data/dist/ice/cpp/src/Ice/Network.h +265 -0
- data/dist/ice/cpp/src/Ice/NetworkF.h +11 -0
- data/dist/ice/cpp/src/Ice/NetworkProxy.cpp +306 -0
- data/dist/ice/cpp/src/Ice/NetworkProxy.h +67 -0
- data/dist/ice/cpp/src/Ice/NetworkProxyF.h +14 -0
- data/dist/ice/cpp/src/Ice/OSLogLoggerI.cpp +55 -0
- data/dist/ice/cpp/src/Ice/OSLogLoggerI.h +35 -0
- data/dist/ice/cpp/src/Ice/Object.cpp +249 -0
- data/dist/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +348 -0
- data/dist/ice/cpp/src/Ice/ObjectAdapterFactory.h +53 -0
- data/dist/ice/cpp/src/Ice/ObjectAdapterFactoryF.h +14 -0
- data/dist/ice/cpp/src/Ice/ObjectAdapterI.cpp +1383 -0
- data/dist/ice/cpp/src/Ice/ObjectAdapterI.h +163 -0
- data/dist/ice/cpp/src/Ice/ObserverHelper.cpp +75 -0
- data/dist/ice/cpp/src/Ice/ObserverMiddleware.cpp +96 -0
- data/dist/ice/cpp/src/Ice/ObserverMiddleware.h +25 -0
- data/dist/ice/cpp/src/Ice/OpaqueEndpointI.cpp +368 -0
- data/dist/ice/cpp/src/Ice/OpaqueEndpointI.h +66 -0
- data/dist/ice/cpp/src/Ice/Options.cpp +980 -0
- data/dist/ice/cpp/src/Ice/Options.h +119 -0
- data/dist/ice/cpp/src/Ice/OutgoingAsync.cpp +1106 -0
- data/dist/ice/cpp/src/Ice/OutgoingResponse.cpp +276 -0
- data/dist/ice/cpp/src/Ice/OutputStream.cpp +1454 -0
- data/dist/ice/cpp/src/Ice/OutputUtil.cpp +344 -0
- data/dist/ice/cpp/src/Ice/OutputUtil.h +173 -0
- data/dist/ice/cpp/src/Ice/PluginManagerI.cpp +344 -0
- data/dist/ice/cpp/src/Ice/PluginManagerI.h +54 -0
- data/dist/ice/cpp/src/Ice/Properties.cpp +931 -0
- data/dist/ice/cpp/src/Ice/PropertyNames.cpp +606 -0
- data/dist/ice/cpp/src/Ice/PropertyNames.h +63 -0
- data/dist/ice/cpp/src/Ice/PropertyUtil.cpp +103 -0
- data/dist/ice/cpp/src/Ice/PropertyUtil.h +31 -0
- data/dist/ice/cpp/src/Ice/Protocol.cpp +159 -0
- data/dist/ice/cpp/src/Ice/Protocol.h +116 -0
- data/dist/ice/cpp/src/Ice/ProtocolInstance.cpp +186 -0
- data/dist/ice/cpp/src/Ice/ProtocolInstance.h +74 -0
- data/dist/ice/cpp/src/Ice/ProtocolInstanceF.h +14 -0
- data/dist/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +29 -0
- data/dist/ice/cpp/src/Ice/ProtocolPluginFacade.h +35 -0
- data/dist/ice/cpp/src/Ice/Proxy.cpp +541 -0
- data/dist/ice/cpp/src/Ice/ProxyAsync.cpp +684 -0
- data/dist/ice/cpp/src/Ice/ProxyFunctions.cpp +90 -0
- data/dist/ice/cpp/src/Ice/PushDisableDeprecatedWarnings.h +15 -0
- data/dist/ice/cpp/src/Ice/Random.cpp +29 -0
- data/dist/ice/cpp/src/Ice/Random.h +23 -0
- data/dist/ice/cpp/src/Ice/Reference.cpp +1584 -0
- data/dist/ice/cpp/src/Ice/Reference.h +339 -0
- data/dist/ice/cpp/src/Ice/ReferenceFactory.cpp +830 -0
- data/dist/ice/cpp/src/Ice/ReferenceFactory.h +58 -0
- data/dist/ice/cpp/src/Ice/ReferenceFactoryF.h +14 -0
- data/dist/ice/cpp/src/Ice/RequestHandler.cpp +28 -0
- data/dist/ice/cpp/src/Ice/RequestHandler.h +53 -0
- data/dist/ice/cpp/src/Ice/RequestHandlerCache.cpp +76 -0
- data/dist/ice/cpp/src/Ice/RequestHandlerCache.h +33 -0
- data/dist/ice/cpp/src/Ice/ResourceConfig.h +27 -0
- data/dist/ice/cpp/src/Ice/RetryQueue.cpp +151 -0
- data/dist/ice/cpp/src/Ice/RetryQueue.h +59 -0
- data/dist/ice/cpp/src/Ice/RetryQueueF.h +14 -0
- data/dist/ice/cpp/src/Ice/RouterInfo.cpp +275 -0
- data/dist/ice/cpp/src/Ice/RouterInfo.h +95 -0
- data/dist/ice/cpp/src/Ice/RouterInfoF.h +17 -0
- data/dist/ice/cpp/src/Ice/SHA1.cpp +195 -0
- data/dist/ice/cpp/src/Ice/SHA1.h +35 -0
- data/dist/ice/cpp/src/Ice/SSL/DistinguishedName.cpp +89 -0
- data/dist/ice/cpp/src/Ice/SSL/DistinguishedName.h +87 -0
- data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngine.cpp +513 -0
- data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngine.h +40 -0
- data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngineF.h +13 -0
- data/dist/ice/cpp/src/Ice/SSL/OpenSSLTransceiverI.cpp +635 -0
- data/dist/ice/cpp/src/Ice/SSL/OpenSSLTransceiverI.h +80 -0
- data/dist/ice/cpp/src/Ice/SSL/RFC2253.cpp +487 -0
- data/dist/ice/cpp/src/Ice/SSL/RFC2253.h +58 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLAcceptorI.cpp +124 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLAcceptorI.h +52 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLConnectorI.cpp +92 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLConnectorI.h +38 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLEndpointI.cpp +377 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLEndpointI.h +84 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLEngine.cpp +115 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLEngine.h +72 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLEngineF.h +14 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLException.cpp +18 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLInstance.cpp +27 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLInstance.h +26 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLInstanceF.h +19 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLUtil.cpp +654 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLUtil.h +104 -0
- data/dist/ice/cpp/src/Ice/SSL/SchannelEngine.cpp +1437 -0
- data/dist/ice/cpp/src/Ice/SSL/SchannelEngine.h +58 -0
- data/dist/ice/cpp/src/Ice/SSL/SchannelEngineF.h +18 -0
- data/dist/ice/cpp/src/Ice/SSL/SchannelTransceiverI.cpp +1085 -0
- data/dist/ice/cpp/src/Ice/SSL/SchannelTransceiverI.h +118 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngine.cpp +822 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngine.h +44 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngineF.h +18 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportTransceiverI.cpp +621 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportTransceiverI.h +91 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportUtil.cpp +1061 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportUtil.h +40 -0
- data/dist/ice/cpp/src/Ice/SSL/TrustManager.cpp +222 -0
- data/dist/ice/cpp/src/Ice/SSL/TrustManager.h +42 -0
- data/dist/ice/cpp/src/Ice/SSL/TrustManagerF.h +14 -0
- data/dist/ice/cpp/src/Ice/ScannerConfig.h +35 -0
- data/dist/ice/cpp/src/Ice/Selector.cpp +1270 -0
- data/dist/ice/cpp/src/Ice/Selector.h +235 -0
- data/dist/ice/cpp/src/Ice/ServantManager.cpp +547 -0
- data/dist/ice/cpp/src/Ice/ServantManager.h +66 -0
- data/dist/ice/cpp/src/Ice/ServantManagerF.h +14 -0
- data/dist/ice/cpp/src/Ice/Service.cpp +1790 -0
- data/dist/ice/cpp/src/Ice/SharedContext.h +33 -0
- data/dist/ice/cpp/src/Ice/SliceLoader.cpp +53 -0
- data/dist/ice/cpp/src/Ice/SlicedData.cpp +48 -0
- data/dist/ice/cpp/src/Ice/StreamSocket.cpp +472 -0
- data/dist/ice/cpp/src/Ice/StreamSocket.h +73 -0
- data/dist/ice/cpp/src/Ice/StringConverter.cpp +582 -0
- data/dist/ice/cpp/src/Ice/StringUtil.cpp +1137 -0
- data/dist/ice/cpp/src/Ice/SysLoggerI.cpp +160 -0
- data/dist/ice/cpp/src/Ice/SysLoggerI.h +34 -0
- data/dist/ice/cpp/src/Ice/SystemdJournalI.cpp +65 -0
- data/dist/ice/cpp/src/Ice/SystemdJournalI.h +33 -0
- data/dist/ice/cpp/src/Ice/TargetCompare.h +96 -0
- data/dist/ice/cpp/src/Ice/TcpAcceptor.cpp +213 -0
- data/dist/ice/cpp/src/Ice/TcpAcceptor.h +55 -0
- data/dist/ice/cpp/src/Ice/TcpConnector.cpp +128 -0
- data/dist/ice/cpp/src/Ice/TcpConnector.h +36 -0
- data/dist/ice/cpp/src/Ice/TcpEndpointI.cpp +411 -0
- data/dist/ice/cpp/src/Ice/TcpEndpointI.h +86 -0
- data/dist/ice/cpp/src/Ice/TcpTransceiver.cpp +147 -0
- data/dist/ice/cpp/src/Ice/TcpTransceiver.h +53 -0
- data/dist/ice/cpp/src/Ice/ThreadPool.cpp +1110 -0
- data/dist/ice/cpp/src/Ice/ThreadPool.h +305 -0
- data/dist/ice/cpp/src/Ice/ThreadPoolF.h +14 -0
- data/dist/ice/cpp/src/Ice/TimeUtil.cpp +47 -0
- data/dist/ice/cpp/src/Ice/TimeUtil.h +21 -0
- data/dist/ice/cpp/src/Ice/Timer.cpp +169 -0
- data/dist/ice/cpp/src/Ice/Timer.h +212 -0
- data/dist/ice/cpp/src/Ice/TraceLevels.cpp +20 -0
- data/dist/ice/cpp/src/Ice/TraceLevels.h +39 -0
- data/dist/ice/cpp/src/Ice/TraceLevelsF.h +14 -0
- data/dist/ice/cpp/src/Ice/TraceUtil.cpp +399 -0
- data/dist/ice/cpp/src/Ice/TraceUtil.h +41 -0
- data/dist/ice/cpp/src/Ice/Transceiver.cpp +14 -0
- data/dist/ice/cpp/src/Ice/Transceiver.h +52 -0
- data/dist/ice/cpp/src/Ice/TransceiverF.h +23 -0
- data/dist/ice/cpp/src/Ice/UUID.cpp +79 -0
- data/dist/ice/cpp/src/Ice/UdpConnector.cpp +131 -0
- data/dist/ice/cpp/src/Ice/UdpConnector.h +36 -0
- data/dist/ice/cpp/src/Ice/UdpEndpointI.cpp +480 -0
- data/dist/ice/cpp/src/Ice/UdpEndpointI.h +92 -0
- data/dist/ice/cpp/src/Ice/UdpTransceiver.cpp +786 -0
- data/dist/ice/cpp/src/Ice/UdpTransceiver.h +90 -0
- data/dist/ice/cpp/src/Ice/UndefSysMacros.h +37 -0
- data/dist/ice/cpp/src/Ice/UniqueRef.h +77 -0
- data/dist/ice/cpp/src/Ice/UserException.cpp +58 -0
- data/dist/ice/cpp/src/Ice/Value.cpp +145 -0
- data/dist/ice/cpp/src/Ice/WSAcceptor.cpp +87 -0
- data/dist/ice/cpp/src/Ice/WSAcceptor.h +46 -0
- data/dist/ice/cpp/src/Ice/WSConnector.cpp +87 -0
- data/dist/ice/cpp/src/Ice/WSConnector.h +36 -0
- data/dist/ice/cpp/src/Ice/WSEndpoint.cpp +455 -0
- data/dist/ice/cpp/src/Ice/WSEndpoint.h +82 -0
- data/dist/ice/cpp/src/Ice/WSTransceiver.cpp +1715 -0
- data/dist/ice/cpp/src/Ice/WSTransceiver.h +135 -0
- data/dist/ice/cpp/src/Ice/generated/BuiltinSequences.cpp +40 -0
- data/dist/ice/cpp/src/Ice/generated/Context.cpp +40 -0
- data/dist/ice/cpp/src/Ice/generated/EndpointTypes.cpp +40 -0
- data/dist/ice/cpp/src/Ice/generated/Identity.cpp +47 -0
- data/dist/ice/cpp/src/Ice/generated/Locator.cpp +752 -0
- data/dist/ice/cpp/src/Ice/generated/LocatorRegistry.cpp +577 -0
- data/dist/ice/cpp/src/Ice/generated/Metrics.cpp +1205 -0
- data/dist/ice/cpp/src/Ice/generated/OperationMode.cpp +56 -0
- data/dist/ice/cpp/src/Ice/generated/Process.cpp +330 -0
- data/dist/ice/cpp/src/Ice/generated/PropertiesAdmin.cpp +443 -0
- data/dist/ice/cpp/src/Ice/generated/PropertyDict.cpp +40 -0
- data/dist/ice/cpp/src/Ice/generated/RemoteLogger.cpp +851 -0
- data/dist/ice/cpp/src/Ice/generated/ReplyStatus.cpp +70 -0
- data/dist/ice/cpp/src/Ice/generated/Router.cpp +660 -0
- data/dist/ice/cpp/src/Ice/generated/SliceChecksumDict.cpp +39 -0
- data/dist/ice/cpp/src/Ice/generated/Version.cpp +54 -0
- data/dist/ice/cpp/src/IceDiscovery/LocatorI.cpp +202 -0
- data/dist/ice/cpp/src/IceDiscovery/LocatorI.h +68 -0
- data/dist/ice/cpp/src/IceDiscovery/LookupI.cpp +494 -0
- data/dist/ice/cpp/src/IceDiscovery/LookupI.h +168 -0
- data/dist/ice/cpp/src/IceDiscovery/PluginI.cpp +155 -0
- data/dist/ice/cpp/src/IceDiscovery/PluginI.h +31 -0
- data/dist/ice/cpp/src/IceDiscovery/generated/Lookup.cpp +638 -0
- data/dist/ice/cpp/src/IceLocatorDiscovery/Plugin.h +24 -0
- data/dist/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +822 -0
- data/dist/ice/cpp/src/IceLocatorDiscovery/generated/Lookup.cpp +468 -0
- data/dist/ice/cpp/src/Slice/DeprecationReporter.cpp +172 -0
- data/dist/ice/cpp/src/Slice/DeprecationReporter.h +14 -0
- data/dist/ice/cpp/src/Slice/DocCommentParser.cpp +736 -0
- data/dist/ice/cpp/src/Slice/DocCommentParser.h +61 -0
- data/dist/ice/cpp/src/Slice/FileTracker.cpp +96 -0
- data/dist/ice/cpp/src/Slice/FileTracker.h +44 -0
- data/dist/ice/cpp/src/Slice/Grammar.cpp +4125 -0
- data/dist/ice/cpp/src/Slice/Grammar.h +138 -0
- data/dist/ice/cpp/src/Slice/GrammarUtil.h +128 -0
- data/dist/ice/cpp/src/Slice/MetadataValidation.cpp +473 -0
- data/dist/ice/cpp/src/Slice/MetadataValidation.h +106 -0
- data/dist/ice/cpp/src/Slice/Parser.cpp +4906 -0
- data/dist/ice/cpp/src/Slice/Parser.h +1175 -0
- data/dist/ice/cpp/src/Slice/Preprocessor.cpp +295 -0
- data/dist/ice/cpp/src/Slice/Preprocessor.h +44 -0
- data/dist/ice/cpp/src/Slice/Scanner.cpp +3445 -0
- data/dist/ice/cpp/src/Slice/SliceUtil.cpp +790 -0
- data/dist/ice/cpp/src/Slice/StringLiteralUtil.cpp +448 -0
- data/dist/ice/cpp/src/Slice/Util.h +134 -0
- data/dist/ice/cpp/src/slice2rb/Main.cpp +33 -0
- data/dist/ice/cpp/src/slice2rb/Ruby.cpp +250 -0
- data/dist/ice/cpp/src/slice2rb/RubyUtil.cpp +1197 -0
- data/dist/ice/cpp/src/slice2rb/RubyUtil.h +56 -0
- data/dist/ice/mcpp/internal.H +530 -0
- data/dist/ice/slice/Glacier2/Metrics.ice +47 -0
- data/dist/ice/slice/Glacier2/PermissionsVerifier.ice +55 -0
- data/dist/ice/slice/Glacier2/Router.ice +93 -0
- data/dist/ice/slice/Glacier2/SSLInfo.ice +42 -0
- data/dist/ice/slice/Glacier2/Session.ice +133 -0
- data/dist/ice/slice/Ice/BuiltinSequences.ice +54 -0
- data/dist/ice/slice/Ice/Context.ice +24 -0
- data/dist/ice/slice/Ice/EndpointTypes.ice +50 -0
- data/dist/ice/slice/Ice/Identity.ice +36 -0
- data/dist/ice/slice/Ice/Locator.ice +74 -0
- data/dist/ice/slice/Ice/LocatorRegistry.ice +77 -0
- data/dist/ice/slice/Ice/Metrics.ice +201 -0
- data/dist/ice/slice/Ice/OperationMode.ice +38 -0
- data/dist/ice/slice/Ice/Process.ice +28 -0
- data/dist/ice/slice/Ice/PropertiesAdmin.ice +37 -0
- data/dist/ice/slice/Ice/PropertyDict.ice +23 -0
- data/dist/ice/slice/Ice/RemoteLogger.ice +126 -0
- data/dist/ice/slice/Ice/ReplyStatus.ice +65 -0
- data/dist/ice/slice/Ice/Router.ice +54 -0
- data/dist/ice/slice/Ice/SliceChecksumDict.ice +18 -0
- data/dist/ice/slice/Ice/Version.ice +43 -0
- data/dist/ice/slice/IceBox/ServiceManager.ice +79 -0
- data/dist/ice/slice/IceGrid/Admin.ice +981 -0
- data/dist/ice/slice/IceGrid/Descriptor.ice +519 -0
- data/dist/ice/slice/IceGrid/Exception.ice +98 -0
- data/dist/ice/slice/IceGrid/FileParser.ice +36 -0
- data/dist/ice/slice/IceGrid/Registry.ice +130 -0
- data/dist/ice/slice/IceGrid/Session.ice +64 -0
- data/dist/ice/slice/IceGrid/UserAccountMapper.ice +34 -0
- data/dist/ice/slice/IceStorm/IceStorm.ice +186 -0
- data/dist/ice/slice/IceStorm/Metrics.ice +41 -0
- data/dist/lib/Glacier2/Metrics.rb +41 -0
- data/dist/lib/Glacier2/PermissionsVerifier.rb +61 -0
- data/dist/lib/Glacier2/Router.rb +73 -0
- data/dist/lib/Glacier2/SSLInfo.rb +64 -0
- data/dist/lib/Glacier2/Session.rb +187 -0
- data/dist/lib/Glacier2.rb +7 -0
- data/dist/lib/Ice/BuiltinSequences.rb +48 -0
- data/dist/lib/Ice/CompressBatch.rb +50 -0
- data/dist/lib/Ice/Context.rb +12 -0
- data/dist/lib/Ice/EndpointSelectionType.rb +49 -0
- data/dist/lib/Ice/EndpointTypes.rb +28 -0
- data/dist/lib/Ice/Exception.rb +20 -0
- data/dist/lib/Ice/Identity.rb +47 -0
- data/dist/lib/Ice/IdentitySpaceship.rb +16 -0
- data/dist/lib/Ice/InitializationData.rb +12 -0
- data/dist/lib/Ice/LocalExceptions.rb +168 -0
- data/dist/lib/Ice/Locator.rb +83 -0
- data/dist/lib/Ice/LocatorRegistry.rb +73 -0
- data/dist/lib/Ice/Metrics.rb +290 -0
- data/dist/lib/Ice/OperationMode.rb +58 -0
- data/dist/lib/Ice/Process.rb +34 -0
- data/dist/lib/Ice/PropertiesAdmin.rb +39 -0
- data/dist/lib/Ice/PropertyDict.rb +12 -0
- data/dist/lib/Ice/Proxy.rb +85 -0
- data/dist/lib/Ice/ProxyFunctions.rb +69 -0
- data/dist/lib/Ice/RemoteLogger.rb +176 -0
- data/dist/lib/Ice/ReplyStatus.rb +65 -0
- data/dist/lib/Ice/Router.rb +59 -0
- data/dist/lib/Ice/SliceChecksumDict.rb +12 -0
- data/dist/lib/Ice/SliceUtil.rb +41 -0
- data/dist/lib/Ice/Struct.rb +11 -0
- data/dist/lib/Ice/ToStringMode.rb +50 -0
- data/dist/lib/Ice/Value.rb +93 -0
- data/dist/lib/Ice/Version.rb +78 -0
- data/dist/lib/Ice.rb +37 -0
- data/dist/lib/IceBox/ServiceManager.rb +104 -0
- data/dist/lib/IceBox.rb +3 -0
- data/dist/lib/IceGrid/Admin.rb +1208 -0
- data/dist/lib/IceGrid/Descriptor.rb +989 -0
- data/dist/lib/IceGrid/Exception.rb +145 -0
- data/dist/lib/IceGrid/FileParser.rb +41 -0
- data/dist/lib/IceGrid/Registry.rb +168 -0
- data/dist/lib/IceGrid/Session.rb +56 -0
- data/dist/lib/IceGrid/UserAccountMapper.rb +38 -0
- data/dist/lib/IceGrid.rb +9 -0
- data/dist/lib/IceStorm/IceStorm.rb +251 -0
- data/dist/lib/IceStorm/Metrics.rb +55 -0
- data/dist/lib/IceStorm.rb +4 -0
- data/extconf.rb +89 -0
- data/ice.gemspec +22 -17
- data/scripts/slice2rb +10 -0
- metadata +536 -712
- data/ICE_LICENSE +0 -48
- data/LICENSE +0 -340
- data/MCPP_LICENSE +0 -29
- data/bin/slice2rb +0 -12
- data/ext/Communicator.cpp +0 -792
- data/ext/Communicator.h +0 -20
- data/ext/Config.h +0 -143
- data/ext/Connection.cpp +0 -532
- data/ext/Connection.h +0 -24
- data/ext/Endpoint.cpp +0 -340
- data/ext/Endpoint.h +0 -22
- data/ext/ImplicitContext.cpp +0 -144
- data/ext/ImplicitContext.h +0 -20
- data/ext/Init.cpp +0 -49
- data/ext/Logger.cpp +0 -147
- data/ext/Logger.h +0 -23
- data/ext/Operation.cpp +0 -661
- data/ext/Operation.h +0 -31
- data/ext/Properties.cpp +0 -365
- data/ext/Properties.h +0 -20
- data/ext/Proxy.cpp +0 -1396
- data/ext/Proxy.h +0 -22
- data/ext/Slice.cpp +0 -205
- data/ext/Slice.h +0 -17
- data/ext/Types.cpp +0 -3325
- data/ext/Types.h +0 -595
- data/ext/Util.cpp +0 -812
- data/ext/Util.h +0 -586
- data/ext/ValueFactoryManager.cpp +0 -441
- data/ext/ValueFactoryManager.h +0 -95
- data/ext/extconf.rb +0 -97
- data/ext/ice/cpp/include/Ice/Application.h +0 -326
- data/ext/ice/cpp/include/Ice/AsyncResult.h +0 -155
- data/ext/ice/cpp/include/Ice/AsyncResultF.h +0 -23
- data/ext/ice/cpp/include/Ice/BatchRequestInterceptor.h +0 -75
- data/ext/ice/cpp/include/Ice/BatchRequestQueueF.h +0 -20
- data/ext/ice/cpp/include/Ice/Buffer.h +0 -154
- data/ext/ice/cpp/include/Ice/CommunicatorAsync.h +0 -154
- data/ext/ice/cpp/include/Ice/Comparable.h +0 -205
- data/ext/ice/cpp/include/Ice/Config.h +0 -78
- data/ext/ice/cpp/include/Ice/ConnectionAsync.h +0 -302
- data/ext/ice/cpp/include/Ice/ConnectionIF.h +0 -38
- data/ext/ice/cpp/include/Ice/ConsoleUtil.h +0 -23
- data/ext/ice/cpp/include/Ice/DefaultValueFactory.h +0 -57
- data/ext/ice/cpp/include/Ice/DispatchInterceptor.h +0 -41
- data/ext/ice/cpp/include/Ice/Dispatcher.h +0 -67
- data/ext/ice/cpp/include/Ice/DynamicLibrary.h +0 -102
- data/ext/ice/cpp/include/Ice/DynamicLibraryF.h +0 -24
- data/ext/ice/cpp/include/Ice/Exception.h +0 -161
- data/ext/ice/cpp/include/Ice/ExceptionHelpers.h +0 -74
- data/ext/ice/cpp/include/Ice/FactoryTable.h +0 -73
- data/ext/ice/cpp/include/Ice/FactoryTableInit.h +0 -84
- data/ext/ice/cpp/include/Ice/Format.h +0 -38
- data/ext/ice/cpp/include/Ice/Functional.h +0 -140
- data/ext/ice/cpp/include/Ice/GCObject.h +0 -76
- data/ext/ice/cpp/include/Ice/Handle.h +0 -182
- data/ext/ice/cpp/include/Ice/Ice.h +0 -55
- data/ext/ice/cpp/include/Ice/IconvStringConverter.h +0 -377
- data/ext/ice/cpp/include/Ice/Incoming.h +0 -225
- data/ext/ice/cpp/include/Ice/IncomingAsync.h +0 -186
- data/ext/ice/cpp/include/Ice/IncomingAsyncF.h +0 -36
- data/ext/ice/cpp/include/Ice/Initialize.h +0 -957
- data/ext/ice/cpp/include/Ice/InputStream.h +0 -1514
- data/ext/ice/cpp/include/Ice/InstanceF.h +0 -20
- data/ext/ice/cpp/include/Ice/InterfaceByValue.h +0 -57
- data/ext/ice/cpp/include/Ice/LocalObject.h +0 -35
- data/ext/ice/cpp/include/Ice/LocalObjectF.h +0 -21
- data/ext/ice/cpp/include/Ice/LoggerUtil.h +0 -185
- data/ext/ice/cpp/include/Ice/MetricsAdminI.h +0 -715
- data/ext/ice/cpp/include/Ice/MetricsFunctional.h +0 -159
- data/ext/ice/cpp/include/Ice/MetricsObserverI.h +0 -669
- data/ext/ice/cpp/include/Ice/NativePropertiesAdmin.h +0 -86
- data/ext/ice/cpp/include/Ice/Object.h +0 -507
- data/ext/ice/cpp/include/Ice/ObjectF.h +0 -30
- data/ext/ice/cpp/include/Ice/ObserverHelper.h +0 -182
- data/ext/ice/cpp/include/Ice/Optional.h +0 -1114
- data/ext/ice/cpp/include/Ice/OutgoingAsync.h +0 -856
- data/ext/ice/cpp/include/Ice/OutgoingAsyncF.h +0 -39
- data/ext/ice/cpp/include/Ice/OutputStream.h +0 -1092
- data/ext/ice/cpp/include/Ice/Protocol.h +0 -274
- data/ext/ice/cpp/include/Ice/Proxy.h +0 -5154
- data/ext/ice/cpp/include/Ice/ProxyF.h +0 -53
- data/ext/ice/cpp/include/Ice/ProxyFactoryF.h +0 -21
- data/ext/ice/cpp/include/Ice/ProxyHandle.h +0 -318
- data/ext/ice/cpp/include/Ice/ReferenceF.h +0 -29
- data/ext/ice/cpp/include/Ice/RegisterPlugins.h +0 -127
- data/ext/ice/cpp/include/Ice/RequestHandlerF.h +0 -30
- data/ext/ice/cpp/include/Ice/ResponseHandlerF.h +0 -25
- data/ext/ice/cpp/include/Ice/SHA1.h +0 -42
- data/ext/ice/cpp/include/Ice/ServantManagerF.h +0 -21
- data/ext/ice/cpp/include/Ice/Service.h +0 -379
- data/ext/ice/cpp/include/Ice/SliceChecksums.h +0 -33
- data/ext/ice/cpp/include/Ice/SlicedData.h +0 -172
- data/ext/ice/cpp/include/Ice/SlicedDataF.h +0 -40
- data/ext/ice/cpp/include/Ice/StreamHelpers.h +0 -1190
- data/ext/ice/cpp/include/Ice/StringConverter.h +0 -78
- data/ext/ice/cpp/include/Ice/ThreadPoolF.h +0 -23
- data/ext/ice/cpp/include/Ice/UUID.h +0 -19
- data/ext/ice/cpp/include/Ice/UniquePtr.h +0 -95
- data/ext/ice/cpp/include/Ice/UniqueRef.h +0 -97
- data/ext/ice/cpp/include/Ice/UserExceptionFactory.h +0 -88
- data/ext/ice/cpp/include/Ice/Value.h +0 -139
- data/ext/ice/cpp/include/Ice/ValueF.h +0 -21
- data/ext/ice/cpp/include/IceSSL/Config.h +0 -21
- data/ext/ice/cpp/include/IceSSL/IceSSL.h +0 -28
- data/ext/ice/cpp/include/IceSSL/OpenSSL.h +0 -147
- data/ext/ice/cpp/include/IceSSL/Plugin.h +0 -712
- data/ext/ice/cpp/include/IceSSL/SChannel.h +0 -72
- data/ext/ice/cpp/include/IceSSL/SecureTransport.h +0 -72
- data/ext/ice/cpp/include/IceSSL/UWP.h +0 -62
- data/ext/ice/cpp/include/IceUtil/Atomic.h +0 -179
- data/ext/ice/cpp/include/IceUtil/Cond.h +0 -317
- data/ext/ice/cpp/include/IceUtil/Config.h +0 -424
- data/ext/ice/cpp/include/IceUtil/ConsoleUtil.h +0 -92
- data/ext/ice/cpp/include/IceUtil/CountDownLatch.h +0 -45
- data/ext/ice/cpp/include/IceUtil/CtrlCHandler.h +0 -92
- data/ext/ice/cpp/include/IceUtil/DisableWarnings.h +0 -44
- data/ext/ice/cpp/include/IceUtil/Exception.h +0 -394
- data/ext/ice/cpp/include/IceUtil/FileUtil.h +0 -143
- data/ext/ice/cpp/include/IceUtil/Functional.h +0 -389
- data/ext/ice/cpp/include/IceUtil/Handle.h +0 -261
- data/ext/ice/cpp/include/IceUtil/IceUtil.h +0 -40
- data/ext/ice/cpp/include/IceUtil/InputUtil.h +0 -42
- data/ext/ice/cpp/include/IceUtil/Iterator.h +0 -31
- data/ext/ice/cpp/include/IceUtil/Lock.h +0 -128
- data/ext/ice/cpp/include/IceUtil/Monitor.h +0 -243
- data/ext/ice/cpp/include/IceUtil/Mutex.h +0 -353
- data/ext/ice/cpp/include/IceUtil/MutexProtocol.h +0 -23
- data/ext/ice/cpp/include/IceUtil/MutexPtrLock.h +0 -78
- data/ext/ice/cpp/include/IceUtil/MutexPtrTryLock.h +0 -77
- data/ext/ice/cpp/include/IceUtil/Optional.h +0 -433
- data/ext/ice/cpp/include/IceUtil/Options.h +0 -135
- data/ext/ice/cpp/include/IceUtil/OutputUtil.h +0 -383
- data/ext/ice/cpp/include/IceUtil/PopDisableWarnings.h +0 -14
- data/ext/ice/cpp/include/IceUtil/PushDisableWarnings.h +0 -33
- data/ext/ice/cpp/include/IceUtil/Random.h +0 -55
- data/ext/ice/cpp/include/IceUtil/RecMutex.h +0 -107
- data/ext/ice/cpp/include/IceUtil/ResourceConfig.h +0 -53
- data/ext/ice/cpp/include/IceUtil/ScannerConfig.h +0 -40
- data/ext/ice/cpp/include/IceUtil/ScopedArray.h +0 -98
- data/ext/ice/cpp/include/IceUtil/Shared.h +0 -127
- data/ext/ice/cpp/include/IceUtil/StopWatch.h +0 -49
- data/ext/ice/cpp/include/IceUtil/StringConverter.h +0 -195
- data/ext/ice/cpp/include/IceUtil/StringUtil.h +0 -97
- data/ext/ice/cpp/include/IceUtil/Thread.h +0 -174
- data/ext/ice/cpp/include/IceUtil/ThreadException.h +0 -94
- data/ext/ice/cpp/include/IceUtil/Time.h +0 -205
- data/ext/ice/cpp/include/IceUtil/Timer.h +0 -143
- data/ext/ice/cpp/include/IceUtil/UUID.h +0 -21
- data/ext/ice/cpp/include/IceUtil/UndefSysMacros.h +0 -37
- data/ext/ice/cpp/include/generated/Ice/BuiltinSequences.h +0 -170
- data/ext/ice/cpp/include/generated/Ice/Communicator.h +0 -1162
- data/ext/ice/cpp/include/generated/Ice/CommunicatorF.h +0 -101
- data/ext/ice/cpp/include/generated/Ice/Connection.h +0 -1703
- data/ext/ice/cpp/include/generated/Ice/ConnectionF.h +0 -119
- data/ext/ice/cpp/include/generated/Ice/Current.h +0 -322
- data/ext/ice/cpp/include/generated/Ice/Endpoint.h +0 -979
- data/ext/ice/cpp/include/generated/Ice/EndpointF.h +0 -166
- data/ext/ice/cpp/include/generated/Ice/EndpointTypes.h +0 -118
- data/ext/ice/cpp/include/generated/Ice/FacetMap.h +0 -80
- data/ext/ice/cpp/include/generated/Ice/Identity.h +0 -264
- data/ext/ice/cpp/include/generated/Ice/ImplicitContext.h +0 -284
- data/ext/ice/cpp/include/generated/Ice/ImplicitContextF.h +0 -101
- data/ext/ice/cpp/include/generated/Ice/Instrumentation.h +0 -1203
- data/ext/ice/cpp/include/generated/Ice/InstrumentationF.h +0 -128
- data/ext/ice/cpp/include/generated/Ice/LocalException.h +0 -7437
- data/ext/ice/cpp/include/generated/Ice/Locator.h +0 -3898
- data/ext/ice/cpp/include/generated/Ice/LocatorF.h +0 -147
- data/ext/ice/cpp/include/generated/Ice/Logger.h +0 -237
- data/ext/ice/cpp/include/generated/Ice/LoggerF.h +0 -101
- data/ext/ice/cpp/include/generated/Ice/Metrics.h +0 -4769
- data/ext/ice/cpp/include/generated/Ice/ObjectAdapter.h +0 -1181
- data/ext/ice/cpp/include/generated/Ice/ObjectAdapterF.h +0 -101
- data/ext/ice/cpp/include/generated/Ice/ObjectFactory.h +0 -203
- data/ext/ice/cpp/include/generated/Ice/Plugin.h +0 -318
- data/ext/ice/cpp/include/generated/Ice/PluginF.h +0 -110
- data/ext/ice/cpp/include/generated/Ice/Process.h +0 -977
- data/ext/ice/cpp/include/generated/Ice/ProcessF.h +0 -125
- data/ext/ice/cpp/include/generated/Ice/Properties.h +0 -452
- data/ext/ice/cpp/include/generated/Ice/PropertiesAdmin.h +0 -1366
- data/ext/ice/cpp/include/generated/Ice/PropertiesF.h +0 -134
- data/ext/ice/cpp/include/generated/Ice/RemoteLogger.h +0 -2707
- data/ext/ice/cpp/include/generated/Ice/Router.h +0 -1850
- data/ext/ice/cpp/include/generated/Ice/RouterF.h +0 -125
- data/ext/ice/cpp/include/generated/Ice/ServantLocator.h +0 -305
- data/ext/ice/cpp/include/generated/Ice/ServantLocatorF.h +0 -101
- data/ext/ice/cpp/include/generated/Ice/SliceChecksumDict.h +0 -84
- data/ext/ice/cpp/include/generated/Ice/ValueFactory.h +0 -330
- data/ext/ice/cpp/include/generated/Ice/Version.h +0 -357
- data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +0 -228
- data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +0 -101
- data/ext/ice/cpp/include/generated/IceSSL/EndpointInfo.h +0 -186
- data/ext/ice/cpp/src/Ice/ACM.cpp +0 -380
- data/ext/ice/cpp/src/Ice/ACM.h +0 -119
- data/ext/ice/cpp/src/Ice/ACMF.h +0 -30
- data/ext/ice/cpp/src/Ice/Acceptor.cpp +0 -16
- data/ext/ice/cpp/src/Ice/Acceptor.h +0 -37
- data/ext/ice/cpp/src/Ice/AcceptorF.h +0 -25
- data/ext/ice/cpp/src/Ice/ArgVector.cpp +0 -59
- data/ext/ice/cpp/src/Ice/ArgVector.h +0 -36
- data/ext/ice/cpp/src/Ice/AsyncResult.cpp +0 -70
- data/ext/ice/cpp/src/Ice/Base64.cpp +0 -263
- data/ext/ice/cpp/src/Ice/Base64.h +0 -31
- data/ext/ice/cpp/src/Ice/BatchRequestQueue.cpp +0 -250
- data/ext/ice/cpp/src/Ice/BatchRequestQueue.h +0 -59
- data/ext/ice/cpp/src/Ice/Buffer.cpp +0 -155
- data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +0 -49
- data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +0 -407
- data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.h +0 -87
- data/ext/ice/cpp/src/Ice/Communicator.cpp +0 -79
- data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +0 -61
- data/ext/ice/cpp/src/Ice/CommunicatorI.cpp +0 -586
- data/ext/ice/cpp/src/Ice/CommunicatorI.h +0 -167
- data/ext/ice/cpp/src/Ice/Cond.cpp +0 -381
- data/ext/ice/cpp/src/Ice/ConnectRequestHandler.cpp +0 -348
- data/ext/ice/cpp/src/Ice/ConnectRequestHandler.h +0 -72
- data/ext/ice/cpp/src/Ice/ConnectRequestHandlerF.h +0 -24
- data/ext/ice/cpp/src/Ice/Connection.cpp +0 -155
- data/ext/ice/cpp/src/Ice/ConnectionF.cpp +0 -61
- data/ext/ice/cpp/src/Ice/ConnectionFactory.cpp +0 -1972
- data/ext/ice/cpp/src/Ice/ConnectionFactory.h +0 -264
- data/ext/ice/cpp/src/Ice/ConnectionFactoryF.h +0 -30
- data/ext/ice/cpp/src/Ice/ConnectionI.cpp +0 -3670
- data/ext/ice/cpp/src/Ice/ConnectionI.h +0 -391
- data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.cpp +0 -73
- data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.h +0 -41
- data/ext/ice/cpp/src/Ice/Connector.cpp +0 -16
- data/ext/ice/cpp/src/Ice/Connector.h +0 -32
- data/ext/ice/cpp/src/Ice/ConnectorF.h +0 -21
- data/ext/ice/cpp/src/Ice/CountDownLatch.cpp +0 -179
- data/ext/ice/cpp/src/Ice/Current.cpp +0 -62
- data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +0 -161
- data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.h +0 -52
- data/ext/ice/cpp/src/Ice/DefaultsAndOverridesF.h +0 -21
- data/ext/ice/cpp/src/Ice/DispatchInterceptor.cpp +0 -37
- data/ext/ice/cpp/src/Ice/DynamicLibrary.cpp +0 -291
- data/ext/ice/cpp/src/Ice/Endpoint.cpp +0 -147
- data/ext/ice/cpp/src/Ice/EndpointF.cpp +0 -61
- data/ext/ice/cpp/src/Ice/EndpointFactory.cpp +0 -189
- data/ext/ice/cpp/src/Ice/EndpointFactory.h +0 -117
- data/ext/ice/cpp/src/Ice/EndpointFactoryF.h +0 -21
- data/ext/ice/cpp/src/Ice/EndpointFactoryManager.cpp +0 -213
- data/ext/ice/cpp/src/Ice/EndpointFactoryManager.h +0 -47
- data/ext/ice/cpp/src/Ice/EndpointFactoryManagerF.h +0 -21
- data/ext/ice/cpp/src/Ice/EndpointI.cpp +0 -98
- data/ext/ice/cpp/src/Ice/EndpointI.h +0 -218
- data/ext/ice/cpp/src/Ice/EndpointIF.h +0 -49
- data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +0 -51
- data/ext/ice/cpp/src/Ice/EventHandler.cpp +0 -32
- data/ext/ice/cpp/src/Ice/EventHandler.h +0 -81
- data/ext/ice/cpp/src/Ice/EventHandlerF.h +0 -24
- data/ext/ice/cpp/src/Ice/Exception.cpp +0 -845
- data/ext/ice/cpp/src/Ice/FacetMap.cpp +0 -49
- data/ext/ice/cpp/src/Ice/FactoryTable.cpp +0 -162
- data/ext/ice/cpp/src/Ice/FactoryTableInit.cpp +0 -88
- data/ext/ice/cpp/src/Ice/GCObject.cpp +0 -442
- data/ext/ice/cpp/src/Ice/HashUtil.h +0 -53
- data/ext/ice/cpp/src/Ice/HttpParser.cpp +0 -684
- data/ext/ice/cpp/src/Ice/HttpParser.h +0 -117
- data/ext/ice/cpp/src/Ice/IPEndpointI.cpp +0 -756
- data/ext/ice/cpp/src/Ice/IPEndpointI.h +0 -162
- data/ext/ice/cpp/src/Ice/IPEndpointIF.h +0 -28
- data/ext/ice/cpp/src/Ice/IconvStringConverter.cpp +0 -51
- data/ext/ice/cpp/src/Ice/Identity.cpp +0 -57
- data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +0 -75
- data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +0 -61
- data/ext/ice/cpp/src/Ice/ImplicitContextI.cpp +0 -655
- data/ext/ice/cpp/src/Ice/ImplicitContextI.h +0 -48
- data/ext/ice/cpp/src/Ice/Incoming.cpp +0 -795
- data/ext/ice/cpp/src/Ice/IncomingAsync.cpp +0 -230
- data/ext/ice/cpp/src/Ice/IncomingRequest.h +0 -33
- data/ext/ice/cpp/src/Ice/Initialize.cpp +0 -654
- data/ext/ice/cpp/src/Ice/InputStream.cpp +0 -2741
- data/ext/ice/cpp/src/Ice/Instance.cpp +0 -1971
- data/ext/ice/cpp/src/Ice/Instance.h +0 -235
- data/ext/ice/cpp/src/Ice/Instrumentation.cpp +0 -188
- data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +0 -66
- data/ext/ice/cpp/src/Ice/InstrumentationI.cpp +0 -1094
- data/ext/ice/cpp/src/Ice/InstrumentationI.h +0 -256
- data/ext/ice/cpp/src/Ice/LocalException.cpp +0 -3262
- data/ext/ice/cpp/src/Ice/LocalObject.cpp +0 -23
- data/ext/ice/cpp/src/Ice/Locator.cpp +0 -2042
- data/ext/ice/cpp/src/Ice/LocatorF.cpp +0 -63
- data/ext/ice/cpp/src/Ice/LocatorInfo.cpp +0 -889
- data/ext/ice/cpp/src/Ice/LocatorInfo.h +0 -189
- data/ext/ice/cpp/src/Ice/LocatorInfoF.h +0 -29
- data/ext/ice/cpp/src/Ice/Logger.cpp +0 -73
- data/ext/ice/cpp/src/Ice/LoggerAdminI.cpp +0 -956
- data/ext/ice/cpp/src/Ice/LoggerAdminI.h +0 -41
- data/ext/ice/cpp/src/Ice/LoggerF.cpp +0 -61
- data/ext/ice/cpp/src/Ice/LoggerI.cpp +0 -261
- data/ext/ice/cpp/src/Ice/LoggerI.h +0 -52
- data/ext/ice/cpp/src/Ice/LoggerUtil.cpp +0 -100
- data/ext/ice/cpp/src/Ice/Metrics.cpp +0 -2352
- data/ext/ice/cpp/src/Ice/MetricsAdminI.cpp +0 -694
- data/ext/ice/cpp/src/Ice/MetricsObserverI.cpp +0 -8
- data/ext/ice/cpp/src/Ice/Network.cpp +0 -3075
- data/ext/ice/cpp/src/Ice/Network.h +0 -371
- data/ext/ice/cpp/src/Ice/NetworkF.h +0 -23
- data/ext/ice/cpp/src/Ice/NetworkProxy.cpp +0 -324
- data/ext/ice/cpp/src/Ice/NetworkProxy.h +0 -72
- data/ext/ice/cpp/src/Ice/NetworkProxyF.h +0 -21
- data/ext/ice/cpp/src/Ice/OSLogLoggerI.cpp +0 -57
- data/ext/ice/cpp/src/Ice/OSLogLoggerI.h +0 -40
- data/ext/ice/cpp/src/Ice/Object.cpp +0 -435
- data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +0 -79
- data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +0 -61
- data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +0 -291
- data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.h +0 -53
- data/ext/ice/cpp/src/Ice/ObjectAdapterFactoryF.h +0 -25
- data/ext/ice/cpp/src/Ice/ObjectAdapterI.cpp +0 -1530
- data/ext/ice/cpp/src/Ice/ObjectAdapterI.h +0 -159
- data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +0 -75
- data/ext/ice/cpp/src/Ice/ObserverHelper.cpp +0 -56
- data/ext/ice/cpp/src/Ice/OpaqueEndpointI.cpp +0 -408
- data/ext/ice/cpp/src/Ice/OpaqueEndpointI.h +0 -74
- data/ext/ice/cpp/src/Ice/OutgoingAsync.cpp +0 -1322
- data/ext/ice/cpp/src/Ice/OutputStream.cpp +0 -1367
- data/ext/ice/cpp/src/Ice/Plugin.cpp +0 -87
- data/ext/ice/cpp/src/Ice/PluginF.cpp +0 -61
- data/ext/ice/cpp/src/Ice/PluginManagerI.cpp +0 -503
- data/ext/ice/cpp/src/Ice/PluginManagerI.h +0 -61
- data/ext/ice/cpp/src/Ice/Process.cpp +0 -471
- data/ext/ice/cpp/src/Ice/ProcessF.cpp +0 -63
- data/ext/ice/cpp/src/Ice/Properties.cpp +0 -78
- data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +0 -603
- data/ext/ice/cpp/src/Ice/PropertiesAdminI.cpp +0 -265
- data/ext/ice/cpp/src/Ice/PropertiesAdminI.h +0 -64
- data/ext/ice/cpp/src/Ice/PropertiesF.cpp +0 -63
- data/ext/ice/cpp/src/Ice/PropertiesI.cpp +0 -747
- data/ext/ice/cpp/src/Ice/PropertiesI.h +0 -70
- data/ext/ice/cpp/src/Ice/PropertyNames.cpp +0 -1429
- data/ext/ice/cpp/src/Ice/PropertyNames.h +0 -78
- data/ext/ice/cpp/src/Ice/Protocol.cpp +0 -124
- data/ext/ice/cpp/src/Ice/ProtocolInstance.cpp +0 -131
- data/ext/ice/cpp/src/Ice/ProtocolInstance.h +0 -93
- data/ext/ice/cpp/src/Ice/ProtocolInstanceF.h +0 -21
- data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +0 -51
- data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.h +0 -64
- data/ext/ice/cpp/src/Ice/ProtocolPluginFacadeF.h +0 -21
- data/ext/ice/cpp/src/Ice/Proxy.cpp +0 -1601
- data/ext/ice/cpp/src/Ice/ProxyFactory.cpp +0 -300
- data/ext/ice/cpp/src/Ice/ProxyFactory.h +0 -57
- data/ext/ice/cpp/src/Ice/Reference.cpp +0 -2046
- data/ext/ice/cpp/src/Ice/Reference.h +0 -323
- data/ext/ice/cpp/src/Ice/ReferenceFactory.cpp +0 -888
- data/ext/ice/cpp/src/Ice/ReferenceFactory.h +0 -76
- data/ext/ice/cpp/src/Ice/ReferenceFactoryF.h +0 -19
- data/ext/ice/cpp/src/Ice/RegisterPluginsInit.cpp +0 -38
- data/ext/ice/cpp/src/Ice/RegisterPluginsInit.h +0 -20
- data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +0 -1171
- data/ext/ice/cpp/src/Ice/ReplyStatus.h +0 -24
- data/ext/ice/cpp/src/Ice/RequestHandler.cpp +0 -37
- data/ext/ice/cpp/src/Ice/RequestHandler.h +0 -78
- data/ext/ice/cpp/src/Ice/RequestHandlerFactory.cpp +0 -77
- data/ext/ice/cpp/src/Ice/RequestHandlerFactory.h +0 -37
- data/ext/ice/cpp/src/Ice/ResponseHandler.cpp +0 -12
- data/ext/ice/cpp/src/Ice/ResponseHandler.h +0 -43
- data/ext/ice/cpp/src/Ice/RetryQueue.cpp +0 -157
- data/ext/ice/cpp/src/Ice/RetryQueue.h +0 -66
- data/ext/ice/cpp/src/Ice/RetryQueueF.h +0 -19
- data/ext/ice/cpp/src/Ice/Router.cpp +0 -977
- data/ext/ice/cpp/src/Ice/RouterF.cpp +0 -63
- data/ext/ice/cpp/src/Ice/RouterInfo.cpp +0 -379
- data/ext/ice/cpp/src/Ice/RouterInfo.h +0 -152
- data/ext/ice/cpp/src/Ice/RouterInfoF.h +0 -25
- data/ext/ice/cpp/src/Ice/SHA1.cpp +0 -185
- data/ext/ice/cpp/src/Ice/Selector.cpp +0 -1537
- data/ext/ice/cpp/src/Ice/Selector.h +0 -308
- data/ext/ice/cpp/src/Ice/ServantLocator.cpp +0 -75
- data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +0 -61
- data/ext/ice/cpp/src/Ice/ServantManager.cpp +0 -480
- data/ext/ice/cpp/src/Ice/ServantManager.h +0 -69
- data/ext/ice/cpp/src/Ice/SharedContext.h +0 -46
- data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +0 -49
- data/ext/ice/cpp/src/Ice/SliceChecksums.cpp +0 -75
- data/ext/ice/cpp/src/Ice/SlicedData.cpp +0 -127
- data/ext/ice/cpp/src/Ice/StreamSocket.cpp +0 -682
- data/ext/ice/cpp/src/Ice/StreamSocket.h +0 -92
- data/ext/ice/cpp/src/Ice/StringConverterPlugin.cpp +0 -192
- data/ext/ice/cpp/src/Ice/StringUtil.h +0 -30
- data/ext/ice/cpp/src/Ice/SysLoggerI.cpp +0 -166
- data/ext/ice/cpp/src/Ice/SysLoggerI.h +0 -37
- data/ext/ice/cpp/src/Ice/SystemdJournalI.cpp +0 -66
- data/ext/ice/cpp/src/Ice/SystemdJournalI.h +0 -39
- data/ext/ice/cpp/src/Ice/TcpAcceptor.cpp +0 -355
- data/ext/ice/cpp/src/Ice/TcpAcceptor.h +0 -69
- data/ext/ice/cpp/src/Ice/TcpConnector.cpp +0 -127
- data/ext/ice/cpp/src/Ice/TcpConnector.h +0 -45
- data/ext/ice/cpp/src/Ice/TcpEndpointI.cpp +0 -385
- data/ext/ice/cpp/src/Ice/TcpEndpointI.h +0 -90
- data/ext/ice/cpp/src/Ice/TcpTransceiver.cpp +0 -135
- data/ext/ice/cpp/src/Ice/TcpTransceiver.h +0 -58
- data/ext/ice/cpp/src/Ice/Thread.cpp +0 -811
- data/ext/ice/cpp/src/Ice/ThreadPool.cpp +0 -1328
- data/ext/ice/cpp/src/Ice/ThreadPool.h +0 -393
- data/ext/ice/cpp/src/Ice/Timer.cpp +0 -263
- data/ext/ice/cpp/src/Ice/TraceLevels.cpp +0 -38
- data/ext/ice/cpp/src/Ice/TraceLevels.h +0 -45
- data/ext/ice/cpp/src/Ice/TraceLevelsF.h +0 -21
- data/ext/ice/cpp/src/Ice/TraceUtil.cpp +0 -478
- data/ext/ice/cpp/src/Ice/TraceUtil.h +0 -30
- data/ext/ice/cpp/src/Ice/Transceiver.cpp +0 -18
- data/ext/ice/cpp/src/Ice/Transceiver.h +0 -49
- data/ext/ice/cpp/src/Ice/TransceiverF.h +0 -33
- data/ext/ice/cpp/src/Ice/UdpConnector.cpp +0 -136
- data/ext/ice/cpp/src/Ice/UdpConnector.h +0 -45
- data/ext/ice/cpp/src/Ice/UdpEndpointI.cpp +0 -515
- data/ext/ice/cpp/src/Ice/UdpEndpointI.h +0 -95
- data/ext/ice/cpp/src/Ice/UdpTransceiver.cpp +0 -1153
- data/ext/ice/cpp/src/Ice/UdpTransceiver.h +0 -117
- data/ext/ice/cpp/src/Ice/Value.cpp +0 -76
- data/ext/ice/cpp/src/Ice/ValueFactory.cpp +0 -83
- data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.cpp +0 -61
- data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.h +0 -37
- data/ext/ice/cpp/src/Ice/Version.cpp +0 -57
- data/ext/ice/cpp/src/Ice/VirtualShared.h +0 -38
- data/ext/ice/cpp/src/Ice/WSAcceptor.cpp +0 -92
- data/ext/ice/cpp/src/Ice/WSAcceptor.h +0 -52
- data/ext/ice/cpp/src/Ice/WSConnector.cpp +0 -102
- data/ext/ice/cpp/src/Ice/WSConnector.h +0 -43
- data/ext/ice/cpp/src/Ice/WSEndpoint.cpp +0 -508
- data/ext/ice/cpp/src/Ice/WSEndpoint.h +0 -93
- data/ext/ice/cpp/src/Ice/WSTransceiver.cpp +0 -1747
- data/ext/ice/cpp/src/Ice/WSTransceiver.h +0 -141
- data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +0 -915
- data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +0 -1889
- data/ext/ice/cpp/src/IceDiscovery/LocatorI.cpp +0 -265
- data/ext/ice/cpp/src/IceDiscovery/LocatorI.h +0 -109
- data/ext/ice/cpp/src/IceDiscovery/LookupI.cpp +0 -608
- data/ext/ice/cpp/src/IceDiscovery/LookupI.h +0 -228
- data/ext/ice/cpp/src/IceDiscovery/PluginI.cpp +0 -176
- data/ext/ice/cpp/src/IceDiscovery/PluginI.h +0 -36
- data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.cpp +0 -730
- data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.h +0 -1197
- data/ext/ice/cpp/src/IceLocatorDiscovery/Plugin.h +0 -47
- data/ext/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +0 -1048
- data/ext/ice/cpp/src/IceSSL/AcceptorI.cpp +0 -105
- data/ext/ice/cpp/src/IceSSL/AcceptorI.h +0 -52
- data/ext/ice/cpp/src/IceSSL/CertificateI.cpp +0 -301
- data/ext/ice/cpp/src/IceSSL/CertificateI.h +0 -64
- data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +0 -75
- data/ext/ice/cpp/src/IceSSL/ConnectionInfoF.cpp +0 -61
- data/ext/ice/cpp/src/IceSSL/ConnectorI.cpp +0 -102
- data/ext/ice/cpp/src/IceSSL/ConnectorI.h +0 -44
- data/ext/ice/cpp/src/IceSSL/EndpointI.cpp +0 -372
- data/ext/ice/cpp/src/IceSSL/EndpointI.h +0 -100
- data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +0 -75
- data/ext/ice/cpp/src/IceSSL/Instance.cpp +0 -28
- data/ext/ice/cpp/src/IceSSL/Instance.h +0 -37
- data/ext/ice/cpp/src/IceSSL/InstanceF.h +0 -33
- data/ext/ice/cpp/src/IceSSL/OpenSSLCertificateI.cpp +0 -688
- data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +0 -1147
- data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.h +0 -59
- data/ext/ice/cpp/src/IceSSL/OpenSSLEngineF.h +0 -27
- data/ext/ice/cpp/src/IceSSL/OpenSSLPluginI.cpp +0 -127
- data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +0 -1092
- data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +0 -90
- data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.cpp +0 -288
- data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.h +0 -58
- data/ext/ice/cpp/src/IceSSL/PluginI.cpp +0 -246
- data/ext/ice/cpp/src/IceSSL/PluginI.h +0 -67
- data/ext/ice/cpp/src/IceSSL/RFC2253.cpp +0 -490
- data/ext/ice/cpp/src/IceSSL/RFC2253.h +0 -62
- data/ext/ice/cpp/src/IceSSL/SChannelCertificateI.cpp +0 -721
- data/ext/ice/cpp/src/IceSSL/SChannelEngine.cpp +0 -1283
- data/ext/ice/cpp/src/IceSSL/SChannelEngine.h +0 -123
- data/ext/ice/cpp/src/IceSSL/SChannelEngineF.h +0 -31
- data/ext/ice/cpp/src/IceSSL/SChannelPluginI.cpp +0 -73
- data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +0 -1174
- data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.h +0 -133
- data/ext/ice/cpp/src/IceSSL/SSLEngine.cpp +0 -313
- data/ext/ice/cpp/src/IceSSL/SSLEngine.h +0 -100
- data/ext/ice/cpp/src/IceSSL/SSLEngineF.h +0 -21
- data/ext/ice/cpp/src/IceSSL/SecureTransportCertificateI.cpp +0 -999
- data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.cpp +0 -1308
- data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.h +0 -59
- data/ext/ice/cpp/src/IceSSL/SecureTransportEngineF.h +0 -29
- data/ext/ice/cpp/src/IceSSL/SecureTransportPluginI.cpp +0 -75
- data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +0 -719
- data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +0 -92
- data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +0 -868
- data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.h +0 -45
- data/ext/ice/cpp/src/IceSSL/TrustManager.cpp +0 -236
- data/ext/ice/cpp/src/IceSSL/TrustManager.h +0 -46
- data/ext/ice/cpp/src/IceSSL/TrustManagerF.h +0 -21
- data/ext/ice/cpp/src/IceSSL/UWPCertificateI.cpp +0 -266
- data/ext/ice/cpp/src/IceSSL/UWPEngine.cpp +0 -338
- data/ext/ice/cpp/src/IceSSL/UWPEngine.h +0 -41
- data/ext/ice/cpp/src/IceSSL/UWPEngineF.h +0 -26
- data/ext/ice/cpp/src/IceSSL/UWPPluginI.cpp +0 -89
- data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.cpp +0 -383
- data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.h +0 -71
- data/ext/ice/cpp/src/IceSSL/Util.cpp +0 -192
- data/ext/ice/cpp/src/IceSSL/Util.h +0 -99
- data/ext/ice/cpp/src/IceUtil/ConsoleUtil.cpp +0 -157
- data/ext/ice/cpp/src/IceUtil/ConvertUTF.cpp +0 -472
- data/ext/ice/cpp/src/IceUtil/ConvertUTF.h +0 -147
- data/ext/ice/cpp/src/IceUtil/CtrlCHandler.cpp +0 -259
- data/ext/ice/cpp/src/IceUtil/FileUtil.cpp +0 -484
- data/ext/ice/cpp/src/IceUtil/InputUtil.cpp +0 -36
- data/ext/ice/cpp/src/IceUtil/MutexProtocol.cpp +0 -19
- data/ext/ice/cpp/src/IceUtil/Options.cpp +0 -1051
- data/ext/ice/cpp/src/IceUtil/OutputUtil.cpp +0 -609
- data/ext/ice/cpp/src/IceUtil/Random.cpp +0 -180
- data/ext/ice/cpp/src/IceUtil/RecMutex.cpp +0 -242
- data/ext/ice/cpp/src/IceUtil/Shared.cpp +0 -71
- data/ext/ice/cpp/src/IceUtil/StringConverter.cpp +0 -690
- data/ext/ice/cpp/src/IceUtil/StringUtil.cpp +0 -1180
- data/ext/ice/cpp/src/IceUtil/ThreadException.cpp +0 -130
- data/ext/ice/cpp/src/IceUtil/Time.cpp +0 -307
- data/ext/ice/cpp/src/IceUtil/UUID.cpp +0 -169
- data/ext/ice/cpp/src/IceUtil/Unicode.cpp +0 -183
- data/ext/ice/cpp/src/IceUtil/Unicode.h +0 -43
- data/ext/ice/cpp/src/IceUtil/UtilException.cpp +0 -839
- data/ext/ice/cpp/src/Slice/CPlusPlusUtil.cpp +0 -1810
- data/ext/ice/cpp/src/Slice/CPlusPlusUtil.h +0 -72
- data/ext/ice/cpp/src/Slice/Checksum.cpp +0 -447
- data/ext/ice/cpp/src/Slice/Checksum.h +0 -21
- data/ext/ice/cpp/src/Slice/FileTracker.cpp +0 -146
- data/ext/ice/cpp/src/Slice/FileTracker.h +0 -66
- data/ext/ice/cpp/src/Slice/Grammar.cpp +0 -4793
- data/ext/ice/cpp/src/Slice/Grammar.h +0 -118
- data/ext/ice/cpp/src/Slice/GrammarUtil.h +0 -228
- data/ext/ice/cpp/src/Slice/JavaUtil.cpp +0 -5154
- data/ext/ice/cpp/src/Slice/JavaUtil.h +0 -398
- data/ext/ice/cpp/src/Slice/MD5.cpp +0 -52
- data/ext/ice/cpp/src/Slice/MD5.h +0 -39
- data/ext/ice/cpp/src/Slice/MD5I.cpp +0 -393
- data/ext/ice/cpp/src/Slice/MD5I.h +0 -91
- data/ext/ice/cpp/src/Slice/PHPUtil.cpp +0 -157
- data/ext/ice/cpp/src/Slice/PHPUtil.h +0 -36
- data/ext/ice/cpp/src/Slice/Parser.cpp +0 -7058
- data/ext/ice/cpp/src/Slice/Parser.h +0 -1174
- data/ext/ice/cpp/src/Slice/Preprocessor.cpp +0 -797
- data/ext/ice/cpp/src/Slice/Preprocessor.h +0 -60
- data/ext/ice/cpp/src/Slice/Python.cpp +0 -830
- data/ext/ice/cpp/src/Slice/PythonUtil.cpp +0 -3439
- data/ext/ice/cpp/src/Slice/PythonUtil.h +0 -70
- data/ext/ice/cpp/src/Slice/Ruby.cpp +0 -350
- data/ext/ice/cpp/src/Slice/RubyUtil.cpp +0 -1571
- data/ext/ice/cpp/src/Slice/RubyUtil.h +0 -49
- data/ext/ice/cpp/src/Slice/Scanner.cpp +0 -2807
- data/ext/ice/cpp/src/Slice/SliceUtil.cpp +0 -424
- data/ext/ice/cpp/src/Slice/StringLiteralUtil.cpp +0 -456
- data/ext/ice/cpp/src/Slice/Util.h +0 -50
- data/ext/ice/mcpp/CMakeLists.txt +0 -80
- data/ext/ice/mcpp/LICENSE +0 -29
- data/ext/ice/mcpp/Makefile +0 -63
- data/ext/ice/mcpp/README.md +0 -32
- data/ext/ice/mcpp/internal.H +0 -530
- data/ext/ice/mcpp/mcpp.gyp +0 -88
- data/lib/Glacier2/Metrics.rb +0 -56
- data/lib/Glacier2/PermissionsVerifier.rb +0 -93
- data/lib/Glacier2/PermissionsVerifierF.rb +0 -30
- data/lib/Glacier2/Router.rb +0 -95
- data/lib/Glacier2/RouterF.rb +0 -25
- data/lib/Glacier2/SSLInfo.rb +0 -72
- data/lib/Glacier2/Session.rb +0 -247
- data/lib/Glacier2.rb +0 -7
- data/lib/Ice/BuiltinSequences.rb +0 -60
- data/lib/Ice/Communicator.rb +0 -87
- data/lib/Ice/CommunicatorF.rb +0 -24
- data/lib/Ice/Connection.rb +0 -413
- data/lib/Ice/ConnectionF.rb +0 -32
- data/lib/Ice/Current.rb +0 -141
- data/lib/Ice/Endpoint.rb +0 -187
- data/lib/Ice/EndpointF.rb +0 -48
- data/lib/Ice/EndpointTypes.rb +0 -69
- data/lib/Ice/FacetMap.rb +0 -24
- data/lib/Ice/Identity.rb +0 -63
- data/lib/Ice/ImplicitContext.rb +0 -26
- data/lib/Ice/ImplicitContextF.rb +0 -24
- data/lib/Ice/Instrumentation.rb +0 -169
- data/lib/Ice/InstrumentationF.rb +0 -31
- data/lib/Ice/LocalException.rb +0 -1031
- data/lib/Ice/Locator.rb +0 -196
- data/lib/Ice/LocatorF.rb +0 -30
- data/lib/Ice/Logger.rb +0 -24
- data/lib/Ice/LoggerF.rb +0 -24
- data/lib/Ice/Metrics.rb +0 -337
- data/lib/Ice/ObjectAdapter.rb +0 -29
- data/lib/Ice/ObjectAdapterF.rb +0 -24
- data/lib/Ice/ObjectFactory.rb +0 -24
- data/lib/Ice/Plugin.rb +0 -30
- data/lib/Ice/PluginF.rb +0 -28
- data/lib/Ice/Process.rb +0 -53
- data/lib/Ice/ProcessF.rb +0 -25
- data/lib/Ice/Properties.rb +0 -25
- data/lib/Ice/PropertiesAdmin.rb +0 -63
- data/lib/Ice/PropertiesF.rb +0 -29
- data/lib/Ice/RemoteLogger.rb +0 -207
- data/lib/Ice/Router.rb +0 -87
- data/lib/Ice/RouterF.rb +0 -25
- data/lib/Ice/ServantLocator.rb +0 -26
- data/lib/Ice/ServantLocatorF.rb +0 -24
- data/lib/Ice/SliceChecksumDict.rb +0 -24
- data/lib/Ice/ValueFactory.rb +0 -28
- data/lib/Ice/Version.rb +0 -90
- data/lib/Ice.rb +0 -673
- data/lib/IceBox/IceBox.rb +0 -164
- data/lib/IceBox.rb +0 -5
- data/lib/IceGrid/Admin.rb +0 -1196
- data/lib/IceGrid/Descriptor.rb +0 -1034
- data/lib/IceGrid/Exception.rb +0 -376
- data/lib/IceGrid/FileParser.rb +0 -65
- data/lib/IceGrid/PluginFacade.rb +0 -35
- data/lib/IceGrid/Registry.rb +0 -209
- data/lib/IceGrid/Session.rb +0 -71
- data/lib/IceGrid/UserAccountMapper.rb +0 -61
- data/lib/IceGrid.rb +0 -9
- data/lib/IcePatch2/FileInfo.rb +0 -115
- data/lib/IcePatch2/FileServer.rb +0 -123
- data/lib/IcePatch2.rb +0 -5
- data/lib/IceStorm/IceStorm.rb +0 -332
- data/lib/IceStorm/Metrics.rb +0 -73
- data/lib/IceStorm.rb +0 -6
- data/slice/Glacier2/Metrics.ice +0 -88
- data/slice/Glacier2/PermissionsVerifier.ice +0 -111
- data/slice/Glacier2/PermissionsVerifierF.ice +0 -30
- data/slice/Glacier2/Router.ice +0 -186
- data/slice/Glacier2/RouterF.ice +0 -29
- data/slice/Glacier2/SSLInfo.ice +0 -59
- data/slice/Glacier2/Session.ice +0 -274
- data/slice/Ice/BuiltinSequences.ice +0 -59
- data/slice/Ice/Communicator.ice +0 -676
- data/slice/Ice/CommunicatorF.ice +0 -31
- data/slice/Ice/Connection.ice +0 -516
- data/slice/Ice/ConnectionF.ice +0 -33
- data/slice/Ice/Current.ice +0 -170
- data/slice/Ice/Endpoint.ice +0 -291
- data/slice/Ice/EndpointF.ice +0 -43
- data/slice/Ice/EndpointTypes.ice +0 -48
- data/slice/Ice/FacetMap.ice +0 -36
- data/slice/Ice/Identity.ice +0 -75
- data/slice/Ice/ImplicitContext.ice +0 -119
- data/slice/Ice/ImplicitContextF.ice +0 -30
- data/slice/Ice/Instrumentation.ice +0 -509
- data/slice/Ice/InstrumentationF.ice +0 -38
- data/slice/Ice/LocalException.ice +0 -1040
- data/slice/Ice/Locator.ice +0 -239
- data/slice/Ice/LocatorF.ice +0 -32
- data/slice/Ice/Logger.ice +0 -99
- data/slice/Ice/LoggerF.ice +0 -31
- data/slice/Ice/Metrics.ice +0 -436
- data/slice/Ice/ObjectAdapter.ice +0 -710
- data/slice/Ice/ObjectAdapterF.ice +0 -31
- data/slice/Ice/ObjectFactory.ice +0 -71
- data/slice/Ice/Plugin.ice +0 -131
- data/slice/Ice/PluginF.ice +0 -36
- data/slice/Ice/Process.ice +0 -64
- data/slice/Ice/ProcessF.ice +0 -31
- data/slice/Ice/Properties.ice +0 -244
- data/slice/Ice/PropertiesAdmin.ice +0 -87
- data/slice/Ice/PropertiesF.ice +0 -32
- data/slice/Ice/RemoteLogger.ice +0 -226
- data/slice/Ice/Router.ice +0 -103
- data/slice/Ice/RouterF.ice +0 -31
- data/slice/Ice/ServantLocator.ice +0 -136
- data/slice/Ice/ServantLocatorF.ice +0 -31
- data/slice/Ice/SliceChecksumDict.ice +0 -36
- data/slice/Ice/ValueFactory.ice +0 -133
- data/slice/Ice/Version.ice +0 -51
- data/slice/IceBT/ConnectionInfo.ice +0 -59
- data/slice/IceBT/EndpointInfo.ice +0 -57
- data/slice/IceBT/Types.ice +0 -45
- data/slice/IceBox/IceBox.ice +0 -216
- data/slice/IceDiscovery/IceDiscovery.ice +0 -98
- data/slice/IceGrid/Admin.ice +0 -1957
- data/slice/IceGrid/Descriptor.ice +0 -1094
- data/slice/IceGrid/Exception.ice +0 -396
- data/slice/IceGrid/FileParser.ice +0 -72
- data/slice/IceGrid/PluginFacade.ice +0 -329
- data/slice/IceGrid/Registry.ice +0 -269
- data/slice/IceGrid/Session.ice +0 -128
- data/slice/IceGrid/UserAccountMapper.ice +0 -69
- data/slice/IceIAP/ConnectionInfo.ice +0 -74
- data/slice/IceIAP/EndpointInfo.ice +0 -68
- data/slice/IceLocatorDiscovery/IceLocatorDiscovery.ice +0 -83
- data/slice/IcePatch2/FileInfo.ice +0 -85
- data/slice/IcePatch2/FileServer.ice +0 -191
- data/slice/IceSSL/ConnectionInfo.ice +0 -54
- data/slice/IceSSL/ConnectionInfoF.ice +0 -31
- data/slice/IceSSL/EndpointInfo.ice +0 -45
- data/slice/IceStorm/IceStorm.ice +0 -414
- data/slice/IceStorm/Metrics.ice +0 -83
- /data/{ext → dist}/ice/mcpp/config.h +0 -0
- /data/{ext → dist}/ice/mcpp/configed.H +0 -0
- /data/{ext → dist}/ice/mcpp/directive.c +0 -0
- /data/{ext → dist}/ice/mcpp/eval.c +0 -0
- /data/{ext → dist}/ice/mcpp/expand.c +0 -0
- /data/{ext → dist}/ice/mcpp/mbchar.c +0 -0
- /data/{ext → dist}/ice/mcpp/mcpp_lib.h +0 -0
- /data/{ext/ice/mcpp/main.c → dist/ice/mcpp/mcpp_main.c} +0 -0
- /data/{ext → dist}/ice/mcpp/mcpp_out.h +0 -0
- /data/{ext → dist}/ice/mcpp/support.c +0 -0
- /data/{ext → dist}/ice/mcpp/system.H +0 -0
- /data/{ext → dist}/ice/mcpp/system.c +0 -0
|
@@ -0,0 +1,1437 @@
|
|
|
1
|
+
// Copyright (c) ZeroC, Inc.
|
|
2
|
+
|
|
3
|
+
#include "SchannelEngine.h"
|
|
4
|
+
#include "../FileUtil.h"
|
|
5
|
+
#include "DistinguishedName.h"
|
|
6
|
+
#include "Ice/Communicator.h"
|
|
7
|
+
#include "Ice/LocalExceptions.h"
|
|
8
|
+
#include "Ice/Logger.h"
|
|
9
|
+
#include "Ice/StringConverter.h"
|
|
10
|
+
#include "Ice/StringUtil.h"
|
|
11
|
+
#include "Ice/UUID.h"
|
|
12
|
+
#include "SSLUtil.h"
|
|
13
|
+
#include "SchannelTransceiverI.h"
|
|
14
|
+
|
|
15
|
+
#include <wincrypt.h>
|
|
16
|
+
|
|
17
|
+
#include <iostream>
|
|
18
|
+
#include <mutex>
|
|
19
|
+
|
|
20
|
+
#ifndef SECURITY_FLAG_IGNORE_CERT_CN_INVALID
|
|
21
|
+
# define SECURITY_FLAG_IGNORE_CERT_CN_INVALID 0x00001000
|
|
22
|
+
#endif
|
|
23
|
+
|
|
24
|
+
//
|
|
25
|
+
// CALG_ECDH_EPHEM algorithm constant is not defined in older version of the SDK headers
|
|
26
|
+
//
|
|
27
|
+
// https://msdn.microsoft.com/en-us/library/windows/desktop/aa375549(v=vs.85).aspx
|
|
28
|
+
//
|
|
29
|
+
|
|
30
|
+
const int ICESSL_CALG_ECDH_EPHEM = 0x0000AE06;
|
|
31
|
+
|
|
32
|
+
using namespace std;
|
|
33
|
+
using namespace Ice;
|
|
34
|
+
using namespace IceInternal;
|
|
35
|
+
using namespace Ice::SSL;
|
|
36
|
+
|
|
37
|
+
namespace
|
|
38
|
+
{
|
|
39
|
+
mutex globalMutex;
|
|
40
|
+
|
|
41
|
+
string errorStatusToString(DWORD errorStatus)
|
|
42
|
+
{
|
|
43
|
+
assert(errorStatus != CERT_TRUST_NO_ERROR);
|
|
44
|
+
ostringstream os;
|
|
45
|
+
os << "SSL transport: certificate verification failure:";
|
|
46
|
+
|
|
47
|
+
if (errorStatus & CERT_TRUST_IS_NOT_TIME_VALID)
|
|
48
|
+
{
|
|
49
|
+
os << "\n - This certificate or one of the certificates in the certificate chain is not time valid.";
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
if (errorStatus & CERT_TRUST_IS_REVOKED)
|
|
53
|
+
{
|
|
54
|
+
os << "\n - Trust for this certificate or one of the certificates in the certificate chain has been "
|
|
55
|
+
"revoked.";
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (errorStatus & CERT_TRUST_IS_NOT_SIGNATURE_VALID)
|
|
59
|
+
{
|
|
60
|
+
os << "\n - The certificate or one of the certificates in the certificate chain does not have a valid "
|
|
61
|
+
"signature.";
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (errorStatus & CERT_TRUST_IS_NOT_VALID_FOR_USAGE)
|
|
65
|
+
{
|
|
66
|
+
os << "\n - The certificate or certificate chain is not valid for its proposed usage.";
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (errorStatus & CERT_TRUST_IS_UNTRUSTED_ROOT)
|
|
70
|
+
{
|
|
71
|
+
os << "\n - The certificate or certificate chain is based on an untrusted root.";
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
if (errorStatus & CERT_TRUST_REVOCATION_STATUS_UNKNOWN)
|
|
75
|
+
{
|
|
76
|
+
os << "\n - The revocation status of the certificate or one of the certificates in the certificate "
|
|
77
|
+
"chain is unknown.";
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (errorStatus & CERT_TRUST_IS_CYCLIC)
|
|
81
|
+
{
|
|
82
|
+
os << "\n - One of the certificates in the chain was issued by a certificate in the chain.";
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (errorStatus & CERT_TRUST_INVALID_EXTENSION)
|
|
86
|
+
{
|
|
87
|
+
os << "\n - One of the certificates has an extension that is not valid.";
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
if (errorStatus & CERT_TRUST_INVALID_POLICY_CONSTRAINTS)
|
|
91
|
+
{
|
|
92
|
+
os << "\n - The certificate or one of the certificates in the certificate chain has a policy "
|
|
93
|
+
"constraints extension, and one of the issued certificates has a disallowed policy mapping "
|
|
94
|
+
"extension or does not have a required issuance policies extension.";
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
if (errorStatus & CERT_TRUST_INVALID_BASIC_CONSTRAINTS)
|
|
98
|
+
{
|
|
99
|
+
os << "\n - The certificate or one of the certificates in the certificate chain has a basic "
|
|
100
|
+
"constraints "
|
|
101
|
+
"extension, and either the certificate cannot be used to issue other certificates, or the chain "
|
|
102
|
+
"path length has been exceeded.";
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
if (errorStatus & CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT)
|
|
106
|
+
{
|
|
107
|
+
os << "\n - The certificate or one of the certificates in the certificate chain has a name "
|
|
108
|
+
"constraints extension that contains unsupported fields.";
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
if (errorStatus & CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT)
|
|
112
|
+
{
|
|
113
|
+
os << "\n - The certificate or one of the certificates in the certificate chain has a name "
|
|
114
|
+
"constraints extension and a name constraint is missing for one of the name choices in the end "
|
|
115
|
+
"certificate.";
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
if (errorStatus & CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT)
|
|
119
|
+
{
|
|
120
|
+
os << "\n - The certificate or one of the certificates in the certificate chain has a name "
|
|
121
|
+
"constraints extension, and there is not a permitted name constraint for one of the name choices "
|
|
122
|
+
"in the end certificate.";
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
if (errorStatus & CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT)
|
|
126
|
+
{
|
|
127
|
+
os << "\n - The certificate or one of the certificates in the certificate chain has a name "
|
|
128
|
+
"constraints extension, and one of the name choices in the end certificate is explicitly "
|
|
129
|
+
"excluded.";
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
if (errorStatus & CERT_TRUST_IS_OFFLINE_REVOCATION)
|
|
133
|
+
{
|
|
134
|
+
os << "\n - The revocation status of the certificate or one of the certificates in the certificate "
|
|
135
|
+
"chain is either offline or stale.";
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
if (errorStatus & CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY)
|
|
139
|
+
{
|
|
140
|
+
os << "\n - The end certificate does not have any resultant issuance policies, and one of the issuing "
|
|
141
|
+
"certification authority certificates has a policy constraints extension requiring it.";
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
if (errorStatus & CERT_TRUST_IS_EXPLICIT_DISTRUST)
|
|
145
|
+
{
|
|
146
|
+
os << "\n - The certificate is explicitly distrusted.";
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
if (errorStatus & CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT)
|
|
150
|
+
{
|
|
151
|
+
os << "\n - The certificate does not support a critical extension.";
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
if (errorStatus & CERT_TRUST_HAS_WEAK_SIGNATURE)
|
|
155
|
+
{
|
|
156
|
+
os << "\n - The certificate has not been strong signed.";
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
if (errorStatus & CERT_TRUST_IS_PARTIAL_CHAIN)
|
|
160
|
+
{
|
|
161
|
+
os << "\n - The certificate chain is not complete.";
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
if (errorStatus & CERT_TRUST_CTL_IS_NOT_TIME_VALID)
|
|
165
|
+
{
|
|
166
|
+
os << "\n - A certificate trust list (CTL) used to create this chain was not time valid.";
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
if (errorStatus & CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID)
|
|
170
|
+
{
|
|
171
|
+
os << "\n - A CTL used to create this chain did not have a valid signature.";
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
if (errorStatus & CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE)
|
|
175
|
+
{
|
|
176
|
+
os << "\n - A CTL used to create this chain is not valid for this usage.";
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
return os.str();
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
string policyStatusToString(DWORD policyStatus)
|
|
183
|
+
{
|
|
184
|
+
assert(policyStatus);
|
|
185
|
+
ostringstream os;
|
|
186
|
+
switch (policyStatus)
|
|
187
|
+
{
|
|
188
|
+
case TRUST_E_CERT_SIGNATURE:
|
|
189
|
+
{
|
|
190
|
+
os << "The signature of the certificate cannot be verified.";
|
|
191
|
+
break;
|
|
192
|
+
}
|
|
193
|
+
case CRYPT_E_REVOKED:
|
|
194
|
+
{
|
|
195
|
+
os << "The certificate or signature has been revoked.";
|
|
196
|
+
break;
|
|
197
|
+
}
|
|
198
|
+
case CERT_E_UNTRUSTEDROOT:
|
|
199
|
+
{
|
|
200
|
+
os << "A certification chain processed correctly but terminated in a root certificate that is not "
|
|
201
|
+
"trusted by "
|
|
202
|
+
"the trust provider.";
|
|
203
|
+
break;
|
|
204
|
+
}
|
|
205
|
+
case CERT_E_UNTRUSTEDTESTROOT:
|
|
206
|
+
{
|
|
207
|
+
os << "The root certificate is a testing certificate, and policy settings disallow test certificates.";
|
|
208
|
+
break;
|
|
209
|
+
}
|
|
210
|
+
case CERT_E_CHAINING:
|
|
211
|
+
{
|
|
212
|
+
os << "A chain of certificates was not correctly created.";
|
|
213
|
+
break;
|
|
214
|
+
}
|
|
215
|
+
case CERT_E_WRONG_USAGE:
|
|
216
|
+
{
|
|
217
|
+
os << "The certificate is not valid for the requested usage.";
|
|
218
|
+
break;
|
|
219
|
+
}
|
|
220
|
+
case CERT_E_EXPIRED:
|
|
221
|
+
{
|
|
222
|
+
os << "A required certificate is not within its validity period.";
|
|
223
|
+
break;
|
|
224
|
+
}
|
|
225
|
+
case CERT_E_INVALID_NAME:
|
|
226
|
+
{
|
|
227
|
+
os << "The certificate has an invalid name. Either the name is not included in the permitted list, or "
|
|
228
|
+
"it is "
|
|
229
|
+
"explicitly excluded.";
|
|
230
|
+
break;
|
|
231
|
+
}
|
|
232
|
+
case CERT_E_INVALID_POLICY:
|
|
233
|
+
{
|
|
234
|
+
os << "The certificate has invalid policy.";
|
|
235
|
+
break;
|
|
236
|
+
}
|
|
237
|
+
case TRUST_E_BASIC_CONSTRAINTS:
|
|
238
|
+
{
|
|
239
|
+
os << "The basic constraints of the certificate are not valid, or they are missing.";
|
|
240
|
+
break;
|
|
241
|
+
}
|
|
242
|
+
case CERT_E_CRITICAL:
|
|
243
|
+
{
|
|
244
|
+
os << "The certificate is being used for a purpose other than the purpose specified by its CA.";
|
|
245
|
+
break;
|
|
246
|
+
}
|
|
247
|
+
case CERT_E_VALIDITYPERIODNESTING:
|
|
248
|
+
{
|
|
249
|
+
os << "The validity periods of the certification chain do not nest correctly.";
|
|
250
|
+
break;
|
|
251
|
+
}
|
|
252
|
+
case CRYPT_E_NO_REVOCATION_CHECK:
|
|
253
|
+
{
|
|
254
|
+
os << "The revocation function was unable to check revocation for the certificate.";
|
|
255
|
+
break;
|
|
256
|
+
}
|
|
257
|
+
case CRYPT_E_REVOCATION_OFFLINE:
|
|
258
|
+
{
|
|
259
|
+
os << "The revocation function was unable to check revocation because the revocation server was "
|
|
260
|
+
"offline.";
|
|
261
|
+
break;
|
|
262
|
+
}
|
|
263
|
+
case CERT_E_CN_NO_MATCH:
|
|
264
|
+
{
|
|
265
|
+
os << "The certificate's CN name does not match the passed value.";
|
|
266
|
+
break;
|
|
267
|
+
}
|
|
268
|
+
case CERT_E_PURPOSE:
|
|
269
|
+
{
|
|
270
|
+
os << "The certificate is being used for a purpose other than the purpose specified by its CA.";
|
|
271
|
+
break;
|
|
272
|
+
}
|
|
273
|
+
case CERT_E_REVOKED:
|
|
274
|
+
{
|
|
275
|
+
os << "The certificate has been explicitly revoked by the issuer.";
|
|
276
|
+
break;
|
|
277
|
+
}
|
|
278
|
+
case CERT_E_REVOCATION_FAILURE:
|
|
279
|
+
{
|
|
280
|
+
os << "The revocation process could not continue, and the certificate could not be checked.";
|
|
281
|
+
break;
|
|
282
|
+
}
|
|
283
|
+
case CERT_E_ROLE:
|
|
284
|
+
{
|
|
285
|
+
os << "The certificate does not have a valid role.";
|
|
286
|
+
break;
|
|
287
|
+
}
|
|
288
|
+
default:
|
|
289
|
+
{
|
|
290
|
+
os << "Unknown policy status: " << policyStatus;
|
|
291
|
+
break;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
return os.str();
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
void addMatchingCertificates(HCERTSTORE source, HCERTSTORE target, DWORD findType, const void* findParam)
|
|
298
|
+
{
|
|
299
|
+
PCCERT_CONTEXT next = 0;
|
|
300
|
+
do
|
|
301
|
+
{
|
|
302
|
+
if ((next = CertFindCertificateInStore(
|
|
303
|
+
source,
|
|
304
|
+
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
|
|
305
|
+
0,
|
|
306
|
+
findType,
|
|
307
|
+
findParam,
|
|
308
|
+
next)) != 0)
|
|
309
|
+
{
|
|
310
|
+
if (!CertAddCertificateContextToStore(target, next, CERT_STORE_ADD_ALWAYS, 0))
|
|
311
|
+
{
|
|
312
|
+
throw InitializationException(
|
|
313
|
+
__FILE__,
|
|
314
|
+
__LINE__,
|
|
315
|
+
"SSL transport: error adding certificate to store:\n" + IceInternal::lastErrorToString());
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
} while (next);
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
vector<PCCERT_CONTEXT>
|
|
322
|
+
findCertificates(const string& location, const string& storeName, const string& value, vector<HCERTSTORE>& stores)
|
|
323
|
+
{
|
|
324
|
+
HCERTSTORE store = CertOpenStore(
|
|
325
|
+
CERT_STORE_PROV_SYSTEM,
|
|
326
|
+
0,
|
|
327
|
+
0,
|
|
328
|
+
location == "CurrentUser" ? CERT_SYSTEM_STORE_CURRENT_USER : CERT_SYSTEM_STORE_LOCAL_MACHINE,
|
|
329
|
+
Ice::stringToWstring(storeName).c_str());
|
|
330
|
+
|
|
331
|
+
if (!store)
|
|
332
|
+
{
|
|
333
|
+
throw InitializationException(
|
|
334
|
+
__FILE__,
|
|
335
|
+
__LINE__,
|
|
336
|
+
"SSL transport: failed to open certificate store '" + storeName + "':\n" +
|
|
337
|
+
IceInternal::lastErrorToString());
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
//
|
|
341
|
+
// Start with all of the certificates in the collection and filter as necessary.
|
|
342
|
+
//
|
|
343
|
+
// - If the value is "*", return all certificates.
|
|
344
|
+
// - Otherwise, search using key:value pairs. The following keys are supported:
|
|
345
|
+
//
|
|
346
|
+
// Issuer
|
|
347
|
+
// IssuerDN
|
|
348
|
+
// Serial
|
|
349
|
+
// Subject
|
|
350
|
+
// SubjectDN
|
|
351
|
+
// SubjectKeyId
|
|
352
|
+
// Thumbprint
|
|
353
|
+
//
|
|
354
|
+
// A value must be enclosed in single or double quotes if it contains whitespace.
|
|
355
|
+
//
|
|
356
|
+
HCERTSTORE tmpStore = 0;
|
|
357
|
+
try
|
|
358
|
+
{
|
|
359
|
+
if (value != "*")
|
|
360
|
+
{
|
|
361
|
+
if (value.find(':', 0) == string::npos)
|
|
362
|
+
{
|
|
363
|
+
throw InitializationException(__FILE__, __LINE__, "SSL transport: no key in '" + value + "'");
|
|
364
|
+
}
|
|
365
|
+
size_t start = 0;
|
|
366
|
+
size_t pos;
|
|
367
|
+
while ((pos = value.find(':', start)) != string::npos)
|
|
368
|
+
{
|
|
369
|
+
string field = IceInternal::toUpper(IceInternal::trim(value.substr(start, pos - start)));
|
|
370
|
+
if (field != "SUBJECT" && field != "SUBJECTDN" && field != "ISSUER" && field != "ISSUERDN" &&
|
|
371
|
+
field != "THUMBPRINT" && field != "SUBJECTKEYID" && field != "SERIAL")
|
|
372
|
+
{
|
|
373
|
+
throw InitializationException(
|
|
374
|
+
__FILE__,
|
|
375
|
+
__LINE__,
|
|
376
|
+
"SSL transport: unknown key in '" + value + "'");
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
start = pos + 1;
|
|
380
|
+
while (start < value.size() && (value[start] == ' ' || value[start] == '\t'))
|
|
381
|
+
{
|
|
382
|
+
++start;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
if (start == value.size())
|
|
386
|
+
{
|
|
387
|
+
throw InitializationException(
|
|
388
|
+
__FILE__,
|
|
389
|
+
__LINE__,
|
|
390
|
+
"SSL transport: missing argument in '" + value + "'");
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
string arg;
|
|
394
|
+
if (value[start] == '"' || value[start] == '\'')
|
|
395
|
+
{
|
|
396
|
+
size_t end = start;
|
|
397
|
+
++end;
|
|
398
|
+
while (end < value.size())
|
|
399
|
+
{
|
|
400
|
+
if (value[end] == value[start] && value[end - 1] != '\\')
|
|
401
|
+
{
|
|
402
|
+
break;
|
|
403
|
+
}
|
|
404
|
+
++end;
|
|
405
|
+
}
|
|
406
|
+
if (end == value.size() || value[end] != value[start])
|
|
407
|
+
{
|
|
408
|
+
throw InitializationException(
|
|
409
|
+
__FILE__,
|
|
410
|
+
__LINE__,
|
|
411
|
+
"SSL transport: unmatched quote in '" + value + "'");
|
|
412
|
+
}
|
|
413
|
+
++start;
|
|
414
|
+
arg = value.substr(start, end - start);
|
|
415
|
+
start = end + 1;
|
|
416
|
+
}
|
|
417
|
+
else
|
|
418
|
+
{
|
|
419
|
+
size_t end = value.find_first_of(" \t", start);
|
|
420
|
+
if (end == string::npos)
|
|
421
|
+
{
|
|
422
|
+
arg = value.substr(start);
|
|
423
|
+
start = value.size();
|
|
424
|
+
}
|
|
425
|
+
else
|
|
426
|
+
{
|
|
427
|
+
arg = value.substr(start, end - start);
|
|
428
|
+
start = end + 1;
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
tmpStore = CertOpenStore(CERT_STORE_PROV_MEMORY, 0, 0, 0, 0);
|
|
433
|
+
if (!tmpStore)
|
|
434
|
+
{
|
|
435
|
+
throw InitializationException(
|
|
436
|
+
__FILE__,
|
|
437
|
+
__LINE__,
|
|
438
|
+
"SSL transport: error adding certificate to store:\n" + IceInternal::lastErrorToString());
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
if (field == "SUBJECT" || field == "ISSUER")
|
|
442
|
+
{
|
|
443
|
+
const wstring argW = Ice::stringToWstring(arg);
|
|
444
|
+
DWORD findType = field == "SUBJECT" ? CERT_FIND_SUBJECT_STR : CERT_FIND_ISSUER_STR;
|
|
445
|
+
addMatchingCertificates(store, tmpStore, findType, argW.c_str());
|
|
446
|
+
}
|
|
447
|
+
else if (field == "SUBJECTDN" || field == "ISSUERDN")
|
|
448
|
+
{
|
|
449
|
+
const wstring argW = Ice::stringToWstring(arg);
|
|
450
|
+
DWORD flags[] = {
|
|
451
|
+
CERT_OID_NAME_STR,
|
|
452
|
+
CERT_OID_NAME_STR | CERT_NAME_STR_REVERSE_FLAG,
|
|
453
|
+
CERT_OID_NAME_STR | CERT_NAME_STR_FORCE_UTF8_DIR_STR_FLAG,
|
|
454
|
+
CERT_OID_NAME_STR | CERT_NAME_STR_FORCE_UTF8_DIR_STR_FLAG | CERT_NAME_STR_REVERSE_FLAG};
|
|
455
|
+
for (size_t i = 0; i < sizeof(flags) / sizeof(DWORD); ++i)
|
|
456
|
+
{
|
|
457
|
+
DWORD length = 0;
|
|
458
|
+
if (!CertStrToNameW(X509_ASN_ENCODING, argW.c_str(), flags[i], 0, 0, &length, 0))
|
|
459
|
+
{
|
|
460
|
+
throw InitializationException(
|
|
461
|
+
__FILE__,
|
|
462
|
+
__LINE__,
|
|
463
|
+
"SSL transport: invalid value '" + value + "' for `IceSSL.FindCert' property:\n" +
|
|
464
|
+
IceInternal::lastErrorToString());
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
vector<BYTE> buffer(length);
|
|
468
|
+
if (!CertStrToNameW(X509_ASN_ENCODING, argW.c_str(), flags[i], 0, &buffer[0], &length, 0))
|
|
469
|
+
{
|
|
470
|
+
throw InitializationException(
|
|
471
|
+
__FILE__,
|
|
472
|
+
__LINE__,
|
|
473
|
+
"SSL transport: invalid value '" + value + "' for `IceSSL.FindCert' property:\n" +
|
|
474
|
+
IceInternal::lastErrorToString());
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
CERT_NAME_BLOB name = {length, &buffer[0]};
|
|
478
|
+
|
|
479
|
+
DWORD findType = field == "SUBJECTDN" ? CERT_FIND_SUBJECT_NAME : CERT_FIND_ISSUER_NAME;
|
|
480
|
+
addMatchingCertificates(store, tmpStore, findType, &name);
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
else if (field == "THUMBPRINT" || field == "SUBJECTKEYID")
|
|
484
|
+
{
|
|
485
|
+
vector<BYTE> buffer;
|
|
486
|
+
if (!parseBytes(arg, buffer))
|
|
487
|
+
{
|
|
488
|
+
throw InitializationException(
|
|
489
|
+
__FILE__,
|
|
490
|
+
__LINE__,
|
|
491
|
+
"SSL transport: invalid 'IceSSL.FindCert' property: can't decode the value");
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
CRYPT_HASH_BLOB hash = {static_cast<DWORD>(buffer.size()), &buffer[0]};
|
|
495
|
+
DWORD findType = field == "THUMBPRINT" ? CERT_FIND_HASH : CERT_FIND_KEY_IDENTIFIER;
|
|
496
|
+
addMatchingCertificates(store, tmpStore, findType, &hash);
|
|
497
|
+
}
|
|
498
|
+
else if (field == "SERIAL")
|
|
499
|
+
{
|
|
500
|
+
vector<BYTE> buffer;
|
|
501
|
+
if (!parseBytes(arg, buffer))
|
|
502
|
+
{
|
|
503
|
+
throw InitializationException(
|
|
504
|
+
__FILE__,
|
|
505
|
+
__LINE__,
|
|
506
|
+
"SSL transport: invalid value '" + value + "' for `IceSSL.FindCert' property");
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
// CRYPT_INTEGER_BLOB stores serial data in little-endian format, parseBytes returns big-endian
|
|
510
|
+
// data.
|
|
511
|
+
std::vector<BYTE> serialData(buffer.size());
|
|
512
|
+
std::reverse_copy(std::begin(buffer), std::end(buffer), std::begin(serialData));
|
|
513
|
+
|
|
514
|
+
CRYPT_INTEGER_BLOB serial = {static_cast<DWORD>(serialData.size()), &serialData[0]};
|
|
515
|
+
PCCERT_CONTEXT next = nullptr;
|
|
516
|
+
do
|
|
517
|
+
{
|
|
518
|
+
if ((next = CertFindCertificateInStore(
|
|
519
|
+
store,
|
|
520
|
+
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
|
|
521
|
+
0,
|
|
522
|
+
CERT_FIND_ANY,
|
|
523
|
+
0,
|
|
524
|
+
next)) != 0)
|
|
525
|
+
{
|
|
526
|
+
if (CertCompareIntegerBlob(&serial, &next->pCertInfo->SerialNumber))
|
|
527
|
+
{
|
|
528
|
+
if (!CertAddCertificateContextToStore(tmpStore, next, CERT_STORE_ADD_ALWAYS, 0))
|
|
529
|
+
{
|
|
530
|
+
throw InitializationException(
|
|
531
|
+
__FILE__,
|
|
532
|
+
__LINE__,
|
|
533
|
+
"SSL transport: error adding certificate to store:\n" +
|
|
534
|
+
IceInternal::lastErrorToString());
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
} while (next);
|
|
539
|
+
}
|
|
540
|
+
CertCloseStore(store, 0);
|
|
541
|
+
store = tmpStore;
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
catch (...)
|
|
546
|
+
{
|
|
547
|
+
if (store && store != tmpStore)
|
|
548
|
+
{
|
|
549
|
+
CertCloseStore(store, 0);
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
if (tmpStore)
|
|
553
|
+
{
|
|
554
|
+
CertCloseStore(tmpStore, 0);
|
|
555
|
+
tmpStore = nullptr;
|
|
556
|
+
}
|
|
557
|
+
throw;
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
vector<PCCERT_CONTEXT> certs;
|
|
561
|
+
if (store)
|
|
562
|
+
{
|
|
563
|
+
PCCERT_CONTEXT next = nullptr;
|
|
564
|
+
do
|
|
565
|
+
{
|
|
566
|
+
if ((next = CertFindCertificateInStore(
|
|
567
|
+
store,
|
|
568
|
+
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
|
|
569
|
+
0,
|
|
570
|
+
CERT_FIND_ANY,
|
|
571
|
+
0,
|
|
572
|
+
next)) != 0)
|
|
573
|
+
{
|
|
574
|
+
certs.push_back(next);
|
|
575
|
+
}
|
|
576
|
+
} while (next);
|
|
577
|
+
stores.push_back(store);
|
|
578
|
+
}
|
|
579
|
+
return certs;
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
void addCertificatesToStore(const string& file, HCERTSTORE store, PCCERT_CONTEXT* cert = nullptr)
|
|
583
|
+
{
|
|
584
|
+
vector<char> buffer;
|
|
585
|
+
readFile(file, buffer);
|
|
586
|
+
if (buffer.empty())
|
|
587
|
+
{
|
|
588
|
+
ostringstream os;
|
|
589
|
+
os << "SSL transport: certificate file is empty: '" << file << "'";
|
|
590
|
+
throw InitializationException(__FILE__, __LINE__, os.str());
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
string strbuf(buffer.begin(), buffer.end());
|
|
594
|
+
string::size_type size, startpos, endpos = 0;
|
|
595
|
+
bool first = true;
|
|
596
|
+
while (true)
|
|
597
|
+
{
|
|
598
|
+
startpos = strbuf.find("-----BEGIN CERTIFICATE-----", endpos);
|
|
599
|
+
if (startpos != string::npos)
|
|
600
|
+
{
|
|
601
|
+
endpos = strbuf.find("-----END CERTIFICATE-----", startpos);
|
|
602
|
+
size = endpos - startpos + sizeof("-----END CERTIFICATE-----");
|
|
603
|
+
}
|
|
604
|
+
else if (first)
|
|
605
|
+
{
|
|
606
|
+
startpos = 0;
|
|
607
|
+
endpos = string::npos;
|
|
608
|
+
size = strbuf.size();
|
|
609
|
+
}
|
|
610
|
+
else
|
|
611
|
+
{
|
|
612
|
+
break;
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
vector<BYTE> outBuffer;
|
|
616
|
+
outBuffer.resize(size);
|
|
617
|
+
DWORD outLength = static_cast<DWORD>(outBuffer.size());
|
|
618
|
+
if (!CryptStringToBinary(
|
|
619
|
+
&buffer[startpos],
|
|
620
|
+
static_cast<DWORD>(size),
|
|
621
|
+
CRYPT_STRING_ANY,
|
|
622
|
+
&outBuffer[0],
|
|
623
|
+
&outLength,
|
|
624
|
+
0,
|
|
625
|
+
0))
|
|
626
|
+
{
|
|
627
|
+
assert(GetLastError() != ERROR_MORE_DATA); // Base64 data should always be bigger than binary
|
|
628
|
+
throw InitializationException(
|
|
629
|
+
__FILE__,
|
|
630
|
+
__LINE__,
|
|
631
|
+
"SSL transport: error decoding certificate:\n" + lastErrorToString());
|
|
632
|
+
}
|
|
633
|
+
|
|
634
|
+
if (!CertAddEncodedCertificateToStore(
|
|
635
|
+
store,
|
|
636
|
+
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
|
|
637
|
+
&outBuffer[0],
|
|
638
|
+
outLength,
|
|
639
|
+
CERT_STORE_ADD_NEW,
|
|
640
|
+
first ? cert : 0))
|
|
641
|
+
{
|
|
642
|
+
if (GetLastError() != static_cast<DWORD>(CRYPT_E_EXISTS))
|
|
643
|
+
{
|
|
644
|
+
throw InitializationException(
|
|
645
|
+
__FILE__,
|
|
646
|
+
__LINE__,
|
|
647
|
+
"SSL transport: error decoding certificate:\n" + lastErrorToString());
|
|
648
|
+
}
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
first = false;
|
|
652
|
+
}
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
void verifyPeerCertName(
|
|
656
|
+
PCCERT_CONTEXT cert,
|
|
657
|
+
const string& address,
|
|
658
|
+
const Ice::LoggerPtr& logger,
|
|
659
|
+
int traceLevel,
|
|
660
|
+
const string& traceCategory)
|
|
661
|
+
{
|
|
662
|
+
// For an outgoing connection, we compare the proxy address (if any) against fields in the server's certificate
|
|
663
|
+
// (if any).
|
|
664
|
+
|
|
665
|
+
// Extract the IP addresses and the DNS names from the subject alternative names.
|
|
666
|
+
vector<pair<int, string>> subjectAltNames = getSubjectAltNames(cert);
|
|
667
|
+
vector<string> ipAddresses;
|
|
668
|
+
vector<string> dnsNames;
|
|
669
|
+
for (vector<pair<int, string>>::const_iterator p = subjectAltNames.begin(); p != subjectAltNames.end(); ++p)
|
|
670
|
+
{
|
|
671
|
+
if (p->first == AltNAmeIP)
|
|
672
|
+
{
|
|
673
|
+
ipAddresses.push_back(IceInternal::toLower(p->second));
|
|
674
|
+
}
|
|
675
|
+
else if (p->first == AltNameDNS)
|
|
676
|
+
{
|
|
677
|
+
dnsNames.push_back(IceInternal::toLower(p->second));
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
bool certNameOK = false;
|
|
682
|
+
string addrLower = IceInternal::toLower(address);
|
|
683
|
+
bool isIpAddress = IceInternal::isIpAddress(address);
|
|
684
|
+
|
|
685
|
+
// If address is an IP address, compare it to the subject alternative names IP address
|
|
686
|
+
if (isIpAddress)
|
|
687
|
+
{
|
|
688
|
+
certNameOK = find(ipAddresses.begin(), ipAddresses.end(), addrLower) != ipAddresses.end();
|
|
689
|
+
}
|
|
690
|
+
else
|
|
691
|
+
{
|
|
692
|
+
// If subjectAlt is empty compare it to the subject CN, otherwise compare it to the to the subject alt
|
|
693
|
+
// name dnsNames.
|
|
694
|
+
if (dnsNames.empty())
|
|
695
|
+
{
|
|
696
|
+
auto d = DistinguishedName(getSubjectName(cert));
|
|
697
|
+
string dn = IceInternal::toLower(string(d));
|
|
698
|
+
string cn = "cn=" + addrLower;
|
|
699
|
+
string::size_type pos = dn.find(cn);
|
|
700
|
+
if (pos != string::npos)
|
|
701
|
+
{
|
|
702
|
+
// Ensure we match the entire common name.
|
|
703
|
+
certNameOK = (pos + cn.size() == dn.size()) || (dn[pos + cn.size()] == ',');
|
|
704
|
+
}
|
|
705
|
+
}
|
|
706
|
+
else
|
|
707
|
+
{
|
|
708
|
+
certNameOK = find(dnsNames.begin(), dnsNames.end(), addrLower) != dnsNames.end();
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
|
|
712
|
+
if (!certNameOK)
|
|
713
|
+
{
|
|
714
|
+
ostringstream os;
|
|
715
|
+
os << "SSL transport: certificate verification failure "
|
|
716
|
+
<< (isIpAddress ? "IP address mismatch" : "Hostname mismatch");
|
|
717
|
+
string msg = os.str();
|
|
718
|
+
if (traceLevel >= 1)
|
|
719
|
+
{
|
|
720
|
+
Trace out(logger, traceCategory);
|
|
721
|
+
out << msg;
|
|
722
|
+
}
|
|
723
|
+
throw SecurityException(__FILE__, __LINE__, msg);
|
|
724
|
+
}
|
|
725
|
+
}
|
|
726
|
+
}
|
|
727
|
+
|
|
728
|
+
Schannel::SSLEngine::SSLEngine(const IceInternal::InstancePtr& instance)
|
|
729
|
+
: Ice::SSL::SSLEngine(instance),
|
|
730
|
+
_rootStore(nullptr),
|
|
731
|
+
_chainEngine(nullptr)
|
|
732
|
+
{
|
|
733
|
+
}
|
|
734
|
+
|
|
735
|
+
void
|
|
736
|
+
Schannel::SSLEngine::initialize()
|
|
737
|
+
{
|
|
738
|
+
//
|
|
739
|
+
// BUGFIX: we use a global mutex for the initialization of Schannel to
|
|
740
|
+
// avoid crashes occurring with last Schannel updates see:
|
|
741
|
+
// https://github.com/zeroc-ice/ice/issues/242
|
|
742
|
+
//
|
|
743
|
+
lock_guard globalLock(globalMutex);
|
|
744
|
+
|
|
745
|
+
Ice::SSL::SSLEngine::initialize();
|
|
746
|
+
|
|
747
|
+
const PropertiesPtr properties = getProperties();
|
|
748
|
+
|
|
749
|
+
// Check for a default directory. We look in this directory for files mentioned in the configuration.
|
|
750
|
+
const string defaultDir = properties->getIceProperty("IceSSL.DefaultDir");
|
|
751
|
+
|
|
752
|
+
string certStoreLocation = properties->getIceProperty("IceSSL.CertStoreLocation");
|
|
753
|
+
if (certStoreLocation != "CurrentUser" && certStoreLocation != "LocalMachine")
|
|
754
|
+
{
|
|
755
|
+
getLogger()->warning(
|
|
756
|
+
"invalid IceSSL.CertStoreLocation value '" + certStoreLocation + "' adjusted to 'CurrentUser'");
|
|
757
|
+
certStoreLocation = "CurrentUser";
|
|
758
|
+
}
|
|
759
|
+
|
|
760
|
+
//
|
|
761
|
+
// Create trusted CA store with contents of IceSSL.CAs
|
|
762
|
+
//
|
|
763
|
+
string caFile = properties->getIceProperty("IceSSL.CAs");
|
|
764
|
+
if (!caFile.empty() || properties->getIcePropertyAsInt("IceSSL.UsePlatformCAs") <= 0)
|
|
765
|
+
{
|
|
766
|
+
_rootStore = CertOpenStore(CERT_STORE_PROV_MEMORY, 0, 0, 0, 0);
|
|
767
|
+
if (!_rootStore)
|
|
768
|
+
{
|
|
769
|
+
throw InitializationException(
|
|
770
|
+
__FILE__,
|
|
771
|
+
__LINE__,
|
|
772
|
+
"SSL transport: error creating in memory certificate store:\n" + lastErrorToString());
|
|
773
|
+
}
|
|
774
|
+
}
|
|
775
|
+
if (!caFile.empty())
|
|
776
|
+
{
|
|
777
|
+
optional<string> resolved = resolveFilePath(caFile, defaultDir);
|
|
778
|
+
|
|
779
|
+
if (!resolved)
|
|
780
|
+
{
|
|
781
|
+
ostringstream os;
|
|
782
|
+
os << "SSL transport: CA certificate file not found: '" << caFile << "'";
|
|
783
|
+
throw InitializationException(__FILE__, __LINE__, os.str());
|
|
784
|
+
}
|
|
785
|
+
|
|
786
|
+
addCertificatesToStore(*resolved, _rootStore);
|
|
787
|
+
}
|
|
788
|
+
|
|
789
|
+
if (_rootStore)
|
|
790
|
+
{
|
|
791
|
+
//
|
|
792
|
+
// Create a chain engine that uses our Trusted Root Store
|
|
793
|
+
//
|
|
794
|
+
CERT_CHAIN_ENGINE_CONFIG config;
|
|
795
|
+
memset(&config, 0, sizeof(CERT_CHAIN_ENGINE_CONFIG));
|
|
796
|
+
config.cbSize = sizeof(CERT_CHAIN_ENGINE_CONFIG);
|
|
797
|
+
config.hExclusiveRoot = _rootStore;
|
|
798
|
+
|
|
799
|
+
//
|
|
800
|
+
// Build the chain using the LocalMachine registry location as opposed
|
|
801
|
+
// to the CurrentUser location.
|
|
802
|
+
//
|
|
803
|
+
if (certStoreLocation == "LocalMachine")
|
|
804
|
+
{
|
|
805
|
+
config.dwFlags = CERT_CHAIN_USE_LOCAL_MACHINE_STORE;
|
|
806
|
+
}
|
|
807
|
+
|
|
808
|
+
if (!CertCreateCertificateChainEngine(&config, &_chainEngine))
|
|
809
|
+
{
|
|
810
|
+
throw InitializationException(
|
|
811
|
+
__FILE__,
|
|
812
|
+
__LINE__,
|
|
813
|
+
"SSL transport: error creating certificate chain engine:\n" + lastErrorToString());
|
|
814
|
+
}
|
|
815
|
+
}
|
|
816
|
+
else
|
|
817
|
+
{
|
|
818
|
+
_chainEngine = (certStoreLocation == "LocalMachine") ? HCCE_LOCAL_MACHINE : HCCE_CURRENT_USER;
|
|
819
|
+
}
|
|
820
|
+
|
|
821
|
+
string certFile = properties->getIceProperty("IceSSL.CertFile");
|
|
822
|
+
string keyFile = properties->getIceProperty("IceSSL.KeyFile");
|
|
823
|
+
string findCert = properties->getIceProperty("IceSSL.FindCert");
|
|
824
|
+
|
|
825
|
+
if (!certFile.empty())
|
|
826
|
+
{
|
|
827
|
+
optional<string> resolved = resolveFilePath(certFile, defaultDir);
|
|
828
|
+
|
|
829
|
+
if (!resolved)
|
|
830
|
+
{
|
|
831
|
+
ostringstream os;
|
|
832
|
+
os << "SSL transport: certificate file not found: '" << certFile << "'";
|
|
833
|
+
throw InitializationException(__FILE__, __LINE__, os.str());
|
|
834
|
+
}
|
|
835
|
+
certFile = *resolved;
|
|
836
|
+
|
|
837
|
+
vector<char> buffer;
|
|
838
|
+
readFile(certFile, buffer);
|
|
839
|
+
if (buffer.empty())
|
|
840
|
+
{
|
|
841
|
+
ostringstream os;
|
|
842
|
+
os << "SSL transport: certificate file is empty: '" << certFile << "'";
|
|
843
|
+
throw InitializationException(__FILE__, __LINE__, os.str());
|
|
844
|
+
}
|
|
845
|
+
|
|
846
|
+
CRYPT_DATA_BLOB pfxBlob;
|
|
847
|
+
pfxBlob.cbData = static_cast<DWORD>(buffer.size());
|
|
848
|
+
pfxBlob.pbData = reinterpret_cast<BYTE*>(&buffer[0]);
|
|
849
|
+
|
|
850
|
+
PCCERT_CONTEXT cert = nullptr;
|
|
851
|
+
DWORD importFlags = (certStoreLocation == "LocalMachine") ? CRYPT_MACHINE_KEYSET : CRYPT_USER_KEYSET;
|
|
852
|
+
HCERTSTORE store = PFXImportCertStore(
|
|
853
|
+
&pfxBlob,
|
|
854
|
+
Ice::stringToWstring(properties->getIceProperty("IceSSL.Password")).c_str(),
|
|
855
|
+
importFlags);
|
|
856
|
+
int err = store ? 0 : GetLastError();
|
|
857
|
+
|
|
858
|
+
if (store)
|
|
859
|
+
{
|
|
860
|
+
// Try to find a certificate chain.
|
|
861
|
+
CERT_CHAIN_FIND_BY_ISSUER_PARA para;
|
|
862
|
+
memset(¶, 0, sizeof(CERT_CHAIN_FIND_BY_ISSUER_PARA));
|
|
863
|
+
para.cbSize = sizeof(CERT_CHAIN_FIND_BY_ISSUER_PARA);
|
|
864
|
+
|
|
865
|
+
PCCERT_CHAIN_CONTEXT chain = nullptr;
|
|
866
|
+
while (!cert)
|
|
867
|
+
{
|
|
868
|
+
chain = CertFindChainInStore(
|
|
869
|
+
store,
|
|
870
|
+
X509_ASN_ENCODING,
|
|
871
|
+
CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_URL_FLAG, // Don't fetch anything from the Internet
|
|
872
|
+
CERT_CHAIN_FIND_BY_ISSUER,
|
|
873
|
+
¶,
|
|
874
|
+
chain);
|
|
875
|
+
if (!chain)
|
|
876
|
+
{
|
|
877
|
+
break; // No more chains found in the store.
|
|
878
|
+
}
|
|
879
|
+
|
|
880
|
+
if (chain->cChain > 0 && chain->rgpChain[0]->cElement > 0)
|
|
881
|
+
{
|
|
882
|
+
cert = CertDuplicateCertificateContext(chain->rgpChain[0]->rgpElement[0]->pCertContext);
|
|
883
|
+
}
|
|
884
|
+
CertFreeCertificateChain(chain);
|
|
885
|
+
}
|
|
886
|
+
|
|
887
|
+
// Check if we can find a certificate if we couldn't find a chain.
|
|
888
|
+
if (!cert)
|
|
889
|
+
{
|
|
890
|
+
cert = CertFindCertificateInStore(store, X509_ASN_ENCODING, 0, CERT_FIND_ANY, 0, cert);
|
|
891
|
+
}
|
|
892
|
+
if (!cert)
|
|
893
|
+
{
|
|
894
|
+
throw InitializationException(
|
|
895
|
+
__FILE__,
|
|
896
|
+
__LINE__,
|
|
897
|
+
"SSL transport: certificate error:\n" + lastErrorToString());
|
|
898
|
+
}
|
|
899
|
+
_allCerts.push_back(cert);
|
|
900
|
+
_stores.push_back(store);
|
|
901
|
+
}
|
|
902
|
+
else
|
|
903
|
+
{
|
|
904
|
+
assert(err);
|
|
905
|
+
if (err != CRYPT_E_BAD_ENCODE)
|
|
906
|
+
{
|
|
907
|
+
throw InitializationException(
|
|
908
|
+
__FILE__,
|
|
909
|
+
__LINE__,
|
|
910
|
+
"SSL transport: error decoding certificate:\n" + lastErrorToString());
|
|
911
|
+
}
|
|
912
|
+
|
|
913
|
+
// Try to load certificate & key as PEM files.
|
|
914
|
+
err = 0;
|
|
915
|
+
resolved = resolveFilePath(keyFile, defaultDir);
|
|
916
|
+
if (!resolved)
|
|
917
|
+
{
|
|
918
|
+
ostringstream os;
|
|
919
|
+
os << "SSL transport: key file not found: '" << keyFile << "'";
|
|
920
|
+
throw InitializationException(__FILE__, __LINE__, os.str());
|
|
921
|
+
}
|
|
922
|
+
keyFile = *resolved;
|
|
923
|
+
|
|
924
|
+
readFile(keyFile, buffer);
|
|
925
|
+
if (buffer.empty())
|
|
926
|
+
{
|
|
927
|
+
ostringstream os;
|
|
928
|
+
os << "SSL transport: key file is empty: '" << keyFile << "'";
|
|
929
|
+
throw InitializationException(__FILE__, __LINE__, os.str());
|
|
930
|
+
}
|
|
931
|
+
|
|
932
|
+
vector<BYTE> outBuffer;
|
|
933
|
+
outBuffer.resize(buffer.size());
|
|
934
|
+
DWORD outLength = static_cast<DWORD>(buffer.size());
|
|
935
|
+
|
|
936
|
+
// Convert the PEM encoded buffer to DER binary format.
|
|
937
|
+
if (!CryptStringToBinary(
|
|
938
|
+
&buffer[0],
|
|
939
|
+
static_cast<DWORD>(buffer.size()),
|
|
940
|
+
CRYPT_STRING_BASE64HEADER,
|
|
941
|
+
&outBuffer[0],
|
|
942
|
+
&outLength,
|
|
943
|
+
0,
|
|
944
|
+
0))
|
|
945
|
+
{
|
|
946
|
+
ostringstream os;
|
|
947
|
+
os << "SSL transport: error decoding key '" << keyFile << "':\n" << lastErrorToString();
|
|
948
|
+
throw InitializationException(__FILE__, __LINE__, os.str());
|
|
949
|
+
}
|
|
950
|
+
|
|
951
|
+
PCRYPT_PRIVATE_KEY_INFO keyInfo = nullptr;
|
|
952
|
+
BYTE* key = nullptr;
|
|
953
|
+
HCRYPTKEY hKey = 0;
|
|
954
|
+
try
|
|
955
|
+
{
|
|
956
|
+
// First try to decode as a PKCS#8 key, if that fails try PKCS#1.
|
|
957
|
+
DWORD decodedLength = 0;
|
|
958
|
+
if (CryptDecodeObjectEx(
|
|
959
|
+
X509_ASN_ENCODING,
|
|
960
|
+
PKCS_PRIVATE_KEY_INFO,
|
|
961
|
+
&outBuffer[0],
|
|
962
|
+
outLength,
|
|
963
|
+
CRYPT_DECODE_ALLOC_FLAG,
|
|
964
|
+
0,
|
|
965
|
+
&keyInfo,
|
|
966
|
+
&decodedLength))
|
|
967
|
+
{
|
|
968
|
+
// Check that we are using an RSA Key.
|
|
969
|
+
if (strcmp(keyInfo->Algorithm.pszObjId, szOID_RSA_RSA))
|
|
970
|
+
{
|
|
971
|
+
ostringstream os;
|
|
972
|
+
os << "SSL transport: error unknow key algorithm: '" << keyInfo->Algorithm.pszObjId << "'";
|
|
973
|
+
throw InitializationException(__FILE__, __LINE__, os.str());
|
|
974
|
+
}
|
|
975
|
+
|
|
976
|
+
// Decode the private key BLOB.
|
|
977
|
+
if (!CryptDecodeObjectEx(
|
|
978
|
+
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
|
|
979
|
+
PKCS_RSA_PRIVATE_KEY,
|
|
980
|
+
keyInfo->PrivateKey.pbData,
|
|
981
|
+
keyInfo->PrivateKey.cbData,
|
|
982
|
+
CRYPT_DECODE_ALLOC_FLAG,
|
|
983
|
+
0,
|
|
984
|
+
&key,
|
|
985
|
+
&outLength))
|
|
986
|
+
{
|
|
987
|
+
ostringstream os;
|
|
988
|
+
os << "SSL transport: error decoding key '" + keyFile + "':\n" + lastErrorToString();
|
|
989
|
+
throw InitializationException(__FILE__, __LINE__, os.str());
|
|
990
|
+
}
|
|
991
|
+
LocalFree(keyInfo);
|
|
992
|
+
keyInfo = nullptr;
|
|
993
|
+
}
|
|
994
|
+
else
|
|
995
|
+
{
|
|
996
|
+
// Decode the private key BLOB.
|
|
997
|
+
if (!CryptDecodeObjectEx(
|
|
998
|
+
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
|
|
999
|
+
PKCS_RSA_PRIVATE_KEY,
|
|
1000
|
+
&outBuffer[0],
|
|
1001
|
+
outLength,
|
|
1002
|
+
CRYPT_DECODE_ALLOC_FLAG,
|
|
1003
|
+
0,
|
|
1004
|
+
&key,
|
|
1005
|
+
&outLength))
|
|
1006
|
+
{
|
|
1007
|
+
ostringstream os;
|
|
1008
|
+
os << "SSL transport: error decoding key '" << keyFile << "':\n" << lastErrorToString();
|
|
1009
|
+
throw InitializationException(__FILE__, __LINE__, os.str());
|
|
1010
|
+
}
|
|
1011
|
+
}
|
|
1012
|
+
|
|
1013
|
+
// Create a new RSA key set to store our key.
|
|
1014
|
+
const wstring keySetName = Ice::stringToWstring(generateUUID());
|
|
1015
|
+
HCRYPTPROV cryptProv = 0;
|
|
1016
|
+
|
|
1017
|
+
DWORD contextFlags = CRYPT_NEWKEYSET;
|
|
1018
|
+
if (certStoreLocation == "LocalMachine")
|
|
1019
|
+
{
|
|
1020
|
+
contextFlags |= CRYPT_MACHINE_KEYSET;
|
|
1021
|
+
};
|
|
1022
|
+
|
|
1023
|
+
if (!CryptAcquireContextW(
|
|
1024
|
+
&cryptProv,
|
|
1025
|
+
keySetName.c_str(),
|
|
1026
|
+
MS_ENHANCED_PROV_W,
|
|
1027
|
+
PROV_RSA_FULL,
|
|
1028
|
+
contextFlags))
|
|
1029
|
+
{
|
|
1030
|
+
throw InitializationException(
|
|
1031
|
+
__FILE__,
|
|
1032
|
+
__LINE__,
|
|
1033
|
+
"SSL transport: error acquiring cryptographic context:\n" + lastErrorToString());
|
|
1034
|
+
}
|
|
1035
|
+
|
|
1036
|
+
// Import the private key.
|
|
1037
|
+
if (!CryptImportKey(cryptProv, key, outLength, 0, 0, &hKey))
|
|
1038
|
+
{
|
|
1039
|
+
ostringstream os;
|
|
1040
|
+
os << "SSL transport: error importing key '" << keyFile << "':\n" + lastErrorToString();
|
|
1041
|
+
throw InitializationException(__FILE__, __LINE__, os.str());
|
|
1042
|
+
}
|
|
1043
|
+
LocalFree(key);
|
|
1044
|
+
key = nullptr;
|
|
1045
|
+
|
|
1046
|
+
CryptDestroyKey(hKey);
|
|
1047
|
+
hKey = 0;
|
|
1048
|
+
|
|
1049
|
+
// Create a new memory store to place the certificate.
|
|
1050
|
+
store = CertOpenStore(CERT_STORE_PROV_MEMORY, 0, 0, 0, 0);
|
|
1051
|
+
if (!store)
|
|
1052
|
+
{
|
|
1053
|
+
throw InitializationException(
|
|
1054
|
+
__FILE__,
|
|
1055
|
+
__LINE__,
|
|
1056
|
+
"SSL transport: error creating certificate store:\n" + lastErrorToString());
|
|
1057
|
+
}
|
|
1058
|
+
|
|
1059
|
+
addCertificatesToStore(certFile, store, &cert);
|
|
1060
|
+
|
|
1061
|
+
// Associate key & certificate.
|
|
1062
|
+
CRYPT_KEY_PROV_INFO keyProvInfo;
|
|
1063
|
+
memset(&keyProvInfo, 0, sizeof(keyProvInfo));
|
|
1064
|
+
keyProvInfo.pwszContainerName = const_cast<wchar_t*>(keySetName.c_str());
|
|
1065
|
+
keyProvInfo.pwszProvName = const_cast<wchar_t*>(MS_DEF_PROV_W);
|
|
1066
|
+
keyProvInfo.dwProvType = PROV_RSA_FULL;
|
|
1067
|
+
keyProvInfo.dwKeySpec = AT_KEYEXCHANGE;
|
|
1068
|
+
if (!CertSetCertificateContextProperty(cert, CERT_KEY_PROV_INFO_PROP_ID, 0, &keyProvInfo))
|
|
1069
|
+
{
|
|
1070
|
+
throw InitializationException(
|
|
1071
|
+
__FILE__,
|
|
1072
|
+
__LINE__,
|
|
1073
|
+
"SSL transport: error setting certificate property:\n" + lastErrorToString());
|
|
1074
|
+
}
|
|
1075
|
+
|
|
1076
|
+
_importedCerts.push_back(cert);
|
|
1077
|
+
_allCerts.push_back(cert);
|
|
1078
|
+
_stores.push_back(store);
|
|
1079
|
+
}
|
|
1080
|
+
catch (...)
|
|
1081
|
+
{
|
|
1082
|
+
if (keyInfo)
|
|
1083
|
+
{
|
|
1084
|
+
LocalFree(keyInfo);
|
|
1085
|
+
}
|
|
1086
|
+
|
|
1087
|
+
if (key)
|
|
1088
|
+
{
|
|
1089
|
+
LocalFree(key);
|
|
1090
|
+
}
|
|
1091
|
+
|
|
1092
|
+
if (hKey)
|
|
1093
|
+
{
|
|
1094
|
+
CryptDestroyKey(hKey);
|
|
1095
|
+
}
|
|
1096
|
+
|
|
1097
|
+
if (cert)
|
|
1098
|
+
{
|
|
1099
|
+
CertFreeCertificateContext(cert);
|
|
1100
|
+
}
|
|
1101
|
+
|
|
1102
|
+
if (store)
|
|
1103
|
+
{
|
|
1104
|
+
CertCloseStore(store, 0);
|
|
1105
|
+
}
|
|
1106
|
+
throw;
|
|
1107
|
+
}
|
|
1108
|
+
}
|
|
1109
|
+
}
|
|
1110
|
+
else if (!findCert.empty())
|
|
1111
|
+
{
|
|
1112
|
+
string certStore = properties->getIceProperty("IceSSL.CertStore");
|
|
1113
|
+
vector<PCCERT_CONTEXT> certs = findCertificates(certStoreLocation, certStore, findCert, _stores);
|
|
1114
|
+
if (certs.empty())
|
|
1115
|
+
{
|
|
1116
|
+
throw InitializationException(__FILE__, __LINE__, "SSL transport: no certificates found");
|
|
1117
|
+
}
|
|
1118
|
+
_allCerts.insert(_allCerts.end(), certs.begin(), certs.end());
|
|
1119
|
+
}
|
|
1120
|
+
}
|
|
1121
|
+
|
|
1122
|
+
string
|
|
1123
|
+
Schannel::SSLEngine::getCipherName(ALG_ID cipher) const
|
|
1124
|
+
{
|
|
1125
|
+
switch (cipher)
|
|
1126
|
+
{
|
|
1127
|
+
case CALG_3DES:
|
|
1128
|
+
return "3DES";
|
|
1129
|
+
case CALG_3DES_112:
|
|
1130
|
+
return "3DES_112";
|
|
1131
|
+
case CALG_AES:
|
|
1132
|
+
return "AES";
|
|
1133
|
+
case CALG_AES_128:
|
|
1134
|
+
return "AES_128";
|
|
1135
|
+
case CALG_AES_192:
|
|
1136
|
+
return "AES_192";
|
|
1137
|
+
case CALG_AES_256:
|
|
1138
|
+
return "AES_256";
|
|
1139
|
+
case CALG_AGREEDKEY_ANY:
|
|
1140
|
+
return "AGREEDKEY_ANY";
|
|
1141
|
+
case CALG_CYLINK_MEK:
|
|
1142
|
+
return "CYLINK_MEK";
|
|
1143
|
+
case CALG_DES:
|
|
1144
|
+
return "DES";
|
|
1145
|
+
case CALG_DESX:
|
|
1146
|
+
return "DESX";
|
|
1147
|
+
case CALG_DH_EPHEM:
|
|
1148
|
+
return "DH_EPHEM";
|
|
1149
|
+
case CALG_DH_SF:
|
|
1150
|
+
return "DH_SF";
|
|
1151
|
+
case CALG_DSS_SIGN:
|
|
1152
|
+
return "DSS_SIGN";
|
|
1153
|
+
case CALG_ECDH:
|
|
1154
|
+
return "ECDH";
|
|
1155
|
+
case ICESSL_CALG_ECDH_EPHEM:
|
|
1156
|
+
return "ECDH_EPHEM";
|
|
1157
|
+
case CALG_ECDSA:
|
|
1158
|
+
return "ECDSA";
|
|
1159
|
+
case CALG_HASH_REPLACE_OWF:
|
|
1160
|
+
return "HASH_REPLACE_OWF";
|
|
1161
|
+
case CALG_HUGHES_MD5:
|
|
1162
|
+
return "HUGHES_MD5";
|
|
1163
|
+
case CALG_HMAC:
|
|
1164
|
+
return "HMAC";
|
|
1165
|
+
case CALG_MAC:
|
|
1166
|
+
return "MAC";
|
|
1167
|
+
case CALG_MD2:
|
|
1168
|
+
return "MD2";
|
|
1169
|
+
case CALG_MD4:
|
|
1170
|
+
return "MD4";
|
|
1171
|
+
case CALG_MD5:
|
|
1172
|
+
return "MD5";
|
|
1173
|
+
case CALG_NO_SIGN:
|
|
1174
|
+
return "NO_SIGN";
|
|
1175
|
+
case CALG_RC2:
|
|
1176
|
+
return "RC2";
|
|
1177
|
+
case CALG_RC4:
|
|
1178
|
+
return "RC4";
|
|
1179
|
+
case CALG_RC5:
|
|
1180
|
+
return "RC5";
|
|
1181
|
+
case CALG_RSA_KEYX:
|
|
1182
|
+
return "RSA_KEYX";
|
|
1183
|
+
case CALG_RSA_SIGN:
|
|
1184
|
+
return "RSA_SIGN";
|
|
1185
|
+
case CALG_SHA1:
|
|
1186
|
+
return "SHA1";
|
|
1187
|
+
case CALG_SHA_256:
|
|
1188
|
+
return "SHA_256";
|
|
1189
|
+
case CALG_SHA_384:
|
|
1190
|
+
return "SHA_384";
|
|
1191
|
+
case CALG_SHA_512:
|
|
1192
|
+
return "SHA_512";
|
|
1193
|
+
default:
|
|
1194
|
+
{
|
|
1195
|
+
ostringstream os;
|
|
1196
|
+
os << "Unknown cipher: " << cipher;
|
|
1197
|
+
return os.str();
|
|
1198
|
+
}
|
|
1199
|
+
}
|
|
1200
|
+
}
|
|
1201
|
+
|
|
1202
|
+
void
|
|
1203
|
+
Schannel::SSLEngine::destroy()
|
|
1204
|
+
{
|
|
1205
|
+
if (_chainEngine && _chainEngine != HCCE_CURRENT_USER && _chainEngine != HCCE_LOCAL_MACHINE)
|
|
1206
|
+
{
|
|
1207
|
+
CertFreeCertificateChainEngine(_chainEngine);
|
|
1208
|
+
}
|
|
1209
|
+
|
|
1210
|
+
if (_rootStore)
|
|
1211
|
+
{
|
|
1212
|
+
CertCloseStore(_rootStore, 0);
|
|
1213
|
+
}
|
|
1214
|
+
|
|
1215
|
+
for (vector<PCCERT_CONTEXT>::const_iterator i = _importedCerts.begin(); i != _importedCerts.end(); ++i)
|
|
1216
|
+
{
|
|
1217
|
+
// Retrieve the certificate CERT_KEY_PROV_INFO_PROP_ID property, we use the CRYPT_KEY_PROV_INFO data to remove
|
|
1218
|
+
// the key set associated with the certificate.
|
|
1219
|
+
DWORD length = 0;
|
|
1220
|
+
if (!CertGetCertificateContextProperty(*i, CERT_KEY_PROV_INFO_PROP_ID, 0, &length))
|
|
1221
|
+
{
|
|
1222
|
+
continue;
|
|
1223
|
+
}
|
|
1224
|
+
vector<char> buf(length);
|
|
1225
|
+
if (!CertGetCertificateContextProperty(*i, CERT_KEY_PROV_INFO_PROP_ID, &buf[0], &length))
|
|
1226
|
+
{
|
|
1227
|
+
continue;
|
|
1228
|
+
}
|
|
1229
|
+
CRYPT_KEY_PROV_INFO* key = reinterpret_cast<CRYPT_KEY_PROV_INFO*>(&buf[0]);
|
|
1230
|
+
HCRYPTPROV prov = 0;
|
|
1231
|
+
CryptAcquireContextW(&prov, key->pwszContainerName, key->pwszProvName, key->dwProvType, CRYPT_DELETEKEYSET);
|
|
1232
|
+
}
|
|
1233
|
+
|
|
1234
|
+
for (vector<PCCERT_CONTEXT>::const_iterator i = _allCerts.begin(); i != _allCerts.end(); ++i)
|
|
1235
|
+
{
|
|
1236
|
+
CertFreeCertificateContext(*i);
|
|
1237
|
+
}
|
|
1238
|
+
|
|
1239
|
+
for (vector<HCERTSTORE>::const_iterator i = _stores.begin(); i != _stores.end(); ++i)
|
|
1240
|
+
{
|
|
1241
|
+
CertCloseStore(*i, 0);
|
|
1242
|
+
}
|
|
1243
|
+
}
|
|
1244
|
+
|
|
1245
|
+
Ice::SSL::ClientAuthenticationOptions
|
|
1246
|
+
Schannel::SSLEngine::createClientAuthenticationOptions(const string& host) const
|
|
1247
|
+
{
|
|
1248
|
+
return Ice::SSL::ClientAuthenticationOptions{
|
|
1249
|
+
.clientCredentialsSelectionCallback =
|
|
1250
|
+
[this](const string&)
|
|
1251
|
+
{
|
|
1252
|
+
for (const auto& cert : _allCerts)
|
|
1253
|
+
{
|
|
1254
|
+
CertDuplicateCertificateContext(cert);
|
|
1255
|
+
}
|
|
1256
|
+
|
|
1257
|
+
return SCH_CREDENTIALS{
|
|
1258
|
+
.dwVersion = SCH_CREDENTIALS_VERSION,
|
|
1259
|
+
.cCreds = static_cast<DWORD>(_allCerts.size()),
|
|
1260
|
+
.paCred = const_cast<PCCERT_CONTEXT*>(_allCerts.size() > 0 ? &_allCerts[0] : nullptr),
|
|
1261
|
+
.dwFlags = SCH_CRED_NO_DEFAULT_CREDS | SCH_CRED_NO_SERVERNAME_CHECK | SCH_USE_STRONG_CRYPTO};
|
|
1262
|
+
},
|
|
1263
|
+
.trustedRootCertificates = _rootStore,
|
|
1264
|
+
.serverCertificateValidationCallback = [self = shared_from_this(),
|
|
1265
|
+
host](CtxtHandle ssl, const ConnectionInfoPtr& info) -> bool
|
|
1266
|
+
{
|
|
1267
|
+
bool ok = Schannel::SSLEngine::validationCallback(
|
|
1268
|
+
self->_chainEngine, // The chain engine configured to trust the provided trusted root certificates.
|
|
1269
|
+
ssl, // The SSL context handle.
|
|
1270
|
+
false, // This is an outgoing connection.
|
|
1271
|
+
host, // The target host.
|
|
1272
|
+
true, // Whether or not the peer must provide a certificate.
|
|
1273
|
+
self->getRevocationCheck(),
|
|
1274
|
+
self->getRevocationCheckCacheOnly());
|
|
1275
|
+
if (self->getCheckCertName() && info->peerCertificate && !host.empty())
|
|
1276
|
+
{
|
|
1277
|
+
verifyPeerCertName(
|
|
1278
|
+
info->peerCertificate,
|
|
1279
|
+
host,
|
|
1280
|
+
self->getLogger(),
|
|
1281
|
+
self->securityTraceLevel(),
|
|
1282
|
+
self->securityTraceCategory());
|
|
1283
|
+
}
|
|
1284
|
+
self->verifyPeer(info);
|
|
1285
|
+
return ok;
|
|
1286
|
+
}};
|
|
1287
|
+
}
|
|
1288
|
+
|
|
1289
|
+
Ice::SSL::ServerAuthenticationOptions
|
|
1290
|
+
Schannel::SSLEngine::createServerAuthenticationOptions() const
|
|
1291
|
+
{
|
|
1292
|
+
return Ice::SSL::ServerAuthenticationOptions{
|
|
1293
|
+
.serverCredentialsSelectionCallback =
|
|
1294
|
+
[this](const string&)
|
|
1295
|
+
{
|
|
1296
|
+
{
|
|
1297
|
+
for (const auto& cert : _allCerts)
|
|
1298
|
+
{
|
|
1299
|
+
CertDuplicateCertificateContext(cert);
|
|
1300
|
+
}
|
|
1301
|
+
|
|
1302
|
+
return SCH_CREDENTIALS{
|
|
1303
|
+
.dwVersion = SCH_CREDENTIALS_VERSION,
|
|
1304
|
+
.cCreds = static_cast<DWORD>(_allCerts.size()),
|
|
1305
|
+
.paCred = const_cast<PCCERT_CONTEXT*>(_allCerts.size() > 0 ? &_allCerts[0] : nullptr),
|
|
1306
|
+
// Don't set SCH_SEND_ROOT_CERT as it seems to cause problems with Java certificate validation and
|
|
1307
|
+
// Schannel doesn't seems to send the root certificate either way.
|
|
1308
|
+
.dwFlags = SCH_CRED_NO_SYSTEM_MAPPER | SCH_USE_STRONG_CRYPTO};
|
|
1309
|
+
}
|
|
1310
|
+
},
|
|
1311
|
+
.clientCertificateRequired = getVerifyPeer() > 0,
|
|
1312
|
+
.trustedRootCertificates = _rootStore,
|
|
1313
|
+
.clientCertificateValidationCallback =
|
|
1314
|
+
[self = shared_from_this()](CtxtHandle ssl, const ConnectionInfoPtr& info) -> bool
|
|
1315
|
+
{
|
|
1316
|
+
bool ok = Schannel::SSLEngine::validationCallback(
|
|
1317
|
+
self->_chainEngine, // The chain engine configured to trust the provided trusted root certificates.
|
|
1318
|
+
ssl, // The SSL context handle.
|
|
1319
|
+
true, // This is an incoming connection.
|
|
1320
|
+
"", // The target host, empty for incoming connections.
|
|
1321
|
+
self->getVerifyPeer() > 1, // Whether or not the peer must provide a certificate.
|
|
1322
|
+
self->getRevocationCheck(),
|
|
1323
|
+
self->getRevocationCheckCacheOnly());
|
|
1324
|
+
self->verifyPeer(info);
|
|
1325
|
+
return ok;
|
|
1326
|
+
}};
|
|
1327
|
+
}
|
|
1328
|
+
|
|
1329
|
+
namespace
|
|
1330
|
+
{
|
|
1331
|
+
struct ScopedCertChainContext
|
|
1332
|
+
{
|
|
1333
|
+
ScopedCertChainContext(PCCERT_CHAIN_CONTEXT chain) : _chain(chain) {}
|
|
1334
|
+
~ScopedCertChainContext() { CertFreeCertificateChain(_chain); }
|
|
1335
|
+
PCCERT_CHAIN_CONTEXT _chain;
|
|
1336
|
+
};
|
|
1337
|
+
}
|
|
1338
|
+
|
|
1339
|
+
bool
|
|
1340
|
+
Schannel::SSLEngine::validationCallback(
|
|
1341
|
+
HCERTCHAINENGINE chainEngine,
|
|
1342
|
+
CtxtHandle ssl,
|
|
1343
|
+
bool incoming,
|
|
1344
|
+
const string& host,
|
|
1345
|
+
bool certificateRequired,
|
|
1346
|
+
int revocationCheck,
|
|
1347
|
+
bool revocationCheckCacheOnly)
|
|
1348
|
+
{
|
|
1349
|
+
// Build the peer certificate chain and verify it.
|
|
1350
|
+
PCCERT_CONTEXT cert = nullptr;
|
|
1351
|
+
SECURITY_STATUS err = QueryContextAttributes(&ssl, SECPKG_ATTR_REMOTE_CERT_CONTEXT, &cert);
|
|
1352
|
+
|
|
1353
|
+
if (err && (err != SEC_E_NO_CREDENTIALS || certificateRequired))
|
|
1354
|
+
{
|
|
1355
|
+
ostringstream os;
|
|
1356
|
+
os << "SSL transport: certificate verification failure:\n" << IceInternal::errorToString(err);
|
|
1357
|
+
throw SecurityException(__FILE__, __LINE__, os.str());
|
|
1358
|
+
}
|
|
1359
|
+
|
|
1360
|
+
if (cert) // Verify the remote certificate
|
|
1361
|
+
{
|
|
1362
|
+
ScopedCertificate scopedCertificate(cert);
|
|
1363
|
+
CERT_CHAIN_PARA chainP;
|
|
1364
|
+
memset(&chainP, 0, sizeof(chainP));
|
|
1365
|
+
chainP.cbSize = sizeof(chainP);
|
|
1366
|
+
|
|
1367
|
+
string trustError;
|
|
1368
|
+
PCCERT_CHAIN_CONTEXT certChain;
|
|
1369
|
+
DWORD dwFlags = 0;
|
|
1370
|
+
if (revocationCheck > 0)
|
|
1371
|
+
{
|
|
1372
|
+
if (revocationCheckCacheOnly)
|
|
1373
|
+
{
|
|
1374
|
+
// Disable network I/O for revocation checks.
|
|
1375
|
+
dwFlags = CERT_CHAIN_REVOCATION_CHECK_CACHE_ONLY | CERT_CHAIN_DISABLE_AIA;
|
|
1376
|
+
}
|
|
1377
|
+
|
|
1378
|
+
dwFlags |=
|
|
1379
|
+
(revocationCheck == 1 ? CERT_CHAIN_REVOCATION_CHECK_END_CERT
|
|
1380
|
+
: CERT_CHAIN_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT);
|
|
1381
|
+
}
|
|
1382
|
+
|
|
1383
|
+
if (!CertGetCertificateChain(
|
|
1384
|
+
chainEngine,
|
|
1385
|
+
cert,
|
|
1386
|
+
nullptr,
|
|
1387
|
+
cert->hCertStore,
|
|
1388
|
+
&chainP,
|
|
1389
|
+
dwFlags,
|
|
1390
|
+
nullptr,
|
|
1391
|
+
&certChain))
|
|
1392
|
+
{
|
|
1393
|
+
ostringstream os;
|
|
1394
|
+
os << "SSL transport: certificate verification failure:\n" << lastErrorToString();
|
|
1395
|
+
throw SecurityException(__FILE__, __LINE__, os.str());
|
|
1396
|
+
}
|
|
1397
|
+
ScopedCertChainContext scopedChainContext(certChain);
|
|
1398
|
+
|
|
1399
|
+
DWORD errorStatus = certChain->TrustStatus.dwErrorStatus;
|
|
1400
|
+
if (errorStatus != CERT_TRUST_NO_ERROR)
|
|
1401
|
+
{
|
|
1402
|
+
throw SecurityException(__FILE__, __LINE__, errorStatusToString(errorStatus));
|
|
1403
|
+
}
|
|
1404
|
+
|
|
1405
|
+
SSL_EXTRA_CERT_CHAIN_POLICY_PARA extraPolicyPara;
|
|
1406
|
+
memset(&extraPolicyPara, 0, sizeof(extraPolicyPara));
|
|
1407
|
+
extraPolicyPara.cbSize = sizeof(extraPolicyPara);
|
|
1408
|
+
extraPolicyPara.dwAuthType = incoming ? AUTHTYPE_CLIENT : AUTHTYPE_SERVER;
|
|
1409
|
+
// Disable because the policy only matches the CN of the certificate, not the SAN.
|
|
1410
|
+
extraPolicyPara.fdwChecks = SECURITY_FLAG_IGNORE_CERT_CN_INVALID;
|
|
1411
|
+
extraPolicyPara.pwszServerName = const_cast<wchar_t*>(Ice::stringToWstring(host).c_str());
|
|
1412
|
+
|
|
1413
|
+
CERT_CHAIN_POLICY_PARA policyPara;
|
|
1414
|
+
memset(&policyPara, 0, sizeof(policyPara));
|
|
1415
|
+
policyPara.cbSize = sizeof(policyPara);
|
|
1416
|
+
policyPara.pvExtraPolicyPara = &extraPolicyPara;
|
|
1417
|
+
|
|
1418
|
+
CERT_CHAIN_POLICY_STATUS policyStatus;
|
|
1419
|
+
memset(&policyStatus, 0, sizeof(policyStatus));
|
|
1420
|
+
policyStatus.cbSize = sizeof(policyStatus);
|
|
1421
|
+
|
|
1422
|
+
if (!CertVerifyCertificateChainPolicy(CERT_CHAIN_POLICY_SSL, certChain, &policyPara, &policyStatus))
|
|
1423
|
+
{
|
|
1424
|
+
ostringstream os;
|
|
1425
|
+
os << "SSL transport: certificate verification failure:\n" << lastErrorToString();
|
|
1426
|
+
throw SecurityException(__FILE__, __LINE__, os.str());
|
|
1427
|
+
}
|
|
1428
|
+
|
|
1429
|
+
if (policyStatus.dwError)
|
|
1430
|
+
{
|
|
1431
|
+
ostringstream os;
|
|
1432
|
+
os << "SSL transport: certificate verification failure:\n" << policyStatusToString(policyStatus.dwError);
|
|
1433
|
+
throw SecurityException(__FILE__, __LINE__, os.str());
|
|
1434
|
+
}
|
|
1435
|
+
}
|
|
1436
|
+
return true;
|
|
1437
|
+
}
|