zeroc-ice 3.7.2 → 3.7.3
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 +5 -5
- data/ext/Config.h +4 -0
- data/ext/Operation.cpp +5 -5
- data/ext/Properties.cpp +1 -1
- data/ext/Proxy.cpp +16 -2
- data/ext/Types.cpp +45 -40
- data/ext/Util.cpp +1 -1
- data/ext/Util.h +10 -8
- data/ext/ice/cpp/include/Ice/Config.h +4 -0
- data/ext/ice/cpp/include/Ice/FactoryTableInit.h +1 -1
- data/ext/ice/cpp/include/Ice/IconvStringConverter.h +4 -3
- data/ext/ice/cpp/include/Ice/InputStream.h +4 -4
- data/ext/ice/cpp/include/Ice/Optional.h +11 -0
- data/ext/ice/cpp/include/Ice/OutgoingAsync.h +1 -1
- data/ext/ice/cpp/include/Ice/OutputStream.h +5 -5
- data/ext/ice/cpp/include/Ice/Proxy.h +17 -5
- data/ext/ice/cpp/include/Ice/StreamHelpers.h +1 -1
- data/ext/ice/cpp/include/Ice/Value.h +1 -1
- data/ext/ice/cpp/include/IceUtil/Atomic.h +1 -1
- data/ext/ice/cpp/include/IceUtil/Config.h +16 -6
- data/ext/ice/cpp/include/IceUtil/ConsoleUtil.h +4 -4
- data/ext/ice/cpp/include/IceUtil/Optional.h +8 -0
- data/ext/ice/cpp/include/IceUtil/OutputUtil.h +17 -14
- data/ext/ice/cpp/include/IceUtil/Random.h +1 -1
- data/ext/ice/cpp/include/IceUtil/ResourceConfig.h +2 -2
- data/ext/ice/cpp/include/IceUtil/ScannerConfig.h +6 -0
- data/ext/ice/cpp/include/IceUtil/StringConverter.h +1 -1
- data/ext/ice/cpp/include/generated/Ice/BuiltinSequences.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/Communicator.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/CommunicatorF.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/Connection.h +33 -36
- data/ext/ice/cpp/include/generated/Ice/ConnectionF.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/Current.h +20 -21
- data/ext/ice/cpp/include/generated/Ice/Endpoint.h +24 -24
- data/ext/ice/cpp/include/generated/Ice/EndpointF.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/EndpointTypes.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/FacetMap.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/Identity.h +4 -5
- data/ext/ice/cpp/include/generated/Ice/ImplicitContext.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/ImplicitContextF.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/Instrumentation.h +15 -15
- data/ext/ice/cpp/include/generated/Ice/InstrumentationF.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/LocalException.h +27 -93
- data/ext/ice/cpp/include/generated/Ice/Locator.h +27 -32
- data/ext/ice/cpp/include/generated/Ice/LocatorF.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/Logger.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/LoggerF.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/Metrics.h +75 -79
- data/ext/ice/cpp/include/generated/Ice/ObjectAdapter.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/ObjectAdapterF.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/ObjectFactory.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/Plugin.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/PluginF.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/Process.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/ProcessF.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/Properties.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/PropertiesAdmin.h +9 -9
- data/ext/ice/cpp/include/generated/Ice/PropertiesF.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/RemoteLogger.h +9 -11
- data/ext/ice/cpp/include/generated/Ice/Router.h +22 -22
- data/ext/ice/cpp/include/generated/Ice/RouterF.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/ServantLocator.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/ServantLocatorF.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/SliceChecksumDict.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/ValueFactory.h +3 -3
- data/ext/ice/cpp/include/generated/Ice/Version.h +15 -17
- data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +3 -3
- data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +3 -3
- data/ext/ice/cpp/include/generated/IceSSL/EndpointInfo.h +3 -3
- data/ext/ice/cpp/src/Ice/ArgVector.cpp +3 -3
- data/ext/ice/cpp/src/Ice/Base64.cpp +11 -12
- data/ext/ice/cpp/src/Ice/BatchRequestQueue.cpp +1 -1
- data/ext/ice/cpp/src/Ice/Buffer.cpp +2 -2
- data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +3 -3
- data/ext/ice/cpp/src/Ice/Communicator.cpp +3 -3
- data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +3 -3
- data/ext/ice/cpp/src/Ice/CommunicatorI.cpp +19 -0
- data/ext/ice/cpp/src/Ice/CommunicatorI.h +5 -0
- data/ext/ice/cpp/src/Ice/Connection.cpp +3 -3
- data/ext/ice/cpp/src/Ice/ConnectionF.cpp +3 -3
- data/ext/ice/cpp/src/Ice/ConnectionI.cpp +31 -16
- data/ext/ice/cpp/src/Ice/Current.cpp +3 -3
- data/ext/ice/cpp/src/Ice/DispatchInterceptor.cpp +13 -0
- data/ext/ice/cpp/src/Ice/DynamicLibrary.cpp +6 -5
- data/ext/ice/cpp/src/Ice/Endpoint.cpp +3 -3
- data/ext/ice/cpp/src/Ice/EndpointF.cpp +3 -3
- data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +3 -3
- data/ext/ice/cpp/src/Ice/Exception.cpp +5 -5
- data/ext/ice/cpp/src/Ice/FacetMap.cpp +3 -3
- data/ext/ice/cpp/src/Ice/HashUtil.h +1 -1
- data/ext/ice/cpp/src/Ice/IPEndpointI.cpp +12 -1
- data/ext/ice/cpp/src/Ice/Identity.cpp +3 -3
- data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +3 -3
- data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +3 -3
- data/ext/ice/cpp/src/Ice/Incoming.cpp +2 -0
- data/ext/ice/cpp/src/Ice/Initialize.cpp +4 -3
- data/ext/ice/cpp/src/Ice/InputStream.cpp +19 -19
- data/ext/ice/cpp/src/Ice/Instance.cpp +28 -8
- data/ext/ice/cpp/src/Ice/Instrumentation.cpp +3 -3
- data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +3 -3
- data/ext/ice/cpp/src/Ice/LocalException.cpp +3 -3
- data/ext/ice/cpp/src/Ice/Locator.cpp +7 -7
- data/ext/ice/cpp/src/Ice/LocatorF.cpp +3 -3
- data/ext/ice/cpp/src/Ice/Logger.cpp +3 -3
- data/ext/ice/cpp/src/Ice/LoggerAdminI.cpp +1 -7
- data/ext/ice/cpp/src/Ice/LoggerF.cpp +3 -3
- data/ext/ice/cpp/src/Ice/LoggerI.cpp +6 -0
- data/ext/ice/cpp/src/Ice/Metrics.cpp +5 -5
- data/ext/ice/cpp/src/Ice/Network.cpp +23 -22
- data/ext/ice/cpp/src/Ice/Network.h +1 -1
- data/ext/ice/cpp/src/Ice/OSLogLoggerI.cpp +57 -0
- data/ext/ice/cpp/src/Ice/OSLogLoggerI.h +40 -0
- data/ext/ice/cpp/src/Ice/Object.cpp +9 -7
- data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +3 -3
- data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +3 -3
- data/ext/ice/cpp/src/Ice/ObjectAdapterI.cpp +13 -1
- data/ext/ice/cpp/src/Ice/ObjectAdapterI.h +4 -0
- data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +3 -3
- data/ext/ice/cpp/src/Ice/OutgoingAsync.cpp +1 -1
- data/ext/ice/cpp/src/Ice/OutputStream.cpp +24 -24
- data/ext/ice/cpp/src/Ice/Plugin.cpp +3 -3
- data/ext/ice/cpp/src/Ice/PluginF.cpp +3 -3
- data/ext/ice/cpp/src/Ice/Process.cpp +3 -3
- data/ext/ice/cpp/src/Ice/ProcessF.cpp +3 -3
- data/ext/ice/cpp/src/Ice/Properties.cpp +3 -3
- data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +4 -4
- data/ext/ice/cpp/src/Ice/PropertiesF.cpp +3 -3
- data/ext/ice/cpp/src/Ice/PropertyNames.cpp +2 -1
- data/ext/ice/cpp/src/Ice/PropertyNames.h +1 -1
- data/ext/ice/cpp/src/Ice/Proxy.cpp +6 -0
- data/ext/ice/cpp/src/Ice/ProxyFactory.cpp +1 -1
- data/ext/ice/cpp/src/Ice/ReferenceFactory.cpp +1 -1
- data/ext/ice/cpp/src/Ice/RegisterPluginsInit.cpp +3 -2
- data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +3 -3
- data/ext/ice/cpp/src/Ice/Router.cpp +6 -6
- data/ext/ice/cpp/src/Ice/RouterF.cpp +3 -3
- data/ext/ice/cpp/src/Ice/SHA1.cpp +2 -2
- data/ext/ice/cpp/src/Ice/Selector.cpp +18 -13
- data/ext/ice/cpp/src/Ice/ServantLocator.cpp +3 -3
- data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +3 -3
- data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +3 -3
- data/ext/ice/cpp/src/Ice/StreamSocket.cpp +6 -6
- data/ext/ice/cpp/src/Ice/TcpAcceptor.cpp +6 -0
- data/ext/ice/cpp/src/Ice/TcpConnector.cpp +5 -0
- data/ext/ice/cpp/src/Ice/TcpEndpointI.cpp +5 -0
- data/ext/ice/cpp/src/Ice/TcpTransceiver.cpp +5 -0
- data/ext/ice/cpp/src/Ice/ThreadPool.cpp +63 -0
- data/ext/ice/cpp/src/Ice/ThreadPool.h +10 -2
- data/ext/ice/cpp/src/Ice/Timer.cpp +10 -0
- data/ext/ice/cpp/src/Ice/UdpEndpointI.cpp +11 -1
- data/ext/ice/cpp/src/Ice/UdpTransceiver.cpp +10 -2
- data/ext/ice/cpp/src/Ice/ValueFactory.cpp +3 -3
- data/ext/ice/cpp/src/Ice/Version.cpp +3 -3
- data/ext/ice/cpp/src/Ice/WSTransceiver.cpp +16 -15
- data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +3 -3
- data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +3 -3
- data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.cpp +3 -3
- data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.h +3 -3
- data/ext/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +37 -8
- data/ext/ice/cpp/src/IceSSL/CertificateI.cpp +3 -3
- data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +3 -3
- data/ext/ice/cpp/src/IceSSL/ConnectionInfoF.cpp +3 -3
- data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +3 -3
- data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +4 -16
- data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.h +0 -1
- data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +40 -3
- data/ext/ice/cpp/src/IceSSL/SChannelEngine.cpp +0 -7
- data/ext/ice/cpp/src/IceSSL/SChannelEngine.h +0 -2
- data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +18 -6
- data/ext/ice/cpp/src/IceSSL/SSLEngine.cpp +19 -7
- data/ext/ice/cpp/src/IceSSL/SSLEngine.h +2 -0
- data/ext/ice/cpp/src/IceSSL/SecureTransportCertificateI.cpp +32 -21
- data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +21 -6
- data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +19 -16
- data/ext/ice/cpp/src/IceSSL/Util.cpp +11 -5
- data/ext/ice/cpp/src/IceUtil/FileUtil.cpp +1 -1
- data/ext/ice/cpp/src/IceUtil/Options.cpp +3 -3
- data/ext/ice/cpp/src/IceUtil/OutputUtil.cpp +40 -10
- data/ext/ice/cpp/src/IceUtil/Random.cpp +2 -2
- data/ext/ice/cpp/src/IceUtil/StringConverter.cpp +5 -5
- data/ext/ice/cpp/src/IceUtil/StringUtil.cpp +3 -3
- data/ext/ice/cpp/src/IceUtil/Time.cpp +3 -3
- data/ext/ice/cpp/src/IceUtil/UUID.cpp +5 -5
- data/ext/ice/cpp/src/IceUtil/UtilException.cpp +4 -4
- data/ext/ice/cpp/src/Slice/CPlusPlusUtil.cpp +13 -9
- data/ext/ice/cpp/src/Slice/CPlusPlusUtil.h +1 -1
- data/ext/ice/cpp/src/Slice/Grammar.cpp +8 -0
- data/ext/ice/cpp/src/Slice/JavaUtil.cpp +1 -2
- data/ext/ice/cpp/src/Slice/MD5I.cpp +8 -0
- data/ext/ice/cpp/src/Slice/Parser.cpp +60 -112
- data/ext/ice/cpp/src/Slice/Parser.h +27 -1
- data/ext/ice/cpp/src/Slice/Preprocessor.cpp +2 -1
- data/ext/ice/cpp/src/Slice/PythonUtil.cpp +10 -10
- data/ext/ice/cpp/src/Slice/RubyUtil.cpp +1 -1
- data/ext/ice/cpp/src/Slice/Scanner.cpp +8 -0
- data/ext/ice/cpp/src/Slice/StringLiteralUtil.cpp +11 -6
- data/ext/ice/mcpp/Makefile +2 -5
- data/ice.gemspec +1 -1
- data/lib/Glacier2/Metrics.rb +1 -1
- data/lib/Glacier2/PermissionsVerifier.rb +1 -1
- data/lib/Glacier2/PermissionsVerifierF.rb +1 -1
- data/lib/Glacier2/Router.rb +1 -1
- data/lib/Glacier2/RouterF.rb +1 -1
- data/lib/Glacier2/SSLInfo.rb +1 -1
- data/lib/Glacier2/Session.rb +1 -1
- data/lib/Ice/BuiltinSequences.rb +1 -1
- data/lib/Ice/Communicator.rb +1 -1
- data/lib/Ice/CommunicatorF.rb +1 -1
- data/lib/Ice/Connection.rb +1 -1
- data/lib/Ice/ConnectionF.rb +1 -1
- data/lib/Ice/Current.rb +1 -1
- data/lib/Ice/Endpoint.rb +1 -1
- data/lib/Ice/EndpointF.rb +1 -1
- data/lib/Ice/EndpointTypes.rb +1 -1
- data/lib/Ice/FacetMap.rb +1 -1
- data/lib/Ice/Identity.rb +1 -1
- data/lib/Ice/ImplicitContext.rb +1 -1
- data/lib/Ice/ImplicitContextF.rb +1 -1
- data/lib/Ice/Instrumentation.rb +1 -1
- data/lib/Ice/InstrumentationF.rb +1 -1
- data/lib/Ice/LocalException.rb +1 -1
- data/lib/Ice/Locator.rb +1 -1
- data/lib/Ice/LocatorF.rb +1 -1
- data/lib/Ice/Logger.rb +1 -1
- data/lib/Ice/LoggerF.rb +1 -1
- data/lib/Ice/Metrics.rb +1 -1
- data/lib/Ice/ObjectAdapter.rb +1 -1
- data/lib/Ice/ObjectAdapterF.rb +1 -1
- data/lib/Ice/ObjectFactory.rb +1 -1
- data/lib/Ice/Plugin.rb +1 -1
- data/lib/Ice/PluginF.rb +1 -1
- data/lib/Ice/Process.rb +1 -1
- data/lib/Ice/ProcessF.rb +1 -1
- data/lib/Ice/Properties.rb +1 -1
- data/lib/Ice/PropertiesAdmin.rb +1 -1
- data/lib/Ice/PropertiesF.rb +1 -1
- data/lib/Ice/RemoteLogger.rb +1 -1
- data/lib/Ice/Router.rb +1 -1
- data/lib/Ice/RouterF.rb +1 -1
- data/lib/Ice/ServantLocator.rb +1 -1
- data/lib/Ice/ServantLocatorF.rb +1 -1
- data/lib/Ice/SliceChecksumDict.rb +1 -1
- data/lib/Ice/ValueFactory.rb +1 -1
- data/lib/Ice/Version.rb +1 -1
- data/lib/IceBox/IceBox.rb +1 -1
- data/lib/IceGrid/Admin.rb +1 -1
- data/lib/IceGrid/Descriptor.rb +1 -1
- data/lib/IceGrid/Exception.rb +1 -1
- data/lib/IceGrid/FileParser.rb +1 -1
- data/lib/IceGrid/PluginFacade.rb +1 -1
- data/lib/IceGrid/Registry.rb +1 -1
- data/lib/IceGrid/Session.rb +1 -1
- data/lib/IceGrid/UserAccountMapper.rb +1 -1
- data/lib/IcePatch2/FileInfo.rb +1 -1
- data/lib/IcePatch2/FileServer.rb +1 -1
- data/lib/IceStorm/IceStorm.rb +1 -1
- data/lib/IceStorm/Metrics.rb +1 -1
- data/slice/Glacier2/Metrics.ice +1 -1
- data/slice/Ice/Communicator.ice +57 -25
- data/slice/Ice/Connection.ice +14 -14
- data/slice/Ice/Current.ice +1 -1
- data/slice/Ice/Endpoint.ice +6 -6
- data/slice/Ice/EndpointF.ice +1 -1
- data/slice/Ice/FacetMap.ice +1 -1
- data/slice/Ice/ImplicitContext.ice +6 -6
- data/slice/Ice/Instrumentation.ice +6 -6
- data/slice/Ice/Logger.ice +6 -6
- data/slice/Ice/Metrics.ice +12 -9
- data/slice/Ice/ObjectAdapter.ice +43 -31
- data/slice/Ice/ObjectFactory.ice +1 -1
- data/slice/Ice/Plugin.ice +2 -2
- data/slice/Ice/Properties.ice +10 -10
- data/slice/Ice/ServantLocator.ice +4 -2
- data/slice/Ice/ValueFactory.ice +3 -3
- data/slice/IceBT/EndpointInfo.ice +1 -1
- data/slice/IceGrid/PluginFacade.ice +4 -4
- data/slice/IceIAP/ConnectionInfo.ice +1 -1
- data/slice/IceIAP/EndpointInfo.ice +1 -1
- data/slice/IceSSL/ConnectionInfo.ice +3 -2
- data/slice/IceSSL/ConnectionInfoF.ice +1 -1
- data/slice/IceSSL/EndpointInfo.ice +1 -1
- data/slice/IceStorm/Metrics.ice +1 -1
- metadata +5 -3
|
@@ -46,7 +46,7 @@ const CertificateOID IceSSL::certificateOIDS[] =
|
|
|
46
46
|
const int IceSSL::certificateOIDSSize = sizeof(IceSSL::certificateOIDS) / sizeof(CertificateOID);
|
|
47
47
|
|
|
48
48
|
CertificateReadException::CertificateReadException(const char* file, int line, const string& r) :
|
|
49
|
-
ExceptionHelper<CertificateReadException>(file, line),
|
|
49
|
+
IceUtil::ExceptionHelper<CertificateReadException>(file, line),
|
|
50
50
|
reason(r)
|
|
51
51
|
{
|
|
52
52
|
}
|
|
@@ -72,7 +72,7 @@ CertificateReadException::ice_clone() const
|
|
|
72
72
|
#endif
|
|
73
73
|
|
|
74
74
|
CertificateEncodingException::CertificateEncodingException(const char* file, int line, const string& r) :
|
|
75
|
-
ExceptionHelper<CertificateEncodingException>(file, line),
|
|
75
|
+
IceUtil::ExceptionHelper<CertificateEncodingException>(file, line),
|
|
76
76
|
reason(r)
|
|
77
77
|
{
|
|
78
78
|
}
|
|
@@ -98,7 +98,7 @@ CertificateEncodingException::ice_clone() const
|
|
|
98
98
|
#endif
|
|
99
99
|
|
|
100
100
|
ParseException::ParseException(const char* file, int line, const string& r) :
|
|
101
|
-
ExceptionHelper<ParseException>(file, line),
|
|
101
|
+
IceUtil::ExceptionHelper<ParseException>(file, line),
|
|
102
102
|
reason(r)
|
|
103
103
|
{
|
|
104
104
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright (c) ZeroC, Inc. All rights reserved.
|
|
3
3
|
//
|
|
4
4
|
//
|
|
5
|
-
// Ice version 3.7.
|
|
5
|
+
// Ice version 3.7.3
|
|
6
6
|
//
|
|
7
7
|
// <auto-generated>
|
|
8
8
|
//
|
|
@@ -34,10 +34,10 @@
|
|
|
34
34
|
# if ICE_INT_VERSION / 100 != 307
|
|
35
35
|
# error Ice version mismatch!
|
|
36
36
|
# endif
|
|
37
|
-
# if ICE_INT_VERSION % 100
|
|
37
|
+
# if ICE_INT_VERSION % 100 >= 50
|
|
38
38
|
# error Beta header file detected
|
|
39
39
|
# endif
|
|
40
|
-
# if ICE_INT_VERSION % 100 <
|
|
40
|
+
# if ICE_INT_VERSION % 100 < 3
|
|
41
41
|
# error Ice patch level mismatch!
|
|
42
42
|
# endif
|
|
43
43
|
#endif
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright (c) ZeroC, Inc. All rights reserved.
|
|
3
3
|
//
|
|
4
4
|
//
|
|
5
|
-
// Ice version 3.7.
|
|
5
|
+
// Ice version 3.7.3
|
|
6
6
|
//
|
|
7
7
|
// <auto-generated>
|
|
8
8
|
//
|
|
@@ -32,10 +32,10 @@
|
|
|
32
32
|
# if ICE_INT_VERSION / 100 != 307
|
|
33
33
|
# error Ice version mismatch!
|
|
34
34
|
# endif
|
|
35
|
-
# if ICE_INT_VERSION % 100
|
|
35
|
+
# if ICE_INT_VERSION % 100 >= 50
|
|
36
36
|
# error Beta header file detected
|
|
37
37
|
# endif
|
|
38
|
-
# if ICE_INT_VERSION % 100 <
|
|
38
|
+
# if ICE_INT_VERSION % 100 < 3
|
|
39
39
|
# error Ice patch level mismatch!
|
|
40
40
|
# endif
|
|
41
41
|
#endif
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright (c) ZeroC, Inc. All rights reserved.
|
|
3
3
|
//
|
|
4
4
|
//
|
|
5
|
-
// Ice version 3.7.
|
|
5
|
+
// Ice version 3.7.3
|
|
6
6
|
//
|
|
7
7
|
// <auto-generated>
|
|
8
8
|
//
|
|
@@ -34,10 +34,10 @@
|
|
|
34
34
|
# if ICE_INT_VERSION / 100 != 307
|
|
35
35
|
# error Ice version mismatch!
|
|
36
36
|
# endif
|
|
37
|
-
# if ICE_INT_VERSION % 100
|
|
37
|
+
# if ICE_INT_VERSION % 100 >= 50
|
|
38
38
|
# error Beta header file detected
|
|
39
39
|
# endif
|
|
40
|
-
# if ICE_INT_VERSION % 100 <
|
|
40
|
+
# if ICE_INT_VERSION % 100 < 3
|
|
41
41
|
# error Ice patch level mismatch!
|
|
42
42
|
# endif
|
|
43
43
|
#endif
|
|
@@ -84,7 +84,7 @@ IceSSL_opensslThreadIdCallback()
|
|
|
84
84
|
// On some platforms, pthread_t is a pointer to a per-thread structure.
|
|
85
85
|
//
|
|
86
86
|
return reinterpret_cast<unsigned long>(pthread_self());
|
|
87
|
-
# elif defined(
|
|
87
|
+
# elif defined(__linux__) || defined(__sun) || defined(__hpux) || defined(_AIX) || defined(__GLIBC__)
|
|
88
88
|
//
|
|
89
89
|
// On Linux, Solaris, HP-UX and AIX, pthread_t is an integer.
|
|
90
90
|
//
|
|
@@ -609,14 +609,14 @@ OpenSSL::SSLEngine::initialize()
|
|
|
609
609
|
if(!cert || !SSL_CTX_use_certificate(_ctx, cert))
|
|
610
610
|
{
|
|
611
611
|
throw PluginInitializationException(__FILE__, __LINE__,
|
|
612
|
-
"IceSSL: unable to
|
|
612
|
+
"IceSSL: unable to load SSL certificate:\n" +
|
|
613
613
|
(cert ? sslErrors() : "certificate not found"));
|
|
614
614
|
}
|
|
615
615
|
|
|
616
616
|
if(!key || !SSL_CTX_use_PrivateKey(_ctx, key))
|
|
617
617
|
{
|
|
618
618
|
throw PluginInitializationException(__FILE__, __LINE__,
|
|
619
|
-
"IceSSL: unable to
|
|
619
|
+
"IceSSL: unable to load SSL private key:\n" +
|
|
620
620
|
(key ? sslErrors() : "key not found"));
|
|
621
621
|
}
|
|
622
622
|
keyLoaded = true;
|
|
@@ -931,22 +931,10 @@ OpenSSL::SSLEngine::destroy()
|
|
|
931
931
|
if(_ctx)
|
|
932
932
|
{
|
|
933
933
|
SSL_CTX_free(_ctx);
|
|
934
|
+
_ctx = 0;
|
|
934
935
|
}
|
|
935
936
|
}
|
|
936
937
|
|
|
937
|
-
void
|
|
938
|
-
OpenSSL::SSLEngine::verifyPeer(const string& address, const IceSSL::ConnectionInfoPtr& info, const string& desc)
|
|
939
|
-
{
|
|
940
|
-
#if defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER < 0x10002000L
|
|
941
|
-
//
|
|
942
|
-
// Peer hostname verification is new in OpenSSL 1.0.2 for older versions
|
|
943
|
-
// we use IceSSL build in hostname verification.
|
|
944
|
-
//
|
|
945
|
-
verifyPeerCertName(address, info);
|
|
946
|
-
#endif
|
|
947
|
-
IceSSL::SSLEngine::verifyPeer(address, info, desc);
|
|
948
|
-
}
|
|
949
|
-
|
|
950
938
|
IceInternal::TransceiverPtr
|
|
951
939
|
OpenSSL::SSLEngine::createTransceiver(const InstancePtr& instance,
|
|
952
940
|
const IceInternal::TransceiverPtr& delegate,
|
|
@@ -26,7 +26,6 @@ public:
|
|
|
26
26
|
|
|
27
27
|
virtual void initialize();
|
|
28
28
|
virtual void destroy();
|
|
29
|
-
virtual void verifyPeer(const std::string&, const IceSSL::ConnectionInfoPtr&, const std::string&);
|
|
30
29
|
virtual IceInternal::TransceiverPtr
|
|
31
30
|
createTransceiver(const IceSSL::InstancePtr&, const IceInternal::TransceiverPtr&, const std::string&, bool);
|
|
32
31
|
|
|
@@ -171,22 +171,41 @@ OpenSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::
|
|
|
171
171
|
// Hostname verification was included in OpenSSL 1.0.2
|
|
172
172
|
//
|
|
173
173
|
#if defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x10002000L
|
|
174
|
-
if(_engine->getCheckCertName() && !_host.empty()
|
|
174
|
+
if(_engine->getCheckCertName() && !_host.empty())
|
|
175
175
|
{
|
|
176
176
|
X509_VERIFY_PARAM* param = SSL_get0_param(_ssl);
|
|
177
177
|
if(IceInternal::isIpAddress(_host))
|
|
178
178
|
{
|
|
179
|
-
X509_VERIFY_PARAM_set1_ip_asc(param, _host.c_str())
|
|
179
|
+
if(!X509_VERIFY_PARAM_set1_ip_asc(param, _host.c_str()))
|
|
180
|
+
{
|
|
181
|
+
throw SecurityException(__FILE__, __LINE__, "IceSSL: error setting the expected IP address `"
|
|
182
|
+
+ _host + "'");
|
|
183
|
+
}
|
|
180
184
|
}
|
|
181
185
|
else
|
|
182
186
|
{
|
|
183
|
-
X509_VERIFY_PARAM_set1_host(param, _host.c_str(), 0)
|
|
187
|
+
if(!X509_VERIFY_PARAM_set1_host(param, _host.c_str(), 0))
|
|
188
|
+
{
|
|
189
|
+
throw SecurityException(__FILE__, __LINE__, "IceSSL: error setting the expected host name `"
|
|
190
|
+
+ _host + "'");
|
|
191
|
+
}
|
|
184
192
|
}
|
|
185
193
|
}
|
|
186
194
|
#endif
|
|
187
195
|
|
|
188
196
|
SSL_set_verify(_ssl, sslVerifyMode, IceSSL_opensslVerifyCallback);
|
|
189
197
|
}
|
|
198
|
+
|
|
199
|
+
//
|
|
200
|
+
// Enable SNI
|
|
201
|
+
//
|
|
202
|
+
if(!_incoming && _engine->getServerNameIndication() && !_host.empty() && !IceInternal::isIpAddress(_host))
|
|
203
|
+
{
|
|
204
|
+
if(!SSL_set_tlsext_host_name(_ssl, _host.c_str()))
|
|
205
|
+
{
|
|
206
|
+
throw SecurityException(__FILE__, __LINE__, "IceSSL: setting SNI host failed `" + _host + "'");
|
|
207
|
+
}
|
|
208
|
+
}
|
|
190
209
|
}
|
|
191
210
|
|
|
192
211
|
while(!SSL_is_init_finished(_ssl))
|
|
@@ -320,6 +339,24 @@ OpenSSL::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal::
|
|
|
320
339
|
}
|
|
321
340
|
|
|
322
341
|
_cipher = SSL_get_cipher_name(_ssl); // Nothing needs to be free'd.
|
|
342
|
+
#if defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER < 0x10002000L
|
|
343
|
+
try
|
|
344
|
+
{
|
|
345
|
+
//
|
|
346
|
+
// Peer hostname verification is new in OpenSSL 1.0.2 for older versions
|
|
347
|
+
// We use IceSSL built-in hostname verification.
|
|
348
|
+
//
|
|
349
|
+
_engine->verifyPeerCertName(address, info);
|
|
350
|
+
}
|
|
351
|
+
catch(const SecurityException&)
|
|
352
|
+
{
|
|
353
|
+
_verified = false;
|
|
354
|
+
if(_engine->getVerifyPeer() > 0)
|
|
355
|
+
{
|
|
356
|
+
throw;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
#endif
|
|
323
360
|
_engine->verifyPeer(_host, ICE_DYNAMIC_CAST(ConnectionInfo, getInfo()), toString());
|
|
324
361
|
|
|
325
362
|
if(_engine->securityTraceLevel() >= 1)
|
|
@@ -1273,13 +1273,6 @@ SChannel::SSLEngine::destroy()
|
|
|
1273
1273
|
}
|
|
1274
1274
|
}
|
|
1275
1275
|
|
|
1276
|
-
void
|
|
1277
|
-
SChannel::SSLEngine::verifyPeer(const string& address, const IceSSL::ConnectionInfoPtr& info, const string& desc)
|
|
1278
|
-
{
|
|
1279
|
-
verifyPeerCertName(address, info);
|
|
1280
|
-
IceSSL::SSLEngine::verifyPeer(address, info, desc);
|
|
1281
|
-
}
|
|
1282
|
-
|
|
1283
1276
|
IceInternal::TransceiverPtr
|
|
1284
1277
|
SChannel::SSLEngine::createTransceiver(const InstancePtr& instance,
|
|
1285
1278
|
const IceInternal::TransceiverPtr& delegate,
|
|
@@ -746,7 +746,20 @@ SChannel::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal:
|
|
|
746
746
|
throw SecurityException(__FILE__, __LINE__, "IceSSL: error reading cipher info:\n" + secStatusToString(err));
|
|
747
747
|
}
|
|
748
748
|
|
|
749
|
-
|
|
749
|
+
ConnectionInfoPtr info = ICE_DYNAMIC_CAST(ConnectionInfo, getInfo());
|
|
750
|
+
try
|
|
751
|
+
{
|
|
752
|
+
_engine->verifyPeerCertName(_host, info);
|
|
753
|
+
}
|
|
754
|
+
catch(const Ice::SecurityException&)
|
|
755
|
+
{
|
|
756
|
+
_verified = false;
|
|
757
|
+
if(_engine->getVerifyPeer() > 0)
|
|
758
|
+
{
|
|
759
|
+
throw;
|
|
760
|
+
}
|
|
761
|
+
}
|
|
762
|
+
_engine->verifyPeer(_host, info, toString());
|
|
750
763
|
_state = StateHandshakeComplete;
|
|
751
764
|
|
|
752
765
|
if(_instance->engine()->securityTraceLevel() >= 1)
|
|
@@ -754,12 +767,11 @@ SChannel::TransceiverI::initialize(IceInternal::Buffer& readBuffer, IceInternal:
|
|
|
754
767
|
string sslCipherName;
|
|
755
768
|
string sslKeyExchangeAlgorithm;
|
|
756
769
|
string sslProtocolName;
|
|
757
|
-
|
|
758
|
-
if(QueryContextAttributes(&_ssl, SECPKG_ATTR_CONNECTION_INFO, &info) == SEC_E_OK)
|
|
770
|
+
if(QueryContextAttributes(&_ssl, SECPKG_ATTR_CONNECTION_INFO, &connInfo) == SEC_E_OK)
|
|
759
771
|
{
|
|
760
|
-
sslCipherName = _engine->getCipherName(
|
|
761
|
-
sslKeyExchangeAlgorithm = _engine->getCipherName(
|
|
762
|
-
sslProtocolName = protocolName(
|
|
772
|
+
sslCipherName = _engine->getCipherName(connInfo.aiCipher);
|
|
773
|
+
sslKeyExchangeAlgorithm = _engine->getCipherName(connInfo.aiExch);
|
|
774
|
+
sslProtocolName = protocolName(connInfo.dwProtocol);
|
|
763
775
|
}
|
|
764
776
|
|
|
765
777
|
Trace out(_instance->logger(), _instance->traceCategory());
|
|
@@ -109,6 +109,12 @@ IceSSL::SSLEngine::initialize()
|
|
|
109
109
|
//
|
|
110
110
|
_checkCertName = properties->getPropertyAsIntWithDefault(propPrefix + "CheckCertName", 0) > 0;
|
|
111
111
|
|
|
112
|
+
//
|
|
113
|
+
// CheckCertName > 1 enables SNI, the SNI extension applies to client connections,
|
|
114
|
+
// indicating the hostname to the server (must be DNS hostname, not an IP address).
|
|
115
|
+
//
|
|
116
|
+
_serverNameIndication = properties->getPropertyAsIntWithDefault(propPrefix + "CheckCertName", 0) > 1;
|
|
117
|
+
|
|
112
118
|
//
|
|
113
119
|
// VerifyDepthMax establishes the maximum length of a peer's certificate
|
|
114
120
|
// chain, including the peer's certificate. A value of 0 means there is
|
|
@@ -201,19 +207,19 @@ IceSSL::SSLEngine::verifyPeerCertName(const string& address, const ConnectionInf
|
|
|
201
207
|
if(!certNameOK)
|
|
202
208
|
{
|
|
203
209
|
ostringstream ostr;
|
|
204
|
-
ostr << "IceSSL:
|
|
205
|
-
|
|
210
|
+
ostr << "IceSSL: ";
|
|
211
|
+
if(_verifyPeer > 0)
|
|
212
|
+
{
|
|
213
|
+
ostr << "ignoring ";
|
|
214
|
+
}
|
|
215
|
+
ostr << "certificate verification failure " << (isIpAddress ? "IP address mismatch" : "Hostname mismatch");
|
|
206
216
|
string msg = ostr.str();
|
|
207
217
|
if(_securityTraceLevel >= 1)
|
|
208
218
|
{
|
|
209
219
|
Trace out(_logger, _securityTraceCategory);
|
|
210
220
|
out << msg;
|
|
211
221
|
}
|
|
212
|
-
|
|
213
|
-
if(_verifyPeer > 0)
|
|
214
|
-
{
|
|
215
|
-
throw SecurityException(__FILE__, __LINE__, msg);
|
|
216
|
-
}
|
|
222
|
+
throw SecurityException(__FILE__, __LINE__, msg);
|
|
217
223
|
}
|
|
218
224
|
}
|
|
219
225
|
}
|
|
@@ -263,6 +269,12 @@ IceSSL::SSLEngine::getCheckCertName() const
|
|
|
263
269
|
return _checkCertName;
|
|
264
270
|
}
|
|
265
271
|
|
|
272
|
+
bool
|
|
273
|
+
IceSSL::SSLEngine::getServerNameIndication() const
|
|
274
|
+
{
|
|
275
|
+
return _serverNameIndication;
|
|
276
|
+
}
|
|
277
|
+
|
|
266
278
|
int
|
|
267
279
|
IceSSL::SSLEngine::getVerifyPeer() const
|
|
268
280
|
{
|
|
@@ -63,6 +63,7 @@ public:
|
|
|
63
63
|
void setPassword(const std::string& password);
|
|
64
64
|
|
|
65
65
|
bool getCheckCertName() const;
|
|
66
|
+
bool getServerNameIndication() const;
|
|
66
67
|
int getVerifyPeer() const;
|
|
67
68
|
int securityTraceLevel() const;
|
|
68
69
|
std::string securityTraceCategory() const;
|
|
@@ -83,6 +84,7 @@ private:
|
|
|
83
84
|
PasswordPromptPtr _prompt;
|
|
84
85
|
|
|
85
86
|
bool _checkCertName;
|
|
87
|
+
bool _serverNameIndication;
|
|
86
88
|
int _verifyDepthMax;
|
|
87
89
|
int _verifyPeer;
|
|
88
90
|
int _securityTraceLevel;
|
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
// Copyright (c) ZeroC, Inc. All rights reserved.
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
//
|
|
6
|
+
// Disable deprecation warnings for SecCertificateCopyNormalizedIssuerContent and
|
|
7
|
+
// SecCertificateCopyNormalizedSubjectContent
|
|
8
|
+
//
|
|
9
|
+
#include <IceUtil/DisableWarnings.h>
|
|
10
|
+
|
|
5
11
|
#include <IceSSL/Plugin.h>
|
|
6
12
|
#include <IceSSL/SecureTransport.h>
|
|
7
13
|
#include <IceSSL/CertificateI.h>
|
|
@@ -77,7 +83,11 @@ class ASN1Parser
|
|
|
77
83
|
{
|
|
78
84
|
public:
|
|
79
85
|
|
|
80
|
-
ASN1Parser(CFDataRef data) :
|
|
86
|
+
ASN1Parser(CFDataRef data) :
|
|
87
|
+
_data(CFDataGetBytePtr(data)),
|
|
88
|
+
_length(static_cast<size_t>(CFDataGetLength(data))),
|
|
89
|
+
_p(_data),
|
|
90
|
+
_next(0)
|
|
81
91
|
{
|
|
82
92
|
}
|
|
83
93
|
|
|
@@ -164,7 +174,7 @@ public:
|
|
|
164
174
|
parseUTF8String()
|
|
165
175
|
{
|
|
166
176
|
int length = parseLength(0);
|
|
167
|
-
string v(reinterpret_cast<const char*>(_p), length);
|
|
177
|
+
string v(reinterpret_cast<const char*>(_p), static_cast<size_t>(length));
|
|
168
178
|
_p += length;
|
|
169
179
|
return v;
|
|
170
180
|
}
|
|
@@ -293,8 +303,8 @@ getX509Name(SecCertificateRef cert, CFTypeRef key)
|
|
|
293
303
|
if(property)
|
|
294
304
|
{
|
|
295
305
|
CFArrayRef dn = static_cast<CFArrayRef>(CFDictionaryGetValue(property.get(), kSecPropertyKeyValue));
|
|
296
|
-
|
|
297
|
-
for(
|
|
306
|
+
CFIndex size = CFArrayGetCount(dn);
|
|
307
|
+
for(CFIndex i = 0; i < size; ++i)
|
|
298
308
|
{
|
|
299
309
|
CFDictionaryRef dict = static_cast<CFDictionaryRef>(CFArrayGetValueAtIndex(dn, i));
|
|
300
310
|
rdnPairs.push_front(make_pair(
|
|
@@ -317,9 +327,9 @@ getX509AltName(SecCertificateRef cert, CFTypeRef key)
|
|
|
317
327
|
if(property)
|
|
318
328
|
{
|
|
319
329
|
CFArrayRef names = static_cast<CFArrayRef>(CFDictionaryGetValue(property.get(), kSecPropertyKeyValue));
|
|
320
|
-
|
|
330
|
+
CFIndex size = CFArrayGetCount(names);
|
|
321
331
|
|
|
322
|
-
for(
|
|
332
|
+
for(CFIndex i = 0; i < size; ++i)
|
|
323
333
|
{
|
|
324
334
|
CFDictionaryRef dict = static_cast<CFDictionaryRef>(CFArrayGetValueAtIndex(names, i));
|
|
325
335
|
|
|
@@ -341,7 +351,7 @@ getX509AltName(SecCertificateRef cert, CFTypeRef key)
|
|
|
341
351
|
{
|
|
342
352
|
CFArrayRef section = (CFArrayRef)v;
|
|
343
353
|
ostringstream os;
|
|
344
|
-
for(
|
|
354
|
+
for(CFIndex j = 0, count = CFArrayGetCount(section); j < count;)
|
|
345
355
|
{
|
|
346
356
|
CFDictionaryRef d = (CFDictionaryRef)CFArrayGetValueAtIndex(section, j);
|
|
347
357
|
|
|
@@ -434,7 +444,7 @@ SecureTransportCertificateI::getAuthorityKeyIdentifier() const
|
|
|
434
444
|
if(property)
|
|
435
445
|
{
|
|
436
446
|
CFTypeRef type = 0;
|
|
437
|
-
CFTypeRef value;
|
|
447
|
+
CFTypeRef value = 0;
|
|
438
448
|
if(CFDictionaryGetValueIfPresent(property.get(), kSecPropertyKeyType, &type))
|
|
439
449
|
{
|
|
440
450
|
if(CFEqual(type, kSecPropertyTypeSection))
|
|
@@ -453,8 +463,8 @@ SecureTransportCertificateI::getAuthorityKeyIdentifier() const
|
|
|
453
463
|
{
|
|
454
464
|
CFDataRef data = static_cast<CFDataRef>(
|
|
455
465
|
CFDictionaryGetValue(static_cast<CFDictionaryRef>(value), kSecPropertyKeyValue));
|
|
456
|
-
keyid.resize(CFDataGetLength(data));
|
|
457
|
-
memcpy(&keyid[0], CFDataGetBytePtr(data), CFDataGetLength(data));
|
|
466
|
+
keyid.resize(static_cast<size_t>(CFDataGetLength(data)));
|
|
467
|
+
memcpy(&keyid[0], CFDataGetBytePtr(data), static_cast<size_t>(CFDataGetLength(data)));
|
|
458
468
|
}
|
|
459
469
|
}
|
|
460
470
|
}
|
|
@@ -473,7 +483,7 @@ SecureTransportCertificateI::getSubjectKeyIdentifier() const
|
|
|
473
483
|
if(property)
|
|
474
484
|
{
|
|
475
485
|
CFTypeRef type = 0;
|
|
476
|
-
CFTypeRef value;
|
|
486
|
+
CFTypeRef value = 0;
|
|
477
487
|
if(CFDictionaryGetValueIfPresent(property.get(), kSecPropertyKeyType, &type))
|
|
478
488
|
{
|
|
479
489
|
if(CFEqual(type, kSecPropertyTypeSection))
|
|
@@ -492,8 +502,8 @@ SecureTransportCertificateI::getSubjectKeyIdentifier() const
|
|
|
492
502
|
{
|
|
493
503
|
CFDataRef data = static_cast<CFDataRef>(
|
|
494
504
|
CFDictionaryGetValue(static_cast<CFDictionaryRef>(value), kSecPropertyKeyValue));
|
|
495
|
-
keyid.resize(CFDataGetLength(data));
|
|
496
|
-
memcpy(&keyid[0], CFDataGetBytePtr(data), CFDataGetLength(data));
|
|
505
|
+
keyid.resize(static_cast<size_t>(CFDataGetLength(data)));
|
|
506
|
+
memcpy(&keyid[0], CFDataGetBytePtr(data), static_cast<size_t>(CFDataGetLength(data)));
|
|
497
507
|
}
|
|
498
508
|
}
|
|
499
509
|
}
|
|
@@ -574,7 +584,7 @@ SecureTransportCertificateI::encode() const
|
|
|
574
584
|
ostringstream os;
|
|
575
585
|
os << "-----BEGIN CERTIFICATE-----\n";
|
|
576
586
|
os << IceInternal::Base64::encode(data);
|
|
577
|
-
os << "-----END CERTIFICATE-----\n";
|
|
587
|
+
os << "\n-----END CERTIFICATE-----\n";
|
|
578
588
|
return os.str();
|
|
579
589
|
#else // macOS
|
|
580
590
|
UniqueRef<CFDataRef> exported;
|
|
@@ -583,7 +593,8 @@ SecureTransportCertificateI::encode() const
|
|
|
583
593
|
{
|
|
584
594
|
throw CertificateEncodingException(__FILE__, __LINE__, sslErrorToString(err));
|
|
585
595
|
}
|
|
586
|
-
return string(reinterpret_cast<const char*>(CFDataGetBytePtr(exported.get())),
|
|
596
|
+
return string(reinterpret_cast<const char*>(CFDataGetBytePtr(exported.get())),
|
|
597
|
+
static_cast<size_t>(CFDataGetLength(exported.get())));
|
|
587
598
|
#endif
|
|
588
599
|
}
|
|
589
600
|
|
|
@@ -805,23 +816,23 @@ IceSSL::SecureTransport::CertificatePtr
|
|
|
805
816
|
IceSSL::SecureTransport::Certificate::decode(const std::string& encoding)
|
|
806
817
|
{
|
|
807
818
|
#ifdef ICE_USE_SECURE_TRANSPORT_IOS
|
|
808
|
-
string::size_type size
|
|
809
|
-
startpos =
|
|
819
|
+
string::size_type size = 0;
|
|
820
|
+
string::size_type startpos = 0;
|
|
821
|
+
startpos = encoding.find("-----BEGIN CERTIFICATE-----", 0);
|
|
810
822
|
if(startpos != string::npos)
|
|
811
823
|
{
|
|
812
824
|
startpos += sizeof("-----BEGIN CERTIFICATE-----");
|
|
813
|
-
endpos = encoding.find("-----END CERTIFICATE-----", startpos);
|
|
825
|
+
string::size_type endpos = encoding.find("-----END CERTIFICATE-----", startpos);
|
|
814
826
|
size = endpos - startpos;
|
|
815
827
|
}
|
|
816
828
|
else
|
|
817
829
|
{
|
|
818
830
|
startpos = 0;
|
|
819
|
-
endpos = string::npos;
|
|
820
831
|
size = encoding.size();
|
|
821
832
|
}
|
|
822
833
|
|
|
823
834
|
vector<unsigned char> data(IceInternal::Base64::decode(string(&encoding[startpos], size)));
|
|
824
|
-
UniqueRef<CFDataRef> certdata(CFDataCreate(kCFAllocatorDefault, &data[0], data.size()));
|
|
835
|
+
UniqueRef<CFDataRef> certdata(CFDataCreate(kCFAllocatorDefault, &data[0], static_cast<CFIndex>(data.size())));
|
|
825
836
|
SecCertificateRef cert = SecCertificateCreateWithData(0, certdata.get());
|
|
826
837
|
if(!cert)
|
|
827
838
|
{
|
|
@@ -833,7 +844,7 @@ IceSSL::SecureTransport::Certificate::decode(const std::string& encoding)
|
|
|
833
844
|
UniqueRef<CFDataRef> data(
|
|
834
845
|
CFDataCreateWithBytesNoCopy(kCFAllocatorDefault,
|
|
835
846
|
reinterpret_cast<const UInt8*>(encoding.c_str()),
|
|
836
|
-
encoding.size(), kCFAllocatorNull));
|
|
847
|
+
static_cast<CFIndex>(encoding.size()), kCFAllocatorNull));
|
|
837
848
|
|
|
838
849
|
SecExternalFormat format = kSecFormatUnknown;
|
|
839
850
|
SecExternalItemType type = kSecItemTypeCertificate;
|