zeroc-ice 3.7.2 → 3.7.3
Sign up to get free protection for your applications and to get access to all the features.
- 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;
|